Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:16:34

0001 C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
0002 C++ This version of PYTHIA 6.4.25 was modified to run with the      ++
0003 C++ jet quenching Monte Carlo JEWEL. It is not an official release  ++
0004 C++ of PYTHIA and may not be used for anything else.                ++
0005 C++                                                                 ++
0006 C++ Modifications with respect to the official PYTHIA version:      ++
0007 C++ * The event record was enlarged to 23000 lines.                 ++
0008 C++ * The LHAPDF interface was activated and modified such that     ++
0009 C++   nuclear PDF's can be used.                                    ++
0010 C++ * A customised version of PYEVWT was introduced to allow for    ++
0011 C++   the generation of weighted events.                            ++
0012 C++                                                                 ++
0013 C++                                                    Korinna Zapp ++
0014 C++                                                     (Oct. 2013) ++
0015 C+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
0016 C
0017 C*********************************************************************
0018 C*********************************************************************
0019 C*                                                                  **
0020 C*                                                       Mar 2011   **
0021 C*                                                                  **
0022 C*                       The Lund Monte Carlo                       **
0023 C*                                                                  **
0024 C*                        PYTHIA version 6.4                        **
0025 C*                                                                  **
0026 C*                        Torbjorn Sjostrand                        **
0027 C*                 Department of Theoretical Physics                **
0028 C*                         Lund University                          **
0029 C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
0030 C*                    E-mail torbjorn@thep.lu.se                    **
0031 C*                                                                  **
0032 C*                  SUSY and Technicolor parts by                   **
0033 C*                         Stephen Mrenna                           **
0034 C*                       Computing Division                         ** 
0035 C*            Generators and Detector Simulation Group              **
0036 C*              Fermi National Accelerator Laboratory               **
0037 C*                 MS 234, Batavia, IL  60510, USA                  **
0038 C*                   phone + 1 - 630 - 840 - 2556                   **
0039 C*                      E-mail mrenna@fnal.gov                      **
0040 C*                                                                  **
0041 C*         New multiple interactions and more SUSY parts by         **
0042 C*                          Peter Skands                            **
0043 C*               CERN/PH, CH-1211 Geneva, Switzerland               **
0044 C*                    phone +41 - 22 - 767 2447                     **
0045 C*                   E-mail peter.skands@cern.ch                    **
0046 C*                                                                  **
0047 C*         Several parts are written by Hans-Uno Bengtsson          **
0048 C*          PYSHOW is written together with Mats Bengtsson          **
0049 C*               PYMAEL is written by Emanuel Norrbin               **
0050 C*     advanced popcorn baryon production written by Patrik Eden    **
0051 C*    code for virtual photons mainly written by Christer Friberg   **
0052 C*    code for low-mass strings mainly written by Emanuel Norrbin   **
0053 C*        Bose-Einstein code mainly written by Leif Lonnblad        **
0054 C*      CTEQ  parton distributions are by the CTEQ collaboration    **
0055 C*      GRV 94 parton distributions are by Glueck, Reya and Vogt    **
0056 C*   SaS photon parton distributions together with Gerhard Schuler  **
0057 C*     g + g and q + qbar -> t + tbar + H code by Zoltan Kunszt     **
0058 C*         MSSM Higgs mass calculation code by M. Carena,           **
0059 C*           J.R. Espinosa, M. Quiros and C.E.M. Wagner             **
0060 C*  UED implementation by M. Elkacimi, D. Goujdami, H. Przysiezniak **
0061 C*         PYGAUS adapted from CERN library (K.S. Kolbig)           **
0062 C*        NRQCD/colour octet production of onium by S. Wolf         **
0063 C*                                                                  **
0064 C*   The latest program version and documentation is found on WWW   **
0065 C*            http://www.thep.lu.se/~torbjorn/Pythia.html           **
0066 C*                                                                  **
0067 C*              Copyright Torbjorn Sjostrand, Lund 2010             **
0068 C*                                                                  **
0069 C*********************************************************************
0070 C*********************************************************************
0071 C                                                                    *
0072 C  List of subprograms in order of appearance, with main purpose     *
0073 C  (S = subroutine, F = function, B = block data)                    *
0074 C                                                                    *
0075 C  B   PYDATA   to contain all default values                        *
0076 C  S   PYCKBD   to check that BLOCK DATA has been correctly loaded   *
0077 C  S   PYTEST   to test the proper functioning of the package        *
0078 C  S   PYHEPC   to convert between /PYJETS/ and /HEPEVT/ records     *
0079 C                                                                    *
0080 C  S   PYINIT   to administer the initialization procedure           *
0081 C  S   PYEVNT   to administer the generation of an event             *
0082 C  S   PYEVNW   ditto, for new multiple interactions scenario        *
0083 C  S   PYSTAT   to print cross-section and other information         *
0084 C  S   PYUPEV   to administer the generation of an LHA hard process  *
0085 C  S   PYUPIN   to provide initialization needed for LHA input       *
0086 C  S   PYLHEF   to produce a Les Houches Event File from run         *
0087 C  S   PYINRE   to initialize treatment of resonances                *
0088 C  S   PYINBM   to read in beam, target and frame choices            *
0089 C  S   PYINKI   to initialize kinematics of incoming particles       *
0090 C  S   PYINPR   to set up the selection of included processes        *
0091 C  S   PYXTOT   to give total, elastic and diffractive cross-sect.   *
0092 C  S   PYMAXI   to find differential cross-section maxima            *
0093 C  S   PYPILE   to select multiplicity of pileup events              *
0094 C  S   PYSAVE   to save alternatives for gamma-p and gamma-gamma     *
0095 C  S   PYGAGA   to handle lepton -> lepton + gamma branchings        *
0096 C  S   PYRAND   to select subprocess and kinematics for event        *
0097 C  S   PYSCAT   to set up kinematics and colour flow of event        *
0098 C  S   PYEVOL   handler for pT-ordered ISR and multiple interactions *
0099 C  S   PYSSPA   to simulate initial state spacelike showers          *
0100 C  S   PYPTIS   to do pT-ordered initial state spacelike showers     *
0101 C  S   PYMEMX   auxiliary to PYSSPA/PYPTIS for ME correction maximum *
0102 C  S   PYMEWT   auxiliary to PYSSPA/.. for matrix element correction *
0103 C  S   PYPTMI   to do pT-ordered multiple interactions               *
0104 C  F   PYFCMP   to give companion quark x*f distribution             *
0105 C  F   PYPCMP   to calculate momentum integral for companion quarks  *
0106 C  S   PYUPRE   to rearranges contents of the HEPEUP commonblock     *
0107 C  S   PYADSH   to administrate sequential final-state showers       *
0108 C  S   PYVETO   to allow the generation of an event to be aborted    *
0109 C  S   PYRESD   to perform resonance decays                          *
0110 C  S   PYMULT   to generate multiple interactions - old scheme       *
0111 C  S   PYREMN   to add on target remnants - old scheme               *
0112 C  S   PYMIGN   to generate multiple interactions - new scheme       *
0113 C  S   PYMIHK   to connect colours in mult. int. - new scheme        *
0114 C  S   PYCTTR   to translate PYTHIA colour information to LHA1 tags  *
0115 C  S   PYMIHG   to collapse two pairs of LHA1 colour tags.           *
0116 C  S   PYMIRM   to add on target remnants in mult. int.- new scheme  *
0117 C  S   PYFSCR   to perform final state colour reconnections - -"-    *
0118 C  S   PYDIFF   to set up kinematics for diffractive events          *
0119 C  S   PYDISG   to set up kinematics, remnant and showers for DIS    *
0120 C  S   PYDOCU   to compute cross-sections and handle documentation   *
0121 C  S   PYFRAM   to perform boosts between different frames           *
0122 C  S   PYWIDT   to calculate full and partial widths of resonances   *
0123 C  S   PYOFSH   to calculate partial width into off-shell channels   *
0124 C  S   PYRECO   to handle colour reconnection in W+W- events         *
0125 C  S   PYKLIM   to calculate borders of allowed kinematical region   *
0126 C  S   PYKMAP   to construct value of kinematical variable           *
0127 C  S   PYSIGH   to calculate differential cross-sections             *
0128 C  S   PYSGQC   auxiliary to PYSIGH for QCD processes                *
0129 C  S   PYSGHF   auxiliary to PYSIGH for heavy flavour processes      *
0130 C  S   PYSGWZ   auxiliary to PYSIGH for W and Z processes            *
0131 C  S   PYSGHG   auxiliary to PYSIGH for Higgs processes              *
0132 C  S   PYSGSU   auxiliary to PYSIGH for supersymmetry processes      *
0133 C  S   PYSGTC   auxiliary to PYSIGH for technicolor processes        *
0134 C  S   PYSGEX   auxiliary to PYSIGH for various exotic processes     *
0135 C  S   PYPDFU   to evaluate parton distributions                     *
0136 C  S   PYPDFL   to evaluate parton distributions at low x and Q^2    *
0137 C  S   PYPDEL   to evaluate electron parton distributions            *
0138 C  S   PYPDGA   to evaluate photon parton distributions (generic)    *
0139 C  S   PYGGAM   to evaluate photon parton distributions (SaS sets)   *
0140 C  S   PYGVMD   to evaluate VMD part of photon parton distributions  *
0141 C  S   PYGANO   to evaluate anomalous part of photon PDFs            *
0142 C  S   PYGBEH   to evaluate Bethe-Heitler part of photon PDFs        *
0143 C  S   PYGDIR   to evaluate direct contribution to photon PDFs       *
0144 C  S   PYPDPI   to evaluate pion parton distributions                *
0145 C  S   PYPDPR   to evaluate proton parton distributions              *
0146 C  F   PYCTEQ   to evaluate the CTEQ 3 proton parton distributions   *
0147 C  S   PYGRVL   to evaluate the GRV 94L proton parton distributions  *
0148 C  S   PYGRVM   to evaluate the GRV 94M proton parton distributions  *
0149 C  S   PYGRVD   to evaluate the GRV 94D proton parton distributions  *
0150 C  F   PYGRVV   auxiliary to the PYGRV* routines                     *
0151 C  F   PYGRVW   auxiliary to the PYGRV* routines                     *
0152 C  F   PYGRVS   auxiliary to the PYGRV* routines                     *
0153 C  F   PYCT5L   to evaluate the CTEQ 5L proton parton distributions  *
0154 C  F   PYCT5M   to evaluate the CTEQ 5M1 proton parton distributions *
0155 C  S   PYPDPO   to evaluate old proton parton distributions          *
0156 C  F   PYHFTH   to evaluate threshold factor for heavy flavour       *
0157 C  S   PYSPLI   to find flavours left in hadron when one removed     *
0158 C  F   PYGAMM   to evaluate ordinary Gamma function Gamma(x)         *
0159 C  S   PYWAUX   to evaluate auxiliary functions W1(s) and W2(s)      *
0160 C  S   PYI3AU   to evaluate auxiliary function I3(s,t,u,v)           *
0161 C  F   PYSPEN   to evaluate Spence (dilogarithm) function Sp(x)      *
0162 C  S   PYQQBH   to evaluate matrix element for g + g -> Q + Qbar + H *
0163 C  S   PYSTBH   to evaluate matrix element for t + b + H processes   *
0164 C  S   PYTBHB   auxiliary to PYSTBH                                  *
0165 C  S   PYTBHG   auxiliary to PYSTBH                                  *
0166 C  S   PYTBHQ   auxiliary to PYSTBH                                  *
0167 C  F   PYTBHS   auxiliary to PYSTBH                                  *
0168 C                                                                    *
0169 C  S   PYMSIN   to initialize the supersymmetry simulation           *
0170 C  S   PYSLHA   to interface to SUSY spectrum and decay calculators  *
0171 C  S   PYAPPS   to determine MSSM parameters from SUGRA input        *
0172 C  S   PYSUGI   to determine MSSM parameters using ISASUSY           *
0173 C  S   PYFEYN   to determine MSSM Higgs parameters using FEYNHIGGS   *
0174 C  F   PYRNMQ   to determine running squark masses                   *
0175 C  S   PYTHRG   to calculate sfermion third-gen. mass eigenstates    *
0176 C  S   PYINOM   to calculate neutralino/chargino mass eigenstates    *
0177 C  F   PYRNM3   to determine running M3, gluino mass                 *
0178 C  S   PYEIG4   to calculate eigenvalues and -vectors in 4*4 matrix  *
0179 C  S   PYHGGM   to determine Higgs mass spectrum                     *
0180 C  S   PYSUBH   to determine Higgs masses in the MSSM                *
0181 C  S   PYPOLE   to determine Higgs masses in the MSSM                *
0182 C  S   PYRGHM   auxiliary to PYPOLE                                  *
0183 C  S   PYGFXX   auxiliary to PYRGHM                                  *
0184 C  F   PYFINT   auxiliary to PYPOLE                                  *
0185 C  F   PYFISB   auxiliary to PYFINT                                  *
0186 C  S   PYSFDC   to calculate sfermion decay partial widths           *
0187 C  S   PYGLUI   to calculate gluino decay partial widths             *
0188 C  S   PYTBBN   to calculate 3-body decay of gluino to neutralino    *
0189 C  S   PYTBBC   to calculate 3-body decay of gluino to chargino      *
0190 C  S   PYNJDC   to calculate neutralino decay partial widths         *
0191 C  S   PYCJDC   to calculate chargino decay partial widths           *
0192 C  F   PYXXZ6   auxiliary for ino 3-body decays                      *
0193 C  F   PYXXGA   auxiliary for ino -> ino + gamma decay               *
0194 C  F   PYX2XG   auxiliary for ino -> ino + gauge boson decay         *
0195 C  F   PYX2XH   auxiliary for ino -> ino + Higgs decay               *
0196 C  S   PYHEXT   to calculate non-SM Higgs decay partial widths       *
0197 C  F   PYH2XX   auxiliary for H -> ino + ino decay                   *
0198 C  F   PYGAUS   to perform Gaussian integration                      *
0199 C  F   PYGAU2   copy of PYGAUS to allow two-dimensional integration  *
0200 C  F   PYSIMP   to perform Simpson integration                       *
0201 C  F   PYLAMF   to evaluate the lambda kinematics function           *
0202 C  S   PYTBDY   to perform 3-body decay of gauginos                  *
0203 C  S   PYTECM   to calculate techni_rho/omega masses                 *
0204 C  S   PYXDIN   to initialize Universal Extra Dimensions             *
0205 C  S   PYUEDC   to compute UED mass radiative corrections            *
0206 C  S   PYXUED   to compute UED cross sections                        *
0207 C  S   PYGRAM   to generate UED G* (excited graviton) mass spectrum  *
0208 C  F   PYGRAW   to compute UED partial widths to G*                  *
0209 C  F   PYWDKK   to compute UED differential partial widths to G*     *
0210 C  S   PYEICG   to calculate eigenvalues of a 4*4 complex matrix     *
0211 C  S   PYCMQR   auxiliary to PYEICG                                  *
0212 C  S   PYCMQ2   auxiliary to PYEICG                                  *
0213 C  S   PYCDIV   auxiliary to PYCMQR                                  *
0214 C  S   PYCSRT   auxiliary to PYCMQR                                  *
0215 C  S   PYTHAG   auxiliary to PYCMQR                                  *
0216 C  S   PYCBAL   auxiliary to PYEICG                                  *
0217 C  S   PYCBA2   auxiliary to PYEICG                                  *
0218 C  S   PYCRTH   auxiliary to PYEICG                                  *
0219 C  S   PYLDCM   auxiliary to PYSIGH, for technicolor in QCD 2 -> 2   *
0220 C  S   PYBKSB   auxiliary to PYSIGH, for technicolor in QCD 2 -> 2   *
0221 C  S   PYWIDX   to calculate decay widths from within PYWIDT         *
0222 C  S   PYRVSF   to calculate R-violating sfermion decay widths       *
0223 C  S   PYRVNE   to calculate R-violating neutralino decay widths     *
0224 C  S   PYRVCH   to calculate R-violating chargino decay widths       *
0225 C  S   PYRVGL   to calculate R-violating gluino decay widths         *
0226 C  F   PYRVSB   auxiliary to PYRVSF                                  *
0227 C  S   PYRVGW   to calculate R-Violating 3-body widths               *
0228 C  F   PYRVI1   auxiliary to PYRVGW, to do PS integration for res.   *
0229 C  F   PYRVI2   auxiliary to PYRVGW, to do PS integration for LR-int.*
0230 C  F   PYRVI3   auxiliary to PYRVGW, to do PS X integral for int.    *
0231 C  F   PYRVG1   auxiliary to PYRVI1, general matrix element, res.    *
0232 C  F   PYRVG2   auxiliary to PYRVI2, general matrix element, LR-int. *
0233 C  F   PYRVG3   auxiliary to PYRVI3, to do PS Y integral for int.    *
0234 C  F   PYRVG4   auxiliary to PYRVG3, general matrix element, int.    *
0235 C  F   PYRVR    auxiliary to PYRVG1, Breit-Wigner                    *
0236 C  F   PYRVS    auxiliary to PYRVG2 & PYRVG4                         *
0237 C                                                                    *
0238 C  S   PY1ENT   to fill one entry (= parton or particle)             *
0239 C  S   PY2ENT   to fill two entries                                  *
0240 C  S   PY3ENT   to fill three entries                                *
0241 C  S   PY4ENT   to fill four entries                                 *
0242 C  S   PY2FRM   to interface to generic two-fermion generator        *
0243 C  S   PY4FRM   to interface to generic four-fermion generator       *
0244 C  S   PY6FRM   to interface to generic six-fermion generator        *
0245 C  S   PY4JET   to generate a shower from a given 4-parton config    *
0246 C  S   PY4JTW   to evaluate the weight od a shower history for above *
0247 C  S   PY4JTS   to set up the parton configuration for above         *
0248 C  S   PYJOIN   to connect entries with colour flow information      *
0249 C  S   PYGIVE   to fill (or query) commonblock variables             *
0250 C  S   PYONOF   to allow easy control of particle decay modes        *
0251 C  S   PYTUNE   to select a predefined 'tune' for min-bias and UE    *
0252 C  S   PYEXEC   to administrate fragmentation and decay chain        *
0253 C  S   PYPREP   to rearrange showered partons along strings          *
0254 C  S   PYSTRF   to do string fragmentation of jet system             *
0255 C  S   PYJURF   to find boost to string junction rest frame          *
0256 C  S   PYINDF   to do independent fragmentation of one or many jets  *
0257 C  S   PYDECY   to do the decay of a particle                        *
0258 C  S   PYDCYK   to select parton and hadron flavours in decays       *
0259 C  S   PYKFDI   to select parton and hadron flavours in fragm        *
0260 C  S   PYNMES   to select number of popcorn mesons                   *
0261 C  S   PYKFIN   to calculate falvour prod. ratios from input params. *
0262 C  S   PYPTDI   to select transverse momenta in fragm                *
0263 C  S   PYZDIS   to select longitudinal scaling variable in fragm     *
0264 C  S   PYSHOW   to do m-ordered timelike parton shower evolution     *
0265 C  S   PYPTFS   to do pT-ordered timelike parton shower evolution    *
0266 C  F   PYMAEL   auxiliary to PYSHOW & PYPTFS: gluon emission ME's    *
0267 C  S   PYBOEI   to include Bose-Einstein effects (crudely)           *
0268 C  S   PYBESQ   auxiliary to PYBOEI                                  *
0269 C  F   PYMASS   to give the mass of a particle or parton             *
0270 C  F   PYMRUN   to give the running MSbar mass of a quark            *
0271 C  S   PYNAME   to give the name of a particle or parton             *
0272 C  F   PYCHGE   to give three times the electric charge              *
0273 C  F   PYCOMP   to compress standard KF flavour code to internal KC  *
0274 C  S   PYERRM   to write error messages and abort faulty run         *
0275 C  F   PYALEM   to give the alpha_electromagnetic value              *
0276 C  F   PYALPS   to give the alpha_strong value                       *
0277 C  F   PYANGL   to give the angle from known x and y components      *
0278 C  F   PYR      to provide a random number generator                 *
0279 C  S   PYRGET   to save the state of the random number generator     *
0280 C  S   PYRSET   to set the state of the random number generator      *
0281 C  S   PYROBO   to rotate and/or boost an event                      *
0282 C  S   PYEDIT   to remove unwanted entries from record               *
0283 C  S   PYLIST   to list event record or particle data                *
0284 C  S   PYLOGO   to write a logo                                      *
0285 C  S   PYUPDA   to update particle data                              *
0286 C  F   PYK      to provide integer-valued event information          *
0287 C  F   PYP      to provide real-valued event information             *
0288 C  S   PYSPHE   to perform sphericity analysis                       *
0289 C  S   PYTHRU   to perform thrust analysis                           *
0290 C  S   PYCLUS   to perform three-dimensional cluster analysis        *
0291 C  S   PYCELL   to perform cluster analysis in (eta, phi, E_T)       *
0292 C  S   PYJMAS   to give high and low jet mass of event               *
0293 C  S   PYFOWO   to give Fox-Wolfram moments                          *
0294 C  S   PYTABU   to analyze events, with tabular output               *
0295 C                                                                    *
0296 C  S   PYEEVT   to administrate the generation of an e+e- event      *
0297 C  S   PYXTEE   to give the total cross-section at given CM energy   *
0298 C  S   PYRADK   to generate initial state photon radiation           *
0299 C  S   PYXKFL   to select flavour of primary qqbar pair              *
0300 C  S   PYXJET   to select (matrix element) jet multiplicity          *
0301 C  S   PYX3JT   to select kinematics of three-jet event              *
0302 C  S   PYX4JT   to select kinematics of four-jet event               *
0303 C  S   PYXDIF   to select angular orientation of event               *
0304 C  S   PYONIA   to perform generation of onium decay to gluons       *
0305 C                                                                    *
0306 C  S   PYBOOK   to book a histogram                                  *
0307 C  S   PYFILL   to fill an entry in a histogram                      *
0308 C  S   PYFACT   to multiply histogram contents by a factor           *
0309 C  S   PYOPER   to perform operations between histograms             *
0310 C  S   PYHIST   to print and reset all histograms                    *
0311 C  S   PYPLOT   to print a single histogram                          *
0312 C  S   PYNULL   to reset contents of a single histogram              *
0313 C  S   PYDUMP   to dump histogram contents onto a file               *
0314 C                                                                    *
0315 C  S   PYSTOP   routine to handle Fortran STOP condition             *
0316 C                                                                    *
0317 C  S   PYKCUT   dummy routine for user kinematical cuts              *
0318 C  S   PYEVWT   dummy routine for weighting events                   *
0319 C  S   UPINIT   dummy routine to initialize user processes           *
0320 C  S   UPEVNT   dummy routine to generate a user process event       *
0321 C  S   UPVETO   dummy routine to abort event at parton level         *
0322 C  S   PDFSET   dummy routine to be removed when using PDFLIB        *
0323 C  S   STRUCTM  dummy routine to be removed when using PDFLIB        *
0324 C  S   STRUCTP  dummy routine to be removed when using PDFLIB        *
0325 C  S   SUGRA    dummy routine to be removed when linking with ISAJET *
0326 C  F   VISAJE   dummy functn. to be removed when linking with ISAJET *
0327 C  S   SSMSSM   dummy routine to be removed when linking with ISAJET *
0328 C  S   FHSETFLAGS  dummy routine          -"-              FEYNHIGGS *
0329 C  S   FHSETPARA   dummy routine          -"-              FEYNHIGGS *
0330 C  S   FHHIGGSCORR dummy routine          -"-              FEYNHIGGS *
0331 C  S   PYTAUD   dummy routine for interface to tau decay libraries   *
0332 C  S   PYTIME   dummy routine for giving date and time               *
0333 C                                                                    *
0334 C*********************************************************************
0335  
0336 C...PYDATA
0337 C...Default values for switches and parameters,
0338 C...and particle, decay and process data.
0339  
0340       BLOCK DATA PYDATA
0341  
0342 C...Double precision and integer declarations.
0343       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
0344       IMPLICIT INTEGER(I-N)
0345       INTEGER PYK,PYCHGE,PYCOMP
0346 C...Commonblocks.
0347       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0348       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
0349       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
0350       COMMON/PYDAT4/CHAF(500,2)
0351       CHARACTER CHAF*16
0352       COMMON/PYDATR/MRPY(6),RRPY(100)
0353       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
0354       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
0355       COMMON/PYINT1/MINT(400),VINT(400)
0356       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
0357       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
0358       COMMON/PYINT4/MWID(500),WIDS(500,5)
0359       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
0360       COMMON/PYINT6/PROC(0:500)
0361       CHARACTER PROC*28
0362       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
0363       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
0364       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
0365      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
0366       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
0367       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
0368       COMMON/PYPUED/IUED(0:99),RUED(0:99)
0369       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
0370       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
0371      &     AU(3,3),AD(3,3),AE(3,3)
0372       COMMON/PYLH3C/CPRO(2),CVER(2)
0373       CHARACTER CPRO*12,CVER*12
0374       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,/PYSUBS/,
0375      &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,
0376      &/PYINT6/,/PYINT7/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYTCSM/,/PYPUED/,
0377      &/PYBINS/,/PYLH3P/,/PYLH3C/
0378  
0379 C...PYDAT1, containing status codes and most parameters.
0380       DATA MSTU/
0381      &   0,    0,    0, 23000,23000,  500, 8000,    0,    0,    2,
0382      1   6,    0,    1,    0,    0,    1,    0,    0,    0,    0,
0383      2   2,   10,    0,    0,    1,   10,    0,    0,    0,    0,
0384      3   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
0385      4   2,    2,    1,    4,    2,    1,    1,    0,    0,    0,
0386      5  25,   24,    0,    1,    0,    0,    0,    0,    0,    0,
0387      6   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
0388      7  30*0,
0389      1   1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
0390      2   1,    5,    3,    5,    0,    0,    0,    0,    0,    0,
0391      &  80*0/
0392       DATA (PARU(I),I=1,100)/
0393      &  3.141592653589793D0, 6.283185307179586D0,
0394      &  0.197327D0, 5.06773D0, 0.389380D0, 2.56819D0,  4*0D0,
0395      1  0.001D0, 0.09D0, 0.01D0, 2D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0,
0396      2  0D0,   0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,
0397      3  0D0,   0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,
0398      4  2.0D0,  1.0D0, 0.25D0,  2.5D0, 0.05D0,
0399      4  0D0,   0D0, 0.0001D0, 0D0,   0D0,
0400      5  2.5D0,1.5D0,7.0D0,1.0D0,0.5D0,2.0D0,3.2D0, 0D0, 0D0, 0D0,
0401      6  40*0D0/
0402       DATA (PARU(I),I=101,200)/
0403      &  0.00729735D0, 0.232D0, 0.007764D0, 1.0D0, 1.16639D-5,
0404      &  0D0, 0D0, 0D0, 0D0,  0D0,
0405      1  0.20D0, 0.25D0, 1.0D0, 4.0D0, 10D0, 0D0, 0D0,  0D0, 0D0, 0D0,
0406      2 -0.693D0, -1.0D0, 0.387D0, 1.0D0, -0.08D0,
0407      2 -1.0D0,  1.0D0,  1.0D0,  1.0D0,  0D0,
0408      3  1.0D0,-1.0D0, 1.0D0,-1.0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
0409      4  5.0D0, 1.0D0, 1.0D0,  0D0, 1.0D0, 1.0D0,  0D0, 0D0, 0D0, 0D0,
0410      5  1.0D0,   0D0,   0D0,   0D0,   0D0,   0D0, 0D0, 0D0, 0D0, 0D0,
0411      6  1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
0412      7  1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 0D0,0D0,0D0,
0413      8  1.0D0, 1.0D0, 1.0D0, 0.0D0, 0.0D0, 1.0D0, 1.0D0, 0D0,0D0,0D0,
0414      9  0D0,  0D0,  0D0,  0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0/
0415       DATA MSTJ/
0416      &  1,    3,    0,    0,    0,    0,    0,    0,    0,    0,
0417      1  4,    2,    0,    1,    0,    2,    2,   20,    0,    0,
0418      2  2,    1,    1,    2,    1,    2,    2,    0,    0,    0,
0419      3  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
0420      4  2,    2,    4,    2,    5,    3,    3,    0,    0,    3,
0421      5  0,    3,    0,    2,    0,    0,    1,    0,    0,    0,
0422      6  40*0,
0423      &  5,    2,    7,    5,    1,    1,    0,    2,    0,    2,
0424      1  0,    0,    0,    0,    1,    1,    0,    0,    0,    0,
0425      2  80*0/
0426       DATA PARJ/
0427      &  0.10D0, 0.30D0, 0.40D0, 0.05D0, 0.50D0,
0428      &  0.50D0, 0.50D0,   0.6D0,   1.2D0,   0.6D0,
0429      1  0.50D0,0.60D0,0.75D0, 0D0, 0D0, 0D0, 0D0, 1.0D0, 1.0D0, 0D0,
0430      2  0.36D0, 1.0D0,0.01D0, 2.0D0,1.0D0,0.4D0, 0D0, 0D0, 0D0, 0D0,
0431      3  0.10D0, 1.0D0, 0.8D0, 1.5D0,0D0,2.0D0,0.2D0, 0D0,0.08D0,1D0,
0432      4  0.3D0, 0.58D0, 0.5D0, 0.9D0,0.5D0,1.0D0,1.0D0,1.5D0,1D0,10D0,
0433      5  0.77D0, 0.77D0, 0.77D0, -0.05D0, -0.005D0,
0434      5  0D0, 0D0, 0D0, 1.0D0, 0D0,
0435      6  4.5D0, 0.7D0, 0D0,0.003D0, 0.5D0, 0.5D0, 0D0, 0D0, 0D0, 0D0,
0436      7  10D0, 1000D0, 100D0, 1000D0, 0D0, 0.7D0,10D0, 0D0,0D0,0.5D0,
0437      8  0.29D0, 1.0D0, 1.0D0,  0D0,  10D0, 10D0, 0D0, 0D0, 0D0,1D-4,
0438      9  0.02D0, 1.0D0, 0.2D0,  0D0,  0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
0439      &  0D0,  0D0,  0D0,  0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,
0440      1  0D0,  0D0,  0D0,  0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,
0441      2  1.0D0, 0.25D0,91.187D0,2.489D0, 0.01D0,
0442      2  2.0D0,  1.0D0, 0.25D0,0.002D0,   0D0,
0443      3  0D0, 0D0, 0D0, 0D0, 0.01D0, 0.99D0, 0D0, 0D0,  0.2D0,   0D0,
0444      4  10*0D0,
0445      5  10*0D0,
0446      6  10*0D0,
0447      7  0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, -0.693D0,
0448      8 -1.0D0, 0.387D0, 1.0D0, -0.08D0, -1.0D0,
0449      8  1.0D0,  1.0D0, -0.693D0, -1.0D0, 0.387D0,
0450      9  1.0D0, -0.08D0, -1.0D0,   1.0D0, 1.0D0,
0451      9  5*0D0/
0452  
0453 C...PYDAT2, with particle data and flavour treatment parameters.
0454       DATA (KCHG(I,1),I=   1, 500)/-1,2,-1,2,-1,2,-1,2,2*0,-3,0,-3,0,   
0455      &-3,0,-3,6*0,3,9*0,3,2*0,3,4*0,-1,41*0,2,-1,20*0,3*3,7*0,3*3,3*0,  
0456      &3*3,3*0,3*3,6*0,3*3,3*0,3*3,4*0,-2,-3,2*1,2*0,4,2*3,6,2*-2,2*-3,  
0457      &0,2*1,2*0,2*3,-2,2*-3,2*0,-3,2*1,2*0,3,0,2*4,2*3,2*6,3,2*1,2*0,   
0458      &2*3,2*0,4,2*3,2*6,2*3,6,2*-2,2*-3,0,-3,0,2*1,2*0,2*3,0,3,2*-2,    
0459      &2*-3,2*0,2*-3,0,2*1,2*0,2*3,2*0,2*3,-2,2*-3,2*0,2*-3,2*0,-3,2*0,  
0460      &2*3,4*0,2*3,2*0,2*3,2*0,2*3,4*0,2*3,2*0,2*3,3*0,3,2*0,3,0,3,0,3,  
0461      &2*0,3,0,3,3*0,-1,2,-1,2,-1,2,-3,0,-3,0,-3,4*0,3,2*0,3,0,-1,2,-1,  
0462      &2,-1,2,-3,0,-3,0,-3,2*0,3,3*0,3,8*0,-1,2,-3,6*0,3,2*6,0,3,4*0,3,  
0463      &7*0,3,
0464 C...UED singlet and doublet quarks, leptons, and KK g, gamma, Z, and W
0465      &81*0,-1,2,-1,2,-1,2,-1,2,-1,2,-1,2, 
0466      &3*-3,0,-3,0,-3,0,-3,
0467      &3*0,3, 
0468      &25*0/
0469       DATA (KCHG(I,2),I=   1, 500)/8*1,12*0,2,20*0,1,107*0,-1,0,2*-1,   
0470      &2*0,-1,3*0,2*-1,3*0,2*-1,4*0,-1,5*0,2*-1,4*0,2*-1,5*0,2*-1,6*0,   
0471      &-1,7*0,2*-1,5*0,2*-1,6*0,2*-1,7*0,2*-1,8*0,-1,56*0,6*1,6*0,2,7*0, 
0472      &6*1,9*0,2,3*0,2,0,5*2,2*1,17*0,6*2,
0473      &83*0,12*1,9*0,2,3*0,25*0/
0474       DATA (KCHG(I,3),I=   1, 500)/8*1,2*0,8*1,5*0,1,9*0,1,2*0,1,3*0,   
0475      &2*1,39*0,1,0,2*1,20*0,3*1,4*0,6*1,3*0,9*1,3*0,12*1,4*0,100*1,2*0, 
0476      &2*1,2*0,4*1,2*0,6*1,2*0,8*1,3*0,1,0,2*1,0,3*1,0,4*1,3*0,12*1,3*0, 
0477      &1,2*0,1,0,12*1,0,1,3*0,1,8*0,4*1,5*0,3*1,0,1,3*0,2*1,7*0,1,
0478      &81*0,21*1,3*0,1,25*0/
0479       DATA (KCHG(I,4),I=   1, 290)/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 
0480      &16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,   
0481      &37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,   
0482      &58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,   
0483      &79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,   
0484      &100,110,111,113,115,130,211,213,215,221,223,225,310,311,313,315,  
0485      &321,323,325,331,333,335,411,413,415,421,423,425,431,433,435,441,  
0486      &443,445,511,513,515,521,523,525,531,533,535,541,543,545,551,553,  
0487      &555,990,1103,1114,2101,2103,2112,2114,2203,2212,2214,2224,3101,   
0488      &3103,3112,3114,3122,3201,3203,3212,3214,3222,3224,3303,3312,3314, 
0489      &3322,3324,3334,4101,4103,4112,4114,4122,4132,4201,4203,4212,4214, 
0490      &4222,4224,4232,4301,4303,4312,4314,4322,4324,4332,4334,4403,4412, 
0491      &4414,4422,4424,4432,4434,4444,5101,5103,5112,5114,5122,5132,5142, 
0492      &5201,5203,5212,5214,5222,5224,5232,5242,5301,5303,5312,5314,5322, 
0493      &5324,5332,5334,5342,5401,5403,5412,5414,5422,5424,5432,5434,5442, 
0494      &5444,5503,5512,5514,5522,5524,5532,5534,5542,5544,5554,10111,     
0495      &10113,10211,10213,10221,10223,10311,10313,10321,10323,10331,      
0496      &10333,10411,10413,10421,10423,10431,10433,10441,10443,10511,      
0497      &10513,10521,10523,10531,10533,10541,10543,10551,10553,20113,      
0498      &20213,20223,20313,20323,20333,20413,20423,20433,20443,20513/      
0499       DATA (KCHG(I,4),I= 291, 500)/20523,20533,20543,20553,100443,      
0500      &100553,1000001,1000002,1000003,1000004,1000005,1000006,1000011,   
0501      &1000012,1000013,1000014,1000015,1000016,1000021,1000022,1000023,  
0502      &1000024,1000025,1000035,1000037,1000039,2000001,2000002,2000003,  
0503      &2000004,2000005,2000006,2000011,2000012,2000013,2000014,2000015,  
0504      &2000016,3000111,3000211,3000221,3000331,3000113,3000213,3000223,  
0505      &3100021,3100111,3200111,3100113,3200113,3300113,3400113,4000001,  
0506      &4000002,4000011,4000012,5000039,9900012,9900014,9900016,9900023,  
0507      &9900024,9900041,9900042,9900110,9900210,9900220,9900330,9900440,  
0508      &9902110,9902210,9900443,9900441,9910441,9900553,9900551,9910551,  
0509      &3000115,3000215,
0510      &81*0,
0511 C...UED singlet and doublet quarks and leptons, and KK g, gamma, Z, and W.
0512      &6100001,6100002,6100003,6100004,6100005,6100006, 
0513      &5100001,5100002,5100003,5100004,5100005,5100006, 
0514      &6100011,6100013,6100015,
0515      &5100012,5100011,5100014,5100013,5100016,5100015, 
0516      &5100021,5100022,5100023,5100024,
0517      &25*0/ 
0518       DATA (PMAS(I,1),I=   1, 217)/2*0.33D0,0.5D0,1.5D0,4.8D0,175D0,    
0519      &2*400D0,2*0D0,0.00051D0,0D0,0.10566D0,0D0,1.777D0,0D0,400D0,      
0520      &5*0D0,91.188D0,80.45D0,115D0,6*0D0,500D0,900D0,500D0,3*300D0,     
0521      &3*0D0,5000D0,200D0,40*0D0,1D0,2D0,5D0,16*0D0,0.13498D0,0.7685D0,  
0522      &1.318D0,0.49767D0,0.13957D0,0.7669D0,1.318D0,0.54745D0,0.78194D0, 
0523      &1.275D0,2*0.49767D0,0.8961D0,1.432D0,0.4936D0,0.8916D0,1.425D0,   
0524      &0.95777D0,1.0194D0,1.525D0,1.8693D0,2.01D0,2.46D0,1.8645D0,       
0525      &2.0067D0,2.46D0,1.9685D0,2.1124D0,2.5735D0,2.9798D0,3.09688D0,    
0526      &3.5562D0,5.2792D0,5.3248D0,5.83D0,5.2789D0,5.3248D0,5.83D0,       
0527      &5.3693D0,5.4163D0,6.07D0,6.594D0,6.602D0,7.35D0,9.4D0,9.4603D0,   
0528      &9.9132D0,0D0,0.77133D0,1.234D0,0.57933D0,0.77133D0,0.93957D0,     
0529      &1.233D0,0.77133D0,0.93827D0,1.232D0,1.231D0,0.80473D0,0.92953D0,  
0530      &1.19744D0,1.3872D0,1.11568D0,0.80473D0,0.92953D0,1.19255D0,       
0531      &1.3837D0,1.18937D0,1.3828D0,1.09361D0,1.3213D0,1.535D0,1.3149D0,  
0532      &1.5318D0,1.67245D0,1.96908D0,2.00808D0,2.4521D0,2.5D0,2.2849D0,   
0533      &2.4703D0,1.96908D0,2.00808D0,2.4535D0,2.5D0,2.4529D0,2.5D0,       
0534      &2.4656D0,2.15432D0,2.17967D0,2.55D0,2.63D0,2.55D0,2.63D0,2.704D0, 
0535      &2.8D0,3.27531D0,3.59798D0,3.65648D0,3.59798D0,3.65648D0,          
0536      &3.78663D0,3.82466D0,4.91594D0,5.38897D0,5.40145D0,5.8D0,5.81D0,   
0537      &5.641D0,5.84D0,7.00575D0,5.38897D0,5.40145D0,5.8D0,5.81D0,5.8D0/  
0538       DATA (PMAS(I,1),I= 218, 500)/5.81D0,5.84D0,7.00575D0,5.56725D0,   
0539      &5.57536D0,5.96D0,5.97D0,5.96D0,5.97D0,6.12D0,6.13D0,7.19099D0,    
0540      &6.67143D0,6.67397D0,7.03724D0,7.0485D0,7.03724D0,7.0485D0,        
0541      &7.21101D0,7.219D0,8.30945D0,8.31325D0,10.07354D0,10.42272D0,      
0542      &10.44144D0,10.42272D0,10.44144D0,10.60209D0,10.61426D0,           
0543      &11.70767D0,11.71147D0,15.11061D0,0.9835D0,1.231D0,0.9835D0,       
0544      &1.231D0,1D0,1.17D0,1.429D0,1.29D0,1.429D0,1.29D0,2*1.4D0,2.272D0, 
0545      &2.424D0,2.272D0,2.424D0,2.5D0,2.536D0,3.4151D0,3.46D0,5.68D0,     
0546      &5.73D0,5.68D0,5.73D0,5.92D0,5.97D0,7.25D0,7.3D0,9.8598D0,9.875D0, 
0547      &2*1.23D0,1.282D0,2*1.402D0,1.427D0,2*2.372D0,2.56D0,3.5106D0,     
0548      &2*5.78D0,6.02D0,7.3D0,9.8919D0,3.686D0,10.0233D0,32*500D0,        
0549      &3*110D0,350D0,3*210D0,500D0,125D0,250D0,400D0,2*350D0,300D0,      
0550      &4*400D0,1000D0,3*500D0,1200D0,750D0,2*200D0,7*0D0,3*3.1D0,        
0551      &3*9.5D0,2*250D0,
0552      &81*0,
0553 C...UED
0554      &586.,588.,586.,588.,586.,586.,6*598.,
0555      &3*505.,6*516.,640.,501.,536.,536.,25*0.D0/
0556       DATA (PMAS(I,2),I=   1, 500)/5*0D0,1.39816D0,16*0D0,2.47813D0,    
0557      &2.07115D0,0.00367D0,6*0D0,14.54029D0,0D0,16.66099D0,8.38842D0,    
0558      &3.3752D0,4.17669D0,3*0D0,417.29147D0,0.39162D0,60*0D0,0.151D0,   
0559      &0.107D0,2*0D0,0.149D0,0.107D0,0D0,0.00843D0,0.185D0,2*0D0,        
0560      &0.0505D0,0.109D0,0D0,0.0498D0,0.098D0,0.0002D0,0.00443D0,0.076D0, 
0561      &2*0D0,0.023D0,2*0D0,0.023D0,2*0D0,0.015D0,0.0013D0,0D0,0.002D0,   
0562      &2*0D0,0.02D0,2*0D0,0.02D0,2*0D0,0.02D0,2*0D0,0.02D0,5*0D0,0.12D0, 
0563      &3*0D0,0.12D0,2*0D0,2*0.12D0,3*0D0,0.0394D0,4*0D0,0.036D0,0D0,     
0564      &0.0358D0,2*0D0,0.0099D0,0D0,0.0091D0,74*0D0,0.06D0,0.142D0,       
0565      &0.06D0,0.142D0,0D0,0.36D0,0.287D0,0.09D0,0.287D0,0.09D0,0.25D0,   
0566      &0.08D0,0.05D0,0.02D0,0.05D0,0.02D0,0.05D0,0D0,0.014D0,0.01D0,     
0567      &8*0.05D0,0D0,0.01D0,2*0.4D0,0.025D0,2*0.174D0,0.053D0,3*0.05D0,   
0568      &0.0009D0,4*0.05D0,3*0D0,19*1D0,0D0,7*1D0,0D0,1D0,0D0,1D0,0D0,     
0569      &0.0208D0,0.01195D0,0.03705D0,0.09511D0,1.89978D0,1.60746D0,       
0570      &0.13396D0,200.47294D0,0.02296D0,0.18886D0,94.66794D0,6.08718D0,   
0571      &0D0,2.17482D0,2.59359D0,2.59687D0,0.42896D0,0.41912D0,0.14153D0,  
0572      &2*0.00098D0,0.00097D0,26.7245D0,21.74916D0,0.88159D0,0.88001D0,   
0573      &7*0D0,6*0.01D0,0.25499D0,0.28446D0,131*0D0/                       
0574       DATA (PMAS(I,3),I=   1, 500)/5*0D0,13.98156D0,16*0D0,24.78129D0,  
0575      &20.71149D0,0.03669D0,6*0D0,145.40294D0,0D0,166.60993D0,           
0576      &83.88423D0,33.75195D0,41.76694D0,3*0D0,4172.91467D0,3.91621D0,    
0577      &60*0D0,0.4D0,0.25D0,2*0D0,0.4D0,0.25D0,0D0,0.1D0,0.17D0,2*0D0,    
0578      &0.2D0,0.12D0,0D0,0.2D0,0.12D0,0.002D0,0.015D0,0.2D0,2*0D0,0.12D0, 
0579      &2*0D0,0.12D0,2*0D0,0.05D0,0.005D0,0D0,0.01D0,2*0D0,0.05D0,2*0D0,  
0580      &0.05D0,2*0D0,0.05D0,2*0D0,0.05D0,5*0D0,0.14D0,3*0D0,0.14D0,2*0D0, 
0581      &2*0.14D0,3*0D0,0.04D0,4*0D0,0.035D0,0D0,0.035D0,2*0D0,0.05D0,0D0, 
0582      &0.05D0,74*0D0,0.05D0,0.25D0,0.05D0,0.25D0,0D0,0.2D0,0.4D0,        
0583      &0.005D0,0.4D0,0.01D0,0.35D0,0.001D0,0.1D0,0.08D0,0.1D0,0.08D0,    
0584      &0.1D0,0D0,0.05D0,0.02D0,6*0.1D0,0.05D0,0.1D0,0D0,0.02D0,2*0.3D0,  
0585      &0.05D0,2*0.3D0,0.02D0,2*0.1D0,0.03D0,0.001D0,4*0.1D0,3*0D0,       
0586      &19*10D0,0.00001D0,7*10D0,0.00001D0,10D0,0.00001D0,10D0,0.00001D0, 
0587      &0.20797D0,0.11949D0,0.37048D0,0.95114D0,18.99785D0,16.07463D0,    
0588      &1.33964D0,450D0,0.22959D0,1.88863D0,360D0,60.8718D0,0D0,          
0589      &21.74824D0,25.93594D0,25.96873D0,4.28961D0,4.19124D0,1.41528D0,   
0590      &0.00977D0,0.00976D0,0.00973D0,267.24501D0,217.49162D0,8.81592D0,  
0591      &8.80013D0,13*0D0,2.54987D0,2.84456D0,
0592      &81*0,
0593 C...UED
0594      &12*0.2D0,9*0.1D0,0.2,10.,0.07,0.3,25*0.D0/
0595       DATA (PMAS(I,4),I=   1, 500)/12*0D0,658654D0,0D0,0.0872D0,68*0D0, 
0596      &0.1D0,0.387D0,16*0D0,0.00003D0,2*0D0,15500D0,7804.5D0,5*0D0,      
0597      &26.762D0,3*0D0,3709D0,5*0D0,0.317D0,2*0D0,0.1244D0,2*0D0,0.14D0,  
0598      &5*0D0,0.468D0,2*0D0,0.462D0,2*0D0,0.483D0,2*0D0,0.15D0,18*0D0,    
0599      &44.34D0,0D0,78.88D0,4*0D0,23.96D0,2*0D0,49.1D0,0D0,87.1D0,0D0,    
0600      &24.6D0,4*0D0,0.0618D0,0.029D0,6*0D0,0.106D0,6*0D0,0.019D0,2*0D0,  
0601      &7*0.1D0,4*0D0,0.342D0,2*0.387D0,6*0D0,2*0.387D0,6*0D0,0.387D0,    
0602      &0D0,0.387D0,2*0D0,8*0.387D0,0D0,9*0.387D0,120*0D0,131*0D0/        
0603 
0604       DATA PARF/
0605      &  0.5D0,0.25D0, 0.5D0,0.25D0, 1D0, 0.5D0,  0D0,  0D0,  0D0, 0D0,
0606      1  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
0607      2  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
0608      3  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
0609      4  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
0610      5  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
0611      6  0.75D0, 0.5D0, 0D0,0.1667D0,0.0833D0,0.1667D0,0D0,0D0,0D0, 0D0,
0612      7  0D0,  0D0,  1D0,0.3333D0,0.6667D0,0.3333D0,0D0,0D0,0D0, 0D0,
0613      8  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
0614      9  0.0099D0, 0.0056D0, 0.199D0, 1.23D0, 4.17D0, 165D0,  4*0D0,
0615      & 0.325D0,0.325D0,0.5D0,1.6D0, 5.0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
0616      1 0D0,0.11D0,0.16D0,0.048D0,0.50D0,0.45D0,0.55D0,0.60D0,0D0,0D0,
0617      2 0.2D0, 0.1D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
0618      3 60*0D0,
0619      4 0.2D0,  0.5D0,  8*0D0,
0620      5 1800*0D0/
0621       DATA ((VCKM(I,J),J=1,4),I=1,4)/
0622      &  0.95113D0,  0.04884D0,  0.00003D0,  0.00000D0,
0623      &  0.04884D0,  0.94940D0,  0.00176D0,  0.00000D0,
0624      &  0.00003D0,  0.00176D0,  0.99821D0,  0.00000D0,
0625      &  0.00000D0,  0.00000D0,  0.00000D0,  1.00000D0/
0626  
0627 C...PYDAT3, with particle decay parameters and data.
0628       DATA (MDCY(I,1),I=   1, 500)/5*0,3*1,6*0,1,0,1,5*0,3*1,6*0,1,0,   
0629      &4*1,3*0,2*1,40*0,3*1,16*0,3*1,2*0,9*1,0,32*1,2*0,1,3*0,1,2*0,2*1, 
0630      &2*0,3*1,2*0,4*1,0,5*1,2*0,4*1,2*0,5*1,2*0,6*1,0,7*1,2*0,5*1,2*0,  
0631      &6*1,2*0,7*1,2*0,8*1,0,75*1,0,7*1,0,1,0,1,0,26*1,7*0,8*1,
0632      &81*0,
0633 C...UED
0634      &5*1,0,5*1,0,13*1,25*0/
0635       DATA (MDCY(I,2),I=   1, 351)/1,9,17,25,33,41,56,66,2*0,76,80,82,  
0636      &87,89,143,145,150,2*0,153,162,174,190,210,6*0,289,0,311,334,420,  
0637      &503,3*0,530,539,40*0,540,541,545,16*0,554,556,561,570,579,581,    
0638      &583,590,598,604,613,615,617,620,630,636,639,650,656,667,673,736,  
0639      &739,747,808,810,818,851,853,857,858,861,863,899,900,908,944,945,  
0640      &953,992,993,997,1028,1029,1033,1034,1043,2*0,1045,3*0,1046,2*0,   
0641      &1049,1052,2*0,1053,1055,1058,2*0,1062,1063,1066,1069,0,1072,1077, 
0642      &1079,1082,1084,2*0,1088,1089,1090,1166,2*0,1170,1171,1172,1173,   
0643      &1174,2*0,1178,1179,1181,1182,1184,1188,0,1189,1193,1197,1201,     
0644      &1205,1209,1213,2*0,1217,1218,1219,1236,1245,2*0,1254,1255,1256,   
0645      &1257,1258,1267,2*0,1276,1277,1278,1279,1280,1289,1290,2*0,1299,   
0646      &1308,1317,1326,1335,1344,1353,1362,0,1371,1380,1389,1398,1407,    
0647      &1416,1425,1434,1443,1452,1453,1454,1455,1456,1461,1464,1466,1471, 
0648      &1473,1478,1485,1489,1491,1493,1495,1497,1499,1501,1503,1504,1506, 
0649      &1508,1510,1512,1514,1516,1518,1520,1522,1523,1525,1527,1541,1543, 
0650      &1545,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1578,1592, 
0651      &1637,1661,1706,1730,1775,1802,1833,1859,1891,1917,1949,1975,2162, 
0652      &2331,2595,2826,3106,3402,0,3657,3706,3734,3783,3811,3860,3888,0,  
0653      &3924,0,3960,0,3996,4004,4012,4020,4217,4243,4270,4023,4029,4036,  
0654      &4043,4050,4056,4062,4071,4075,4079,4082,4084,4104,4126,4148,4170/ 
0655       DATA (MDCY(I,2),I= 352, 500)/4185,4197,4204,7*0,4211,4212,4213,   
0656      &4214,4215,4216,4296,4322,
0657      &81*0,
0658 C...UED
0659      %5001,5003,5005,5007,5009,5011,5013,5016,5019,5022,5025,5028,
0660      &5031,5032,5033,
0661      &5034,5035,5036,5037,5038,5039,5040,5064,5065,5083,
0662      &25*0/
0663       DATA (MDCY(I,3),I=   1, 500)/5*8,15,2*10,2*0,4,2,5,2,54,2,5,3,    
0664      &2*0,9,12,16,20,79,6*0,22,0,23,86,83,27,3*0,9,1,40*0,1,4,9,16*0,2, 
0665      &5,2*9,2*2,7,8,6,9,2*2,3,10,6,3,11,6,11,6,63,3,8,61,2,8,33,2,4,1,  
0666      &3,2,36,1,8,36,1,8,39,1,4,31,1,4,1,9,2,2*0,1,3*0,3,2*0,3,1,2*0,2,  
0667      &3,4,2*0,1,3*3,0,5,2,3,2,4,2*0,2*1,76,4,2*0,4*1,4,2*0,1,2,1,2,4,1, 
0668      &0,7*4,2*0,2*1,17,2*9,2*0,4*1,2*9,2*0,4*1,9,1,9,2*0,8*9,0,9*9,4*1, 
0669      &5,3,2,5,2,5,7,4,7*2,1,9*2,1,2*2,14,2*2,4,9*2,11,14,45,24,45,24,   
0670      &45,27,31,26,32,26,32,26,187,169,264,231,280,296,255,0,49,28,49,   
0671      &28,49,28,36,0,36,0,36,0,3*8,3,26,27,26,6,3*7,2*6,9,2*4,3,2,20,    
0672      &3*22,15,12,2*7,7*0,6*1,26,30,
0673      &81*0,
0674 C...UED
0675      &6*2,6*3,9*1,24,1,18,6,25*0/                                 
0676       DATA (MDME(I,1),I=   1,8000)/6*1,-1,7*1,-1,7*1,-1,7*1,-1,7*1,-1,  
0677      &7*1,-1,1,7*-1,8*1,2*-1,8*1,2*-1,73*1,-1,2*1,-1,5*1,0,2*-1,6*1,0,  
0678      &2*-1,3*1,-1,6*1,2*-1,6*1,2*-1,3*1,-1,3*1,-1,3*1,5*-1,3*1,-1,6*1,  
0679      &2*-1,3*1,-1,5*1,62*1,6*1,2*-1,6*1,8*-1,3*1,-1,3*1,-1,3*1,5*-1,   
0680      &3*1,4*-1,6*1,2*-1,3*1,-1,12*1,62*1,6*1,2*-1,3*1,-1,9*1,62*1,    
0681      &3*1,-1,3*1,-1,1,18*1,4*1,2*-1,2*1,-1,1249*1,2*-1,377*1,2*-1,     
0682      &1921*1,2*-1,6*1,2*-1,133*1,2*-1,6*1,2*-1,10*1,-1,3*1,-1,3*1,5*-1, 
0683      &3*1,-1,16*1,2*-1,6*1,2*-1,16*1,2*-1,6*1,2*-1,13*1,-1,3*1,-1,3*1,  
0684      &5*-1,3*1,-1,
0685      &649*0,
0686 C...UED
0687      &10*1,2*0,15*1,3*0,9*1,5*1,0,5*1,0,5*1,0,5*1,0,
0688      &1,24*1,2912*0/
0689       DATA (MDME(I,2),I=   1,8000)/43*102,4*0,102,0,6*53,3*102,4*0,102, 
0690      &2*0,3*102,4*0,102,2*0,6*102,42,6*102,2*42,2*0,8*41,2*0,36*41,     
0691      &8*102,0,102,0,102,2*0,21*102,8*32,8*0,16*32,4*0,8*32,9*0,62*53,   
0692      &8*32,14*0,16*32,7*0,8*32,16*0,62*53,8*32,13*0,62*53,4*32,5*0,     
0693      &18*53,6*32,4*0,12,2*42,2*11,9*42,0,2,3,15*0,4*42,5*0,3,12*0,2,    
0694      &3*0,1,0,3,16*0,2*3,15*0,2*42,2*3,18*0,2*3,3*0,1,11*0,22*42,41*0,  
0695      &2*3,9*0,16*42,45*0,3,10*0,10*42,20*0,2*13,6*0,12,2*0,12,0,12,     
0696      &14*42,16*0,48,3*13,2*42,9*0,14*42,16*0,48,3*13,2*42,9*0,14*42,    
0697      &19*0,48,3*13,2*42,6*0,2*11,28*42,5*0,32,3*0,4*32,2*4,0,32,45*0,   
0698      &14*42,52*0,10*13,2*42,2*11,4*0,2*42,2*11,6*0,2*42,2*11,0,2*42,    
0699      &2*11,2*42,2*11,2*42,2*11,2*42,2*11,2*42,2*11,2*42,2*11,2*42,2*11, 
0700      &2*0,3*42,8*0,48,3*13,20*42,4*0,18*42,4*0,9*42,0,162*42,50*0,2*12, 
0701      &17*0,2*32,33*0,12,9*0,32,2*0,12,11*0,4*32,2*4,5*0,2404*53,4*32,   
0702      &3*0,6*32,3*0,4*32,3*0,50*32,3*53,12*0,8*32,12*0,66*51,6*32,9*0,   
0703      &9*32,17*0,6*51,10*0,8*32,15*0,16*32,14*0,8*32,18*0,8*32,18*0,     
0704      &16*32,
0705 C...UED
0706      &653*0,30*0,9*0,12*0,37*0,2912*0/
0707       DATA (BRAT(I)  ,I=   1, 348)/43*0D0,0.00003D0,0.001765D0,         
0708      &0.998205D0,35*0D0,1D0,6*0D0,0.1783D0,0.1735D0,0.1131D0,0.2494D0,  
0709      &0.003D0,0.09D0,0.0027D0,0.01D0,0.0014D0,0.0012D0,2*0.00025D0,     
0710      &0.0071D0,0.012D0,0.0004D0,0.00075D0,0.00006D0,2*0.00078D0,        
0711      &0.0034D0,0.08D0,0.011D0,0.0191D0,0.00006D0,0.005D0,0.0133D0,      
0712      &0.0067D0,0.0005D0,0.0035D0,0.0006D0,0.0015D0,0.00021D0,0.0002D0,  
0713      &0.00075D0,0.0001D0,0.0002D0,0.0011D0,3*0.0002D0,0.00022D0,        
0714      &0.0004D0,0.0001D0,2*0.00205D0,2*0.00069D0,0.00025D0,0.00051D0,    
0715      &0.00025D0,35*0D0,0.153995D0,0.11942D0,0.153984D0,0.119259D0,      
0716      &0.152272D0,3*0D0,0.033576D0,0.066806D0,0.033576D0,0.066806D0,     
0717      &0.0335D0,0.066806D0,2*0D0,0.321369D0,0.016494D0,2*0D0,0.016502D0, 
0718      &0.320615D0,2*0D0,0.00001D0,0.000591D0,6*0D0,2*0.108166D0,         
0719      &0.108087D0,0D0,0.000001D0,0D0,0.000353D0,0.04359D0,0.795274D0,    
0720      &4*0D0,0.000339D0,0.095746D0,0D0,0.060724D0,0.003054D0,0.000919D0, 
0721      &64*0D0,0.145835D0,0.113276D0,0.145835D0,0.113271D0,0.145781D0,    
0722      &0.049002D0,2*0D0,0.032025D0,0.063642D0,0.032025D0,0.063642D0,     
0723      &0.032022D0,0.063642D0,8*0D0,0.251225D0,0.0129D0,0.000006D0,0D0,   
0724      &0.0129D0,0.250764D0,0.00038D0,0D0,0.000008D0,0.000465D0,          
0725      &0.215418D0,5*0D0,2*0.085312D0,0.08531D0,7*0D0,0.000029D0,         
0726      &0.000536D0,5*0D0,0.000074D0,0D0,0.000417D0,0.000015D0,0.000061D0/ 
0727       DATA (BRAT(I)  ,I= 349, 655)/0.306789D0,0.689189D0,0D0,0.00289D0, 
0728      &69*0D0,0.000001D0,0.000072D0,0.001333D0,4*0D0,0.000001D0,         
0729      &0.000184D0,0D0,0.003108D0,0.000015D0,0.000003D0,2*0D0,0.995284D0, 
0730      &66*0D0,0.000014D0,0.082234D0,2*0D0,0.000013D0,0.003746D0,0D0,     
0731      &0.913992D0,18*0D0,3*0.215119D0,0.214724D0,2*0D0,0.06996D0,        
0732      &0.069959D0,0D0,2*1D0,2*0.08D0,0.76D0,0.08D0,2*0.105D0,0.04D0,     
0733      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,0.988D0,0.012D0,       
0734      &0.998739D0,0.00079D0,0.00038D0,0.000046D0,0.000045D0,2*0.34725D0, 
0735      &0.144D0,0.104D0,0.0245D0,2*0.01225D0,0.0028D0,0.0057D0,0.2112D0,  
0736      &0.1256D0,2*0.1939D0,2*0.1359D0,0.002D0,0.001D0,0.0006D0,          
0737      &0.999877D0,0.000123D0,0.99955D0,0.00045D0,2*0.34725D0,0.144D0,    
0738      &0.104D0,0.049D0,0.0028D0,0.0057D0,0.3923D0,0.321D0,0.2317D0,      
0739      &0.0478D0,0.0049D0,0.0013D0,0.0003D0,0.0007D0,0.89D0,0.08693D0,    
0740      &0.0221D0,0.00083D0,2*0.00007D0,0.564D0,0.282D0,0.072D0,0.028D0,   
0741      &0.023D0,2*0.0115D0,0.005D0,0.003D0,0.6861D0,0.3139D0,2*0.5D0,     
0742      &0.665D0,0.333D0,0.002D0,0.333D0,0.166D0,0.168D0,0.084D0,0.087D0,  
0743      &0.043D0,0.059D0,2*0.029D0,0.002D0,0.6352D0,0.2116D0,0.0559D0,     
0744      &0.0173D0,0.0482D0,0.0318D0,0.666D0,0.333D0,0.001D0,0.332D0,       
0745      &0.166D0,0.168D0,0.084D0,0.086D0,0.043D0,0.059D0,2*0.029D0,        
0746      &2*0.002D0,0.437D0,0.208D0,0.302D0,0.0302D0,0.0212D0,0.0016D0/     
0747       DATA (BRAT(I)  ,I= 656, 831)/0.48947D0,0.34D0,3*0.043D0,0.027D0,  
0748      &0.0126D0,0.0013D0,0.0003D0,0.00025D0,0.00008D0,0.444D0,2*0.222D0, 
0749      &0.104D0,2*0.004D0,0.07D0,0.065D0,2*0.005D0,2*0.011D0,5*0.001D0,   
0750      &0.07D0,0.065D0,2*0.005D0,2*0.011D0,5*0.001D0,0.026D0,0.019D0,     
0751      &0.066D0,0.041D0,0.045D0,0.076D0,0.0073D0,2*0.0047D0,0.026D0,      
0752      &0.001D0,0.0006D0,0.0066D0,0.005D0,2*0.003D0,2*0.0006D0,2*0.001D0, 
0753      &0.006D0,0.005D0,0.012D0,0.0057D0,0.067D0,0.008D0,0.0022D0,        
0754      &0.027D0,0.004D0,0.019D0,0.012D0,0.002D0,0.009D0,0.0218D0,0.001D0, 
0755      &0.022D0,0.087D0,0.001D0,0.0019D0,0.0015D0,0.0028D0,0.683D0,       
0756      &0.306D0,0.011D0,0.3D0,0.15D0,0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,  
0757      &0.04D0,0.034D0,0.027D0,2*0.002D0,2*0.004D0,2*0.002D0,0.034D0,     
0758      &0.027D0,2*0.002D0,2*0.004D0,2*0.002D0,0.0365D0,0.045D0,0.073D0,   
0759      &0.062D0,3*0.021D0,0.0061D0,0.015D0,0.025D0,0.0088D0,0.074D0,      
0760      &0.0109D0,0.0041D0,0.002D0,0.0035D0,0.0011D0,0.001D0,0.0027D0,     
0761      &2*0.0016D0,0.0018D0,0.011D0,0.0063D0,0.0052D0,0.018D0,0.016D0,    
0762      &0.0034D0,0.0036D0,0.0009D0,0.0006D0,0.015D0,0.0923D0,0.018D0,     
0763      &0.022D0,0.0077D0,0.009D0,0.0075D0,0.024D0,0.0085D0,0.067D0,       
0764      &0.0511D0,0.017D0,0.0004D0,0.0028D0,0.619D0,0.381D0,0.3D0,0.15D0,  
0765      &0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,0.01D0,2*0.02D0,0.03D0, 
0766      &2*0.005D0,2*0.02D0,0.03D0,2*0.005D0,0.015D0,0.037D0,0.028D0/      
0767       DATA (BRAT(I)  ,I= 832, 997)/0.079D0,0.095D0,0.052D0,0.0078D0,    
0768      &4*0.001D0,0.028D0,0.033D0,0.026D0,0.05D0,0.01D0,4*0.005D0,0.25D0, 
0769      &0.0952D0,0.94D0,0.06D0,2*0.4D0,2*0.1D0,1D0,0.0602D0,0.0601D0,     
0770      &0.8797D0,0.135D0,0.865D0,0.02D0,0.055D0,2*0.005D0,0.008D0,        
0771      &0.012D0,0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,0.01D0,0.03D0,   
0772      &0.0035D0,0.011D0,0.0055D0,0.0042D0,0.009D0,0.018D0,0.015D0,       
0773      &0.0185D0,0.0135D0,0.025D0,0.0004D0,0.0007D0,0.0008D0,0.0014D0,    
0774      &0.0019D0,0.0025D0,0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,  
0775      &1D0,0.3D0,0.15D0,0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,       
0776      &0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,0.02D0,0.055D0,          
0777      &2*0.005D0,0.008D0,0.012D0,0.01D0,0.03D0,0.0035D0,0.011D0,         
0778      &0.0055D0,0.0042D0,0.009D0,0.018D0,0.015D0,0.0185D0,0.0135D0,      
0779      &0.025D0,0.0004D0,0.0007D0,0.0008D0,0.0014D0,0.0019D0,0.0025D0,    
0780      &0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,1D0,0.3D0,0.15D0,   
0781      &0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,0.02D0,0.055D0,         
0782      &2*0.005D0,0.008D0,0.012D0,0.02D0,0.055D0,2*0.005D0,0.008D0,       
0783      &0.012D0,0.01D0,0.03D0,0.0035D0,0.011D0,0.0055D0,0.0042D0,0.009D0, 
0784      &0.018D0,0.015D0,0.0185D0,0.0135D0,0.025D0,2*0.0002D0,0.0007D0,    
0785      &2*0.0004D0,0.0014D0,0.001D0,0.0009D0,0.0025D0,0.4291D0,0.08D0,    
0786      &0.07D0,0.02D0,0.015D0,0.005D0,1D0,2*0.3D0,2*0.2D0,0.047D0/        
0787       DATA (BRAT(I)  ,I= 998,1188)/0.122D0,0.006D0,0.012D0,0.035D0,     
0788      &0.012D0,0.035D0,0.003D0,0.007D0,0.15D0,0.037D0,0.008D0,0.002D0,   
0789      &0.05D0,0.015D0,0.003D0,0.001D0,0.014D0,0.042D0,0.014D0,0.042D0,   
0790      &0.24D0,0.065D0,0.012D0,0.003D0,0.001D0,0.002D0,0.001D0,0.002D0,   
0791      &0.014D0,0.003D0,1D0,2*0.3D0,2*0.2D0,1D0,0.0252D0,0.0248D0,        
0792      &0.0267D0,0.015D0,0.045D0,0.015D0,0.045D0,0.7743D0,0.029D0,0.22D0, 
0793      &0.78D0,1D0,0.331D0,0.663D0,0.006D0,0.663D0,0.331D0,0.006D0,1D0,   
0794      &0.999D0,0.001D0,0.88D0,2*0.06D0,0.639D0,0.358D0,0.002D0,0.001D0,  
0795      &1D0,0.88D0,2*0.06D0,0.516D0,0.483D0,0.001D0,0.88D0,2*0.06D0,      
0796      &0.9988D0,0.0001D0,0.0006D0,0.0004D0,0.0001D0,0.667D0,0.333D0,     
0797      &0.9954D0,0.0011D0,0.0035D0,0.333D0,0.667D0,0.676D0,0.234D0,       
0798      &0.085D0,0.005D0,2*1D0,0.018D0,2*0.005D0,0.003D0,0.002D0,          
0799      &2*0.006D0,0.018D0,2*0.005D0,0.003D0,0.002D0,2*0.006D0,0.0066D0,   
0800      &0.025D0,0.016D0,0.0088D0,2*0.005D0,0.0058D0,0.005D0,0.0055D0,     
0801      &4*0.004D0,2*0.002D0,2*0.004D0,0.003D0,0.002D0,2*0.003D0,          
0802      &3*0.002D0,2*0.001D0,0.002D0,2*0.001D0,2*0.002D0,0.0013D0,         
0803      &0.0018D0,5*0.001D0,4*0.003D0,2*0.005D0,2*0.002D0,2*0.001D0,       
0804      &2*0.002D0,2*0.001D0,0.2432D0,0.057D0,2*0.035D0,0.15D0,2*0.075D0,  
0805      &0.03D0,2*0.015D0,2*0.08D0,0.76D0,0.08D0,4*1D0,2*0.08D0,0.76D0,    
0806      &0.08D0,1D0,2*0.5D0,1D0,2*0.5D0,2*0.08D0,0.76D0,0.08D0,1D0/        
0807       DATA (BRAT(I)  ,I=1189,1381)/2*0.08D0,0.76D0,3*0.08D0,0.76D0,     
0808      &3*0.08D0,0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,  
0809      &3*0.08D0,0.76D0,0.08D0,2*1D0,2*0.105D0,0.04D0,0.0077D0,0.02D0,    
0810      &0.0235D0,0.0285D0,0.0435D0,0.0011D0,0.0022D0,0.0044D0,0.4291D0,   
0811      &0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,      
0812      &0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,      
0813      &0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,4*1D0,2*0.105D0,0.04D0,      
0814      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,      
0815      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,4*1D0,2*0.105D0,       
0816      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,1D0,2*0.105D0,  
0817      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0818      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0819      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0820      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0821      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0822      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0823      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0824      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0825      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
0826      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0/      
0827       DATA (BRAT(I)  ,I=1382,1582)/0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,   
0828      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
0829      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
0830      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
0831      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
0832      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
0833      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
0834      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
0835      &0.015D0,0.005D0,4*1D0,0.52D0,0.26D0,0.11D0,2*0.055D0,0.333D0,     
0836      &0.334D0,0.333D0,0.667D0,0.333D0,0.28D0,0.14D0,0.313D0,0.157D0,    
0837      &0.11D0,0.667D0,0.333D0,0.28D0,0.14D0,0.313D0,0.157D0,0.11D0,      
0838      &0.36D0,0.18D0,0.03D0,2*0.015D0,2*0.2D0,4*0.25D0,0.667D0,0.333D0,  
0839      &0.667D0,0.333D0,0.667D0,0.333D0,0.667D0,0.333D0,4*0.5D0,0.007D0,  
0840      &0.993D0,1D0,0.667D0,0.333D0,0.667D0,0.333D0,0.667D0,0.333D0,      
0841      &0.667D0,0.333D0,8*0.5D0,0.02D0,0.98D0,1D0,4*0.5D0,3*0.146D0,      
0842      &3*0.05D0,0.15D0,2*0.05D0,4*0.024D0,0.066D0,0.667D0,0.333D0,       
0843      &0.667D0,0.333D0,4*0.25D0,0.667D0,0.333D0,0.667D0,0.333D0,2*0.5D0, 
0844      &0.273D0,0.727D0,0.667D0,0.333D0,0.667D0,0.333D0,4*0.5D0,0.35D0,   
0845      &0.65D0,2*0.0083D0,0.1866D0,0.324D0,0.184D0,0.027D0,0.001D0,       
0846      &0.093D0,0.087D0,0.078D0,0.0028D0,3*0.014D0,0.008D0,0.024D0/       
0847       DATA (BRAT(I)  ,I=1583,4150)/0.008D0,0.024D0,0.425D0,0.02D0,      
0848      &0.185D0,0.088D0,0.043D0,0.067D0,0.066D0,2404*0D0,0.024396D0,      
0849      &0.045285D0,0.83119D0,2*0D0,0.000349D0,0.09878D0,0D0,0.019884D0,   
0850      &0.02341D0,0.362776D0,0.550787D0,2*0D0,0.000152D0,0.042991D0,      
0851      &0.013695D0,0.025421D0,0.466595D0,2*0D0,0.000196D0,0.055451D0,     
0852      &0.438642D0,0.445781D0,0D0,0.554219D0,4*0.00335D0,0.522257D0,      
0853      &0.464343D0,6*0D0,1D0,6*0D0,1D0,4*0.013853D0,0.562703D0,           
0854      &0.376702D0,0.00518D0,4*0.006254D0,0.974985D0,7*0D0,4*0.148299D0,  
0855      &0.015351D0,0D0,0.182109D0,0.167099D0,0.042247D0,0.850973D0,       
0856      &0.005411D0,0.045025D0,0.098591D0,0.849898D0,0.021617D0,           
0857      &0.030018D0,0.098466D0,0.294448D0,0.10945D0,0.596102D0,0.389906D0, 
0858      &0.610094D0,3*0.0633D0,0.063299D0,0.063295D0,0.056281D0,2*0D0,     
0859      &6*0.020495D0,2*0D0,0.327919D0,0.04099D0,0.045236D0,0.090112D0,    
0860      &0.19874D0,0.010204D0,0.000003D0,0.010205D0,0.198356D0,0.000151D0, 
0861      &0.000006D0,0.000367D0,0.081967D0,0.19874D0,0.010204D0,0.000003D0, 
0862      &0.010205D0,0.198356D0,0.000151D0,0.000006D0,0.000367D0,           
0863      &0.081967D0,4*0D0,0.198776D0,0.010206D0,0.000003D0,0.010207D0,     
0864      &0.19839D0,0.000151D0,0.000006D0,0.000367D0,0.081893D0,0.198776D0, 
0865      &0.010206D0,0.000003D0,0.010207D0,0.19839D0,0.000151D0,0.000006D0, 
0866      &0.000367D0,0.081893D0,4*0D0,0.199344D0,0.010234D0,0.000003D0/     
0867       DATA (BRAT(I)  ,I=4151,4281)/0.010236D0,0.198928D0,0.000149D0,    
0868      &0.000006D0,0.000368D0,0.080733D0,0.199344D0,0.010234D0,           
0869      &0.000003D0,0.010236D0,0.198928D0,0.000149D0,0.000006D0,           
0870      &0.000368D0,0.080733D0,4*0D0,0.184738D0,0.104588D0,0.184738D0,     
0871      &0.104587D0,0.184731D0,0.09582D0,0.022902D0,0.008429D0,0.015602D0, 
0872      &0.022902D0,0.008429D0,0.015602D0,0.022902D0,0.008429D0,           
0873      &0.015602D0,0.28959D0,0.01487D0,0.000008D0,0.01487D0,0.289061D0,   
0874      &0.000492D0,0.000009D0,0.000536D0,0.27911D0,2*0.037151D0,          
0875      &0.03715D0,0.090266D0,2*0.001805D0,0.090266D0,0.001805D0,          
0876      &0.812263D0,0.00179D0,0.090428D0,0.001809D0,0.001808D0,0.090428D0, 
0877      &0.001808D0,0.81372D0,0D0,6*1D0,0.095602D0,2*0.338272D0,           
0878      &0.156896D0,0.019193D0,0.017993D0,0.001168D0,0.001462D0,           
0879      &0.009608D0,0.003306D0,0.002132D0,0.003127D0,0.002132D0,           
0880      &0.003127D0,0.00213D0,3*0D0,0.001411D0,0.00045D0,0.001411D0,       
0881      &0.00045D0,0.001411D0,0.00045D0,2*0D0,0.097996D0,0.399787D0,       
0882      &0.262464D0,0.185427D0,0.022683D0,0.007648D0,0.004259D0,           
0883      &0.005925D0,0.000304D0,2*0D0,0.000304D0,0.005914D0,0.000002D0,     
0884      &2*0D0,0.000011D0,0.001258D0,5*0D0,3*0.002005D0,0D0,0.272178D0,    
0885      &0.022112D0,0.255165D0,0.015534D0,2*0.108965D0,0.031557D0,         
0886      &0.005562D0,0.044965D0,0.004674D0,0.007637D0,0.020597D0/           
0887       DATA (BRAT(I)  ,I=4282,8000)/0.007636D0,0.020595D0,0.007616D0,    
0888      &3*0D0,0.017298D0,0.004782D0,0.017298D0,0.004782D0,0.017297D0,     
0889      &0.004782D0,2*0D0,0.055332D0,2*0.319757D0,0.121576D0,2*0.001556D0, 
0890      &4*0D0,0.0277D0,0.021481D0,0.027699D0,0.021477D0,0.027658D0,3*0D0, 
0891      &0.006071D0,0.01208D0,0.006071D0,0.01208D0,0.006069D0,0.01208D0,   
0892      &2*0D0,0.035891D0,0.209476D0,0.129084D0,0.286631D0,0.10742D0,      
0893      &0.109486D0,4*0D0,0.035282D0,0.001812D0,2*0D0,0.001812D0,          
0894      &0.035215D0,0.000021D0,0D0,0.000001D0,0.000065D0,0.011965D0,5*0D0, 
0895      &2*0.011947D0,0.011946D0,0D0,
0896      &649*0.D0,
0897 C....UED
0898      &0.001D0,0.999D0,0.001D0,0.999D0,0.001D0,0.999D0,
0899      &0.001D0,0.999D0,0.001D0,0.999D0,0.001D0,0.999D0, 
0900      &0.33D0,0.66D0,0.01D0,0.33D0,0.66D0,0.01D0,0.33D0,0.66D0,0.01D0,
0901      &0.33D0,0.66D0,0.01D0,0.98D0,0.D0,0.02D0,0.33D0,0.66D0,0.01D0,
0902      &9*1.D0,              
0903      &24*0.0416667,        
0904      &1.,                  
0905      &3*0.D0,6*0.08333D0, 
0906      &3*0.D0,6*0.08333D0,
0907      &6*0.166667D0,        
0908      &2912*0.D0/
0909       DATA (KFDP(I,1),I=   1, 377)/21,22,23,4*-24,25,21,22,23,4*24,25,  
0910      &21,22,23,4*-24,25,21,22,23,4*24,25,21,22,23,4*-24,25,21,22,23,    
0911      &4*24,25,37,1000022,1000023,1000025,1000035,1000021,1000039,21,22, 
0912      &23,4*-24,25,2*-37,21,22,23,4*24,25,2*37,22,23,-24,25,23,24,-12,   
0913      &22,23,-24,25,23,24,-12,-14,48*16,22,23,-24,25,23,24,22,23,-24,25, 
0914      &-37,23,24,37,1,2,3,4,5,6,7,8,21,1,2,3,4,5,6,7,8,11,13,15,17,1,2,  
0915      &3,4,5,6,7,8,11,12,13,14,15,16,17,18,4*-1,4*-3,4*-5,4*-7,-11,-13,  
0916      &-15,-17,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,24,1000022,        
0917      &2*1000023,3*1000025,4*1000035,2*1000024,2*1000037,1000001,        
0918      &2000001,1000001,-1000001,1000002,2000002,1000002,-1000002,        
0919      &1000003,2000003,1000003,-1000003,1000004,2000004,1000004,         
0920      &-1000004,1000005,2000005,1000005,-1000005,1000006,2000006,        
0921      &1000006,-1000006,1000011,2000011,1000011,-1000011,1000012,        
0922      &2000012,1000012,-1000012,1000013,2000013,1000013,-1000013,        
0923      &1000014,2000014,1000014,-1000014,1000015,2000015,1000015,         
0924      &-1000015,1000016,2000016,1000016,-1000016,1,2,3,4,5,6,7,8,11,12,  
0925      &13,14,15,16,17,18,24,37,2*23,25,35,4*-1,4*-3,4*-5,4*-7,-11,-13,   
0926      &-15,-17,3*24,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,24,23,25,24,  
0927      &37,23,25,36,1000022,2*1000023,3*1000025,4*1000035,2*1000024,      
0928      &2*1000037,1000001,2000001,1000001,-1000001,1000002,2000002/       
0929       DATA (KFDP(I,1),I= 378, 580)/1000002,-1000002,1000003,2000003,    
0930      &1000003,-1000003,1000004,2000004,1000004,-1000004,1000005,        
0931      &2000005,1000005,-1000005,1000006,2000006,1000006,-1000006,        
0932      &1000011,2000011,1000011,-1000011,1000012,2000012,1000012,         
0933      &-1000012,1000013,2000013,1000013,-1000013,1000014,2000014,        
0934      &1000014,-1000014,1000015,2000015,1000015,-1000015,1000016,        
0935      &2000016,1000016,-1000016,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,  
0936      &24,23,25,24,37,1000022,2*1000023,3*1000025,4*1000035,2*1000024,   
0937      &2*1000037,1000001,2000001,1000001,-1000001,1000002,2000002,       
0938      &1000002,-1000002,1000003,2000003,1000003,-1000003,1000004,        
0939      &2000004,1000004,-1000004,1000005,2000005,1000005,-1000005,        
0940      &1000006,2000006,1000006,-1000006,1000011,2000011,1000011,         
0941      &-1000011,1000012,2000012,1000012,-1000012,1000013,2000013,        
0942      &1000013,-1000013,1000014,2000014,1000014,-1000014,1000015,        
0943      &2000015,1000015,-1000015,1000016,2000016,1000016,-1000016,-1,-3,  
0944      &-5,-7,-11,-13,-15,-17,24,2*1000022,2*1000023,2*1000025,2*1000035, 
0945      &1000006,2000006,1000006,2000006,-1000001,-1000003,-1000011,       
0946      &-1000013,-1000015,-2000015,1,2,3,4,5,6,11,13,15,2,82,-11,-13,2*2, 
0947      &-12,-14,-16,2*-2,2*-4,-2,-4,2*22,211,111,221,13,11,213,-213,221,  
0948      &223,321,130,310,111,331,111,211,-12,12,-14,14,211,111,22,-13,-11/ 
0949       DATA (KFDP(I,1),I= 581, 992)/2*211,213,113,221,223,321,211,331,   
0950      &22,111,211,2*22,211,22,111,211,22,211,221,111,11,211,111,2*211,   
0951      &321,130,310,221,111,211,111,130,310,321,2*311,321,311,323,313,    
0952      &323,313,321,3*311,-13,3*211,12,14,311,2*321,311,321,313,323,313,  
0953      &323,311,4*321,211,111,3*22,111,321,130,-213,113,213,211,22,111,   
0954      &11,13,211,321,130,310,221,211,111,11*-11,11*-13,-311,-313,-311,   
0955      &-313,-20313,2*-311,-313,-311,-313,2*111,2*221,2*331,2*113,2*223,  
0956      &2*333,-311,-313,2*-321,211,-311,-321,333,-311,-313,-321,211,      
0957      &2*-321,2*-311,-321,211,113,421,2*411,421,411,423,413,423,413,421, 
0958      &411,8*-11,8*-13,-321,-323,-321,-323,-311,2*-313,-311,-313,2*-311, 
0959      &-321,-10323,-321,-323,-321,-311,2*-313,211,111,333,3*-321,-311,   
0960      &-313,-321,-313,310,333,211,2*-321,-311,-313,-311,211,-321,3*-311, 
0961      &211,113,321,2*421,411,421,413,423,413,423,411,421,-15,5*-11,      
0962      &5*-13,221,331,333,221,331,333,10221,211,213,211,213,321,323,321,  
0963      &323,2212,221,331,333,221,2*2,2*431,421,411,423,413,82,11,13,82,   
0964      &443,82,6*12,6*14,2*16,3*-411,3*-413,2*-411,2*-413,2*441,2*443,    
0965      &2*20443,2*2,2*4,2,4,511,521,511,523,513,523,513,521,511,6*12,     
0966      &6*14,2*16,3*-421,3*-423,2*-421,2*-423,2*441,2*443,2*20443,2*2,    
0967      &2*4,2,4,521,511,521,513,523,513,523,511,521,6*12,6*14,2*16,       
0968      &3*-431,3*-433,2*-431,2*-433,3*441,3*443,3*20443,2*2,2*4,2,4,531/  
0969       DATA (KFDP(I,1),I= 993,1402)/521,511,523,513,16,2*4,2*12,2*14,    
0970      &2*16,4*2,4*4,2*-11,2*-13,2*-1,2*-3,2*-11,2*-13,2*-1,541,511,521,  
0971      &513,523,21,11,13,15,1,2,3,4,21,22,553,21,2112,2212,2*2112,2212,   
0972      &2112,2*2212,2112,-12,3122,3212,3112,2212,2*2112,-12,2*3122,3222,  
0973      &3112,2212,2112,2212,3122,3222,3212,3122,3112,-12,-14,-12,3322,    
0974      &3312,2*3122,3212,3322,3312,3122,3322,3312,-12,2*4122,7*-11,7*-13, 
0975      &2*2224,2*2212,2*2214,2*3122,2*3212,2*3214,5*3222,4*3224,2*3322,   
0976      &3324,2*2224,7*2212,5*2214,2*2112,2*2114,2*3122,2*3212,2*3214,     
0977      &2*3222,2*3224,4*2,3,2*2,1,2*2,-11,-13,2*2,4*4122,-11,-13,2*2,     
0978      &3*4132,3*4232,-11,-13,2*2,4332,-11,-13,2*2,-11,-13,2*2,-11,-13,   
0979      &2*2,-11,-13,2*2,-11,-13,2*2,-11,-13,2*2,-11,-13,2*2,2*5122,-12,   
0980      &-14,-16,5*4122,441,443,20443,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,    
0981      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,4*5122,-12,-14,-16,2*-2,   
0982      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,2*5132,2*5232,-12,-14,-16, 
0983      &2*-2,2*-4,-2,-4,5332,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,     
0984      &2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,     
0985      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,  
0986      &-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,   
0987      &-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,  
0988      &2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2/     
0989       DATA (KFDP(I,1),I=1403,1713)/2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2, 
0990      &-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,   
0991      &-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,221,223,221,  
0992      &223,211,111,321,130,310,213,113,-213,321,311,321,311,323,313,     
0993      &2*311,321,311,321,313,323,321,211,111,321,130,310,2*211,313,-313, 
0994      &323,-323,421,411,423,413,411,421,413,423,411,421,423,413,443,     
0995      &2*82,521,511,523,513,511,521,513,523,521,511,523,513,511,521,513, 
0996      &523,553,2*21,213,-213,113,213,10211,10111,-10211,2*221,213,2*113, 
0997      &-213,2*321,2*311,113,323,2*313,323,313,-313,323,-323,423,2*413,   
0998      &2*423,413,443,82,523,2*513,2*523,2*513,523,553,21,11,13,82,4*443, 
0999      &10441,20443,445,441,11,13,15,1,2,3,4,21,22,2*553,10551,20553,555, 
1000      &1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,        
1001      &1000002,2000002,1000002,2000002,1000021,3*-12,3*-14,3*-16,12,11,  
1002      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,   
1003      &1000039,1000024,1000037,1000022,1000023,1000025,1000035,1000001,  
1004      &2000001,1000001,2000001,1000021,3*-11,3*-13,3*-15,2*-1,-3,        
1005      &1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,        
1006      &1000004,2000004,1000004,2000004,1000021,3*-12,3*-14,3*-16,12,11,  
1007      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,   
1008      &1000039,1000024,1000037,1000022,1000023,1000025,1000035,1000003/  
1009       DATA (KFDP(I,1),I=1714,1984)/2000003,1000003,2000003,1000021,     
1010      &3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,-1000037,1000022,      
1011      &1000023,1000025,1000035,1000006,2000006,1000006,2000006,1000021,  
1012      &3*-12,3*-14,3*-16,12,11,12,11,12,11,14,13,14,13,14,13,16,15,16,   
1013      &15,16,15,2*-2,2*-4,2*-6,1000039,1000024,1000037,1000022,1000023,  
1014      &1000025,1000035,1000005,2000005,1000005,2000005,1000021,1000022,  
1015      &1000016,-1000015,3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,      
1016      &-1000037,1000022,1000023,1000025,1000035,1000012,2000012,1000012, 
1017      &2*12,2*14,2*16,3*-14,3*-16,3*-2,3*-4,3*-6,1000039,1000024,        
1018      &1000037,1000022,1000023,1000025,1000035,1000011,2000011,1000011,  
1019      &2000011,3*-13,3*-15,3*-1,3*-3,3*-5,1000039,-1000024,-1000037,     
1020      &1000022,1000023,1000025,1000035,1000014,2000014,1000014,2000014,  
1021      &2*12,2*14,2*16,3*-12,3*-16,3*-2,3*-4,3*-6,1000039,1000024,        
1022      &1000037,1000022,1000023,1000025,1000035,1000013,2000013,1000013,  
1023      &2000013,3*-11,3*-15,3*-1,3*-3,3*-5,1000039,-1000024,-1000037,     
1024      &1000022,1000023,1000025,1000035,1000016,2000016,1000016,2000016,  
1025      &2*12,2*14,2*16,3*-12,3*-14,3*-2,3*-4,3*-6,1000039,1000024,        
1026      &1000037,1000022,1000023,1000025,1000035,1000015,2000015,1000015,  
1027      &2000015,3*-11,3*-13,3*-1,3*-3,3*-5,1000039,1000001,-1000001,      
1028      &2000001,-2000001,1000002,-1000002,2000002,-2000002,1000003/       
1029       DATA (KFDP(I,1),I=1985,2321)/-1000003,2000003,-2000003,1000004,   
1030      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
1031      &1000006,-1000006,2000006,-2000006,6*1000022,6*1000023,6*1000025,  
1032      &6*1000035,1000024,-1000024,1000024,-1000024,1000024,-1000024,     
1033      &1000037,-1000037,1000037,-1000037,1000037,-1000037,-12,12,-11,11, 
1034      &-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,   
1035      &-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,14,-13,13,   
1036      &-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,   
1037      &-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,16,-15,15,   
1038      &-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,   
1039      &-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,-2,2,-2,2,  
1040      &-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,5*1000039,4,1,-12,12,-12,12,-12,12, 
1041      &-12,12,-12,12,-12,12,-14,14,-14,14,-14,14,-14,14,-14,14,-14,14,   
1042      &-16,16,-16,16,-16,16,-16,16,-16,16,-16,16,-12,12,-11,11,-12,12,   
1043      &-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,   
1044      &-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,14,-13,13,-14,14,   
1045      &-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,   
1046      &-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,16,-15,15,-16,16,   
1047      &-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,   
1048      &-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,-2,2,-2,2,-4,4,-4/ 
1049       DATA (KFDP(I,1),I=2322,2573)/4,-4,4,-6,6,-6,6,-6,6,5*1000039,     
1050      &16*1000022,1000024,-1000024,1000024,-1000024,1000024,-1000024,    
1051      &1000024,-1000024,1000024,-1000024,1000024,-1000024,1000037,       
1052      &-1000037,1000037,-1000037,1000037,-1000037,1000037,-1000037,      
1053      &1000037,-1000037,1000037,-1000037,1000024,-1000024,1000037,       
1054      &-1000037,1000001,-1000001,2000001,-2000001,1000002,-1000002,      
1055      &2000002,-2000002,1000003,-1000003,2000003,-2000003,1000004,       
1056      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
1057      &1000006,-1000006,2000006,-2000006,1000011,-1000011,2000011,       
1058      &-2000011,1000012,-1000012,2000012,-2000012,1000013,-1000013,      
1059      &2000013,-2000013,1000014,-1000014,2000014,-2000014,1000015,       
1060      &-1000015,2000015,-2000015,1000016,-1000016,2000016,-2000016,      
1061      &5*1000021,-12,12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,   
1062      &14,-14,14,-14,14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,   
1063      &16,-16,16,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
1064      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,   
1065      &12,-11,11,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
1066      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,   
1067      &14,-13,13,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
1068      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16/   
1069       DATA (KFDP(I,1),I=2574,2892)/16,-15,15,-2,2,-2,2,-2,2,-4,4,-4,4,  
1070      &-4,4,-6,6,-6,6,-6,6,2*1000039,6*1000022,6*1000023,6*1000025,      
1071      &6*1000035,1000022,1000023,1000025,1000035,1000002,2000002,        
1072      &-1000001,-2000001,1000004,2000004,-1000003,-2000003,1000006,      
1073      &2000006,-1000005,-2000005,1000012,2000012,-1000011,-2000011,      
1074      &1000014,2000014,-1000013,-2000013,1000016,2000016,-1000015,       
1075      &-2000015,2*1000021,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,   
1076      &-12,12,-11,-12,12,-11,-14,-13,-14,-13,-14,-13,-14,14,-13,-14,14,  
1077      &-13,-14,14,-13,-16,-15,-16,-15,-16,-15,-16,-15,-16,-15,-16,-15,   
1078      &-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12, 
1079      &-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-14,2*-13,14, 
1080      &-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14, 
1081      &-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-16,2*-15,16,-16,2*-15,16, 
1082      &-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16, 
1083      &-16,2*-15,16,-16,2*-15,16,2,-1,2,-1,2*2,-1,2,-1,3*2,-1,2*4,-3,    
1084      &3*4,-3,2*6,5*1000039,16*1000022,16*1000023,1000024,-1000024,      
1085      &1000024,-1000024,1000024,-1000024,1000024,-1000024,1000024,       
1086      &-1000024,1000024,-1000024,1000037,-1000037,1000037,-1000037,      
1087      &1000037,-1000037,1000037,-1000037,1000037,-1000037,1000037,       
1088      &-1000037,1000024,-1000024,1000037,-1000037,1000001,-1000001/      
1089       DATA (KFDP(I,1),I=2893,3182)/2000001,-2000001,1000002,-1000002,   
1090      &2000002,-2000002,1000003,-1000003,2000003,-2000003,1000004,       
1091      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
1092      &1000006,-1000006,2000006,-2000006,1000011,-1000011,2000011,       
1093      &-2000011,1000012,-1000012,2000012,-2000012,1000013,-1000013,      
1094      &2000013,-2000013,1000014,-1000014,2000014,-2000014,1000015,       
1095      &-1000015,2000015,-2000015,1000016,-1000016,2000016,-2000016,      
1096      &5*1000021,-12,12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,   
1097      &14,-14,14,-14,14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,   
1098      &16,-16,16,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
1099      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,   
1100      &12,-11,11,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
1101      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,   
1102      &14,-13,13,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
1103      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,   
1104      &16,-15,15,-2,2,-2,2,-2,2,-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,5*1000039, 
1105      &16*1000022,16*1000023,16*1000025,1000024,-1000024,1000024,        
1106      &-1000024,1000024,-1000024,1000024,-1000024,1000024,-1000024,      
1107      &1000024,-1000024,1000037,-1000037,1000037,-1000037,1000037,       
1108      &-1000037,1000037,-1000037,1000037,-1000037,1000037,-1000037/      
1109       DATA (KFDP(I,1),I=3183,3459)/1000024,-1000024,1000037,-1000037,   
1110      &1000001,-1000001,2000001,-2000001,1000002,-1000002,2000002,       
1111      &-2000002,1000003,-1000003,2000003,-2000003,1000004,-1000004,      
1112      &2000004,-2000004,1000005,-1000005,2000005,-2000005,1000006,       
1113      &-1000006,2000006,-2000006,1000011,-1000011,2000011,-2000011,      
1114      &1000012,-1000012,2000012,-2000012,1000013,-1000013,2000013,       
1115      &-2000013,1000014,-1000014,2000014,-2000014,1000015,-1000015,      
1116      &2000015,-2000015,1000016,-1000016,2000016,-2000016,5*1000021,-12, 
1117      &12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,14,-14,14,-14,   
1118      &14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,16,-16,16,-12,   
1119      &12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
1120      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,   
1121      &14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
1122      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,   
1123      &16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
1124      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,  
1125      &-2,2,-2,2,-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,2*1000039,15*1000024,     
1126      &6*1000022,6*1000023,6*1000025,6*1000035,1000022,1000023,1000025,  
1127      &1000035,1000002,2000002,-1000001,-2000001,1000004,2000004,        
1128      &-1000003,-2000003,1000006,2000006,-1000005,-2000005,1000012/      
1129       DATA (KFDP(I,1),I=3460,3782)/2000012,-1000011,-2000011,1000014,   
1130      &2000014,-1000013,-2000013,1000016,2000016,-1000015,-2000015,      
1131      &2*1000021,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11, 
1132      &-12,12,-11,-14,14,-13,-14,14,-13,-14,14,-13,-14,14,-13,-14,14,    
1133      &-13,-14,14,-13,-16,16,-15,-16,16,-15,-16,16,-15,-16,16,-15,-16,   
1134      &16,-15,-16,16,-15,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,     
1135      &2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12, 
1136      &2*-11,12,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14, 
1137      &2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-16, 
1138      &2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16, 
1139      &2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,2,-1,2,-1,2*2,-1, 
1140      &2,-1,3*2,-1,2*4,-3,3*4,-3,2*6,1000039,-1000024,-1000037,1000022,  
1141      &1000023,1000025,1000035,4*1000001,1000002,2000002,1000002,        
1142      &2000002,1000021,3*-12,3*-14,3*-16,12,11,12,11,12,11,14,13,14,13,  
1143      &14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,1000039,1000024,1000037,   
1144      &1000022,1000023,1000025,1000035,4*1000002,1000001,2000001,        
1145      &1000001,2000001,1000021,3*-11,3*-13,3*-15,2*-1,-3,1000039,        
1146      &-1000024,-1000037,1000022,1000023,1000025,1000035,4*1000003,      
1147      &1000004,2000004,1000004,2000004,1000021,3*-12,3*-14,3*-16,12,11,  
1148      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6/   
1149       DATA (KFDP(I,1),I=3783,4156)/1000039,1000024,1000037,1000022,     
1150      &1000023,1000025,1000035,4*1000004,1000003,2000003,1000003,        
1151      &2000003,1000021,3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,       
1152      &-1000037,1000022,1000023,1000025,1000035,4*1000005,1000006,       
1153      &2000006,1000006,2000006,1000021,3*-12,3*-14,3*-16,12,11,12,11,12, 
1154      &11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,1000039,    
1155      &1000024,1000037,1000022,1000023,1000025,1000035,4*1000006,        
1156      &1000005,2000005,1000005,2000005,1000021,3*-11,3*-13,3*-15,2*-1,   
1157      &-3,1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,     
1158      &4*1000011,1000012,2000012,1000012,2000012,2*12,2*14,2*16,3*-14,   
1159      &3*-16,3*-2,3*-4,3*-6,1000039,-1000024,-1000037,1000022,1000023,   
1160      &1000025,1000035,4*1000013,1000014,2000014,1000014,2000014,2*12,   
1161      &2*14,2*16,3*-12,3*-16,3*-2,3*-4,3*-6,1000039,-1000024,-1000037,   
1162      &1000022,1000023,1000025,1000035,4*1000015,1000016,2000016,        
1163      &1000016,2000016,2*12,2*14,2*16,3*-12,3*-14,3*-2,3*-4,3*-6,3,4,5,  
1164      &6,11,13,15,21,2*4,2,4,24,-11,-13,-15,3,4,5,6,11,13,15,21,5,6,21,  
1165      &1,2,3,4,5,6,1,2,3,4,5,6,21,1,2,3,4,5,6,21,1,2,3,4,5,6,21,1,2,3,4, 
1166      &5,6,1,2,3,4,5,6,1,2,3,4,5,6,21,3100111,3200111,21,22,23,-24,21,   
1167      &22,23,24,22,23,-24,23,24,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18, 
1168      &21,22,23,24,9*11,9*-11,11,-11,11,-11,9*13,9*-13,13,-13,13,-13,
1169      &9*15/     
1170       DATA (KFDP(I,1),I=4157,8000)/9*-15,15,-15,15,-15,1,2,3,4,5,6,11,
1171      &12,9900012,13,14,9900014,15,16,9900016,3*-1,3*-3,3*-5,-11,-13,-15,   
1172      &3*-11,2*-13,-15,24,3*-11,2*-13,-15,9900024,3*443,3*553,2*24,      
1173      &2*3000211,2*22,2*23,22,23,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,   
1174      &18,2*24,3*3000211,2*24,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,22,23, 
1175      &22,23,24,3000211,24,3000211,22,23,1,2,3,4,5,6,7,8,11,12,13,14,15, 
1176      &16,17,18,2*24,-24,23,2*22,24,-24,2*23,1,2,3,4,5,6,7,8,11,12,13,   
1177      &14,15,16,17,18,2*22,23,2*24,23,22,2*24,23,4*-1,4*-3,4*-5,4*-7,    
1178      &-11,-13,-15,-17,
1179      &649*0,
1180 C...UED
1181      &5100023,5100022,5100023,5100022,5100023,5100022,
1182      &5100023,5100022,5100023,5100022,5100023,5100022, 
1183      &5100023,-5100024,5100022,5100023,5100024,5100022,
1184      &5100023,-5100024,5100022,5100023,5100024,5100022,
1185      &5100023,-5100024,5100022,5100023,5100024,5100022, 
1186      &9*5100022, 
1187      &6100001,6100002,6100003,6100004,6100005,6100006,
1188      &5100001,5100002,5100003,5100004,5100005,5100006,
1189      &-6100001,-6100002,-6100003,-6100004,-6100005,-6100006,
1190      &-5100001,-5100002,-5100003,-5100004,-5100005,-5100006, 
1191      &39, 
1192      &6100011,6100013,6100015,
1193      &5100011,5100013,5100015,
1194      %5100012,5100014,5100016,
1195      &-6100011,-6100013,-6100015,
1196      &-5100011,-5100013,-5100015,
1197      %-5100012,-5100014,-5100016,
1198      &-5100011,-5100013,-5100015,
1199      &5100012,5100014,5100016,
1200      &2912*0/
1201       DATA (KFDP(I,2),I=   1, 339)/3*1,2,4,6,8,1,3*2,1,3,5,7,2,3*3,2,4, 
1202      &6,8,3,3*4,1,3,5,7,4,3*5,2,4,6,8,5,3*6,1,3,5,7,6,5,6*1000006,3*7,  
1203      &2,4,6,8,7,4,6,3*8,1,3,5,7,8,5,7,2*11,12,11,12,2*11,2*13,14,13,14, 
1204      &13,11,13,-211,-213,-211,-213,-211,-213,-211,-213,2*-211,-321,     
1205      &-323,-321,2*-323,3*-321,4*-211,-213,-211,-213,-211,-213,-211,     
1206      &-213,-211,-213,3*-211,-213,4*-211,-323,-321,2*-211,2*-321,3*-211, 
1207      &2*15,16,15,16,15,2*17,18,17,2*18,2*17,-1,-2,-3,-4,-5,-6,-7,-8,21, 
1208      &-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,-1,-2,-3,-4,-5,-6,-7,-8,  
1209      &-11,-12,-13,-14,-15,-16,-17,-18,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,  
1210      &12,14,16,18,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,   
1211      &-24,2*1000022,1000023,1000022,1000023,1000025,1000022,1000023,    
1212      &1000025,1000035,-1000024,-1000037,-1000024,-1000037,-1000001,     
1213      &2*-2000001,2000001,-1000002,2*-2000002,2000002,-1000003,          
1214      &2*-2000003,2000003,-1000004,2*-2000004,2000004,-1000005,          
1215      &2*-2000005,2000005,-1000006,2*-2000006,2000006,-1000011,          
1216      &2*-2000011,2000011,-1000012,2*-2000012,2000012,-1000013,          
1217      &2*-2000013,2000013,-1000014,2*-2000014,2000014,-1000015,          
1218      &2*-2000015,2000015,-1000016,2*-2000016,2000016,-1,-2,-3,-4,-5,-6, 
1219      &-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24,-37,22,25,2*36,2,4,6,8, 
1220      &2,4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,23,22,25,-1,-2,-3,-4,-5,-6/   
1221       DATA (KFDP(I,2),I= 340, 533)/-7,-8,-11,-13,-15,-17,21,22,2*23,    
1222      &-24,2*25,-37,-24,3*36,2*1000022,1000023,1000022,1000023,1000025,  
1223      &1000022,1000023,1000025,1000035,-1000024,-1000037,-1000024,       
1224      &-1000037,-1000001,2*-2000001,2000001,-1000002,2*-2000002,2000002, 
1225      &-1000003,2*-2000003,2000003,-1000004,2*-2000004,2000004,-1000005, 
1226      &2*-2000005,2000005,-1000006,2*-2000006,2000006,-1000011,          
1227      &2*-2000011,2000011,-1000012,2*-2000012,2000012,-1000013,          
1228      &2*-2000013,2000013,-1000014,2*-2000014,2000014,-1000015,          
1229      &2*-2000015,2000015,-1000016,2*-2000016,2000016,-1,-2,-3,-4,-5,-6, 
1230      &-7,-8,-11,-13,-15,-17,21,22,2*23,-24,2*25,-37,-24,2*1000022,      
1231      &1000023,1000022,1000023,1000025,1000022,1000023,1000025,1000035,  
1232      &-1000024,-1000037,-1000024,-1000037,-1000001,2*-2000001,2000001,  
1233      &-1000002,2*-2000002,2000002,-1000003,2*-2000003,2000003,-1000004, 
1234      &2*-2000004,2000004,-1000005,2*-2000005,2000005,-1000006,          
1235      &2*-2000006,2000006,-1000011,2*-2000011,2000011,-1000012,          
1236      &2*-2000012,2000012,-1000013,2*-2000013,2000013,-1000014,          
1237      &2*-2000014,2000014,-1000015,2*-2000015,2000015,-1000016,          
1238      &2*-2000016,2000016,2,4,6,8,12,14,16,18,25,1000024,1000037,        
1239      &1000024,1000037,1000024,1000037,1000024,1000037,2*-1000005,       
1240      &2*-2000005,1000002,1000004,1000012,1000014,2*1000016,-3,-4,-5,-6/ 
1241       DATA (KFDP(I,2),I= 534, 938)/-7,-8,-13,-15,-17,11,-82,12,14,-1,   
1242      &-3,11,13,15,1,4,3,4,1,3,22,11,-211,2*22,-13,-11,-211,211,111,211, 
1243      &-321,130,310,22,2*111,-211,11,-11,13,-13,-211,111,22,14,12,111,   
1244      &22,111,3*211,-311,22,211,22,111,-211,211,11,-211,13,22,-211,111,  
1245      &-211,22,111,-11,-211,111,2*-211,-321,130,310,221,111,-211,111,    
1246      &2*0,-211,111,22,-211,111,-211,111,-211,211,-213,113,223,221,14,   
1247      &111,211,111,-11,-13,211,111,22,211,111,211,111,2*211,213,113,223, 
1248      &221,22,-211,111,113,223,22,111,-321,310,211,111,2*-211,221,22,    
1249      &-11,-13,-211,-321,130,310,221,-211,111,11*12,11*14,2*211,2*213,   
1250      &211,20213,2*321,2*323,211,213,211,213,211,213,211,213,211,213,    
1251      &211,213,3*211,213,211,2*321,8*211,2*113,3*211,111,22,211,111,211, 
1252      &111,4*211,8*12,8*14,2*211,2*213,2*111,221,2*113,223,333,20213,    
1253      &211,2*321,323,2*311,313,-211,111,113,2*211,321,2*211,311,321,310, 
1254      &211,-211,4*211,321,4*211,113,2*211,-321,111,22,-211,111,-211,111, 
1255      &-211,211,-211,211,16,5*12,5*14,3*211,3*213,211,2*111,2*113,       
1256      &2*-311,2*-313,-2112,3*321,323,2*-1,22,111,321,311,321,311,-82,    
1257      &-11,-13,-82,22,-82,6*-11,6*-13,2*-15,211,213,20213,211,213,20213, 
1258      &431,433,431,433,311,313,311,313,311,313,-1,-4,-3,-4,-1,-3,22,     
1259      &-211,111,-211,111,-211,211,-211,211,6*-11,6*-13,2*-15,211,213,    
1260      &20213,211,213,20213,431,433,431,433,321,323,321,323,321,323,-1/   
1261       DATA (KFDP(I,2),I= 939,1352)/-4,-3,-4,-1,-3,22,211,111,211,111,   
1262      &4*211,6*-11,6*-13,2*-15,211,213,20213,211,213,20213,431,433,431,  
1263      &433,221,331,333,221,331,333,221,331,333,-1,-4,-3,-4,-1,-3,22,     
1264      &-321,-311,-321,-311,-15,-3,-1,2*-11,2*-13,2*-15,-1,-4,-3,-4,-3,   
1265      &-4,-1,-4,2*12,2*14,2,3,2,3,2*12,2*14,2,1,22,411,421,411,421,21,   
1266      &-11,-13,-15,-1,-2,-3,-4,2*21,22,21,2*-211,111,22,111,211,22,211,  
1267      &-211,11,2*-211,111,-211,111,22,11,22,111,-211,211,111,211,22,211, 
1268      &111,211,-211,22,11,13,11,-211,2*111,2*22,111,211,-321,-211,111,   
1269      &11,2*-211,7*12,7*14,-321,-323,-311,-313,-311,-313,211,213,211,    
1270      &213,211,213,111,221,331,113,223,111,221,113,223,321,323,321,-211, 
1271      &-213,111,221,331,113,223,333,10221,111,221,331,113,223,211,213,   
1272      &211,213,321,323,321,323,321,323,311,313,311,313,2*-1,-3,-1,2203,  
1273      &3201,3203,2203,2101,2103,12,14,-1,-3,2*111,2*211,12,14,-1,-3,22,  
1274      &111,2*22,111,22,12,14,-1,-3,22,12,14,-1,-3,12,14,-1,-3,12,14,-1,  
1275      &-3,12,14,-1,-3,12,14,-1,-3,12,14,-1,-3,12,14,-1,-3,2*-211,11,13,  
1276      &15,-211,-213,-20213,-431,-433,3*3122,1,4,3,4,1,3,11,13,15,1,4,3,  
1277      &4,1,3,11,13,15,1,4,3,4,1,3,2*111,2*211,11,13,15,1,4,3,4,1,3,11,   
1278      &13,15,1,4,3,4,1,3,4*22,11,13,15,1,4,3,4,1,3,22,11,13,15,1,4,3,4,  
1279      &1,3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1, 
1280      &3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1,3/ 
1281       DATA (KFDP(I,2),I=1353,1815)/11,13,15,1,4,3,4,1,3,11,13,15,1,4,3, 
1282      &4,1,3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4, 
1283      &1,3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1, 
1284      &3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1,3,11,13,15,1,4,3,4,1,3, 
1285      &2*111,2*211,-211,111,-321,130,310,-211,111,211,-211,111,-213,113, 
1286      &-211,111,223,211,111,213,113,211,111,223,-211,111,-321,130,310,   
1287      &2*-211,-311,311,-321,321,211,111,211,111,-211,111,-211,111,311,   
1288      &2*321,311,22,2*-82,-211,111,-211,111,211,111,211,111,-321,-311,   
1289      &-321,-311,411,421,411,421,22,2*21,-211,2*211,111,-211,111,2*211,  
1290      &111,-211,211,111,211,-321,2*-311,-321,22,-211,111,211,111,-311,   
1291      &311,-321,321,211,111,-211,111,321,311,22,-82,-211,111,211,111,    
1292      &-321,-311,411,421,22,21,-11,-13,-82,211,111,221,111,4*22,-11,-13, 
1293      &-15,-1,-2,-3,-4,2*21,211,111,3*22,1,2*2,4*1,2*-24,2*-37,2*1,3,5,  
1294      &1,3,5,1,3,5,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,-3,-5,-3,-5,-3,   
1295      &-5,2,2*1,4*2,2*24,2*37,2,1,3,5,1,3,5,1,3,5,-3,2*-5,3,2*4,4*3,     
1296      &2*-24,2*-37,3,1,3,5,1,3,5,1,3,5,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,  
1297      &5,6,-1,-5,-1,-5,-1,-5,4,2*3,4*4,2*24,2*37,4,1,3,5,1,3,5,1,3,5,-3, 
1298      &2*-5,5,2*6,4*5,2*-24,2*-37,5,1,3,5,1,3,5,1,3,5,1,2,3,4,5,6,1,2,3, 
1299      &4,5,6,1,2,3,4,5,6,-1,-3,-1,-3,-1,-3,6,2*5,4*6,2*24,2*37,6,4,-15,  
1300      &16,1,3,5,1,3,5,1,3,5,-3,2*-5,11,2*12,4*11,2*-24,-37,13,15,11,15/  
1301       DATA (KFDP(I,2),I=1816,2317)/11,13,11,13,15,11,13,15,1,3,5,1,3,5, 
1302      &1,3,5,12,2*11,4*12,2*24,2*37,11,13,15,11,13,15,1,3,5,1,3,5,1,3,5, 
1303      &13,2*14,4*13,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,13,15,1,3, 
1304      &5,1,3,5,1,3,5,14,2*13,4*14,2*24,2*37,11,13,15,11,13,15,1,3,5,1,3, 
1305      &5,1,3,5,15,2*16,4*15,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,   
1306      &13,15,1,3,5,1,3,5,1,3,5,16,2*15,4*16,2*24,2*37,11,13,15,11,13,15, 
1307      &1,3,5,1,3,5,1,3,5,21,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,-4,4,-5,  
1308      &5,-5,5,-6,6,-6,6,1,3,5,2,4,6,1,3,5,2,4,6,1,3,5,2,4,6,1,3,5,2,4,6, 
1309      &1,-1,3,-3,5,-5,1,-1,3,-3,5,-5,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3, 
1310      &-4,4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-2,2, 
1311      &-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5, 
1312      &-6,6,-5,5,-6,6,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,3,-4,4, 
1313      &-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-1,1,-3,3,-1,1,-1,1, 
1314      &-3,3,-1,1,-1,1,-3,3,22,23,25,35,36,-1,-3,-13,13,-13,13,-13,13,    
1315      &-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,   
1316      &-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1, 
1317      &1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5,-6, 
1318      &6,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4,4,-5, 
1319      &5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4, 
1320      &4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-1,1,-3/ 
1321       DATA (KFDP(I,2),I=2318,2770)/3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,22,  
1322      &23,25,35,36,22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,-24,24,11, 
1323      &-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,-13,15,-15,1,-1,3,   
1324      &-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,-4,4,-5,5,-5, 
1325      &5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,-13,13,-14,14,-14, 
1326      &14,-15,15,-15,15,-16,16,-16,16,1,3,5,2,4,-13,13,-13,13,-13,13,    
1327      &-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,   
1328      &-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1, 
1329      &1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5,-6, 
1330      &6,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4,4,-5, 
1331      &5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4, 
1332      &4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-1,1,-3, 
1333      &3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,24,37,24,-11,-13,-15,-1,-3,24,    
1334      &-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,4*37, 
1335      &2*-1,2*2,2*-3,2*4,2*-5,2*6,2*-11,2*12,2*-13,2*14,2*-15,2*16,-1,   
1336      &-3,-13,14,2*-13,14,2*-13,14,-13,-15,16,2*-15,16,2*-15,16,-15,     
1337      &6*-11,-15,16,2*-15,16,2*-15,16,-15,6*-11,6*-13,-1,-2,-1,2,-1,-2,  
1338      &-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,   
1339      &-6,-5,6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,   
1340      &-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,-1,-2,-1/  
1341       DATA (KFDP(I,2),I=2771,3221)/2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,  
1342      &-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,2,-1,2,-1, 
1343      &2*4,-3,4,-3,3*6,-5,2*4,-3,3*6,-5,2*6,22,23,25,35,36,22,23,11,13,  
1344      &15,12,14,16,1,3,5,2,4,25,35,36,22,23,11,13,15,12,14,16,1,3,5,2,4, 
1345      &25,35,36,-24,24,11,-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,  
1346      &-13,15,-15,1,-1,3,-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3, 
1347      &-4,4,-4,4,-5,5,-5,5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13, 
1348      &-13,13,-14,14,-14,14,-15,15,-15,15,-16,16,-16,16,1,3,5,2,4,-13,   
1349      &13,-13,13,-13,13,-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,   
1350      &15,-15,15,-15,15,-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,  
1351      &-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6, 
1352      &-5,5,-6,6,-5,5,-6,6,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,3, 
1353      &-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-2,2,-1,1,-2,2, 
1354      &-1,1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5, 
1355      &-6,6,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,22,23,25,35,36, 
1356      &22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,22,23,11,13,15,12,14,  
1357      &16,1,3,5,2,4,25,35,36,22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36, 
1358      &-24,24,11,-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,-13,15,    
1359      &-15,1,-1,3,-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,   
1360      &-4,4,-5,5,-5,5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,-13/  
1361       DATA (KFDP(I,2),I=3222,3669)/13,-14,14,-14,14,-15,15,-15,15,-16,  
1362      &16,-16,16,1,3,5,2,4,-13,13,-13,13,-13,13,-15,15,-15,15,-15,15,    
1363      &-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,   
1364      &-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,  
1365      &3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-2,2,-1,1,-2, 
1366      &2,-1,1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4,4,-5,5,-6,6,-5,5,-6,6,-5, 
1367      &5,-6,6,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,3,-4,4,-3,3,-4, 
1368      &4,-5,5,-6,6,-5,5,-6,6,-5,5,-6,6,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,-1, 
1369      &1,-1,1,-3,3,24,37,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,24,-11, 
1370      &-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,   
1371      &-13,-15,-1,-3,4*37,2*-1,2*2,2*-3,2*4,2*-5,2*6,2*-11,2*12,2*-13,   
1372      &2*14,2*-15,2*16,-1,-3,-13,14,2*-13,14,2*-13,14,-13,-15,16,2*-15,  
1373      &16,2*-15,16,-15,-11,12,2*-11,12,2*-11,12,-11,-15,16,2*-15,16,     
1374      &2*-15,16,-15,-11,12,2*-11,12,2*-11,12,-11,-13,14,2*-13,14,2*-13,  
1375      &14,-13,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3, 
1376      &-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,   
1377      &-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,  
1378      &6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,   
1379      &-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,2,-1,2,-1,2*4,   
1380      &-3,4,-3,3*6,-5,2*4,-3,3*6,-5,2*6,1,2*2,4*1,23,25,35,36,2*-24/     
1381       DATA (KFDP(I,2),I=3670,4183)/2*-37,2*1,3,5,1,3,5,1,3,5,1,2,3,4,5, 
1382      &6,1,2,3,4,5,6,1,2,3,4,5,6,-3,-5,-3,-5,-3,-5,2,2*1,4*2,23,25,35,   
1383      &36,2*24,2*37,2,1,3,5,1,3,5,1,3,5,-3,2*-5,3,2*4,4*3,23,25,35,36,   
1384      &2*-24,2*-37,3,1,3,5,1,3,5,1,3,5,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,  
1385      &5,6,-1,-5,-1,-5,-1,-5,4,2*3,4*4,23,25,35,36,2*24,2*37,4,1,3,5,1,  
1386      &3,5,1,3,5,-3,2*-5,5,2*6,4*5,23,25,35,36,2*-24,2*-37,5,1,3,5,1,3,  
1387      &5,1,3,5,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,-1,-3,-1,-3,-1,-3,6,  
1388      &2*5,4*6,23,25,35,36,2*24,2*37,6,1,3,5,1,3,5,1,3,5,-3,2*-5,11,     
1389      &2*12,4*11,23,25,35,36,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,  
1390      &13,15,1,3,5,1,3,5,1,3,5,13,2*14,4*13,23,25,35,36,2*-24,2*-37,13,  
1391      &15,11,15,11,13,11,13,15,11,13,15,1,3,5,1,3,5,1,3,5,15,2*16,4*15,  
1392      &23,25,35,36,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,13,15,1,3,  
1393      &5,1,3,5,1,3,5,-3,-4,-5,-6,-11,-13,-15,21,-1,-3,2*-5,5,12,14,16,   
1394      &-3,-4,-5,-6,-11,-13,-15,21,-5,-6,21,-1,-2,-3,-4,-5,-6,-1,-2,-3,   
1395      &-4,-5,-6,21,-1,-2,-3,-4,-5,-6,21,-1,-2,-3,-4,-5,-6,21,-1,-2,-3,   
1396      &-4,-5,-6,-1,-2,-3,-4,-5,-6,-1,-2,-3,-4,-5,-6,3*21,3*1,4*2,1,2*11, 
1397      &2*12,11,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,  
1398      &21,22,23,-24,3*-1,3*-3,3*-5,3*1,3*3,3*5,-13,13,-15,15,3*-1,3*-3,     
1399      &3*-5,3*1,3*3,3*5,-11,11,-15,15,3*-1,3*-3,3*-5,3*1,3*3,3*5,-11,11,     
1400      &-13,13,-1,-2,-3,-4,-5,-6,-11,-12,9900012,-13,-14,9900014,-15,-16/   
1401       DATA (KFDP(I,2),I=4184,8000)/9900016,2,4,6,2,4,6,2,4,6,9900012,   
1402      &9900014,9900016,-11,-13,-15,-13,2*-15,24,-11,-13,-15,-13,2*-15,   
1403      &9900024,6*21,-24,-3000211,-24,-3000211,3000111,3000221,3000111,   
1404      &3000221,2*23,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17, 
1405      &-18,23,3000111,23,3000111,22,3000221,22,2,4,6,8,2,4,6,8,2,4,6,8,  
1406      &2,4,6,8,12,14,16,18,2*3000111,2*3000221,-3000211,2*-24,-3000211,  
1407      &2*23,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24, 
1408      &-3000211,3000211,3000221,3000113,3000223,-3000213,3000213,        
1409      &3000113,3000223,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,  
1410      &-17,-18,24,3000211,24,3000111,3000221,3000211,3000213,3000113,    
1411      &3000223,3000213,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,      
1412      &649*0,
1413 C...UED     
1414      &1,1,2,2,3,3,4,4,5,5,6,6, 
1415      &1,2,1,2,1,2,3,4,3,4,3,4,5,6,5,6,5,6,
1416      &11,13,15,12,11,14,13,16,15, 
1417      &-1,-2,-3,-4,-5,-6,-1,-2,-3,-4,-5,-6,
1418      &1,2,3,4,5,6,1,2,3,4,5,6, 
1419      &22, 
1420      &-11,-13,-15,-11,-13,-15,-12,-14,-16,
1421      &11,13,15,11,13,15,12,14,16,
1422      &12,14,16,-11,-13,-15, 
1423      &2912*0/
1424       DATA (KFDP(I,3),I=   1,1021)/81*0,14,6*0,2*16,2*0,6*111,310,130,  
1425      &2*0,3*111,310,130,321,113,211,223,221,2*113,2*211,2*223,2*221,    
1426      &2*113,221,2*113,2*213,-213,113,2*111,310,130,310,130,2*310,130,   
1427      &402*0,4*3,4*4,1,4,3,2*2,0,-11,8*0,-211,5*0,2*111,211,-211,211,    
1428      &-211,10*0,111,4*0,2*111,-211,-11,11,-13,22,111,3*0,22,3*0,111,    
1429      &211,4*0,111,11*0,111,-211,6*0,-211,3*111,7*0,111,-211,5*0,2*221,  
1430      &3*0,111,5*0,111,11*0,-311,-313,-311,-321,-313,-323,111,221,331,   
1431      &113,223,-311,-313,-311,-321,-313,-323,111,221,331,113,223,22*0,   
1432      &111,113,2*211,-211,-311,211,111,3*211,-211,7*211,7*0,111,-211,    
1433      &111,-211,-321,-323,-311,-321,-313,-323,-211,-213,-321,-323,-311,  
1434      &-321,-313,-323,-211,-213,22*0,111,113,-311,2*-211,211,-211,310,   
1435      &-211,2*111,211,2*-211,-321,-211,2*211,-211,111,-211,2*211,6*0,    
1436      &111,-211,111,-211,0,221,331,333,321,311,221,331,333,321,311,20*0, 
1437      &3,13*0,-411,-413,-10413,-10411,-20413,-415,-411,-413,-10413,      
1438      &-10411,-20413,-415,-411,-413,16*0,-4,-1,-4,-3,2*-2,5*0,111,-211,  
1439      &111,-211,-421,-423,-10423,-10421,-20423,-425,-421,-423,-10423,    
1440      &-10421,-20423,-425,-421,-423,16*0,-4,-1,-4,-3,2*-2,5*0,111,-211,  
1441      &111,-211,-431,-433,-10433,-10431,-20433,-435,-431,-433,-10433,    
1442      &-10431,-20433,-435,-431,-433,19*0,-4,-1,-4,-3,2*-2,8*0,441,443,   
1443      &441,443,441,443,-4,-1,-4,-3,-4,-3,-4,-1,531,533,531,533,3,2,3,2/  
1444       DATA (KFDP(I,3),I=1022,2223)/511,513,511,513,1,2,13*0,2*21,11*0,  
1445      &2112,6*0,2212,12*0,2*3122,3212,10*0,3322,2*0,3122,3212,3214,2112, 
1446      &2114,2212,2112,3122,3212,3214,2112,2114,2212,2112,52*0,3*3,1,6*0, 
1447      &4*3,4*0,4*3,6*0,4*3,0,28*3,2*0,3*4122,8*0,4,1,4,3,2*2,4*4,1,4,3,  
1448      &2*2,4*4,1,4,3,2*2,4*0,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*0,4*4,1,4,3,  
1449      &2*2,0,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,    
1450      &4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,  
1451      &3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,    
1452      &4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,3,2*2,4*4,1,4,  
1453      &3,2*2,31*0,211,111,45*0,-211,2*111,-211,3*111,-211,111,211,30*0,  
1454      &-211,111,13*0,2*21,-211,111,199*0,2*5,210*0,-1,-3,-5,-2,-4,-6,-1, 
1455      &-3,-5,-2,-4,-6,-1,-3,-5,-2,-4,-6,-1,-3,-5,-2,-4,-6,-2,2,-4,4,-6,  
1456      &6,-2,2,-4,4,-6,6,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,  
1457      &-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5, 
1458      &-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5, 
1459      &-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1, 
1460      &-1,1,-1,3,-3,3,-3,5,-5,5,-5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,-3,3,   
1461      &-5,5,-5,5,5*0,11,12,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11, 
1462      &-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,   
1463      &-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3/ 
1464       DATA (KFDP(I,3),I=2224,2783)/-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,  
1465      &-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5, 
1466      &-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1, 
1467      &-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,-3,3,   
1468      &-5,5,-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,7*0,-11,-13,-15,-12,-14,  
1469      &-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,-2,2,-4,4,2*0,-12,12, 
1470      &-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,11,-11,13,-13,15,-15, 
1471      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
1472      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,  
1473      &-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5, 
1474      &-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1, 
1475      &-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1, 
1476      &-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,-3,3,-5,5,   
1477      &-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,3*0,12,14,16,2,4,0,12,14,16,2, 
1478      &4,0,12,14,16,2,4,0,12,14,16,2,4,28*0,2,4,12,-11,11,14,-13,13,16,  
1479      &-15,15,12,-11,11,14,-13,13,16,-15,15,12,11,14,13,16,15,12,-11,11, 
1480      &14,-13,13,16,-15,15,12,11,14,13,16,15,12,11,14,13,16,15,2*2,1,-1, 
1481      &2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,   
1482      &2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,   
1483      &2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1/   
1484       DATA (KFDP(I,3),I=2784,3354)/2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3, 
1485      &2*6,5,-5,3,-3,5,-5,1,3,-3,5,-5,1,3,5,-5,1,5,-5,1,3,5,-5,1,3,7*0,  
1486      &-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,-11,-13,-15,-12,-14,   
1487      &-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,-2,2,-4,4,2*0,-12,12, 
1488      &-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,11,-11,13,-13,15,-15, 
1489      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
1490      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,  
1491      &-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5, 
1492      &-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1, 
1493      &-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1, 
1494      &-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,-3,3,-5,5,   
1495      &-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,7*0,-11,-13,-15,-12,-14,-16,   
1496      &-1,-3,-5,-2,-4,5*0,-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,    
1497      &-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,  
1498      &-2,2,-4,4,2*0,-12,12,-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4, 
1499      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
1500      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1, 
1501      &-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1, 
1502      &-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3, 
1503      &-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3/ 
1504       DATA (KFDP(I,3),I=3355,8000)/-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,  
1505      &-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,-3,3,-5,5,-5,5,-3,3,-5,5,   
1506      &-5,5,-3,3,-5,5,-5,5,3*0,-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,   
1507      &4*0,12,14,16,2,4,0,12,14,16,2,4,0,12,14,16,2,4,0,12,14,16,2,4,    
1508      &28*0,2,4,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,    
1509      &-15,15,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,-15,  
1510      &15,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,-15,15,   
1511      &2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1,   
1512      &2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,   
1513      &2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,   
1514      &2*2,1,-1,2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3,2*6,5,-5,3,-3,5,-5,  
1515      &1,3,-3,5,-5,1,3,5,-5,1,5,-5,1,3,5,-5,1,3,351*0,-5,95*0,2,4,6,2,4, 
1516      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900014,2*9900016,2,4,6,2,4, 
1517      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900012,2*9900016,2,4,6,2,4, 
1518      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900012,2*9900014,3831*0/    
1519       DATA (KFDP(I,4),I=   1,8000)/94*0,4*111,6*0,111,2*0,-211,0,-211,  
1520      &3*0,111,2*-211,0,111,0,2*111,113,221,2*111,-213,-211,211,113,     
1521      &6*111,310,2*130,402*0,13*81,41*0,-11,10*0,111,-211,4*0,111,62*0,  
1522      &111,211,111,211,7*0,111,211,111,211,35*0,2*-211,2*111,211,111,    
1523      &-211,2*211,2*-211,13*0,-211,111,-211,111,4*0,-211,111,-211,111,   
1524      &34*0,111,-211,3*111,3*-211,2*111,3*-211,14*0,-321,-311,3*0,-321,  
1525      &-311,20*0,-3,43*0,6*1,39*0,6*2,42*0,6*3,14*0,8*4,4*0,4*-5,4*0,    
1526      &2*-5,67*0,-211,111,5*0,-211,111,52*0,2101,2103,2*2101,6*0,4*81,   
1527      &4*0,4*81,6*0,4*81,0,28*81,13*0,6*2101,18*81,4*0,18*81,4*0,9*81,0, 
1528      &162*81,31*0,-211,111,6516*0/                                      
1529       DATA (KFDP(I,5),I=   1,8000)/96*0,2*111,17*0,111,7*0,2*111,0,     
1530      &3*111,0,111,597*0,-211,2*111,-211,111,-211,111,65*0,111,-211,     
1531      &3*111,-211,111,7193*0/                                            
1532  
1533 C...PYDAT4, with particle names (character strings).
1534       DATA (CHAF(I,1),I=   1, 202)/'d','u','s','c','b','t','b''','t''', 
1535      &2*' ','e-','nu_e','mu-','nu_mu','tau-','nu_tau','tau''-',         
1536      &'nu''_tau',2*' ','g','gamma','Z0','W+','h0',6*' ','Z''0','Z"0',   
1537      &'W''+','H0','A0','H+',' ','Graviton',' ','R0','LQ_ue',38*' ',     
1538      &'specflav','rndmflav','phasespa','c-hadron','b-hadron',2*' ',     
1539      &'junction',' ','system','cluster','string','indep.','CMshower',   
1540      &'SPHEaxis','THRUaxis','CLUSjet','CELLjet','table',' ','reggeon',  
1541      &'pi0','rho0','a_20','K_L0','pi+','rho+','a_2+','eta','omega',     
1542      &'f_2','K_S0','K0','K*0','K*_20','K+','K*+','K*_2+','eta''','phi', 
1543      &'f''_2','D+','D*+','D*_2+','D0','D*0','D*_20','D_s+','D*_s+',     
1544      &'D*_2s+','eta_c','J/psi','chi_2c','B0','B*0','B*_20','B+','B*+',  
1545      &'B*_2+','B_s0','B*_s0','B*_2s0','B_c+','B*_c+','B*_2c+','eta_b',  
1546      &'Upsilon','chi_2b','pomeron','dd_1','Delta-','ud_0','ud_1','n0',  
1547      &'Delta0','uu_1','p+','Delta+','Delta++','sd_0','sd_1','Sigma-',   
1548      &'Sigma*-','Lambda0','su_0','su_1','Sigma0','Sigma*0','Sigma+',    
1549      &'Sigma*+','ss_1','Xi-','Xi*-','Xi0','Xi*0','Omega-','cd_0',       
1550      &'cd_1','Sigma_c0','Sigma*_c0','Lambda_c+','Xi_c0','cu_0','cu_1',  
1551      &'Sigma_c+','Sigma*_c+','Sigma_c++','Sigma*_c++','Xi_c+','cs_0',   
1552      &'cs_1','Xi''_c0','Xi*_c0','Xi''_c+','Xi*_c+','Omega_c0',          
1553      &'Omega*_c0','cc_1','Xi_cc+','Xi*_cc+','Xi_cc++','Xi*_cc++'/       
1554       DATA (CHAF(I,1),I= 203, 332)/'Omega_cc+','Omega*_cc+',            
1555      &'Omega*_ccc++','bd_0','bd_1','Sigma_b-','Sigma*_b-','Lambda_b0',  
1556      &'Xi_b-','Xi_bc0','bu_0','bu_1','Sigma_b0','Sigma*_b0','Sigma_b+', 
1557      &'Sigma*_b+','Xi_b0','Xi_bc+','bs_0','bs_1','Xi''_b-','Xi*_b-',    
1558      &'Xi''_b0','Xi*_b0','Omega_b-','Omega*_b-','Omega_bc0','bc_0',     
1559      &'bc_1','Xi''_bc0','Xi*_bc0','Xi''_bc+','Xi*_bc+','Omega''_bc0',   
1560      &'Omega*_bc0','Omega_bcc+','Omega*_bcc+','bb_1','Xi_bb-',          
1561      &'Xi*_bb-','Xi_bb0','Xi*_bb0','Omega_bb-','Omega*_bb-',            
1562      &'Omega_bbc0','Omega*_bbc0','Omega*_bbb-','a_00','b_10','a_0+',    
1563      &'b_1+','f_0','h_1','K*_00','K_10','K*_0+','K_1+','f''_0','h''_1', 
1564      &'D*_0+','D_1+','D*_00','D_10','D*_0s+','D_1s+','chi_0c','h_1c',   
1565      &'B*_00','B_10','B*_0+','B_1+','B*_0s0','B_1s0','B*_0c+','B_1c+',  
1566      &'chi_0b','h_1b','a_10','a_1+','f_1','K*_10','K*_1+','f''_1',      
1567      &'D*_1+','D*_10','D*_1s+','chi_1c','B*_10','B*_1+','B*_1s0',       
1568      &'B*_1c+','chi_1b','psi''','Upsilon''','~d_L','~u_L','~s_L',       
1569      &'~c_L','~b_1','~t_1','~e_L-','~nu_eL','~mu_L-','~nu_muL',         
1570      &'~tau_1-','~nu_tauL','~g','~chi_10','~chi_20','~chi_1+',          
1571      &'~chi_30','~chi_40','~chi_2+','~Gravitino','~d_R','~u_R','~s_R',  
1572      &'~c_R','~b_2','~t_2','~e_R-','~nu_eR','~mu_R-','~nu_muR',         
1573      &'~tau_2-','~nu_tauR','pi_tc0','pi_tc+','pi''_tc0','eta_tc0'/      
1574       DATA (CHAF(I,1),I= 333, 500)/'rho_tc0','rho_tc+','omega_tc',      
1575      &'V8_tc','pi_22_1_tc','pi_22_8_tc','rho_11_tc','rho_12_tc',        
1576      &'rho_21_tc','rho_22_tc','d*','u*','e*-','nu*_e0','Graviton*',     
1577      &'nu_Re','nu_Rmu','nu_Rtau','Z_R0','W_R+','H_L++','H_R++',         
1578      &'rho_diff0','pi_diffr+','omega_di','phi_diff','J/psi_di',         
1579      &'n_diffr0','p_diffr+','cc~[3S18]','cc~[1S08]','cc~[3P08]',        
1580      &'bb~[3S18]','bb~[1S08]','bb~[3P08]','a_tc0','a_tc+',
1581      &81*' ',
1582 C...UED    
1583      &'d*_S','u*_S','s*_S','c*_S','b*_S','t*_S',
1584      &'d*_D','u*_D','s*_D','c*_D','b*_D','t*_D',
1585      &'e*_S-','mu*_S-','tau*_S-',
1586      &'nu*_eD','e*_D-','nu*_muD','mu*_D-','nu*_tauD','tau*_D-',
1587      &'g*','gamma*','Z*0','W*+',25*' '/               
1588       DATA (CHAF(I,2),I=   1, 205)/'dbar','ubar','sbar','cbar','bbar',  
1589      &'tbar','b''bar','t''bar',2*' ','e+','nu_ebar','mu+','nu_mubar',   
1590      &'tau+','nu_taubar','tau''+','nu''_taubar',5*' ','W-',9*' ',       
1591      &'W''-',2*' ','H-',3*' ','Rbar0','LQ_uebar',39*' ','rndmflavbar',  
1592      &' ','c-hadronbar','b-hadronbar',20*' ','pi-','rho-','a_2-',4*' ', 
1593      &'Kbar0','K*bar0','K*_2bar0','K-','K*-','K*_2-',3*' ','D-','D*-',  
1594      &'D*_2-','Dbar0','D*bar0','D*_2bar0','D_s-','D*_s-','D*_2s-',      
1595      &3*' ','Bbar0','B*bar0','B*_2bar0','B-','B*-','B*_2-','B_sbar0',   
1596      &'B*_sbar0','B*_2sbar0','B_c-','B*_c-','B*_2c-',4*' ','dd_1bar',   
1597      &'Deltabar+','ud_0bar','ud_1bar','nbar0','Deltabar0','uu_1bar',    
1598      &'pbar-','Deltabar-','Deltabar--','sd_0bar','sd_1bar','Sigmabar+', 
1599      &'Sigma*bar+','Lambdabar0','su_0bar','su_1bar','Sigmabar0',        
1600      &'Sigma*bar0','Sigmabar-','Sigma*bar-','ss_1bar','Xibar+',         
1601      &'Xi*bar+','Xibar0','Xi*bar0','Omegabar+','cd_0bar','cd_1bar',     
1602      &'Sigma_cbar0','Sigma*_cbar0','Lambda_cbar-','Xi_cbar0','cu_0bar', 
1603      &'cu_1bar','Sigma_cbar-','Sigma*_cbar-','Sigma_cbar--',            
1604      &'Sigma*_cbar--','Xi_cbar-','cs_0bar','cs_1bar','Xi''_cbar0',      
1605      &'Xi*_cbar0','Xi''_cbar-','Xi*_cbar-','Omega_cbar0',               
1606      &'Omega*_cbar0','cc_1bar','Xi_ccbar-','Xi*_ccbar-','Xi_ccbar--',   
1607      &'Xi*_ccbar--','Omega_ccbar-','Omega*_ccbar-','Omega*_cccbar-'/    
1608       DATA (CHAF(I,2),I= 206, 325)/'bd_0bar','bd_1bar','Sigma_bbar+',   
1609      &'Sigma*_bbar+','Lambda_bbar0','Xi_bbar+','Xi_bcbar0','bu_0bar',   
1610      &'bu_1bar','Sigma_bbar0','Sigma*_bbar0','Sigma_bbar-',             
1611      &'Sigma*_bbar-','Xi_bbar0','Xi_bcbar-','bs_0bar','bs_1bar',        
1612      &'Xi''_bbar+','Xi*_bbar+','Xi''_bbar0','Xi*_bbar0','Omega_bbar+',  
1613      &'Omega*_bbar+','Omega_bcbar0','bc_0bar','bc_1bar','Xi''_bcbar0',  
1614      &'Xi*_bcbar0','Xi''_bcbar-','Xi*_bcbar-','Omega''_bcba',           
1615      &'Omega*_bcbar0','Omega_bccbar-','Omega*_bccbar-','bb_1bar',       
1616      &'Xi_bbbar+','Xi*_bbbar+','Xi_bbbar0','Xi*_bbbar0','Omega_bbbar+', 
1617      &'Omega*_bbbar+','Omega_bbcbar0','Omega*_bbcbar0',                 
1618      &'Omega*_bbbbar+',2*' ','a_0-','b_1-',2*' ','K*_0bar0','K_1bar0',  
1619      &'K*_0-','K_1-',2*' ','D*_0-','D_1-','D*_0bar0','D_1bar0',         
1620      &'D*_0s-','D_1s-',2*' ','B*_0bar0','B_1bar0','B*_0-','B_1-',       
1621      &'B*_0sbar0','B_1sbar0','B*_0c-','B_1c-',3*' ','a_1-',' ',         
1622      &'K*_1bar0','K*_1-',' ','D*_1-','D*_1bar0','D*_1s-',' ',           
1623      &'B*_1bar0','B*_1-','B*_1sbar0','B*_1c-',3*' ','~d_Lbar',          
1624      &'~u_Lbar','~s_Lbar','~c_Lbar','~b_1bar','~t_1bar','~e_L+',        
1625      &'~nu_eLbar','~mu_L+','~nu_muLbar','~tau_1+','~nu_tauLbar',3*' ',  
1626      &'~chi_1-',2*' ','~chi_2-',' ','~d_Rbar','~u_Rbar','~s_Rbar',      
1627      &'~c_Rbar','~b_2bar','~t_2bar','~e_R+','~nu_eRbar','~mu_R+'/       
1628       DATA (CHAF(I,2),I= 326, 500)/'~nu_muRbar','~tau_2+',              
1629      &'~nu_tauRbar',' ','pi_tc-',3*' ','rho_tc-',8*' ','d*bar','u*bar', 
1630      &'e*bar+','nu*_ebar0',5*' ','W_R-','H_L--','H_R--',' ',            
1631      &'pi_diffr-',3*' ','n_diffrbar0','p_diffrbar-',7*' ','a_tc-',     
1632      &81*' ',
1633 C...UED
1634      &'d*_Sbar','u*_Sbar','s*_Sbar','c*_Sbar','b*_Sbar','t*_Sbar',
1635      &'d*_Dbar','u*_Dbar','s*_Dbar','c*_Dbar','b*_Dbar','t*_Dbar',
1636      &'e*_Sbar+','mu*_Sbar+','tau*_Sbar+',
1637      &'nu*_eDbar','e*_Dbar+',
1638      &'nu*_muDbar','mu*_Dbar+',
1639      &'nu*_tauDbar','tau*_Dbar+',
1640      &'g*','gamma*','Z*0','W*-',25*' '/            
1641  
1642 C...PYDATR, with initial values for the random number generator.
1643       DATA MRPY/19780503,0,0,97,33,0/
1644  
1645 C...Default values for allowed processes and kinematics constraints.
1646       DATA MSEL/1/
1647       DATA MSUB/500*0/
1648       DATA ((KFIN(I,J),J=-40,40),I=1,2)/16*0,4*1,4*0,6*1,5*0,5*1,0,
1649      &5*1,5*0,6*1,4*0,4*1,16*0,16*0,4*1,4*0,6*1,5*0,5*1,0,5*1,5*0,
1650      &6*1,4*0,4*1,16*0/
1651       DATA CKIN/
1652      &  2.0D0, -1.0D0,  0.0D0, -1.0D0,  1.0D0,
1653      &  1.0D0,  -10D0,   10D0,  -40D0,   40D0,
1654      1  -40D0,   40D0,  -40D0,   40D0,  -40D0,
1655      1   40D0, -1.0D0,  1.0D0, -1.0D0,  1.0D0,
1656      2  0.0D0,  1.0D0,  0.0D0,  1.0D0, -1.0D0,
1657      2  1.0D0, -1.0D0,  1.0D0,    0D0,    0D0,
1658      3  2.0D0, -1.0D0,    0D0,    0D0,  0.0D0,
1659      3 -1.0D0,  0.0D0, -1.0D0,  4.0D0, -1.0D0,
1660      4 12.0D0, -1.0D0, 12.0D0, -1.0D0, 12.0D0,
1661      4 -1.0D0, 12.0D0, -1.0D0,    0D0,    0D0,
1662      5  0.0D0, -1.0D0,  0.0D0, -1.0D0,  0.0D0,
1663      5 -1.0D0,    0D0,    0D0,    0D0,    0D0,
1664      6 0.0001D0, 0.99D0, 0.0001D0, 0.99D0,    0D0,
1665      6   -1D0,    0D0,   -1D0,    0D0,   -1D0,
1666      7    0D0,   -1D0, 0.0001D0, 0.99D0, 0.0001D0,
1667      7 0.99D0,    2D0,   -1D0,    0D0,    0D0,
1668      8  120*0D0/
1669  
1670 C...Default values for main switches and parameters. Reset information.
1671       DATA (MSTP(I),I=1,100)/
1672      &  3,    1,    2,    0,    0,    0,    0,    0,    0,    0,
1673      1  1,    0,    1,   30,    0,    1,    4,    3,    4,    3,
1674      2  1,    0,    1,    0,    0,    0,    0,    0,    0,    1,
1675      3  1,    8,    0,    1,    0,    2,    1,    5,    2,    0,
1676      4  2,    1,    3,    7,    3,    1,    1,    0,    1,    0,
1677      5  7,    1,    3,    1,    5,    1,    1,    5,    1,    7,
1678      6  2,    3,    2,    2,    1,    5,    2,    3,    0,    0,
1679      7  1,    1,    0,    0,    0,    0,    0,    0,    0,    0,
1680      8  1,    4,  100,    1,    1,    2,    4,    1,    1,    0,
1681      9  1,    3,    1,    3,    1,    0,    0,    0,    0,    0/
1682       DATA (MSTP(I),I=101,200)/
1683      &  3,    1,    0,    0,    0,    0,    0,    0,    0,    0,
1684      1  1,    1,    1,    0,    0,    0,    0,    0,    0,    0,
1685      2  0,    1,    2,    1,    1,  100,    0,    0,   10,    0,
1686      3  0,    4,    0,    1,    0,    0,    0,    0,    0,    0,
1687      4  0,    0,    0,    0,    0,    1,    0,    0,    0,    0,
1688      5  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1689      6  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1690      7  0,    2,    0,    0,    0,    0,    0,    0,    0,    0,
1691      8  6,  425, 2011,   03,   23,    0,    0,    0,    0,    0,
1692      9  0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1693       DATA (PARP(I),I=1,100)/
1694      &  0.25D0,  10D0, 8*0D0,
1695      1  0D0, 0D0, 1.0D0, 0.01D0, 0.5D0, 1.0D0, 1.0D0, 0.4D0, 2*0D0,
1696      2  10*0D0,
1697      3  1.5D0,2.0D0,0.075D0,1.0D0,0.2D0,0D0,1.0D0,0.70D0,0.006D0,0D0,
1698      4  0.02D0,2.0D0,0.10D0,1000D0,2054D0,123D0,246D0,50D0,0D0,0.054D0,
1699      5  10*0D0,
1700      6  0.25D0, 1.0D0,0.25D0, 1.0D0, 2.0D0,1D-3, 4.0D0,1D-3,2*0D0,
1701      7  4.0D0, 0.25D0, 5*0D0, 0.025D0, 2.0D0, 0.1D0,
1702      8  1.90D0, 2.0D0, 0.5D0, 0.4D0, 0.90D0,
1703      8  0.95D0, 0.7D0, 0.5D0, 1800D0, 0.25D0,
1704      9  2.0D0,0.40D0,5.0D0,1.0D0,0.0D0,3.0D0,1.0D0,0.75D0,1.0D0,5.0D0/
1705       DATA (PARP(I),I=101,200)/
1706      &  0.5D0, 0.28D0,  1.0D0, 0.8D0, 0D0, 0D0, 0D0, 0D0, 0D0, 1D0,
1707      1  2.0D0, 3*0D0, 1.5D0, 0.5D0, 0.6D0, 2.5D0, 2.0D0, 1.0D0,
1708      2  1.0D0,  0.4D0, 8*0D0,
1709      3  0.01D0, 9*0D0,
1710      4  1.16D0, 0.0119D0, 0.01D0, 0.01D0, 0.05D0, 
1711      4  9.28D0, 0.15D0, 0.02D0, 0.48D0, 0.09D0,
1712      5  0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0,
1713      6  2.20D0, 23.6D0, 18.4D0, 11.5D0, 0.5D0, 0D0, 0D0, 0D0, 2*0D0,
1714      7  0D0,   0D0,   0D0,  1.0D0, 6*0D0,
1715      8  0.1D0, 0.01D0, 0.01D0, 0.01D0, 0.1D0, 0.01D0, 0.01D0, 0.01D0,
1716      8  0.3D0, 0.64D0,
1717      9  0.64D0, 5.0D0, 1.0D4, 1.0D4, 6*0D0/
1718       DATA MSTI/200*0/
1719       DATA PARI/200*0D0/
1720       DATA MINT/400*0/
1721       DATA VINT/400*0D0/
1722  
1723 C...Constants for the generation of the various processes.
1724       DATA (ISET(I),I=1,100)/
1725      &  1,    1,    1,   -1,    3,   -1,   -1,    3,   -2,    2,
1726      1  2,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
1727      2 -1,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
1728      3  2,    2,    2,    2,    2,    2,   -1,   -1,   -1,   -1,
1729      4 -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1730      5 -1,   -1,    2,    2,   -1,   -1,   -1,    2,   -1,   -1,
1731      6 -1,   -1,   -1,   -1,   -1,   -1,   -1,    2,    2,    2,
1732      7  4,    4,    4,   -1,   -1,    4,    4,   -1,   -1,    2,
1733      8  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
1734      9  0,    0,    0,    0,    0,    9,   -2,   -2,    8,   -2/
1735       DATA (ISET(I),I=101,200)/
1736      & -1,    1,    1,    1,    1,    2,    2,    2,   -2,    2,
1737      1  2,    2,    2,    2,    2,   -1,   -1,   -1,   -2,   -2,
1738      2  5,    5,    5,    5,   -2,   -2,   -2,   -2,   -2,   -2,
1739      3  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1740      4  1,    1,    1,    1,    1,    1,    1,    1,    1,   -2,
1741      5  1,    1,    1,   -2,   -2,    1,    1,    1,   -2,   -2,
1742      6  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
1743      7  2,    2,    5,    5,   -2,    2,    2,    5,    5,   -2,
1744      8  5,    5,    2,    2,    2,    5,    5,    2,    2,    2,
1745      9  1,    1,    1,    2,    2,   -2,   -2,   -2,   -2,   -2/
1746       DATA (ISET(I),I=201,300)/
1747      &  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1748      1  2,    2,    2,    2,   -2,    2,    2,    2,    2,    2,
1749      2  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1750      3  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1751      4  2,    2,    2,    2,   -1,    2,    2,    2,    2,    2,
1752      5  2,    2,    2,    2,   -1,    2,   -1,    2,    2,   -2,
1753      6  2,    2,    2,    2,    2,   -1,   -1,   -1,   -1,   -1,
1754      7  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1755      8  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1756      9  2,    2,    2,    2,    2,    2,    2,    2,    2,    2/
1757       DATA (ISET(I),I=301,500)/
1758      &  2, 9*-2, 9*2, 21*-2,
1759      4  1,    1,    2,    2,    2,    2,    2,    2,    2,    2,
1760      5  5,    5,    1,    1,   -1,   -1,   -1,   -1,   -1,   -1,
1761      6  2,    2,    2,    2,    2,    2,    2,    2,   -1,    2,
1762      7  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1763      8  2,    2,    2,    2,    2,    2,    2,    2,   -2,   -2,
1764      9  1,    1,    2,    2,    2, 5*-2,
1765      &  5,    5, 18*-2,
1766      2  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1767      3  2,    2,    2,    2,    2,    2,    2,    2,    2, 21*-2,
1768      6  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
1769      7  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
1770      8  2,    2,  18*-2/
1771       DATA ((KFPR(I,J),J=1,2),I=1,50)/
1772      &  23,    0,   24,    0,   25,    0,   24,    0,   25,    0,
1773      &  24,    0,   23,    0,   25,    0,    0,    0,    0,    0,
1774      1   0,    0,    0,    0,   21,   21,   21,   22,   21,   23,
1775      1  21,   24,   21,   25,   22,   22,   22,   23,   22,   24,
1776      2  22,   25,   23,   23,   23,   24,   23,   25,   24,   24,
1777      2  24,   25,   25,   25,    0,   21,    0,   22,    0,   23,
1778      3   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1779      3   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1780      4   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
1781      4   0,   24,    0,   25,    0,   21,    0,   22,    0,   23/
1782       DATA ((KFPR(I,J),J=1,2),I=51,100)/
1783      5   0,   24,    0,   25,    0,    0,    0,    0,    0,    0,
1784      5   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1785      6   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1786      6   0,    0,    0,    0,   21,   21,   24,   24,   23,   24,
1787      7  23,   23,   24,   24,   23,   24,   23,   25,   22,   22,
1788      7  23,   23,   24,   24,   24,   25,   25,   25,    0,  211,
1789      8   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1790      8 443,   21,10441,   21,20443,   21,  445,   21,    0,    0,
1791      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1792      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1793       DATA ((KFPR(I,J),J=1,2),I=101,150)/
1794      &  23,    0,   25,    0,   25,    0,10441,    0,  445,    0,
1795      & 443,   22,  443,   21,  443,   22,    0,    0,   22,   25,
1796      1  21,   25,    0,   25,   21,   25,   22,   22,   21,   22,
1797      1  22,   23,   23,   23,   24,   24,    0,    0,    0,    0,
1798      2  25,    6,   25,    6,   25,    0,   25,    0,    0,    0,
1799      2   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1800      3   0,   21,    0,   21,    0,   22,    0,   22,    0,    0,
1801      3   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1802      4  32,    0,   34,    0,   37,    0,   41,    0,   42,    0,
1803      4 4000011, 0, 4000001, 0, 4000002, 0, 3000331, 0,   0,    0/
1804       DATA ((KFPR(I,J),J=1,2),I=151,200)/
1805      5  35,    0,   35,    0,   35,    0,    0,    0,    0,    0,
1806      5  36,    0,   36,    0,   36,    0,    0,    0,    0,    0,
1807      6   6,   37,   42,    0,   42,   42,   42,   42,   11,    0,
1808      6  11,    0, 0, 4000001, 0, 4000002, 0, 4000011,    0,    0,
1809      7  23,   35,   24,   35,   35,    0,   35,    0,    0,    0,
1810      7  23,   36,   24,   36,   36,    0,   36,    0,    0,    0,
1811      8  35,    6,   35,    6,   21,   35,    0,   35,   21,   35,
1812      8  36,    6,   36,    6,   21,   36,    0,   36,   21,   36,
1813      9  3000113, 0, 3000213, 0, 3000223, 0, 11,    0,   11,    0,
1814      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
1815       DATA ((KFPR(I,J),J=1,2),I=201,240)/
1816      &  1000011,   1000011,   2000011,   2000011,   1000011,
1817      &  2000011,   1000013,   1000013,   2000013,   2000013,
1818      &  1000013,   2000013,   1000015,   1000015,   2000015,
1819      &  2000015,   1000015,   2000015,   1000011,   1000012,
1820      1  1000015,   1000016,   2000015,   1000016,   1000012,
1821      1  1000012,   1000016,   1000016,         0,         0,
1822      1  1000022,   1000022,   1000023,   1000023,   1000025,
1823      1  1000025,   1000035,   1000035,   1000022,   1000023,
1824      2  1000022,   1000025,   1000022,   1000035,   1000023,
1825      2  1000025,   1000023,   1000035,   1000025,   1000035,
1826      2  1000024,   1000024,   1000037,   1000037,   1000024,
1827      2  1000037,   1000022,   1000024,   1000023,   1000024,
1828      3  1000025,   1000024,   1000035,   1000024,   1000022,
1829      3  1000037,   1000023,   1000037,   1000025,   1000037,
1830      3  1000035,   1000037,   1000021,   1000022,   1000021,
1831      3  1000023,   1000021,   1000025,   1000021,   1000035/
1832       DATA ((KFPR(I,J),J=1,2),I=241,280)/
1833      4  1000021,   1000024,   1000021,   1000037,   1000021,
1834      4  1000021,   1000021,   1000021,         0,         0,
1835      4  1000002,   1000022,   2000002,   1000022,   1000002,
1836      4  1000023,   2000002,   1000023,   1000002,   1000025,
1837      5  2000002,   1000025,   1000002,   1000035,   2000002,
1838      5  1000035,   1000001,   1000024,   2000005,   1000024,
1839      5  1000001,   1000037,   2000005,   1000037,   1000002,
1840      5  1000021,   2000002,   1000021,         0,         0,
1841      6  1000006,   1000006,   2000006,   2000006,   1000006,
1842      6  2000006,   1000006,   1000006,   2000006,   2000006,
1843      6        0,         0,         0,         0,         0,
1844      6        0,         0,         0,         0,         0,
1845      7  1000002,   1000002,   2000002,   2000002,   1000002,
1846      7  2000002,   1000002,   1000002,   2000002,   2000002,
1847      7  1000002,   2000002,   1000002,   1000002,   2000002,
1848      7  2000002,   1000002,   1000002,   2000002,   2000002/
1849       DATA ((KFPR(I,J),J=1,2),I=281,350)/
1850      8  1000005,   1000002,   2000005,   2000002,   1000005,
1851      8  2000002,   1000005,   1000002,   2000005,   2000002,
1852      8  1000005,   2000002,   1000005,   1000005,   2000005,
1853      8  2000005,   1000005,   1000005,   2000005,   2000005,
1854      9  1000005,   1000005,   2000005,   2000005,   1000005,
1855      9  2000005,   1000005,   1000021,   2000005,   1000021,
1856      9  1000005,   2000005,        37,        25,        37,
1857      9       35,        36,        25,        36,        35,
1858      &       37,        37,      18*0,
1859 C...UED: 311-319
1860      &  5100021,   5100021, 
1861      &  5100002,   5100021, 
1862      &  5100002,   5100001,
1863      &  5100002,  -5100002, 
1864      &  5100002,  -5100002,
1865      &  5100002,  -6100001,
1866      &  5100002,  -5100001,
1867      &  5100002,   6100001,
1868      &  5100001,  -5100001,
1869      &  42*0,
1870      4  9900041,         0,   9900042,         0,   9900041,
1871      4       11,   9900042,        11,   9900041,        13,
1872      4  9900042,        13,   9900041,        15,   9900042,
1873      4       15,   9900041,   9900041,   9900042,   9900042/
1874       DATA ((KFPR(I,J),J=1,2),I=351,400)/
1875      5  9900041,         0,   9900042,         0,   9900023,
1876      5        0,   9900024,         0,         0,         0,
1877      5        0,         0,         0,         0,         0,
1878      5        0,         0,         0,         0,         0,
1879      6       24,        24,        24,   3000211,   3000211,
1880      6  3000211,        22,   3000111,        22,   3000221,
1881      6       23,   3000111,        23,   3000221,        24,
1882      6  3000211,         0,         0,        24,        23,
1883      7       24,   3000111,   3000211,        23,   3000211,
1884      7  3000111,        22,   3000211,        23,   3000211,
1885      7       24,   3000111,        24,   3000221,        22,
1886      7       24,        22,        23,        23,        23,
1887      8   0,    0,    0,    0,   21,   21,    0,   21,    0,    0,
1888      8  21,   21,    0,    0,    0,    0,    0,    0,    0,    0,
1889      9  5000039,         0,   5000039,         0,        21,
1890      9  5000039,         0,   5000039,        21,   5000039,
1891      9     10*0/
1892       DATA ((KFPR(I,J),J=1,2),I=401,500)/
1893      &  37,    6,   37,    6,    36*0,
1894      2      443,        21,   9900443,        21,   9900441,
1895      2       21,   9910441,        21,         0,   9900443,
1896      2        0,   9900441,         0,   9910441,        21,
1897      2  9900443,        21,   9900441,        21,   9910441,
1898      3 10441, 21, 20443,  21,  445,   21,    0, 10441,   0, 20443,
1899      3   0,  445,   21, 10441,  21, 20443,  21,  445,  42*0,
1900      6      553,        21,   9900553,        21,   9900551,
1901      6       21,   9910551,        21,         0,   9900553,
1902      6        0,   9900551,         0,   9910551,        21,
1903      6  9900553,        21,   9900551,        21,   9910551,
1904      7 10551, 21, 20553,  21,  555,   21,    0, 10551,   0, 20553,
1905      7   0,  555,   21, 10551,  21, 20553,  21,  555, 42*0/
1906       DATA COEF/10000*0D0/
1907       DATA (((ICOL(I,J,K),K=1,2),J=1,4),I=1,40)/
1908      &4,0,3,0,2,0,1,0,3,0,4,0,1,0,2,0,2,0,0,1,4,0,0,3,3,0,0,4,1,0,0,2,
1909      &3,0,0,4,1,4,3,2,4,0,0,3,4,2,1,3,2,0,4,1,4,0,2,3,4,0,3,4,2,0,1,2,
1910      &3,2,1,0,1,4,3,0,4,3,3,0,2,1,1,0,3,2,1,4,1,0,0,2,2,4,3,1,2,0,0,1,
1911      &3,2,1,4,1,4,3,2,4,2,1,3,4,2,1,3,3,4,4,3,1,2,2,1,2,0,3,1,2,0,0,0,
1912      &4,2,1,0,0,0,1,0,3,0,0,3,1,2,0,0,4,0,0,4,0,0,1,2,2,0,0,1,4,4,3,3,
1913      &2,2,1,1,4,4,3,3,3,3,4,4,1,1,2,2,3,2,1,3,1,2,0,0,4,2,1,4,0,0,1,2,
1914      &4,0,0,0,4,0,1,3,0,0,3,0,2,4,3,0,3,4,0,0,1,0,0,1,0,0,3,4,2,0,0,2,
1915      &3,0,0,0,1,0,0,0,0,0,3,0,2,0,0,0,2,0,3,1,2,0,0,0,3,2,1,0,1,0,0,0,
1916      &4,4,3,3,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1917      &0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
1918  
1919 C...Treatment of resonances.
1920       DATA (MWID(I)  ,I=   1, 500)/5*0,3*1,8*0,1,5*0,3*1,6*0,1,0,4*1,   
1921      &3*0,2*1,254*0,19*2,0,7*2,0,2,0,2,0,26*1,7*0,6*2,2*1,
1922      &81*0,21*1,4*1,25*0/
1923  
1924 C...Character constants: name of processes.
1925       DATA PROC(0)/                    'All included subprocesses   '/
1926       DATA (PROC(I),I=1,20)/
1927      &'f + fbar -> gamma*/Z0       ',  'f + fbar'' -> W+/-           ',
1928      &'f + fbar -> h0              ',  'gamma + W+/- -> W+/-        ',
1929      &'Z0 + Z0 -> h0               ',  'Z0 + W+/- -> W+/-           ',
1930      &'                            ',  'W+ + W- -> h0               ',
1931      &'                            ',  'f + f'' -> f + f'' (QFD)      ',
1932      1'f + f'' -> f + f'' (QCD)      ','f + fbar -> f'' + fbar''      ',
1933      1'f + fbar -> g + g           ',  'f + fbar -> g + gamma       ',
1934      1'f + fbar -> g + Z0          ',  'f + fbar'' -> g + W+/-       ',
1935      1'f + fbar -> g + h0          ',  'f + fbar -> gamma + gamma   ',
1936      1'f + fbar -> gamma + Z0      ',  'f + fbar'' -> gamma + W+/-   '/
1937       DATA (PROC(I),I=21,40)/
1938      2'f + fbar -> gamma + h0      ',  'f + fbar -> Z0 + Z0         ',
1939      2'f + fbar'' -> Z0 + W+/-      ', 'f + fbar -> Z0 + h0         ',
1940      2'f + fbar -> W+ + W-         ',  'f + fbar'' -> W+/- + h0      ',
1941      2'f + fbar -> h0 + h0         ',  'f + g -> f + g              ',
1942      2'f + g -> f + gamma          ',  'f + g -> f + Z0             ',
1943      3'f + g -> f'' + W+/-          ', 'f + g -> f + h0             ',
1944      3'f + gamma -> f + g          ',  'f + gamma -> f + gamma      ',
1945      3'f + gamma -> f + Z0         ',  'f + gamma -> f'' + W+/-      ',
1946      3'f + gamma -> f + h0         ',  'f + Z0 -> f + g             ',
1947      3'f + Z0 -> f + gamma         ',  'f + Z0 -> f + Z0            '/
1948       DATA (PROC(I),I=41,60)/
1949      4'f + Z0 -> f'' + W+/-         ', 'f + Z0 -> f + h0            ',
1950      4'f + W+/- -> f'' + g          ', 'f + W+/- -> f'' + gamma      ',
1951      4'f + W+/- -> f'' + Z0         ', 'f + W+/- -> f'' + W+/-       ',
1952      4'f + W+/- -> f'' + h0         ', 'f + h0 -> f + g             ',
1953      4'f + h0 -> f + gamma         ',  'f + h0 -> f + Z0            ',
1954      5'f + h0 -> f'' + W+/-         ', 'f + h0 -> f + h0            ',
1955      5'g + g -> f + fbar           ',  'g + gamma -> f + fbar       ',
1956      5'g + Z0 -> f + fbar          ',  'g + W+/- -> f + fbar''       ',
1957      5'g + h0 -> f + fbar          ',  'gamma + gamma -> f + fbar   ',
1958      5'gamma + Z0 -> f + fbar      ',  'gamma + W+/- -> f + fbar''   '/
1959       DATA (PROC(I),I=61,80)/
1960      6'gamma + h0 -> f + fbar      ',  'Z0 + Z0 -> f + fbar         ',
1961      6'Z0 + W+/- -> f + fbar''      ', 'Z0 + h0 -> f + fbar         ',
1962      6'W+ + W- -> f + fbar         ',  'W+/- + h0 -> f + fbar''      ',
1963      6'h0 + h0 -> f + fbar         ',  'g + g -> g + g              ',
1964      6'gamma + gamma -> W+ + W-    ',  'gamma + W+/- -> Z0 + W+/-   ',
1965      7'Z0 + Z0 -> Z0 + Z0          ',  'Z0 + Z0 -> W+ + W-          ',
1966      7'Z0 + W+/- -> Z0 + W+/-      ',  'Z0 + Z0 -> Z0 + h0          ',
1967      7'W+ + W- -> gamma + gamma    ',  'W+ + W- -> Z0 + Z0          ',
1968      7'W+/- + W+/- -> W+/- + W+/-  ',  'W+/- + h0 -> W+/- + h0      ',
1969      7'h0 + h0 -> h0 + h0          ',  'q + gamma -> q'' + pi+/-     '/
1970       DATA (PROC(I),I=81,100)/
1971      8'q + qbar -> Q + Qbar, mass  ',  'g + g -> Q + Qbar, massive  ',
1972      8'f + q -> f'' + Q, massive    ', 'g + gamma -> Q + Qbar, mass ',
1973      8'gamma + gamma -> F + Fbar, m',  'g + g -> J/Psi + g          ',
1974      8'g + g -> chi_0c + g         ',  'g + g -> chi_1c + g         ',
1975      8'g + g -> chi_2c + g         ',  '                            ',
1976      9'Elastic scattering          ',  'Single diffractive (XB)     ',
1977      9'Single diffractive (AX)     ',  'Double  diffractive         ',
1978      9'Low-pT scattering           ',  'Semihard QCD 2 -> 2         ',
1979      9'                            ',  '                            ',
1980      9'q + gamma* -> q             ',  '                            '/
1981       DATA (PROC(I),I=101,120)/
1982      &'g + g -> gamma*/Z0          ',  'g + g -> h0                 ',
1983      &'gamma + gamma -> h0         ',  'g + g -> chi_0c             ',
1984      &'g + g -> chi_2c             ',  'g + g -> J/Psi + gamma      ',
1985      &'gamma + g -> J/Psi + g      ',  'gamma+gamma -> J/Psi + gamma',
1986      &'                            ',  'f + fbar -> gamma + h0      ',
1987      1'q + qbar -> g + h0          ',  'q + g -> q + h0             ',
1988      1'g + g -> g + h0             ',  'g + g -> gamma + gamma      ',
1989      1'g + g -> g + gamma          ',  'g + g -> gamma + Z0         ',
1990      1'g + g -> Z0 + Z0            ',  'g + g -> W+ + W-            ',
1991      1'                            ',  '                            '/
1992       DATA (PROC(I),I=121,140)/
1993      2'g + g -> Q + Qbar + h0      ',  'q + qbar -> Q + Qbar + h0   ',
1994      2'f + f'' -> f + f'' + h0       ',
1995      2'f + f'' -> f" + f"'' + h0     ',
1996      2'                            ',  '                            ',
1997      2'                            ',  '                            ',
1998      2'                            ',  '                            ',
1999      3'f + gamma*_T -> f + g       ',  'f + gamma*_L -> f + g       ',
2000      3'f + gamma*_T -> f + gamma   ',  'f + gamma*_L -> f + gamma   ',
2001      3'g + gamma*_T -> f + fbar    ',  'g + gamma*_L -> f + fbar    ',
2002      3'gamma*_T+gamma*_T -> f+fbar ',  'gamma*_T+gamma*_L -> f+fbar ',
2003      3'gamma*_L+gamma*_T -> f+fbar ',  'gamma*_L+gamma*_L -> f+fbar '/
2004       DATA (PROC(I),I=141,160)/
2005      4'f + fbar -> gamma*/Z0/Z''0   ', 'f + fbar'' -> W''+/-          ',
2006      4'f + fbar'' -> H+/-           ', 'f + fbar'' -> R              ',
2007      4'q + l -> LQ                 ',  'e + gamma -> e*             ',
2008      4'd + g -> d*                 ',  'u + g -> u*                 ',
2009      4'g + g -> eta_tc             ',  '                            ',
2010      5'f + fbar -> H0              ',  'g + g -> H0                 ',
2011      5'gamma + gamma -> H0         ',  '                            ',
2012      5'                            ',  'f + fbar -> A0              ',
2013      5'g + g -> A0                 ',  'gamma + gamma -> A0         ',
2014      5'                            ',  '                            '/
2015       DATA (PROC(I),I=161,180)/
2016      6'f + g -> f'' + H+/-          ', 'q + g -> LQ + lbar          ',
2017      6'g + g -> LQ + LQbar         ',  'q + qbar -> LQ + LQbar      ',
2018      6'f + fbar -> f'' + fbar'' (g/Z)',
2019      6'f +fbar'' -> f" + fbar"'' (W) ',
2020      6'q + q'' -> q" + d*           ',  'q + q'' -> q" + u*           ',
2021      6'q + qbar -> e + e*          ',  '                            ',
2022      7'f + fbar -> Z0 + H0         ', 'f + fbar'' -> W+/- + H0      ',
2023      7'f + f'' -> f + f'' + H0       ',
2024      7'f + f'' -> f" + f"'' + H0     ',
2025      7'                            ',  'f + fbar -> Z0 + A0         ',
2026      7'f + fbar'' -> W+/- + A0      ',
2027      7'f + f'' -> f + f'' + A0       ',
2028      7'f + f'' -> f" + f"'' + A0     ',
2029      7'                            '/
2030       DATA (PROC(I),I=181,200)/
2031      8'g + g -> Q + Qbar + H0      ',  'q + qbar -> Q + Qbar + H0   ',
2032      8'q + qbar -> g + H0          ',  'q + g -> q + H0             ',
2033      8'g + g -> g + H0             ',  'g + g -> Q + Qbar + A0      ',
2034      8'q + qbar -> Q + Qbar + A0   ',  'q + qbar -> g + A0          ',
2035      8'q + g -> q + A0             ',  'g + g -> g + A0             ',
2036      9'f + fbar -> rho_tc0         ',  'f + f'' -> rho_tc+/-         ',
2037      9'f + fbar -> omega_tc0      ',  'f+fbar -> f''+fbar'' (ETC)  ',
2038      9'f+fbar'' -> f"+fbar"'' (ETC)','                          ',
2039      9'                            ',  '                            ',
2040      9'                            ',  '                            '/
2041       DATA (PROC(I),I=201,220)/
2042      &'f + fbar -> ~e_L + ~e_Lbar  ',  'f + fbar -> ~e_R + ~e_Rbar  ',
2043      &'f + fbar -> ~e_R + ~e_Lbar  ',  'f + fbar -> ~mu_L + ~mu_Lbar',
2044      &'f + fbar -> ~mu_R + ~mu_Rbar',  'f + fbar -> ~mu_L + ~mu_Rbar',
2045      &'f+fbar -> ~tau_1 + ~tau_1bar',  'f+fbar -> ~tau_2 + ~tau_2bar',
2046      &'f+fbar -> ~tau_1 + ~tau_2bar',  'q + qbar'' -> ~l_L + ~nulbar ',
2047      1'q+qbar''-> ~tau_1 + ~nutaubar', 'q+qbar''-> ~tau_2 + ~nutaubar',
2048      1'f + fbar -> ~nul + ~nulbar  ',  'f+fbar -> ~nutau + ~nutaubar',
2049      1'                            ',  'f + fbar -> ~chi1 + ~chi1   ',
2050      1'f + fbar -> ~chi2 + ~chi2   ',  'f + fbar -> ~chi3 + ~chi3   ',
2051      1'f + fbar -> ~chi4 + ~chi4   ',  'f + fbar -> ~chi1 + ~chi2   '/
2052       DATA (PROC(I),I=221,240)/
2053      2'f + fbar -> ~chi1 + ~chi3   ',  'f + fbar -> ~chi1 + ~chi4   ',
2054      2'f + fbar -> ~chi2 + ~chi3   ',  'f + fbar -> ~chi2 + ~chi4   ',
2055      2'f + fbar -> ~chi3 + ~chi4   ',  'f+fbar -> ~chi+-1 + ~chi-+1 ',
2056      2'f+fbar -> ~chi+-2 + ~chi-+2 ',  'f+fbar -> ~chi+-1 + ~chi-+2 ',
2057      2'q + qbar'' -> ~chi1 + ~chi+-1', 'q + qbar'' -> ~chi2 + ~chi+-1',
2058      3'q + qbar'' -> ~chi3 + ~chi+-1', 'q + qbar'' -> ~chi4 + ~chi+-1',
2059      3'q + qbar'' -> ~chi1 + ~chi+-2', 'q + qbar'' -> ~chi2 + ~chi+-2',
2060      3'q + qbar'' -> ~chi3 + ~chi+-2', 'q + qbar'' -> ~chi4 + ~chi+-2',
2061      3'q + qbar -> ~chi1 + ~g      ',  'q + qbar -> ~chi2 + ~g      ',
2062      3'q + qbar -> ~chi3 + ~g      ',  'q + qbar -> ~chi4 + ~g      '/
2063       DATA (PROC(I),I=241,260)/
2064      4'q + qbar'' -> ~chi+-1 + ~g   ', 'q + qbar'' -> ~chi+-2 + ~g  ',
2065      4'q + qbar -> ~g + ~g         ',  'g + g -> ~g + ~g            ',
2066      4'                            ',  'qj + g -> ~qj_L + ~chi1     ',
2067      4'qj + g -> ~qj_R + ~chi1     ',  'qj + g -> ~qj_L + ~chi2     ',
2068      4'qj + g -> ~qj_R + ~chi2     ',  'qj + g -> ~qj_L + ~chi3     ',
2069      5'qj + g -> ~qj_R + ~chi3     ',  'qj + g -> ~qj_L + ~chi4     ',
2070      5'qj + g -> ~qj_R + ~chi4     ',  'qj + g -> ~qk_L + ~chi+-1   ',
2071      5'qj + g -> ~qk_R + ~chi+-1   ',  'qj + g -> ~qk_L + ~chi+-2   ',
2072      5'qj + g -> ~qk_R + ~chi+-2   ',  'qj + g -> ~qj_L + ~g        ',
2073      5'qj + g -> ~qj_R + ~g        ',  '                            '/
2074       DATA (PROC(I),I=261,300)/
2075      6'f + fbar -> ~t_1 + ~t_1bar  ',  'f + fbar -> ~t_2 + ~t_2bar  ',
2076      6'f + fbar -> ~t_1 + ~t_2bar  ',  'g + g -> ~t_1 + ~t_1bar     ',
2077      6'g + g -> ~t_2 + ~t_2bar     ',  '                            ',
2078      6'                            ',  '                            ',
2079      6'                            ',  '                            ',
2080      7'qi + qj -> ~qi_L + ~qj_L    ',  'qi + qj -> ~qi_R + ~qj_R    ',
2081      7'qi + qj -> ~qi_L + ~qj_R    ',  'qi+qjbar -> ~qi_L + ~qj_Lbar',
2082      7'qi+qjbar -> ~qi_R + ~qj_Rbar',  'qi+qjbar -> ~qi_L + ~qj_Rbar',
2083      7'f + fbar -> ~qi_L + ~qi_Lbar',  'f + fbar -> ~qi_R + ~qi_Rbar',
2084      7'g + g -> ~qi_L + ~qi_Lbar   ',  'g + g -> ~qi_R + ~qi_Rbar   ',
2085      8'b + qj -> ~b_1 + ~qj_L      ',  'b + qj -> ~b_2 + ~qj_R      ',
2086      8'b + qj -> ~b_1 + ~qj_R      ',  'b + qjbar -> ~b_1 + ~qj_Lbar',
2087      8'b + qjbar -> ~b_2 + ~qj_Rbar',  'b + qjbar -> ~b_1 + ~qj_Rbar',
2088      8'f + fbar -> ~b_1 + ~b_1bar  ',  'f + fbar -> ~b_2 + ~b_2bar  ',
2089      8'g + g -> ~b_1 + ~b_1bar     ',  'g + g -> ~b_2 + ~b_2bar     ',
2090      9'b + b -> ~b_1 + ~b_1        ',  'b + b -> ~b_2 + ~b_2        ',
2091      9'b + b -> ~b_1 + ~b_2        ',  'b + g -> ~b_1 + ~g          ',
2092      9'b + g -> ~b_2 + ~g          ',  'b + bbar -> ~b_1 + ~b_2bar  ',
2093      9'f + fbar'' -> H+/- + h0     ',  'f + fbar -> H+/- + H0       ',
2094      9'f + fbar -> A0 + h0         ',  'f + fbar -> A0 + H0         '/
2095       DATA (PROC(I),I=301,340)/
2096      &'f + fbar -> H+ + H-         ',
2097      &9*'                          ',  'g + g -> g* + g*            ',
2098      &'q + g -> q*_D + g*          ',  'qi + qj -> q*_Di + q*_Dj    ',
2099      &'g + g -> q*_D + q*_Dbar     ',  'q  + qbar -> q*_D + q*_Dbar ',
2100      &'qi + qbarj -> q*Di + q*Sbarj',  'qi + qjbar -> q*Di + q*Dbarj',
2101      &'qi + qj -> q*_Di + q*_Sj    ',  'qi + qibar -> q*Dj + q*Dbarj',
2102      &21*'                          '/
2103       DATA (PROC(I),I=341,380)/
2104      4'l + l -> H_L++/--           ',  'l + l -> H_R++/--           ',
2105      4'l + gamma -> H_L++/-- e-/+  ',  'l + gamma -> H_R++/-- e-/+  ',
2106      4'l + gamma -> H_L++/-- mu-/+ ',  'l + gamma -> H_R++/-- mu-/+ ',
2107      4'l + gamma -> H_L++/-- tau-/+',  'l + gamma -> H_R++/-- tau-/+',
2108      4'f + fbar -> H_L++ + H_L--   ',  'f + fbar -> H_R++ + H_R--   ',
2109      5'f + f -> f'' + f'' + H_L++/-- ',
2110      5'f + f -> f'' + f'' + H_R++/-- ','f + fbar -> Z_R0            ',
2111      5'f + fbar'' -> W_R+/-         ',5*'                            ',
2112      6'                            ',  'f + fbar -> W_L+ W_L-       ',
2113      6'f + fbar -> W_L+/- pi_T-/+  ',  'f + fbar -> pi_T+ pi_T-     ',
2114      6'f + fbar -> gamma pi_T0     ',  'f + fbar -> gamma pi_T0''    ',
2115      6'f + fbar -> Z0 pi_T0        ',  'f + fbar -> Z0 pi_T0''       ',
2116      6'f + fbar -> W+/- pi_T-/+    ',  '                            ',
2117      7'f + fbar'' -> W_L+/- Z_L0    ', 'f + fbar'' -> W_L+/- pi_T0   ',
2118      7'f + fbar'' -> pi_T+/- Z_L0   ', 'f + fbar'' -> pi_T+/- pi_T0  ',
2119      7'f + fbar'' -> gamma pi_T+/-  ', 'f + fbar'' -> Z0 pi_T+/-     ',
2120      7'f + fbar'' -> W+/- pi_T0     ',
2121      7'f + fbar'' -> W+/- pi_T0''    ',
2122      7'f + fbar'' -> gamma W+/-(ETC)','f + fbar -> gamma Z0 (ETC)',
2123      7'f + fbar -> Z0 Z0 (ETC)     '/
2124       DATA (PROC(I),I=381,420)/
2125      8'f + f'' -> f + f'' (ETC)      ','f + fbar -> f'' + fbar'' (ETC)',
2126      8'f + fbar -> g + g (ETC)     ',  'f + g -> f + g (ETC)        ',
2127      8'g + g -> f + fbar (ETC)     ',  'g + g -> g + g (ETC)        ',
2128      8'q + qbar -> Q + Qbar (ETC)  ',  'g + g -> Q + Qbar (ETC)     ',
2129      8'                            ',  '                            ',
2130      9'f + fbar -> G*              ',  'g + g -> G*                 ',
2131      9'q + qbar -> g + G*          ',  'q + g -> q + G*             ',
2132      9'g + g -> g + G*             ',  '                            ',
2133      9 4*'                         ',
2134      &'g + g -> t + b + H+/-       ',  'q + qbar -> t + b + H+/-    ',
2135      & 18*'                            '/
2136       DATA (PROC(I),I=421,460)/
2137      2'g + g  -> cc~[3S1(1)] + g   ',  'g + g  -> cc~[3S1(8)] + g   ',
2138      2'g + g  -> cc~[1S0(8)] + g   ',  'g + g  -> cc~[3PJ(8)] + g   ',
2139      2'g + q  -> q + cc~[3S1(8)]   ',  'g + q  -> q + cc~[1S0(8)]   ',
2140      2'g + q  -> q + cc~[3PJ(8)]   ',  'q + q~ -> g + cc~[3S1(8)]   ',
2141      2'q + q~ -> g + cc~[1S0(8)]   ',  'q + q~ -> g + cc~[3PJ(8)]   ',
2142      3'g + g  -> cc~[3P0(1)] + g   ',  'g + g  -> cc~[3P1(1)] + g   ',
2143      3'g + g  -> cc~[3P2(1)] + g   ',  'q + g  -> q + cc~[3P0(1)]   ',
2144      3'q + g  -> q + cc~[3P1(1)]   ',  'q + g  -> q + cc~[3P2(1)]   ',
2145      3'q + q~ -> g + cc~[3P0(1)]   ',  'q + q~ -> g + cc~[3P1(1)]   ',
2146      3'q + q~ -> g + cc~[3P2(1)]   ',
2147      3     21 *'                            '/
2148       DATA (PROC(I),I=461,500)/
2149      6'g + g  -> bb~[3S1(1)] + g   ',  'g + g  -> bb~[3S1(8)] + g   ',
2150      6'g + g  -> bb~[1S0(8)] + g   ',  'g + g  -> bb~[3PJ(8)] + g   ',
2151      6'g + q  -> q + bb~[3S1(8)]   ',  'g + q  -> q + bb~[1S0(8)]   ',
2152      6'g + q  -> q + bb~[3PJ(8)]   ',  'q + q~ -> g + bb~[3S1(8)]   ',
2153      6'q + q~ -> g + bb~[1S0(8)]   ',  'q + q~ -> g + bb~[3PJ(8)]   ',
2154      7'g + g  -> bb~[3P0(1)] + g   ',  'g + g  -> bb~[3P1(1)] + g   ',
2155      7'g + g  -> bb~[3P2(1)] + g   ',  'q + g  -> q + bb~[3P0(1)]   ',
2156      7'q + g  -> q + bb~[3P1(1)]   ',  'q + g  -> q + bb~[3P2(1)]   ',
2157      7'q + q~ -> g + bb~[3P0(1)]   ',  'q + q~ -> g + bb~[3P1(1)]   ',
2158      7'q + q~ -> g + bb~[3P2(1)]   ',
2159      7     21 *'                            '/
2160  
2161 C...Cross sections and slope offsets.
2162       DATA SIGT/294*0D0/
2163  
2164 C...Supersymmetry switches and parameters.
2165       DATA IMSS/0,
2166      &  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
2167      1  89*0/
2168       DATA RMSS/0D0,
2169      &  80D0,160D0,500D0,800D0,2D0,250D0,200D0,800D0,700D0,800D0,
2170      1  700D0,500D0,250D0,200D0,800D0,400D0,0D0,0.1D0,850D0,0.041D0,
2171      2   1D0,800D0,1D4,1D4,1D4,0D0,0D0,0D0,24D17,0D0,
2172      3  10*0D0,  
2173      4  0D0,1D0,8*0D0,  
2174      5  49*0D0/
2175 C...Initial values for R-violating SUSY couplings.
2176 C...Should not be changed here. See PYMSIN.
2177       DATA RVLAM/27*0D0/
2178       DATA RVLAMP/27*0D0/
2179       DATA RVLAMB/27*0D0/
2180  
2181 C...Technicolor switches and parameters
2182       DATA ITCM/0,
2183      &  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
2184      1  89*0/
2185       DATA RTCM/0D0,
2186      &  82D0,1.333D0,.333D0,0.408D0,1D0,1D0,.0182D0,1D0,0D0,1.333D0,
2187      1  .05D0,200D0,200D0,0D0,0D0,0D0,0D0,0D0,0D0,0D0,
2188      2  .283D0,.707D0,0D0,0D0,0D0,1.667D0,250D0,250D0,.707D0,0D0,
2189      3  .707D0,0D0,1D0,0D0,0D0,0D0,0D0,0D0,0D0,0D0,
2190      4  1000D0, 1D0, 1D0, 1D0, 1D0, 0D0, 1D0, 3*200D0,
2191      4  200D0, 48*0D0/
2192  
2193 C...UED switches and parameters.
2194 C... IUED(0) empty IUED vector element
2195 C... IUED(1) UED ON(=1)/OFF(=0) switch
2196 C... IUED(2) ON(=1)/OFF(=0) switch for gravity mediated decays
2197 C... IUED(3) NFLAVOURS Number of KK excitation quark flavours
2198 C... IUED(4) N the number of large extra dimensions
2199 C... IUED(5) Selects whether the code takes Lambda (=0)
2200 C...         or Lambda*R (=1) as input.
2201 C... IUED(6) With radiative corrections to the masses (=1)
2202 C...         or without (=0)
2203 C...
2204 C... RUED(0) empty RUED vector element
2205 C... RUED(1) RINV (1/R) the curvature of the extra dimension
2206 C... RUED(2) XMD the (4+N)-dimensional Planck scale
2207 C... RUED(3) LAMUED (Lambda cutoff scale)
2208 C... RUED(4) LAMUED/RINV (feasible values are order of 10-20)
2209 C...
2210       DATA IUED/0,0,0,5,6,0,1,93*0/
2211       DATA RUED/0.D0,1000D0,5000D0,20000.,20.,95*0D0/
2212 
2213 C...Data for histogramming routines.
2214       DATA IHIST/1000,20000,55,1/
2215       DATA INDX/1000*0/
2216 
2217 C...Data for SUSY Les Houches Accord.
2218       DATA CPRO/'PYTHIA      ','PYTHIA      '/
2219       DATA CVER/'6.4         ','6.4         '/
2220       DATA MODSEL/200*0/
2221       DATA PARMIN/100*0D0/
2222       DATA RMSOFT/101*0D0/
2223       DATA AU/9*0D0/
2224       DATA AD/9*0D0/
2225       DATA AE/9*0D0/
2226  
2227       END
2228  
2229 C*********************************************************************
2230  
2231 C...PYCKBD
2232 C...Check that BLOCK DATA PYDATA has been loaded.
2233 C...Should not be required, except that some compilers/linkers
2234 C...are pretty buggy in this respect.
2235  
2236       SUBROUTINE PYCKBD
2237  
2238 C...Double precision and integer declarations.
2239       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2240       IMPLICIT INTEGER(I-N)
2241       INTEGER PYK,PYCHGE,PYCOMP
2242 C...Commonblocks.
2243       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
2244       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2245       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2246       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
2247       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
2248       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
2249       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/
2250  
2251 C...Check a few variables to see they have been sensibly initialized.
2252       IF(MSTU(4).LT.10.OR.MSTU(4).GT.900000.OR.PMAS(2,1).LT.0.001D0
2253      &.OR.PMAS(2,1).GT.1D0.OR.CKIN(5).LT.0.01D0.OR.MSTP(1).LT.1.OR.
2254      &MSTP(1).GT.5) THEN
2255 C...If not, abort the run right away.
2256         WRITE(*,*) 'Fatal error: BLOCK DATA PYDATA has not been loaded!'
2257         WRITE(*,*) 'The program execution is stopped now!'
2258         CALL PYSTOP(8)
2259       ENDIF
2260  
2261       RETURN
2262       END
2263  
2264 C*********************************************************************
2265  
2266 C...PYTEST
2267 C...A simple program (disguised as subroutine) to run at installation
2268 C...as a check that the program works as intended.
2269  
2270       SUBROUTINE PYTEST(MTEST)
2271  
2272 C...Double precision and integer declarations.
2273       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2274       IMPLICIT INTEGER(I-N)
2275       INTEGER PYK,PYCHGE,PYCOMP
2276 C...Commonblocks.
2277       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
2278       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2279       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2280       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
2281       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
2282       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
2283       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/
2284 C...Local arrays.
2285       DIMENSION PSUM(5),PINI(6),PFIN(6)
2286  
2287 C...Save defaults for values that are changed.
2288       MSTJ1=MSTJ(1)
2289       MSTJ3=MSTJ(3)
2290       MSTJ11=MSTJ(11)
2291       MSTJ42=MSTJ(42)
2292       MSTJ43=MSTJ(43)
2293       MSTJ44=MSTJ(44)
2294       PARJ17=PARJ(17)
2295       PARJ22=PARJ(22)
2296       PARJ43=PARJ(43)
2297       PARJ54=PARJ(54)
2298       MST101=MSTJ(101)
2299       MST104=MSTJ(104)
2300       MST105=MSTJ(105)
2301       MST107=MSTJ(107)
2302       MST116=MSTJ(116)
2303  
2304 C...First part: loop over simple events to be generated.
2305       IF(MTEST.GE.1) CALL PYTABU(20)
2306       NERR=0
2307       DO 180 IEV=1,500
2308  
2309 C...Reset parameter values. Switch on some nonstandard features.
2310         MSTJ(1)=1
2311         MSTJ(3)=0
2312         MSTJ(11)=1
2313         MSTJ(42)=2
2314         MSTJ(43)=4
2315         MSTJ(44)=2
2316         PARJ(17)=0.1D0
2317         PARJ(22)=1.5D0
2318         PARJ(43)=1D0
2319         PARJ(54)=-0.05D0
2320         MSTJ(101)=5
2321         MSTJ(104)=5
2322         MSTJ(105)=0
2323         MSTJ(107)=1
2324         IF(IEV.EQ.301.OR.IEV.EQ.351.OR.IEV.EQ.401) MSTJ(116)=3
2325  
2326 C...Ten events each for some single jets configurations.
2327         IF(IEV.LE.50) THEN
2328           ITY=(IEV+9)/10
2329           MSTJ(3)=-1
2330           IF(ITY.EQ.3.OR.ITY.EQ.4) MSTJ(11)=2
2331           IF(ITY.EQ.1) CALL PY1ENT(1,1,15D0,0D0,0D0)
2332           IF(ITY.EQ.2) CALL PY1ENT(1,3101,15D0,0D0,0D0)
2333           IF(ITY.EQ.3) CALL PY1ENT(1,-2203,15D0,0D0,0D0)
2334           IF(ITY.EQ.4) CALL PY1ENT(1,-4,30D0,0D0,0D0)
2335           IF(ITY.EQ.5) CALL PY1ENT(1,21,15D0,0D0,0D0)
2336  
2337 C...Ten events each for some simple jet systems; string fragmentation.
2338         ELSEIF(IEV.LE.130) THEN
2339           ITY=(IEV-41)/10
2340           IF(ITY.EQ.1) CALL PY2ENT(1,1,-1,40D0)
2341           IF(ITY.EQ.2) CALL PY2ENT(1,4,-4,30D0)
2342           IF(ITY.EQ.3) CALL PY2ENT(1,2,2103,100D0)
2343           IF(ITY.EQ.4) CALL PY2ENT(1,21,21,40D0)
2344           IF(ITY.EQ.5) CALL PY3ENT(1,2101,21,-3203,30D0,0.6D0,0.8D0)
2345           IF(ITY.EQ.6) CALL PY3ENT(1,5,21,-5,40D0,0.9D0,0.8D0)
2346           IF(ITY.EQ.7) CALL PY3ENT(1,21,21,21,60D0,0.7D0,0.5D0)
2347           IF(ITY.EQ.8) CALL PY4ENT(1,2,21,21,-2,40D0,
2348      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2349  
2350 C...Seventy events with independent fragmentation and momentum cons.
2351         ELSEIF(IEV.LE.200) THEN
2352           ITY=1+(IEV-131)/16
2353           MSTJ(2)=1+MOD(IEV-131,4)
2354           MSTJ(3)=1+MOD((IEV-131)/4,4)
2355           IF(ITY.EQ.1) CALL PY2ENT(1,4,-5,40D0)
2356           IF(ITY.EQ.2) CALL PY3ENT(1,3,21,-3,40D0,0.9D0,0.4D0)
2357           IF(ITY.EQ.3) CALL PY4ENT(1,2,21,21,-2,40D0,
2358      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2359           IF(ITY.GE.4) CALL PY4ENT(1,2,-3,3,-2,40D0,
2360      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
2361  
2362 C...A hundred events with random jets (check invariant mass).
2363         ELSEIF(IEV.LE.300) THEN
2364   100     DO 110 J=1,5
2365             PSUM(J)=0D0
2366   110     CONTINUE
2367           NJET=2D0+6D0*PYR(0)
2368           DO 130 I=1,NJET
2369             KFL=21
2370             IF(I.EQ.1) KFL=INT(1D0+4D0*PYR(0))
2371             IF(I.EQ.NJET) KFL=-INT(1D0+4D0*PYR(0))
2372             EJET=5D0+20D0*PYR(0)
2373             THETA=ACOS(2D0*PYR(0)-1D0)
2374             PHI=6.2832D0*PYR(0)
2375             IF(I.LT.NJET) CALL PY1ENT(-I,KFL,EJET,THETA,PHI)
2376             IF(I.EQ.NJET) CALL PY1ENT(I,KFL,EJET,THETA,PHI)
2377             IF(I.EQ.1.OR.I.EQ.NJET) MSTJ(93)=1
2378             IF(I.EQ.1.OR.I.EQ.NJET) PSUM(5)=PSUM(5)+PYMASS(KFL)
2379             DO 120 J=1,4
2380               PSUM(J)=PSUM(J)+P(I,J)
2381   120       CONTINUE
2382   130     CONTINUE
2383           IF(PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2.LT.
2384      &    (PSUM(5)+PARJ(32))**2) GOTO 100
2385  
2386 C...Fifty e+e- continuum events with matrix elements.
2387         ELSEIF(IEV.LE.350) THEN
2388           MSTJ(101)=2
2389           CALL PYEEVT(0,40D0)
2390  
2391 C...Fifty e+e- continuum event with varying shower options.
2392         ELSEIF(IEV.LE.400) THEN
2393           MSTJ(42)=1+MOD(IEV,2)
2394           MSTJ(43)=1+MOD(IEV/2,4)
2395           MSTJ(44)=MOD(IEV/8,3)
2396           CALL PYEEVT(0,90D0)
2397  
2398 C...Fifty e+e- continuum events with coherent shower.
2399         ELSEIF(IEV.LE.450) THEN
2400           CALL PYEEVT(0,500D0)
2401  
2402 C...Fifty Upsilon decays to ggg or gammagg with coherent shower.
2403         ELSE
2404           CALL PYONIA(5,9.46D0)
2405         ENDIF
2406  
2407 C...Generate event. Find total momentum, energy and charge.
2408         DO 140 J=1,4
2409           PINI(J)=PYP(0,J)
2410   140   CONTINUE
2411         PINI(6)=PYP(0,6)
2412         CALL PYEXEC
2413         DO 150 J=1,4
2414           PFIN(J)=PYP(0,J)
2415   150   CONTINUE
2416         PFIN(6)=PYP(0,6)
2417  
2418 C...Check conservation of energy, momentum and charge;
2419 C...usually exact, but only approximate for single jets.
2420         MERR=0
2421         IF(IEV.LE.50) THEN
2422           IF((PFIN(1)-PINI(1))**2+(PFIN(2)-PINI(2))**2.GE.10D0)
2423      &    MERR=MERR+1
2424           EPZREM=PINI(4)+PINI(3)-PFIN(4)-PFIN(3)
2425           IF(EPZREM.LT.0D0.OR.EPZREM.GT.2D0*PARJ(31)) MERR=MERR+1
2426           IF(ABS(PFIN(6)-PINI(6)).GT.2.1D0) MERR=MERR+1
2427         ELSE
2428           DO 160 J=1,4
2429             IF(ABS(PFIN(J)-PINI(J)).GT.0.0001D0*PINI(4)) MERR=MERR+1
2430   160     CONTINUE
2431           IF(ABS(PFIN(6)-PINI(6)).GT.0.1D0) MERR=MERR+1
2432         ENDIF
2433         IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6),
2434      &  (PFIN(J),J=1,4),PFIN(6)
2435  
2436 C...Check that all KF codes are known ones, and that partons/particles
2437 C...satisfy energy-momentum-mass relation. Store particle statistics.
2438         DO 170 I=1,N
2439           IF(K(I,1).GT.20) GOTO 170
2440           IF(PYCOMP(K(I,2)).EQ.0) THEN
2441             WRITE(MSTU(11),5100) I
2442             MERR=MERR+1
2443           ENDIF
2444           PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
2445           IF(ABS(PD).GT.MAX(0.1D0,0.001D0*P(I,4)**2).OR.P(I,4).LT.0D0)
2446      &    THEN
2447             WRITE(MSTU(11),5200) I
2448             MERR=MERR+1
2449           ENDIF
2450   170   CONTINUE
2451         IF(MTEST.GE.1) CALL PYTABU(21)
2452  
2453 C...List all erroneous events and some normal ones.
2454         IF(MERR.NE.0.OR.MSTU(24).NE.0.OR.MSTU(28).NE.0) THEN
2455           IF(MERR.GE.1) WRITE(MSTU(11),6400)
2456           CALL PYLIST(2)
2457         ELSEIF(MTEST.GE.1.AND.MOD(IEV-5,100).EQ.0) THEN
2458           CALL PYLIST(1)
2459         ENDIF
2460  
2461 C...Stop execution if too many errors.
2462         IF(MERR.NE.0) NERR=NERR+1
2463         IF(NERR.GE.10) THEN
2464           WRITE(MSTU(11),6300)
2465           CALL PYLIST(1)
2466           CALL PYSTOP(9)
2467         ENDIF
2468   180 CONTINUE
2469  
2470 C...Summarize result of run.
2471       IF(MTEST.GE.1) CALL PYTABU(22)
2472  
2473 C...Reset commonblock variables changed during run.
2474       MSTJ(1)=MSTJ1
2475       MSTJ(3)=MSTJ3
2476       MSTJ(11)=MSTJ11
2477       MSTJ(42)=MSTJ42
2478       MSTJ(43)=MSTJ43
2479       MSTJ(44)=MSTJ44
2480       PARJ(17)=PARJ17
2481       PARJ(22)=PARJ22
2482       PARJ(43)=PARJ43
2483       PARJ(54)=PARJ54
2484       MSTJ(101)=MST101
2485       MSTJ(104)=MST104
2486       MSTJ(105)=MST105
2487       MSTJ(107)=MST107
2488       MSTJ(116)=MST116
2489  
2490 C...Second part: complete events of various kinds.
2491 C...Common initial values. Loop over initiating conditions.
2492       MSTP(122)=MAX(0,MIN(2,MTEST))
2493       MDCY(PYCOMP(111),1)=0
2494       DO 230 IPROC=1,8
2495  
2496 C...Reset process type, kinematics cuts, and the flags used.
2497         MSEL=0
2498         DO 190 ISUB=1,500
2499           MSUB(ISUB)=0
2500   190   CONTINUE
2501         CKIN(1)=2D0
2502         CKIN(3)=0D0
2503         MSTP(2)=1
2504         MSTP(11)=0
2505         MSTP(33)=0
2506         MSTP(81)=1
2507         MSTP(82)=1
2508         MSTP(111)=1
2509         MSTP(131)=0
2510         MSTP(133)=0
2511         PARP(131)=0.01D0
2512  
2513 C...Prompt photon production at fixed target.
2514         IF(IPROC.EQ.1) THEN
2515           PZSUM=300D0
2516           PESUM=SQRT(PZSUM**2+PYMASS(211)**2)+PYMASS(2212)
2517           PQSUM=2D0
2518           MSEL=10
2519           CKIN(3)=5D0
2520           CALL PYINIT('FIXT','pi+','p',PZSUM)
2521  
2522 C...QCD processes at ISR energies.
2523         ELSEIF(IPROC.EQ.2) THEN
2524           PESUM=63D0
2525           PZSUM=0D0
2526           PQSUM=2D0
2527           MSEL=1
2528           CKIN(3)=5D0
2529           CALL PYINIT('CMS','p','p',PESUM)
2530  
2531 C...W production + multiple interactions at CERN Collider.
2532         ELSEIF(IPROC.EQ.3) THEN
2533           PESUM=630D0
2534           PZSUM=0D0
2535           PQSUM=0D0
2536           MSEL=12
2537           CKIN(1)=20D0
2538           MSTP(82)=4
2539           MSTP(2)=2
2540           MSTP(33)=3
2541           CALL PYINIT('CMS','p','pbar',PESUM)
2542  
2543 C...W/Z gauge boson pairs + pileup events at the Tevatron.
2544         ELSEIF(IPROC.EQ.4) THEN
2545           PESUM=1800D0
2546           PZSUM=0D0
2547           PQSUM=0D0
2548           MSUB(22)=1
2549           MSUB(23)=1
2550           MSUB(25)=1
2551           CKIN(1)=200D0
2552           MSTP(111)=0
2553           MSTP(131)=1
2554           MSTP(133)=2
2555           PARP(131)=0.04D0
2556           CALL PYINIT('CMS','p','pbar',PESUM)
2557  
2558 C...Higgs production at LHC.
2559         ELSEIF(IPROC.EQ.5) THEN
2560           PESUM=15400D0
2561           PZSUM=0D0
2562           PQSUM=2D0
2563           MSUB(3)=1
2564           MSUB(102)=1
2565           MSUB(123)=1
2566           MSUB(124)=1
2567           PMAS(25,1)=300D0
2568           CKIN(1)=200D0
2569           MSTP(81)=0
2570           MSTP(111)=0
2571           CALL PYINIT('CMS','p','p',PESUM)
2572  
2573 C...Z' production at SSC.
2574         ELSEIF(IPROC.EQ.6) THEN
2575           PESUM=40000D0
2576           PZSUM=0D0
2577           PQSUM=2D0
2578           MSEL=21
2579           PMAS(32,1)=600D0
2580           CKIN(1)=400D0
2581           MSTP(81)=0
2582           MSTP(111)=0
2583           CALL PYINIT('CMS','p','p',PESUM)
2584  
2585 C...W pair production at 1 TeV e+e- collider.
2586         ELSEIF(IPROC.EQ.7) THEN
2587           PESUM=1000D0
2588           PZSUM=0D0
2589           PQSUM=0D0
2590           MSUB(25)=1
2591           MSUB(69)=1
2592           MSTP(11)=1
2593           CALL PYINIT('CMS','e+','e-',PESUM)
2594  
2595 C...Deep inelastic scattering at a LEP+LHC ep collider.
2596         ELSEIF(IPROC.EQ.8) THEN
2597           P(1,1)=0D0
2598           P(1,2)=0D0
2599           P(1,3)=8000D0
2600           P(2,1)=0D0
2601           P(2,2)=0D0
2602           P(2,3)=-80D0
2603           PESUM=8080D0
2604           PZSUM=7920D0
2605           PQSUM=0D0
2606           MSUB(10)=1
2607           CKIN(3)=50D0
2608           MSTP(111)=0
2609           CALL PYINIT('3MOM','p','e-',PESUM)
2610         ENDIF
2611  
2612 C...Generate 20 events of each required type.
2613         DO 220 IEV=1,20
2614           CALL PYEVNT
2615           PESUMM=PESUM
2616           IF(IPROC.EQ.4) PESUMM=MSTI(41)*PESUM
2617  
2618 C...Check conservation of energy/momentum/flavour.
2619           PINI(1)=0D0
2620           PINI(2)=0D0
2621           PINI(3)=PZSUM
2622           PINI(4)=PESUMM
2623           PINI(6)=PQSUM
2624           DO 200 J=1,4
2625             PFIN(J)=PYP(0,J)
2626   200     CONTINUE
2627           PFIN(6)=PYP(0,6)
2628           MERR=0
2629           DEVE=ABS(PFIN(4)-PINI(4))+ABS(PFIN(3)-PINI(3))
2630           DEVT=ABS(PFIN(1)-PINI(1))+ABS(PFIN(2)-PINI(2))
2631           DEVQ=ABS(PFIN(6)-PINI(6))
2632           IF(DEVE.GT.2D-3*PESUM.OR.DEVT.GT.MAX(0.01D0,1D-4*PESUM).OR.
2633      &    DEVQ.GT.0.1D0) MERR=1
2634           IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6),
2635      &    (PFIN(J),J=1,4),PFIN(6)
2636  
2637 C...Check that all KF codes are known ones, and that partons/particles
2638 C...satisfy energy-momentum-mass relation.
2639           DO 210 I=1,N
2640             IF(K(I,1).GT.20) GOTO 210
2641             IF(PYCOMP(K(I,2)).EQ.0) THEN
2642               WRITE(MSTU(11),5100) I
2643               MERR=MERR+1
2644             ENDIF
2645             PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2*
2646      &      SIGN(1D0,P(I,5))
2647             IF(ABS(PD).GT.MAX(0.1D0,0.002D0*P(I,4)**2,0.002D0*P(I,5)**2)
2648      &      .OR.(P(I,5).GE.0D0.AND.P(I,4).LT.0D0)) THEN
2649               WRITE(MSTU(11),5200) I
2650               MERR=MERR+1
2651             ENDIF
2652   210     CONTINUE
2653  
2654 C...Listing of erroneous events, and first event of each type.
2655           IF(MERR.GE.1) NERR=NERR+1
2656           IF(NERR.GE.10) THEN
2657             WRITE(MSTU(11),6300)
2658             CALL PYLIST(1)
2659             CALL PYSTOP(9)
2660           ENDIF
2661           IF(MTEST.GE.1.AND.(MERR.GE.1.OR.IEV.EQ.1)) THEN
2662             IF(MERR.GE.1) WRITE(MSTU(11),6400)
2663             CALL PYLIST(1)
2664           ENDIF
2665   220   CONTINUE
2666  
2667 C...List statistics for each process type.
2668         IF(MTEST.GE.1) CALL PYSTAT(1)
2669   230 CONTINUE
2670  
2671 C...Summarize result of run.
2672       IF(NERR.EQ.0) WRITE(MSTU(11),6500)
2673       IF(NERR.GT.0) WRITE(MSTU(11),6600) NERR
2674  
2675 C...Format statements for output.
2676  5000 FORMAT(/' Momentum, energy and/or charge were not conserved ',
2677      &'in following event'/' sum of',9X,'px',11X,'py',11X,'pz',11X,
2678      &'E',8X,'charge'/' before',2X,4(1X,F12.5),1X,F8.2/' after',3X,
2679      &4(1X,F12.5),1X,F8.2)
2680  5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code')
2681  5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ',
2682      &'kinematics')
2683  6300 FORMAT(/5X,'This is the tenth error experienced! Something is ',
2684      &'wrong.'/5X,'Execution will be stopped after listing of event.')
2685  6400 FORMAT(5X,'Faulty event follows:')
2686  6500 FORMAT(//5X,'End result of PYTEST: no errors detected.')
2687  6600 FORMAT(//5X,'End result of PYTEST:',I2,' errors detected.'/
2688      &5X,'This should not have happened!')
2689  
2690       RETURN
2691       END
2692  
2693 C*********************************************************************
2694  
2695 C...PYHEPC
2696 C...Converts PYTHIA event record contents to or from
2697 C...the standard event record commonblock.
2698  
2699       SUBROUTINE PYHEPC(MCONV)
2700  
2701 C...Double precision and integer declarations.
2702       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2703       IMPLICIT INTEGER(I-N)
2704       INTEGER PYK,PYCHGE,PYCOMP
2705 C...Commonblocks.
2706       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
2707       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2708       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2709       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
2710 C...HEPEVT commonblock.
2711       PARAMETER (NMXHEP=4000)
2712       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
2713      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
2714       DOUBLE PRECISION PHEP,VHEP
2715       SAVE /HEPEVT/
2716       
2717 C...Store HEPEVT commonblock size (for interfacing issues).
2718       MSTU(8)=NMXHEP
2719       
2720 C...Initialize variable(s)
2721       INEW = 1
2722  
2723 C...Conversion from PYTHIA to standard, the easy part.
2724       IF(MCONV.EQ.1) THEN
2725         NEVHEP=0
2726         IF(N.GT.NMXHEP) CALL PYERRM(8,
2727      &  '(PYHEPC:) no more space in /HEPEVT/')
2728         NHEP=MIN(N,NMXHEP)
2729         DO 150 I=1,NHEP
2730           ISTHEP(I)=0
2731           IF(K(I,1).GE.1.AND.K(I,1).LE.10) ISTHEP(I)=1
2732           IF(K(I,1).GE.11.AND.K(I,1).LE.20) ISTHEP(I)=2
2733           IF(K(I,1).GE.21.AND.K(I,1).LE.30) ISTHEP(I)=3
2734           IF(K(I,1).GE.31.AND.K(I,1).LE.100) ISTHEP(I)=K(I,1)
2735           IDHEP(I)=K(I,2)
2736           JMOHEP(1,I)=K(I,3)
2737           JMOHEP(2,I)=0
2738           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN
2739             JDAHEP(1,I)=K(I,4)
2740             JDAHEP(2,I)=K(I,5)
2741           ELSE
2742             JDAHEP(1,I)=0
2743             JDAHEP(2,I)=0
2744           ENDIF
2745           DO 100 J=1,5
2746             PHEP(J,I)=P(I,J)
2747   100     CONTINUE
2748           DO 110 J=1,4
2749             VHEP(J,I)=V(I,J)
2750   110     CONTINUE
2751  
2752 C...Check if new event (from pileup).
2753           IF(I.EQ.1) THEN
2754             INEW=1
2755           ELSE
2756             IF(K(I,1).EQ.21.AND.K(I-1,1).NE.21) INEW=I
2757           ENDIF
2758  
2759 C...Fill in missing mother information.
2760           IF(I.GE.INEW+2.AND.K(I,1).EQ.21.AND.K(I,3).EQ.0) THEN
2761             IMO1=I-2
2762   120       IF(IMO1.GT.INEW.AND.K(IMO1+1,1).EQ.21.AND.K(IMO1+1,3).EQ.0)
2763      &      THEN
2764               IMO1=IMO1-1
2765               GOTO 120
2766             ENDIF
2767             JMOHEP(1,I)=IMO1
2768             JMOHEP(2,I)=IMO1+1
2769           ELSEIF(K(I,2).GE.91.AND.K(I,2).LE.93) THEN
2770             I1=K(I,3)-1
2771   130       I1=I1+1
2772             IF(I1.GE.I) CALL PYERRM(8,
2773      &      '(PYHEPC:) translation of inconsistent event history')
2774             IF(I1.LT.I.AND.K(I1,1).NE.1.AND.K(I1,1).NE.11) GOTO 130
2775             KC=PYCOMP(K(I1,2))
2776             IF(I1.LT.I.AND.KC.EQ.0) GOTO 130
2777             IF(I1.LT.I.AND.KCHG(KC,2).EQ.0) GOTO 130
2778             JMOHEP(2,I)=I1
2779           ELSEIF(K(I,2).EQ.94) THEN
2780             NJET=2
2781             IF(NHEP.GE.I+3.AND.K(I+3,3).LE.I) NJET=3
2782             IF(NHEP.GE.I+4.AND.K(I+4,3).LE.I) NJET=4
2783             JMOHEP(2,I)=MOD(K(I+NJET,4)/MSTU(5),MSTU(5))
2784             IF(JMOHEP(2,I).EQ.JMOHEP(1,I)) JMOHEP(2,I)=
2785      &      MOD(K(I+1,4)/MSTU(5),MSTU(5))
2786           ENDIF
2787  
2788 C...Fill in missing daughter information.
2789           IF(K(I,2).EQ.94.AND.MSTU(16).NE.2) THEN
2790             DO 140 I1=JDAHEP(1,I),JDAHEP(2,I)
2791               I2=MOD(K(I1,4)/MSTU(5),MSTU(5))
2792               JDAHEP(1,I2)=I
2793   140       CONTINUE
2794           ENDIF
2795           IF(K(I,2).GE.91.AND.K(I,2).LE.94) GOTO 150
2796           I1=JMOHEP(1,I)
2797           IF(I1.LE.0.OR.I1.GT.NHEP) GOTO 150
2798           IF(K(I1,1).NE.13.AND.K(I1,1).NE.14) GOTO 150
2799           IF(JDAHEP(1,I1).EQ.0) THEN
2800             JDAHEP(1,I1)=I
2801           ELSE
2802             JDAHEP(2,I1)=I
2803           ENDIF
2804   150   CONTINUE
2805         DO 160 I=1,NHEP
2806           IF(K(I,1).NE.13.AND.K(I,1).NE.14) GOTO 160
2807           IF(JDAHEP(2,I).EQ.0) JDAHEP(2,I)=JDAHEP(1,I)
2808   160   CONTINUE
2809  
2810 C...Conversion from standard to PYTHIA, the easy part.
2811       ELSE
2812         IF(NHEP.GT.MSTU(4)) CALL PYERRM(8,
2813      &  '(PYHEPC:) no more space in /PYJETS/')
2814         N=MIN(NHEP,MSTU(4))
2815         NKQ=0
2816         KQSUM=0
2817         DO 190 I=1,N
2818           K(I,1)=0
2819           IF(ISTHEP(I).EQ.1) K(I,1)=1
2820           IF(ISTHEP(I).EQ.2) THEN
2821              K(I,1)=11
2822              IF(K(I,4).GT.0.AND.(K(I,4).EQ.K(I,5)).AND.
2823      $ (K(K(I,4),2).GE.91.AND.K(K(I,4),2).LE.93).AND.
2824      $ (I.LT.N).AND.(K(I,4).EQ.K(I+1,4))) K(I,1)=12
2825           ENDIF
2826           IF(ISTHEP(I).EQ.3) K(I,1)=21
2827           K(I,2)=IDHEP(I)
2828           K(I,3)=JMOHEP(1,I)
2829           K(I,4)=JDAHEP(1,I)
2830           K(I,5)=JDAHEP(2,I)
2831           DO 170 J=1,5
2832             P(I,J)=PHEP(J,I)
2833   170     CONTINUE
2834           DO 180 J=1,4
2835             V(I,J)=VHEP(J,I)
2836   180     CONTINUE
2837           V(I,5)=0D0
2838           IF(ISTHEP(I).EQ.2.AND.PHEP(4,I).GT.PHEP(5,I)) THEN
2839             I1=JDAHEP(1,I)
2840             IF(I1.GT.0.AND.I1.LE.NHEP) V(I,5)=(VHEP(4,I1)-VHEP(4,I))*
2841      &      PHEP(5,I)/PHEP(4,I)
2842           ENDIF
2843  
2844 C...Fill in missing information on colour connection in jet systems.
2845           IF(ISTHEP(I).EQ.1) THEN
2846             KC=PYCOMP(K(I,2))
2847             KQ=0
2848             IF(KC.NE.0) KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
2849             IF(KQ.NE.0) NKQ=NKQ+1
2850             IF(KQ.NE.2) KQSUM=KQSUM+KQ
2851             IF(KQ.NE.0.AND.KQSUM.NE.0) THEN
2852               K(I,1)=2
2853             ELSEIF(KQ.EQ.2.AND.I.LT.N) THEN
2854               IF(K(I+1,2).EQ.21) K(I,1)=2
2855             ENDIF
2856           ENDIF
2857   190   CONTINUE
2858         IF(NKQ.EQ.1.OR.KQSUM.NE.0) CALL PYERRM(8,
2859      &  '(PYHEPC:) input parton configuration not colour singlet')
2860       ENDIF
2861  
2862       END
2863  
2864 C*********************************************************************
2865  
2866 C...PYINIT
2867 C...Initializes the generation procedure; finds maxima of the
2868 C...differential cross-sections to be used for weighting.
2869  
2870       SUBROUTINE PYINIT(FRAME,BEAM,TARGET,WIN)
2871  
2872 C...Double precision and integer declarations.
2873       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
2874       IMPLICIT INTEGER(I-N)
2875       INTEGER PYK,PYCHGE,PYCOMP
2876 C...Commonblocks.
2877       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
2878       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
2879       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
2880       COMMON/PYDAT4/CHAF(500,2)
2881       CHARACTER CHAF*16
2882       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
2883       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
2884       COMMON/PYINT1/MINT(400),VINT(400)
2885       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
2886       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
2887       COMMON/PYPUED/IUED(0:99),RUED(0:99)
2888       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
2889      &/PYINT1/,/PYINT2/,/PYINT5/,/PYPUED/
2890 C...Local arrays and character variables.
2891       DIMENSION ALAMIN(20),NFIN(20)
2892       CHARACTER*(*) FRAME,BEAM,TARGET
2893       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHLH(2)*6
2894  
2895 C...Interface to PDFLIB.
2896       COMMON/W50511/NPTYPE,NGROUP,NSET,MODE,NFL,LO,TMAS
2897       COMMON/W50512/QCDL4,QCDL5
2898       SAVE /W50511/,/W50512/
2899       DOUBLE PRECISION VALUE(20),TMAS,QCDL4,QCDL5
2900       CHARACTER*20 PARM(20)
2901       DATA VALUE/20*0D0/,PARM/20*' '/
2902  
2903 C...Data:Lambda and n_f values for parton distributions..
2904       DATA ALAMIN/0.177D0,0.239D0,0.247D0,0.2322D0,0.248D0,0.248D0,
2905      &0.192D0,0.326D0,2*0.2D0,0.2D0,0.2D0,0.29D0,0.2D0,0.4D0,5*0.2D0/,
2906      &NFIN/20*4/
2907       DATA CHLH/'lepton','hadron'/
2908  
2909 C...Check that BLOCK DATA PYDATA has been loaded.
2910       CALL PYCKBD
2911  
2912 C...Reset MINT and VINT arrays. Write headers.
2913       MSTI(53)=0
2914       DO 100 J=1,400
2915         MINT(J)=0
2916         VINT(J)=0D0
2917   100 CONTINUE
2918       IF(MSTU(12).NE.12345) CALL PYLIST(0)
2919       IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
2920  
2921 C...Reset error counters.
2922       MSTU(23)=0
2923       MSTU(27)=0
2924       MSTU(30)=0
2925  
2926 C...Reset processes that should not be on.
2927       MSUB(96)=0
2928       MSUB(97)=0
2929  
2930 C...Select global FSR/ISR/UE parameter set = 'tune' 
2931 C...See routine PYTUNE for details
2932       IF (MSTP(5).NE.0) THEN
2933         MSTP5=MSTP(5)
2934         CALL PYTUNE(MSTP5)
2935       ENDIF
2936 
2937 C...Call user process initialization routine.
2938       IF(FRAME(1:1).EQ.'u'.OR.FRAME(1:1).EQ.'U') THEN
2939         MSEL=0
2940         CALL UPINIT
2941         MSEL=0
2942       ENDIF
2943  
2944 C...Maximum 4 generations; set maximum number of allowed flavours.
2945       MSTP(1)=MIN(4,MSTP(1))
2946       MSTU(114)=MIN(MSTU(114),2*MSTP(1))
2947       MSTP(58)=MIN(MSTP(58),2*MSTP(1))
2948  
2949 C...Sum up Cabibbo-Kobayashi-Maskawa factors for each quark/lepton.
2950       DO 120 I=-20,20
2951         VINT(180+I)=0D0
2952         IA=IABS(I)
2953         IF(IA.GE.1.AND.IA.LE.2*MSTP(1)) THEN
2954           DO 110 J=1,MSTP(1)
2955             IB=2*J-1+MOD(IA,2)
2956             IF(IB.GE.6.AND.MSTP(9).EQ.0) GOTO 110
2957             IPM=(5-ISIGN(1,I))/2
2958             IDC=J+MDCY(IA,2)+2
2959             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) VINT(180+I)=
2960      &      VINT(180+I)+VCKM((IA+1)/2,(IB+1)/2)
2961   110     CONTINUE
2962         ELSEIF(IA.GE.11.AND.IA.LE.10+2*MSTP(1)) THEN
2963           VINT(180+I)=1D0
2964         ENDIF
2965   120 CONTINUE
2966  
2967 C...Initialize parton distributions: PDFLIB.
2968       IF(MSTP(52).EQ.2) THEN
2969         PARM(1)='NPTYPE'
2970         VALUE(1)=1
2971         PARM(2)='NGROUP'
2972         VALUE(2)=MSTP(51)/1000
2973         PARM(3)='NSET'
2974         VALUE(3)=MOD(MSTP(51),1000)
2975         PARM(4)='TMAS'
2976         VALUE(4)=PMAS(6,1)
2977         call setlhaparm('SILENT')
2978         CALL PDFSET(PARM,VALUE)
2979         MINT(93)=1000000+MSTP(51)
2980       ENDIF
2981  
2982 C...Choose Lambda value to use in alpha-strong.
2983       MSTU(111)=MSTP(2)
2984       IF(MSTP(3).GE.2) THEN
2985         ALAM=0.2D0
2986         NF=4
2987         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
2988           ALAM=ALAMIN(MSTP(51))
2989           NF=NFIN(MSTP(51))
2990         ELSEIF(MSTP(52).EQ.2.AND.NFL.EQ.5) THEN
2991           ALAM=QCDL5
2992           NF=5
2993         ELSEIF(MSTP(52).EQ.2) THEN
2994           ALAM=QCDL4
2995           NF=4
2996         ENDIF
2997         PARP(1)=ALAM
2998         PARP(61)=ALAM
2999         PARP(72)=ALAM
3000         PARU(112)=ALAM
3001         MSTU(112)=NF
3002         IF(MSTP(3).EQ.3) PARJ(81)=ALAM
3003       ENDIF
3004  
3005 C...Initialize the UED masses and widths
3006       IF (IUED(1).EQ.1) CALL PYXDIN
3007 
3008 C...Initialize the SUSY generation: couplings, masses,
3009 C...decay modes, branching ratios, and so on.
3010       CALL PYMSIN
3011 C...Initialize widths and partial widths for resonances.
3012       CALL PYINRE
3013 C...Set Z0 mass and width for e+e- routines.
3014       PARJ(123)=PMAS(23,1)
3015       PARJ(124)=PMAS(23,2)
3016  
3017 C...Identify beam and target particles and frame of process.
3018       CHFRAM=FRAME//' '
3019       CHBEAM=BEAM//' '
3020       CHTARG=TARGET//' '
3021       CALL PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
3022       IF(MINT(65).EQ.1) GOTO 170
3023  
3024 C...For gamma-p or gamma-gamma allow many (3 or 6) alternatives.
3025 C...For e-gamma allow 2 alternatives.
3026       MINT(121)=1
3027       IF(MSTP(14).EQ.10.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
3028         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
3029      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=3
3030         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=6
3031         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
3032      &  (IABS(MINT(11)).EQ.11.OR.IABS(MINT(12)).EQ.11)) MINT(121)=2
3033       ELSEIF(MSTP(14).EQ.20.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
3034         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
3035      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=3
3036         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=9
3037       ELSEIF(MSTP(14).EQ.25.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
3038         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
3039      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=2
3040         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=4
3041       ELSEIF(MSTP(14).EQ.30.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
3042         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
3043      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=4
3044         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=13
3045       ENDIF
3046       MINT(123)=MSTP(14)
3047       IF((MSTP(14).EQ.10.OR.MSTP(14).EQ.20.OR.MSTP(14).EQ.25.OR.
3048      &MSTP(14).EQ.30).AND.MSEL.NE.1.AND.MSEL.NE.2) MINT(123)=0
3049       IF(MSTP(14).GE.11.AND.MSTP(14).LE.19) THEN
3050         IF(MSTP(14).EQ.11) MINT(123)=0
3051         IF(MSTP(14).EQ.12.OR.MSTP(14).EQ.14) MINT(123)=5
3052         IF(MSTP(14).EQ.13.OR.MSTP(14).EQ.17) MINT(123)=6
3053         IF(MSTP(14).EQ.15) MINT(123)=2
3054         IF(MSTP(14).EQ.16.OR.MSTP(14).EQ.18) MINT(123)=7
3055         IF(MSTP(14).EQ.19) MINT(123)=3
3056       ELSEIF(MSTP(14).GE.21.AND.MSTP(14).LE.24) THEN
3057         IF(MSTP(14).EQ.21) MINT(123)=0
3058         IF(MSTP(14).EQ.22.OR.MSTP(14).EQ.23) MINT(123)=4
3059         IF(MSTP(14).EQ.24) MINT(123)=1
3060       ELSEIF(MSTP(14).GE.26.AND.MSTP(14).LE.29) THEN
3061         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28) MINT(123)=8
3062         IF(MSTP(14).EQ.27.OR.MSTP(14).EQ.29) MINT(123)=9
3063       ENDIF
3064  
3065 C...Set up kinematics of process.
3066       CALL PYINKI(0)
3067  
3068 C...Set up kinematics for photons inside leptons.
3069       IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(1,WTGAGA)
3070  
3071 C...Precalculate flavour selection weights.
3072       CALL PYKFIN
3073  
3074 C...Loop over gamma-p or gamma-gamma alternatives.
3075       CKIN3=CKIN(3)
3076       MSAV48=0
3077       DO 160 IGA=1,MINT(121)
3078         CKIN(3)=CKIN3
3079         MINT(122)=IGA
3080  
3081 C...Select partonic subprocesses to be included in the simulation.
3082         CALL PYINPR
3083         MINT(101)=1
3084         MINT(102)=1
3085         MINT(103)=MINT(11)
3086         MINT(104)=MINT(12)
3087  
3088 C...Count number of subprocesses on.
3089         MINT(48)=0
3090         DO 130 ISUB=1,500
3091           IF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
3092      &    MSUB(ISUB).EQ.1.AND.MINT(121).GT.1) THEN
3093             MSUB(ISUB)=0
3094           ELSEIF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
3095      &    MSUB(ISUB).EQ.1) THEN
3096             WRITE(MSTU(11),5200) ISUB,CHLH(MINT(41)),CHLH(MINT(42))
3097             CALL PYSTOP(1)
3098           ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).EQ.-1) THEN
3099             WRITE(MSTU(11),5300) ISUB
3100             CALL PYSTOP(1)
3101           ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).LE.-2) THEN
3102             WRITE(MSTU(11),5400) ISUB
3103             CALL PYSTOP(1)
3104           ELSEIF(MSUB(ISUB).EQ.1) THEN
3105             MINT(48)=MINT(48)+1
3106           ENDIF
3107   130   CONTINUE
3108  
3109 C...Stop or raise warning flag if no subprocesses on.
3110         IF(MINT(121).EQ.1.AND.MINT(48).EQ.0) THEN
3111           IF(MSTP(127).NE.1) THEN
3112             WRITE(MSTU(11),5500)
3113             CALL PYSTOP(1)
3114           ELSE
3115             WRITE(MSTU(11),5700)
3116             MSTI(53)=1
3117           ENDIF
3118         ENDIF
3119         MINT(49)=MINT(48)-MSUB(91)-MSUB(92)-MSUB(93)-MSUB(94)
3120         MSAV48=MSAV48+MINT(48)
3121  
3122 C...Reset variables for cross-section calculation.
3123         DO 150 I=0,500
3124           DO 140 J=1,3
3125             NGEN(I,J)=0
3126             XSEC(I,J)=0D0
3127   140     CONTINUE
3128   150   CONTINUE
3129  
3130 C...Find parametrized total cross-sections.
3131         CALL PYXTOT
3132         VINT(318)=VINT(317)
3133  
3134 C...Maxima of differential cross-sections.
3135         IF(MSTP(121).LE.1) CALL PYMAXI
3136  
3137 C...Initialize possibility of pileup events.
3138         IF(MINT(121).GT.1) MSTP(131)=0
3139         IF(MSTP(131).NE.0) CALL PYPILE(1)
3140  
3141 C...Initialize multiple interactions with variable impact parameter.
3142         IF(MINT(50).EQ.1) THEN
3143           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
3144           IF(MOD(MSTP(81),10).EQ.0.AND.(CKIN(3).GT.PTMN.OR.
3145      &    ((MSEL.NE.1.AND.MSEL.NE.2)))) MSTP(82)=MIN(1,MSTP(82))
3146           IF((MINT(49).NE.0.OR.MSTP(131).NE.0).AND.MSTP(82).GE.2) THEN
3147             MINT(35)=1
3148             CALL PYMULT(1)
3149             MINT(35)=3
3150             CALL PYMIGN(1)
3151           ENDIF
3152         ENDIF
3153  
3154 C...Save results for gamma-p and gamma-gamma alternatives.
3155         IF(MINT(121).GT.1) CALL PYSAVE(1,IGA)
3156   160 CONTINUE
3157  
3158 C...Initialization finished.
3159       IF(MSAV48.EQ.0) THEN
3160         IF(MSTP(127).NE.1) THEN
3161           WRITE(MSTU(11),5500)
3162           CALL PYSTOP(1)
3163         ELSE
3164           WRITE(MSTU(11),5700)
3165           MSTI(53)=1
3166         ENDIF
3167       ENDIF
3168   170 IF(MSTP(122).GE.1) WRITE(MSTU(11),5600)
3169  
3170 C...Formats for initialization information.
3171  5100 FORMAT('1',18('*'),1X,'PYINIT: initialization of PYTHIA ',
3172      &'routines',1X,17('*'))
3173  5200 FORMAT(1X,'Error: process number ',I3,' not meaningful for ',A6,
3174      &'-',A6,' interactions.'/1X,'Execution stopped!')
3175  5300 FORMAT(1X,'Error: requested subprocess',I4,' not implemented.'/
3176      &1X,'Execution stopped!')
3177  5400 FORMAT(1X,'Error: requested subprocess',I4,' not existing.'/
3178      &1X,'Execution stopped!')
3179  5500 FORMAT(1X,'Error: no subprocess switched on.'/
3180      &1X,'Execution stopped.')
3181  5600 FORMAT(/1X,22('*'),1X,'PYINIT: initialization completed',1X,
3182      &22('*'))
3183  5700 FORMAT(1X,'Error: no subprocess switched on.'/
3184      &1X,'Execution will stop if you try to generate events.')
3185  
3186       RETURN
3187       END
3188  
3189 C*********************************************************************
3190  
3191 C...PYEVNT
3192 C...Administers the generation of a high-pT event via calls to
3193 C...a number of subroutines.
3194  
3195       SUBROUTINE PYEVNT
3196  
3197 C...Double precision and integer declarations.
3198       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3199       IMPLICIT INTEGER(I-N)
3200       INTEGER PYK,PYCHGE,PYCOMP
3201       PARAMETER (MAXNUR=1000)
3202 C...Commonblocks.
3203       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
3204       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
3205       COMMON/PYCTAG/NCT,MCT(4000,2)
3206       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3207       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3208       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3209       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3210       COMMON/PYINT1/MINT(400),VINT(400)
3211       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3212       COMMON/PYINT4/MWID(500),WIDS(500,5)
3213       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
3214       SAVE /PYJETS/,/PYDAT1/,/PYCTAG/,/PYDAT2/,/PYDAT3/,/PYPARS/,
3215      &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/
3216 C...Local array.
3217       DIMENSION VTX(4)
3218  
3219 C...Optionally let PYEVNW do the whole job.
3220       IF(MSTP(81).GE.20) THEN
3221         CALL PYEVNW
3222         RETURN
3223       ENDIF
3224  
3225 C...Stop if no subprocesses on.
3226       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
3227         WRITE(MSTU(11),5100)
3228         CALL PYSTOP(1)
3229       ENDIF
3230  
3231 C...Initial values for some counters.
3232       MSTU(1)=0
3233       MSTU(2)=0
3234       N=0
3235       MINT(5)=MINT(5)+1
3236       MINT(7)=0
3237       MINT(8)=0
3238       MINT(30)=0
3239       MINT(83)=0
3240       MINT(84)=MSTP(126)
3241       MSTU(24)=0
3242       MSTU70=0
3243       MSTJ14=MSTJ(14)
3244 C...Normally, use K(I,4:5) colour info rather than /PYCTAG/.
3245       NCT=0
3246       MINT(33)=0
3247  
3248 C...Let called routines know call is from PYEVNT (not PYEVNW).
3249       MINT(35)=1
3250       IF (MSTP(81).GE.10) MINT(35)=2
3251  
3252 C...If variable energies: redo incoming kinematics and cross-section.
3253       MSTI(61)=0
3254       IF(MSTP(171).EQ.1) THEN
3255         CALL PYINKI(1)
3256         IF(MSTI(61).EQ.1) THEN
3257           MINT(5)=MINT(5)-1
3258           RETURN
3259         ENDIF
3260         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
3261         CALL PYXTOT
3262       ENDIF
3263  
3264 C...Loop over number of pileup events; check space left.
3265       IF(MSTP(131).LE.0) THEN
3266         NPILE=1
3267       ELSE
3268         CALL PYPILE(2)
3269         NPILE=MINT(81)
3270       ENDIF
3271       DO 270 IPILE=1,NPILE
3272         IF(MINT(84)+100.GE.MSTU(4)) THEN
3273           CALL PYERRM(11,
3274      &    '(PYEVNT:) no more space in PYJETS for pileup events')
3275           IF(MSTU(21).GE.1) GOTO 280
3276         ENDIF
3277         MINT(82)=IPILE
3278  
3279 C...Generate variables of hard scattering.
3280         MINT(51)=0
3281         MSTI(52)=0
3282   100   CONTINUE
3283         IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
3284         MINT(31)=0
3285         MINT(39)=0
3286         MINT(51)=0
3287         MINT(57)=0
3288         CALL PYRAND
3289         IF(MSTI(61).EQ.1) THEN
3290           MINT(5)=MINT(5)-1
3291           RETURN
3292         ENDIF
3293         IF(MINT(51).EQ.2) RETURN
3294         ISUB=MINT(1)
3295         IF(MSTP(111).EQ.-1) GOTO 260
3296  
3297 C...Loopback point if PYPREP fails, especially for junction topologies.
3298         NPREP=0
3299         MNT31S=MINT(31)
3300   110   NPREP=NPREP+1
3301         MINT(31)=MNT31S
3302  
3303         IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
3304 C...Hard scattering (including low-pT):
3305 C...reconstruct kinematics and colour flow of hard scattering.
3306           MINT31=MINT(31)
3307   120     MINT(31)=MINT31
3308           MINT(51)=0
3309           CALL PYSCAT
3310           IF(MINT(51).EQ.1) GOTO 100
3311           IPU1=MINT(84)+1
3312           IPU2=MINT(84)+2
3313           IF(ISUB.EQ.95) GOTO 140
3314  
3315 C...Reset statistics on activity in event.
3316         DO 130 J=351,359
3317           MINT(J)=0
3318           VINT(J)=0D0
3319   130   CONTINUE
3320  
3321 C...Showering of initial state partons (optional).
3322           NFIN=N
3323           ALAMSV=PARJ(81)
3324           PARJ(81)=PARP(72)
3325           IF(MSTP(61).GE.1.AND.MINT(47).GE.2.AND.MINT(111).NE.12)
3326      &    CALL PYSSPA(IPU1,IPU2)
3327           PARJ(81)=ALAMSV
3328           IF(MINT(51).EQ.1) GOTO 100
3329 
3330 C...pT-ordered FSR off ISR (optional, must have at least 2 partons)
3331           IF (NPART.GE.2.AND.(MSTJ(41).EQ.11.OR.MSTJ(41).EQ.12)) THEN
3332             PTMAX=0.5*SQRT(PARP(71))*VINT(55)
3333             CALL PYPTFS(3,PTMAX,0D0,PTGEN)
3334           ENDIF
3335  
3336 C...Showering of final state partons (optional).
3337           ALAMSV=PARJ(81)
3338           PARJ(81)=PARP(72)
3339           IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.2.AND.ISET(ISUB).LE.10)
3340      &    THEN
3341             IPU3=MINT(84)+3
3342             IPU4=MINT(84)+4
3343             IF(ISET(ISUB).EQ.5) IPU4=-3
3344             QMAX=VINT(55)
3345             IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
3346             CALL PYSHOW(IPU3,IPU4,QMAX)
3347           ELSEIF(ISET(ISUB).EQ.11) THEN
3348             CALL PYADSH(NFIN)
3349           ENDIF
3350           PARJ(81)=ALAMSV
3351  
3352 C...Allow possibility for user to abort event generation.
3353           IVETO=0
3354           IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO)
3355           IF(IVETO.EQ.1) GOTO 100
3356  
3357 C...Decay of final state resonances.
3358           MINT(32)=0
3359           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) CALL PYRESD(0)
3360           IF(MINT(51).EQ.1) GOTO 100
3361           MINT(52)=N
3362  
3363  
3364 C...Multiple interactions - PYTHIA 6.3 intermediate style.
3365   140     IF(MSTP(81).GE.10.AND.MINT(50).EQ.1) THEN
3366             IF(ISUB.EQ.95) MINT(31)=MINT(31)+1
3367             CALL PYMIGN(6)
3368             IF(MINT(51).EQ.1) GOTO 100
3369             MINT(53)=N
3370  
3371 C...Beam remnant flavour and colour assignments - new scheme.
3372             CALL PYMIHK
3373             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3374      &      GOTO 120
3375             IF(MINT(51).EQ.1) GOTO 100
3376  
3377 C...Primordial kT and beam remnant momentum sharing - new scheme.
3378             CALL PYMIRM
3379             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3380      &      GOTO 120
3381             IF(MINT(51).EQ.1) GOTO 100
3382             IF(ISUB.EQ.95) MINT(31)=MINT(31)-1
3383  
3384 C...Multiple interactions - PYTHIA 6.2 style.
3385           ELSEIF(MINT(111).NE.12) THEN
3386             IF (MSTP(81).GE.1.AND.MINT(50).EQ.1.AND.ISUB.NE.95) THEN
3387               CALL PYMULT(6)
3388               MINT(53)=N
3389             ENDIF
3390  
3391 C...Hadron remnants and primordial kT.
3392             CALL PYREMN(IPU1,IPU2)
3393             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO
3394      &           110
3395             IF(MINT(51).EQ.1) GOTO 100
3396           ENDIF
3397  
3398         ELSEIF(ISUB.NE.99) THEN
3399 C...Diffractive and elastic scattering.
3400           CALL PYDIFF
3401  
3402         ELSE
3403 C...DIS scattering (photon flux external).
3404           CALL PYDISG
3405           IF(MINT(51).EQ.1) GOTO 100
3406         ENDIF
3407  
3408 C...Check that no odd resonance left undecayed.
3409         MINT(54)=N
3410         IF(MSTP(111).GE.1) THEN
3411           NFIX=N
3412           DO 150 I=MINT(84)+1,NFIX
3413             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
3414      &      K(I,2).NE.22) THEN
3415               KCA=PYCOMP(K(I,2))
3416               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
3417                 CALL PYRESD(I)
3418                 IF(MINT(51).EQ.1) GOTO 100
3419               ENDIF
3420             ENDIF
3421   150     CONTINUE
3422         ENDIF
3423  
3424 C...Boost hadronic subsystem to overall rest frame.
3425 C..(Only relevant when photon inside lepton beam.)
3426         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
3427  
3428 C...Recalculate energies from momenta and masses (if desired).
3429         IF(MSTP(113).GE.1) THEN
3430           DO 160 I=MINT(83)+1,N
3431             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
3432      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3433   160     CONTINUE
3434           NRECAL=N
3435         ENDIF
3436  
3437 C...Colour reconnection before string formation
3438         IF (MSTP(95).GE.2) CALL PYFSCR(MINT(84)+1)
3439 
3440 C...Rearrange partons along strings, check invariant mass cuts.
3441         MSTU(28)=0
3442         IF(MSTP(111).LE.0) MSTJ(14)=-1
3443         CALL PYPREP(MINT(84)+1)
3444         MSTJ(14)=MSTJ14
3445         IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN
3446           MSTU(24)=0
3447           GOTO 100
3448         ENDIF
3449         IF (MINT(51).EQ.1.AND.NPREP.LE.5) GOTO 110
3450         IF (MINT(51).EQ.1) GOTO 100
3451         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
3452         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
3453           DO 190 I=MINT(84)+1,N
3454             IF(K(I,2).EQ.94) THEN
3455               DO 180 I1=I+1,MIN(N,I+10)
3456                 IF(K(I1,3).EQ.I) THEN
3457                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
3458                   IF(K(I1,3).EQ.0) THEN
3459                     DO 170 II=MINT(84)+1,I-1
3460                         IF(K(II,2).EQ.K(I1,2)) THEN
3461                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
3462      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
3463                         ENDIF
3464   170               CONTINUE
3465                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
3466                   ENDIF
3467                 ENDIF
3468   180         CONTINUE
3469             ENDIF
3470   190     CONTINUE
3471           CALL PYEDIT(12)
3472           CALL PYEDIT(14)
3473           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
3474           IF(MSTP(125).EQ.0) MINT(4)=0
3475           DO 210 I=MINT(83)+1,N
3476             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
3477               DO 200 I1=I+1,N
3478                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
3479                 IF(K(I1,3).EQ.I) K(I,5)=I1
3480   200         CONTINUE
3481             ENDIF
3482   210     CONTINUE
3483         ENDIF
3484  
3485 C...Introduce separators between sections in PYLIST event listing.
3486         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
3487           MSTU70=1
3488           MSTU(71)=N
3489         ELSEIF(IPILE.EQ.1) THEN
3490           MSTU70=3
3491           MSTU(71)=2
3492           MSTU(72)=MINT(4)
3493           MSTU(73)=N
3494         ENDIF
3495  
3496 C...Go back to lab frame (needed for vertices, also in fragmentation).
3497         CALL PYFRAM(1)
3498  
3499 C...Set nonvanishing production vertex (optional).
3500         IF(MSTP(151).EQ.1) THEN
3501           DO 220 J=1,4
3502             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
3503      &      SIN(PARU(2)*PYR(0))
3504   220     CONTINUE
3505           DO 240 I=MINT(83)+1,N
3506             DO 230 J=1,4
3507               V(I,J)=V(I,J)+VTX(J)
3508   230       CONTINUE
3509   240     CONTINUE
3510         ENDIF
3511  
3512 C...Perform hadronization (if desired).
3513         IF(MSTP(111).GE.1) THEN
3514           CALL PYEXEC
3515           IF(MSTU(24).NE.0) GOTO 100
3516         ENDIF
3517         IF(MSTP(113).GE.1) THEN
3518           DO 250 I=NRECAL,N
3519             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
3520      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3521   250     CONTINUE
3522         ENDIF
3523         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
3524  
3525 C...Store event information and calculate Monte Carlo estimates of
3526 C...subprocess cross-sections.
3527   260   IF(IPILE.EQ.1) CALL PYDOCU
3528  
3529 C...Set counters for current pileup event and loop to next one.
3530         MSTI(41)=IPILE
3531         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
3532         IF(MSTU70.LT.10) THEN
3533           MSTU70=MSTU70+1
3534           MSTU(70+MSTU70)=N
3535         ENDIF
3536         MINT(83)=N
3537         MINT(84)=N+MSTP(126)
3538         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
3539   270 CONTINUE
3540  
3541 C...Generic information on pileup events. Reconstruct missing history.
3542       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
3543         PARI(91)=VINT(132)
3544         PARI(92)=VINT(133)
3545         PARI(93)=VINT(134)
3546         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
3547       ENDIF
3548       CALL PYEDIT(16)
3549  
3550 C...Transform to the desired coordinate frame.
3551   280 CALL PYFRAM(MSTP(124))
3552       MSTU(70)=MSTU70
3553       PARU(21)=VINT(1)
3554  
3555 C...Error messages
3556  5100 FORMAT(1X,'Error: no subprocess switched on.'/
3557      &1X,'Execution stopped.')
3558  
3559       RETURN
3560       END
3561  
3562 C*********************************************************************
3563  
3564 C...PYEVNW
3565 C...Administers the generation of a high-pT event via calls to
3566 C...a number of subroutines for the new multiple interactions and
3567 C...showering framework.
3568  
3569       SUBROUTINE PYEVNW
3570  
3571 C...Double precision and integer declarations.
3572       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
3573       IMPLICIT INTEGER(I-N)
3574       INTEGER PYK,PYCHGE,PYCOMP
3575       PARAMETER (MAXNUR=1000)
3576 C...Commonblocks.
3577       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
3578 C...Commonblocks.
3579       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
3580       COMMON/PYCTAG/NCT,MCT(4000,2)
3581       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
3582       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
3583       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
3584       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
3585       COMMON/PYINT1/MINT(400),VINT(400)
3586       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
3587       COMMON/PYINT4/MWID(500),WIDS(500,5)
3588       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
3589       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
3590      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
3591      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
3592       SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,
3593      &     /PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/,/PYINTM/
3594 C...Local arrays.
3595       DIMENSION VTX(4)
3596  
3597 C...Stop if no subprocesses on.
3598       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
3599         WRITE(MSTU(11),5100)
3600         CALL PYSTOP(1)
3601       ENDIF
3602  
3603 C...Initial values for some counters.
3604       MSTU(1)=0
3605       MSTU(2)=0
3606       N=0
3607       MINT(5)=MINT(5)+1
3608       MINT(7)=0
3609       MINT(8)=0
3610       MINT(30)=0
3611       MINT(83)=0
3612       MINT(84)=MSTP(126)
3613       MSTU(24)=0
3614       MSTU70=0
3615       MSTJ14=MSTJ(14)
3616 C...Normally, use K(I,4:5) colour info rather than /PYCT/.
3617       NCT=0
3618       MINT(33)=0
3619 C...Zero counters for pT-ordered showers (failsafe)
3620       NPART=0
3621       NPARTD=0
3622  
3623 C...Let called routines know call is from PYEVNW (not PYEVNT).
3624       MINT(35)=3
3625  
3626 C...If variable energies: redo incoming kinematics and cross-section.
3627       MSTI(61)=0
3628       IF(MSTP(171).EQ.1) THEN
3629         CALL PYINKI(1)
3630         IF(MSTI(61).EQ.1) THEN
3631           MINT(5)=MINT(5)-1
3632           RETURN
3633         ENDIF
3634         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
3635         CALL PYXTOT
3636       ENDIF
3637  
3638 C...Loop over number of pileup events; check space left.
3639       IF(MSTP(131).LE.0) THEN
3640         NPILE=1
3641       ELSE
3642         CALL PYPILE(2)
3643         NPILE=MINT(81)
3644       ENDIF
3645       DO 300 IPILE=1,NPILE
3646         IF(MINT(84)+100.GE.MSTU(4)) THEN
3647           CALL PYERRM(11,
3648      &    '(PYEVNW:) no more space in PYJETS for pileup events')
3649           IF(MSTU(21).GE.1) GOTO 310
3650         ENDIF
3651         MINT(82)=IPILE
3652  
3653 C...Generate variables of hard scattering.
3654         MINT(51)=0
3655         MSTI(52)=0
3656         LOOPHS  =0
3657   100   CONTINUE
3658         LOOPHS  = LOOPHS + 1
3659         IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
3660         IF(LOOPHS.GE.10) THEN
3661           CALL PYERRM(19,'(PYEVNW:) failed to evolve shower or '
3662      &        //'multiple interactions. Returning.')
3663           MINT(51)=1
3664           RETURN
3665         ENDIF
3666         MINT(31)=0
3667         MINT(39)=0
3668         MINT(36)=0
3669         MINT(51)=0
3670         MINT(57)=0
3671         CALL PYRAND
3672         IF(MSTI(61).EQ.1) THEN
3673           MINT(5)=MINT(5)-1
3674           RETURN
3675         ENDIF
3676         IF(MINT(51).EQ.2) RETURN
3677         ISUB=MINT(1)
3678         IF(MSTP(111).EQ.-1) GOTO 290
3679  
3680 C...Loopback point if PYPREP fails, especially for junction topologies.
3681         NPREP=0
3682         MNT31S=MINT(31)
3683   110   NPREP=NPREP+1
3684         MINT(31)=MNT31S
3685  
3686         IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
3687 C...Hard scattering (including low-pT):
3688 C...reconstruct kinematics and colour flow of hard scattering.
3689           MINT31=MINT(31)
3690   120     MINT(31)=MINT31
3691           MINT(51)=0
3692           CALL PYSCAT
3693           IF(MINT(51).EQ.1) GOTO 100
3694           NPARTD=N
3695           NFIN=N
3696  
3697 C...Intertwined initial state showers and multiple interactions.
3698 C...Force no IS showers if no pdfs defined: MSTP(61) -> 0 for PYEVOL.
3699 C...Force no MI if cross section not known: MSTP(81) -> 0 for PYEVOL.
3700           MSTP61=MSTP(61)
3701           IF (MINT(47).LT.2) MSTP(61)=0
3702           MSTP81=MSTP(81)
3703           IF (MINT(50).EQ.0) MSTP(81)=0
3704           IF ((MSTP(61).GE.1.OR.MOD(MSTP(81),10).GE.0).AND.
3705      &    MINT(111).NE.12) THEN
3706 C...Absolute max pT2 scale for evolution: phase space limit.
3707             PT2MXS=0.25D0*VINT(2)
3708 C...Check if more constrained by ISR and MI max scales:
3709             PT2MXS=MIN(PT2MXS,MAX(MAX(1D0,PARP(67))*VINT(56),VINT(62)))
3710 C...Loopback point in case of failure in evolution.
3711             LOOP=0
3712   130       LOOP=LOOP+1
3713             MINT(51)=0
3714             IF(LOOP.GT.100) THEN
3715               CALL PYERRM(9,'(PYEVNW:) failed to evolve shower or '
3716      &             //'multiple interactions. Trying new point.')
3717               MINT(51)=1
3718               RETURN
3719             ENDIF
3720  
3721 C...Pre-initialization of interleaved MI/ISR/JI evolution, only done
3722 C...once per event. (E.g. compute constants and save variables to be
3723 C...restored later in case of failure.)
3724             IF (LOOP.EQ.1) CALL PYEVOL(-1,DUMMY1,DUMMY2)
3725  
3726 C...Initialize interleaved MI/ISR/JI evolution.
3727 C...PT2MAX: absolute upper limit for evolution - Initialization may
3728 C...        return a PT2MAX which is lower than this.
3729 C...PT2MIN: absolute lower limit for evolution - Initialization may
3730 C...        return a PT2MIN which is larger than this (e.g. Lambda_QCD).
3731             PT2MAX=PT2MXS
3732             PT2MIN=0D0
3733             CALL PYEVOL(0,PT2MAX,PT2MIN)
3734 C...If failed to initialize evolution, generate a new hard process
3735             IF (MINT(51).EQ.1) GOTO 100
3736  
3737 C...Perform interleaved MI/ISR/JI evolution from PT2MAX to PT2MIN.
3738 C...In principle factorized, so can be stopped and restarted.
3739 C...Example: stop/start at pT=10 GeV. (Commented out for now.)
3740 C            PT2MED=MAX(10D0**2,PT2MIN)
3741 C            CALL PYEVOL(1,PT2MAX,PT2MED)
3742 C            IF (MINT(51).EQ.1) GOTO 160
3743 C            PT2MAX=PT2MED
3744             CALL PYEVOL(1,PT2MAX,PT2MIN)
3745 C...If fatal error (e.g., massive hard-process initiator, but no available 
3746 C...phase space for creation), generate a new hard process
3747             IF (MINT(51).EQ.2) GOTO 100
3748 C...If smaller error, just try running evolution again
3749             IF (MINT(51).EQ.1) GOTO 130
3750  
3751 C...Finalize interleaved MI/ISR/JI evolution.
3752             CALL PYEVOL(2,PT2MAX,PT2MIN)
3753             IF (MINT(51).EQ.1) GOTO 130
3754  
3755           ENDIF
3756           MSTP(61)=MSTP61
3757           MSTP(81)=MSTP81
3758           IF(MINT(51).EQ.1) GOTO 100
3759 C...(MINT(52) is actually obsolete in this routine. Set anyway
3760 C...to ensure PYDOCU stable.)
3761           MINT(52)=N
3762           MINT(53)=N
3763  
3764 C...Beam remnants - new scheme.
3765   140     IF(MINT(50).EQ.1) THEN
3766             IF (ISUB.EQ.95) MINT(31)=1
3767  
3768 C...Beam remnant flavour and colour assignments - new scheme.
3769             CALL PYMIHK
3770             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3771      &           GOTO 120
3772             IF(MINT(51).EQ.1) GOTO 100
3773  
3774 C...Primordial kT and beam remnant momentum sharing - new scheme.
3775             CALL PYMIRM
3776             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
3777      &      GOTO 120
3778             IF(MINT(51).EQ.1) GOTO 100
3779             IF (ISUB.EQ.95) MINT(31)=0
3780           ELSEIF(MINT(111).NE.12) THEN
3781 C...Hadron remnants and primordial kT - old model.
3782 C...Happens e.g. for direct photon on one side.
3783             IPU1=IMI(1,1,1)
3784             IPU2=IMI(2,1,1)
3785             CALL PYREMN(IPU1,IPU2)
3786             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO
3787      &           110
3788             IF(MINT(51).EQ.1) GOTO 100
3789 C...PYREMN does not set colour tags for BRs, so needs to be done now.
3790             DO 160 I=MINT(53)+1,N
3791               DO 150 KCS=4,5
3792                 IDA=MOD(K(I,KCS),MSTU(5))
3793                 IF (IDA.NE.0) THEN
3794                   MCT(I,KCS-3)=MCT(IDA,6-KCS)
3795                 ELSE
3796                   MCT(I,KCS-3)=0
3797                 ENDIF
3798   150         CONTINUE
3799   160       CONTINUE
3800 C...Instruct PYPREP to use colour tags
3801             MINT(33)=1
3802 
3803             DO 360 MQGST=1,2
3804               DO 350 I=MINT(84)+1,N
3805   
3806 C...Look for coloured string endpoint, or (later) leftover gluon.
3807                 IF (K(I,1).NE.3) GOTO 350
3808                 KC=PYCOMP(K(I,2))
3809                 IF(KC.EQ.0) GOTO 350
3810                 KQ=KCHG(KC,2)
3811                 IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 350
3812   
3813 C...  Pick up loose string end with no previous tag.
3814                 KCS=4
3815                 IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
3816                 IF(MCT(I,KCS-3).NE.0) GOTO 350
3817                   
3818                 CALL PYCTTR(I,KCS,I)
3819                 IF(MINT(51).NE.0) RETURN
3820   
3821  350          CONTINUE
3822  360        CONTINUE
3823 C...Now delete any colour processing information if set (since partons
3824 C...otherwise not FS showered!)
3825             DO 170 I=MINT(84)+1,N
3826               IF (I.LE.N) THEN
3827                 K(I,4)=MOD(K(I,4),MSTU(5)**2)
3828                 K(I,5)=MOD(K(I,5),MSTU(5)**2)
3829               ENDIF
3830   170       CONTINUE
3831           ENDIF
3832  
3833 C...Showering of final state partons (optional).
3834           ALAMSV=PARJ(81)
3835           PARJ(81)=PARP(72)
3836           IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.1.AND.ISET(ISUB).LE.10)
3837      &    THEN
3838             QMAX=VINT(55)
3839             IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
3840             CALL PYPTFS(1,QMAX,0D0,PTGEN)
3841 C...External processes: handle successive showers.
3842           ELSEIF(ISET(ISUB).EQ.11) THEN
3843             CALL PYADSH(NFIN)
3844           ENDIF
3845           PARJ(81)=ALAMSV
3846 
3847 C...Allow possibility for user to abort event generation.
3848           IVETO=0
3849           IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO) ! sm
3850           IF(IVETO.EQ.1) THEN
3851 C...........No reason to count this as an error
3852             LOOPHS = LOOPHS-1
3853             GOTO 100
3854           ENDIF
3855 
3856  
3857 C...Decay of final state resonances.
3858           MINT(32)=0
3859           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) THEN
3860             CALL PYRESD(0)
3861             IF(MINT(51).NE.0) GOTO 100
3862           ENDIF
3863  
3864           IF(MINT(51).EQ.1) GOTO 100
3865  
3866         ELSEIF(ISUB.NE.99) THEN
3867 C...Diffractive and elastic scattering.
3868           CALL PYDIFF
3869  
3870         ELSE
3871 C...DIS scattering (photon flux external).
3872           CALL PYDISG
3873           IF(MINT(51).EQ.1) GOTO 100
3874         ENDIF
3875  
3876 C...Check that no odd resonance left undecayed.
3877         MINT(54)=N
3878         IF(MSTP(111).GE.1) THEN
3879           NFIX=N
3880           DO 180 I=MINT(84)+1,NFIX
3881             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
3882      &      K(I,2).NE.22) THEN
3883               KCA=PYCOMP(K(I,2))
3884               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
3885                 CALL PYRESD(I)
3886                 IF(MINT(51).EQ.1) GOTO 100
3887               ENDIF
3888             ENDIF
3889   180     CONTINUE
3890         ENDIF
3891  
3892 C...Boost hadronic subsystem to overall rest frame.
3893 C..(Only relevant when photon inside lepton beam.)
3894         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
3895  
3896 C...Recalculate energies from momenta and masses (if desired).
3897         IF(MSTP(113).GE.1) THEN
3898           DO 190 I=MINT(83)+1,N
3899             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
3900      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3901   190     CONTINUE
3902           NRECAL=N
3903         ENDIF
3904  
3905 C...Colour reconnection before string formation
3906         CALL PYFSCR(MINT(84)+1)
3907  
3908 C...Rearrange partons along strings, check invariant mass cuts.
3909         MSTU(28)=0
3910         IF(MSTP(111).LE.0) MSTJ(14)=-1
3911         CALL PYPREP(MINT(84)+1)
3912         MSTJ(14)=MSTJ14
3913         IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN
3914           MSTU(24)=0
3915           GOTO 100
3916         ENDIF
3917         IF(MINT(51).EQ.1) GOTO 110
3918         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
3919         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
3920           DO 220 I=MINT(84)+1,N
3921             IF(K(I,2).EQ.94) THEN
3922               DO 210 I1=I+1,MIN(N,I+10)
3923                 IF(K(I1,3).EQ.I) THEN
3924                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
3925                   IF(K(I1,3).EQ.0) THEN
3926                     DO 200 II=MINT(84)+1,I-1
3927                         IF(K(II,2).EQ.K(I1,2)) THEN
3928                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
3929      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
3930                         ENDIF
3931   200               CONTINUE
3932                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
3933                   ENDIF
3934                 ENDIF
3935   210         CONTINUE
3936 C...Also collapse particles decaying to themselves (if same KS)
3937 C...Sep 22 2009: Commented out by PS following suggestion by TS to fix 
3938 C...problem with history point-backs in new shower, where a particle is
3939 C...copied with a new momentum when it is the recoiler.
3940 C            ELSEIF (K(I,1).GT.0.AND.K(I,4).EQ.K(I,5).AND.K(I,4).GT.0
3941 C     &            .AND.K(I,4).LT.N) THEN
3942 C              IDA=K(I,4)
3943 C              IF (K(IDA,1).EQ.K(I,1).AND.K(IDA,2).EQ.K(I,2)) THEN
3944 C                K(I,1)=0
3945 C              ENDIF
3946             ENDIF
3947   220     CONTINUE
3948           CALL PYEDIT(12)
3949           CALL PYEDIT(14)
3950           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
3951           IF(MSTP(125).EQ.0) MINT(4)=0
3952           DO 240 I=MINT(83)+1,N
3953             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
3954               DO 230 I1=I+1,N
3955                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
3956                 IF(K(I1,3).EQ.I) K(I,5)=I1
3957   230         CONTINUE
3958             ENDIF
3959   240     CONTINUE
3960         ENDIF
3961  
3962 C...Introduce separators between sections in PYLIST event listing.
3963         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
3964           MSTU70=1
3965           MSTU(71)=N
3966         ELSEIF(IPILE.EQ.1) THEN
3967           MSTU70=3
3968           MSTU(71)=2
3969           MSTU(72)=MINT(4)
3970           MSTU(73)=N
3971         ENDIF
3972  
3973 C...Go back to lab frame (needed for vertices, also in fragmentation).
3974         CALL PYFRAM(1)
3975  
3976 C...Set nonvanishing production vertex (optional).
3977         IF(MSTP(151).EQ.1) THEN
3978           DO 250 J=1,4
3979             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
3980      &      SIN(PARU(2)*PYR(0))
3981   250     CONTINUE
3982           DO 270 I=MINT(83)+1,N
3983             DO 260 J=1,4
3984               V(I,J)=V(I,J)+VTX(J)
3985   260       CONTINUE
3986   270     CONTINUE
3987         ENDIF
3988  
3989 C...Perform hadronization (if desired).
3990         IF(MSTP(111).GE.1) THEN
3991           CALL PYEXEC
3992           IF(MSTU(24).NE.0) GOTO 100
3993         ENDIF
3994         IF(MSTP(113).GE.1) THEN
3995           DO 280 I=NRECAL,N
3996             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
3997      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
3998   280     CONTINUE
3999         ENDIF
4000         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
4001  
4002 C...Store event information and calculate Monte Carlo estimates of
4003 C...subprocess cross-sections.
4004   290   IF(IPILE.EQ.1) CALL PYDOCU
4005  
4006 C...Set counters for current pileup event and loop to next one.
4007         MSTI(41)=IPILE
4008         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
4009         IF(MSTU70.LT.10) THEN
4010           MSTU70=MSTU70+1
4011           MSTU(70+MSTU70)=N
4012         ENDIF
4013         MINT(83)=N
4014         MINT(84)=N+MSTP(126)
4015         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
4016   300 CONTINUE
4017  
4018 C...Generic information on pileup events. Reconstruct missing history.
4019       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
4020         PARI(91)=VINT(132)
4021         PARI(92)=VINT(133)
4022         PARI(93)=VINT(134)
4023         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
4024       ENDIF
4025       CALL PYEDIT(16)
4026  
4027 C...Transform to the desired coordinate frame.
4028   310 CALL PYFRAM(MSTP(124))
4029       MSTU(70)=MSTU70
4030       PARU(21)=VINT(1)
4031  
4032 C...Error messages
4033  5100 FORMAT(1X,'Error: no subprocess switched on.'/
4034      &1X,'Execution stopped.')
4035  
4036       RETURN
4037       END
4038  
4039  
4040 C***********************************************************************
4041  
4042 C...PYSTAT
4043 C...Prints out information about cross-sections, decay widths, branching
4044 C...ratios, kinematical limits, status codes and parameter values.
4045  
4046       SUBROUTINE PYSTAT(MSTAT)
4047  
4048 C...Double precision and integer declarations.
4049       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4050       IMPLICIT INTEGER(I-N)
4051       INTEGER PYK,PYCHGE,PYCOMP
4052 C...Parameter statement to help give large particle numbers.
4053       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
4054      &KEXCIT=4000000,KDIMEN=5000000)
4055       PARAMETER (EPS=1D-3)
4056 C...Commonblocks.
4057       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4058       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
4059       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
4060       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
4061       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4062       COMMON/PYINT1/MINT(400),VINT(400)
4063       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
4064       COMMON/PYINT4/MWID(500),WIDS(500,5)
4065       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
4066       COMMON/PYINT6/PROC(0:500)
4067       CHARACTER PROC*28, CHTMP*16
4068       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
4069       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
4070       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
4071      &/PYINT2/,/PYINT4/,/PYINT5/,/PYINT6/,/PYMSSM/,/PYMSRV/
4072 C...Local arrays, character variables and data.
4073       DIMENSION WDTP(0:400),WDTE(0:400,0:5),NMODES(0:20),PBRAT(10)
4074       CHARACTER PROGA(6)*28,CHAU*16,CHKF*16,CHD1*16,CHD2*16,CHD3*16,
4075      &CHIN(2)*12,STATE(-1:5)*4,CHKIN(21)*18,DISGA(2)*28,
4076      &PROGG9(13)*28,PROGG4(4)*28,PROGG2(2)*28,PROGP4(4)*28
4077       CHARACTER*24 CHD0, CHDC(10)
4078       CHARACTER*6 DNAME(3)
4079       DATA PROGA/
4080      &'VMD/hadron * VMD            ','VMD/hadron * direct         ',
4081      &'VMD/hadron * anomalous      ','direct * direct             ',
4082      &'direct * anomalous          ','anomalous * anomalous       '/
4083       DATA DISGA/'e * VMD','e * anomalous'/
4084       DATA PROGG9/
4085      &'direct * direct             ','direct * VMD                ',
4086      &'direct * anomalous          ','VMD * direct                ',
4087      &'VMD * VMD                   ','VMD * anomalous             ',
4088      &'anomalous * direct          ','anomalous * VMD             ',
4089      &'anomalous * anomalous       ','DIS * VMD                   ',
4090      &'DIS * anomalous             ','VMD * DIS                   ',
4091      &'anomalous * DIS             '/
4092       DATA PROGG4/
4093      &'direct * direct             ','direct * resolved           ',
4094      &'resolved * direct           ','resolved * resolved         '/
4095       DATA PROGG2/
4096      &'direct * hadron             ','resolved * hadron           '/
4097       DATA PROGP4/
4098      &'VMD * hadron                ','direct * hadron             ',
4099      &'anomalous * hadron          ','DIS * hadron                '/
4100       DATA STATE/'----','off ','on  ','on/+','on/-','on/1','on/2'/,
4101      &CHKIN/' m_hard (GeV/c^2) ',' p_T_hard (GeV/c) ',
4102      &'m_finite (GeV/c^2)','   y*_subsystem   ','     y*_large     ',
4103      &'     y*_small     ','    eta*_large    ','    eta*_small    ',
4104      &'cos(theta*)_large ','cos(theta*)_small ','       x_1        ',
4105      &'       x_2        ','       x_F        ',' cos(theta_hard)  ',
4106      &'m''_hard (GeV/c^2) ','       tau        ','        y*        ',
4107      &'cos(theta_hard^-) ','cos(theta_hard^+) ','      x_T^2       ',
4108      &'       tau''       '/
4109       DATA DNAME /'q     ','lepton','nu    '/
4110  
4111 C...Cross-sections.
4112       IF(MSTAT.LE.1) THEN
4113         IF(MINT(121).GT.1) CALL PYSAVE(5,0)
4114         WRITE(MSTU(11),5000)
4115         WRITE(MSTU(11),5100)
4116         WRITE(MSTU(11),5200) 0,PROC(0),NGEN(0,3),NGEN(0,1),XSEC(0,3)
4117         DO 100 I=1,500
4118           IF(MSUB(I).NE.1) GOTO 100
4119           WRITE(MSTU(11),5200) I,PROC(I),NGEN(I,3),NGEN(I,1),XSEC(I,3)
4120   100   CONTINUE
4121         IF(MINT(121).GT.1) THEN
4122           WRITE(MSTU(11),5300)
4123           DO 110 IGA=1,MINT(121)
4124             CALL PYSAVE(3,IGA)
4125             IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
4126               WRITE(MSTU(11),5200) IGA,DISGA(IGA),NGEN(0,3),NGEN(0,1),
4127      &        XSEC(0,3)
4128             ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
4129               WRITE(MSTU(11),5200) IGA,PROGG9(IGA),NGEN(0,3),NGEN(0,1),
4130      &        XSEC(0,3)
4131             ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.30) THEN
4132               WRITE(MSTU(11),5200) IGA,PROGP4(IGA),NGEN(0,3),NGEN(0,1),
4133      &        XSEC(0,3)
4134             ELSEIF(MINT(121).EQ.4) THEN
4135               WRITE(MSTU(11),5200) IGA,PROGG4(IGA),NGEN(0,3),NGEN(0,1),
4136      &        XSEC(0,3)
4137             ELSEIF(MINT(121).EQ.2) THEN
4138               WRITE(MSTU(11),5200) IGA,PROGG2(IGA),NGEN(0,3),NGEN(0,1),
4139      &        XSEC(0,3)
4140             ELSE
4141               WRITE(MSTU(11),5200) IGA,PROGA(IGA),NGEN(0,3),NGEN(0,1),
4142      &        XSEC(0,3)
4143             ENDIF
4144   110     CONTINUE
4145           CALL PYSAVE(5,0)
4146         ENDIF
4147         WRITE(MSTU(11),5400) MSTU(23),MSTU(30),MSTU(27),
4148      &  1D0-DBLE(NGEN(0,3))/MAX(1D0,DBLE(NGEN(0,2)))
4149  
4150 C...Decay widths and branching ratios.
4151       ELSEIF(MSTAT.EQ.2) THEN
4152         WRITE(MSTU(11),5500)
4153         WRITE(MSTU(11),5600)
4154         DO 140 KC=1,500
4155           KF=KCHG(KC,4)
4156           CALL PYNAME(KF,CHKF)
4157           IOFF=0
4158           IF(KC.LE.22) THEN
4159             IF(KC.GT.2*MSTP(1).AND.KC.LE.10) GOTO 140
4160             IF(KC.GT.10+2*MSTP(1).AND.KC.LE.20) GOTO 140
4161             IF(KC.LE.5.OR.(KC.GE.11.AND.KC.LE.16)) IOFF=1
4162             IF(KC.EQ.18.AND.PMAS(18,1).LT.1D0) IOFF=1
4163             IF(KC.EQ.21.OR.KC.EQ.22) IOFF=1
4164           ELSE
4165             IF(MWID(KC).LE.0) GOTO 140
4166             IF(IMSS(1).LE.0.AND.(KF/KSUSY1.EQ.1.OR.
4167      &      KF/KSUSY1.EQ.2)) GOTO 140
4168           ENDIF
4169 C...Off-shell branchings.
4170           IF(IOFF.EQ.1) THEN
4171             NGP=0
4172             IF(KC.LE.20) NGP=(MOD(KC,10)+1)/2
4173             IF(NGP.LE.MSTP(1)) WRITE(MSTU(11),5700) KF,CHKF(1:10),
4174      &      PMAS(KC,1),0D0,0D0,STATE(MDCY(KC,1)),0D0
4175             DO 120 J=1,MDCY(KC,3)
4176               IDC=J+MDCY(KC,2)-1
4177               NGP1=0
4178               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
4179      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
4180               NGP2=0
4181               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
4182      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
4183               CALL PYNAME(KFDP(IDC,1),CHD1)
4184               CALL PYNAME(KFDP(IDC,2),CHD2)
4185               IF(KFDP(IDC,3).EQ.0) THEN
4186                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
4187      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5800) IDC,CHD1(1:10),
4188      &          CHD2(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
4189               ELSE
4190                 CALL PYNAME(KFDP(IDC,3),CHD3)
4191                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
4192      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5900) IDC,CHD1(1:10),
4193      &          CHD2(1:10),CHD3(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
4194               ENDIF
4195   120       CONTINUE
4196 C...On-shell decays.
4197           ELSE
4198             CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
4199             BRFIN=1D0
4200             IF(WDTE(0,0).LE.0D0) BRFIN=0D0
4201             WRITE(MSTU(11),5700) KF,CHKF(1:10),PMAS(KC,1),WDTP(0),1D0,
4202      &      STATE(MDCY(KC,1)),BRFIN
4203             DO 130 J=1,MDCY(KC,3)
4204               IDC=J+MDCY(KC,2)-1
4205               NGP1=0
4206               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
4207      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
4208               NGP2=0
4209               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
4210      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
4211               BRPRI=0D0
4212               IF(WDTP(0).GT.0D0) BRPRI=WDTP(J)/WDTP(0)
4213               BRFIN=0D0
4214               IF(WDTE(0,0).GT.0D0) BRFIN=WDTE(J,0)/WDTE(0,0)
4215               CALL PYNAME(KFDP(IDC,1),CHD1)
4216               CALL PYNAME(KFDP(IDC,2),CHD2)
4217               IF(KFDP(IDC,3).EQ.0) THEN
4218                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
4219      &          WRITE(MSTU(11),5800) IDC,CHD1(1:10),
4220      &          CHD2(1:10),WDTP(J),BRPRI,
4221      &          STATE(MDME(IDC,1)),BRFIN
4222               ELSE
4223                 CALL PYNAME(KFDP(IDC,3),CHD3)
4224                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
4225      &          WRITE(MSTU(11),5900) IDC,CHD1(1:10),
4226      &          CHD2(1:10),CHD3(1:10),WDTP(J),BRPRI,
4227      &          STATE(MDME(IDC,1)),BRFIN
4228               ENDIF
4229   130       CONTINUE
4230           ENDIF
4231   140   CONTINUE
4232         WRITE(MSTU(11),6000)
4233  
4234 C...Allowed incoming partons/particles at hard interaction.
4235       ELSEIF(MSTAT.EQ.3) THEN
4236         WRITE(MSTU(11),6100)
4237         CALL PYNAME(MINT(11),CHAU)
4238         CHIN(1)=CHAU(1:12)
4239         CALL PYNAME(MINT(12),CHAU)
4240         CHIN(2)=CHAU(1:12)
4241         WRITE(MSTU(11),6200) CHIN(1),CHIN(2)
4242         DO 150 I=-20,22
4243           IF(I.EQ.0) GOTO 150
4244           IA=IABS(I)
4245           IF(IA.GT.MSTP(58).AND.IA.LE.10) GOTO 150
4246           IF(IA.GT.10+2*MSTP(1).AND.IA.LE.20) GOTO 150
4247           CALL PYNAME(I,CHAU)
4248           WRITE(MSTU(11),6300) CHAU,STATE(KFIN(1,I)),CHAU,
4249      &    STATE(KFIN(2,I))
4250   150   CONTINUE
4251         WRITE(MSTU(11),6400)
4252  
4253 C...User-defined limits on kinematical variables.
4254       ELSEIF(MSTAT.EQ.4) THEN
4255         WRITE(MSTU(11),6500)
4256         WRITE(MSTU(11),6600)
4257         SHRMAX=CKIN(2)
4258         IF(SHRMAX.LT.0D0) SHRMAX=VINT(1)
4259         WRITE(MSTU(11),6700) CKIN(1),CHKIN(1),SHRMAX
4260         PTHMIN=MAX(CKIN(3),CKIN(5))
4261         PTHMAX=CKIN(4)
4262         IF(PTHMAX.LT.0D0) PTHMAX=0.5D0*SHRMAX
4263         WRITE(MSTU(11),6800) CKIN(3),PTHMIN,CHKIN(2),PTHMAX
4264         WRITE(MSTU(11),6900) CHKIN(3),CKIN(6)
4265         DO 160 I=4,14
4266           WRITE(MSTU(11),6700) CKIN(2*I-1),CHKIN(I),CKIN(2*I)
4267   160   CONTINUE
4268         SPRMAX=CKIN(32)
4269         IF(SPRMAX.LT.0D0) SPRMAX=VINT(1)
4270         WRITE(MSTU(11),6700) CKIN(31),CHKIN(15),SPRMAX
4271         WRITE(MSTU(11),7000)
4272  
4273 C...Status codes and parameter values.
4274       ELSEIF(MSTAT.EQ.5) THEN
4275         WRITE(MSTU(11),7100)
4276         WRITE(MSTU(11),7200)
4277         DO 170 I=1,100
4278           WRITE(MSTU(11),7300) I,MSTP(I),PARP(I),100+I,MSTP(100+I),
4279      &    PARP(100+I)
4280   170   CONTINUE
4281  
4282 C...List of all processes implemented in the program.
4283       ELSEIF(MSTAT.EQ.6) THEN
4284         WRITE(MSTU(11),7400)
4285         WRITE(MSTU(11),7500)
4286         DO 180 I=1,500
4287           IF(ISET(I).LT.0) GOTO 180
4288           WRITE(MSTU(11),7600) I,PROC(I),ISET(I),KFPR(I,1),KFPR(I,2)
4289   180   CONTINUE
4290         WRITE(MSTU(11),7700)
4291  
4292       ELSEIF(MSTAT.EQ.7) THEN
4293       WRITE (MSTU(11),8000)
4294       NMODES(0)=0
4295       NMODES(10)=0
4296       NMODES(9)=0
4297       DO 290 ILR=1,2
4298         DO 280 KFSM=1,16
4299           KFSUSY=ILR*KSUSY1+KFSM
4300           NRVDC=0
4301 C...SDOWN DECAYS
4302           IF (KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5) THEN
4303             NRVDC=3
4304             DO 190 I=1,NRVDC
4305               PBRAT(I)=0D0
4306               NMODES(I)=0
4307   190       CONTINUE
4308             CALL PYNAME(KFSUSY,CHTMP)
4309             CHD0=CHTMP//' '
4310             CHDC(1)=DNAME(3) // ' + ' // DNAME(1)
4311             CHDC(2)=DNAME(2) // ' + ' // DNAME(1)
4312             CHDC(3)=DNAME(1) // ' + ' // DNAME(1)
4313             KC=PYCOMP(KFSUSY)
4314             DO 200 J=1,MDCY(KC,3)
4315               IDC=J+MDCY(KC,2)-1
4316               ID1=IABS(KFDP(IDC,1))
4317               ID2=IABS(KFDP(IDC,2))
4318               IF (KFDP(IDC,3).EQ.0) THEN
4319                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4320      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4321                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4322                   NMODES(1)=NMODES(1)+1
4323                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4324                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4325                 ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4326      &                 .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6)) THEN
4327                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4328                   NMODES(2)=NMODES(2)+1
4329                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4330                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4331                 ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4332      &                 .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4333                   PBRAT(3)=PBRAT(3)+BRAT(IDC)
4334                   NMODES(3)=NMODES(3)+1
4335                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4336                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4337                 ENDIF
4338               ENDIF
4339   200       CONTINUE
4340           ENDIF
4341 C...SUP DECAYS
4342           IF (KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6) THEN
4343             NRVDC=2
4344             DO 210 I=1,NRVDC
4345               NMODES(I)=0
4346               PBRAT(I)=0D0
4347   210       CONTINUE
4348             CALL PYNAME(KFSUSY,CHTMP)
4349             CHD0=CHTMP//' '
4350             CHDC(1)=DNAME(2) // ' + ' // DNAME(1)
4351             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4352             KC=PYCOMP(KFSUSY)
4353             DO 220 J=1,MDCY(KC,3)
4354               IDC=J+MDCY(KC,2)-1
4355               ID1=IABS(KFDP(IDC,1))
4356               ID2=IABS(KFDP(IDC,2))
4357               IF (KFDP(IDC,3).EQ.0) THEN
4358                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
4359      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4360                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4361                   NMODES(1)=NMODES(1)+1
4362                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4363                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4364                 ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
4365      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4366                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4367                   NMODES(2)=NMODES(2)+1
4368                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4369                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4370                 ENDIF
4371               ENDIF
4372   220       CONTINUE
4373           ENDIF
4374 C...SLEPTON DECAYS
4375           IF (KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15) THEN
4376             NRVDC=2
4377             DO 230 I=1,NRVDC
4378               PBRAT(I)=0D0
4379               NMODES(I)=0
4380   230       CONTINUE
4381             CALL PYNAME(KFSUSY,CHTMP)
4382             CHD0=CHTMP//' '
4383             CHDC(1)=DNAME(3) // ' + ' // DNAME(2)
4384             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4385             KC=PYCOMP(KFSUSY)
4386             DO 240 J=1,MDCY(KC,3)
4387               IDC=J+MDCY(KC,2)-1
4388               ID1=IABS(KFDP(IDC,1))
4389               ID2=IABS(KFDP(IDC,2))
4390               IF (KFDP(IDC,3).EQ.0) THEN
4391                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4392      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
4393                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4394                   NMODES(1)=NMODES(1)+1
4395                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4396                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4397                 ENDIF
4398                 IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND.(ID2
4399      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4400                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4401                   NMODES(2)=NMODES(2)+1
4402                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4403                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4404                 ENDIF
4405               ENDIF
4406   240       CONTINUE
4407           ENDIF
4408 C...SNEUTRINO DECAYS
4409           IF ((KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16).AND.ILR.EQ.1)
4410      &         THEN
4411             NRVDC=2
4412             DO 250 I=1,NRVDC
4413               PBRAT(I)=0D0
4414               NMODES(I)=0
4415   250       CONTINUE
4416             CALL PYNAME(KFSUSY,CHTMP)
4417             CHD0=CHTMP//' '
4418             CHDC(1)=DNAME(2) // ' + ' // DNAME(2)
4419             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
4420             KC=PYCOMP(KFSUSY)
4421             DO 260 J=1,MDCY(KC,3)
4422               IDC=J+MDCY(KC,2)-1
4423               ID1=IABS(KFDP(IDC,1))
4424               ID2=IABS(KFDP(IDC,2))
4425               IF (KFDP(IDC,3).EQ.0) THEN
4426                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
4427      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
4428                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
4429                   NMODES(1)=NMODES(1)+1
4430                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4431                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4432                 ENDIF
4433                 IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
4434      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
4435                   NMODES(2)=NMODES(2)+1
4436                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
4437                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4438                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4439                 ENDIF
4440               ENDIF
4441   260       CONTINUE
4442           ENDIF
4443           IF (NRVDC.NE.0) THEN
4444             DO 270 I=1,NRVDC
4445               WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
4446               NMODES(0)=NMODES(0)+NMODES(I)
4447   270       CONTINUE
4448           ENDIF
4449   280   CONTINUE
4450   290 CONTINUE
4451       DO 370 KFSM=21,37
4452         KFSUSY=KSUSY1+KFSM
4453         NRVDC=0
4454 C...NEUTRALINO DECAYS
4455         IF (KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
4456           NRVDC=4
4457           DO 300 I=1,NRVDC
4458             PBRAT(I)=0D0
4459             NMODES(I)=0
4460   300     CONTINUE
4461           CALL PYNAME(KFSUSY,CHTMP)
4462           CHD0=CHTMP//' '
4463           CHDC(1)=DNAME(3) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
4464           CHDC(2)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4465           CHDC(3)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4466           CHDC(4)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4467           KC=PYCOMP(KFSUSY)
4468           DO 310 J=1,MDCY(KC,3)
4469             IDC=J+MDCY(KC,2)-1
4470             ID1=IABS(KFDP(IDC,1))
4471             ID2=IABS(KFDP(IDC,2))
4472             ID3=IABS(KFDP(IDC,3))
4473             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4474      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.11.OR
4475      &           .ID3.EQ.13.OR.ID3.EQ.15)) THEN
4476               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4477               NMODES(1)=NMODES(1)+1
4478               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4479               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4480             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4481      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4482      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4483               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4484               NMODES(2)=NMODES(2)+1
4485               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4486               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4487             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4488      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
4489      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4490               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4491               NMODES(3)=NMODES(3)+1
4492               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4493               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4494             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4495      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4496      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4497               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4498               NMODES(4)=NMODES(4)+1
4499               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4500               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4501             ENDIF
4502   310     CONTINUE
4503         ENDIF
4504 C...CHARGINO DECAYS
4505         IF (KFSM.EQ.24.OR.KFSM.EQ.37) THEN
4506           NRVDC=5
4507           DO 320 I=1,NRVDC
4508             PBRAT(I)=0D0
4509             NMODES(I)=0
4510   320     CONTINUE
4511           CALL PYNAME(KFSUSY,CHTMP)
4512           CHD0=CHTMP//' '
4513           CHDC(1)=DNAME(3) // ' + ' // DNAME(3) // ' + ' // DNAME(2)
4514           CHDC(2)=DNAME(2) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
4515           CHDC(3)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4516           CHDC(4)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4517           CHDC(5)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4518           KC=PYCOMP(KFSUSY)
4519           DO 330 J=1,MDCY(KC,3)
4520             IDC=J+MDCY(KC,2)-1
4521             ID1=IABS(KFDP(IDC,1))
4522             ID2=IABS(KFDP(IDC,2))
4523             ID3=IABS(KFDP(IDC,3))
4524             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4525      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.12.OR
4526      &           .ID3.EQ.14.OR.ID3.EQ.16)) THEN
4527               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4528               NMODES(1)=NMODES(1)+1
4529               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4530               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4531             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4532      &             .(ID2.EQ.12.OR.ID2.EQ.14.OR.ID2.EQ.16).AND.(ID3.EQ
4533      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
4534               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4535               NMODES(1)=NMODES(1)+1
4536               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4537               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4538             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4539      &             .(ID2.EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ
4540      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
4541               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4542               NMODES(2)=NMODES(2)+1
4543               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4544               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4545             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4546      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4547      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
4548               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4549               NMODES(3)=NMODES(3)+1
4550               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4551               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4552             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
4553      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4554      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4555               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4556               NMODES(3)=NMODES(3)+1
4557               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4558               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4559             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4560      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4561      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
4562               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4563               NMODES(4)=NMODES(4)+1
4564               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4565               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4566             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4567      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4568      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4569               PBRAT(4)=PBRAT(4)+BRAT(IDC)
4570               NMODES(4)=NMODES(4)+1
4571               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4572               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4573             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4574      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
4575      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4576               PBRAT(5)=PBRAT(5)+BRAT(IDC)
4577               NMODES(5)=NMODES(5)+1
4578               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4579               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4580             ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND
4581      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
4582      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4583               PBRAT(5)=PBRAT(5)+BRAT(IDC)
4584               NMODES(5)=NMODES(5)+1
4585               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4586               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4587             ENDIF
4588   330     CONTINUE
4589         ENDIF
4590 C...GLUINO DECAYS
4591         IF (KFSM.EQ.21) THEN
4592           NRVDC=3
4593           DO 340 I=1,NRVDC
4594             PBRAT(I)=0D0
4595             NMODES(I)=0
4596   340     CONTINUE
4597           CALL PYNAME(KFSUSY,CHTMP)
4598           CHD0=CHTMP//' '
4599           CHDC(1)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4600           CHDC(2)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4601           CHDC(3)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
4602           KC=PYCOMP(KFSUSY)
4603           DO 350 J=1,MDCY(KC,3)
4604             IDC=J+MDCY(KC,2)-1
4605             ID1=IABS(KFDP(IDC,1))
4606             ID2=IABS(KFDP(IDC,2))
4607             ID3=IABS(KFDP(IDC,3))
4608             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
4609      &           .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1.OR
4610      &           .ID3.EQ.3.OR.ID3.EQ.5)) THEN
4611               PBRAT(1)=PBRAT(1)+BRAT(IDC)
4612               NMODES(1)=NMODES(1)+1
4613               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4614               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4615             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
4616      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
4617      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4618               PBRAT(2)=PBRAT(2)+BRAT(IDC)
4619               NMODES(2)=NMODES(2)+1
4620               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4621               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4622             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
4623      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
4624      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
4625               PBRAT(3)=PBRAT(3)+BRAT(IDC)
4626               NMODES(3)=NMODES(3)+1
4627               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
4628               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
4629             ENDIF
4630   350     CONTINUE
4631         ENDIF
4632  
4633         IF (NRVDC.NE.0) THEN
4634           DO 360 I=1,NRVDC
4635             WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
4636             NMODES(0)=NMODES(0)+NMODES(I)
4637   360     CONTINUE
4638         ENDIF
4639   370 CONTINUE
4640       WRITE (MSTU(11),8100) NMODES(0), NMODES(10), NMODES(9)
4641  
4642       IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
4643         WRITE (MSTU(11),8500)
4644         DO 400 IRV=1,3
4645           DO 390 JRV=1,3
4646             DO 380 KRV=1,3
4647               WRITE (MSTU(11),8700) IRV,JRV,KRV,RVLAM(IRV,JRV,KRV)
4648      &             ,RVLAMP(IRV,JRV,KRV),RVLAMB(IRV,JRV,KRV)
4649   380       CONTINUE
4650   390     CONTINUE
4651   400   CONTINUE
4652         WRITE (MSTU(11),8600)
4653       ENDIF
4654       ENDIF
4655  
4656 C...Formats for printouts.
4657  5000 FORMAT('1',9('*'),1X,'PYSTAT:  Statistics on Number of ',
4658      &'Events and Cross-sections',1X,9('*'))
4659  5100 FORMAT(/1X,78('=')/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',12X,
4660      &'Subprocess',12X,'I',6X,'Number of points',6X,'I',4X,'Sigma',3X,
4661      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',34('-'),'I',28('-'),
4662      &'I',4X,'(mb)',4X,'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',1X,
4663      &'N:o',1X,'Type',25X,'I',4X,'Generated',9X,'Tried',1X,'I',12X,
4664      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/1X,'I',34X,'I',28X,
4665      &'I',12X,'I')
4666  5200 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I12,1X,I13,1X,'I',1X,1P,
4667      &D10.3,1X,'I')
4668  5300 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/
4669      &1X,'I',34X,'I',28X,'I',12X,'I')
4670  5400 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')//
4671      &1X,'********* Total number of errors, excluding junctions =',
4672      &1X,I8,' *************'/
4673      &1X,'********* Total number of errors, including junctions =',
4674      &1X,I8,' *************'/
4675      &1X,'********* Total number of warnings =                   ',
4676      &1X,I8,' *************'/
4677      &1X,'********* Fraction of events that fail fragmentation ',
4678      &'cuts =',1X,F8.5,' *********'/)
4679  5500 FORMAT('1',27('*'),1X,'PYSTAT:  Decay Widths and Branching ',
4680      &'Ratios',1X,27('*'))
4681  5600 FORMAT(/1X,98('=')/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
4682      &1X,'I',5X,'Mother  -->  Branching/Decay Channel',8X,'I',1X,
4683      &'Width (GeV)',1X,'I',7X,'B.R.',1X,'I',1X,'Stat',1X,'I',2X,
4684      &'Eff. B.R.',1X,'I'/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
4685      &1X,98('='))
4686  5700 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,'I',1X,
4687      &I8,2X,A10,3X,'(m =',F10.3,')',2X,'-->',5X,'I',2X,1P,D10.3,0P,1X,
4688      &'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,1P,D10.3,0P,1X,'I')
4689  5800 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,15X,'I',2X,
4690      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
4691      &1P,D10.3,0P,1X,'I')
4692  5900 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,1X,'+',1X,A10,2X,'I',2X,
4693      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
4694      &1P,D10.3,0P,1X,'I')
4695  6000 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,98('='))
4696  6100 FORMAT('1',7('*'),1X,'PYSTAT: Allowed Incoming Partons/',
4697      &'Particles at Hard Interaction',1X,7('*'))
4698  6200 FORMAT(/1X,78('=')/1X,'I',38X,'I',37X,'I'/1X,'I',1X,
4699      &'Beam particle:',1X,A12,10X,'I',1X,'Target particle:',1X,A12,7X,
4700      &'I'/1X,'I',38X,'I',37X,'I'/1X,'I',1X,'Content',6X,'State',19X,
4701      &'I',1X,'Content',6X,'State',18X,'I'/1X,'I',38X,'I',37X,'I'/1X,
4702      &78('=')/1X,'I',38X,'I',37X,'I')
4703  6300 FORMAT(1X,'I',1X,A9,5X,A4,19X,'I',1X,A9,5X,A4,18X,'I')
4704  6400 FORMAT(1X,'I',38X,'I',37X,'I'/1X,78('='))
4705  6500 FORMAT('1',12('*'),1X,'PYSTAT: User-Defined Limits on ',
4706      &'Kinematical Variables',1X,12('*'))
4707  6600 FORMAT(/1X,78('=')/1X,'I',76X,'I')
4708  6700 FORMAT(1X,'I',16X,1P,D10.3,0P,1X,'<',1X,A,1X,'<',1X,1P,D10.3,0P,
4709      &16X,'I')
4710  6800 FORMAT(1X,'I',3X,1P,D10.3,0P,1X,'(',1P,D10.3,0P,')',1X,'<',1X,A,
4711      &1X,'<',1X,1P,D10.3,0P,16X,'I')
4712  6900 FORMAT(1X,'I',29X,A,1X,'=',1X,1P,D10.3,0P,16X,'I')
4713  7000 FORMAT(1X,'I',76X,'I'/1X,78('='))
4714  7100 FORMAT('1',12('*'),1X,'PYSTAT: Summary of Status Codes and ',
4715      &'Parameter Values',1X,12('*'))
4716  7200 FORMAT(/3X,'I',4X,'MSTP(I)',9X,'PARP(I)',20X,'I',4X,'MSTP(I)',9X,
4717      &'PARP(I)'/)
4718  7300 FORMAT(1X,I3,5X,I6,6X,1P,D10.3,0P,18X,I3,5X,I6,6X,1P,D10.3)
4719  7400 FORMAT('1',13('*'),1X,'PYSTAT: List of implemented processes',
4720      &1X,13('*'))
4721  7500 FORMAT(/1X,65('=')/1X,'I',34X,'I',28X,'I'/1X,'I',12X,
4722      &'Subprocess',12X,'I',1X,'ISET',2X,'KFPR(I,1)',2X,'KFPR(I,2)',1X,
4723      &'I'/1X,'I',34X,'I',28X,'I'/1X,65('=')/1X,'I',34X,'I',28X,'I')
4724  7600 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I4,1X,I10,1X,I10,1X,'I')
4725  7700 FORMAT(1X,'I',34X,'I',28X,'I'/1X,65('='))
4726  8000 FORMAT(1X/ 1X/
4727      &     17X,'Sums over R-Violating branching ratios',1X/ 1X
4728      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I'/1X,'I',4X
4729      &     ,'Mother  -->  Sum over final state flavours',4X,'I',2X
4730      &     ,'BR(sum)',2X,'I',2X,'N',2X,'I'/1X,'I',50X,'I',11X,'I',5X,'I'
4731      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I')
4732  8100 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I'/1X,70('=')/1X,'I',1X
4733      &     ,'Total number of R-Violating modes :',3X,I5,24X,'I'/
4734      &     1X,'I',1X,'Total number with non-vanishing BR :',2X,I5,24X
4735      &     ,'I'/1X,'I',1X,'Total number with BR > 0.001 :',8X,I5,24X,'I'
4736      &     /1X,70('='))
4737  8200 FORMAT(1X,'I',1X,A9,1X,'-->',1X,A24,11X,
4738      &     'I',2X,1P,D8.2,0P,1X,'I',2X,I2,1X,'I')
4739  8300 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I')
4740  8500 FORMAT(1X/ 1X/
4741      &     1X,'R-Violating couplings',1X/ 1X /
4742      &     1X,55('=')/
4743      &     1X,'I',1X,'IJK',1X,'I',2X,'LAMBDA(IJK)',2X,'I',2X
4744      &     ,'LAMBDA''(IJK)',1X,'I',1X,"LAMBDA''(IJK)",1X,'I'/1X,'I',5X
4745      &     ,'I',15X,'I',15X,'I',15X,'I')
4746  8600 FORMAT(1X,55('='))
4747  8700 FORMAT(1X,'I',1X,I1,I1,I1,1X,'I',1X,1P,D13.3,0P,1X,'I',1X,1P
4748      &     ,D13.3,0P,1X,'I',1X,1P,D13.3,0P,1X,'I')
4749  
4750       RETURN
4751       END
4752  
4753 C*********************************************************************
4754  
4755 C...PYUPEV
4756 C...Administers the hard-process generation required for output to the
4757 C...Les Houches event record.
4758  
4759       SUBROUTINE PYUPEV
4760  
4761 C...Double precision and integer declarations.
4762       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
4763       IMPLICIT INTEGER(I-N)
4764       INTEGER PYK,PYCHGE,PYCOMP
4765  
4766 C...Commonblocks.
4767       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
4768       COMMON/PYCTAG/NCT,MCT(4000,2)
4769       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
4770       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
4771       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
4772       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
4773       COMMON/PYINT1/MINT(400),VINT(400)
4774       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
4775       COMMON/PYINT4/MWID(500),WIDS(500,5)
4776       SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,
4777      &/PYINT1/,/PYINT2/,/PYINT4/
4778  
4779 C...HEPEUP for output.
4780       INTEGER MAXNUP
4781       PARAMETER (MAXNUP=500)
4782       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
4783       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
4784       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
4785      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
4786      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
4787       SAVE /HEPEUP/
4788  
4789 C...Stop if no subprocesses on.
4790       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
4791         WRITE(MSTU(11),5100)
4792         STOP
4793       ENDIF
4794  
4795 C...Special flags for hard-process generation only.
4796       MSTP71=MSTP(71)
4797       MSTP(71)=0
4798       MST128=MSTP(128)
4799       MSTP(128)=1
4800  
4801 C...Initial values for some counters.
4802       N=0
4803       MINT(5)=MINT(5)+1
4804       MINT(7)=0
4805       MINT(8)=0
4806       MINT(30)=0
4807       MINT(83)=0
4808       MINT(84)=MSTP(126)
4809       MSTU(24)=0
4810       MSTU70=0
4811       MSTJ14=MSTJ(14)
4812 C...Normally, use K(I,4:5) colour info rather than /PYCTAG/.
4813       MINT(33)=0
4814  
4815 C...If variable energies: redo incoming kinematics and cross-section.
4816       MSTI(61)=0
4817       IF(MSTP(171).EQ.1) THEN
4818         CALL PYINKI(1)
4819         IF(MSTI(61).EQ.1) THEN
4820           MINT(5)=MINT(5)-1
4821           RETURN
4822         ENDIF
4823         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
4824         CALL PYXTOT
4825       ENDIF
4826  
4827 C...Do not allow pileup events.
4828       MINT(82)=1
4829  
4830 C...Generate variables of hard scattering.
4831       MINT(51)=0
4832       MSTI(52)=0
4833   100 CONTINUE
4834       IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
4835       MINT(31)=0
4836       MINT(51)=0
4837       MINT(57)=0
4838       CALL PYRAND
4839       IF(MSTI(61).EQ.1) THEN
4840         MINT(5)=MINT(5)-1
4841         RETURN
4842       ENDIF
4843       IF(MINT(51).EQ.2) RETURN
4844       ISUB=MINT(1)
4845  
4846       IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
4847 C...Hard scattering (including low-pT):
4848 C...reconstruct kinematics and colour flow of hard scattering.
4849         MINT31=MINT(31)
4850   110   MINT(31)=MINT31
4851         MINT(51)=0
4852         CALL PYSCAT
4853         IF(MINT(51).EQ.1) GOTO 100
4854         IPU1=MINT(84)+1
4855         IPU2=MINT(84)+2
4856  
4857 C...Decay of final state resonances.
4858         MINT(32)=0
4859         IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10.AND.ISUB.NE.95)
4860      &  CALL PYRESD(0)
4861         IF(MINT(51).EQ.1) GOTO 100
4862         MINT(52)=N
4863  
4864 C...Longitudinal boost of hard scattering.
4865         BETAZ=(VINT(41)-VINT(42))/(VINT(41)+VINT(42))
4866         CALL PYROBO(MINT(84)+1,N,0D0,0D0,0D0,0D0,BETAZ)
4867  
4868       ELSEIF(ISUB.NE.99) THEN
4869 C...Diffractive and elastic scattering.
4870         CALL PYDIFF
4871  
4872       ELSE
4873 C...DIS scattering (photon flux external).
4874         CALL PYDISG
4875         IF(MINT(51).EQ.1) GOTO 100
4876       ENDIF
4877  
4878 C...Check that no odd resonance left undecayed.
4879       MINT(54)=N
4880       NFIX=N
4881       DO 120 I=MINT(84)+1,NFIX
4882         IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
4883      &  K(I,2).NE.22) THEN
4884           KCA=PYCOMP(K(I,2))
4885           IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
4886             CALL PYRESD(I)
4887             IF(MINT(51).EQ.1) GOTO 100
4888           ENDIF
4889         ENDIF
4890   120 CONTINUE
4891  
4892 C...Boost hadronic subsystem to overall rest frame.
4893 C..(Only relevant when photon inside lepton beam.)
4894       IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
4895  
4896 C...Store event information and calculate Monte Carlo estimates of
4897 C...subprocess cross-sections.
4898   130 CALL PYDOCU
4899  
4900 C...Transform to the desired coordinate frame.
4901   140 CALL PYFRAM(MSTP(124))
4902       MSTU(70)=MSTU70
4903       PARU(21)=VINT(1)
4904  
4905 C...Restore special flags for hard-process generation only.
4906       MSTP(71)=MSTP71
4907       MSTP(128)=MST128
4908  
4909 C...Trace colour tags; convert to LHA style labels.
4910       NCT=100
4911       DO 150 I=MINT(84)+1,N
4912         MCT(I,1)=0
4913         MCT(I,2)=0
4914   150 CONTINUE
4915       DO 160 I=MINT(84)+1,N
4916         KQ=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
4917         IF(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
4918           IF(K(I,4).NE.0.AND.(KQ.EQ.1.OR.KQ.EQ.2).AND.MCT(I,1).EQ.0)
4919      &    THEN
4920             IMO=MOD(K(I,4)/MSTU(5),MSTU(5))
4921             IDA=MOD(K(I,4),MSTU(5))
4922             IF(IMO.NE.0.AND.MOD(K(IMO,5)/MSTU(5),MSTU(5)).EQ.I.AND.
4923      &      MCT(IMO,2).NE.0) THEN
4924               MCT(I,1)=MCT(IMO,2)
4925             ELSEIF(IMO.NE.0.AND.MOD(K(IMO,4),MSTU(5)).EQ.I.AND.
4926      &      MCT(IMO,1).NE.0) THEN
4927               MCT(I,1)=MCT(IMO,1)
4928             ELSEIF(IDA.NE.0.AND.MOD(K(IDA,5),MSTU(5)).EQ.I.AND.
4929      &      MCT(IDA,2).NE.0) THEN
4930               MCT(I,1)=MCT(IDA,2)
4931             ELSE
4932               NCT=NCT+1
4933               MCT(I,1)=NCT
4934             ENDIF
4935           ENDIF
4936           IF(K(I,5).NE.0.AND.(KQ.EQ.-1.OR.KQ.EQ.2).AND.MCT(I,2).EQ.0)
4937      &    THEN
4938             IMO=MOD(K(I,5)/MSTU(5),MSTU(5))
4939             IDA=MOD(K(I,5),MSTU(5))
4940             IF(IMO.NE.0.AND.MOD(K(IMO,4)/MSTU(5),MSTU(5)).EQ.I.AND.
4941      &      MCT(IMO,1).NE.0) THEN
4942               MCT(I,2)=MCT(IMO,1)
4943             ELSEIF(IMO.NE.0.AND.MOD(K(IMO,5),MSTU(5)).EQ.I.AND.
4944      &      MCT(IMO,2).NE.0) THEN
4945               MCT(I,2)=MCT(IMO,2)
4946             ELSEIF(IDA.NE.0.AND.MOD(K(IDA,4),MSTU(5)).EQ.I.AND.
4947      &      MCT(IDA,1).NE.0) THEN
4948               MCT(I,2)=MCT(IDA,1)
4949             ELSE
4950               NCT=NCT+1
4951               MCT(I,2)=NCT
4952             ENDIF
4953           ENDIF
4954         ENDIF
4955   160 CONTINUE
4956  
4957 C...Put event in HEPEUP commonblock.
4958       NUP=N-MINT(84)
4959       IDPRUP=MINT(1)
4960       XWGTUP=1D0
4961       SCALUP=VINT(53)
4962       AQEDUP=VINT(57)
4963       AQCDUP=VINT(58)
4964       DO 180 I=1,NUP
4965         IDUP(I)=K(I+MINT(84),2)
4966         IF(I.LE.2) THEN
4967           ISTUP(I)=-1
4968           MOTHUP(1,I)=0
4969           MOTHUP(2,I)=0
4970         ELSEIF(K(I+4,3).EQ.0) THEN
4971           ISTUP(I)=1
4972           MOTHUP(1,I)=1
4973           MOTHUP(2,I)=2
4974         ELSE
4975           ISTUP(I)=1
4976           MOTHUP(1,I)=K(I+MINT(84),3)-MINT(84)
4977           MOTHUP(2,I)=0
4978         ENDIF
4979         IF(I.GE.3.AND.K(I+MINT(84),3).GT.0)
4980      &  ISTUP(K(I+MINT(84),3)-MINT(84))=2
4981         ICOLUP(1,I)=MCT(I+MINT(84),1)
4982         ICOLUP(2,I)=MCT(I+MINT(84),2)
4983         DO 170 J=1,5
4984           PUP(J,I)=P(I+MINT(84),J)
4985   170   CONTINUE
4986         VTIMUP(I)=V(I,5)
4987         SPINUP(I)=9D0
4988   180 CONTINUE
4989  
4990 C...Optionally write out event to disk. Minimal size for time/spin fields.
4991       IF(MSTP(162).GT.0) THEN
4992         WRITE(MSTP(162),5200) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
4993         DO 190 I=1,NUP
4994           IF(VTIMUP(I).EQ.0D0) THEN
4995             WRITE(MSTP(162),5300) IDUP(I),ISTUP(I),MOTHUP(1,I),
4996      &      MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5),
4997      &      ' 0. 9.'
4998           ELSE
4999             WRITE(MSTP(162),5400) IDUP(I),ISTUP(I),MOTHUP(1,I),
5000      &      MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5),
5001      &      VTIMUP(I),' 9.'
5002           ENDIF
5003   190   CONTINUE
5004 
5005 C...Optional extra line with parton-density information.
5006         IF(MSTP(165).GE.1) WRITE(MSTP(162),5500) MSTI(15),MSTI(16),
5007      &  PARI(33),PARI(34),PARI(23),PARI(29),PARI(30) 
5008       ENDIF
5009  
5010 C...Error messages and other print formats.
5011  5100 FORMAT(1X,'Error: no subprocess switched on.'/
5012      &1X,'Execution stopped.')
5013  5200 FORMAT(1P,2I6,4E14.6)
5014  5300 FORMAT(1P,I8,5I5,5E18.10,A6)
5015  5400 FORMAT(1P,I8,5I5,5E18.10,E12.4,A3)
5016  5500 FORMAT(1P,'#pdf ',2I5,5E18.10)
5017  
5018       RETURN
5019       END
5020  
5021 C*********************************************************************
5022  
5023 C...PYUPIN
5024 C...Fills the HEPRUP commonblock with info on incoming beams and allowed
5025 C...processes, and optionally stores that information on file.
5026  
5027       SUBROUTINE PYUPIN
5028  
5029 C...Double precision and integer declarations.
5030       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5031       IMPLICIT INTEGER(I-N)
5032  
5033 C...Commonblocks.
5034       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
5035       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5036       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5037       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
5038       SAVE /PYJETS/,/PYSUBS/,/PYPARS/,/PYINT5/
5039  
5040 C...User process initialization commonblock.
5041       INTEGER MAXPUP
5042       PARAMETER (MAXPUP=100)
5043       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5044       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5045       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5046      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5047      &LPRUP(MAXPUP)
5048       SAVE /HEPRUP/
5049  
5050 C...Store info on incoming beams.
5051       IDBMUP(1)=K(1,2)
5052       IDBMUP(2)=K(2,2)
5053       EBMUP(1)=P(1,4)
5054       EBMUP(2)=P(2,4)
5055       PDFGUP(1)=0
5056       PDFGUP(2)=0
5057       PDFSUP(1)=MSTP(51)
5058       PDFSUP(2)=MSTP(51)
5059  
5060 C...Event weighting strategy.
5061       IDWTUP=3
5062  
5063 C...Info on individual processes.
5064       NPRUP=0
5065       DO 100 ISUB=1,500
5066         IF(MSUB(ISUB).EQ.1) THEN
5067           NPRUP=NPRUP+1
5068           XSECUP(NPRUP)=1D9*XSEC(ISUB,3)
5069           XERRUP(NPRUP)=XSECUP(NPRUP)/SQRT(MAX(1D0,DBLE(NGEN(ISUB,3))))
5070           XMAXUP(NPRUP)=1D0
5071           LPRUP(NPRUP)=ISUB
5072         ENDIF
5073   100 CONTINUE
5074  
5075 C...Write info to file.
5076       IF(MSTP(161).GT.0) THEN
5077         WRITE(MSTP(161),5100) IDBMUP(1),IDBMUP(2),EBMUP(1),EBMUP(2),
5078      &  PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
5079         DO 110 IPR=1,NPRUP
5080           WRITE(MSTP(161),5200) XSECUP(IPR),XERRUP(IPR),XMAXUP(IPR),
5081      &    LPRUP(IPR)
5082   110   CONTINUE
5083       ENDIF
5084  
5085 C...Formats for printout.
5086  5100 FORMAT(1P,2I8,2E14.6,6I6)
5087  5200 FORMAT(1P,3E14.6,I6)
5088  
5089       RETURN
5090       END
5091 
5092 
5093 C*********************************************************************
5094 
5095 C...Combine the two old-style Pythia initialization and event files
5096 C...into a single Les Houches Event File.
5097 
5098       SUBROUTINE PYLHEF
5099  
5100 C...Double precision and integer declarations.
5101       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5102       IMPLICIT INTEGER(I-N)
5103  
5104 C...PYTHIA commonblock: only used to provide read/write units and version.
5105       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5106       SAVE /PYPARS/
5107  
5108 C...User process initialization commonblock.
5109       INTEGER MAXPUP
5110       PARAMETER (MAXPUP=100)
5111       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5112       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5113       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5114      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5115      &LPRUP(MAXPUP)
5116       SAVE /HEPRUP/
5117  
5118 C...User process event common block.
5119       INTEGER MAXNUP
5120       PARAMETER (MAXNUP=500)
5121       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
5122       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
5123       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
5124      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
5125      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
5126       SAVE /HEPEUP/
5127 
5128 C...Lines to read in assumed never longer than 200 characters. 
5129       PARAMETER (MAXLEN=200)
5130       CHARACTER*(MAXLEN) STRING
5131 
5132 C...Format for reading lines.
5133       CHARACTER*6 STRFMT
5134       STRFMT='(A000)'
5135       WRITE(STRFMT(3:5),'(I3)') MAXLEN
5136 
5137 C...Rewind initialization and event files. 
5138       REWIND MSTP(161)
5139       REWIND MSTP(162)
5140 
5141 C...Write header info.
5142       WRITE(MSTP(163),'(A)') '<LesHouchesEvents version="1.0">'
5143       WRITE(MSTP(163),'(A)') '<!--'
5144       WRITE(MSTP(163),'(A,I1,A1,I3)') 'File generated with PYTHIA ',
5145      &MSTP(181),'.',MSTP(182)
5146       WRITE(MSTP(163),'(A)') '-->'       
5147 
5148 C...Read first line of initialization info and get number of processes.
5149       READ(MSTP(161),'(A)',END=400,ERR=400) STRING                  
5150       READ(STRING,*,ERR=400) IDBMUP(1),IDBMUP(2),EBMUP(1),
5151      &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
5152 
5153 C...Copy initialization lines, omitting trailing blanks. 
5154 C...Embed in <init> ... </init> block.
5155       WRITE(MSTP(163),'(A)') '<init>' 
5156       DO 140 IPR=0,NPRUP
5157         IF(IPR.GT.0) READ(MSTP(161),'(A)',END=400,ERR=400) STRING
5158         LEN=MAXLEN+1  
5159   120   LEN=LEN-1
5160         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 120
5161         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
5162   140 CONTINUE
5163       WRITE(MSTP(163),'(A)') '</init>' 
5164 
5165 C...Begin event loop. Read first line of event info or already done.
5166       READ(MSTP(162),'(A)',END=320,ERR=400) STRING    
5167   200 CONTINUE
5168 
5169 C...Look at first line to know number of particles in event.
5170       READ(STRING,*,ERR=400) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
5171 
5172 C...Begin an <event> block. Copy event lines, omitting trailing blanks. 
5173       WRITE(MSTP(163),'(A)') '<event>' 
5174       DO 240 I=0,NUP
5175         IF(I.GT.0) READ(MSTP(162),'(A)',END=400,ERR=400) STRING
5176         LEN=MAXLEN+1  
5177   220   LEN=LEN-1
5178         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 220
5179         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
5180   240 CONTINUE
5181               
5182 C...Copy trailing comment lines - with a # in the first column - as is.
5183   260 READ(MSTP(162),'(A)',END=300,ERR=400) STRING    
5184       IF(STRING(1:1).EQ.'#') THEN
5185         LEN=MAXLEN+1  
5186   280   LEN=LEN-1
5187         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 280
5188         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
5189         GOTO 260
5190       ENDIF
5191 
5192 C..End the <event> block. Loop back to look for next event.
5193       WRITE(MSTP(163),'(A)') '</event>' 
5194       GOTO 200
5195 
5196 C...Successfully reached end of event loop: write closing tag
5197 C...and remove temporary intermediate files (unless asked not to).
5198   300 WRITE(MSTP(163),'(A)') '</event>' 
5199   320 WRITE(MSTP(163),'(A)') '</LesHouchesEvents>' 
5200       IF(MSTP(164).EQ.1) RETURN
5201       CLOSE(MSTP(161),ERR=400,STATUS='DELETE')
5202       CLOSE(MSTP(162),ERR=400,STATUS='DELETE')
5203       RETURN
5204 
5205 C...Error exit.
5206   400 WRITE(*,*) ' PYLHEF file joining failed!'
5207 
5208       RETURN
5209       END
5210  
5211 C*********************************************************************
5212  
5213 C...PYINRE
5214 C...Calculates full and effective widths of gauge bosons, stores
5215 C...masses and widths, rescales coefficients to be used for
5216 C...resonance production generation.
5217  
5218       SUBROUTINE PYINRE
5219  
5220 C...Double precision and integer declarations.
5221       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5222       IMPLICIT INTEGER(I-N)
5223       INTEGER PYK,PYCHGE,PYCOMP
5224 C...Parameter statement to help give large particle numbers.
5225       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
5226      &KEXCIT=4000000,KDIMEN=5000000)
5227 C...Commonblocks.
5228       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5229       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5230       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
5231       COMMON/PYDAT4/CHAF(500,2)
5232       CHARACTER CHAF*16
5233       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5234       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5235       COMMON/PYINT1/MINT(400),VINT(400)
5236       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
5237       COMMON/PYINT4/MWID(500),WIDS(500,5)
5238       COMMON/PYINT6/PROC(0:500)
5239       CHARACTER PROC*28
5240       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
5241       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
5242      &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT6/,/PYMSSM/
5243 C...Local arrays and data.
5244       CHARACTER PRTMP*9
5245       DIMENSION WDTP(0:400),WDTE(0:400,0:5),WDTPM(0:400),
5246      &WDTEM(0:400,0:5),KCORD(500),PMORD(500)
5247  
5248 C...Born level couplings in MSSM Higgs doublet sector.
5249       XW=PARU(102)
5250       XWV=XW
5251       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
5252       XW1=1D0-XW
5253       IF(MSTP(4).EQ.2) THEN
5254         TANBE=PARU(141)
5255         RATBE=((1D0-TANBE**2)/(1D0+TANBE**2))**2
5256         SQMZ=PMAS(23,1)**2
5257         SQMW=PMAS(24,1)**2
5258         SQMH=PMAS(25,1)**2
5259         SQMA=SQMH*(SQMZ-SQMH)/(SQMZ*RATBE-SQMH)
5260         SQMHP=0.5D0*(SQMA+SQMZ+SQRT((SQMA+SQMZ)**2-4D0*SQMA*SQMZ*RATBE))
5261         SQMHC=SQMA+SQMW
5262         IF(SQMH.GE.SQMZ.OR.MIN(SQMA,SQMHP,SQMHC).LE.0D0) THEN
5263           WRITE(MSTU(11),5000)
5264           CALL PYSTOP(101)
5265         ENDIF
5266         PMAS(35,1)=SQRT(SQMHP)
5267         PMAS(36,1)=SQRT(SQMA)
5268         PMAS(37,1)=SQRT(SQMHC)
5269         ALSU=0.5D0*ATAN(2D0*TANBE*(SQMA+SQMZ)/((1D0-TANBE**2)*
5270      &  (SQMA-SQMZ)))
5271         BESU=ATAN(TANBE)
5272         PARU(142)=1D0
5273         PARU(143)=1D0
5274         PARU(161)=-SIN(ALSU)/COS(BESU)
5275         PARU(162)=COS(ALSU)/SIN(BESU)
5276         PARU(163)=PARU(161)
5277         PARU(164)=SIN(BESU-ALSU)
5278         PARU(165)=PARU(164)
5279         PARU(168)=SIN(BESU-ALSU)+0.5D0*COS(2D0*BESU)*SIN(BESU+ALSU)/XW
5280         PARU(171)=COS(ALSU)/COS(BESU)
5281         PARU(172)=SIN(ALSU)/SIN(BESU)
5282         PARU(173)=PARU(171)
5283         PARU(174)=COS(BESU-ALSU)
5284         PARU(175)=PARU(174)
5285         PARU(176)=COS(2D0*ALSU)*COS(BESU+ALSU)-2D0*SIN(2D0*ALSU)*
5286      &  SIN(BESU+ALSU)
5287         PARU(177)=COS(2D0*BESU)*COS(BESU+ALSU)
5288         PARU(178)=COS(BESU-ALSU)-0.5D0*COS(2D0*BESU)*COS(BESU+ALSU)/XW
5289         PARU(181)=TANBE
5290         PARU(182)=1D0/TANBE
5291         PARU(183)=PARU(181)
5292         PARU(184)=0D0
5293         PARU(185)=PARU(184)
5294         PARU(186)=COS(BESU-ALSU)
5295         PARU(187)=SIN(BESU-ALSU)
5296         PARU(188)=PARU(186)
5297         PARU(189)=PARU(187)
5298         PARU(190)=0D0
5299         PARU(195)=COS(BESU-ALSU)
5300       ENDIF
5301  
5302 C...Reset effective widths of gauge bosons.
5303       DO 110 I=1,500
5304         DO 100 J=1,5
5305           WIDS(I,J)=1D0
5306   100   CONTINUE
5307   110 CONTINUE
5308  
5309 C...Order resonances by increasing mass (except Z0 and W+/-).
5310       NRES=0
5311       DO 140 KC=1,500
5312         KF=KCHG(KC,4)
5313         IF(KF.EQ.0) GOTO 140
5314         IF(MWID(KC).EQ.0) GOTO 140
5315         IF(KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18) THEN
5316           IF(MSTP(1).LE.3) GOTO 140
5317         ENDIF
5318         IF(KF/KSUSY1.EQ.1.OR.KF/KSUSY1.EQ.2) THEN
5319           IF(IMSS(1).LE.0) GOTO 140
5320         ENDIF
5321         NRES=NRES+1
5322         PMRES=PMAS(KC,1)
5323         IF(KC.EQ.23.OR.KC.EQ.24) PMRES=0D0
5324         DO 120 I1=NRES-1,1,-1
5325           IF(PMRES.GE.PMORD(I1)) GOTO 130
5326           KCORD(I1+1)=KCORD(I1)
5327           PMORD(I1+1)=PMORD(I1)
5328   120   CONTINUE
5329   130   KCORD(I1+1)=KC
5330         PMORD(I1+1)=PMRES
5331   140 CONTINUE
5332  
5333 C...Loop over possible resonances.
5334       DO 180 I=1,NRES
5335         KC=KCORD(I)
5336         KF=KCHG(KC,4)
5337  
5338 C...Check that no fourth generation channels on by mistake.
5339         IF(MSTP(1).LE.3) THEN
5340           DO 150 J=1,MDCY(KC,3)
5341             IDC=J+MDCY(KC,2)-1
5342             KFA1=IABS(KFDP(IDC,1))
5343             KFA2=IABS(KFDP(IDC,2))
5344             IF(KFA1.EQ.7.OR.KFA1.EQ.8.OR.KFA1.EQ.17.OR.KFA1.EQ.18.OR.
5345      &      KFA2.EQ.7.OR.KFA2.EQ.8.OR.KFA2.EQ.17.OR.KFA2.EQ.18)
5346      &      MDME(IDC,1)=-1
5347   150     CONTINUE
5348         ENDIF
5349  
5350 C...Check that no supersymmetric channels on by mistake.
5351         IF(IMSS(1).LE.0) THEN
5352           DO 160 J=1,MDCY(KC,3)
5353             IDC=J+MDCY(KC,2)-1
5354             KFA1S=IABS(KFDP(IDC,1))/KSUSY1
5355             KFA2S=IABS(KFDP(IDC,2))/KSUSY1
5356             IF(KFA1S.EQ.1.OR.KFA1S.EQ.2.OR.KFA2S.EQ.1.OR.KFA2S.EQ.2)
5357      &      MDME(IDC,1)=-1
5358   160     CONTINUE
5359         ENDIF
5360  
5361 C...Find mass and evaluate width.
5362         PMR=PMAS(KC,1)
5363         IF(KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) MINT(62)=1
5364         IF(MWID(KC).EQ.3) MINT(63)=1
5365         CALL PYWIDT(KF,PMR**2,WDTP,WDTE)
5366         MINT(51)=0
5367  
5368 C...Evaluate suppression factors due to non-simulated channels.
5369         IF(KCHG(KC,3).EQ.0) THEN
5370           WDTP0I=0D0
5371           IF(WDTP(0).GT.0D0) WDTP0I=1D0/WDTP(0)
5372           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))**2+
5373      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
5374      &    2D0*WDTE(0,4)*WDTE(0,5))*WDTP0I**2
5375           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*WDTP0I
5376           WIDS(KC,3)=0D0
5377           WIDS(KC,4)=0D0
5378           WIDS(KC,5)=0D0
5379         ELSE
5380           IF(MWID(KC).EQ.3) MINT(63)=1
5381           CALL PYWIDT(-KF,PMR**2,WDTPM,WDTEM)
5382           MINT(51)=0
5383           WDTP0I=0D0
5384           IF(WDTP(0).GT.0D0) WDTP0I=1D0/WDTP(0)
5385           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))*(WDTEM(0,1)+WDTEM(0,3))+
5386      &    (WDTE(0,1)+WDTE(0,2))*(WDTEM(0,4)+WDTEM(0,5))+
5387      &    (WDTE(0,4)+WDTE(0,5))*(WDTEM(0,1)+WDTEM(0,3))+
5388      &    WDTE(0,4)*WDTEM(0,5)+WDTE(0,5)*WDTEM(0,4))*WDTP0I**2
5389           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*WDTP0I
5390           WIDS(KC,3)=(WDTEM(0,1)+WDTEM(0,3)+WDTEM(0,4))*WDTP0I
5391           WIDS(KC,4)=((WDTE(0,1)+WDTE(0,2))**2+
5392      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
5393      &    2D0*WDTE(0,4)*WDTE(0,5))*WDTP0I**2
5394           WIDS(KC,5)=((WDTEM(0,1)+WDTEM(0,3))**2+
5395      &    2D0*(WDTEM(0,1)+WDTEM(0,3))*(WDTEM(0,4)+WDTEM(0,5))+
5396      &    2D0*WDTEM(0,4)*WDTEM(0,5))*WDTP0I**2
5397         ENDIF
5398  
5399 C...Set resonance widths and branching ratios;
5400 C...also on/off switch for decays.
5401         IF(MWID(KC).EQ.1.OR.MWID(KC).EQ.3) THEN
5402           PMAS(KC,2)=WDTP(0)
5403           PMAS(KC,3)=MIN(0.9D0*PMAS(KC,1),10D0*PMAS(KC,2))
5404           IF(MSTP(41).EQ.0.OR.MSTP(41).EQ.1) MDCY(KC,1)=MSTP(41)
5405           DO 170 J=1,MDCY(KC,3)
5406             IDC=J+MDCY(KC,2)-1
5407             BRAT(IDC)=0D0
5408             IF(WDTP(0).GT.0D0) BRAT(IDC)=WDTP(J)/WDTP(0)
5409   170     CONTINUE
5410         ENDIF
5411   180 CONTINUE
5412  
5413 C...Flavours of leptoquark: redefine charge and name.
5414       KFLQQ=KFDP(MDCY(42,2),1)
5415       KFLQL=KFDP(MDCY(42,2),2)
5416       KCHG(42,1)=KCHG(PYCOMP(KFLQQ),1)*ISIGN(1,KFLQQ)+
5417      &KCHG(PYCOMP(KFLQL),1)*ISIGN(1,KFLQL)
5418       LL=1
5419       IF(IABS(KFLQL).EQ.13) LL=2
5420       IF(IABS(KFLQL).EQ.15) LL=3
5421       CHAF(42,1)='LQ_'//CHAF(IABS(KFLQQ),1)(1:1)//
5422      &CHAF(IABS(KFLQL),1)(1:LL)//' '
5423       CHAF(42,2)=CHAF(42,2)(1:4+LL)//'bar '
5424  
5425 C...Special cases in treatment of gamma*/Z0: redefine process name.
5426       IF(MSTP(43).EQ.1) THEN
5427         PROC(1)='f + fbar -> gamma*'
5428         PROC(15)='f + fbar -> g + gamma*'
5429         PROC(19)='f + fbar -> gamma + gamma*'
5430         PROC(30)='f + g -> f + gamma*'
5431         PROC(35)='f + gamma -> f + gamma*'
5432       ELSEIF(MSTP(43).EQ.2) THEN
5433         PROC(1)='f + fbar -> Z0'
5434         PROC(15)='f + fbar -> g + Z0'
5435         PROC(19)='f + fbar -> gamma + Z0'
5436         PROC(30)='f + g -> f + Z0'
5437         PROC(35)='f + gamma -> f + Z0'
5438       ELSEIF(MSTP(43).EQ.3) THEN
5439         PROC(1)='f + fbar -> gamma*/Z0'
5440         PROC(15)='f + fbar -> g + gamma*/Z0'
5441         PROC(19)='f+ fbar -> gamma + gamma*/Z0'
5442         PROC(30)='f + g -> f + gamma*/Z0'
5443         PROC(35)='f + gamma -> f + gamma*/Z0'
5444       ENDIF
5445  
5446 C...Special cases in treatment of gamma*/Z0/Z'0: redefine process name.
5447       IF(MSTP(44).EQ.1) THEN
5448         PROC(141)='f + fbar -> gamma*'
5449       ELSEIF(MSTP(44).EQ.2) THEN
5450         PROC(141)='f + fbar -> Z0'
5451       ELSEIF(MSTP(44).EQ.3) THEN
5452         PROC(141)='f + fbar -> Z''0'
5453       ELSEIF(MSTP(44).EQ.4) THEN
5454         PROC(141)='f + fbar -> gamma*/Z0'
5455       ELSEIF(MSTP(44).EQ.5) THEN
5456         PROC(141)='f + fbar -> gamma*/Z''0'
5457       ELSEIF(MSTP(44).EQ.6) THEN
5458         PROC(141)='f + fbar -> Z0/Z''0'
5459       ELSEIF(MSTP(44).EQ.7) THEN
5460         PROC(141)='f + fbar -> gamma*/Z0/Z''0'
5461       ENDIF
5462  
5463 C...Special cases in treatment of WW -> WW: redefine process name.
5464       IF(MSTP(45).EQ.1) THEN
5465         PROC(77)='W+ + W+ -> W+ + W+'
5466       ELSEIF(MSTP(45).EQ.2) THEN
5467         PROC(77)='W+ + W- -> W+ + W-'
5468       ELSEIF(MSTP(45).EQ.3) THEN
5469         PROC(77)='W+/- + W+/- -> W+/- + W+/-'
5470       ENDIF
5471 
5472 C...Initialize Generic Processes
5473       KFGEN=9900001
5474       KCGEN=PYCOMP(KFGEN)
5475       IF(KCGEN.GT.0) THEN
5476         IDCY=MDCY(KCGEN,2)
5477         IF(IDCY.GT.0) THEN
5478           KFF1=KFDP(IDCY+1,1)
5479           KFF2=KFDP(IDCY+1,2)
5480           KCF1=PYCOMP(KFF1)
5481           KCF2=PYCOMP(KFF2)
5482           IJ1=1
5483           IJ2=1
5484           KCI1=PYCOMP(KFDP(IDCY,1))
5485           IF(KFDP(IDCY,1).LT.0) IJ1=2
5486           KCI2=PYCOMP(KFDP(IDCY,2))
5487           IF(KFDP(IDCY,2).LT.0) IJ2=2
5488           ITMP1=0
5489  190      ITMP1=ITMP1+1
5490           IF(CHAF(KCI1,IJ1)(ITMP1+1:ITMP1+1).NE.' '.AND.ITMP1.LT.4)
5491      &    GOTO 190
5492           ITMP2=0
5493  200      ITMP2=ITMP2+1
5494           IF(CHAF(KCI2,IJ2)(ITMP2+1:ITMP2+1).NE.' '.AND.ITMP2.LT.4)
5495      &    GOTO 200          
5496           PRTMP=CHAF(KCI1,IJ1)(1:ITMP1)//'+'//CHAF(KCI2,IJ2)(1:ITMP2)
5497           ITMP3=0
5498  205      ITMP3=ITMP3+1
5499           IF(PRTMP(ITMP3+1:ITMP3+1).NE.' '.AND.ITMP3.LT.9)
5500      &    GOTO 205
5501           PROC(481)=PRTMP(1:ITMP3)//' -> '//CHAF(KCGEN,1)
5502           IJ1=1
5503           IJ2=1
5504           IF(KFF1.LT.0) IJ1=2
5505           IF(KFF2.LT.0) IJ2=2
5506           ITMP1=0
5507  210      ITMP1=ITMP1+1
5508           IF(CHAF(KCF1,IJ1)(ITMP1+1:ITMP1+1).NE.' '.AND.ITMP1.LT.8)
5509      &    GOTO 210
5510           ITMP2=0
5511  220      ITMP2=ITMP2+1
5512           IF(CHAF(KCF2,IJ2)(ITMP2+1:ITMP2+1).NE.' '.AND.ITMP2.LT.8)
5513      &    GOTO 220          
5514           PROC(482)=PRTMP(1:ITMP3)//' -> '//CHAF(KCF1,IJ1)(1:ITMP1)//
5515      &    '+'//CHAF(KCF2,IJ2)(1:ITMP2)
5516         ENDIF
5517       ENDIF
5518 
5519 
5520  
5521 C...Format for error information.
5522  5000 FORMAT(1X,'Error: unphysical input tan^2(beta) and m_H ',
5523      &'combination'/1X,'Execution stopped!')
5524  
5525       RETURN
5526       END
5527  
5528 C*********************************************************************
5529  
5530 C...PYINBM
5531 C...Identifies the two incoming particles and the choice of frame.
5532  
5533        SUBROUTINE PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
5534  
5535 C...Double precision and integer declarations.
5536       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5537       IMPLICIT INTEGER(I-N)
5538       INTEGER PYK,PYCHGE,PYCOMP
5539  
5540 C...User process initialization commonblock.
5541       INTEGER MAXPUP
5542       PARAMETER (MAXPUP=100)
5543       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5544       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5545       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5546      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5547      &LPRUP(MAXPUP)
5548       SAVE /HEPRUP/
5549  
5550 C...Commonblocks.
5551       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
5552       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5553       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5554       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5555       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5556       COMMON/PYINT1/MINT(400),VINT(400)
5557       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
5558  
5559 C...Local arrays, character variables and data.
5560       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHCOM(3)*12,CHALP(2)*26,
5561      &CHIDNT(3)*12,CHTEMP*12,CHCDE(39)*12,CHINIT*76,CHNAME*16
5562       DIMENSION LEN(3),KCDE(39),PM(2)
5563       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
5564      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
5565       DATA CHCDE/    'e-          ','e+          ','nu_e        ',
5566      &'nu_ebar     ','mu-         ','mu+         ','nu_mu       ',
5567      &'nu_mubar    ','tau-        ','tau+        ','nu_tau      ',
5568      &'nu_taubar   ','pi+         ','pi-         ','n0          ',
5569      &'nbar0       ','p+          ','pbar-       ','gamma       ',
5570      &'lambda0     ','sigma-      ','sigma0      ','sigma+      ',
5571      &'xi-         ','xi0         ','omega-      ','pi0         ',
5572      &'reggeon     ','pomeron     ','gamma/e-    ','gamma/e+    ',
5573      &'gamma/mu-   ','gamma/mu+   ','gamma/tau-  ','gamma/tau+  ',
5574      &'k+          ','k-          ','ks0         ','kl0         '/
5575       DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
5576      &211,-211,2112,-2112,2212,-2212,22,3122,3112,3212,3222,
5577      &3312,3322,3334,111,110,990,6*22,321,-321,310,130/
5578  
5579 C...Store initial energy. Default frame.
5580       VINT(290)=WIN
5581       MINT(111)=0
5582  
5583 C...Special user process initialization; convert to normal input.
5584       IF(CHFRAM(1:1).EQ.'u'.OR.CHFRAM(1:1).EQ.'U') THEN
5585         MINT(111)=11
5586         IF(PDFGUP(1).EQ.-9.OR.PDFGUP(2).EQ.-9) MINT(111)=12
5587         CALL PYNAME(IDBMUP(1),CHNAME)
5588         CHBEAM=CHNAME(1:12)
5589         CALL PYNAME(IDBMUP(2),CHNAME)
5590         CHTARG=CHNAME(1:12)
5591       ENDIF
5592  
5593 C...Convert character variables to lowercase and find their length.
5594       CHCOM(1)=CHFRAM
5595       CHCOM(2)=CHBEAM
5596       CHCOM(3)=CHTARG
5597       DO 130 I=1,3
5598         LEN(I)=12
5599         DO 110 LL=12,1,-1
5600           IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
5601           DO 100 LA=1,26
5602             IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
5603      &      CHALP(1)(LA:LA)
5604   100     CONTINUE
5605   110   CONTINUE
5606         CHIDNT(I)=CHCOM(I)
5607  
5608 C...Fix up bar, underscore and charge in particle name (if needed).
5609         DO 120 LL=1,10
5610           IF(CHIDNT(I)(LL:LL).EQ.'~') THEN
5611             CHTEMP=CHIDNT(I)
5612             CHIDNT(I)=CHTEMP(1:LL-1)//'bar'//CHTEMP(LL+1:10)//'  '
5613           ENDIF
5614   120   CONTINUE
5615         IF(CHIDNT(I)(1:2).EQ.'nu'.AND.CHIDNT(I)(3:3).NE.'_') THEN
5616           CHTEMP=CHIDNT(I)
5617           CHIDNT(I)='nu_'//CHTEMP(3:7)
5618         ELSEIF(CHIDNT(I)(1:2).EQ.'n ') THEN
5619           CHIDNT(I)(1:3)='n0 '
5620         ELSEIF(CHIDNT(I)(1:4).EQ.'nbar') THEN
5621           CHIDNT(I)(1:5)='nbar0'
5622         ELSEIF(CHIDNT(I)(1:2).EQ.'p ') THEN
5623           CHIDNT(I)(1:3)='p+ '
5624         ELSEIF(CHIDNT(I)(1:4).EQ.'pbar'.OR.
5625      &    CHIDNT(I)(1:2).EQ.'p-') THEN
5626           CHIDNT(I)(1:5)='pbar-'
5627         ELSEIF(CHIDNT(I)(1:6).EQ.'lambda') THEN
5628           CHIDNT(I)(7:7)='0'
5629         ELSEIF(CHIDNT(I)(1:3).EQ.'reg') THEN
5630           CHIDNT(I)(1:7)='reggeon'
5631         ELSEIF(CHIDNT(I)(1:3).EQ.'pom') THEN
5632           CHIDNT(I)(1:7)='pomeron'
5633         ENDIF
5634   130 CONTINUE
5635  
5636 C...Identify free initialization.
5637       IF(CHCOM(1)(1:2).EQ.'no') THEN
5638         MINT(65)=1
5639         RETURN
5640       ENDIF
5641  
5642 C...Identify incoming beam and target particles.
5643       DO 160 I=1,2
5644         DO 140 J=1,39
5645           IF(CHIDNT(I+1).EQ.CHCDE(J)) MINT(10+I)=KCDE(J)
5646   140   CONTINUE
5647         PM(I)=PYMASS(MINT(10+I))
5648         VINT(2+I)=PM(I)
5649         MINT(140+I)=0
5650         IF(MINT(10+I).EQ.22.AND.CHIDNT(I+1)(6:6).EQ.'/') THEN
5651           CHTEMP=CHIDNT(I+1)(7:12)//' '
5652           DO 150 J=1,12
5653             IF(CHTEMP.EQ.CHCDE(J)) MINT(140+I)=KCDE(J)
5654   150     CONTINUE
5655           PM(I)=PYMASS(MINT(140+I))
5656           VINT(302+I)=PM(I)
5657         ENDIF
5658   160 CONTINUE
5659       IF(MINT(11).EQ.0) WRITE(MSTU(11),5000) CHBEAM(1:LEN(2))
5660       IF(MINT(12).EQ.0) WRITE(MSTU(11),5100) CHTARG(1:LEN(3))
5661       IF(MINT(11).EQ.0.OR.MINT(12).EQ.0) CALL PYSTOP(7)
5662  
5663 C...Identify choice of frame and input energies.
5664       CHINIT=' '
5665  
5666 C...Events defined in the CM frame.
5667       IF(CHCOM(1)(1:2).EQ.'cm') THEN
5668         MINT(111)=1
5669         S=WIN**2
5670         IF(MSTP(122).GE.1) THEN
5671           IF(CHCOM(2)(1:1).NE.'e') THEN
5672             LOFFS=(31-(LEN(2)+LEN(3)))/2
5673             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
5674      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5675      &      ' collider'//' '
5676           ELSE
5677             LOFFS=(30-(LEN(2)+LEN(3)))/2
5678             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
5679      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5680      &      ' collider'//' '
5681           ENDIF
5682           WRITE(MSTU(11),5200) CHINIT
5683           WRITE(MSTU(11),5300) WIN
5684         ENDIF
5685  
5686 C...Events defined in fixed target frame.
5687       ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
5688         MINT(111)=2
5689         S=PM(1)**2+PM(2)**2+2D0*PM(2)*SQRT(PM(1)**2+WIN**2)
5690         IF(MSTP(122).GE.1) THEN
5691           LOFFS=(29-(LEN(2)+LEN(3)))/2
5692           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5693      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5694      &    ' fixed target'//' '
5695           WRITE(MSTU(11),5200) CHINIT
5696           WRITE(MSTU(11),5400) WIN
5697           WRITE(MSTU(11),5500) SQRT(S)
5698         ENDIF
5699  
5700 C...Frame defined by user three-vectors.
5701       ELSEIF(CHCOM(1)(1:1).EQ.'3') THEN
5702         MINT(111)=3
5703         P(1,5)=PM(1)
5704         P(2,5)=PM(2)
5705         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
5706         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
5707         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5708      &  (P(1,3)+P(2,3))**2
5709         IF(MSTP(122).GE.1) THEN
5710           LOFFS=(22-(LEN(2)+LEN(3)))/2
5711           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5712      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5713      &    ' user configuration'//' '
5714           WRITE(MSTU(11),5200) CHINIT
5715           WRITE(MSTU(11),5600)
5716           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5717           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5718           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5719         ENDIF
5720  
5721 C...Frame defined by user four-vectors.
5722       ELSEIF(CHCOM(1)(1:1).EQ.'4') THEN
5723         MINT(111)=4
5724         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
5725         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
5726         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
5727         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
5728         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5729      &  (P(1,3)+P(2,3))**2
5730         IF(MSTP(122).GE.1) THEN
5731           LOFFS=(22-(LEN(2)+LEN(3)))/2
5732           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5733      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5734      &    ' user configuration'//' '
5735           WRITE(MSTU(11),5200) CHINIT
5736           WRITE(MSTU(11),5600)
5737           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5738           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5739           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5740         ENDIF
5741  
5742 C...Frame defined by user five-vectors.
5743       ELSEIF(CHCOM(1)(1:1).EQ.'5') THEN
5744         MINT(111)=5
5745         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
5746      &  (P(1,3)+P(2,3))**2
5747         IF(MSTP(122).GE.1) THEN
5748           LOFFS=(22-(LEN(2)+LEN(3)))/2
5749           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5750      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5751      &    ' user configuration'//' '
5752           WRITE(MSTU(11),5200) CHINIT
5753           WRITE(MSTU(11),5600)
5754           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
5755           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
5756           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5757         ENDIF
5758  
5759 C...Frame defined by HEPRUP common block.
5760       ELSEIF(MINT(111).GE.11) THEN
5761         S=(EBMUP(1)+EBMUP(2))**2-(SQRT(MAX(0D0,EBMUP(1)**2-PM(1)**2))-
5762      &  SQRT(MAX(0D0,EBMUP(2)**2-PM(2)**2)))**2
5763         IF(MSTP(122).GE.1) THEN
5764           LOFFS=(22-(LEN(2)+LEN(3)))/2
5765           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
5766      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
5767      &    ' user configuration'//' '
5768           WRITE(MSTU(11),5200) CHINIT
5769           WRITE(MSTU(11),6000) EBMUP(1),EBMUP(2)
5770           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
5771         ENDIF
5772  
5773 C...Unknown frame. Error for too low CM energy.
5774       ELSE
5775         WRITE(MSTU(11),5800) CHFRAM(1:LEN(1))
5776         CALL PYSTOP(7)
5777       ENDIF
5778       IF(S.LT.PARP(2)**2) THEN
5779         WRITE(MSTU(11),5900) SQRT(S)
5780         CALL PYSTOP(7)
5781       ENDIF
5782  
5783 C...Formats for initialization and error information.
5784  5000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''D0'/
5785      &1X,'Execution stopped!')
5786  5100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''D0'/
5787      &1X,'Execution stopped!')
5788  5200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
5789  5300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
5790      &19X,'I'/1X,'I',76X,'I'/1X,78('='))
5791  5400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
5792  5500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
5793      &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
5794  5600 FORMAT(1X,'I',76X,'I'/1X,'I',18X,'px (GeV/c)',3X,'py (GeV/c)',3X,
5795      &'pz (GeV/c)',6X,'E (GeV)',9X,'I')
5796  5700 FORMAT(1X,'I',8X,A8,4(2X,F10.3,1X),8X,'I')
5797  5800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''D0'/
5798      &1X,'Execution stopped!')
5799  5900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
5800      &'generation.'/1X,'Execution stopped!')
5801  6000 FORMAT(1X,'I',12X,'with',1X,F10.3,1X,'GeV on',1X,F10.3,1X,
5802      &'GeV beam energies',13X,'I')
5803  
5804       RETURN
5805       END
5806  
5807 C*********************************************************************
5808  
5809 C...PYINKI
5810 C...Sets up kinematics, including rotations and boosts to/from CM frame.
5811  
5812       SUBROUTINE PYINKI(MODKI)
5813  
5814 C...Double precision and integer declarations.
5815       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
5816       IMPLICIT INTEGER(I-N)
5817       INTEGER PYK,PYCHGE,PYCOMP
5818  
5819 C...User process initialization commonblock.
5820       INTEGER MAXPUP
5821       PARAMETER (MAXPUP=100)
5822       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
5823       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
5824       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
5825      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
5826      &LPRUP(MAXPUP)
5827       SAVE /HEPRUP/
5828  
5829 C...Commonblocks.
5830       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
5831       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
5832       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
5833       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
5834       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
5835       COMMON/PYINT1/MINT(400),VINT(400)
5836       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
5837  
5838 C...Set initial flavour state.
5839       N=2
5840       DO 100 I=1,2
5841         K(I,1)=1
5842         K(I,2)=MINT(10+I)
5843         IF(MINT(140+I).NE.0) K(I,2)=MINT(140+I)
5844   100 CONTINUE
5845  
5846 C...Reset boost. Do kinematics for various cases.
5847       DO 110 J=6,10
5848         VINT(J)=0D0
5849   110 CONTINUE
5850  
5851 C...Set up kinematics for events defined in CM frame.
5852       IF(MINT(111).EQ.1) THEN
5853         WIN=VINT(290)
5854         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
5855         S=WIN**2
5856         P(1,5)=VINT(3)
5857         P(2,5)=VINT(4)
5858         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5859         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5860         P(1,1)=0D0
5861         P(1,2)=0D0
5862         P(2,1)=0D0
5863         P(2,2)=0D0
5864         P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2D0*P(1,5)*P(2,5))**2)/
5865      &  (4D0*S))
5866         P(2,3)=-P(1,3)
5867         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
5868         P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
5869  
5870 C...Set up kinematics for fixed target events.
5871       ELSEIF(MINT(111).EQ.2) THEN
5872         WIN=VINT(290)
5873         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
5874         P(1,5)=VINT(3)
5875         P(2,5)=VINT(4)
5876         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5877         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5878         P(1,1)=0D0
5879         P(1,2)=0D0
5880         P(2,1)=0D0
5881         P(2,2)=0D0
5882         P(1,3)=WIN
5883         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
5884         P(2,3)=0D0
5885         P(2,4)=P(2,5)
5886         S=P(1,5)**2+P(2,5)**2+2D0*P(2,4)*P(1,4)
5887         VINT(10)=P(1,3)/(P(1,4)+P(2,4))
5888         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
5889  
5890 C...Set up kinematics for events in user-defined frame.
5891       ELSEIF(MINT(111).EQ.3) THEN
5892         P(1,5)=VINT(3)
5893         P(2,5)=VINT(4)
5894         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5895         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5896         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
5897         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
5898         DO 120 J=1,3
5899           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5900   120   CONTINUE
5901         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5902         VINT(7)=PYANGL(P(1,1),P(1,2))
5903         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5904         VINT(6)=PYANGL(P(1,3),P(1,1))
5905         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5906         S=P(1,5)**2+P(2,5)**2+2D0*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
5907  
5908 C...Set up kinematics for events with user-defined four-vectors.
5909       ELSEIF(MINT(111).EQ.4) THEN
5910         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
5911         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
5912         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
5913         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
5914         DO 130 J=1,3
5915           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5916   130   CONTINUE
5917         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5918         VINT(7)=PYANGL(P(1,1),P(1,2))
5919         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5920         VINT(6)=PYANGL(P(1,3),P(1,1))
5921         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5922         S=(P(1,4)+P(2,4))**2
5923  
5924 C...Set up kinematics for events with user-defined five-vectors.
5925       ELSEIF(MINT(111).EQ.5) THEN
5926         DO 140 J=1,3
5927           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
5928   140   CONTINUE
5929         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
5930         VINT(7)=PYANGL(P(1,1),P(1,2))
5931         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
5932         VINT(6)=PYANGL(P(1,3),P(1,1))
5933         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
5934         S=(P(1,4)+P(2,4))**2
5935  
5936 C...Set up kinematics for events with external user processes.
5937       ELSEIF(MINT(111).GE.11) THEN
5938         P(1,5)=VINT(3)
5939         P(2,5)=VINT(4)
5940         IF(MINT(141).NE.0) P(1,5)=VINT(303)
5941         IF(MINT(142).NE.0) P(2,5)=VINT(304)
5942         P(1,1)=0D0
5943         P(1,2)=0D0
5944         P(2,1)=0D0
5945         P(2,2)=0D0
5946         P(1,3)=SQRT(MAX(0D0,EBMUP(1)**2-P(1,5)**2))
5947         P(2,3)=-SQRT(MAX(0D0,EBMUP(2)**2-P(2,5)**2))
5948         P(1,4)=EBMUP(1)
5949         P(2,4)=EBMUP(2)
5950         VINT(10)=(P(1,3)+P(2,3))/(P(1,4)+P(2,4))
5951         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
5952         S=(P(1,4)+P(2,4))**2
5953       ENDIF
5954  
5955 C...Return or error for too low CM energy.
5956       IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
5957         IF(MSTP(172).LE.1) THEN
5958           CALL PYERRM(23,
5959      &    '(PYINKI:) too low invariant mass in this event')
5960         ELSE
5961           MSTI(61)=1
5962           RETURN
5963         ENDIF
5964       ENDIF
5965  
5966 C...Save information on incoming particles.
5967       VINT(1)=SQRT(S)
5968       VINT(2)=S
5969       IF(MINT(111).GE.4) THEN
5970         IF(MINT(141).EQ.0) THEN
5971           VINT(3)=P(1,5)
5972           IF(MINT(11).EQ.22.AND.P(1,5).LT.0) VINT(307)=P(1,5)**2
5973         ELSE
5974           VINT(303)=P(1,5)
5975         ENDIF
5976         IF(MINT(142).EQ.0) THEN
5977           VINT(4)=P(2,5)
5978           IF(MINT(12).EQ.22.AND.P(2,5).LT.0) VINT(308)=P(2,5)**2
5979         ELSE
5980           VINT(304)=P(2,5)
5981         ENDIF
5982       ENDIF
5983       VINT(5)=P(1,3)
5984       IF(MODKI.EQ.0) VINT(289)=S
5985       DO 150 J=1,5
5986         V(1,J)=0D0
5987         V(2,J)=0D0
5988         VINT(290+J)=P(1,J)
5989         VINT(295+J)=P(2,J)
5990   150 CONTINUE
5991  
5992 C...Store pT cut-off and related constants to be used in generation.
5993       IF(MODKI.EQ.0) VINT(285)=CKIN(3)
5994       IF(MSTP(82).LE.1) THEN
5995         PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
5996       ELSE
5997         PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
5998       ENDIF
5999       VINT(149)=4D0*PTMN**2/S
6000       VINT(154)=PTMN
6001  
6002       RETURN
6003       END
6004  
6005 C*********************************************************************
6006  
6007 C...PYINPR
6008 C...Selects partonic subprocesses to be included in the simulation.
6009  
6010       SUBROUTINE PYINPR
6011  
6012 C...Double precision and integer declarations.
6013       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6014       IMPLICIT INTEGER(I-N)
6015       INTEGER PYK,PYCHGE,PYCOMP
6016  
6017 C...User process initialization commonblock.
6018       INTEGER MAXPUP
6019       PARAMETER (MAXPUP=100)
6020       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
6021       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
6022       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
6023      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
6024      &LPRUP(MAXPUP)
6025       SAVE /HEPRUP/
6026  
6027 C...Commonblocks and character variables.
6028       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
6029       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
6030       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
6031       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
6032       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6033       COMMON/PYINT1/MINT(400),VINT(400)
6034       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
6035       COMMON/PYINT6/PROC(0:500)
6036       CHARACTER PROC*28
6037       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
6038      &/PYINT2/,/PYINT6/
6039       CHARACTER CHIPR*10
6040 
6041  
6042 C...Reset processes to be included.
6043       IF(MSEL.NE.0) THEN
6044         DO 100 I=1,500
6045           MSUB(I)=0
6046   100   CONTINUE
6047       ENDIF
6048  
6049 C...Set running pTmin scale.
6050       IF(MSTP(82).LE.1) THEN
6051         PTMRUN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
6052       ELSE
6053         PTMRUN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
6054       ENDIF
6055  
6056 C...Begin by assuming incoming photon to enter subprocess.
6057       IF(MINT(11).EQ.22) MINT(15)=22
6058       IF(MINT(12).EQ.22) MINT(16)=22
6059  
6060 C...For e-gamma with MSTP(14)=10 allow mixture of VMD and anomalous.
6061       IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
6062         MSUB(10)=1
6063         MINT(123)=MINT(122)+1
6064  
6065 C...For gamma-p or gamma-gamma with MSTP(14) = 10, 20, 25 or 30
6066 C...allow mixture.
6067 C...Here also set a few parameters otherwise normally not touched.
6068       ELSEIF(MINT(121).GT.1) THEN
6069  
6070 C...Parton distributions dampened at small Q2; go to low energies,
6071 C...alpha_s <1; no minimum pT cut-off a priori.
6072         IF(MSTP(18).EQ.2) THEN
6073           MSTP(57)=3
6074           PARP(2)=2D0
6075           PARU(115)=1D0
6076           CKIN(5)=0.2D0
6077           CKIN(6)=0.2D0
6078         ENDIF
6079  
6080 C...Define pT cut-off parameters and whether run involves low-pT.
6081         PTMVMD=PTMRUN
6082         VINT(154)=PTMVMD
6083         PTMDIR=PTMVMD
6084         IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
6085         PTMANO=PTMVMD
6086         IF(MSTP(15).EQ.5) PTMANO=0.60D0+
6087      &  0.125D0*LOG(1D0+0.10D0*VINT(1))**2
6088         IPTL=1
6089         IF(VINT(285).GT.MAX(PTMVMD,PTMDIR,PTMANO)) IPTL=0
6090         IF(MSEL.EQ.2) IPTL=1
6091  
6092 C...Set up for p/gamma * gamma; real or virtual photons.
6093         IF(MINT(121).EQ.3.OR.MINT(121).EQ.6.OR.(MINT(121).EQ.4.AND.
6094      &  MSTP(14).EQ.30)) THEN
6095  
6096 C...Set up for p/VMD * VMD.
6097         IF(MINT(122).EQ.1) THEN
6098           MINT(123)=2
6099           MSUB(11)=1
6100           MSUB(12)=1
6101           MSUB(13)=1
6102           MSUB(28)=1
6103           MSUB(53)=1
6104           MSUB(68)=1
6105           IF(IPTL.EQ.1) MSUB(95)=1
6106           IF(MSEL.EQ.2) THEN
6107             MSUB(91)=1
6108             MSUB(92)=1
6109             MSUB(93)=1
6110             MSUB(94)=1
6111           ENDIF
6112           IF(IPTL.EQ.1) CKIN(3)=0D0
6113  
6114 C...Set up for p/VMD * direct gamma.
6115         ELSEIF(MINT(122).EQ.2) THEN
6116           MINT(123)=0
6117           IF(MINT(121).EQ.6) MINT(123)=5
6118           MSUB(131)=1
6119           MSUB(132)=1
6120           MSUB(135)=1
6121           MSUB(136)=1
6122           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6123  
6124 C...Set up for p/VMD * anomalous gamma.
6125         ELSEIF(MINT(122).EQ.3) THEN
6126           MINT(123)=3
6127           IF(MINT(121).EQ.6) MINT(123)=7
6128           MSUB(11)=1
6129           MSUB(12)=1
6130           MSUB(13)=1
6131           MSUB(28)=1
6132           MSUB(53)=1
6133           MSUB(68)=1
6134           IF(IPTL.EQ.1) MSUB(95)=1
6135           IF(MSEL.EQ.2) THEN
6136             MSUB(91)=1
6137             MSUB(92)=1
6138             MSUB(93)=1
6139             MSUB(94)=1
6140           ENDIF
6141           IF(IPTL.EQ.1) CKIN(3)=0D0
6142  
6143 C...Set up for DIS * p.
6144         ELSEIF(MINT(122).EQ.4.AND.(IABS(MINT(11)).GT.100.OR.
6145      &  IABS(MINT(12)).GT.100)) THEN
6146           MINT(123)=8
6147           IF(IPTL.EQ.1) MSUB(99)=1
6148  
6149 C...Set up for direct * direct gamma (switch off leptons).
6150         ELSEIF(MINT(122).EQ.4) THEN
6151           MINT(123)=0
6152           MSUB(137)=1
6153           MSUB(138)=1
6154           MSUB(139)=1
6155           MSUB(140)=1
6156           DO 110 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
6157             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
6158   110     CONTINUE
6159           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6160  
6161 C...Set up for direct * anomalous gamma.
6162         ELSEIF(MINT(122).EQ.5) THEN
6163           MINT(123)=6
6164           MSUB(131)=1
6165           MSUB(132)=1
6166           MSUB(135)=1
6167           MSUB(136)=1
6168           IF(IPTL.EQ.1) CKIN(3)=PTMANO
6169  
6170 C...Set up for anomalous * anomalous gamma.
6171         ELSEIF(MINT(122).EQ.6) THEN
6172           MINT(123)=3
6173           MSUB(11)=1
6174           MSUB(12)=1
6175           MSUB(13)=1
6176           MSUB(28)=1
6177           MSUB(53)=1
6178           MSUB(68)=1
6179           IF(IPTL.EQ.1) MSUB(95)=1
6180           IF(MSEL.EQ.2) THEN
6181             MSUB(91)=1
6182             MSUB(92)=1
6183             MSUB(93)=1
6184             MSUB(94)=1
6185           ENDIF
6186           IF(IPTL.EQ.1) CKIN(3)=0D0
6187         ENDIF
6188  
6189 C...Set up for gamma* * gamma*; virtual photons = dir, VMD, anom.
6190         ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
6191  
6192 C...Set up for direct * direct gamma (switch off leptons).
6193         IF(MINT(122).EQ.1) THEN
6194           MINT(123)=0
6195           MSUB(137)=1
6196           MSUB(138)=1
6197           MSUB(139)=1
6198           MSUB(140)=1
6199           DO 120 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
6200             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
6201   120     CONTINUE
6202           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6203  
6204 C...Set up for direct * VMD and VMD * direct gamma.
6205         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.4) THEN
6206           MINT(123)=5
6207           MSUB(131)=1
6208           MSUB(132)=1
6209           MSUB(135)=1
6210           MSUB(136)=1
6211           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6212  
6213 C...Set up for direct * anomalous and anomalous * direct gamma.
6214         ELSEIF(MINT(122).EQ.3.OR.MINT(122).EQ.7) THEN
6215           MINT(123)=6
6216           MSUB(131)=1
6217           MSUB(132)=1
6218           MSUB(135)=1
6219           MSUB(136)=1
6220           IF(IPTL.EQ.1) CKIN(3)=PTMANO
6221  
6222 C...Set up for VMD*VMD.
6223         ELSEIF(MINT(122).EQ.5) THEN
6224           MINT(123)=2
6225           MSUB(11)=1
6226           MSUB(12)=1
6227           MSUB(13)=1
6228           MSUB(28)=1
6229           MSUB(53)=1
6230           MSUB(68)=1
6231           IF(IPTL.EQ.1) MSUB(95)=1
6232           IF(MSEL.EQ.2) THEN
6233             MSUB(91)=1
6234             MSUB(92)=1
6235             MSUB(93)=1
6236             MSUB(94)=1
6237           ENDIF
6238           IF(IPTL.EQ.1) CKIN(3)=0D0
6239  
6240 C...Set up for VMD * anomalous and anomalous * VMD gamma.
6241         ELSEIF(MINT(122).EQ.6.OR.MINT(122).EQ.8) THEN
6242           MINT(123)=7
6243           MSUB(11)=1
6244           MSUB(12)=1
6245           MSUB(13)=1
6246           MSUB(28)=1
6247           MSUB(53)=1
6248           MSUB(68)=1
6249           IF(IPTL.EQ.1) MSUB(95)=1
6250           IF(MSEL.EQ.2) THEN
6251             MSUB(91)=1
6252             MSUB(92)=1
6253             MSUB(93)=1
6254             MSUB(94)=1
6255           ENDIF
6256           IF(IPTL.EQ.1) CKIN(3)=0D0
6257  
6258 C...Set up for anomalous * anomalous gamma.
6259         ELSEIF(MINT(122).EQ.9) THEN
6260           MINT(123)=3
6261           MSUB(11)=1
6262           MSUB(12)=1
6263           MSUB(13)=1
6264           MSUB(28)=1
6265           MSUB(53)=1
6266           MSUB(68)=1
6267           IF(IPTL.EQ.1) MSUB(95)=1
6268           IF(MSEL.EQ.2) THEN
6269             MSUB(91)=1
6270             MSUB(92)=1
6271             MSUB(93)=1
6272             MSUB(94)=1
6273           ENDIF
6274           IF(IPTL.EQ.1) CKIN(3)=0D0
6275  
6276 C...Set up for DIS * VMD and VMD * DIS gamma.
6277         ELSEIF(MINT(122).EQ.10.OR.MINT(122).EQ.12) THEN
6278           MINT(123)=8
6279           IF(IPTL.EQ.1) MSUB(99)=1
6280  
6281 C...Set up for DIS * anomalous and anomalous * DIS gamma.
6282         ELSEIF(MINT(122).EQ.11.OR.MINT(122).EQ.13) THEN
6283           MINT(123)=9
6284           IF(IPTL.EQ.1) MSUB(99)=1
6285         ENDIF
6286  
6287 C...Set up for gamma* * p; virtual photons = dir, res.
6288         ELSEIF(MINT(121).EQ.2) THEN
6289  
6290 C...Set up for direct * p.
6291         IF(MINT(122).EQ.1) THEN
6292           MINT(123)=0
6293           MSUB(131)=1
6294           MSUB(132)=1
6295           MSUB(135)=1
6296           MSUB(136)=1
6297           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6298  
6299 C...Set up for resolved * p.
6300         ELSEIF(MINT(122).EQ.2) THEN
6301           MINT(123)=1
6302           MSUB(11)=1
6303           MSUB(12)=1
6304           MSUB(13)=1
6305           MSUB(28)=1
6306           MSUB(53)=1
6307           MSUB(68)=1
6308           IF(IPTL.EQ.1) MSUB(95)=1
6309           IF(MSEL.EQ.2) THEN
6310             MSUB(91)=1
6311             MSUB(92)=1
6312             MSUB(93)=1
6313             MSUB(94)=1
6314           ENDIF
6315           IF(IPTL.EQ.1) CKIN(3)=0D0
6316         ENDIF
6317  
6318 C...Set up for gamma* * gamma*; virtual photons = dir, res.
6319         ELSEIF(MINT(121).EQ.4) THEN
6320  
6321 C...Set up for direct * direct gamma (switch off leptons).
6322         IF(MINT(122).EQ.1) THEN
6323           MINT(123)=0
6324           MSUB(137)=1
6325           MSUB(138)=1
6326           MSUB(139)=1
6327           MSUB(140)=1
6328           DO 130 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
6329             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
6330   130     CONTINUE
6331           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6332  
6333 C...Set up for direct * resolved and resolved * direct gamma.
6334         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.3) THEN
6335           MINT(123)=5
6336           MSUB(131)=1
6337           MSUB(132)=1
6338           MSUB(135)=1
6339           MSUB(136)=1
6340           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
6341  
6342 C...Set up for resolved * resolved gamma.
6343         ELSEIF(MINT(122).EQ.4) THEN
6344           MINT(123)=2
6345           MSUB(11)=1
6346           MSUB(12)=1
6347           MSUB(13)=1
6348           MSUB(28)=1
6349           MSUB(53)=1
6350           MSUB(68)=1
6351           IF(IPTL.EQ.1) MSUB(95)=1
6352           IF(MSEL.EQ.2) THEN
6353             MSUB(91)=1
6354             MSUB(92)=1
6355             MSUB(93)=1
6356             MSUB(94)=1
6357           ENDIF
6358           IF(IPTL.EQ.1) CKIN(3)=0D0
6359         ENDIF
6360  
6361 C...End of special set up for gamma-p and gamma-gamma.
6362         ENDIF
6363         CKIN(1)=2D0*CKIN(3)
6364       ENDIF
6365  
6366 C...Flavour information for individual beams.
6367       DO 140 I=1,2
6368         MINT(40+I)=1
6369         IF(MINT(123).GE.1.AND.MINT(10+I).EQ.22) MINT(40+I)=2
6370         IF(IABS(MINT(10+I)).GT.100) MINT(40+I)=2
6371         MINT(44+I)=MINT(40+I)
6372         IF(MSTP(11).GE.1.AND.(IABS(MINT(10+I)).EQ.11.OR.
6373      &  IABS(MINT(10+I)).EQ.13.OR.IABS(MINT(10+I)).EQ.15)) MINT(44+I)=3
6374   140 CONTINUE
6375  
6376 C...If two real gammas, whereof one direct, pick the first.
6377 C...For two virtual photons, keep requested order.
6378       IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
6379         IF(MSTP(14).LE.10.AND.MINT(123).GE.4.AND.MINT(123).LE.6) THEN
6380           MINT(41)=1
6381           MINT(45)=1
6382         ELSEIF(MSTP(14).EQ.12.OR.MSTP(14).EQ.13.OR.MSTP(14).EQ.22.OR.
6383      &  MSTP(14).EQ.26.OR.MSTP(14).EQ.27) THEN
6384           MINT(41)=1
6385           MINT(45)=1
6386         ELSEIF(MSTP(14).EQ.14.OR.MSTP(14).EQ.17.OR.MSTP(14).EQ.23.OR.
6387      &  MSTP(14).EQ.28.OR.MSTP(14).EQ.29) THEN
6388           MINT(42)=1
6389           MINT(46)=1
6390         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.2
6391      &  .OR.MINT(122).EQ.3.OR.MINT(122).EQ.10.OR.MINT(122).EQ.11)) THEN
6392           MINT(41)=1
6393           MINT(45)=1
6394         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.4
6395      &  .OR.MINT(122).EQ.7.OR.MINT(122).EQ.12.OR.MINT(122).EQ.13)) THEN
6396           MINT(42)=1
6397           MINT(46)=1
6398         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.2) THEN
6399           MINT(41)=1
6400           MINT(45)=1
6401         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.3) THEN
6402           MINT(42)=1
6403           MINT(46)=1
6404         ENDIF
6405       ELSEIF(MINT(11).EQ.22.OR.MINT(12).EQ.22) THEN
6406         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28.OR.MINT(122).EQ.4) THEN
6407           IF(MINT(11).EQ.22) THEN
6408             MINT(41)=1
6409             MINT(45)=1
6410           ELSE
6411             MINT(42)=1
6412             MINT(46)=1
6413           ENDIF
6414         ENDIF
6415         IF(MINT(123).GE.4.AND.MINT(123).LE.7) CALL PYERRM(26,
6416      &  '(PYINPR:) unallowed MSTP(14) code for single photon')
6417       ENDIF
6418  
6419 C...Flavour information on combination of incoming particles.
6420       MINT(43)=2*MINT(41)+MINT(42)-2
6421       MINT(44)=MINT(43)
6422       IF(MINT(123).LE.0) THEN
6423         IF(MINT(11).EQ.22) MINT(43)=MINT(43)+2
6424         IF(MINT(12).EQ.22) MINT(43)=MINT(43)+1
6425       ELSEIF(MINT(123).LE.3) THEN
6426         IF(MINT(11).EQ.22) MINT(44)=MINT(44)-2
6427         IF(MINT(12).EQ.22) MINT(44)=MINT(44)-1
6428       ELSEIF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
6429         MINT(43)=4
6430         MINT(44)=1
6431       ENDIF
6432       MINT(47)=2*MIN(2,MINT(45))+MIN(2,MINT(46))-2
6433       IF(MIN(MINT(45),MINT(46)).EQ.3) MINT(47)=5
6434       IF(MINT(45).EQ.1.AND.MINT(46).EQ.3) MINT(47)=6
6435       IF(MINT(45).EQ.3.AND.MINT(46).EQ.1) MINT(47)=7
6436       MINT(50)=0
6437       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2.AND.MINT(111).NE.12) MINT(50)=1
6438       MINT(107)=0
6439       MINT(108)=0
6440       IF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
6441         IF((MINT(122).GE.4.AND.MINT(122).LE.6).OR.MINT(122).EQ.12)
6442      &  MINT(107)=2
6443         IF((MINT(122).GE.7.AND.MINT(122).LE.9).OR.MINT(122).EQ.13)
6444      &  MINT(107)=3
6445         IF(MINT(122).EQ.10.OR.MINT(122).EQ.11) MINT(107)=4
6446         IF(MINT(122).EQ.2.OR.MINT(122).EQ.5.OR.MINT(122).EQ.8.OR.
6447      &  MINT(122).EQ.10) MINT(108)=2
6448         IF(MINT(122).EQ.3.OR.MINT(122).EQ.6.OR.MINT(122).EQ.9.OR.
6449      &  MINT(122).EQ.11) MINT(108)=3
6450         IF(MINT(122).EQ.12.OR.MINT(122).EQ.13) MINT(108)=4
6451       ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.25) THEN
6452         IF(MINT(122).GE.3) MINT(107)=1
6453         IF(MINT(122).EQ.2.OR.MINT(122).EQ.4) MINT(108)=1
6454       ELSEIF(MINT(121).EQ.2) THEN
6455         IF(MINT(122).EQ.2.AND.MINT(11).EQ.22) MINT(107)=1
6456         IF(MINT(122).EQ.2.AND.MINT(12).EQ.22) MINT(108)=1
6457       ELSE
6458         IF(MINT(11).EQ.22) THEN
6459           MINT(107)=MINT(123)
6460           IF(MINT(123).GE.4) MINT(107)=0
6461           IF(MINT(123).EQ.7) MINT(107)=2
6462           IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.27) MINT(107)=4
6463           IF(MSTP(14).EQ.28) MINT(107)=2
6464           IF(MSTP(14).EQ.29) MINT(107)=3
6465           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
6466      &    MINT(107)=4
6467         ENDIF
6468         IF(MINT(12).EQ.22) THEN
6469           MINT(108)=MINT(123)
6470           IF(MINT(123).GE.4) MINT(108)=MINT(123)-3
6471           IF(MINT(123).EQ.7) MINT(108)=3
6472           IF(MSTP(14).EQ.26) MINT(108)=2
6473           IF(MSTP(14).EQ.27) MINT(108)=3
6474           IF(MSTP(14).EQ.28.OR.MSTP(14).EQ.29) MINT(108)=4
6475           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
6476      &    MINT(108)=4
6477         ENDIF
6478         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.(MSTP(14).EQ.14.OR.
6479      &  MSTP(14).EQ.17.OR.MSTP(14).EQ.18.OR.MSTP(14).EQ.23)) THEN
6480           MINTTP=MINT(107)
6481           MINT(107)=MINT(108)
6482           MINT(108)=MINTTP
6483         ENDIF
6484       ENDIF
6485       IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
6486       IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
6487  
6488 C...Select default processes according to incoming beams
6489 C...(already done for gamma-p and gamma-gamma with
6490 C...MSTP(14) = 10, 20, 25 or 30).
6491       IF(MINT(121).GT.1) THEN
6492       ELSEIF(MSEL.EQ.1.OR.MSEL.EQ.2) THEN
6493  
6494         IF(MINT(43).EQ.1) THEN
6495 C...Lepton + lepton -> gamma/Z0 or W.
6496           IF(MINT(11)+MINT(12).EQ.0) MSUB(1)=1
6497           IF(MINT(11)+MINT(12).NE.0) MSUB(2)=1
6498  
6499         ELSEIF(MINT(43).LE.3.AND.MINT(123).EQ.0.AND.
6500      &    (MINT(11).EQ.22.OR.MINT(12).EQ.22)) THEN
6501 C...Unresolved photon + lepton: Compton scattering.
6502           MSUB(133)=1
6503           MSUB(134)=1
6504  
6505         ELSEIF((MINT(123).EQ.8.OR.MINT(123).EQ.9).AND.(MINT(11).EQ.22
6506      &  .OR.MINT(12).EQ.22)) THEN
6507 C...DIS as pure gamma* + f -> f process.
6508           MSUB(99)=1
6509  
6510         ELSEIF(MINT(43).LE.3) THEN
6511 C...Lepton + hadron: deep inelastic scattering.
6512           MSUB(10)=1
6513  
6514         ELSEIF(MINT(123).EQ.0.AND.MINT(11).EQ.22.AND.
6515      &    MINT(12).EQ.22) THEN
6516 C...Two unresolved photons: fermion pair production,
6517 C...exclude lepton pairs.
6518           DO 150 ISUB=137,140
6519             MSUB(ISUB)=1
6520   150     CONTINUE
6521           DO 160 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
6522             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
6523   160     CONTINUE
6524           PTMDIR=PTMRUN
6525           IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
6526           IF(CKIN(3).LT.PTMRUN.OR.MSEL.EQ.2) CKIN(3)=PTMDIR
6527           CKIN(1)=MAX(CKIN(1),2D0*CKIN(3))
6528  
6529         ELSEIF((MINT(123).EQ.0.AND.(MINT(11).EQ.22.OR.MINT(12).EQ.22))
6530      &    .OR.(MINT(123).GE.4.AND.MINT(123).LE.6.AND.MINT(11).EQ.22.AND.
6531      &    MINT(12).EQ.22)) THEN
6532 C...Unresolved photon + hadron: photon-parton scattering.
6533           DO 170 ISUB=131,136
6534             MSUB(ISUB)=1
6535   170     CONTINUE
6536  
6537         ELSEIF(MSEL.EQ.1) THEN
6538 C...High-pT QCD processes:
6539           MSUB(11)=1
6540           MSUB(12)=1
6541           MSUB(13)=1
6542           MSUB(28)=1
6543           MSUB(53)=1
6544           MSUB(68)=1
6545           PTMN=PTMRUN
6546           VINT(154)=PTMN
6547           IF(CKIN(3).LT.PTMN) MSUB(95)=1
6548           IF(MSUB(95).EQ.1.AND.MINT(50).EQ.0) MSUB(95)=0
6549  
6550         ELSE
6551 C...All QCD processes:
6552           MSUB(11)=1
6553           MSUB(12)=1
6554           MSUB(13)=1
6555           MSUB(28)=1
6556           MSUB(53)=1
6557           MSUB(68)=1
6558           MSUB(91)=1
6559           MSUB(92)=1
6560           MSUB(93)=1
6561           MSUB(94)=1
6562           MSUB(95)=1
6563         ENDIF
6564  
6565       ELSEIF(MSEL.GE.4.AND.MSEL.LE.8) THEN
6566 C...Heavy quark production.
6567         MSUB(81)=1
6568         MSUB(82)=1
6569         MSUB(84)=1
6570         DO 180 J=1,MIN(8,MDCY(21,3))
6571           MDME(MDCY(21,2)+J-1,1)=0
6572   180   CONTINUE
6573         MDME(MDCY(21,2)+MSEL-1,1)=1
6574         MSUB(85)=1
6575         DO 190 J=1,MIN(12,MDCY(22,3))
6576           MDME(MDCY(22,2)+J-1,1)=0
6577   190   CONTINUE
6578         MDME(MDCY(22,2)+MSEL-1,1)=1
6579  
6580       ELSEIF(MSEL.EQ.10) THEN
6581 C...Prompt photon production:
6582         MSUB(14)=1
6583         MSUB(18)=1
6584         MSUB(29)=1
6585  
6586       ELSEIF(MSEL.EQ.11) THEN
6587 C...Z0/gamma* production:
6588         MSUB(1)=1
6589  
6590       ELSEIF(MSEL.EQ.12) THEN
6591 C...W+/- production:
6592         MSUB(2)=1
6593  
6594       ELSEIF(MSEL.EQ.13) THEN
6595 C...Z0 + jet:
6596         MSUB(15)=1
6597         MSUB(30)=1
6598  
6599       ELSEIF(MSEL.EQ.14) THEN
6600 C...W+/- + jet:
6601         MSUB(16)=1
6602         MSUB(31)=1
6603  
6604       ELSEIF(MSEL.EQ.15) THEN
6605 C...Z0 & W+/- pair production:
6606         MSUB(19)=1
6607         MSUB(20)=1
6608         MSUB(22)=1
6609         MSUB(23)=1
6610         MSUB(25)=1
6611  
6612       ELSEIF(MSEL.EQ.16) THEN
6613 C...h0 production:
6614         MSUB(3)=1
6615         MSUB(102)=1
6616         MSUB(103)=1
6617         MSUB(123)=1
6618         MSUB(124)=1
6619  
6620       ELSEIF(MSEL.EQ.17) THEN
6621 C...h0 & Z0 or W+/- pair production:
6622         MSUB(24)=1
6623         MSUB(26)=1
6624  
6625       ELSEIF(MSEL.EQ.18) THEN
6626 C...h0 production; interesting processes in e+e-.
6627         MSUB(24)=1
6628         MSUB(103)=1
6629         MSUB(123)=1
6630         MSUB(124)=1
6631  
6632       ELSEIF(MSEL.EQ.19) THEN
6633 C...h0, H0 and A0 production; interesting processes in e+e-.
6634         MSUB(24)=1
6635         MSUB(103)=1
6636         MSUB(123)=1
6637         MSUB(124)=1
6638         MSUB(153)=1
6639         MSUB(171)=1
6640         MSUB(173)=1
6641         MSUB(174)=1
6642         MSUB(158)=1
6643         MSUB(176)=1
6644         MSUB(178)=1
6645         MSUB(179)=1
6646  
6647       ELSEIF(MSEL.EQ.21) THEN
6648 C...Z'0 production:
6649         MSUB(141)=1
6650  
6651       ELSEIF(MSEL.EQ.22) THEN
6652 C...W'+/- production:
6653         MSUB(142)=1
6654  
6655       ELSEIF(MSEL.EQ.23) THEN
6656 C...H+/- production:
6657         MSUB(143)=1
6658  
6659       ELSEIF(MSEL.EQ.24) THEN
6660 C...R production:
6661         MSUB(144)=1
6662  
6663       ELSEIF(MSEL.EQ.25) THEN
6664 C...LQ (leptoquark) production.
6665         MSUB(145)=1
6666         MSUB(162)=1
6667         MSUB(163)=1
6668         MSUB(164)=1
6669  
6670       ELSEIF(MSEL.GE.35.AND.MSEL.LE.38) THEN
6671 C...Production of one heavy quark (W exchange):
6672         MSUB(83)=1
6673         DO 200 J=1,MIN(8,MDCY(21,3))
6674           MDME(MDCY(21,2)+J-1,1)=0
6675   200   CONTINUE
6676         MDME(MDCY(21,2)+MSEL-31,1)=1
6677  
6678 CMRENNA++Define SUSY alternatives.
6679       ELSEIF(MSEL.EQ.39) THEN
6680 C...Turn on all SUSY processes.
6681         IF(MINT(43).EQ.4) THEN
6682 C...Hadron-hadron processes.
6683           DO 210 I=201,296
6684             IF(ISET(I).GE.0) MSUB(I)=1
6685   210     CONTINUE
6686         ELSEIF(MINT(43).EQ.1) THEN
6687 C...Lepton-lepton processes: QED production of squarks.
6688           DO 220 I=201,214
6689             MSUB(I)=1
6690   220     CONTINUE
6691           MSUB(210)=0
6692           MSUB(211)=0
6693           MSUB(212)=0
6694           DO 230 I=216,228
6695             MSUB(I)=1
6696   230     CONTINUE
6697           DO 240 I=261,263
6698             MSUB(I)=1
6699   240     CONTINUE
6700           MSUB(277)=1
6701           MSUB(278)=1
6702         ENDIF
6703  
6704       ELSEIF(MSEL.EQ.40) THEN
6705 C...Gluinos and squarks.
6706         IF(MINT(43).EQ.4) THEN
6707           MSUB(243)=1
6708           MSUB(244)=1
6709           MSUB(258)=1
6710           MSUB(259)=1
6711           MSUB(261)=1
6712           MSUB(262)=1
6713           MSUB(264)=1
6714           MSUB(265)=1
6715           DO 250 I=271,296
6716             MSUB(I)=1
6717   250     CONTINUE
6718         ELSEIF(MINT(43).EQ.1) THEN
6719           MSUB(277)=1
6720           MSUB(278)=1
6721         ENDIF
6722  
6723       ELSEIF(MSEL.EQ.41) THEN
6724 C...Stop production.
6725         MSUB(261)=1
6726         MSUB(262)=1
6727         MSUB(263)=1
6728         IF(MINT(43).EQ.4) THEN
6729           MSUB(264)=1
6730           MSUB(265)=1
6731         ENDIF
6732  
6733       ELSEIF(MSEL.EQ.42) THEN
6734 C...Slepton production.
6735         DO 260 I=201,214
6736           MSUB(I)=1
6737   260   CONTINUE
6738         IF(MINT(43).NE.4) THEN
6739           MSUB(210)=0
6740           MSUB(211)=0
6741           MSUB(212)=0
6742         ENDIF
6743  
6744       ELSEIF(MSEL.EQ.43) THEN
6745 C...Neutralino/Chargino + Gluino/Squark.
6746         IF(MINT(43).EQ.4) THEN
6747           DO 270 I=237,242
6748             MSUB(I)=1
6749   270     CONTINUE
6750           DO 280 I=246,254
6751             MSUB(I)=1
6752   280     CONTINUE
6753           MSUB(256)=1
6754         ENDIF
6755  
6756       ELSEIF(MSEL.EQ.44) THEN
6757 C...Neutralino/Chargino pair production.
6758         IF(MINT(43).EQ.4) THEN
6759           DO 290 I=216,236
6760             MSUB(I)=1
6761   290     CONTINUE
6762         ELSEIF(MINT(43).EQ.1) THEN
6763           DO 300 I=216,228
6764             MSUB(I)=1
6765   300     CONTINUE
6766         ENDIF
6767  
6768       ELSEIF(MSEL.EQ.45) THEN
6769 C...Sbottom production.
6770         MSUB(287)=1
6771         MSUB(288)=1
6772         IF(MINT(43).EQ.4) THEN
6773           DO 310 I=281,296
6774             MSUB(I)=1
6775   310     CONTINUE
6776         ENDIF
6777  
6778       ELSEIF(MSEL.EQ.50) THEN
6779 C...Pair production of technipions and gauge bosons.
6780         DO 320 I=361,368
6781           MSUB(I)=1
6782   320   CONTINUE
6783         IF(MINT(43).EQ.4) THEN
6784           DO 330 I=370,377
6785             MSUB(I)=1
6786   330     CONTINUE
6787         ENDIF
6788  
6789       ELSEIF(MSEL.EQ.51) THEN
6790 C...QCD 2 -> 2 processes with compositeness/technicolor modifications.
6791         DO 340 I=381,386
6792           MSUB(I)=1
6793   340   CONTINUE
6794  
6795       ELSEIF(MSEL.EQ.61) THEN
6796 C...Charmonium production in colour octet model, with recoiling parton.
6797         DO 342 I=421,439
6798           MSUB(I)=1
6799  342   CONTINUE
6800  
6801       ELSEIF(MSEL.EQ.62) THEN
6802 C...Bottomonium production in colour octet model, with recoiling parton.
6803         DO 344 I=461,479
6804           MSUB(I)=1
6805  344   CONTINUE
6806  
6807       ELSEIF(MSEL.EQ.63) THEN
6808 C...Charmonium and bottomonium production in colour octet model.
6809         DO 346 I=421,439
6810           MSUB(I)=1
6811           MSUB(I+40)=1
6812  346   CONTINUE
6813       ENDIF
6814  
6815 C...Find heaviest new quark flavour allowed in processes 81-84.
6816       KFLQM=1
6817       DO 350 I=1,MIN(8,MDCY(21,3))
6818         IDC=I+MDCY(21,2)-1
6819         IF(MDME(IDC,1).LE.0) GOTO 350
6820         KFLQM=I
6821   350 CONTINUE
6822       IF(MSTP(7).GE.1.AND.MSTP(7).LE.8.AND.(MSEL.LE.3.OR.MSEL.GE.9))
6823      &KFLQM=MSTP(7)
6824       MINT(55)=KFLQM
6825       KFPR(81,1)=KFLQM
6826       KFPR(81,2)=KFLQM
6827       KFPR(82,1)=KFLQM
6828       KFPR(82,2)=KFLQM
6829       KFPR(83,1)=KFLQM
6830       KFPR(84,1)=KFLQM
6831       KFPR(84,2)=KFLQM
6832  
6833 C...Find heaviest new fermion flavour allowed in process 85.
6834       KFLFM=1
6835       DO 360 I=1,MIN(12,MDCY(22,3))
6836         IDC=I+MDCY(22,2)-1
6837         IF(MDME(IDC,1).LE.0) GOTO 360
6838         KFLFM=KFDP(IDC,1)
6839   360 CONTINUE
6840       IF(((MSTP(7).GE.1.AND.MSTP(7).LE.8).OR.(MSTP(7).GE.11.AND.
6841      &MSTP(7).LE.18)).AND.(MSEL.LE.3.OR.MSEL.GE.9)) KFLFM=MSTP(7)
6842       MINT(56)=KFLFM
6843       KFPR(85,1)=KFLFM
6844       KFPR(85,2)=KFLFM
6845 
6846 C...Initialize Generic Processes
6847       KFGEN=9900001
6848       KCGEN=PYCOMP(KFGEN)
6849       IF(KCGEN.GT.0) THEN
6850         IDCY=MDCY(KCGEN,2)
6851         IF(IDCY.GT.0) THEN
6852           KFF1=KFDP(IDCY+1,1)
6853           KFF2=KFDP(IDCY+1,2)
6854           KCF1=PYCOMP(KFF1)
6855           KCF2=PYCOMP(KFF2)
6856           JCOL1=IABS(KCHG(KCF1,2))
6857           IF(JCOL1.EQ.1) THEN
6858             KF1=KFF1
6859             KF2=KFF2
6860           ELSE
6861             KF1=KFF2
6862             KF2=KFF1
6863           ENDIF
6864           KFPR(481,1)=KF1
6865           KFPR(481,2)=KF2
6866           KFPR(482,1)=KF1
6867           KFPR(482,2)=KF2
6868         ENDIF
6869         IF(KFDP(IDCY,1).EQ.21.OR.KFDP(IDCY,2).EQ.21) THEN
6870           KFIN(1,0)=1
6871           KFIN(2,0)=1
6872         ENDIF
6873       ENDIF
6874  
6875 C...Import relevant information on external user processes.
6876       IF(MINT(111).GE.11) THEN
6877         IPYPR=0
6878         DO 390 IUP=1,NPRUP
6879 C...Find next empty PYTHIA process number slot and enable it.
6880   370     IPYPR=IPYPR+1
6881           IF(IPYPR.GT.500) CALL PYERRM(26,
6882      &    '(PYINPR.) no more empty slots for user processes')
6883           IF(ISET(IPYPR).GE.0.AND.ISET(IPYPR).LE.9) GOTO 370
6884           IF(IPYPR.GE.91.AND.IPYPR.LE.100) GOTO 370
6885           ISET(IPYPR)=11
6886 C...Overwrite KFPR with references back to process number and ID.
6887           KFPR(IPYPR,1)=IUP
6888           KFPR(IPYPR,2)=LPRUP(IUP)
6889 C...Process title.
6890           WRITE(CHIPR,'(I10)') LPRUP(IUP)
6891           ICHIN=1
6892           DO 380 ICH=1,9
6893             IF(CHIPR(ICH:ICH).EQ.' ') ICHIN=ICH+1
6894   380     CONTINUE
6895           PROC(IPYPR)='User process '//CHIPR(ICHIN:10)//' '
6896 C...Switch on process.
6897           MSUB(IPYPR)=1
6898   390   CONTINUE
6899       ENDIF
6900 
6901       RETURN
6902       END
6903  
6904 C*********************************************************************
6905  
6906 C...PYXTOT
6907 C...Parametrizes total, elastic and diffractive cross-sections
6908 C...for different energies and beams. Donnachie-Landshoff for
6909 C...total and Schuler-Sjostrand for elastic and diffractive.
6910 C...Process code IPROC:
6911 C...=  1 : p + p;
6912 C...=  2 : pbar + p;
6913 C...=  3 : pi+ + p;
6914 C...=  4 : pi- + p;
6915 C...=  5 : pi0 + p;
6916 C...=  6 : phi + p;
6917 C...=  7 : J/psi + p;
6918 C...= 11 : rho + rho;
6919 C...= 12 : rho + phi;
6920 C...= 13 : rho + J/psi;
6921 C...= 14 : phi + phi;
6922 C...= 15 : phi + J/psi;
6923 C...= 16 : J/psi + J/psi;
6924 C...= 21 : gamma + p (DL);
6925 C...= 22 : gamma + p (VDM).
6926 C...= 23 : gamma + pi (DL);
6927 C...= 24 : gamma + pi (VDM);
6928 C...= 25 : gamma + gamma (DL);
6929 C...= 26 : gamma + gamma (VDM).
6930  
6931       SUBROUTINE PYXTOT
6932  
6933 C...Double precision and integer declarations.
6934       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
6935       IMPLICIT INTEGER(I-N)
6936       INTEGER PYK,PYCHGE,PYCOMP
6937 C...Commonblocks.
6938       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
6939       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
6940       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
6941       COMMON/PYINT1/MINT(400),VINT(400)
6942       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
6943       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
6944       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT5/,/PYINT7/
6945 C...Local arrays.
6946       DIMENSION NPROC(30),XPAR(30),YPAR(30),IHADA(20),IHADB(20),
6947      &PMHAD(4),BHAD(4),BETP(4),IFITSD(20),IFITDD(20),CEFFS(10,8),
6948      &CEFFD(10,9),SIGTMP(6,0:5)
6949  
6950 C...Common constants.
6951       DATA EPS/0.0808D0/, ETA/-0.4525D0/, ALP/0.25D0/, CRES/2D0/,
6952      &PMRC/1.062D0/, SMP/0.880D0/, FACEL/0.0511D0/, FACSD/0.0336D0/,
6953      &FACDD/0.0084D0/
6954  
6955 C...Number of multiple processes to be evaluated (= 0 : undefined).
6956       DATA NPROC/7*1,3*0,6*1,4*0,4*3,2*6,4*0/
6957 C...X and Y parameters of sigmatot = X * s**epsilon + Y * s**(-eta).
6958       DATA XPAR/2*21.70D0,3*13.63D0,10.01D0,0.970D0,3*0D0,
6959      &8.56D0,6.29D0,0.609D0,4.62D0,0.447D0,0.0434D0,4*0D0,
6960      &0.0677D0,0.0534D0,0.0425D0,0.0335D0,2.11D-4,1.31D-4,4*0D0/
6961       DATA YPAR/
6962      &56.08D0,98.39D0,27.56D0,36.02D0,31.79D0,-1.51D0,-0.146D0,3*0D0,
6963      &13.08D0,-0.62D0,-0.060D0,0.030D0,-0.0028D0,0.00028D0,4*0D0,
6964      &0.129D0,0.115D0,0.081D0,0.072D0,2.15D-4,1.70D-4,4*0D0/
6965  
6966 C...Beam and target hadron class:
6967 C...= 1 : p/n ; = 2 : pi/rho/omega; = 3 : phi; = 4 : J/psi.
6968       DATA IHADA/2*1,3*2,3,4,3*0,3*2,2*3,4,4*0/
6969       DATA IHADB/7*1,3*0,2,3,4,3,2*4,4*0/
6970 C...Characteristic class masses, slope parameters, beta = sqrt(X).
6971       DATA PMHAD/0.938D0,0.770D0,1.020D0,3.097D0/
6972       DATA BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
6973       DATA BETP/4.658D0,2.926D0,2.149D0,0.208D0/
6974  
6975 C...Fitting constants used in parametrizations of diffractive results.
6976       DATA IFITSD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
6977       DATA IFITDD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
6978       DATA ((CEFFS(J1,J2),J2=1,8),J1=1,10)/
6979      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.213D0, 0.0D0, -0.47D0, 150D0,
6980      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.267D0, 0.0D0, -0.47D0, 100D0,
6981      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.232D0, 0.0D0, -0.47D0, 110D0,
6982      &0.213D0, 7.0D0, -0.55D0, 800D0, 0.115D0, 0.0D0, -0.47D0, 110D0,
6983      &0.267D0, 0.0D0, -0.46D0,  75D0, 0.267D0, 0.0D0, -0.46D0,  75D0,
6984      &0.232D0, 0.0D0, -0.46D0,  85D0, 0.267D0, 0.0D0, -0.48D0, 100D0,
6985      &0.115D0, 0.0D0, -0.50D0,  90D0, 0.267D0, 6.0D0, -0.56D0, 420D0,
6986      &0.232D0, 0.0D0, -0.48D0, 110D0, 0.232D0, 0.0D0, -0.48D0, 110D0,
6987      &0.115D0, 0.0D0, -0.52D0, 120D0, 0.232D0, 6.0D0, -0.56D0, 470D0,
6988      &0.115D0, 5.5D0, -0.58D0, 570D0, 0.115D0, 5.5D0, -0.58D0, 570D0/
6989       DATA ((CEFFD(J1,J2),J2=1,9),J1=1,10)/
6990      &3.11D0, -7.34D0,  9.71D0, 0.068D0, -0.42D0,  1.31D0,
6991      &-1.37D0,  35.0D0,  118D0,  3.11D0, -7.10D0,  10.6D0,
6992      &0.073D0, -0.41D0, 1.17D0, -1.41D0,  31.6D0,   95D0,
6993      &3.12D0, -7.43D0,  9.21D0, 0.067D0, -0.44D0,  1.41D0,
6994      &-1.35D0,  36.5D0,  132D0,  3.13D0, -8.18D0, -4.20D0,
6995      &0.056D0, -0.71D0, 3.12D0, -1.12D0,  55.2D0, 1298D0,
6996      &3.11D0, -6.90D0,  11.4D0, 0.078D0, -0.40D0,  1.05D0,
6997      &-1.40D0,  28.4D0,   78D0,  3.11D0, -7.13D0,  10.0D0,
6998      &0.071D0, -0.41D0, 1.23D0, -1.34D0,  33.1D0,  105D0,
6999      &3.12D0, -7.90D0, -1.49D0, 0.054D0, -0.64D0,  2.72D0,
7000      &-1.13D0,  53.1D0,  995D0,  3.11D0, -7.39D0,  8.22D0,
7001      &0.065D0, -0.44D0, 1.45D0, -1.36D0,  38.1D0,  148D0,
7002      &3.18D0, -8.95D0, -3.37D0, 0.057D0, -0.76D0,  3.32D0,
7003      &-1.12D0,  55.6D0, 1472D0,  4.18D0, -29.2D0,  56.2D0,
7004      &0.074D0, -1.36D0, 6.67D0, -1.14D0, 116.2D0, 6532D0/
7005  
7006 C...Parameters. Combinations of the energy.
7007       AEM=PARU(101)
7008       PMTH=PARP(102)
7009       S=VINT(2)
7010       SRT=VINT(1)
7011       SEPS=S**EPS
7012       SETA=S**ETA
7013       SLOG=LOG(S)
7014  
7015 C...Ratio of gamma/pi (for rescaling in parton distributions).
7016       VINT(281)=(XPAR(22)*SEPS+YPAR(22)*SETA)/
7017      &(XPAR(5)*SEPS+YPAR(5)*SETA)
7018       VINT(317)=1D0
7019       IF(MINT(50).NE.1) RETURN
7020  
7021 C...Order flavours of incoming particles: KF1 < KF2.
7022       IF(IABS(MINT(11)).LE.IABS(MINT(12))) THEN
7023         KF1=IABS(MINT(11))
7024         KF2=IABS(MINT(12))
7025         IORD=1
7026       ELSE
7027         KF1=IABS(MINT(12))
7028         KF2=IABS(MINT(11))
7029         IORD=2
7030       ENDIF
7031       ISGN12=ISIGN(1,MINT(11)*MINT(12))
7032  
7033 C...Find process number (for lookup tables).
7034       IF(KF1.GT.1000) THEN
7035         IPROC=1
7036         IF(ISGN12.LT.0) IPROC=2
7037       ELSEIF(KF1.GT.100.AND.KF2.GT.1000) THEN
7038         IPROC=3
7039         IF(ISGN12.LT.0) IPROC=4
7040         IF(KF1.EQ.111) IPROC=5
7041       ELSEIF(KF1.GT.100) THEN
7042         IPROC=11
7043       ELSEIF(KF2.GT.1000) THEN
7044         IPROC=21
7045         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=22
7046       ELSEIF(KF2.GT.100) THEN
7047         IPROC=23
7048         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=24
7049       ELSE
7050         IPROC=25
7051         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7) IPROC=26
7052       ENDIF
7053  
7054 C... Number of multiple processes to be stored; beam/target side.
7055       NPR=NPROC(IPROC)
7056       MINT(101)=1
7057       MINT(102)=1
7058       IF(NPR.EQ.3) THEN
7059         MINT(100+IORD)=4
7060       ELSEIF(NPR.EQ.6) THEN
7061         MINT(101)=4
7062         MINT(102)=4
7063       ENDIF
7064       N1=0
7065       IF(MINT(101).EQ.4) N1=4
7066       N2=0
7067       IF(MINT(102).EQ.4) N2=4
7068  
7069 C...Do not do any more for user-set or undefined cross-sections.
7070       IF(MSTP(31).LE.0) RETURN
7071       IF(NPR.EQ.0) CALL PYERRM(26,
7072      &'(PYXTOT:) cross section for this process not yet implemented')
7073  
7074 C...Parameters. Combinations of the energy.
7075       AEM=PARU(101)
7076       PMTH=PARP(102)
7077       S=VINT(2)
7078       SRT=VINT(1)
7079       SEPS=S**EPS
7080       SETA=S**ETA
7081       SLOG=LOG(S)
7082  
7083 C...Loop over multiple processes (for VDM).
7084       DO 110 I=1,NPR
7085         IF(NPR.EQ.1) THEN
7086           IPR=IPROC
7087         ELSEIF(NPR.EQ.3) THEN
7088           IPR=I+4
7089           IF(KF2.LT.1000) IPR=I+10
7090         ELSEIF(NPR.EQ.6) THEN
7091           IPR=I+10
7092         ENDIF
7093  
7094 C...Evaluate hadron species, mass, slope contribution and fit number.
7095         IHA=IHADA(IPR)
7096         IHB=IHADB(IPR)
7097         PMA=PMHAD(IHA)
7098         PMB=PMHAD(IHB)
7099         BHA=BHAD(IHA)
7100         BHB=BHAD(IHB)
7101         ISD=IFITSD(IPR)
7102         IDD=IFITDD(IPR)
7103  
7104 C...Skip if energy too low relative to masses.
7105         DO 100 J=0,5
7106           SIGTMP(I,J)=0D0
7107   100   CONTINUE
7108         IF(SRT.LT.PMA+PMB+PARP(104)) GOTO 110
7109  
7110 C...Total cross-section. Elastic slope parameter and cross-section.
7111         SIGTMP(I,0)=XPAR(IPR)*SEPS+YPAR(IPR)*SETA
7112         BEL=2D0*BHA+2D0*BHB+4D0*SEPS-4.2D0
7113         SIGTMP(I,1)=FACEL*SIGTMP(I,0)**2/BEL
7114  
7115 C...Diffractive scattering A + B -> X + B.
7116         BSD=2D0*BHB
7117         SQML=(PMA+PMTH)**2
7118         SQMU=S*CEFFS(ISD,1)+CEFFS(ISD,2)
7119         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
7120      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
7121         BXB=CEFFS(ISD,3)+CEFFS(ISD,4)/S
7122         SUM2=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)/
7123      &  (BSD+2D0*ALP*LOG(S/((PMA+PMTH)*(PMA+PMRC)))+BXB)
7124         SIGTMP(I,2)=FACSD*XPAR(IPR)*BETP(IHB)*MAX(0D0,SUM1+SUM2)
7125  
7126 C...Diffractive scattering A + B -> A + X.
7127         BSD=2D0*BHA
7128         SQML=(PMB+PMTH)**2
7129         SQMU=S*CEFFS(ISD,5)+CEFFS(ISD,6)
7130         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
7131      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
7132         BAX=CEFFS(ISD,7)+CEFFS(ISD,8)/S
7133         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/
7134      &  (BSD+2D0*ALP*LOG(S/((PMB+PMTH)*(PMB+PMRC)))+BAX)
7135         SIGTMP(I,3)=FACSD*XPAR(IPR)*BETP(IHA)*MAX(0D0,SUM1+SUM2)
7136  
7137 C...Order single diffractive correctly.
7138         IF(IORD.EQ.2) THEN
7139           SIGSAV=SIGTMP(I,2)
7140           SIGTMP(I,2)=SIGTMP(I,3)
7141           SIGTMP(I,3)=SIGSAV
7142         ENDIF
7143  
7144 C...Double diffractive scattering A + B -> X1 + X2.
7145         YEFF=LOG(S*SMP/((PMA+PMTH)*(PMB+PMTH))**2)
7146         DEFF=CEFFD(IDD,1)+CEFFD(IDD,2)/SLOG+CEFFD(IDD,3)/SLOG**2
7147         SUM1=(DEFF+YEFF*(LOG(MAX(1D-10,YEFF/DEFF))-1D0))/(2D0*ALP)
7148         IF(YEFF.LE.0) SUM1=0D0
7149         SQMU=S*(CEFFD(IDD,4)+CEFFD(IDD,5)/SLOG+CEFFD(IDD,6)/SLOG**2)
7150         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMA+PMTH)**2*(PMB+PMTH)*(PMB+PMRC))))
7151         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMB+PMTH)*(PMB+PMRC))))
7152         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)*LOG(SLUP/SLDN)/
7153      &  (2D0*ALP)
7154         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMB+PMTH)**2*(PMA+PMTH)*(PMA+PMRC))))
7155         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMA+PMTH)*(PMA+PMRC))))
7156         SUM3=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*LOG(SLUP/SLDN)/
7157      &  (2D0*ALP)
7158         BXX=CEFFD(IDD,7)+CEFFD(IDD,8)/SRT+CEFFD(IDD,9)/S
7159         SLRR=LOG(S/(ALP*(PMA+PMTH)*(PMA+PMRC)*(PMB+PMTH)*(PMB+PMRC)))
7160         SUM4=CRES**2*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*
7161      &  LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/MAX(0.1D0,2D0*ALP*SLRR+BXX)
7162         SIGTMP(I,4)=FACDD*XPAR(IPR)*MAX(0D0,SUM1+SUM2+SUM3+SUM4)
7163  
7164 C...Non-diffractive by unitarity.
7165         SIGTMP(I,5)=SIGTMP(I,0)-SIGTMP(I,1)-SIGTMP(I,2)-SIGTMP(I,3)-
7166      &  SIGTMP(I,4)
7167   110 CONTINUE
7168  
7169 C...Put temporary results in output array: only one process.
7170       IF(MINT(101).EQ.1.AND.MINT(102).EQ.1) THEN
7171         DO 120 J=0,5
7172           SIGT(0,0,J)=SIGTMP(1,J)
7173   120   CONTINUE
7174  
7175 C...Beam multiple processes.
7176       ELSEIF(MINT(101).EQ.4.AND.MINT(102).EQ.1) THEN
7177         IF(MINT(107).EQ.2) THEN
7178           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
7179         ELSE
7180           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
7181      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
7182         ENDIF
7183         IF(MSTP(20).GT.0) THEN
7184           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)))**MSTP(20)
7185         ENDIF
7186         DO 140 I=1,4
7187           IF(MINT(107).EQ.2) THEN
7188             CONV=(AEM/PARP(160+I))*VINT(317)
7189           ELSEIF(VINT(154).GT.PARP(15)) THEN
7190             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
7191      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
7192           ELSE
7193             CONV=0D0
7194           ENDIF
7195           I1=MAX(1,I-1)
7196           DO 130 J=0,5
7197             SIGT(I,0,J)=CONV*SIGTMP(I1,J)
7198   130     CONTINUE
7199   140   CONTINUE
7200         DO 150 J=0,5
7201           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
7202   150   CONTINUE
7203  
7204 C...Target multiple processes.
7205       ELSEIF(MINT(101).EQ.1.AND.MINT(102).EQ.4) THEN
7206         IF(MINT(108).EQ.2) THEN
7207           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
7208         ELSE
7209           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
7210      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
7211         ENDIF
7212         IF(MSTP(20).GT.0) THEN
7213           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(308)))**MSTP(20)
7214         ENDIF
7215         DO 170 I=1,4
7216           IF(MINT(108).EQ.2) THEN
7217             CONV=(AEM/PARP(160+I))*VINT(317)
7218           ELSEIF(VINT(154).GT.PARP(15)) THEN
7219             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
7220      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
7221           ELSE
7222             CONV=0D0
7223           ENDIF
7224           IV=MAX(1,I-1)
7225           DO 160 J=0,5
7226             SIGT(0,I,J)=CONV*SIGTMP(IV,J)
7227   160     CONTINUE
7228   170   CONTINUE
7229         DO 180 J=0,5
7230           SIGT(0,0,J)=SIGT(0,1,J)+SIGT(0,2,J)+SIGT(0,3,J)+SIGT(0,4,J)
7231   180   CONTINUE
7232  
7233 C...Both beam and target multiple processes.
7234       ELSE
7235         IF(MINT(107).EQ.2) THEN
7236           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
7237         ELSE
7238           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
7239      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
7240         ENDIF
7241         IF(MINT(108).EQ.2) THEN
7242           VINT(317)=VINT(317)*(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
7243         ELSE
7244           VINT(317)=VINT(317)*16D0*PARP(15)**2*VINT(154)**2/
7245      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
7246         ENDIF
7247         IF(MSTP(20).GT.0) THEN
7248           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)+
7249      &    VINT(308)))**MSTP(20)
7250         ENDIF
7251         DO 210 I1=1,4
7252           DO 200 I2=1,4
7253             IF(MINT(107).EQ.2) THEN
7254               CONV=(AEM/PARP(160+I1))*VINT(317)
7255             ELSEIF(VINT(154).GT.PARP(15)) THEN
7256               CONV=(AEM/PARU(1))*(KCHG(I1,1)/3D0)**2*PARP(18)**2*
7257      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
7258             ELSE
7259               CONV=0D0
7260             ENDIF
7261             IF(MINT(108).EQ.2) THEN
7262               CONV=CONV*(AEM/PARP(160+I2))
7263             ELSEIF(VINT(154).GT.PARP(15)) THEN
7264               CONV=CONV*(AEM/PARU(1))*(KCHG(I2,1)/3D0)**2*PARP(18)**2*
7265      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)
7266             ELSE
7267               CONV=0D0
7268             ENDIF
7269             IF(I1.LE.2) THEN
7270               IV=MAX(1,I2-1)
7271             ELSEIF(I2.LE.2) THEN
7272               IV=MAX(1,I1-1)
7273             ELSEIF(I1.EQ.I2) THEN
7274               IV=2*I1-2
7275             ELSE
7276               IV=5
7277             ENDIF
7278             DO 190 J=0,5
7279               JV=J
7280               IF(I2.GT.I1.AND.(J.EQ.2.OR.J.EQ.3)) JV=5-J
7281               SIGT(I1,I2,J)=CONV*SIGTMP(IV,JV)
7282   190       CONTINUE
7283   200     CONTINUE
7284   210   CONTINUE
7285         DO 230 J=0,5
7286           DO 220 I=1,4
7287             SIGT(I,0,J)=SIGT(I,1,J)+SIGT(I,2,J)+SIGT(I,3,J)+SIGT(I,4,J)
7288             SIGT(0,I,J)=SIGT(1,I,J)+SIGT(2,I,J)+SIGT(3,I,J)+SIGT(4,I,J)
7289   220     CONTINUE
7290           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
7291   230   CONTINUE
7292       ENDIF
7293  
7294 C...Scale up uniformly for Donnachie-Landshoff parametrization.
7295       IF(IPROC.EQ.21.OR.IPROC.EQ.23.OR.IPROC.EQ.25) THEN
7296         RFAC=(XPAR(IPROC)*SEPS+YPAR(IPROC)*SETA)/SIGT(0,0,0)
7297         DO 260 I1=0,N1
7298           DO 250 I2=0,N2
7299             DO 240 J=0,5
7300               SIGT(I1,I2,J)=RFAC*SIGT(I1,I2,J)
7301   240       CONTINUE
7302   250     CONTINUE
7303   260   CONTINUE
7304       ENDIF
7305  
7306       RETURN
7307       END
7308  
7309 C*********************************************************************
7310  
7311 C...PYMAXI
7312 C...Finds optimal set of coefficients for kinematical variable selection
7313 C...and the maximum of the part of the differential cross-section used
7314 C...in the event weighting.
7315  
7316       SUBROUTINE PYMAXI
7317  
7318 C...Double precision and integer declarations.
7319       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
7320       IMPLICIT INTEGER(I-N)
7321       INTEGER PYK,PYCHGE,PYCOMP
7322 C...Parameter statement to help give large particle numbers.
7323       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
7324      &KEXCIT=4000000,KDIMEN=5000000)
7325  
7326 C...User process initialization commonblock.
7327       INTEGER MAXPUP
7328       PARAMETER (MAXPUP=100)
7329       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
7330       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
7331       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
7332      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
7333      &LPRUP(MAXPUP)
7334       SAVE /HEPRUP/
7335  
7336 C...Commonblocks.
7337       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
7338       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
7339       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
7340       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
7341       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
7342       COMMON/PYINT1/MINT(400),VINT(400)
7343       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
7344       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
7345       COMMON/PYINT4/MWID(500),WIDS(500,5)
7346       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
7347       COMMON/PYINT6/PROC(0:500)
7348       CHARACTER PROC*28
7349       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
7350       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
7351       COMMON/PYTCCO/COEFX(194:380,2)
7352       COMMON/TCPARA/IRES,JRES,XMAS(3),XWID(3),YMAS(2),YWID(2)
7353       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
7354      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT6/,/PYINT7/,/PYTCCO/,
7355      &/PYTCSM/,/TCPARA/
7356 C...Local arrays, character variables and data.
7357       LOGICAL IOK
7358       CHARACTER CVAR(4)*4
7359       DIMENSION NPTS(4),MVARPT(500,4),VINTPT(500,30),SIGSPT(500),
7360      &NAREL(9),WTREL(9),WTMAT(9,9),WTRELN(9),COEFU(9),COEFO(9),
7361      &IACCMX(4),SIGSMX(4),SIGSSM(3),PMMN(2),WTRSAV(9),TEMPC(9),
7362      &IQ(9),IP(9)
7363       DATA CVAR/'tau ','tau''','y*  ','cth '/
7364       DATA SIGSSM/3*0D0/
7365  
7366 C...Initial values and loop over subprocesses.
7367       NPOSI=0
7368       VINT(143)=1D0
7369       VINT(144)=1D0
7370       XSEC(0,1)=0D0
7371       ITECH=0
7372       DO 460 ISUB=1,500
7373         MINT(1)=ISUB
7374         MINT(51)=0
7375  
7376 C...Find maximum weight factors for photon flux.
7377         IF(MSUB(ISUB).EQ.1.OR.(ISUB.GE.91.AND.ISUB.LE.100)) THEN
7378           IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(2,WTGAGA)
7379         ENDIF
7380  
7381 C...Select subprocess to study: skip cases not applicable.
7382         IF(ISET(ISUB).EQ.11) THEN
7383           IF(MSUB(ISUB).NE.1) GOTO 460
7384 C...User process intialization: cross section model dependent.
7385           IF(IABS(IDWTUP).EQ.1) THEN
7386             IF(IDWTUP.GT.0.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
7387      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
7388             XSEC(ISUB,1)=1.00000001D-9*ABS(XMAXUP(KFPR(ISUB,1)))
7389           ELSE
7390             IF((IDWTUP.EQ.2.OR.IDWTUP.EQ.3).AND.
7391      &      XSECUP(KFPR(ISUB,1)).LT.0D0) CALL
7392      &      PYERRM(26,'(PYMAXI:) Negative XSECUP for user process')
7393             IF(IDWTUP.EQ.2.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
7394      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
7395             XSEC(ISUB,1)=1.00000001D-9*ABS(XSECUP(KFPR(ISUB,1)))
7396           ENDIF
7397           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7398      &    WTGAGA*XSEC(ISUB,1)
7399           NPOSI=NPOSI+1
7400           GOTO 450
7401         ELSEIF(ISUB.GE.91.AND.ISUB.LE.95) THEN
7402           CALL PYSIGH(NCHN,SIGS)
7403           XSEC(ISUB,1)=SIGS
7404           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7405      &    WTGAGA*XSEC(ISUB,1)
7406           IF(MSUB(ISUB).NE.1) GOTO 460
7407           NPOSI=NPOSI+1
7408           GOTO 450
7409         ELSEIF(ISUB.EQ.99.AND.MSUB(ISUB).EQ.1) THEN
7410           CALL PYSIGH(NCHN,SIGS)
7411           XSEC(ISUB,1)=SIGS
7412           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
7413      &    WTGAGA*XSEC(ISUB,1)
7414           IF(XSEC(ISUB,1).EQ.0D0) THEN
7415             MSUB(ISUB)=0
7416           ELSE
7417             NPOSI=NPOSI+1
7418           ENDIF
7419           GOTO 450
7420         ELSEIF(ISUB.EQ.96) THEN
7421           IF(MINT(50).EQ.0) GOTO 460
7422           IF(MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0.AND.MSTP(131).LE.0)
7423      &    GOTO 460
7424           IF(MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 460
7425         ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
7426      &    ISUB.EQ.53.OR.ISUB.EQ.68) THEN
7427           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
7428         ELSEIF(ISUB.GE.381.AND.ISUB.LE.386) THEN
7429           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
7430         ELSE
7431           IF(MSUB(ISUB).NE.1) GOTO 460
7432         ENDIF
7433         ISTSB=ISET(ISUB)
7434         IF(ISUB.EQ.96) ISTSB=2
7435         IF(MSTP(122).GE.2) WRITE(MSTU(11),5000) ISUB
7436         MWTXS=0
7437         IF(MSTP(142).GE.1.AND.ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+
7438      &  MSUB(94)+MSUB(95).EQ.0) MWTXS=1
7439  
7440 C...Find resonances (explicit or implicit in cross-section).
7441         MINT(72)=0
7442         KFR1=0
7443         IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
7444           KFR1=KFPR(ISUB,1)
7445         ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165
7446      &    .OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
7447           KFR1=23
7448         ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172
7449      &    .OR.ISUB.EQ.177) THEN
7450           KFR1=24
7451         ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
7452           KFR1=25
7453           IF(MSTP(46).EQ.5) THEN
7454             KFR1=89
7455             PMAS(89,1)=PARP(45)
7456             PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
7457           ENDIF
7458         ELSEIF(ISUB.EQ.481) THEN
7459           KFR1=9900001
7460         ENDIF
7461         CKMX=CKIN(2)
7462         IF(CKMX.LE.0D0) CKMX=VINT(1)
7463         KCR1=PYCOMP(KFR1)
7464         IF(KCR1.EQ.0) KFR1=0
7465         IF(KFR1.NE.0) THEN
7466           IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
7467      &    CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
7468         ENDIF
7469         IF(KFR1.NE.0) THEN
7470           TAUR1=PMAS(KCR1,1)**2/VINT(2)
7471           GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
7472           MINT(72)=1
7473           MINT(73)=KFR1
7474           VINT(73)=TAUR1
7475           VINT(74)=GAMR1
7476         ENDIF
7477         KFR2=0
7478         KFR3=0
7479         IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.ISUB.EQ.195.OR.
7480      $  (ISUB.GE.361.AND.ISUB.LE.380))
7481      $  THEN
7482           KFR2=23
7483           IF(ISUB.EQ.141) THEN
7484             KCR2=PYCOMP(KFR2)
7485             IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
7486      &       CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) THEN
7487               KFR2=0
7488             ELSE
7489               TAUR2=PMAS(KCR2,1)**2/VINT(2)            
7490               GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
7491               MINT(72)=2
7492               MINT(74)=KFR2
7493               VINT(75)=TAUR2
7494               VINT(76)=GAMR2
7495             ENDIF
7496           ELSEIF(ITECH.EQ.0) THEN
7497             ALPRHT=2.16D0*(3D0/DBLE(ITCM(1)))
7498             ITECH=1
7499             KFR1=KTECHN+113              
7500             KCR1=PYCOMP(KFR1)
7501             KFR2=KTECHN+223
7502             KCR2=PYCOMP(KFR2)
7503             KFR3=KTECHN+115
7504             KCR3=PYCOMP(KFR3)
7505             IRES=0
7506 C...Order the resonances
7507             IF(PMAS(KCR3,1).LT.PMAS(KCR2,1)) THEN
7508               KCT=KCR3
7509               KCR3=KCR2
7510               KCR2=KCT
7511             ENDIF
7512             IF(PMAS(KCR3,1).LT.PMAS(KCR1,1)) THEN
7513               KCT=KCR3
7514               KCR3=KCR1
7515               KCR1=KCT
7516             ENDIF
7517             IF(PMAS(KCR2,1).LT.PMAS(KCR1,1)) THEN
7518               KCT=KCR2
7519               KCR2=KCR1
7520               KCR1=KCT
7521             ENDIF
7522             DO 101 I=1,3
7523               IF(I.EQ.1) THEN
7524                 SHN0=PMAS(KCR1,1)**2
7525               ELSEIF(I.EQ.2) THEN
7526                 IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LE.1D-6) GOTO 101
7527                 SHN0=PMAS(KCR2,1)**2
7528               ELSEIF(I.EQ.3) THEN
7529                 IF(ABS(PMAS(KCR3,1)-PMAS(KCR3,1)).LE.1D-6) GOTO 101
7530                 SHN0=PMAS(KCR3,1)**2
7531               ENDIF
7532               AEM=PYALEM(SHN0)
7533               FAR=SQRT(AEM/ALPRHT)              
7534               SHN=SHN0*(1D0-FAR)
7535               CALL PYTECM(SHN,S1,WIDO,1)
7536               RES=SHN-S1
7537               SHN=S1*.99D0
7538               SHSTEP=2D0
7539  102          SHN=SHN+SHSTEP
7540               CALL PYTECM(SHN,S1,WIDO,1)
7541               IF(RES.LT.0D0.AND.SHN-S1.GE.0D0) THEN
7542                 IOK=.FALSE.
7543                 IF(IRES.GT.0) THEN
7544                   IF(ABS(SQRT(S1)-XMAS(IRES)).GT.1D-6) IOK=.TRUE.
7545                 ELSEIF(IRES.EQ.0) THEN
7546                   IOK=.TRUE.
7547                 ENDIF
7548                 IF(IOK) THEN
7549                   IRES=IRES+1
7550                   XMAS(IRES)=SQRT(S1)
7551                   XWID(IRES)=WIDO
7552                 ENDIF
7553               ENDIF
7554               RES=SHN-S1
7555               IF(IRES.LT.3.AND.SHN.LT.SHN0*(1D0+FAR)) GOTO 102
7556  101        CONTINUE
7557             JRES=0
7558             KFR1=KTECHN+213              
7559             KCR1=PYCOMP(KFR1)
7560             KFR2=KTECHN+215
7561             KCR2=PYCOMP(KFR2)
7562             IF(PMAS(KCR2,1).LT.PMAS(KCR1,1)) THEN
7563               KCT=KCR2
7564               KCR2=KCR1
7565               KCR1=KCT
7566             ENDIF
7567             DO 103 I=1,2
7568               IF(I.EQ.1) THEN
7569                 SHN0=PMAS(KCR1,1)**2
7570               ELSEIF(I.EQ.2) THEN
7571                 IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LE.1D-6) GOTO 103
7572                 SHN0=PMAS(KCR2,1)**2
7573               ENDIF
7574               AEM=PYALEM(SHN0)
7575               FAR=SQRT(AEM/ALPRHT)              
7576               SHN=SHN0*(1D0-FAR)
7577               CALL PYTECM(SHN,S1,WIDO,2)
7578               RES=SHN-S1
7579               SHN=S1*.99D0
7580               SHSTEP=2D0
7581  104          SHN=SHN+SHSTEP
7582               CALL PYTECM(SHN,S1,WIDO,2)
7583               IF(RES.LT.0D0.AND.SHN-S1.GE.0D0) THEN
7584                 IOK=.FALSE.
7585                 IF(JRES.GT.0) THEN
7586                   IF(ABS(SQRT(S1)-XMAS(IRES)).GT.1D-6) IOK=.TRUE.
7587                 ELSEIF(JRES.EQ.0) THEN
7588                   IOK=.TRUE.
7589                 ENDIF
7590                 IF(IOK) THEN
7591                   JRES=JRES+1
7592                   YMAS(JRES)=SQRT(S1)
7593                   YWID(JRES)=WIDO
7594                 ENDIF
7595               ENDIF
7596               RES=SHN-S1
7597               IF(JRES.LT.2.AND.SHN.LT.SHN0*(1D0+FAR)) GOTO 104
7598  103        CONTINUE
7599           ENDIF
7600           IF(ISUB.EQ.194.OR.(ISUB.GE.361.AND.ISUB.LE.368).OR.
7601      &     ISUB.EQ.379.OR.ISUB.EQ.380) THEN
7602             MINT(72)=IRES
7603             IF(IRES.GE.1) THEN
7604               VINT(73)=XMAS(1)**2/VINT(2)
7605               VINT(74)=XMAS(1)*XWID(1)/VINT(2)
7606               TAUR1=VINT(73)
7607               GAMR1=VINT(74)
7608               XM1=XMAS(1)
7609               XG1=XWID(1)
7610               KFR1=1
7611             ENDIF
7612             IF(IRES.GE.2) THEN
7613               VINT(75)=XMAS(2)**2/VINT(2)
7614               VINT(76)=XMAS(2)*XWID(2)/VINT(2)
7615               TAUR2=VINT(75)
7616               GAMR2=VINT(76)
7617               XM2=XMAS(2)
7618               XG2=XWID(2)
7619               KFR2=2
7620             ENDIF
7621             IF(IRES.EQ.3) THEN
7622               VINT(77)=XMAS(3)**2/VINT(2)
7623               VINT(78)=XMAS(3)*XWID(3)/VINT(2)
7624               TAUR3=VINT(77)
7625               GAMR3=VINT(78)
7626               XM3=XMAS(3)
7627               XG3=XWID(3)
7628               KFR3=3
7629             ENDIF
7630 C...Charged current:  rho+- and a+-
7631           ELSEIF(ISUB.EQ.195.OR.ISUB.GE.370.AND.ISUB.LE.378) THEN
7632             MINT(72)=IRES
7633             IF(JRES.GE.1) THEN
7634               VINT(73)=YMAS(1)**2/VINT(2)
7635               VINT(74)=YMAS(1)*YWID(1)/VINT(2)
7636               KFR1=1
7637               TAUR1=VINT(73)
7638               GAMR1=VINT(74)
7639               XM1=YMAS(1)
7640               XG1=YWID(1)
7641             ENDIF
7642             IF(JRES.GE.2) THEN
7643               VINT(75)=YMAS(2)**2/VINT(2)
7644               VINT(76)=YMAS(2)*YWID(2)/VINT(2)
7645               KFR2=2
7646               TAUR2=VINT(73)
7647               GAMR2=VINT(74)
7648               XM2=YMAS(2)
7649               XG2=YWID(2)
7650             ENDIF
7651             KFR3=0
7652           ENDIF
7653           IF(ISUB.NE.141) THEN
7654             IF(KFR1.NE.0.AND.(CKIN(1).GT.(XM1+20D0*XG1)
7655      &       .OR.CKMX.LT.(XM1-20D0*XG1))) KFR1=0
7656             IF(KFR2.NE.0.AND.(CKIN(1).GT.(XM2+20D0*XG2)
7657      &       .OR.CKMX.LT.(XM2-20D0*XG2))) KFR2=0
7658             IF(KFR3.NE.0.AND.(CKIN(1).GT.(XM3+20D0*XG3)
7659      &       .OR.CKMX.LT.(XM3-20D0*XG3))) KFR3=0
7660             IF(KFR3.NE.0.AND.KFR2.NE.0.AND.KFR1.NE.0) THEN
7661 
7662             ELSEIF(KFR1.NE.0.AND.KFR2.NE.0) THEN
7663               MINT(72)=2
7664             ELSEIF(KFR1.NE.0.AND.KFR3.NE.0) THEN
7665               MINT(72)=2
7666               MINT(74)=KFR3
7667               VINT(75)=TAUR3
7668               VINT(76)=GAMR3
7669             ELSEIF(KFR2.NE.0.AND.KFR3.NE.0) THEN
7670               MINT(72)=2
7671               MINT(73)=KFR2
7672               VINT(73)=TAUR2
7673               VINT(74)=GAMR2
7674               MINT(74)=KFR3
7675               VINT(75)=TAUR3
7676               VINT(76)=GAMR3
7677             ELSEIF(KFR1.NE.0) THEN
7678               MINT(72)=1
7679             ELSEIF(KFR2.NE.0) THEN
7680               MINT(72)=1
7681               MINT(73)=KFR2
7682               VINT(73)=TAUR2
7683               VINT(74)=GAMR2
7684             ELSEIF(KFR3.NE.0) THEN
7685               MINT(72)=1
7686               MINT(73)=KFR3
7687               VINT(73)=TAUR3
7688               VINT(74)=GAMR3
7689             ELSE
7690               MINT(72)=0
7691             ENDIF
7692           ELSE
7693             IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
7694 
7695             ELSEIF(KFR2.NE.0) THEN
7696               KFR1=KFR2
7697               TAUR1=TAUR2
7698               GAMR1=GAMR2
7699               MINT(72)=1
7700               MINT(73)=KFR1
7701               VINT(73)=TAUR1
7702               VINT(74)=GAMR1
7703               KFR2=0
7704             ELSE
7705               MINT(72)=0
7706             ENDIF
7707           ENDIF
7708         ENDIF
7709  
7710 C...Find product masses and minimum pT of process.
7711         SQM3=0D0
7712         SQM4=0D0
7713         MINT(71)=0
7714         VINT(71)=CKIN(3)
7715         VINT(80)=1D0
7716         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
7717           NBW=0
7718           DO 110 I=1,2
7719             PMMN(I)=0D0
7720             IF(KFPR(ISUB,I).EQ.0) THEN
7721             ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
7722      &        PARP(41)) THEN
7723               IF(I.EQ.1) SQM3=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
7724               IF(I.EQ.2) SQM4=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
7725             ELSE
7726               NBW=NBW+1
7727 C...This prevents SUSY/t particles from becoming too light.
7728               KFLW=KFPR(ISUB,I)
7729               IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
7730                 KCW=PYCOMP(KFLW)
7731                 PMMN(I)=PMAS(KCW,1)
7732                 DO 100 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
7733                   IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
7734                     PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
7735      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
7736                     IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
7737      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
7738                     PMMN(I)=MIN(PMMN(I),PMSUM)
7739                   ENDIF
7740   100           CONTINUE
7741               ELSEIF(KFLW.EQ.6) THEN
7742                 PMMN(I)=PMAS(24,1)+PMAS(5,1)
7743               ENDIF
7744             ENDIF
7745   110     CONTINUE
7746           IF(NBW.GE.1) THEN
7747             CKIN41=CKIN(41)
7748             CKIN43=CKIN(43)
7749             CKIN(41)=MAX(PMMN(1),CKIN(41))
7750             CKIN(43)=MAX(PMMN(2),CKIN(43))
7751             CALL PYOFSH(3,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
7752             CKIN(41)=CKIN41
7753             CKIN(43)=CKIN43
7754             IF(MINT(51).EQ.1) THEN
7755               WRITE(MSTU(11),5100) ISUB
7756               MSUB(ISUB)=0
7757               GOTO 460
7758             ENDIF
7759             SQM3=PQM3**2
7760             SQM4=PQM4**2
7761           ENDIF
7762           IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
7763           IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
7764           IF(ISUB.EQ.96.AND.MSTP(82).LE.1) THEN
7765             VINT(71)=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
7766           ELSEIF(ISUB.EQ.96) THEN
7767             VINT(71)=0.08D0*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
7768           ENDIF
7769         ENDIF
7770         VINT(63)=SQM3
7771         VINT(64)=SQM4
7772  
7773 C...Prepare for additional variable choices in 2 -> 3.
7774         IF(ISTSB.EQ.5) THEN
7775           VINT(201)=0D0
7776           IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
7777           VINT(206)=VINT(201)
7778           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
7779           VINT(204)=PMAS(23,1)
7780           IF(ISUB.EQ.124.OR.ISUB.EQ.351) VINT(204)=PMAS(24,1)
7781           IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
7782           IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182
7783      &    .OR.ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
7784      &         VINT(204)=VINT(201)
7785           VINT(209)=VINT(204)
7786           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
7787         ENDIF
7788  
7789 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
7790         IPEAK7=0
7791         NPTS(1)=2+2*MINT(72)
7792         IF(MINT(47).EQ.1) THEN
7793           IF(ISTSB.EQ.1.OR.ISTSB.EQ.2) NPTS(1)=1
7794         ELSEIF(MINT(47).GE.5) THEN
7795           IF(ISTSB.LE.2.OR.ISTSB.GT.5) THEN
7796             NPTS(1)=NPTS(1)+1
7797             IPEAK7=1
7798           ENDIF
7799         ENDIF
7800         NPTS(2)=1
7801         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
7802           IF(MINT(47).GE.2) NPTS(2)=2
7803           IF(MINT(47).GE.5) NPTS(2)=3
7804         ENDIF
7805         NPTS(3)=1
7806         IF(MINT(47).EQ.4.OR.MINT(47).EQ.5) THEN
7807           NPTS(3)=3
7808           IF(MINT(45).EQ.3) NPTS(3)=NPTS(3)+1
7809           IF(MINT(46).EQ.3) NPTS(3)=NPTS(3)+1
7810         ENDIF
7811         NPTS(4)=1
7812         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5
7813         NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
7814  
7815 C...Reset coefficients of cross-section weighting.
7816         DO 120 J=1,20
7817           COEF(ISUB,J)=0D0
7818   120   CONTINUE
7819         IF(ISUB.EQ.194.OR.ISUB.EQ.195.OR.(ISUB.GE.361
7820      &   .AND.ISUB.LE.380)) THEN
7821           DO 125 J=1,2
7822             COEFX(ISUB,J)=0D0
7823  125      CONTINUE
7824         ENDIF
7825         COEF(ISUB,1)=1D0
7826         COEF(ISUB,8)=0.5D0
7827         COEF(ISUB,9)=0.5D0
7828         COEF(ISUB,13)=1D0
7829         COEF(ISUB,18)=1D0
7830         MCTH=0
7831         MTAUP=0
7832         METAUP=0
7833         VINT(23)=0D0
7834         VINT(26)=0D0
7835         SIGSAM=0D0
7836  
7837 C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
7838 C...in grid of phase space points.
7839         CALL PYKLIM(1)
7840         METAU=MINT(51)
7841         NACC=0
7842         DO 150 ITRY=1,NTRY
7843           MINT(51)=0
7844           IF(METAU.EQ.1) GOTO 150
7845           IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
7846             MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
7847             IF(MINT(72).LE.2.AND.MTAU.GT.2+2*MINT(72)) THEN
7848               MTAU=7
7849             ELSEIF(MINT(72).EQ.3.AND.IPEAK7.EQ.0.AND.MTAU.GE.7) THEN
7850               MTAU=MTAU+1              
7851             ENDIF
7852             RTAU=0.5D0
7853 C...Special case when both resonances have same mass,
7854 C...as is often the case in process 194.
7855 c           IF(MINT(72).GE.2) THEN
7856 c             IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LT.
7857 c    &        0.01D0*(PMAS(KCR2,1)+PMAS(KCR1,1))) THEN
7858 c               IF(MTAU.EQ.3.OR.MTAU.EQ.4) THEN
7859 c                 RTAU=0.4D0
7860 c               ELSEIF(MTAU.EQ.5.OR.MTAU.EQ.6) THEN
7861 c                 RTAU=0.6D0
7862 c               ENDIF
7863 c             ENDIF
7864 c           ENDIF
7865             CALL PYKMAP(1,MTAU,RTAU)
7866             IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
7867             METAUP=MINT(51)
7868           ENDIF
7869           IF(METAUP.EQ.1) GOTO 150
7870           IF(ISTSB.GE.3.AND.ISTSB.LE.5.AND.MOD(ITRY-1,NPTS(3)*NPTS(4))
7871      &    .EQ.0) THEN
7872             MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
7873             CALL PYKMAP(4,MTAUP,0.5D0)
7874           ENDIF
7875           IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) THEN
7876             CALL PYKLIM(2)
7877             MEYST=MINT(51)
7878           ENDIF
7879           IF(MEYST.EQ.1) GOTO 150
7880           IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
7881             MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
7882             IF(MYST.EQ.4.AND.MINT(45).NE.3) MYST=5
7883             CALL PYKMAP(2,MYST,0.5D0)
7884             CALL PYKLIM(3)
7885             MECTH=MINT(51)
7886           ENDIF
7887           IF(MECTH.EQ.1) GOTO 150
7888           IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
7889             MCTH=1+MOD(ITRY-1,NPTS(4))
7890             CALL PYKMAP(3,MCTH,0.5D0)
7891           ENDIF
7892           IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1D0-VINT(23)**2)
7893  
7894 C...Store position and limits.
7895           MINT(51)=0
7896           CALL PYKLIM(0)
7897           IF(MINT(51).EQ.1) GOTO 150
7898           NACC=NACC+1
7899           MVARPT(NACC,1)=MTAU
7900           MVARPT(NACC,2)=MTAUP
7901           MVARPT(NACC,3)=MYST
7902           MVARPT(NACC,4)=MCTH
7903           DO 130 J=1,30
7904             VINTPT(NACC,J)=VINT(10+J)
7905   130     CONTINUE
7906  
7907 C...Normal case: calculate cross-section.
7908           IF(ISTSB.NE.5) THEN
7909             CALL PYSIGH(NCHN,SIGS)
7910             IF(MWTXS.EQ.1) THEN
7911               CALL PYEVWT(WTXS)
7912               SIGS=WTXS*SIGS
7913             ENDIF
7914  
7915 C..2 -> 3: find highest value out of a number of tries.
7916           ELSE
7917             SIGS=0D0
7918             DO 140 IKIN3=1,MSTP(129)
7919               CALL PYKMAP(5,0,0D0)
7920               IF(MINT(51).EQ.1) GOTO 140
7921               CALL PYSIGH(NCHN,SIGTMP)
7922               IF(MWTXS.EQ.1) THEN
7923                 CALL PYEVWT(WTXS)
7924                 SIGTMP=WTXS*SIGTMP
7925               ENDIF
7926               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
7927   140       CONTINUE
7928           ENDIF
7929  
7930 C...Store cross-section.
7931           SIGSPT(NACC)=SIGS
7932           IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
7933           IF(MSTP(122).GE.2) WRITE(MSTU(11),5200) MTAU,MYST,MCTH,MTAUP,
7934      &    VINT(21),VINT(22),VINT(23),VINT(26),SIGS
7935   150   CONTINUE
7936         IF(NACC.EQ.0) THEN
7937           WRITE(MSTU(11),5100) ISUB
7938           MSUB(ISUB)=0
7939           GOTO 460
7940         ELSEIF(SIGSAM.EQ.0D0) THEN
7941           WRITE(MSTU(11),5300) ISUB
7942           MSUB(ISUB)=0
7943           GOTO 460
7944         ENDIF
7945         IF(ISUB.NE.96) NPOSI=NPOSI+1
7946  
7947 C...Calculate integrals in tau over maximal phase space limits.
7948         TAUMIN=VINT(11)
7949         TAUMAX=VINT(31)
7950         ATAU1=LOG(TAUMAX/TAUMIN)
7951         IF(NPTS(1).GE.2) THEN
7952           ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
7953         ENDIF
7954         IF(NPTS(1).GE.4) THEN
7955           ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
7956           ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
7957      &    GAMR1
7958         ENDIF
7959         IF(NPTS(1).GE.6) THEN
7960           ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
7961           ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
7962      &    GAMR2
7963         ENDIF
7964         IF(NPTS(1).GE.8) THEN
7965           ATAU8=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR3)/(TAUMAX+TAUR3))/TAUR3
7966           ATAU9=(ATAN((TAUMAX-TAUR3)/GAMR3)-ATAN((TAUMIN-TAUR3)/GAMR3))/
7967      &    GAMR3
7968         ENDIF
7969         IF(IPEAK7.EQ.1) THEN
7970           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
7971         ENDIF
7972  
7973 C...Reset. Sum up cross-sections in points calculated.
7974         DO 320 IVAR=1,4
7975           IF(NPTS(IVAR).EQ.1) GOTO 320
7976           IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 320
7977           NBIN=NPTS(IVAR)
7978           DO 170 J1=1,NBIN
7979             NAREL(J1)=0
7980             WTREL(J1)=0D0
7981             COEFU(J1)=0D0
7982             DO 160 J2=1,NBIN
7983               WTMAT(J1,J2)=0D0
7984   160       CONTINUE
7985   170     CONTINUE
7986           DO 180 IACC=1,NACC
7987             IBIN=MVARPT(IACC,IVAR)
7988             IF(IVAR.EQ.1) THEN
7989               IF(IBIN.GT.7.AND.IPEAK7.EQ.0) THEN
7990                 IBIN=IBIN-1
7991               ELSEIF(IBIN.EQ.7.AND.IPEAK7.EQ.1.AND.MSTP(72).LT.3) THEN
7992                 IBIN=3+2*MINT(72)
7993               ENDIF
7994             ENDIF
7995             IF(IVAR.EQ.3.AND.IBIN.EQ.5.AND.MINT(45).NE.3) IBIN=4
7996             NAREL(IBIN)=NAREL(IBIN)+1
7997             WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
7998  
7999 C...Sum up tau cross-section pieces in points used.
8000             IF(IVAR.EQ.1) THEN
8001               TAU=VINTPT(IACC,11)
8002               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
8003               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
8004               IF(NBIN.GE.4) THEN
8005                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
8006                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
8007      &          ((TAU-TAUR1)**2+GAMR1**2)
8008               ENDIF
8009               IF(NBIN.GE.6) THEN
8010                 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
8011                 WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
8012      &          ((TAU-TAUR2)**2+GAMR2**2)
8013               ENDIF
8014               IF(MINT(72).LE.2.AND.IPEAK7.EQ.1) THEN
8015                 WTMAT(IBIN,3+2*MINT(72))=WTMAT(IBIN,3+2*MINT(72))
8016      &           +(ATAU1/ATAU7)*TAU/MAX(2D-10,1D0-TAU)
8017               ELSEIF(MINT(72).EQ.3.AND.IPEAK7.EQ.1) THEN
8018                 WTMAT(IBIN,7)=WTMAT(IBIN,7)
8019      &           +(ATAU1/ATAU7)*TAU/MAX(2D-10,1D0-TAU)
8020               ENDIF
8021               IF(MINT(72).EQ.3) THEN
8022                 WTMAT(IBIN,7+IPEAK7)=WTMAT(IBIN,7+IPEAK7)
8023      &           +(ATAU1/ATAU8)/(TAU+TAUR3)
8024                 WTMAT(IBIN,8+IPEAK7)=WTMAT(IBIN,8+IPEAK7)
8025      &           +(ATAU1/ATAU9)*TAU/((TAU-TAUR3)**2+GAMR3**2)
8026               ENDIF
8027 C...Sum up tau' cross-section pieces in points used.
8028             ELSEIF(IVAR.EQ.2) THEN
8029               TAU=VINTPT(IACC,11)
8030               TAUP=VINTPT(IACC,16)
8031               TAUPMN=VINTPT(IACC,6)
8032               TAUPMX=VINTPT(IACC,26)
8033               ATAUP1=LOG(TAUPMX/TAUPMN)
8034               ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
8035               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
8036               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*
8037      &        (1D0-TAU/TAUP)**3/TAUP
8038               IF(NBIN.GE.3) THEN
8039                 ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
8040                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAUP1/ATAUP3)*
8041      &          TAUP/MAX(2D-10,1D0-TAUP)
8042               ENDIF
8043  
8044 C...Sum up y* cross-section pieces in points used.
8045             ELSEIF(IVAR.EQ.3) THEN
8046               YST=VINTPT(IACC,12)
8047               YSTMIN=VINTPT(IACC,2)
8048               YSTMAX=VINTPT(IACC,22)
8049               AYST0=YSTMAX-YSTMIN
8050               AYST1=0.5D0*(YSTMAX-YSTMIN)**2
8051               AYST2=AYST1
8052               AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
8053               WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
8054               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST2)*(YSTMAX-YST)
8055               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
8056               IF(MINT(45).EQ.3) THEN
8057                 TAUE=VINTPT(IACC,11)
8058                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
8059                 YST0=-0.5D0*LOG(TAUE)
8060                 AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
8061      &          MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
8062                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(AYST0/AYST4)/
8063      &          MAX(1D-10,1D0-EXP(YST-YST0))
8064               ENDIF
8065               IF(MINT(46).EQ.3) THEN
8066                 TAUE=VINTPT(IACC,11)
8067                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
8068                 YST0=-0.5D0*LOG(TAUE)
8069                 AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
8070      &          MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
8071                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(AYST0/AYST5)/
8072      &          MAX(1D-10,1D0-EXP(-YST-YST0))
8073               ENDIF
8074  
8075 C...Sum up cos(theta-hat) cross-section pieces in points used.
8076             ELSE
8077               RM34=MAX(1D-20,2D0*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2)
8078               RSQM=1D0+RM34
8079               CTHMAX=SQRT(1D0-4D0*VINT(71)**2/(TAUMAX*VINT(2)))
8080               CTHMIN=-CTHMAX
8081               IF(CTHMAX.GT.0.9999D0) RM34=MAX(RM34,2D0*VINT(71)**2/
8082      &        (TAUMAX*VINT(2)))
8083               ACTH1=CTHMAX-CTHMIN
8084               ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
8085               ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
8086               ACTH4=1D0/MAX(RM34,RSQM-CTHMAX)-1D0/MAX(RM34,RSQM-CTHMIN)
8087               ACTH5=1D0/MAX(RM34,RSQM+CTHMIN)-1D0/MAX(RM34,RSQM+CTHMAX)
8088               CTH=VINTPT(IACC,13)
8089               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
8090               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/
8091      &        MAX(RM34,RSQM-CTH)
8092               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/
8093      &        MAX(RM34,RSQM+CTH)
8094               WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/
8095      &        MAX(RM34,RSQM-CTH)**2
8096               WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/
8097      &        MAX(RM34,RSQM+CTH)**2
8098             ENDIF
8099   180     CONTINUE
8100  
8101 C...Check that equation system solvable.
8102           IF(MSTP(122).GE.2) WRITE(MSTU(11),5400) CVAR(IVAR)
8103           MSOLV=1
8104           WTRELS=0D0
8105           DO 190 IBIN=1,NBIN
8106             IF(MSTP(122).GE.2) WRITE(MSTU(11),5500) (WTMAT(IBIN,IRED),
8107      &      IRED=1,NBIN),WTREL(IBIN)
8108             IF(NAREL(IBIN).EQ.0) MSOLV=0
8109             WTRELS=WTRELS+WTREL(IBIN)
8110   190     CONTINUE
8111           IF(ABS(WTRELS).LT.1D-20) MSOLV=0
8112  
8113 C...Solve to find relative importance of cross-section pieces.
8114           IF(MSOLV.EQ.1) THEN
8115             DO 200 IBIN=1,NBIN
8116               WTRELN(IBIN)=MAX(0.1D0,WTREL(IBIN)/WTRELS)
8117               WTRSAV(IBIN)=WTREL(IBIN)
8118   200       CONTINUE
8119 C...Auxiliary vectors to record order of permutations
8120             DO I=1,NBIN
8121               IP(I) = I
8122               IQ(I) = I
8123             ENDDO
8124             DO 230 IRED=1,NBIN-1
8125               MROW=IRED
8126               RESMAX=ABS(WTREL(MROW))
8127 C...Find row with largest residual
8128               DO JBIN=IRED+1,NBIN
8129                 IF(RESMAX.LT.ABS(WTREL(JBIN))) THEN
8130                   MROW=JBIN
8131                   RESMAX=ABS(WTREL(MROW))
8132                 ENDIF
8133               ENDDO
8134               IF(RESMAX.LT.1D-20) THEN
8135                 MSOLV=0
8136                 GOTO 260
8137               ENDIF
8138               MCOL = IRED
8139               AMAX = ABS(WTMAT(MROW,MCOL))
8140 C...Find column with largest entry
8141               DO JBIN=IRED+1,NBIN
8142                 IF (AMAX.LT.ABS(WTMAT(MROW,JBIN))) THEN
8143                   MCOL = JBIN
8144                   AMAX = ABS(WTMAT(MROW,MCOL))
8145                 ENDIF
8146               ENDDO
8147 C...Swap rows if necessary
8148               IF(MROW.NE.IRED) THEN
8149                 DO JBIN=1,NBIN
8150                   TMPE=WTMAT(IRED,JBIN)
8151                   WTMAT(IRED,JBIN)=WTMAT(MROW,JBIN)
8152                   WTMAT(MROW,JBIN)=TMPE
8153                 ENDDO
8154                 TMPE=WTREL(IRED)
8155                 WTREL(IRED)=WTREL(MROW)
8156                 WTREL(MROW)=TMPE
8157                 MTMP=IQ(IRED)
8158                 IQ(IRED)=IQ(MROW)
8159                 IQ(MROW)=MTMP
8160               ENDIF
8161 C...Swap columns if necessary
8162               IF(MCOL.NE.IRED) THEN
8163                 DO JBIN=1,NBIN
8164                   TMPE=WTMAT(JBIN,IRED)
8165                   WTMAT(JBIN,IRED)=WTMAT(JBIN,MCOL)
8166                   WTMAT(JBIN,MCOL)=TMPE
8167                 ENDDO
8168                 MTMP=IP(IRED)
8169                 IP(IRED)=IP(MCOL)
8170                 IP(MCOL)=MTMP
8171               ENDIF
8172 C...Begin eliminating equations
8173               DO 220 IBIN=IRED+1,NBIN
8174                 IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
8175                   MSOLV=0
8176                   GOTO 260
8177                 ENDIF
8178 C                RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
8179                 RQTU=WTMAT(IBIN,IRED)
8180                 RQTL=WTMAT(IRED,IRED)
8181 C...Switch order of operations
8182                 WTREL(IBIN)=WTREL(IBIN)-RQTU*
8183      $            (WTREL(IRED)/RQTL)
8184                 DO 210 ICOE=IRED,NBIN
8185                    WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-
8186      $                RQTU*(WTMAT(IRED,ICOE)/RQTL)
8187   210           CONTINUE
8188   220         CONTINUE
8189   230       CONTINUE
8190             DO 250 IRED=NBIN,1,-1
8191               DO 240 ICOE=IRED+1,NBIN
8192                 WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
8193   240         CONTINUE
8194               IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
8195                 MSOLV=0
8196                 GOTO 260
8197               ENDIF
8198               COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
8199               TEMPC(IRED)=COEFU(IRED)
8200   250       CONTINUE
8201 C...Return to original order
8202             DO IBIN=1,NBIN
8203               MTMP=IP(IBIN)
8204               COEFU(MTMP)=TEMPC(IBIN)
8205             ENDDO
8206           ENDIF
8207  
8208 C...Share evenly if failure.
8209   260     IF(MSOLV.EQ.0) THEN
8210             DO 270 IBIN=1,NBIN
8211               COEFU(IBIN)=1D0
8212               WTRELN(IBIN)=0.1D0
8213               IF(WTRELS.GT.0D0) WTRELN(IBIN)=MAX(0.1D0,
8214      &        WTRSAV(IBIN)/WTRELS)
8215   270       CONTINUE
8216           ENDIF
8217  
8218 C...Normalize coefficients, with piece shared democratically.
8219           COEFSU=0D0
8220           WTRELS=0D0
8221           DO 280 IBIN=1,NBIN
8222             COEFU(IBIN)=MAX(0D0,COEFU(IBIN))
8223             COEFSU=COEFSU+COEFU(IBIN)
8224             WTRELS=WTRELS+WTRELN(IBIN)
8225   280     CONTINUE
8226           IF(COEFSU.GT.0D0) THEN
8227             DO 290 IBIN=1,NBIN
8228               COEFO(IBIN)=PARP(122)/NBIN+(1D0-PARP(122))*0.5D0*
8229      &        (COEFU(IBIN)/COEFSU+WTRELN(IBIN)/WTRELS)
8230   290       CONTINUE
8231           ELSE
8232             DO 300 IBIN=1,NBIN
8233               COEFO(IBIN)=1D0/NBIN
8234   300       CONTINUE
8235           ENDIF
8236           IF(IVAR.EQ.1) IOFF=0
8237           IF(IVAR.EQ.2) IOFF=17
8238           IF(IVAR.EQ.3) IOFF=7
8239           IF(IVAR.EQ.4) IOFF=12
8240           DO 310 IBIN=1,NBIN
8241             ICOF=IOFF+IBIN
8242             IF(IVAR.EQ.1) THEN
8243               IF(IBIN.EQ.NBIN.AND.(MINT(72).LE.2.AND.IPEAK7.EQ.1)) THEN
8244                 ICOF=7
8245               ENDIF
8246             ENDIF
8247             IF(IVAR.EQ.3.AND.IBIN.EQ.4.AND.MINT(45).NE.3) ICOF=ICOF+1
8248             IF(IVAR.EQ.1.AND.IBIN.GE.7+IPEAK7.AND.MINT(72).EQ.3) THEN
8249               COEFX(ISUB,IBIN-6-IPEAK7)=COEFO(IBIN)
8250             ELSE
8251               COEF(ISUB,ICOF)=COEFO(IBIN)
8252             ENDIF
8253   310     CONTINUE
8254           
8255           IF(MSTP(122).GE.2) WRITE(MSTU(11),5600) CVAR(IVAR),
8256      &       (COEFO(IBIN),IBIN=1,NBIN)
8257 
8258   320   CONTINUE
8259  
8260 C...Find two most promising maxima among points previously determined.
8261         DO 330 J=1,4
8262           IACCMX(J)=0
8263           SIGSMX(J)=0D0
8264   330   CONTINUE
8265         NMAX=0
8266         DO 390 IACC=1,NACC
8267           DO 340 J=1,30
8268             VINT(10+J)=VINTPT(IACC,J)
8269   340     CONTINUE
8270           IF(ISTSB.NE.5) THEN
8271             CALL PYSIGH(NCHN,SIGS)
8272             IF(MWTXS.EQ.1) THEN
8273               CALL PYEVWT(WTXS)
8274               SIGS=WTXS*SIGS
8275             ENDIF
8276           ELSE
8277             SIGS=0D0
8278             DO 350 IKIN3=1,MSTP(129)
8279               CALL PYKMAP(5,0,0D0)
8280               IF(MINT(51).EQ.1) GOTO 350
8281               CALL PYSIGH(NCHN,SIGTMP)
8282               IF(MWTXS.EQ.1) THEN
8283                 CALL PYEVWT(WTXS)
8284                 SIGTMP=WTXS*SIGTMP
8285               ENDIF
8286               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
8287   350       CONTINUE
8288           ENDIF
8289           IEQ=0
8290           DO 360 IMV=1,NMAX
8291             IF(ABS(SIGS-SIGSMX(IMV)).LT.1D-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
8292   360     CONTINUE
8293           IF(IEQ.EQ.0) THEN
8294             DO 370 IMV=NMAX,1,-1
8295               IIN=IMV+1
8296               IF(SIGS.LE.SIGSMX(IMV)) GOTO 380
8297               IACCMX(IMV+1)=IACCMX(IMV)
8298               SIGSMX(IMV+1)=SIGSMX(IMV)
8299   370       CONTINUE
8300             IIN=1
8301   380       IACCMX(IIN)=IACC
8302             SIGSMX(IIN)=SIGS
8303             IF(NMAX.LE.1) NMAX=NMAX+1
8304           ENDIF
8305   390   CONTINUE
8306  
8307 C...Read out starting position for search.
8308         IF(MSTP(122).GE.2) WRITE(MSTU(11),5700)
8309         SIGSAM=SIGSMX(1)
8310         DO 440 IMAX=1,NMAX
8311           IACC=IACCMX(IMAX)
8312           MTAU=MVARPT(IACC,1)
8313           MTAUP=MVARPT(IACC,2)
8314           MYST=MVARPT(IACC,3)
8315           MCTH=MVARPT(IACC,4)
8316           VTAU=0.5D0
8317           VYST=0.5D0
8318           VCTH=0.5D0
8319           VTAUP=0.5D0
8320  
8321 C...Starting point and step size in parameter space.
8322           DO 430 IRPT=1,2
8323             DO 420 IVAR=1,4
8324               IF(NPTS(IVAR).EQ.1) GOTO 420
8325               IF(IVAR.EQ.1) VVAR=VTAU
8326               IF(IVAR.EQ.2) VVAR=VTAUP
8327               IF(IVAR.EQ.3) VVAR=VYST
8328               IF(IVAR.EQ.4) VVAR=VCTH
8329               IF(IVAR.EQ.1) MVAR=MTAU
8330               IF(IVAR.EQ.2) MVAR=MTAUP
8331               IF(IVAR.EQ.3) MVAR=MYST
8332               IF(IVAR.EQ.4) MVAR=MCTH
8333               IF(IRPT.EQ.1) VDEL=0.1D0
8334               IF(IRPT.EQ.2) VDEL=MAX(0.01D0,MIN(0.05D0,VVAR-0.02D0,
8335      &        0.98D0-VVAR))
8336               IF(IRPT.EQ.1) VMAR=0.02D0
8337               IF(IRPT.EQ.2) VMAR=0.002D0
8338               IMOV0=1
8339               IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
8340               DO 410 IMOV=IMOV0,8
8341  
8342 C...Define new point in parameter space.
8343                 IF(IMOV.EQ.0) THEN
8344                   INEW=2
8345                   VNEW=VVAR
8346                 ELSEIF(IMOV.EQ.1) THEN
8347                   INEW=3
8348                   VNEW=VVAR+VDEL
8349                 ELSEIF(IMOV.EQ.2) THEN
8350                   INEW=1
8351                   VNEW=VVAR-VDEL
8352                 ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
8353      &            VVAR+2D0*VDEL.LT.1D0-VMAR) THEN
8354                   VVAR=VVAR+VDEL
8355                   SIGSSM(1)=SIGSSM(2)
8356                   SIGSSM(2)=SIGSSM(3)
8357                   INEW=3
8358                   VNEW=VVAR+VDEL
8359                 ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
8360      &            VVAR-2D0*VDEL.GT.VMAR) THEN
8361                   VVAR=VVAR-VDEL
8362                   SIGSSM(3)=SIGSSM(2)
8363                   SIGSSM(2)=SIGSSM(1)
8364                   INEW=1
8365                   VNEW=VVAR-VDEL
8366                 ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
8367                   VDEL=0.5D0*VDEL
8368                   VVAR=VVAR+VDEL
8369                   SIGSSM(1)=SIGSSM(2)
8370                   INEW=2
8371                   VNEW=VVAR
8372                 ELSE
8373                   VDEL=0.5D0*VDEL
8374                   VVAR=VVAR-VDEL
8375                   SIGSSM(3)=SIGSSM(2)
8376                   INEW=2
8377                   VNEW=VVAR
8378                 ENDIF
8379  
8380 C...Convert to relevant variables and find derived new limits.
8381                 ILERR=0
8382                 IF(IVAR.EQ.1) THEN
8383                   VTAU=VNEW
8384                   CALL PYKMAP(1,MTAU,VTAU)
8385                   IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
8386                     CALL PYKLIM(4)
8387                     IF(MINT(51).EQ.1) ILERR=1
8388                   ENDIF
8389                 ENDIF
8390                 IF(IVAR.LE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5.AND.
8391      &          ILERR.EQ.0) THEN
8392                   IF(IVAR.EQ.2) VTAUP=VNEW
8393                   CALL PYKMAP(4,MTAUP,VTAUP)
8394                 ENDIF
8395                 IF(IVAR.LE.2.AND.ILERR.EQ.0) THEN
8396                   CALL PYKLIM(2)
8397                   IF(MINT(51).EQ.1) ILERR=1
8398                 ENDIF
8399                 IF(IVAR.LE.3.AND.ILERR.EQ.0) THEN
8400                   IF(IVAR.EQ.3) VYST=VNEW
8401                   CALL PYKMAP(2,MYST,VYST)
8402                   CALL PYKLIM(3)
8403                   IF(MINT(51).EQ.1) ILERR=1
8404                 ENDIF
8405                 IF((ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6).AND.
8406      &          ILERR.EQ.0) THEN
8407                   IF(IVAR.EQ.4) VCTH=VNEW
8408                   CALL PYKMAP(3,MCTH,VCTH)
8409                 ENDIF
8410                 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
8411  
8412 C...Evaluate cross-section. Save new maximum. Final maximum.
8413                 IF(ILERR.NE.0) THEN
8414                    SIGS=0.
8415                 ELSEIF(ISTSB.NE.5) THEN
8416                   CALL PYSIGH(NCHN,SIGS)
8417                   IF(MWTXS.EQ.1) THEN
8418                     CALL PYEVWT(WTXS)
8419                     SIGS=WTXS*SIGS
8420                   ENDIF
8421                 ELSE
8422                   SIGS=0D0
8423                   DO 400 IKIN3=1,MSTP(129)
8424                     CALL PYKMAP(5,0,0D0)
8425                     IF(MINT(51).EQ.1) GOTO 400
8426                     CALL PYSIGH(NCHN,SIGTMP)
8427                     IF(MWTXS.EQ.1) THEN
8428                         CALL PYEVWT(WTXS)
8429                         SIGTMP=WTXS*SIGTMP
8430                     ENDIF
8431                     IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
8432   400             CONTINUE
8433                 ENDIF
8434                 SIGSSM(INEW)=SIGS
8435                 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
8436                 IF(MSTP(122).GE.2) WRITE(MSTU(11),5800) IMAX,IVAR,MVAR,
8437      &          IMOV,VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
8438   410         CONTINUE
8439   420       CONTINUE
8440   430     CONTINUE
8441   440   CONTINUE
8442         IF(MSTP(121).EQ.1) SIGSAM=PARP(121)*SIGSAM
8443         XSEC(ISUB,1)=1.05D0*SIGSAM
8444 C...Add extra headroom for UED
8445         IF(ISUB.GT.310.AND.ISUB.LT.320) XSEC(ISUB,1)=XSEC(ISUB,1)*1.1D0
8446         IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
8447      &  WTGAGA*XSEC(ISUB,1)
8448   450   CONTINUE
8449         IF(MSTP(173).EQ.1.AND.ISUB.NE.96) XSEC(ISUB,1)=
8450      &  PARP(174)*XSEC(ISUB,1)
8451         IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
8452   460 CONTINUE
8453       MINT(51)=0
8454  
8455 C...Print summary table.
8456       IF(MINT(121).EQ.1.AND.NPOSI.EQ.0) THEN
8457         IF(MSTP(127).NE.1) THEN
8458           WRITE(MSTU(11),5900)
8459           CALL PYSTOP(1)
8460         ELSE
8461           WRITE(MSTU(11),6400)
8462           MSTI(53)=1
8463         ENDIF
8464       ENDIF
8465       IF(MSTP(122).GE.1) THEN
8466         WRITE(MSTU(11),6000)
8467         WRITE(MSTU(11),6100)
8468         DO 470 ISUB=1,500
8469           IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 470
8470           IF(ISUB.EQ.96.AND.MINT(50).EQ.0) GOTO 470
8471           IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0)
8472      &    GOTO 470
8473           IF(ISUB.EQ.96.AND.MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 470
8474           IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13
8475      &    .OR.ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 470
8476           IF(MSUB(95).EQ.1.AND.ISUB.GE.381.AND.ISUB.LE.386) GOTO 470
8477           WRITE(MSTU(11),6200) ISUB,PROC(ISUB),XSEC(ISUB,1)
8478   470   CONTINUE
8479         WRITE(MSTU(11),6300)
8480       ENDIF
8481  
8482 C...Format statements for maximization results.
8483  5000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
8484      &'subprocess no',I4/1X,'Coefficient modes     tau',10X,'y*',9X,
8485      &'cth',9X,'tau''',7X,'sigma')
8486  5100 FORMAT(1X,'Warning: requested subprocess ',I3,' has no allowed ',
8487      &'phase space.'/1X,'Process switched off!')
8488  5200 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,D12.4)
8489  5300 FORMAT(1X,'Warning: requested subprocess ',I3,' has vanishing ',
8490      &'cross-section.'/1X,'Process switched off!')
8491  5400 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
8492  5500 FORMAT(1X,1P,10D11.3)
8493  5600 FORMAT(1X,'Result for ',A4,':',9F9.4)
8494  5700 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
8495      &'MOD MOV   VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
8496  5800 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,D12.4)
8497  5900 FORMAT(1X,'Error: no requested process has non-vanishing ',
8498      &'cross-section.'/1X,'Execution stopped!')
8499  6000 FORMAT(/1X,8('*'),1X,'PYMAXI: summary of differential ',
8500      &'cross-section maximum search',1X,8('*'))
8501  6100 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I  ISUB  ',
8502      &'Subprocess name',15X,'I  Maximum value  I'/11X,'I',38X,'I',
8503      &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
8504  6200 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,D12.4,3X,'I')
8505  6300 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))
8506  6400 FORMAT(1X,'Error: no requested process has non-vanishing ',
8507      &'cross-section.'/
8508      &1X,'Execution will stop if you try to generate events.')
8509  
8510       RETURN
8511       END
8512  
8513 C*********************************************************************
8514  
8515 C...PYPILE
8516 C...Initializes multiplicity distribution and selects mutliplicity
8517 C...of pileup events, i.e. several events occuring at the same
8518 C...beam crossing.
8519  
8520       SUBROUTINE PYPILE(MPILE)
8521  
8522 C...Double precision and integer declarations.
8523       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8524       IMPLICIT INTEGER(I-N)
8525       INTEGER PYK,PYCHGE,PYCOMP
8526 C...Commonblocks.
8527       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8528       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8529       COMMON/PYINT1/MINT(400),VINT(400)
8530       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
8531       SAVE /PYDAT1/,/PYPARS/,/PYINT1/,/PYINT7/
8532 C...Local arrays and saved variables.
8533       DIMENSION WTI(0:200)
8534       SAVE IMIN,IMAX,WTI,WTS
8535  
8536 C...Sum of allowed cross-sections for pileup events.
8537       IF(MPILE.EQ.1) THEN
8538         VINT(131)=SIGT(0,0,5)
8539         IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
8540         IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
8541         IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
8542         IF(MSTP(133).LE.0) RETURN
8543  
8544 C...Initialize multiplicity distribution at maximum.
8545         XNAVE=VINT(131)*PARP(131)
8546         IF(XNAVE.GT.120D0) WRITE(MSTU(11),5000) XNAVE
8547         INAVE=MAX(1,MIN(200,NINT(XNAVE)))
8548         WTI(INAVE)=1D0
8549         WTS=WTI(INAVE)
8550         WTN=WTI(INAVE)*INAVE
8551  
8552 C...Find shape of multiplicity distribution below maximum.
8553         IMIN=INAVE
8554         DO 100 I=INAVE-1,1,-1
8555           IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
8556           IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
8557           IF(WTI(I).LT.1D-6) GOTO 110
8558           WTS=WTS+WTI(I)
8559           WTN=WTN+WTI(I)*I
8560           IMIN=I
8561   100   CONTINUE
8562  
8563 C...Find shape of multiplicity distribution above maximum.
8564   110   IMAX=INAVE
8565         DO 120 I=INAVE+1,200
8566           IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
8567           IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
8568           IF(WTI(I).LT.1D-6) GOTO 130
8569           WTS=WTS+WTI(I)
8570           WTN=WTN+WTI(I)*I
8571           IMAX=I
8572   120   CONTINUE
8573   130   VINT(132)=XNAVE
8574         VINT(133)=WTN/WTS
8575         IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
8576      &  WTS/(WTS+WTI(1)/XNAVE)
8577         IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1D0
8578         IF(MSTP(133).GE.2) VINT(134)=XNAVE
8579  
8580 C...Pick multiplicity of pileup events.
8581       ELSE
8582         IF(MSTP(133).LE.0) THEN
8583           MINT(81)=MAX(1,MSTP(134))
8584         ELSE
8585           WTR=WTS*PYR(0)
8586           DO 140 I=IMIN,IMAX
8587             MINT(81)=I
8588             WTR=WTR-WTI(I)
8589             IF(WTR.LE.0D0) GOTO 150
8590   140     CONTINUE
8591   150     CONTINUE
8592         ENDIF
8593       ENDIF
8594  
8595 C...Format statement for error message.
8596  5000 FORMAT(1X,'Warning: requested average number of events per bunch',
8597      &'crossing too large, ',1P,D12.4)
8598  
8599       RETURN
8600       END
8601  
8602 C*********************************************************************
8603  
8604 C...PYSAVE
8605 C...Saves and restores parameter and cross section values for the
8606 C...3 gamma-p and 6 (or 4, or 9, or 13) gamma-gamma alternatives.
8607 C...Also makes random choice between alternatives.
8608  
8609       SUBROUTINE PYSAVE(ISAVE,IGA)
8610  
8611 C...Double precision and integer declarations.
8612       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8613       IMPLICIT INTEGER(I-N)
8614       INTEGER PYK,PYCHGE,PYCOMP
8615 C...Commonblocks.
8616       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8617       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8618       COMMON/PYINT1/MINT(400),VINT(400)
8619       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
8620       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8621       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
8622       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT7/
8623 C...Local arrays and saved variables.
8624       DIMENSION NCP(15),NSUBCP(15,20),MSUBCP(15,20),COEFCP(15,20,20),
8625      &NGENCP(15,0:20,3),XSECCP(15,0:20,3),SIGTCP(15,0:6,0:6,0:5),
8626      &INTCP(15,20),RECP(15,20)
8627       SAVE NCP,NSUBCP,MSUBCP,COEFCP,NGENCP,XSECCP,SIGTCP,INTCP,RECP
8628  
8629 C...Save list of subprocesses and cross-section information.
8630       IF(ISAVE.EQ.1) THEN
8631         ICP=0
8632         DO 120 I=1,500
8633           IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120
8634           ICP=ICP+1
8635           NSUBCP(IGA,ICP)=I
8636           MSUBCP(IGA,ICP)=MSUB(I)
8637           DO 100 J=1,20
8638             COEFCP(IGA,ICP,J)=COEF(I,J)
8639   100     CONTINUE
8640           DO 110 J=1,3
8641             NGENCP(IGA,ICP,J)=NGEN(I,J)
8642             XSECCP(IGA,ICP,J)=XSEC(I,J)
8643   110     CONTINUE
8644   120   CONTINUE
8645         NCP(IGA)=ICP
8646         DO 130 J=1,3
8647           NGENCP(IGA,0,J)=NGEN(0,J)
8648           XSECCP(IGA,0,J)=XSEC(0,J)
8649   130   CONTINUE
8650         DO 160 I1=0,6
8651           DO 150 I2=0,6
8652             DO 140 J=0,5
8653               SIGTCP(IGA,I1,I2,J)=SIGT(I1,I2,J)
8654   140       CONTINUE
8655   150     CONTINUE
8656   160   CONTINUE
8657  
8658 C...Save various common process variables.
8659         DO 170 J=1,10
8660           INTCP(IGA,J)=MINT(40+J)
8661   170   CONTINUE
8662         INTCP(IGA,11)=MINT(101)
8663         INTCP(IGA,12)=MINT(102)
8664         INTCP(IGA,13)=MINT(107)
8665         INTCP(IGA,14)=MINT(108)
8666         INTCP(IGA,15)=MINT(123)
8667         RECP(IGA,1)=CKIN(3)
8668         RECP(IGA,2)=VINT(318)
8669  
8670 C...Save cross-section information only.
8671       ELSEIF(ISAVE.EQ.2) THEN
8672         DO 190 ICP=1,NCP(IGA)
8673           I=NSUBCP(IGA,ICP)
8674           DO 180 J=1,3
8675             NGENCP(IGA,ICP,J)=NGEN(I,J)
8676             XSECCP(IGA,ICP,J)=XSEC(I,J)
8677   180     CONTINUE
8678   190   CONTINUE
8679         DO 200 J=1,3
8680           NGENCP(IGA,0,J)=NGEN(0,J)
8681           XSECCP(IGA,0,J)=XSEC(0,J)
8682   200   CONTINUE
8683  
8684 C...Choose between allowed alternatives.
8685       ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN
8686         IF(ISAVE.EQ.4) THEN
8687           XSUMCP=0D0
8688           DO 210 IG=1,MINT(121)
8689             XSUMCP=XSUMCP+XSECCP(IG,0,1)
8690   210     CONTINUE
8691           XSUMCP=XSUMCP*PYR(0)
8692           DO 220 IG=1,MINT(121)
8693             IGA=IG
8694             XSUMCP=XSUMCP-XSECCP(IG,0,1)
8695             IF(XSUMCP.LE.0D0) GOTO 230
8696   220     CONTINUE
8697   230     CONTINUE
8698         ENDIF
8699  
8700 C...Restore cross-section information.
8701         DO 240 I=1,500
8702           MSUB(I)=0
8703   240   CONTINUE
8704         DO 270 ICP=1,NCP(IGA)
8705           I=NSUBCP(IGA,ICP)
8706           MSUB(I)=MSUBCP(IGA,ICP)
8707           DO 250 J=1,20
8708             COEF(I,J)=COEFCP(IGA,ICP,J)
8709   250     CONTINUE
8710           DO 260 J=1,3
8711             NGEN(I,J)=NGENCP(IGA,ICP,J)
8712             XSEC(I,J)=XSECCP(IGA,ICP,J)
8713   260     CONTINUE
8714   270   CONTINUE
8715         DO 280 J=1,3
8716           NGEN(0,J)=NGENCP(IGA,0,J)
8717           XSEC(0,J)=XSECCP(IGA,0,J)
8718   280   CONTINUE
8719         DO 310 I1=0,6
8720           DO 300 I2=0,6
8721             DO 290 J=0,5
8722               SIGT(I1,I2,J)=SIGTCP(IGA,I1,I2,J)
8723   290       CONTINUE
8724   300     CONTINUE
8725   310   CONTINUE
8726  
8727 C...Restore various common process variables.
8728         DO 320 J=1,10
8729           MINT(40+J)=INTCP(IGA,J)
8730   320   CONTINUE
8731         MINT(101)=INTCP(IGA,11)
8732         MINT(102)=INTCP(IGA,12)
8733         MINT(107)=INTCP(IGA,13)
8734         MINT(108)=INTCP(IGA,14)
8735         MINT(123)=INTCP(IGA,15)
8736         CKIN(3)=RECP(IGA,1)
8737         CKIN(1)=2D0*CKIN(3)
8738         VINT(318)=RECP(IGA,2)
8739  
8740 C...Sum up cross-section info (for PYSTAT).
8741       ELSEIF(ISAVE.EQ.5) THEN
8742         DO 330 I=1,500
8743           MSUB(I)=0
8744           NGEN(I,1)=0
8745           NGEN(I,3)=0
8746           XSEC(I,3)=0D0
8747   330   CONTINUE
8748         NGEN(0,1)=0
8749         NGEN(0,2)=0
8750         NGEN(0,3)=0
8751         XSEC(0,3)=0
8752         DO 350 IG=1,MINT(121)
8753           DO 340 ICP=1,NCP(IG)
8754             I=NSUBCP(IG,ICP)
8755             IF(MSUBCP(IG,ICP).EQ.1) MSUB(I)=1
8756             NGEN(I,1)=NGEN(I,1)+NGENCP(IG,ICP,1)
8757             NGEN(I,3)=NGEN(I,3)+NGENCP(IG,ICP,3)
8758             XSEC(I,3)=XSEC(I,3)+XSECCP(IG,ICP,3)
8759   340     CONTINUE
8760           NGEN(0,1)=NGEN(0,1)+NGENCP(IG,0,1)
8761           NGEN(0,2)=NGEN(0,2)+NGENCP(IG,0,2)
8762           NGEN(0,3)=NGEN(0,3)+NGENCP(IG,0,3)
8763           XSEC(0,3)=XSEC(0,3)+XSECCP(IG,0,3)
8764   350   CONTINUE
8765       ENDIF
8766  
8767       RETURN
8768       END
8769  
8770 C*********************************************************************
8771  
8772 C...PYGAGA
8773 C...For lepton beams it gives photon-hadron or photon-photon systems
8774 C...to be treated with the ordinary machinery and combines this with a
8775 C...description of the lepton -> lepton + photon branching.
8776  
8777       SUBROUTINE PYGAGA(IGAGA,WTGAGA)
8778  
8779 C...Double precision and integer declarations.
8780       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
8781       IMPLICIT INTEGER(I-N)
8782       INTEGER PYK,PYCHGE,PYCOMP
8783 C...Commonblocks.
8784       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
8785       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
8786       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
8787       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
8788       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
8789       COMMON/PYINT1/MINT(400),VINT(400)
8790       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
8791       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
8792      &/PYINT5/
8793 C...Local variables and data statement.
8794       DIMENSION PMS(2),XMIN(2),XMAX(2),Q2MIN(2),Q2MAX(2),PMC(3),
8795      &X(2),Q2(2),Y(2),THETA(2),PHI(2),PT(2),BETA(3)
8796       SAVE PMS,XMIN,XMAX,Q2MIN,Q2MAX,PMC,X,Q2,THETA,PHI,PT,W2MIN
8797       DATA EPS/1D-4/
8798  
8799 C...Initialize generation of photons inside leptons.
8800       IF(IGAGA.EQ.1) THEN
8801  
8802 C...Save quantities on incoming lepton system.
8803         VINT(301)=VINT(1)
8804         VINT(302)=VINT(2)
8805         PMS(1)=VINT(303)**2
8806         IF(MINT(141).EQ.0) PMS(1)=SIGN(VINT(3)**2,VINT(3))
8807         PMS(2)=VINT(304)**2
8808         IF(MINT(142).EQ.0) PMS(2)=SIGN(VINT(4)**2,VINT(4))
8809         PMC(3)=VINT(302)-PMS(1)-PMS(2)
8810         W2MIN=MAX(CKIN(77),2D0*CKIN(3),2D0*CKIN(5))**2
8811  
8812 C...Calculate range of x and Q2 values allowed in generation.
8813         DO 100 I=1,2
8814           PMC(I)=VINT(302)+PMS(I)-PMS(3-I)
8815           IF(MINT(140+I).NE.0) THEN
8816             XMIN(I)=MAX(CKIN(59+2*I),EPS)
8817             XMAX(I)=MIN(CKIN(60+2*I),1D0-2D0*VINT(301)*SQRT(PMS(I))/
8818      &      PMC(I),1D0-EPS)
8819             YMIN=MAX(CKIN(71+2*I),EPS)
8820             YMAX=MIN(CKIN(72+2*I),1D0-EPS)
8821             IF(CKIN(64+2*I).GT.0D0) XMIN(I)=MAX(XMIN(I),
8822      &      (YMIN*PMC(3)-CKIN(64+2*I))/PMC(I))
8823             XMAX(I)=MIN(XMAX(I),(YMAX*PMC(3)-CKIN(63+2*I))/PMC(I))
8824             THEMIN=MAX(CKIN(67+2*I),0D0)
8825             THEMAX=MIN(CKIN(68+2*I),PARU(1))
8826             IF(CKIN(68+2*I).LT.0D0) THEMAX=PARU(1)
8827             Q2MIN(I)=MAX(CKIN(63+2*I),XMIN(I)**2*PMS(I)/(1D0-XMIN(I))+
8828      &      ((1D0-XMAX(I))*(VINT(302)-2D0*PMS(3-I))-
8829      &      2D0*PMS(I)/(1D0-XMAX(I)))*SIN(THEMIN/2D0)**2,0D0)
8830             Q2MAX(I)=XMAX(I)**2*PMS(I)/(1D0-XMAX(I))+
8831      &      ((1D0-XMIN(I))*(VINT(302)-2D0*PMS(3-I))-
8832      &      2D0*PMS(I)/(1D0-XMIN(I)))*SIN(THEMAX/2D0)**2
8833             IF(CKIN(64+2*I).GT.0D0) Q2MAX(I)=MIN(CKIN(64+2*I),Q2MAX(I))
8834 C...W limits when lepton on one side only.
8835             IF(MINT(143-I).EQ.0) THEN
8836               XMIN(I)=MAX(XMIN(I),(W2MIN-PMS(3-I))/PMC(I))
8837               IF(CKIN(78).GT.0D0) XMAX(I)=MIN(XMAX(I),
8838      &        (CKIN(78)**2-PMS(3-I))/PMC(I))
8839             ENDIF
8840           ENDIF
8841   100   CONTINUE
8842  
8843 C...W limits when lepton on both sides.
8844         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
8845           IF(CKIN(78).GT.0D0) XMAX(1)=MIN(XMAX(1),
8846      &    (CKIN(78)**2+PMC(3)-PMC(2)*XMIN(2))/PMC(1))
8847           IF(CKIN(78).GT.0D0) XMAX(2)=MIN(XMAX(2),
8848      &    (CKIN(78)**2+PMC(3)-PMC(1)*XMIN(1))/PMC(2))
8849           IF(IABS(MINT(141)).NE.IABS(MINT(142))) THEN
8850             XMIN(1)=MAX(XMIN(1),(PMS(1)-PMS(2)+VINT(302)*(W2MIN-
8851      &      PMS(1)-PMS(2))/(PMC(2)*XMAX(2)+PMS(1)-PMS(2)))/PMC(1))
8852             XMIN(2)=MAX(XMIN(2),(PMS(2)-PMS(1)+VINT(302)*(W2MIN-
8853      &      PMS(1)-PMS(2))/(PMC(1)*XMAX(1)+PMS(2)-PMS(1)))/PMC(2))
8854           ELSE
8855             XMIN(1)=MAX(XMIN(1),W2MIN/(VINT(302)*XMAX(2)))
8856             XMIN(2)=MAX(XMIN(2),W2MIN/(VINT(302)*XMAX(1)))
8857           ENDIF
8858         ENDIF
8859  
8860 C...Q2 and W values and photon flux weight factors for initialization.
8861       ELSEIF(IGAGA.EQ.2) THEN
8862         ISUB=MINT(1)
8863         MINT(15)=0
8864         MINT(16)=0
8865  
8866 C...W value for photon on one or both sides, and for processes
8867 C...with gamma-gamma cross section peaked at small shat.
8868         IF(MINT(141).NE.0.AND.MINT(142).EQ.0) THEN
8869           VINT(2)=VINT(302)+PMS(1)-PMC(1)*(1D0-XMAX(1))
8870         ELSEIF(MINT(141).EQ.0.AND.MINT(142).NE.0) THEN
8871           VINT(2)=VINT(302)+PMS(2)-PMC(2)*(1D0-XMAX(2))
8872         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
8873           VINT(2)=MAX(CKIN(77)**2,12D0*MAX(CKIN(3),CKIN(5))**2)
8874           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
8875         ELSE
8876           VINT(2)=XMAX(1)*XMAX(2)*VINT(302)
8877           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
8878         ENDIF
8879         VINT(1)=SQRT(MAX(0D0,VINT(2)))
8880  
8881 C...Upper estimate of photon flux weight factor.
8882 C...Initialization Q2 scale. Flag incoming unresolved photon.
8883         WTGAGA=1D0
8884         DO 110 I=1,2
8885           IF(MINT(140+I).NE.0) THEN
8886             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
8887      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
8888             IF(ISUB.EQ.99.AND.MINT(106+I).EQ.4.AND.MINT(109-I).EQ.3)
8889      &      THEN
8890               Q2INIT=5D0+Q2MIN(3-I)
8891             ELSEIF(ISUB.EQ.99.AND.MINT(106+I).EQ.4) THEN
8892               Q2INIT=PMAS(PYCOMP(113),1)**2+Q2MIN(3-I)
8893             ELSEIF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
8894               Q2INIT=MAX(CKIN(1),2D0*CKIN(3),2D0*CKIN(5))**2/3D0
8895             ELSEIF((ISUB.EQ.138.AND.I.EQ.2).OR.
8896      &      (ISUB.EQ.139.AND.I.EQ.1)) THEN
8897               Q2INIT=VINT(2)/3D0
8898             ELSEIF(ISUB.EQ.140) THEN
8899               Q2INIT=VINT(2)/2D0
8900             ELSE
8901               Q2INIT=Q2MIN(I)
8902             ENDIF
8903             VINT(2+I)=-SQRT(MAX(Q2MIN(I),MIN(Q2MAX(I),Q2INIT)))
8904             IF(MSTP(14).EQ.0.OR.(ISUB.GE.131.AND.ISUB.LE.140))
8905      &      MINT(14+I)=22
8906             VINT(306+I)=VINT(2+I)**2
8907           ENDIF
8908   110   CONTINUE
8909         VINT(320)=WTGAGA
8910  
8911 C...Update pTmin and cross section information.
8912         IF(MSTP(82).LE.1) THEN
8913           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
8914         ELSE
8915           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
8916         ENDIF
8917         VINT(149)=4D0*PTMN**2/VINT(2)
8918         VINT(154)=PTMN
8919         CALL PYXTOT
8920         VINT(318)=VINT(317)
8921  
8922 C...Generate photons inside leptons and
8923 C...calculate photon flux weight factors.
8924       ELSEIF(IGAGA.EQ.3) THEN
8925         ISUB=MINT(1)
8926         MINT(15)=0
8927         MINT(16)=0
8928  
8929 C...Generate phase space point and check against cuts.
8930         LOOP=0
8931   120   LOOP=LOOP+1
8932         DO 130 I=1,2
8933           IF(MINT(140+I).NE.0) THEN
8934 C...Pick x and Q2
8935             X(I)=XMIN(I)*(XMAX(I)/XMIN(I))**PYR(0)
8936             Q2(I)=Q2MIN(I)*(Q2MAX(I)/Q2MIN(I))**PYR(0)
8937 C...Cuts on internal consistency in x and Q2.
8938             IF(Q2(I).LT.X(I)**2*PMS(I)/(1D0-X(I))) GOTO 120
8939             IF(Q2(I).GT.(1D0-X(I))*(VINT(302)-2D0*PMS(3-I))-
8940      &      (2D0-X(I)**2)*PMS(I)/(1D0-X(I))) GOTO 120
8941 C...Cuts on y and theta.
8942             Y(I)=(PMC(I)*X(I)+Q2(I))/PMC(3)
8943             IF(Y(I).LT.CKIN(71+2*I).OR.Y(I).GT.CKIN(72+2*I)) GOTO 120
8944             RAT=((1D0-X(I))*Q2(I)-X(I)**2*PMS(I))/
8945      &      ((1D0-X(I))**2*(VINT(302)-2D0*PMS(3-I)-2D0*PMS(I)))
8946             THETA(I)=2D0*ASIN(SQRT(MAX(0D0,MIN(1D0,RAT))))
8947             IF(THETA(I).LT.CKIN(67+2*I)) GOTO 120
8948             IF(CKIN(68+2*I).GT.0D0.AND.THETA(I).GT.CKIN(68+2*I))
8949      &      GOTO 120
8950  
8951 C...Phi angle isotropic. Reconstruct pT.
8952             PHI(I)=PARU(2)*PYR(0)
8953             PT(I)=SQRT(((1D0-X(I))*PMC(I))**2/(4D0*VINT(302))-
8954      &      PMS(I))*SIN(THETA(I))
8955  
8956 C...Store info on variables selected, for documentation purposes.
8957             VINT(2+I)=-SQRT(Q2(I))
8958             VINT(304+I)=X(I)
8959             VINT(306+I)=Q2(I)
8960             VINT(308+I)=Y(I)
8961             VINT(310+I)=THETA(I)
8962             VINT(312+I)=PHI(I)
8963           ELSE
8964             VINT(304+I)=1D0
8965             VINT(306+I)=0D0
8966             VINT(308+I)=1D0
8967             VINT(310+I)=0D0
8968             VINT(312+I)=0D0
8969           ENDIF
8970   130   CONTINUE
8971  
8972 C...Cut on W combines info from two sides.
8973         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
8974           W2=-Q2(1)-Q2(2)+0.5D0*X(1)*PMC(1)*X(2)*PMC(2)/VINT(302)-
8975      &    2D0*PT(1)*PT(2)*COS(PHI(1)-PHI(2))+2D0*
8976      &    SQRT((0.5D0*X(1)*PMC(1)/VINT(301))**2+Q2(1)-PT(1)**2)*
8977      &    SQRT((0.5D0*X(2)*PMC(2)/VINT(301))**2+Q2(2)-PT(2)**2)
8978           IF(W2.LT.W2MIN) GOTO 120
8979           IF(CKIN(78).GT.0D0.AND.W2.GT.CKIN(78)**2) GOTO 120
8980           PMS1=-Q2(1)
8981           PMS2=-Q2(2)
8982         ELSEIF(MINT(141).NE.0) THEN
8983           W2=(VINT(302)+PMS(1))*X(1)+PMS(2)*(1D0-X(1))
8984           PMS1=-Q2(1)
8985           PMS2=PMS(2)
8986         ELSEIF(MINT(142).NE.0) THEN
8987           W2=(VINT(302)+PMS(2))*X(2)+PMS(1)*(1D0-X(2))
8988           PMS1=PMS(1)
8989           PMS2=-Q2(2)
8990         ENDIF
8991  
8992 C...Store kinematics info for photon(s) in subsystem cm frame.
8993         VINT(2)=W2
8994         VINT(1)=SQRT(W2)
8995         VINT(291)=0D0
8996         VINT(292)=0D0
8997         VINT(293)=0.5D0*SQRT((W2-PMS1-PMS2)**2-4D0*PMS1*PMS2)/VINT(1)
8998         VINT(294)=0.5D0*(W2+PMS1-PMS2)/VINT(1)
8999         VINT(295)=SIGN(SQRT(ABS(PMS1)),PMS1)
9000         VINT(296)=0D0
9001         VINT(297)=0D0
9002         VINT(298)=-VINT(293)
9003         VINT(299)=0.5D0*(W2+PMS2-PMS1)/VINT(1)
9004         VINT(300)=SIGN(SQRT(ABS(PMS2)),PMS2)
9005  
9006 C...Assign weight for photon flux; different for transverse and
9007 C...longitudinal photons. Flag incoming unresolved photon.
9008         WTGAGA=1D0
9009         DO 140 I=1,2
9010           IF(MINT(140+I).NE.0) THEN
9011             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
9012      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
9013             IF(MSTP(16).EQ.0) THEN
9014               XY=X(I)
9015             ELSE
9016               WTGAGA=WTGAGA*X(I)/Y(I)
9017               XY=Y(I)
9018             ENDIF
9019             IF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
9020               WTGAGA=WTGAGA*(1D0-XY)
9021             ELSEIF(I.EQ.1.AND.(ISUB.EQ.139.OR.ISUB.EQ.140)) THEN
9022               WTGAGA=WTGAGA*(1D0-XY)
9023             ELSEIF(I.EQ.2.AND.(ISUB.EQ.138.OR.ISUB.EQ.140)) THEN
9024               WTGAGA=WTGAGA*(1D0-XY)
9025             ELSE
9026               WTGAGA=WTGAGA*(0.5D0*(1D0+(1D0-XY)**2)-
9027      &        PMS(I)*XY**2/Q2(I))
9028             ENDIF
9029             IF(MINT(106+I).EQ.0) MINT(14+I)=22
9030           ENDIF
9031   140   CONTINUE
9032         VINT(319)=WTGAGA
9033         MINT(143)=LOOP
9034  
9035 C...Update pTmin and cross section information.
9036         IF(MSTP(82).LE.1) THEN
9037           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
9038         ELSE
9039           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
9040         ENDIF
9041         VINT(149)=4D0*PTMN**2/VINT(2)
9042         VINT(154)=PTMN
9043         CALL PYXTOT
9044  
9045 C...Reconstruct kinematics of photons inside leptons.
9046       ELSEIF(IGAGA.EQ.4) THEN
9047  
9048 C...Make place for incoming particles and scattered leptons.
9049         MOVE=3
9050         IF(MINT(141).NE.0.AND.MINT(142).NE.0) MOVE=4
9051         MINT(4)=MINT(4)+MOVE
9052         DO 160 I=MINT(84)-MOVE,MINT(83)+1,-1
9053           IF(K(I,1).EQ.21) THEN
9054             DO 150 J=1,5
9055               K(I+MOVE,J)=K(I,J)
9056               P(I+MOVE,J)=P(I,J)
9057               V(I+MOVE,J)=V(I,J)
9058   150       CONTINUE
9059             IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
9060      &      K(I+MOVE,3)=K(I,3)+MOVE
9061             IF(K(I,4).GT.MINT(83).AND.K(I,4).LE.MINT(84))
9062      &      K(I+MOVE,4)=K(I,4)+MOVE
9063             IF(K(I,5).GT.MINT(83).AND.K(I,5).LE.MINT(84))
9064      &      K(I+MOVE,5)=K(I,5)+MOVE
9065           ENDIF
9066   160   CONTINUE
9067         DO 170 I=MINT(84)+1,N
9068           IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
9069      &    K(I,3)=K(I,3)+MOVE
9070   170   CONTINUE
9071  
9072 C...Fill in incoming particles.
9073         DO 190 I=MINT(83)+1,MINT(83)+MOVE
9074           DO 180 J=1,5
9075             K(I,J)=0
9076             P(I,J)=0D0
9077             V(I,J)=0D0
9078   180     CONTINUE
9079   190   CONTINUE
9080         DO 200 I=1,2
9081           K(MINT(83)+I,1)=21
9082           IF(MINT(140+I).NE.0) THEN
9083             K(MINT(83)+I,2)=MINT(140+I)
9084             P(MINT(83)+I,5)=VINT(302+I)
9085           ELSE
9086             K(MINT(83)+I,2)=MINT(10+I)
9087             P(MINT(83)+I,5)=VINT(2+I)
9088           ENDIF
9089           P(MINT(83)+I,3)=0.5D0*SQRT((PMC(3)**2-4D0*PMS(1)*PMS(2))/
9090      &    VINT(302))*(-1D0)**(I+1)
9091           P(MINT(83)+I,4)=0.5D0*PMC(I)/VINT(301)
9092   200   CONTINUE
9093  
9094 C...New mother-daughter relations in documentation section.
9095         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
9096           K(MINT(83)+1,4)=MINT(83)+3
9097           K(MINT(83)+1,5)=MINT(83)+5
9098           K(MINT(83)+2,4)=MINT(83)+4
9099           K(MINT(83)+2,5)=MINT(83)+6
9100           K(MINT(83)+3,3)=MINT(83)+1
9101           K(MINT(83)+5,3)=MINT(83)+1
9102           K(MINT(83)+4,3)=MINT(83)+2
9103           K(MINT(83)+6,3)=MINT(83)+2
9104         ELSEIF(MINT(141).NE.0) THEN
9105           K(MINT(83)+1,4)=MINT(83)+3
9106           K(MINT(83)+1,5)=MINT(83)+4
9107           K(MINT(83)+2,4)=MINT(83)+5
9108           K(MINT(83)+3,3)=MINT(83)+1
9109           K(MINT(83)+4,3)=MINT(83)+1
9110           K(MINT(83)+5,3)=MINT(83)+2
9111         ELSEIF(MINT(142).NE.0) THEN
9112           K(MINT(83)+1,4)=MINT(83)+4
9113           K(MINT(83)+2,4)=MINT(83)+3
9114           K(MINT(83)+2,5)=MINT(83)+5
9115           K(MINT(83)+3,3)=MINT(83)+2
9116           K(MINT(83)+4,3)=MINT(83)+1
9117           K(MINT(83)+5,3)=MINT(83)+2
9118         ENDIF
9119  
9120 C...Fill scattered lepton(s).
9121         DO 210 I=1,2
9122           IF(MINT(140+I).NE.0) THEN
9123             LSC=MINT(83)+MIN(I+2,MOVE)
9124             K(LSC,1)=21
9125             K(LSC,2)=MINT(140+I)
9126             P(LSC,1)=PT(I)*COS(PHI(I))
9127             P(LSC,2)=PT(I)*SIN(PHI(I))
9128             P(LSC,4)=(1D0-X(I))*P(MINT(83)+I,4)
9129             P(LSC,3)=SQRT(P(LSC,4)**2-PMS(I))*COS(THETA(I))*
9130      &      (-1D0)**(I-1)
9131             P(LSC,5)=VINT(302+I)
9132           ENDIF
9133   210   CONTINUE
9134  
9135 C...Find incoming four-vectors to subprocess.
9136         K(N+1,1)=21
9137         IF(MINT(141).NE.0) THEN
9138           DO 220 J=1,4
9139             P(N+1,J)=P(MINT(83)+1,J)-P(MINT(83)+3,J)
9140   220     CONTINUE
9141         ELSE
9142           DO 230 J=1,4
9143             P(N+1,J)=P(MINT(83)+1,J)
9144   230     CONTINUE
9145         ENDIF
9146         K(N+2,1)=21
9147         IF(MINT(142).NE.0) THEN
9148           DO 240 J=1,4
9149             P(N+2,J)=P(MINT(83)+2,J)-P(MINT(83)+MOVE,J)
9150   240     CONTINUE
9151         ELSE
9152           DO 250 J=1,4
9153             P(N+2,J)=P(MINT(83)+2,J)
9154   250     CONTINUE
9155         ENDIF
9156  
9157 C...Define boost and rotation between hadronic subsystem and
9158 C...collision rest frame; boost hadronic subsystem to this frame.
9159         DO 260 J=1,3
9160           BETA(J)=(P(N+1,J)+P(N+2,J))/(P(N+1,4)+P(N+2,4))
9161   260   CONTINUE
9162         CALL PYROBO(N+1,N+2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
9163         BPHI=PYANGL(P(N+1,1),P(N+1,2))
9164         CALL PYROBO(N+1,N+2,0D0,-BPHI,0D0,0D0,0D0)
9165         BTHETA=PYANGL(P(N+1,3),P(N+1,1))
9166         CALL PYROBO(MINT(83)+MOVE+1,N,BTHETA,BPHI,BETA(1),BETA(2),
9167      &  BETA(3))
9168  
9169 C...Add on scattered leptons to final state.
9170         DO 280 I=1,2
9171           IF(MINT(140+I).NE.0) THEN
9172             LSC=MINT(83)+MIN(I+2,MOVE)
9173             N=N+1
9174             DO 270 J=1,5
9175               K(N,J)=K(LSC,J)
9176               P(N,J)=P(LSC,J)
9177               V(N,J)=V(LSC,J)
9178   270       CONTINUE
9179             K(N,1)=1
9180             K(N,3)=LSC
9181           ENDIF
9182   280   CONTINUE
9183       ENDIF
9184  
9185       RETURN
9186       END
9187  
9188 C*********************************************************************
9189  
9190 C...PYRAND
9191 C...Generates quantities characterizing the high-pT scattering at the
9192 C...parton level according to the matrix elements. Chooses incoming,
9193 C...reacting partons, their momentum fractions and one of the possible
9194 C...subprocesses.
9195  
9196       SUBROUTINE PYRAND
9197  
9198 C...Double precision and integer declarations.
9199       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
9200       IMPLICIT INTEGER(I-N)
9201       INTEGER PYK,PYCHGE,PYCOMP
9202 C...Parameter statement to help give large particle numbers.
9203       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
9204      &KEXCIT=4000000,KDIMEN=5000000)
9205  
9206 C...User process initialization and event commonblocks.
9207       INTEGER MAXPUP
9208       PARAMETER (MAXPUP=100)
9209       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
9210       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
9211       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
9212      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
9213      &LPRUP(MAXPUP)
9214       INTEGER MAXNUP
9215       PARAMETER (MAXNUP=500)
9216       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
9217       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
9218       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
9219      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
9220      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
9221       SAVE /HEPRUP/,/HEPEUP/
9222  
9223 C...Commonblocks.
9224       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
9225       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
9226       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
9227       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
9228       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
9229       COMMON/PYINT1/MINT(400),VINT(400)
9230       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
9231       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
9232       COMMON/PYINT4/MWID(500),WIDS(500,5)
9233       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
9234       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
9235       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
9236       COMMON/PYTCCO/COEFX(194:380,2)
9237       COMMON/TCPARA/IRES,JRES,XMAS(3),XWID(3),YMAS(2),YWID(2)
9238       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
9239      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,/PYMSSM/,/PYTCCO/,
9240      &/TCPARA/
9241 C...Local arrays.
9242       DIMENSION XPQ(-25:25),PMM(2),PDIF(4),BHAD(4),PMMN(2)
9243  
9244 C...Parameters and data used in elastic/diffractive treatment.
9245       DATA EPS/0.0808D0/, ALP/0.25D0/, CRES/2D0/, PMRC/1.062D0/,
9246      &SMP/0.880D0/, BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
9247  
9248 C...Initial values, specifically for (first) semihard interaction.
9249       MINT(10)=0
9250       MINT(17)=0
9251       MINT(18)=0
9252       VINT(143)=1D0
9253       VINT(144)=1D0
9254       VINT(157)=0D0
9255       VINT(158)=0D0
9256       MFAIL=0
9257       IF(MSTP(171).EQ.1.AND.MSTP(172).EQ.2) MFAIL=1
9258       ISUB=0
9259       ISTSB=0
9260       LOOP=0
9261   100 LOOP=LOOP+1
9262       MINT(51)=0
9263       MINT(143)=1
9264       VINT(97)=1D0
9265  
9266 C...Start by assuming incoming photon is entering subprocess.
9267       IF(MINT(11).EQ.22) THEN
9268          MINT(15)=22
9269          VINT(307)=VINT(3)**2
9270       ENDIF
9271       IF(MINT(12).EQ.22) THEN
9272          MINT(16)=22
9273          VINT(308)=VINT(4)**2
9274       ENDIF
9275       MINT(103)=MINT(11)
9276       MINT(104)=MINT(12)
9277  
9278 C...Choice of process type - first event of pileup.
9279       INMULT=0
9280       IF(MINT(82).EQ.1.AND.ISUB.GE.91.AND.ISUB.LE.96) THEN
9281       ELSEIF(MINT(82).EQ.1) THEN
9282  
9283 C...For gamma-p or gamma-gamma first pick between alternatives.
9284         IGA=0
9285         IF(MINT(121).GT.1) CALL PYSAVE(4,IGA)
9286         MINT(122)=IGA
9287  
9288 C...For real gamma + gamma with different nature, flip at random.
9289         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
9290      &  MSTP(14).LE.10.AND.PYR(0).GT.0.5D0) THEN
9291           MINTSV=MINT(41)
9292           MINT(41)=MINT(42)
9293           MINT(42)=MINTSV
9294           MINTSV=MINT(45)
9295           MINT(45)=MINT(46)
9296           MINT(46)=MINTSV
9297           MINTSV=MINT(107)
9298           MINT(107)=MINT(108)
9299           MINT(108)=MINTSV
9300           IF(MINT(47).EQ.2.OR.MINT(47).EQ.3) MINT(47)=5-MINT(47)
9301         ENDIF
9302  
9303 C...Pick process type, possibly by user process machinery.
9304 C...(If the latter, also event will be picked here.)
9305         IF(MINT(111).GE.11.AND.IABS(IDWTUP).EQ.2.AND.LOOP.GE.2) THEN
9306           CALL UPEVNT
9307           CALL PYUPRE
9308         ELSEIF(MINT(111).GE.11.AND.IABS(IDWTUP).GE.3) THEN
9309           CALL UPEVNT
9310           CALL PYUPRE
9311           ISUB=0
9312   110     ISUB=ISUB+1
9313           IF((ISET(ISUB).NE.11.OR.KFPR(ISUB,2).NE.IDPRUP).AND.
9314      &    ISUB.LT.500) GOTO 110
9315         ELSE
9316           RSUB=XSEC(0,1)*PYR(0)
9317           DO 120 I=1,500
9318             IF(MSUB(I).NE.1.OR.I.EQ.96) GOTO 120
9319             ISUB=I
9320             RSUB=RSUB-XSEC(I,1)
9321             IF(RSUB.LE.0D0) GOTO 130
9322   120     CONTINUE
9323   130     IF(ISUB.EQ.95) ISUB=96
9324           IF(ISUB.EQ.96) INMULT=1
9325           IF(ISET(ISUB).EQ.11) THEN
9326             IDPRUP=KFPR(ISUB,2)
9327             CALL UPEVNT
9328             CALL PYUPRE
9329           ENDIF
9330         ENDIF
9331  
9332 C...Choice of inclusive process type - pileup events.
9333       ELSEIF(MINT(82).GE.2.AND.ISUB.EQ.0) THEN
9334         RSUB=VINT(131)*PYR(0)
9335         ISUB=96
9336         IF(RSUB.GT.SIGT(0,0,5)) ISUB=94
9337         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)) ISUB=93
9338         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)) ISUB=92
9339         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)+SIGT(0,0,2))
9340      &  ISUB=91
9341         IF(ISUB.EQ.96) INMULT=1
9342       ENDIF
9343  
9344 C...Choice of photon energy and flux factor inside lepton.
9345       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
9346         CALL PYGAGA(3,WTGAGA)
9347         IF(ISUB.GE.131.AND.ISUB.LE.140) THEN
9348           CKIN(3)=MAX(VINT(285),VINT(154))
9349           CKIN(1)=2D0*CKIN(3)
9350         ENDIF
9351 C...When necessary set direct/resolved photon by hand.
9352       ELSEIF(MINT(15).EQ.22.OR.MINT(16).EQ.22) THEN
9353         IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
9354         IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
9355       ENDIF
9356  
9357 C...Restrict direct*resolved processes to pTmin >= Q,
9358 C...to avoid doublecounting  with DIS.
9359       IF(MSTP(18).EQ.3.AND.ISUB.GE.131.AND.ISUB.LE.136) THEN
9360         IF(MINT(15).EQ.22) THEN
9361           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(3)))
9362         ELSE
9363           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(4)))
9364         ENDIF
9365         CKIN(1)=2D0*CKIN(3)
9366       ENDIF
9367  
9368 C...Set up for multiple interactions (may include impact parameter).
9369       IF(INMULT.EQ.1) THEN
9370         IF(MINT(35).LE.1) CALL PYMULT(2)
9371         IF(MINT(35).GE.2) CALL PYMIGN(2)
9372       ENDIF
9373  
9374 C...Loopback point for minimum bias in photon physics.
9375       LOOP2=0
9376   140 LOOP2=LOOP2+1
9377       IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)+MINT(143)
9378       IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)+MINT(143)
9379       IF(ISUB.EQ.96.AND.LOOP2.EQ.1.AND.MINT(82).EQ.1)
9380      &NGEN(97,1)=NGEN(97,1)+MINT(143)
9381       MINT(1)=ISUB
9382       ISTSB=ISET(ISUB)
9383  
9384 C...Random choice of flavour for some SUSY processes.
9385       IF(ISUB.GE.201.AND.ISUB.LE.301) THEN
9386 C...~e_L ~nu_e or ~mu_L ~nu_mu.
9387         IF(ISUB.EQ.210) THEN
9388           KFPR(ISUB,1)=KSUSY1+11+2*INT(0.5D0+PYR(0))
9389           KFPR(ISUB,2)=KFPR(ISUB,1)+1
9390 C...~nu_e ~nu_e(bar) or ~nu_mu ~nu_mu(bar).
9391         ELSEIF(ISUB.EQ.213) THEN
9392           KFPR(ISUB,1)=KSUSY1+12+2*INT(0.5D0+PYR(0))
9393           KFPR(ISUB,2)=KFPR(ISUB,1)
9394 C...~q ~chi/~g; ~q = ~d, ~u, ~s, ~c or ~b.
9395         ELSEIF(ISUB.GE.246.AND.ISUB.LE.259.AND.ISUB.NE.255.AND.
9396      &  ISUB.NE.257) THEN
9397           IF(ISUB.GE.258) THEN
9398             RKF=4D0
9399           ELSE
9400             RKF=5D0
9401           ENDIF
9402           IF(MOD(ISUB,2).EQ.0) THEN
9403             KFPR(ISUB,1)=KSUSY1+1+INT(RKF*PYR(0))
9404           ELSE
9405             KFPR(ISUB,1)=KSUSY2+1+INT(RKF*PYR(0))
9406           ENDIF
9407 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
9408         ELSEIF(ISUB.GE.271.AND.ISUB.LE.276) THEN
9409           IF(ISUB.EQ.271.OR.ISUB.EQ.274) THEN
9410             KSU1=KSUSY1
9411             KSU2=KSUSY1
9412           ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.275) THEN
9413             KSU1=KSUSY2
9414             KSU2=KSUSY2
9415           ELSEIF(PYR(0).LT.0.5D0) THEN
9416             KSU1=KSUSY1
9417             KSU2=KSUSY2
9418           ELSE
9419             KSU1=KSUSY2
9420             KSU2=KSUSY1
9421           ENDIF
9422           KFPR(ISUB,1)=KSU1+1+INT(4D0*PYR(0))
9423           KFPR(ISUB,2)=KSU2+1+INT(4D0*PYR(0))
9424 C...~q ~q(bar);  ~q = ~d, ~u, ~s, or ~c.
9425         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.279) THEN
9426           KFPR(ISUB,1)=KSUSY1+1+INT(4D0*PYR(0))
9427           KFPR(ISUB,2)=KFPR(ISUB,1)
9428         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.280) THEN
9429           KFPR(ISUB,1)=KSUSY2+1+INT(4D0*PYR(0))
9430           KFPR(ISUB,2)=KFPR(ISUB,1)
9431 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
9432         ELSEIF(ISUB.GE.281.AND.ISUB.LE.286) THEN
9433           IF(ISUB.EQ.281.OR.ISUB.EQ.284) THEN
9434             KSU1=KSUSY1
9435             KSU2=KSUSY1
9436           ELSEIF(ISUB.EQ.282.OR.ISUB.EQ.285) THEN
9437             KSU1=KSUSY2
9438             KSU2=KSUSY2
9439           ELSEIF(PYR(0).LT.0.5D0) THEN
9440             KSU1=KSUSY1
9441             KSU2=KSUSY2
9442           ELSE
9443             KSU1=KSUSY2
9444             KSU2=KSUSY1
9445           ENDIF
9446           IF(ISUB.EQ.281.OR.ISUB.LE.283) THEN
9447             RKF=5D0
9448           ELSE
9449             RKF=4D0
9450           ENDIF
9451           KFPR(ISUB,2)=KSU2+1+INT(RKF*PYR(0))
9452         ENDIF
9453       ENDIF
9454  
9455 C...Random choice of flavours for some UED processes
9456 c...The production processes can generate a doublet pair,
9457 c...a singlet pair, or a doublet + singlet.
9458       IF(ISUB.EQ.313)THEN
9459 C...q + q -> q*_Di + q*_Dj, q*_Si + q*_Sj
9460          IF(PYR(0).LE.0.1)THEN
9461             KFPR(ISUB,1)=5100001
9462          ELSE
9463             KFPR(ISUB,1)=5100002
9464          ENDIF
9465          KFPR(ISUB,2)=KFPR(ISUB,1)
9466       ELSEIF(ISUB.EQ.314.OR.ISUB.EQ.315)THEN
9467 C...g + g -> q*_D + q*_Dbar, q*_S + q*_Sbar
9468 C...q + qbar -> q*_D + q*_Dbar, q*_S + q*_Sbar
9469          IF(PYR(0).LE.0.1)THEN
9470             KFPR(ISUB,1)=5100001
9471          ELSE
9472             KFPR(ISUB,1)=5100002
9473          ENDIF
9474          KFPR(ISUB,2)=-KFPR(ISUB,1)
9475       ELSEIF(ISUB.EQ.316)THEN
9476 C...qi + qbarj -> q*_Di + q*_Sbarj
9477          IF(PYR(0).LE.0.5)THEN
9478             KFPR(ISUB,1)=5100001
9479 c Changed from private pythia6410_ued code
9480 c            KFPR(ISUB,2)=-5010001
9481             KFPR(ISUB,2)=-6100002
9482          ELSE
9483             KFPR(ISUB,1)=5100002
9484 c Changed from private pythia6410_ued code
9485 c            KFPR(ISUB,2)=-5010002
9486             KFPR(ISUB,2)=-6100001
9487          ENDIF
9488       ELSEIF(ISUB.EQ.317)THEN
9489 C...qi + qbarj -> q*_Di + q*_Dbarj, q*_Si + q*_Dbarj
9490          IF(PYR(0).LE.0.5)THEN
9491             KFPR(ISUB,1)=5100001
9492             KFPR(ISUB,2)=-5100002
9493          ELSE
9494             KFPR(ISUB,1)=5100002
9495             KFPR(ISUB,2)=-5100001
9496          ENDIF
9497       ELSEIF(ISUB.EQ.318)THEN
9498 C...qi + qj -> q*_Di + q*_Sj
9499          IF(PYR(0).LE.0.5)THEN
9500             KFPR(ISUB,1)=5100001
9501             KFPR(ISUB,2)=6100002
9502          ELSE
9503             KFPR(ISUB,1)=5100002
9504             KFPR(ISUB,2)=6100001
9505          ENDIF
9506       ENDIF
9507 
9508 C...Find resonances (explicit or implicit in cross-section).
9509       MINT(72)=0
9510       KFR1=0
9511       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
9512         KFR1=KFPR(ISUB,1)
9513       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165.OR.
9514      &  ISUB.EQ.171.OR.ISUB.EQ.176) THEN
9515         KFR1=23
9516       ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172.OR.
9517      &  ISUB.EQ.177) THEN
9518         KFR1=24
9519       ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
9520         KFR1=25
9521         IF(MSTP(46).EQ.5) THEN
9522           KFR1=89
9523           PMAS(89,1)=PARP(45)
9524           PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
9525         ENDIF
9526       ELSEIF(ISUB.EQ.481) THEN
9527         KFR1=9900001
9528       ENDIF
9529       CKMX=CKIN(2)
9530       IF(CKMX.LE.0D0) CKMX=VINT(1)
9531       KCR1=PYCOMP(KFR1)
9532       IF(KCR1.EQ.0) KFR1=0
9533       IF(KFR1.NE.0) THEN
9534         IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
9535      &  CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
9536       ENDIF
9537       IF(KFR1.NE.0) THEN
9538         TAUR1=PMAS(KCR1,1)**2/VINT(2)
9539         GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
9540         MINT(72)=1
9541         MINT(73)=KFR1
9542         VINT(73)=TAUR1
9543         VINT(74)=GAMR1
9544       ENDIF
9545       KFR2=0
9546       KFR3=0
9547       IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.ISUB.EQ.195.OR.
9548      $(ISUB.GE.361.AND.ISUB.LE.380))
9549      $THEN
9550         KFR2=23
9551         IF(ISUB.EQ.141) THEN
9552           KCR2=PYCOMP(KFR2)
9553           IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
9554      &     CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) THEN
9555             KFR2=0
9556           ELSE
9557             TAUR2=PMAS(KCR2,1)**2/VINT(2)            
9558             GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
9559             MINT(72)=2
9560             MINT(74)=KFR2
9561             VINT(75)=TAUR2
9562             VINT(76)=GAMR2
9563           ENDIF
9564 C...3 resonances at work:   rho, omega, a
9565         ELSEIF(ISUB.EQ.194.OR.(ISUB.GE.361.AND.ISUB.LE.368)
9566      &     .OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN
9567           MINT(72)=IRES
9568           IF(IRES.GE.1) THEN
9569             VINT(73)=XMAS(1)**2/VINT(2)
9570             VINT(74)=XMAS(1)*XWID(1)/VINT(2)
9571             TAUR1=VINT(73)
9572             GAMR1=VINT(74)
9573             KFR1=1
9574           ENDIF
9575           IF(IRES.GE.2) THEN
9576             VINT(75)=XMAS(2)**2/VINT(2)
9577             VINT(76)=XMAS(2)*XWID(2)/VINT(2)
9578             TAUR2=VINT(75)
9579             GAMR2=VINT(76)
9580             KFR2=2
9581           ENDIF
9582           IF(IRES.EQ.3) THEN
9583             VINT(77)=XMAS(3)**2/VINT(2)
9584             VINT(78)=XMAS(3)*XWID(3)/VINT(2)
9585             TAUR3=VINT(77)
9586             GAMR3=VINT(78)
9587             KFR3=3
9588           ENDIF
9589 C...Charged current:  rho+- and a+-
9590         ELSEIF(ISUB.EQ.195.OR.ISUB.GE.370.AND.ISUB.LE.378) THEN
9591           MINT(72)=IRES
9592           IF(JRES.GE.1) THEN
9593             VINT(73)=YMAS(1)**2/VINT(2)
9594             VINT(74)=YMAS(1)*YWID(1)/VINT(2)
9595             KFR1=1
9596             TAUR1=VINT(73)
9597             GAMR1=VINT(74)
9598           ENDIF
9599           IF(JRES.GE.2) THEN
9600             VINT(75)=YMAS(2)**2/VINT(2)
9601             VINT(76)=YMAS(2)*YWID(2)/VINT(2)
9602             KFR2=2
9603             TAUR2=VINT(73)
9604             GAMR2=VINT(74)
9605           ENDIF
9606           KFR3=0
9607         ENDIF
9608         IF(ISUB.NE.141) THEN
9609           IF(KFR3.NE.0.AND.KFR2.NE.0.AND.KFR1.NE.0) THEN
9610 
9611           ELSEIF(KFR1.NE.0.AND.KFR2.NE.0) THEN
9612             MINT(72)=2
9613           ELSEIF(KFR1.NE.0.AND.KFR3.NE.0) THEN
9614             MINT(72)=2
9615             MINT(74)=KFR3
9616             VINT(75)=TAUR3
9617             VINT(76)=GAMR3
9618           ELSEIF(KFR2.NE.0.AND.KFR3.NE.0) THEN
9619             MINT(72)=2
9620             MINT(73)=KFR2
9621             VINT(73)=TAUR2
9622             VINT(74)=GAMR2
9623             MINT(74)=KFR3
9624             VINT(75)=TAUR3
9625             VINT(76)=GAMR3
9626           ELSEIF(KFR1.NE.0) THEN
9627             MINT(72)=1
9628           ELSEIF(KFR2.NE.0) THEN
9629             MINT(72)=1
9630             MINT(73)=KFR2
9631             VINT(73)=TAUR2
9632             VINT(74)=GAMR2
9633           ELSEIF(KFR3.NE.0) THEN
9634             MINT(72)=1
9635             MINT(73)=KFR3
9636             VINT(73)=TAUR3
9637             VINT(74)=GAMR3
9638           ELSE
9639             MINT(72)=0
9640           ENDIF
9641         ELSE
9642           IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
9643 
9644           ELSEIF(KFR2.NE.0) THEN
9645             KFR1=KFR2
9646             TAUR1=TAUR2
9647             GAMR1=GAMR2
9648             MINT(72)=1
9649             MINT(73)=KFR1
9650             VINT(73)=TAUR1
9651             VINT(74)=GAMR1
9652             KFR2=0
9653           ELSE
9654             MINT(72)=0
9655           ENDIF
9656         ENDIF
9657       ENDIF
9658  
9659 C...Find product masses and minimum pT of process,
9660 C...optionally with broadening according to a truncated Breit-Wigner.
9661       VINT(63)=0D0
9662       VINT(64)=0D0
9663       MINT(71)=0
9664       VINT(71)=CKIN(3)
9665       IF(MINT(82).GE.2) VINT(71)=0D0
9666       VINT(80)=1D0
9667       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
9668         NBW=0
9669         DO 160 I=1,2
9670           PMMN(I)=0D0
9671           IF(KFPR(ISUB,I).EQ.0) THEN
9672           ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
9673      &      PARP(41)) THEN
9674             VINT(62+I)=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
9675           ELSE
9676             NBW=NBW+1
9677 C...This prevents SUSY/t particles from becoming too light.
9678             KFLW=KFPR(ISUB,I)
9679             IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
9680               KCW=PYCOMP(KFLW)
9681               PMMN(I)=PMAS(KCW,1)
9682               DO 150 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
9683                 IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
9684                   PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
9685      &            PMAS(PYCOMP(KFDP(IDC,2)),1)
9686                   IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
9687      &            PMAS(PYCOMP(KFDP(IDC,3)),1)
9688                   PMMN(I)=MIN(PMMN(I),PMSUM)
9689                 ENDIF
9690   150         CONTINUE
9691             ELSEIF(KFLW.EQ.6) THEN
9692               PMMN(I)=PMAS(24,1)+PMAS(5,1)
9693             ENDIF
9694           ENDIF
9695   160   CONTINUE
9696         IF(NBW.GE.1) THEN
9697           CKIN41=CKIN(41)
9698           CKIN43=CKIN(43)
9699           CKIN(41)=MAX(PMMN(1),CKIN(41))
9700           CKIN(43)=MAX(PMMN(2),CKIN(43))
9701           CALL PYOFSH(4,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
9702           CKIN(41)=CKIN41
9703           CKIN(43)=CKIN43
9704           IF(MINT(51).EQ.1) THEN
9705             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9706             IF(MFAIL.EQ.1) THEN
9707               MSTI(61)=1
9708               RETURN
9709             ENDIF
9710             GOTO 100
9711           ENDIF
9712           VINT(63)=PQM3**2
9713           VINT(64)=PQM4**2
9714         ENDIF
9715         IF(MIN(VINT(63),VINT(64)).LT.CKIN(6)**2) MINT(71)=1
9716         IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
9717       ENDIF
9718  
9719 C...Prepare for additional variable choices in 2 -> 3.
9720       IF(ISTSB.EQ.5) THEN
9721         VINT(201)=0D0
9722         IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
9723         VINT(206)=VINT(201)
9724         IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
9725         VINT(204)=PMAS(23,1)
9726         IF(ISUB.EQ.124.OR.ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351)
9727      &   VINT(204)=PMAS(24,1) 
9728         IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
9729         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
9730      &    ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
9731      &         VINT(204)=VINT(201)
9732         VINT(209)=VINT(204)
9733           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
9734       ENDIF
9735  
9736 C...Select incoming VDM particle (rho/omega/phi/J/psi).
9737       IF(ISTSB.NE.0.AND.(MINT(101).GE.2.OR.MINT(102).GE.2).AND.
9738      &(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7)) THEN
9739         VRN=PYR(0)*SIGT(0,0,5)
9740         IF(MINT(101).LE.1) THEN
9741           I1MN=0
9742           I1MX=0
9743         ELSE
9744           I1MN=1
9745           I1MX=MINT(101)
9746         ENDIF
9747         IF(MINT(102).LE.1) THEN
9748           I2MN=0
9749           I2MX=0
9750         ELSE
9751           I2MN=1
9752           I2MX=MINT(102)
9753         ENDIF
9754         DO 180 I1=I1MN,I1MX
9755           KFV1=110*I1+3
9756           DO 170 I2=I2MN,I2MX
9757             KFV2=110*I2+3
9758             VRN=VRN-SIGT(I1,I2,5)
9759             IF(VRN.LE.0D0) GOTO 190
9760   170     CONTINUE
9761   180   CONTINUE
9762   190   IF(MINT(101).GE.2) MINT(103)=KFV1
9763         IF(MINT(102).GE.2) MINT(104)=KFV2
9764       ENDIF
9765  
9766       IF(ISTSB.EQ.0) THEN
9767 C...Elastic scattering or single or double diffractive scattering.
9768  
9769 C...Select incoming particle (rho/omega/phi/J/psi for VDM) and mass.
9770         MINT(103)=MINT(11)
9771         MINT(104)=MINT(12)
9772         PMM(1)=VINT(3)
9773         PMM(2)=VINT(4)
9774         IF(MINT(101).GE.2.OR.MINT(102).GE.2) THEN
9775           JJ=ISUB-90
9776           VRN=PYR(0)*SIGT(0,0,JJ)
9777           IF(MINT(101).LE.1) THEN
9778             I1MN=0
9779             I1MX=0
9780           ELSE
9781             I1MN=1
9782             I1MX=MINT(101)
9783           ENDIF
9784           IF(MINT(102).LE.1) THEN
9785             I2MN=0
9786             I2MX=0
9787           ELSE
9788             I2MN=1
9789             I2MX=MINT(102)
9790           ENDIF
9791           DO 210 I1=I1MN,I1MX
9792             KFV1=110*I1+3
9793             DO 200 I2=I2MN,I2MX
9794               KFV2=110*I2+3
9795               VRN=VRN-SIGT(I1,I2,JJ)
9796               IF(VRN.LE.0D0) GOTO 220
9797   200       CONTINUE
9798   210     CONTINUE
9799   220     IF(MINT(101).GE.2) THEN
9800             MINT(103)=KFV1
9801             PMM(1)=PYMASS(KFV1)
9802           ENDIF
9803           IF(MINT(102).GE.2) THEN
9804             MINT(104)=KFV2
9805             PMM(2)=PYMASS(KFV2)
9806           ENDIF
9807         ENDIF
9808         VINT(67)=PMM(1)
9809         VINT(68)=PMM(2)
9810  
9811 C...Select mass for GVMD states (rejecting previous assignment).
9812         Q0S=4D0*PARP(15)**2
9813         Q1S=4D0*VINT(154)**2
9814         LOOP3=0
9815   230   LOOP3=LOOP3+1
9816         DO 240 JT=1,2
9817           IF(MINT(106+JT).EQ.3) THEN
9818             PS=VINT(2+JT)**2
9819             PMM(JT)=SQRT((Q0S+PS)*(Q1S+PS)/
9820      &      (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS)
9821             IF(MINT(102+JT).GE.333) PMM(JT)=PMM(JT)-
9822      &      PMAS(PYCOMP(113),1)+PMAS(PYCOMP(MINT(102+JT)),1)
9823           ENDIF
9824   240   CONTINUE
9825         IF(PMM(1)+PMM(2)+PARP(104).GE.VINT(1)) THEN
9826           IF(LOOP3.LT.100.AND.(MINT(107).EQ.3.OR.MINT(108).EQ.3))
9827      &    GOTO 230
9828           GOTO 100
9829         ENDIF
9830  
9831 C...Side/sides of diffractive system.
9832         MINT(17)=0
9833         MINT(18)=0
9834         IF(ISUB.EQ.92.OR.ISUB.EQ.94) MINT(17)=1
9835         IF(ISUB.EQ.93.OR.ISUB.EQ.94) MINT(18)=1
9836  
9837 C...Find masses of particles and minimal masses of diffractive states.
9838         DO 250 JT=1,2
9839           PDIF(JT)=PMM(JT)
9840           VINT(68+JT)=PDIF(JT)
9841           IF(MINT(16+JT).EQ.1) PDIF(JT)=PDIF(JT)+PARP(102)
9842   250   CONTINUE
9843         SH=VINT(2)
9844         SQM1=PMM(1)**2
9845         SQM2=PMM(2)**2
9846         SQM3=PDIF(1)**2
9847         SQM4=PDIF(2)**2
9848         SMRES1=(PMM(1)+PMRC)**2
9849         SMRES2=(PMM(2)+PMRC)**2
9850  
9851 C...Find elastic slope and lower limit diffractive slope.
9852         IHA=MAX(2,IABS(MINT(103))/110)
9853         IF(IHA.GE.5) IHA=1
9854         IHB=MAX(2,IABS(MINT(104))/110)
9855         IF(IHB.GE.5) IHB=1
9856         IF(ISUB.EQ.91) THEN
9857           BMN=2D0*BHAD(IHA)+2D0*BHAD(IHB)+4D0*SH**EPS-4.2D0
9858         ELSEIF(ISUB.EQ.92) THEN
9859           BMN=MAX(2D0,2D0*BHAD(IHB))
9860         ELSEIF(ISUB.EQ.93) THEN
9861           BMN=MAX(2D0,2D0*BHAD(IHA))
9862         ELSEIF(ISUB.EQ.94) THEN
9863           BMN=2D0*ALP*4D0
9864         ENDIF
9865  
9866 C...Determine maximum possible t range and coefficient of generation.
9867         SQLA12=(SH-SQM1-SQM2)**2-4D0*SQM1*SQM2
9868         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
9869         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
9870         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
9871         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
9872      &  (SQM1*SQM4-SQM2*SQM3)/SH
9873         THL=-0.5D0*(THA+THB)
9874         THU=THC/THL
9875         THRND=EXP(MAX(-50D0,BMN*(THL-THU)))-1D0
9876  
9877 C...Select diffractive mass/masses according to dm^2/m^2.
9878         LOOP3=0
9879   260   LOOP3=LOOP3+1
9880         DO 270 JT=1,2
9881           IF(MINT(16+JT).EQ.0) THEN
9882             PDIF(2+JT)=PDIF(JT)
9883           ELSE
9884             PMMIN=PDIF(JT)
9885             PMMAX=MAX(VINT(2+JT),VINT(1)-PDIF(3-JT))
9886             PDIF(2+JT)=PMMIN*(PMMAX/PMMIN)**PYR(0)
9887           ENDIF
9888   270   CONTINUE
9889         SQM3=PDIF(3)**2
9890         SQM4=PDIF(4)**2
9891  
9892 C..Additional mass factors, including resonance enhancement.
9893         IF(PDIF(3)+PDIF(4).GE.VINT(1)) THEN
9894           IF(LOOP3.LT.100) GOTO 260
9895           GOTO 100
9896         ENDIF
9897         IF(ISUB.EQ.92) THEN
9898           FSD=(1D0-SQM3/SH)*(1D0+CRES*SMRES1/(SMRES1+SQM3))
9899           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
9900         ELSEIF(ISUB.EQ.93) THEN
9901           FSD=(1D0-SQM4/SH)*(1D0+CRES*SMRES2/(SMRES2+SQM4))
9902           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
9903         ELSEIF(ISUB.EQ.94) THEN
9904           FDD=(1D0-(PDIF(3)+PDIF(4))**2/SH)*(SH*SMP/
9905      &    (SH*SMP+SQM3*SQM4))*(1D0+CRES*SMRES1/(SMRES1+SQM3))*
9906      &    (1D0+CRES*SMRES2/(SMRES2+SQM4))
9907           IF(FDD.LT.PYR(0)*(1D0+CRES)**2) GOTO 260
9908         ENDIF
9909  
9910 C...Select t according to exp(Bmn*t) and correct to right slope.
9911         TH=THU+LOG(1D0+THRND*PYR(0))/BMN
9912         IF(ISUB.GE.92) THEN
9913           IF(ISUB.EQ.92) THEN
9914             BADD=2D0*ALP*LOG(SH/SQM3)
9915             IF(BHAD(IHB).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHB)-2D0)
9916           ELSEIF(ISUB.EQ.93) THEN
9917             BADD=2D0*ALP*LOG(SH/SQM4)
9918             IF(BHAD(IHA).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHA)-2D0)
9919           ELSEIF(ISUB.EQ.94) THEN
9920             BADD=2D0*ALP*(LOG(EXP(4D0)+SH/(ALP*SQM3*SQM4))-4D0)
9921           ENDIF
9922           IF(EXP(MAX(-50D0,BADD*(TH-THU))).LT.PYR(0)) GOTO 260
9923         ENDIF
9924  
9925 C...Check whether m^2 and t choices are consistent.
9926         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
9927         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
9928         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
9929         IF(THB.LE.1D-8) GOTO 260
9930         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
9931      &  (SQM1*SQM4-SQM2*SQM3)/SH
9932         THLM=-0.5D0*(THA+THB)
9933         THUM=THC/THLM
9934         IF(TH.LT.THLM.OR.TH.GT.THUM) GOTO 260
9935  
9936 C...Information to output.
9937         VINT(21)=1D0
9938         VINT(22)=0D0
9939         VINT(23)=MIN(1D0,MAX(-1D0,(THA+2D0*TH)/THB))
9940         VINT(45)=TH
9941         VINT(59)=2D0*SQRT(MAX(0D0,-(THC+THA*TH+TH**2)))/THB
9942         VINT(63)=PDIF(3)**2
9943         VINT(64)=PDIF(4)**2
9944         VINT(283)=PMM(1)**2/4D0
9945         VINT(284)=PMM(2)**2/4D0
9946  
9947 C...Note: in the following, by In is meant the integral over the
9948 C...quantity multiplying coefficient cn.
9949 C...Choose tau according to h1(tau)/tau, where
9950 C...h1(tau) = c1 + I1/I2*c2*1/tau + I1/I3*c3*1/(tau+tau_R) +
9951 C...I1/I4*c4*tau/((s*tau-m^2)^2+(m*Gamma)^2) +
9952 C...I1/I5*c5*1/(tau+tau_R') +
9953 C...I1/I6*c6*tau/((s*tau-m'^2)^2+(m'*Gamma')^2) +
9954 C...I1/I7*c7*tau/(1.-tau), and
9955 C...c1 + c2 + c3 + c4 + c5 + c6 + c7 = 1.
9956       ELSEIF(ISTSB.GE.1.AND.ISTSB.LE.5) THEN
9957         CALL PYKLIM(1)
9958         IF(MINT(51).NE.0) THEN
9959           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9960           IF(MFAIL.EQ.1) THEN
9961             MSTI(61)=1
9962             RETURN
9963           ENDIF
9964           GOTO 100
9965         ENDIF
9966         RTAU=PYR(0)
9967         MTAU=1
9968         IF(RTAU.GT.COEF(ISUB,1)) MTAU=2
9969         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)) MTAU=3
9970         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)) MTAU=4
9971         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4))
9972      &  MTAU=5
9973         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
9974      &  COEF(ISUB,5)) MTAU=6
9975         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
9976      &  COEF(ISUB,5)+COEF(ISUB,6)) MTAU=7
9977 C...Additional check to handle techni-processes with extra resonance
9978 C....Only modify tau treatment
9979         IF(ISUB.EQ.194.OR.ISUB.EQ.195.OR.(ISUB.GE.361.AND.ISUB.LE.380))
9980      &   THEN
9981           IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)
9982      &     +COEF(ISUB,4)+COEF(ISUB,5)+COEF(ISUB,6)+COEF(ISUB,7)) MTAU=8
9983           IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)
9984      &     +COEF(ISUB,4)+COEF(ISUB,5)+COEF(ISUB,6)+COEF(ISUB,7)
9985      &     +COEFX(ISUB,1)) MTAU=9
9986         ENDIF
9987         CALL PYKMAP(1,MTAU,PYR(0))
9988  
9989 C...2 -> 3, 4 processes:
9990 C...Choose tau' according to h4(tau,tau')/tau', where
9991 C...h4(tau,tau') = c1 + I1/I2*c2*(1 - tau/tau')^3/tau' +
9992 C...I1/I3*c3*1/(1 - tau'), and c1 + c2 + c3 = 1.
9993         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
9994           CALL PYKLIM(4)
9995           IF(MINT(51).NE.0) THEN
9996             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
9997             IF(MFAIL.EQ.1) THEN
9998               MSTI(61)=1
9999               RETURN
10000             ENDIF
10001             GOTO 100
10002           ENDIF
10003           RTAUP=PYR(0)
10004           MTAUP=1
10005           IF(RTAUP.GT.COEF(ISUB,18)) MTAUP=2
10006           IF(RTAUP.GT.COEF(ISUB,18)+COEF(ISUB,19)) MTAUP=3
10007           CALL PYKMAP(4,MTAUP,PYR(0))
10008         ENDIF
10009  
10010 C...Choose y* according to h2(y*), where
10011 C...h2(y*) = I0/I1*c1*(y*-y*min) + I0/I2*c2*(y*max-y*) +
10012 C...I0/I3*c3*1/cosh(y*) + I0/I4*c4*1/(1-exp(y*-y*max)) +
10013 C...I0/I5*c5*1/(1-exp(-y*-y*min)), I0 = y*max-y*min,
10014 C...and c1 + c2 + c3 + c4 + c5 = 1.
10015         CALL PYKLIM(2)
10016         IF(MINT(51).NE.0) THEN
10017           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10018           IF(MFAIL.EQ.1) THEN
10019             MSTI(61)=1
10020             RETURN
10021           ENDIF
10022           GOTO 100
10023         ENDIF
10024         RYST=PYR(0)
10025         MYST=1
10026         IF(RYST.GT.COEF(ISUB,8)) MYST=2
10027         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
10028         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)) MYST=4
10029         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)+
10030      &  COEF(ISUB,11)) MYST=5
10031         CALL PYKMAP(2,MYST,PYR(0))
10032  
10033 C...2 -> 2 processes:
10034 C...Choose cos(theta-hat) (cth) according to h3(cth), where
10035 C...h3(cth) = c0 + I0/I1*c1*1/(A - cth) + I0/I2*c2*1/(A + cth) +
10036 C...I0/I3*c3*1/(A - cth)^2 + I0/I4*c4*1/(A + cth)^2,
10037 C...A = 1 + 2*(m3*m4/sh)^2 (= 1 for massless products),
10038 C...and c0 + c1 + c2 + c3 + c4 = 1.
10039         CALL PYKLIM(3)
10040         IF(MINT(51).NE.0) THEN
10041           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10042           IF(MFAIL.EQ.1) THEN
10043             MSTI(61)=1
10044             RETURN
10045           ENDIF
10046           GOTO 100
10047         ENDIF
10048         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
10049           RCTH=PYR(0)
10050           MCTH=1
10051           IF(RCTH.GT.COEF(ISUB,13)) MCTH=2
10052           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)) MCTH=3
10053           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)) MCTH=4
10054           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)+
10055      &    COEF(ISUB,16)) MCTH=5
10056           CALL PYKMAP(3,MCTH,PYR(0))
10057         ENDIF
10058  
10059 C...2 -> 3 : select pT1, phi1, pT2, phi2, y3 for 3 outgoing.
10060         IF(ISTSB.EQ.5) THEN
10061           CALL PYKMAP(5,0,0D0)
10062           IF(MINT(51).NE.0) THEN
10063             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10064             IF(MFAIL.EQ.1) THEN
10065               MSTI(61)=1
10066               RETURN
10067             ENDIF
10068             GOTO 100
10069           ENDIF
10070         ENDIF
10071  
10072 C...DIS as f + gamma* -> f process: set dummy values.
10073       ELSEIF(ISTSB.EQ.8) THEN
10074         VINT(21)=0.9D0
10075         VINT(22)=0D0
10076         VINT(23)=0D0
10077         VINT(47)=0D0
10078         VINT(48)=0D0
10079  
10080 C...Low-pT or multiple interactions (first semihard interaction).
10081       ELSEIF(ISTSB.EQ.9) THEN
10082         IF(MINT(35).LE.1) CALL PYMULT(3)
10083         IF(MINT(35).GE.2) CALL PYMIGN(3)
10084         ISUB=MINT(1)
10085  
10086 C...Study user-defined process: kinematics plus weight.
10087       ELSEIF(ISTSB.EQ.11) THEN
10088         IF(IDWTUP.GT.0.AND.XWGTUP.LT.0D0) CALL
10089      &  PYERRM(26,'(PYRAND:) Negative XWGTUP for user process')
10090         MSTI(51)=0
10091         IF(NUP.LE.0) THEN
10092           MINT(51)=2
10093           MSTI(51)=1
10094           IF(MINT(82).EQ.1) THEN
10095             NGEN(0,1)=NGEN(0,1)-1
10096             NGEN(ISUB,1)=NGEN(ISUB,1)-1
10097           ENDIF
10098           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10099           RETURN
10100         ENDIF
10101  
10102 C...Extract cross section event weight.
10103         IF(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.4) THEN
10104           SIGS=1D-9*XWGTUP
10105         ELSE
10106           SIGS=1D-9*XSECUP(KFPR(ISUB,1))
10107         ENDIF
10108         IF(IABS(IDWTUP).GE.1.AND.IABS(IDWTUP).LE.3) THEN
10109           VINT(97)=SIGN(1D0,XWGTUP)
10110         ELSE
10111           VINT(97)=1D-9*XWGTUP
10112         ENDIF
10113  
10114 C...Construct 'trivial' kinematical variables needed.
10115         KFL1=IDUP(1)
10116         KFL2=IDUP(2)
10117         VINT(41)=PUP(4,1)/EBMUP(1)
10118         VINT(42)=PUP(4,2)/EBMUP(2)
10119         IF (VINT(41).GT.1.000001.OR.VINT(42).GT.1.000001) THEN
10120           CALL PYERRM(9,'(PYRAND:) x > 1 in external event '//
10121      &        '(listing follows):') 
10122           CALL PYLIST(7)
10123         ENDIF
10124         VINT(21)=VINT(41)*VINT(42)
10125         VINT(22)=0.5D0*LOG(VINT(41)/VINT(42))
10126         VINT(44)=VINT(21)*VINT(2)
10127         VINT(43)=SQRT(MAX(0D0,VINT(44)))
10128         VINT(55)=SCALUP
10129         IF(SCALUP.LE.0D0) VINT(55)=VINT(43)
10130         VINT(56)=VINT(55)**2
10131         VINT(57)=AQEDUP
10132         VINT(58)=AQCDUP
10133  
10134 C...Construct other kinematical variables needed (approximately).
10135         VINT(23)=0D0
10136         VINT(26)=VINT(21)
10137         VINT(45)=-0.5D0*VINT(44)
10138         VINT(46)=-0.5D0*VINT(44)
10139         VINT(49)=VINT(43)
10140         VINT(50)=VINT(44)
10141         VINT(51)=VINT(55)
10142         VINT(52)=VINT(56)
10143         VINT(53)=VINT(55)
10144         VINT(54)=VINT(56)
10145         VINT(25)=0D0
10146         VINT(48)=0D0
10147         IF(ISTUP(1).NE.-1.OR.ISTUP(2).NE.-1) CALL PYERRM(26,
10148      &  '(PYRAND:) unacceptable ISTUP code for incoming particles')
10149         DO 280 IUP=3,NUP
10150           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) CALL PYERRM(26,
10151      &    '(PYRAND:) unacceptable ISTUP code for particles')
10152           IF(ISTUP(IUP).EQ.1) VINT(25)=VINT(25)+2D0*(PUP(5,IUP)**2+
10153      &    PUP(1,IUP)**2+PUP(2,IUP)**2)/VINT(2)
10154           IF(ISTUP(IUP).EQ.1) VINT(48)=VINT(48)+0.5D0*(PUP(1,IUP)**2+
10155      &    PUP(2,IUP)**2)
10156   280   CONTINUE
10157         VINT(47)=SQRT(VINT(48))
10158       ENDIF
10159  
10160 C...Choose azimuthal angle.
10161       VINT(24)=0D0
10162       IF(ISTSB.NE.11) VINT(24)=PARU(2)*PYR(0)
10163  
10164 C...Check against user cuts on kinematics at parton level.
10165       MINT(51)=0
10166       IF((ISUB.LE.90.OR.ISUB.GT.100).AND.ISTSB.LE.10) CALL PYKLIM(0)
10167       IF(MINT(51).NE.0) THEN
10168         IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10169         IF(MFAIL.EQ.1) THEN
10170           MSTI(61)=1
10171           RETURN
10172         ENDIF
10173         GOTO 100
10174       ENDIF
10175       IF(MINT(82).EQ.1.AND.MSTP(141).GE.1.AND.ISTSB.LE.10) THEN
10176         MCUT=0
10177         IF(MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+MSUB(95).EQ.0)
10178      &  CALL PYKCUT(MCUT)
10179         IF(MCUT.NE.0) THEN
10180           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10181           IF(MFAIL.EQ.1) THEN
10182             MSTI(61)=1
10183             RETURN
10184           ENDIF
10185           GOTO 100
10186         ENDIF
10187       ENDIF
10188  
10189       IF(ISTSB.LE.10) THEN
10190 C...  If internal process, call PYSIGH
10191         CALL PYSIGH(NCHN,SIGS)
10192       ELSE
10193 C...  If external process, still have to set MI starting scale 
10194         IF (MSTP(86).EQ.1) THEN
10195 C...  Limit phase space by xT2 of hard interaction
10196 C...  (gives undercounting of MI when ext proc != dijets)
10197           XT2GMX = VINT(25)
10198         ELSE
10199 C...  All accessible phase space allowed
10200 C...  (gives double counting of MI when ext proc = dijets)
10201           XT2GMX = (1D0-VINT(41))*(1D0-VINT(42))
10202         ENDIF
10203         VINT(62)=0.25D0*XT2GMX*VINT(2)
10204         VINT(61)=SQRT(MAX(0D0,VINT(62)))
10205       ENDIF
10206       
10207       SIGSOR=SIGS
10208       SIGLPT=SIGT(0,0,5)*VINT(315)*VINT(316)
10209  
10210 C...Multiply cross section by lepton -> photon flux factor.
10211       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
10212         SIGS=WTGAGA*SIGS
10213         DO 290 ICHN=1,NCHN
10214           SIGH(ICHN)=WTGAGA*SIGH(ICHN)
10215   290   CONTINUE
10216         SIGLPT=WTGAGA*SIGLPT
10217       ENDIF
10218  
10219 C...Multiply cross-section by user-defined weights.
10220       IF(MSTP(173).EQ.1) THEN
10221         SIGS=PARP(173)*SIGS
10222         DO 300 ICHN=1,NCHN
10223           SIGH(ICHN)=PARP(173)*SIGH(ICHN)
10224   300   CONTINUE
10225         SIGLPT=PARP(173)*SIGLPT
10226       ENDIF
10227       WTXS=1D0
10228       SIGSWT=SIGS
10229       VINT(99)=1D0
10230       VINT(100)=1D0
10231       IF(MINT(82).EQ.1.AND.MSTP(142).GE.1) THEN
10232         IF(ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+
10233      &  MSUB(95).EQ.0) CALL PYEVWT(WTXS)
10234         SIGSWT=WTXS*SIGS
10235         VINT(99)=WTXS
10236         IF(MSTP(142).EQ.1) VINT(100)=1D0/WTXS
10237       ENDIF
10238  
10239 C...Calculations for Monte Carlo estimate of all cross-sections.
10240       IF(MINT(82).EQ.1.AND.ISUB.LE.90.OR.ISUB.GE.96) THEN
10241         IF(MSTP(142).LE.1) THEN
10242           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
10243         ELSE
10244           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGSWT
10245         ENDIF
10246       ELSEIF(MINT(82).EQ.1) THEN
10247         XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
10248       ENDIF
10249       IF((ISUB.EQ.95.OR.ISUB.EQ.96).AND.LOOP2.EQ.1.AND.
10250      &MINT(82).EQ.1) XSEC(97,2)=XSEC(97,2)+SIGLPT
10251  
10252 C...Multiple interactions: store results of cross-section calculation.
10253       IF(MINT(50).EQ.1.AND.MSTP(82).GE.3) THEN
10254         VINT(153)=SIGSOR
10255         IF(MINT(35).LE.1) CALL PYMULT(4)
10256         IF(MINT(35).GE.2) CALL PYMIGN(4)
10257       ENDIF
10258  
10259 C...Ratio of actual to maximum cross section.
10260       IF(ISTSB.NE.11) THEN
10261         VIOL=SIGSWT/XSEC(ISUB,1)
10262         IF(ISUB.EQ.96.AND.MSTP(173).EQ.1) VIOL=VIOL/PARP(174)
10263       ELSEIF(IDWTUP.EQ.1.OR.IDWTUP.EQ.2) THEN
10264         VIOL=XWGTUP/XMAXUP(KFPR(ISUB,1))
10265       ELSEIF(IDWTUP.EQ.-1.OR.IDWTUP.EQ.-2) THEN
10266         VIOL=ABS(XWGTUP)/ABS(XMAXUP(KFPR(ISUB,1)))
10267       ELSE
10268         VIOL=1D0
10269       ENDIF
10270  
10271 C...Check that weight not negative.
10272       IF(MSTP(123).LE.0) THEN
10273         IF(VIOL.LT.-1D-3) THEN
10274           WRITE(MSTU(11),5000) VIOL,NGEN(0,3)+1
10275           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
10276      &    VINT(22),VINT(23),VINT(26)
10277           CALL PYSTOP(2)
10278         ENDIF
10279       ELSE
10280         IF(VIOL.LT.MIN(-1D-3,VINT(109))) THEN
10281           VINT(109)=VIOL
10282           IF(MSTP(123).LE.2) WRITE(MSTU(11),5200) VIOL,NGEN(0,3)+1
10283           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
10284      &    VINT(22),VINT(23),VINT(26)
10285         ENDIF
10286       ENDIF
10287  
10288 C...Weighting using estimate of maximum of differential cross-section.
10289       RATND=1D0
10290       IF(MFAIL.EQ.0.AND.ISUB.NE.95.AND.ISUB.NE.96) THEN
10291         IF(VIOL.LT.PYR(0)) THEN
10292           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10293           IF(ISUB.GE.91.AND.ISUB.LE.94) ISUB=0
10294           GOTO 100
10295         ENDIF
10296       ELSEIF(MFAIL.EQ.0) THEN
10297         RATND=SIGLPT/XSEC(95,1)
10298         VIOL=VIOL/RATND
10299         IF(LOOP2.EQ.1.AND.RATND.LT.PYR(0)) THEN
10300           IF(VIOL.GT.PYR(0).AND.MINT(82).EQ.1.AND.MSUB(95).EQ.1.AND.
10301      &    (ISUB.LE.90.OR.ISUB.GE.95)) NGEN(95,1)=NGEN(95,1)+MINT(143)
10302           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10303           ISUB=0
10304           GOTO 100
10305         ENDIF
10306         IF(VIOL.LT.PYR(0)) THEN
10307           GOTO 140
10308         ENDIF
10309       ELSEIF(ISUB.NE.95.AND.ISUB.NE.96) THEN
10310         IF(VIOL.LT.PYR(0)) THEN
10311           MSTI(61)=1
10312           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10313           RETURN
10314         ENDIF
10315       ELSE
10316         RATND=SIGLPT/XSEC(95,1)
10317         IF(LOOP.EQ.1.AND.RATND.LT.PYR(0)) THEN
10318           MSTI(61)=1
10319           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10320           RETURN
10321         ENDIF
10322         VIOL=VIOL/RATND
10323         IF(VIOL.LT.PYR(0)) THEN
10324           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10325           GOTO 100
10326         ENDIF
10327       ENDIF
10328  
10329 C...Check for possible violation of estimated maximum of differential
10330 C...cross-section used in weighting.
10331       IF(MSTP(123).LE.0) THEN
10332         IF(VIOL.GT.1D0) THEN
10333           WRITE(MSTU(11),5300) VIOL,NGEN(0,3)+1
10334           IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
10335      &    VINT(22),VINT(23),VINT(26)
10336           CALL PYSTOP(2)
10337         ENDIF
10338       ELSEIF(MSTP(123).EQ.1) THEN
10339         IF(VIOL.GT.VINT(108)) THEN
10340           VINT(108)=VIOL
10341           IF(VIOL.GT.1.0001D0) THEN
10342             MINT(10)=1
10343             WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
10344             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
10345      &      VINT(22),VINT(23),VINT(26)
10346           ENDIF
10347         ENDIF
10348       ELSEIF(VIOL.GT.VINT(108)) THEN
10349         VINT(108)=VIOL
10350         IF(VIOL.GT.1D0) THEN
10351           MINT(10)=1
10352           IF(MSTP(123).EQ.2) WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
10353           IF(ISTSB.EQ.11.AND.(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.2))
10354      &    THEN
10355             XMAXUP(KFPR(ISUB,1))=VIOL*XMAXUP(KFPR(ISUB,1))
10356             IF(KFPR(ISUB,1).LE.9) THEN
10357               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5800) KFPR(ISUB,1),
10358      &        XMAXUP(KFPR(ISUB,1))
10359             ELSEIF(KFPR(ISUB,1).LE.99) THEN
10360               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5900) KFPR(ISUB,1),
10361      &        XMAXUP(KFPR(ISUB,1))
10362             ELSE
10363               IF(MSTP(123).EQ.2) WRITE(MSTU(11),6000) KFPR(ISUB,1),
10364      &        XMAXUP(KFPR(ISUB,1))
10365             ENDIF
10366           ENDIF
10367           IF(ISTSB.NE.11.OR.IABS(IDWTUP).EQ.1) THEN
10368             XDIF=XSEC(ISUB,1)*(VIOL-1D0)
10369             XSEC(ISUB,1)=XSEC(ISUB,1)+XDIF
10370             IF(MSUB(ISUB).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GT.96))
10371      &      XSEC(0,1)=XSEC(0,1)+XDIF
10372             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
10373      &      VINT(22),VINT(23),VINT(26)
10374             IF(ISUB.LE.9) THEN
10375               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5500) ISUB,XSEC(ISUB,1)
10376             ELSEIF(ISUB.LE.99) THEN
10377               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5600) ISUB,XSEC(ISUB,1)
10378             ELSE
10379               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5700) ISUB,XSEC(ISUB,1)
10380             ENDIF
10381           ENDIF
10382           VINT(108)=1D0
10383         ENDIF
10384       ENDIF
10385  
10386 C...Multiple interactions: choose impact parameter (if not already done).
10387       IF(MINT(39).EQ.0) VINT(148)=1D0
10388       IF(MINT(50).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GE.96).AND.
10389      &MSTP(82).GE.3) THEN
10390         IF(MINT(35).LE.1) CALL PYMULT(5)
10391         IF(MINT(35).GE.2) CALL PYMIGN(5)
10392         IF(VINT(150).LT.PYR(0)) THEN
10393           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10394           IF(MFAIL.EQ.1) THEN
10395             MSTI(61)=1
10396             RETURN
10397           ENDIF
10398           GOTO 100
10399         ENDIF
10400       ENDIF
10401       IF(MINT(82).EQ.1) NGEN(0,2)=NGEN(0,2)+1
10402       IF(MINT(82).EQ.1.AND.MSUB(95).EQ.1) THEN
10403         IF(ISUB.LE.90.OR.ISUB.GE.95) NGEN(95,1)=NGEN(95,1)+MINT(143)
10404         IF(ISUB.LE.90.OR.ISUB.GE.96) NGEN(96,2)=NGEN(96,2)+1
10405       ENDIF
10406       IF(ISUB.LE.90.OR.ISUB.GE.96) MINT(31)=MINT(31)+1
10407  
10408 C...Choose flavour of reacting partons (and subprocess).
10409       IF(ISTSB.GE.11) GOTO 320
10410       RSIGS=SIGS*PYR(0)
10411       QT2=VINT(48)
10412       RQQBAR=PARP(87)*(1D0-(QT2/(QT2+(PARP(88)*PARP(82)*
10413      &(VINT(1)/PARP(89))**PARP(90))**2))**2)
10414       IF(ISUB.NE.95.AND.(ISUB.NE.96.OR.MSTP(82).LE.1.OR.
10415      &PYR(0).GT.RQQBAR)) THEN
10416         DO 310 ICHN=1,NCHN
10417           KFL1=ISIG(ICHN,1)
10418           KFL2=ISIG(ICHN,2)
10419           MINT(2)=ISIG(ICHN,3)
10420           RSIGS=RSIGS-SIGH(ICHN)
10421           IF(RSIGS.LE.0D0) GOTO 320
10422   310   CONTINUE
10423  
10424 C...Multiple interactions: choose qqbar preferentially at small pT.
10425       ELSEIF(ISUB.EQ.96) THEN
10426         MINT(105)=MINT(103)
10427         MINT(109)=MINT(107)
10428         CALL PYSPLI(MINT(11),21,KFL1,KFLDUM)
10429         MINT(105)=MINT(104)
10430         MINT(109)=MINT(108)
10431         CALL PYSPLI(MINT(12),21,KFL2,KFLDUM)
10432         MINT(1)=11
10433         MINT(2)=1
10434         IF(KFL1.EQ.KFL2.AND.PYR(0).LT.0.5D0) MINT(2)=2
10435  
10436 C...Low-pT: choose string drawing configuration.
10437       ELSE
10438         KFL1=21
10439         KFL2=21
10440         RSIGS=6D0*PYR(0)
10441         MINT(2)=1
10442         IF(RSIGS.GT.1D0) MINT(2)=2
10443         IF(RSIGS.GT.2D0) MINT(2)=3
10444       ENDIF
10445  
10446 C...Reassign QCD process. Partons before initial state radiation.
10447   320 IF(MINT(2).GT.10) THEN
10448         MINT(1)=MINT(2)/10
10449         MINT(2)=MOD(MINT(2),10)
10450       ENDIF
10451       IF(MINT(82).EQ.1.AND.MSTP(111).GE.0) NGEN(MINT(1),2)=
10452      &NGEN(MINT(1),2)+1
10453       MINT(15)=KFL1
10454       MINT(16)=KFL2
10455       MINT(13)=MINT(15)
10456       MINT(14)=MINT(16)
10457       VINT(141)=VINT(41)
10458       VINT(142)=VINT(42)
10459       VINT(151)=0D0
10460       VINT(152)=0D0
10461  
10462 C...Calculate x value of photon for parton inside photon inside e.
10463       DO 350 JT=1,2
10464         MINT(18+JT)=0
10465         VINT(154+JT)=0D0
10466         MSPLI=0
10467         IF(JT.EQ.1.AND.MINT(43).LE.2) MSPLI=1
10468         IF(JT.EQ.2.AND.MOD(MINT(43),2).EQ.1) MSPLI=1
10469         IF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) MSPLI=MSPLI+1
10470         IF(MSPLI.EQ.2) THEN
10471           KFLH=MINT(14+JT)
10472           XHRD=VINT(140+JT)
10473           Q2HRD=VINT(54)
10474           MINT(105)=MINT(102+JT)
10475           MINT(109)=MINT(106+JT)
10476           VINT(120)=VINT(2+JT)
10477           IF(MSTP(57).LE.1) THEN
10478             CALL PYPDFU(22,XHRD,Q2HRD,XPQ)
10479           ELSE
10480             CALL PYPDFL(22,XHRD,Q2HRD,XPQ)
10481           ENDIF
10482           WTMX=4D0*XPQ(KFLH)
10483           IF(MSTP(13).EQ.2) THEN
10484             Q2PMS=Q2HRD/PMAS(11,1)**2
10485             WTMX=WTMX*LOG(MAX(2D0,Q2PMS*(1D0-XHRD)/XHRD**2))
10486           ENDIF
10487   330     XE=XHRD**PYR(0)
10488           XG=MIN(1D0-1D-10,XHRD/XE)
10489           IF(MSTP(57).LE.1) THEN
10490             CALL PYPDFU(22,XG,Q2HRD,XPQ)
10491           ELSE
10492             CALL PYPDFL(22,XG,Q2HRD,XPQ)
10493           ENDIF
10494           WT=(1D0+(1D0-XE)**2)*XPQ(KFLH)
10495           IF(MSTP(13).EQ.2) WT=WT*LOG(MAX(2D0,Q2PMS*(1D0-XE)/XE**2))
10496           IF(WT.LT.PYR(0)*WTMX) GOTO 330
10497           MINT(18+JT)=1
10498           VINT(154+JT)=XE
10499           DO 340 KFLS=-25,25
10500             XSFX(JT,KFLS)=XPQ(KFLS)
10501   340     CONTINUE
10502         ENDIF
10503   350 CONTINUE
10504  
10505 C...Pick scale where photon is resolved.
10506       Q0S=PARP(15)**2
10507       Q1S=VINT(154)**2
10508       VINT(283)=0D0
10509       IF(MINT(107).EQ.3) THEN
10510         IF(MSTP(66).EQ.1) THEN
10511           VINT(283)=Q0S*(VINT(54)/Q0S)**PYR(0)
10512         ELSEIF(MSTP(66).EQ.2) THEN
10513           PS=VINT(3)**2
10514           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
10515      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
10516           Q2INT=SQRT(Q0S*Q2EFF)
10517           VINT(283)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
10518         ELSEIF(MSTP(66).EQ.3) THEN
10519           VINT(283)=Q0S*(Q1S/Q0S)**PYR(0)
10520         ELSEIF(MSTP(66).GE.4) THEN
10521           PS=0.25D0*VINT(3)**2
10522           VINT(283)=(Q0S+PS)*(Q1S+PS)/
10523      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
10524         ENDIF
10525       ENDIF
10526       VINT(284)=0D0
10527       IF(MINT(108).EQ.3) THEN
10528         IF(MSTP(66).EQ.1) THEN
10529           VINT(284)=Q0S*(VINT(54)/Q0S)**PYR(0)
10530         ELSEIF(MSTP(66).EQ.2) THEN
10531           PS=VINT(4)**2
10532           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
10533      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
10534           Q2INT=SQRT(Q0S*Q2EFF)
10535           VINT(284)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
10536         ELSEIF(MSTP(66).EQ.3) THEN
10537           VINT(284)=Q0S*(Q1S/Q0S)**PYR(0)
10538         ELSEIF(MSTP(66).GE.4) THEN
10539           PS=0.25D0*VINT(4)**2
10540           VINT(284)=(Q0S+PS)*(Q1S+PS)/
10541      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
10542         ENDIF
10543       ENDIF
10544       IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10545  
10546 C...Format statements for differential cross-section maximum violations.
10547  5000 FORMAT(/1X,'Error: negative cross-section fraction',1P,D11.3,1X,
10548      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
10549  5100 FORMAT(1X,'ISUB = ',I3,'; Point of violation:'/1X,'tau =',1P,
10550      &D11.3,', y* =',D11.3,', cthe = ',0P,F11.7,', tau'' =',1P,D11.3)
10551  5200 FORMAT(/1X,'Warning: negative cross-section fraction',1P,D11.3,1X,
10552      &'in event',1X,I7)
10553  5300 FORMAT(/1X,'Error: maximum violated by',1P,D11.3,1X,
10554      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
10555  5400 FORMAT(/1X,'Advisory warning: maximum violated by',1P,D11.3,1X,
10556      &'in event',1X,I7)
10557  5500 FORMAT(1X,'XSEC(',I1,',1) increased to',1P,D11.3)
10558  5600 FORMAT(1X,'XSEC(',I2,',1) increased to',1P,D11.3)
10559  5700 FORMAT(1X,'XSEC(',I3,',1) increased to',1P,D11.3)
10560  5800 FORMAT(1X,'XMAXUP(',I1,') increased to',1P,D11.3)
10561  5900 FORMAT(1X,'XMAXUP(',I2,') increased to',1P,D11.3)
10562  6000 FORMAT(1X,'XMAXUP(',I3,') increased to',1P,D11.3)
10563 
10564       RETURN
10565       END
10566  
10567 C*********************************************************************
10568  
10569 C...PYSCAT
10570 C...Finds outgoing flavours and event type; sets up the kinematics
10571 C...and colour flow of the hard scattering
10572  
10573       SUBROUTINE PYSCAT
10574  
10575 C...Double precision and integer declarations
10576       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
10577       IMPLICIT INTEGER(I-N)
10578       INTEGER PYK,PYCHGE,PYCOMP
10579 C...Parameter statement to help give large particle numbers.
10580       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
10581      &KEXCIT=4000000,KDIMEN=5000000)
10582 C...Parameter statement for maximum size of showers.
10583       PARAMETER (MAXNUR=1000)
10584  
10585 C...User process event common block.
10586       INTEGER MAXNUP
10587       PARAMETER (MAXNUP=500)
10588       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
10589       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
10590       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
10591      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
10592      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
10593       SAVE /HEPEUP/
10594  
10595 C...Commonblocks.
10596       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
10597       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
10598       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
10599       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
10600       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
10601       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
10602       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
10603       COMMON/PYINT1/MINT(400),VINT(400)
10604       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
10605       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
10606       COMMON/PYINT4/MWID(500),WIDS(500,5)
10607       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
10608       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
10609      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
10610       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
10611       COMMON/PYPUED/IUED(0:99),RUED(0:99)
10612       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,
10613      &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYSSMT/,
10614      &/PYTCSM/,/PYPUED/
10615 C...Local arrays and saved variables
10616       DIMENSION WDTP(0:400),WDTE(0:400,0:5),PMQ(2),Z(2),CTHE(2),
10617      &PHI(2),KUPPO(100),VINTSV(41:66),ILAB(100)
10618       INTEGER IOKFLA(6),IIFLAV
10619 C...UED related declarations:
10620 C...equivalences between ordered particles (451->475)
10621 C...and UED particle code (5 000 000 + id)
10622       DIMENSION IUEDEQ(475),MUED(2)
10623       DATA (IUEDEQ(I),I=451,475)/
10624      & 6100001,6100002,6100003,6100004,6100005,6100006, 
10625      & 5100001,5100002,5100003,5100004,5100005,5100006, 
10626      & 6100011,6100013,6100015,                         
10627      & 5100012,5100011,5100014,5100013,5100016,5100015, 
10628      & 5100021,5100022,5100023,5100024/                 
10629       SAVE VINTSV
10630  
10631 C...Read out process
10632       ISUB=MINT(1)
10633       ISUBSV=ISUB
10634  
10635 C...Restore information for low-pT processes
10636       IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN
10637         DO 100 J=41,66
10638   100   VINT(J)=VINTSV(J)
10639       ENDIF
10640  
10641 C...Convert H' or A process into equivalent H one
10642       IHIGG=1
10643       KFHIGG=25
10644       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
10645      &ISUB.LE.190)) THEN
10646         IHIGG=2
10647         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
10648         KFHIGG=33+IHIGG
10649         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
10650         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
10651         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
10652         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
10653         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
10654         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
10655         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
10656         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
10657         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
10658         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
10659         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
10660         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
10661       ENDIF
10662  
10663       IF(ISUB.EQ.401.OR.ISUB.EQ.402) KFHIGG=KFPR(ISUB,1)
10664  
10665 C...Convert bottomonium process into equivalent charmonium ones.
10666       IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40
10667  
10668 C...Choice of subprocess, number of documentation lines
10669       IDOC=6+ISET(ISUB)
10670       IF(ISUB.EQ.95) IDOC=8
10671       IF(ISET(ISUB).EQ.5) IDOC=9
10672       IF(ISET(ISUB).EQ.11) IDOC=4+NUP
10673       MINT(3)=IDOC-6
10674       IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2
10675       MINT(4)=IDOC
10676       IPU1=MINT(84)+1
10677       IPU2=MINT(84)+2
10678       IPU3=MINT(84)+3
10679       IPU4=MINT(84)+4
10680       IPU5=MINT(84)+5
10681       IPU6=MINT(84)+6
10682  
10683 C...Reset K, P and V vectors. Store incoming particles
10684       DO 120 JT=1,MSTP(126)+100
10685         I=MINT(83)+JT
10686         IF(I.GT.MSTU(4)) GOTO 120
10687         DO 110 J=1,5
10688           K(I,J)=0
10689           P(I,J)=0D0
10690           V(I,J)=0D0
10691   110   CONTINUE
10692   120 CONTINUE
10693       DO 140 JT=1,2
10694         I=MINT(83)+JT
10695         K(I,1)=21
10696         K(I,2)=MINT(10+JT)
10697         DO 130 J=1,5
10698           P(I,J)=VINT(285+5*JT+J)
10699   130   CONTINUE
10700   140 CONTINUE
10701       MINT(6)=2
10702       KFRES=0
10703  
10704 C...Store incoming partons in their CM-frame. Save pdf value.
10705       SH=VINT(44)
10706       SHR=SQRT(SH)
10707       SHP=VINT(26)*VINT(2)
10708       SHPR=SQRT(SHP)
10709       SHUSER=SHR
10710       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR
10711       DO 150 JT=1,2
10712         I=MINT(84)+JT
10713         K(I,1)=14
10714         K(I,2)=MINT(14+JT)
10715         K(I,3)=MINT(83)+2+JT
10716         P(I,3)=0.5D0*SHUSER*(-1D0)**(JT-1)
10717         P(I,4)=0.5D0*SHUSER
10718         IF(MINT(14+JT).GE.-40.AND.MINT(14+JT).LE.40) THEN
10719          VINT(38+JT)=XSFX(JT,MINT(14+JT))
10720         ELSE
10721          VINT(38+JT)=1D0
10722         ENDIF
10723   150 CONTINUE
10724  
10725 C...Copy incoming partons to documentation lines
10726       DO 170 JT=1,2
10727         I1=MINT(83)+4+JT
10728         I2=MINT(84)+JT
10729         K(I1,1)=21
10730         K(I1,2)=K(I2,2)
10731         K(I1,3)=I1-2
10732         DO 160 J=1,5
10733           P(I1,J)=P(I2,J)
10734   160   CONTINUE
10735   170 CONTINUE
10736  
10737 C...Choose new quark/lepton flavour for relevant annihilation graphs
10738       IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58.OR.
10739      &ISUB.EQ.314.OR.ISUB.EQ.319.OR.ISUB.EQ.316.OR.
10740      &(ISUB.GE.135.AND.ISUB.LE.140).OR.ISUB.EQ.382.OR.ISUB.EQ.385) THEN
10741         IGLGA=21
10742         IF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) IGLGA=22
10743         CALL PYWIDT(IGLGA,SH,WDTP,WDTE)
10744   180   RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
10745         DO 190 I=1,MDCY(IGLGA,3)
10746           KFLF=KFDP(I+MDCY(IGLGA,2)-1,1)
10747           RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
10748           IF(RKFL.LE.0D0) GOTO 200
10749   190   CONTINUE
10750   200   CONTINUE
10751         IF((ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319
10752      &      .OR.ISUB.EQ.316).AND.MINT(2).LE.2) THEN
10753           IF(KFLF.GE.4) GOTO 180
10754         ELSEIF((ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319.
10755      &       OR.ISUB.EQ.316).AND.MINT(2).LE.4) THEN
10756           KFLF=4
10757           MINT(2)=MINT(2)-2
10758         ELSEIF(ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319.
10759      &        OR.ISUB.EQ.316) THEN
10760           KFLF=5
10761           MINT(2)=MINT(2)-4
10762         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.1.AND.IABS(MINT(15)).LE.2
10763      &  .AND.IABS(KFLF).GE.3) THEN
10764           FACQQB=VINT(58)**2*4D0/9D0*(VINT(45)**2+VINT(46)**2)/
10765      &    VINT(44)**2
10766           FACCIB=VINT(46)**2/RTCM(41)**4
10767           IF(FACQQB/(FACQQB+FACCIB).LT.PYR(0)) GOTO 180
10768         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.2) THEN
10769           KFLF=5
10770           MINT(2)=1
10771         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.1) THEN
10772           IF(KFLF.EQ.5) GOTO 180
10773         ELSEIF(ISUB.EQ.54.OR.ISUB.EQ.135.OR.ISUB.EQ.136) THEN
10774           IF((KCHG(PYCOMP(KFLF),1)/2D0)**2.LT.PYR(0)) GOTO 180
10775         ELSEIF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) THEN
10776           IF((KCHG(PYCOMP(KFLF),1)/3D0)**2.LT.PYR(0)) GOTO 180
10777         ENDIF
10778       ENDIF
10779  
10780 C...Final state flavours and colour flow: default values
10781       JS=1
10782       MINT(21)=MINT(15)
10783       MINT(22)=MINT(16)
10784       MINT(23)=0
10785       MINT(24)=0
10786       KCC=20
10787       KCS=ISIGN(1,MINT(15))
10788  
10789       IF(ISET(ISUB).EQ.11) THEN
10790 C...User-defined processes: find products
10791         MINT(3)=0
10792         DO 210 IUP=3,NUP
10793           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) THEN
10794           ELSEIF(NUP.EQ.5.AND.IUP.GE.4.AND.MOTHUP(1,4).EQ.3) THEN
10795             MINT(21+IUP)=IDUP(IUP)
10796           ELSEIF(ISTUP(IUP).EQ.1.AND.(ISTUP(MOTHUP(1,IUP)).EQ.2.OR.
10797      &    ISTUP(MOTHUP(1,IUP)).EQ.3).AND.IDUP(MOTHUP(1,IUP)).NE.0) THEN
10798           ELSEIF(IDUP(IUP).EQ.0) THEN
10799           ELSE
10800             MINT(3)=MINT(3)+1
10801             IF(MINT(3).LE.6) MINT(20+MINT(3))=IDUP(IUP)
10802           ENDIF
10803   210   CONTINUE
10804  
10805       ELSEIF(ISUB.LE.10) THEN
10806         IF(ISUB.EQ.1) THEN
10807 C...f + fbar -> gamma*/Z0
10808           KFRES=23
10809  
10810         ELSEIF(ISUB.EQ.2) THEN
10811 C...f + fbar' -> W+/-
10812           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10813           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10814           KFRES=ISIGN(24,KCH1+KCH2)
10815  
10816         ELSEIF(ISUB.EQ.3) THEN
10817 C...f + fbar -> h0 (or H0, or A0)
10818           KFRES=KFHIGG
10819  
10820         ELSEIF(ISUB.EQ.4) THEN
10821 C...gamma + W+/- -> W+/-
10822  
10823         ELSEIF(ISUB.EQ.5) THEN
10824 C...Z0 + Z0 -> h0
10825           XH=SH/SHP
10826           MINT(21)=MINT(15)
10827           MINT(22)=MINT(16)
10828           PMQ(1)=PYMASS(MINT(21))
10829           PMQ(2)=PYMASS(MINT(22))
10830   220     JT=INT(1.5D0+PYR(0))
10831           ZMIN=2D0*PMQ(JT)/SHPR
10832           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10833      &    (SHPR*(SHPR-PMQ(3-JT)))
10834           ZMAX=MIN(1D0-XH,ZMAX)
10835           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10836           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10837      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 220
10838           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10839           IF(SQC1.LT.1D-8) GOTO 220
10840           C1=SQRT(SQC1)
10841           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10842           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10843           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10844           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10845           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10846           IF(SQC1.LT.1D-8) GOTO 220
10847           C1=SQRT(SQC1)
10848           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10849           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10850           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10851           PHIR=PARU(2)*PYR(0)
10852           CPHI=COS(PHIR)
10853           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10854      &    SQRT(1D0-CTHE(2)**2)*CPHI
10855           Z1=2D0-Z(JT)
10856           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10857           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10858           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10859      &    PMQ(3-JT)**2/SHP))
10860           ZMIN=2D0*PMQ(3-JT)/SHPR
10861           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10862           ZMAX=MIN(1D0-XH,ZMAX)
10863           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220
10864           KCC=22
10865           KFRES=25
10866  
10867         ELSEIF(ISUB.EQ.6) THEN
10868 C...Z0 + W+/- -> W+/-
10869  
10870         ELSEIF(ISUB.EQ.7) THEN
10871 C...W+ + W- -> Z0
10872  
10873         ELSEIF(ISUB.EQ.8) THEN
10874 C...W+ + W- -> h0
10875           XH=SH/SHP
10876   230     DO 260 JT=1,2
10877             I=MINT(14+JT)
10878             IA=IABS(I)
10879             IF(IA.LE.10) THEN
10880               RVCKM=VINT(180+I)*PYR(0)
10881               DO 240 J=1,MSTP(1)
10882                 IB=2*J-1+MOD(IA,2)
10883                 IPM=(5-ISIGN(1,I))/2
10884                 IDC=J+MDCY(IA,2)+2
10885                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240
10886                 MINT(20+JT)=ISIGN(IB,I)
10887                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10888                 IF(RVCKM.LE.0D0) GOTO 250
10889   240         CONTINUE
10890             ELSE
10891               IB=2*((IA+1)/2)-1+MOD(IA,2)
10892               MINT(20+JT)=ISIGN(IB,I)
10893             ENDIF
10894   250       PMQ(JT)=PYMASS(MINT(20+JT))
10895   260     CONTINUE
10896           JT=INT(1.5D0+PYR(0))
10897           ZMIN=2D0*PMQ(JT)/SHPR
10898           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10899      &    (SHPR*(SHPR-PMQ(3-JT)))
10900           ZMAX=MIN(1D0-XH,ZMAX)
10901           IF(ZMIN.GE.ZMAX) GOTO 230
10902           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10903           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10904      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 230
10905           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10906           IF(SQC1.LT.1D-8) GOTO 230
10907           C1=SQRT(SQC1)
10908           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10909           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10910           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10911           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10912           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10913           IF(SQC1.LT.1D-8) GOTO 230
10914           C1=SQRT(SQC1)
10915           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10916           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10917           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10918           PHIR=PARU(2)*PYR(0)
10919           CPHI=COS(PHIR)
10920           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10921      &    SQRT(1D0-CTHE(2)**2)*CPHI
10922           Z1=2D0-Z(JT)
10923           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10924           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10925           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10926      &    PMQ(3-JT)**2/SHP))
10927           ZMIN=2D0*PMQ(3-JT)/SHPR
10928           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10929           ZMAX=MIN(1D0-XH,ZMAX)
10930           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230
10931           KCC=22
10932           KFRES=25
10933  
10934         ELSEIF(ISUB.EQ.10) THEN
10935 C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2
10936           IF(MINT(2).EQ.1) THEN
10937             KCC=22
10938           ELSE
10939 C...W exchange: need to mix flavours according to CKM matrix
10940             DO 280 JT=1,2
10941               I=MINT(14+JT)
10942               IA=IABS(I)
10943               IF(IA.LE.10) THEN
10944                 RVCKM=VINT(180+I)*PYR(0)
10945                 DO 270 J=1,MSTP(1)
10946                   IB=2*J-1+MOD(IA,2)
10947                   IPM=(5-ISIGN(1,I))/2
10948                   IDC=J+MDCY(IA,2)+2
10949                   IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270
10950                   MINT(20+JT)=ISIGN(IB,I)
10951                   RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10952                   IF(RVCKM.LE.0D0) GOTO 280
10953   270           CONTINUE
10954               ELSE
10955                 IB=2*((IA+1)/2)-1+MOD(IA,2)
10956                 MINT(20+JT)=ISIGN(IB,I)
10957               ENDIF
10958   280       CONTINUE
10959             KCC=22
10960           ENDIF
10961         ENDIF
10962  
10963       ELSEIF(ISUB.LE.20) THEN
10964         IF(ISUB.EQ.11) THEN
10965 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
10966           KCC=MINT(2)
10967           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10968  
10969         ELSEIF(ISUB.EQ.12) THEN
10970 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
10971           MINT(21)=ISIGN(KFLF,MINT(15))
10972           MINT(22)=-MINT(21)
10973           KCC=4
10974  
10975         ELSEIF(ISUB.EQ.13) THEN
10976 C...f + fbar -> g + g; th arbitrary
10977           MINT(21)=21
10978           MINT(22)=21
10979           KCC=MINT(2)+4
10980  
10981         ELSEIF(ISUB.EQ.14) THEN
10982 C...f + fbar -> g + gamma; th arbitrary
10983           IF(PYR(0).GT.0.5D0) JS=2
10984           MINT(20+JS)=21
10985           MINT(23-JS)=22
10986           KCC=17+JS
10987  
10988         ELSEIF(ISUB.EQ.15) THEN
10989 C...f + fbar -> g + Z0; th arbitrary
10990           IF(PYR(0).GT.0.5D0) JS=2
10991           MINT(20+JS)=21
10992           MINT(23-JS)=23
10993           KCC=17+JS
10994  
10995         ELSEIF(ISUB.EQ.16) THEN
10996 C...f + fbar' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10997           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10998           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10999           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
11000           MINT(20+JS)=21
11001           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
11002           KCC=17+JS
11003  
11004         ELSEIF(ISUB.EQ.17) THEN
11005 C...f + fbar -> g + h0; th arbitrary
11006           IF(PYR(0).GT.0.5D0) JS=2
11007           MINT(20+JS)=21
11008           MINT(23-JS)=25
11009           KCC=17+JS
11010  
11011         ELSEIF(ISUB.EQ.18) THEN
11012 C...f + fbar -> gamma + gamma; th arbitrary
11013           MINT(21)=22
11014           MINT(22)=22
11015  
11016         ELSEIF(ISUB.EQ.19) THEN
11017 C...f + fbar -> gamma + Z0; th arbitrary
11018           IF(PYR(0).GT.0.5D0) JS=2
11019           MINT(20+JS)=22
11020           MINT(23-JS)=23
11021  
11022         ELSEIF(ISUB.EQ.20) THEN
11023 C...f + fbar' -> gamma + W+/-; th = (p(f)-p(W-))**2 or
11024 C...(p(fbar')-p(W+))**2
11025           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11026           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11027           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
11028           MINT(20+JS)=22
11029           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
11030         ENDIF
11031  
11032       ELSEIF(ISUB.LE.30) THEN
11033         IF(ISUB.EQ.21) THEN
11034 C...f + fbar -> gamma + h0; th arbitrary
11035           IF(PYR(0).GT.0.5D0) JS=2
11036           MINT(20+JS)=22
11037           MINT(23-JS)=25
11038  
11039         ELSEIF(ISUB.EQ.22) THEN
11040 C...f + fbar -> Z0 + Z0; th arbitrary
11041           MINT(21)=23
11042           MINT(22)=23
11043  
11044         ELSEIF(ISUB.EQ.23) THEN
11045 C...f + fbar' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
11046           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11047           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11048           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
11049           MINT(20+JS)=23
11050           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
11051  
11052         ELSEIF(ISUB.EQ.24) THEN
11053 C...f + fbar -> Z0 + h0 (or H0, or A0); th arbitrary
11054           IF(PYR(0).GT.0.5D0) JS=2
11055           MINT(20+JS)=23
11056           MINT(23-JS)=KFHIGG
11057  
11058         ELSEIF(ISUB.EQ.25) THEN
11059 C...f + fbar -> W+ + W-; th = (p(f)-p(W-))**2
11060           MINT(21)=-ISIGN(24,MINT(15))
11061           MINT(22)=-MINT(21)
11062  
11063         ELSEIF(ISUB.EQ.26) THEN
11064 C...f + fbar' -> W+/- + h0 (or H0, or A0);
11065 C...th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
11066           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11067           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11068           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
11069           MINT(20+JS)=ISIGN(24,KCH1+KCH2)
11070           MINT(23-JS)=KFHIGG
11071  
11072         ELSEIF(ISUB.EQ.27) THEN
11073 C...f + fbar -> h0 + h0
11074  
11075         ELSEIF(ISUB.EQ.28) THEN
11076 C...f + g -> f + g; th = (p(f)-p(f))**2
11077           IF(MINT(15).EQ.21) JS=2
11078           KCC=MINT(2)+6
11079           IF(MINT(15).EQ.21) KCC=KCC+2
11080           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
11081           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
11082  
11083         ELSEIF(ISUB.EQ.29) THEN
11084 C...f + g -> f + gamma; th = (p(f)-p(f))**2
11085           IF(MINT(15).EQ.21) JS=2
11086           MINT(23-JS)=22
11087           KCC=15+JS
11088           KCS=ISIGN(1,MINT(14+JS))
11089  
11090         ELSEIF(ISUB.EQ.30) THEN
11091 C...f + g -> f + Z0; th = (p(f)-p(f))**2
11092           IF(MINT(15).EQ.21) JS=2
11093           MINT(23-JS)=23
11094           KCC=15+JS
11095           KCS=ISIGN(1,MINT(14+JS))
11096         ENDIF
11097  
11098       ELSEIF(ISUB.LE.40) THEN
11099         IF(ISUB.EQ.31) THEN
11100 C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f'
11101           IF(MINT(15).EQ.21) JS=2
11102           I=MINT(14+JS)
11103           IA=IABS(I)
11104           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
11105           RVCKM=VINT(180+I)*PYR(0)
11106           DO 290 J=1,MSTP(1)
11107             IB=2*J-1+MOD(IA,2)
11108             IPM=(5-ISIGN(1,I))/2
11109             IDC=J+MDCY(IA,2)+2
11110             IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290
11111             MINT(20+JS)=ISIGN(IB,I)
11112             RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11113             IF(RVCKM.LE.0D0) GOTO 300
11114   290     CONTINUE
11115   300     KCC=15+JS
11116           KCS=ISIGN(1,MINT(14+JS))
11117  
11118         ELSEIF(ISUB.EQ.32) THEN
11119 C...f + g -> f + h0; th = (p(f)-p(f))**2
11120           IF(MINT(15).EQ.21) JS=2
11121           MINT(23-JS)=25
11122           KCC=15+JS
11123           KCS=ISIGN(1,MINT(14+JS))
11124  
11125         ELSEIF(ISUB.EQ.33) THEN
11126 C...f + gamma -> f + g; th=(p(f)-p(f))**2
11127           IF(MINT(15).EQ.22) JS=2
11128           MINT(23-JS)=21
11129           KCC=24+JS
11130           KCS=ISIGN(1,MINT(14+JS))
11131  
11132         ELSEIF(ISUB.EQ.34) THEN
11133 C...f + gamma -> f + gamma; th=(p(f)-p(f))**2
11134           IF(MINT(15).EQ.22) JS=2
11135           KCC=22
11136           KCS=ISIGN(1,MINT(14+JS))
11137  
11138         ELSEIF(ISUB.EQ.35) THEN
11139 C...f + gamma -> f + Z0; th=(p(f)-p(f))**2
11140           IF(MINT(15).EQ.22) JS=2
11141           MINT(23-JS)=23
11142           KCC=22
11143  
11144         ELSEIF(ISUB.EQ.36) THEN
11145 C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2
11146           IF(MINT(15).EQ.22) JS=2
11147           I=MINT(14+JS)
11148           IA=IABS(I)
11149           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
11150           IF(IA.LE.10) THEN
11151             RVCKM=VINT(180+I)*PYR(0)
11152             DO 310 J=1,MSTP(1)
11153               IB=2*J-1+MOD(IA,2)
11154               IPM=(5-ISIGN(1,I))/2
11155               IDC=J+MDCY(IA,2)+2
11156               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310
11157               MINT(20+JS)=ISIGN(IB,I)
11158               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11159               IF(RVCKM.LE.0D0) GOTO 320
11160   310       CONTINUE
11161           ELSE
11162             IB=2*((IA+1)/2)-1+MOD(IA,2)
11163             MINT(20+JS)=ISIGN(IB,I)
11164           ENDIF
11165   320     KCC=22
11166  
11167         ELSEIF(ISUB.EQ.37) THEN
11168 C...f + gamma -> f + h0
11169  
11170         ELSEIF(ISUB.EQ.38) THEN
11171 C...f + Z0 -> f + g
11172  
11173         ELSEIF(ISUB.EQ.39) THEN
11174 C...f + Z0 -> f + gamma
11175  
11176         ELSEIF(ISUB.EQ.40) THEN
11177 C...f + Z0 -> f + Z0
11178         ENDIF
11179  
11180       ELSEIF(ISUB.LE.50) THEN
11181         IF(ISUB.EQ.41) THEN
11182 C...f + Z0 -> f' + W+/-
11183  
11184         ELSEIF(ISUB.EQ.42) THEN
11185 C...f + Z0 -> f + h0
11186  
11187         ELSEIF(ISUB.EQ.43) THEN
11188 C...f + W+/- -> f' + g
11189  
11190         ELSEIF(ISUB.EQ.44) THEN
11191 C...f + W+/- -> f' + gamma
11192  
11193         ELSEIF(ISUB.EQ.45) THEN
11194 C...f + W+/- -> f' + Z0
11195  
11196         ELSEIF(ISUB.EQ.46) THEN
11197 C...f + W+/- -> f' + W+/-
11198  
11199         ELSEIF(ISUB.EQ.47) THEN
11200 C...f + W+/- -> f' + h0
11201  
11202         ELSEIF(ISUB.EQ.48) THEN
11203 C...f + h0 -> f + g
11204  
11205         ELSEIF(ISUB.EQ.49) THEN
11206 C...f + h0 -> f + gamma
11207  
11208         ELSEIF(ISUB.EQ.50) THEN
11209 C...f + h0 -> f + Z0
11210         ENDIF
11211  
11212       ELSEIF(ISUB.LE.60) THEN
11213         IF(ISUB.EQ.51) THEN
11214 C...f + h0 -> f' + W+/-
11215  
11216         ELSEIF(ISUB.EQ.52) THEN
11217 C...f + h0 -> f + h0
11218  
11219         ELSEIF(ISUB.EQ.53) THEN
11220 C...g + g -> f + fbar; th arbitrary
11221           KCS=(-1)**INT(1.5D0+PYR(0))
11222           MINT(21)=ISIGN(KFLF,KCS)
11223           MINT(22)=-MINT(21)
11224           KCC=MINT(2)+10
11225  
11226         ELSEIF(ISUB.EQ.54) THEN
11227 C...g + gamma -> f + fbar; th arbitrary
11228           KCS=(-1)**INT(1.5D0+PYR(0))
11229           MINT(21)=ISIGN(KFLF,KCS)
11230           MINT(22)=-MINT(21)
11231           KCC=27
11232           IF(MINT(16).EQ.21) KCC=28
11233  
11234         ELSEIF(ISUB.EQ.55) THEN
11235 C...g + Z0 -> f + fbar
11236  
11237         ELSEIF(ISUB.EQ.56) THEN
11238 C...g + W+/- -> f + fbar'
11239  
11240         ELSEIF(ISUB.EQ.57) THEN
11241 C...g + h0 -> f + fbar
11242  
11243         ELSEIF(ISUB.EQ.58) THEN
11244 C...gamma + gamma -> f + fbar; th arbitrary
11245           KCS=(-1)**INT(1.5D0+PYR(0))
11246           MINT(21)=ISIGN(KFLF,KCS)
11247           MINT(22)=-MINT(21)
11248           KCC=21
11249  
11250         ELSEIF(ISUB.EQ.59) THEN
11251 C...gamma + Z0 -> f + fbar
11252  
11253         ELSEIF(ISUB.EQ.60) THEN
11254 C...gamma + W+/- -> f + fbar'
11255         ENDIF
11256  
11257       ELSEIF(ISUB.LE.70) THEN
11258         IF(ISUB.EQ.61) THEN
11259 C...gamma + h0 -> f + fbar
11260  
11261         ELSEIF(ISUB.EQ.62) THEN
11262 C...Z0 + Z0 -> f + fbar
11263  
11264         ELSEIF(ISUB.EQ.63) THEN
11265 C...Z0 + W+/- -> f + fbar'
11266  
11267         ELSEIF(ISUB.EQ.64) THEN
11268 C...Z0 + h0 -> f + fbar
11269  
11270         ELSEIF(ISUB.EQ.65) THEN
11271 C...W+ + W- -> f + fbar
11272  
11273         ELSEIF(ISUB.EQ.66) THEN
11274 C...W+/- + h0 -> f + fbar'
11275  
11276         ELSEIF(ISUB.EQ.67) THEN
11277 C...h0 + h0 -> f + fbar
11278  
11279         ELSEIF(ISUB.EQ.68) THEN
11280 C...g + g -> g + g; th arbitrary
11281           KCC=MINT(2)+12
11282           KCS=(-1)**INT(1.5D0+PYR(0))
11283  
11284         ELSEIF(ISUB.EQ.69) THEN
11285 C...gamma + gamma -> W+ + W-; th arbitrary
11286           MINT(21)=24
11287           MINT(22)=-24
11288           KCC=21
11289  
11290         ELSEIF(ISUB.EQ.70) THEN
11291 C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2
11292           IF(MINT(15).EQ.22) MINT(21)=23
11293           IF(MINT(16).EQ.22) MINT(22)=23
11294           KCC=21
11295         ENDIF
11296  
11297       ELSEIF(ISUB.LE.80) THEN
11298         IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN
11299 C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W-
11300           XH=SH/SHP
11301           MINT(21)=MINT(15)
11302           MINT(22)=MINT(16)
11303           PMQ(1)=PYMASS(MINT(21))
11304           PMQ(2)=PYMASS(MINT(22))
11305   330     JT=INT(1.5D0+PYR(0))
11306           ZMIN=2D0*PMQ(JT)/SHPR
11307           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
11308      &    (SHPR*(SHPR-PMQ(3-JT)))
11309           ZMAX=MIN(1D0-XH,ZMAX)
11310           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
11311           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
11312      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 330
11313           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
11314           IF(SQC1.LT.1D-8) GOTO 330
11315           C1=SQRT(SQC1)
11316           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
11317           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11318           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
11319           Z(3-JT)=1D0-XH/(1D0-Z(JT))
11320           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
11321           IF(SQC1.LT.1D-8) GOTO 330
11322           C1=SQRT(SQC1)
11323           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
11324           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11325           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
11326           PHIR=PARU(2)*PYR(0)
11327           CPHI=COS(PHIR)
11328           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
11329      &    SQRT(1D0-CTHE(2)**2)*CPHI
11330           Z1=2D0-Z(JT)
11331           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
11332           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
11333           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
11334      &    PMQ(3-JT)**2/SHP))
11335           ZMIN=2D0*PMQ(3-JT)/SHPR
11336           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
11337           ZMAX=MIN(1D0-XH,ZMAX)
11338           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330
11339           KCC=22
11340  
11341         ELSEIF(ISUB.EQ.73) THEN
11342 C...Z0 + W+/- -> Z0 + W+/-
11343           JS=MINT(2)
11344           XH=SH/SHP
11345   340     JT=3-MINT(2)
11346           I=MINT(14+JT)
11347           IA=IABS(I)
11348           IF(IA.LE.10) THEN
11349             RVCKM=VINT(180+I)*PYR(0)
11350             DO 350 J=1,MSTP(1)
11351               IB=2*J-1+MOD(IA,2)
11352               IPM=(5-ISIGN(1,I))/2
11353               IDC=J+MDCY(IA,2)+2
11354               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350
11355               MINT(20+JT)=ISIGN(IB,I)
11356               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11357               IF(RVCKM.LE.0D0) GOTO 360
11358   350       CONTINUE
11359           ELSE
11360             IB=2*((IA+1)/2)-1+MOD(IA,2)
11361             MINT(20+JT)=ISIGN(IB,I)
11362           ENDIF
11363   360     PMQ(JT)=PYMASS(MINT(20+JT))
11364           MINT(23-JT)=MINT(17-JT)
11365           PMQ(3-JT)=PYMASS(MINT(23-JT))
11366           JT=INT(1.5D0+PYR(0))
11367           ZMIN=2D0*PMQ(JT)/SHPR
11368           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
11369      &    (SHPR*(SHPR-PMQ(3-JT)))
11370           ZMAX=MIN(1D0-XH,ZMAX)
11371           IF(ZMIN.GE.ZMAX) GOTO 340
11372           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
11373           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
11374      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 340
11375           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
11376           IF(SQC1.LT.1D-8) GOTO 340
11377           C1=SQRT(SQC1)
11378           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
11379           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11380           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
11381           Z(3-JT)=1D0-XH/(1D0-Z(JT))
11382           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
11383           IF(SQC1.LT.1D-8) GOTO 340
11384           C1=SQRT(SQC1)
11385           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
11386           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11387           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
11388           PHIR=PARU(2)*PYR(0)
11389           CPHI=COS(PHIR)
11390           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
11391      &    SQRT(1D0-CTHE(2)**2)*CPHI
11392           Z1=2D0-Z(JT)
11393           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
11394           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
11395           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
11396      &    PMQ(3-JT)**2/SHP))
11397           ZMIN=2D0*PMQ(3-JT)/SHPR
11398           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
11399           ZMAX=MIN(1D0-XH,ZMAX)
11400           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340
11401           KCC=22
11402  
11403         ELSEIF(ISUB.EQ.74) THEN
11404 C...Z0 + h0 -> Z0 + h0
11405  
11406         ELSEIF(ISUB.EQ.75) THEN
11407 C...W+ + W- -> gamma + gamma
11408  
11409         ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN
11410 C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W-
11411           XH=SH/SHP
11412   370     DO 400 JT=1,2
11413             I=MINT(14+JT)
11414             IA=IABS(I)
11415             IF(IA.LE.10) THEN
11416               RVCKM=VINT(180+I)*PYR(0)
11417               DO 380 J=1,MSTP(1)
11418                 IB=2*J-1+MOD(IA,2)
11419                 IPM=(5-ISIGN(1,I))/2
11420                 IDC=J+MDCY(IA,2)+2
11421                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380
11422                 MINT(20+JT)=ISIGN(IB,I)
11423                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11424                 IF(RVCKM.LE.0D0) GOTO 390
11425   380         CONTINUE
11426             ELSE
11427               IB=2*((IA+1)/2)-1+MOD(IA,2)
11428               MINT(20+JT)=ISIGN(IB,I)
11429             ENDIF
11430   390       PMQ(JT)=PYMASS(MINT(20+JT))
11431   400     CONTINUE
11432           JT=INT(1.5D0+PYR(0))
11433           ZMIN=2D0*PMQ(JT)/SHPR
11434           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
11435      &    (SHPR*(SHPR-PMQ(3-JT)))
11436           ZMAX=MIN(1D0-XH,ZMAX)
11437           IF(ZMIN.GE.ZMAX) GOTO 370
11438           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
11439           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
11440      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 370
11441           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
11442           IF(SQC1.LT.1D-8) GOTO 370
11443           C1=SQRT(SQC1)
11444           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
11445           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11446           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
11447           Z(3-JT)=1D0-XH/(1D0-Z(JT))
11448           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
11449           IF(SQC1.LT.1D-8) GOTO 370
11450           C1=SQRT(SQC1)
11451           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
11452           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11453           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
11454           PHIR=PARU(2)*PYR(0)
11455           CPHI=COS(PHIR)
11456           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
11457      &    SQRT(1D0-CTHE(2)**2)*CPHI
11458           Z1=2D0-Z(JT)
11459           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
11460           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
11461           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
11462      &    PMQ(3-JT)**2/SHP))
11463           ZMIN=2D0*PMQ(3-JT)/SHPR
11464           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
11465           ZMAX=MIN(1D0-XH,ZMAX)
11466           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370
11467           KCC=22
11468  
11469         ELSEIF(ISUB.EQ.78) THEN
11470 C...W+/- + h0 -> W+/- + h0
11471  
11472         ELSEIF(ISUB.EQ.79) THEN
11473 C...h0 + h0 -> h0 + h0
11474  
11475         ELSEIF(ISUB.EQ.80) THEN
11476 C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2
11477           IF(MINT(15).EQ.22) JS=2
11478           I=MINT(14+JS)
11479           IA=IABS(I)
11480           MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I)
11481           IB=3-IA
11482           MINT(20+JS)=ISIGN(IB,I)
11483           KCC=22
11484         ENDIF
11485  
11486       ELSEIF(ISUB.LE.90) THEN
11487         IF(ISUB.EQ.81) THEN
11488 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2
11489           MINT(21)=ISIGN(MINT(55),MINT(15))
11490           MINT(22)=-MINT(21)
11491           KCC=4
11492  
11493         ELSEIF(ISUB.EQ.82) THEN
11494 C...g + g -> Q + Qbar; th arbitrary
11495           KCS=(-1)**INT(1.5D0+PYR(0))
11496           MINT(21)=ISIGN(MINT(55),KCS)
11497           MINT(22)=-MINT(21)
11498           KCC=MINT(2)+10
11499  
11500         ELSEIF(ISUB.EQ.83) THEN
11501 C...f + q -> f' + Q; th = (p(f) - p(f'))**2
11502           KFOLD=MINT(16)
11503           IF(MINT(2).EQ.2) KFOLD=MINT(15)
11504           KFAOLD=IABS(KFOLD)
11505           IF(KFAOLD.GT.10) THEN
11506             KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1
11507           ELSE
11508             RCKM=VINT(180+KFOLD)*PYR(0)
11509             IPM=(5-ISIGN(1,KFOLD))/2
11510             KFANEW=-MOD(KFAOLD+1,2)
11511   410       KFANEW=KFANEW+2
11512             IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2
11513             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN
11514               IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM-
11515      &        VCKM(KFAOLD/2,(KFANEW+1)/2)
11516               IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM-
11517      &        VCKM(KFANEW/2,(KFAOLD+1)/2)
11518             ENDIF
11519             IF(KFANEW.LE.6.AND.RCKM.GT.0D0) GOTO 410
11520           ENDIF
11521           IF(MINT(2).EQ.1) THEN
11522             MINT(21)=ISIGN(MINT(55),MINT(15))
11523             MINT(22)=ISIGN(KFANEW,MINT(16))
11524           ELSE
11525             MINT(21)=ISIGN(KFANEW,MINT(15))
11526             MINT(22)=ISIGN(MINT(55),MINT(16))
11527             JS=2
11528           ENDIF
11529           KCC=22
11530  
11531         ELSEIF(ISUB.EQ.84) THEN
11532 C...g + gamma -> Q + Qbar; th arbitary
11533           KCS=(-1)**INT(1.5D0+PYR(0))
11534           MINT(21)=ISIGN(MINT(55),KCS)
11535           MINT(22)=-MINT(21)
11536           KCC=27
11537           IF(MINT(16).EQ.21) KCC=28
11538  
11539         ELSEIF(ISUB.EQ.85) THEN
11540 C...gamma + gamma -> F + Fbar; th arbitary
11541           KCS=(-1)**INT(1.5D0+PYR(0))
11542           MINT(21)=ISIGN(MINT(56),KCS)
11543           MINT(22)=-MINT(21)
11544           KCC=21
11545  
11546         ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN
11547 C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g
11548           MINT(21)=KFPR(ISUB,1)
11549           MINT(22)=KFPR(ISUB,2)
11550           KCC=24
11551           KCS=(-1)**INT(1.5D0+PYR(0))
11552         ENDIF
11553  
11554       ELSEIF(ISUB.LE.100) THEN
11555         IF(ISUB.EQ.95) THEN
11556 C...Low-pT ( = energyless g + g -> g + g)
11557           KCC=MINT(2)+12
11558           KCS=(-1)**INT(1.5D0+PYR(0))
11559  
11560         ELSEIF(ISUB.EQ.96) THEN
11561 C...Multiple interactions (should be reassigned to QCD process)
11562         ENDIF
11563  
11564       ELSEIF(ISUB.LE.110) THEN
11565         IF(ISUB.EQ.101) THEN
11566 C...g + g -> gamma*/Z0
11567           KCC=21
11568           KFRES=22
11569  
11570         ELSEIF(ISUB.EQ.102) THEN
11571 C...g + g -> h0 (or H0, or A0)
11572           KCC=21
11573           KFRES=KFHIGG
11574  
11575         ELSEIF(ISUB.EQ.103) THEN
11576 C...gamma + gamma -> h0 (or H0, or A0)
11577           KCC=21
11578           KFRES=KFHIGG
11579  
11580         ELSEIF(ISUB.EQ.104.OR.ISUB.EQ.105) THEN
11581 C...g + g -> chi_0c or chi_2c.
11582           KCC=21
11583           KFRES=KFPR(ISUB,1)
11584  
11585         ELSEIF(ISUB.EQ.106) THEN
11586 C...g + g -> J/Psi + gamma
11587           MINT(21)=KFPR(ISUB,1)
11588           MINT(22)=KFPR(ISUB,2)
11589           KCC=21
11590  
11591         ELSEIF(ISUB.EQ.107) THEN
11592 C...g + gamma -> J/Psi + g
11593           MINT(21)=KFPR(ISUB,1)
11594           MINT(22)=KFPR(ISUB,2)
11595           KCC=22
11596           IF(MINT(16).EQ.22) KCC=33
11597  
11598         ELSEIF(ISUB.EQ.108) THEN
11599 C...gamma + gamma -> J/Psi + gamma
11600           MINT(21)=KFPR(ISUB,1)
11601           MINT(22)=KFPR(ISUB,2)
11602  
11603         ELSEIF(ISUB.EQ.110) THEN
11604 C...f + fbar -> gamma + h0; th arbitrary
11605           IF(PYR(0).GT.0.5D0) JS=2
11606           MINT(20+JS)=22
11607           MINT(23-JS)=KFHIGG
11608         ENDIF
11609  
11610       ELSEIF(ISUB.LE.120) THEN
11611         IF(ISUB.EQ.111) THEN
11612 C...f + fbar -> g + h0; th arbitrary
11613           IF(PYR(0).GT.0.5D0) JS=2
11614           MINT(20+JS)=21
11615           MINT(23-JS)=KFHIGG
11616           KCC=17+JS
11617  
11618         ELSEIF(ISUB.EQ.112) THEN
11619 C...f + g -> f + h0; th = (p(f) - p(f))**2
11620           IF(MINT(15).EQ.21) JS=2
11621           MINT(23-JS)=KFHIGG
11622           KCC=15+JS
11623           KCS=ISIGN(1,MINT(14+JS))
11624  
11625         ELSEIF(ISUB.EQ.113) THEN
11626 C...g + g -> g + h0; th arbitrary
11627           IF(PYR(0).GT.0.5D0) JS=2
11628           MINT(23-JS)=KFHIGG
11629           KCC=22+JS
11630           KCS=(-1)**INT(1.5D0+PYR(0))
11631  
11632         ELSEIF(ISUB.EQ.114) THEN
11633 C...g + g -> gamma + gamma; th arbitrary
11634           IF(PYR(0).GT.0.5D0) JS=2
11635           MINT(21)=22
11636           MINT(22)=22
11637           KCC=21
11638  
11639         ELSEIF(ISUB.EQ.115) THEN
11640 C...g + g -> g + gamma; th arbitrary
11641           IF(PYR(0).GT.0.5D0) JS=2
11642           MINT(23-JS)=22
11643           KCC=22+JS
11644           KCS=(-1)**INT(1.5D0+PYR(0))
11645  
11646         ELSEIF(ISUB.EQ.116) THEN
11647 C...g + g -> gamma + Z0
11648  
11649         ELSEIF(ISUB.EQ.117) THEN
11650 C...g + g -> Z0 + Z0
11651  
11652         ELSEIF(ISUB.EQ.118) THEN
11653 C...g + g -> W+ + W-
11654         ENDIF
11655  
11656       ELSEIF(ISUB.LE.140) THEN
11657         IF(ISUB.EQ.121) THEN
11658 C...g + g -> Q + Qbar + h0
11659           KCS=(-1)**INT(1.5D0+PYR(0))
11660           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
11661           MINT(22)=-MINT(21)
11662           KCC=11+INT(0.5D0+PYR(0))
11663           KFRES=KFHIGG
11664  
11665         ELSEIF(ISUB.EQ.122) THEN
11666 C...q + qbar -> Q + Qbar + h0
11667           MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15))
11668           MINT(22)=-MINT(21)
11669           KCC=4
11670           KFRES=KFHIGG
11671  
11672         ELSEIF(ISUB.EQ.123) THEN
11673 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
11674 C...inner process)
11675           KCC=22
11676           KFRES=KFHIGG
11677  
11678         ELSEIF(ISUB.EQ.124) THEN
11679 C...f + f' -> f" + f"' + h0 (or H0, or A) (W+ + W- -> h0 as
11680 C...inner process)
11681           DO 430 JT=1,2
11682             I=MINT(14+JT)
11683             IA=IABS(I)
11684             IF(IA.LE.10) THEN
11685               RVCKM=VINT(180+I)*PYR(0)
11686               DO 420 J=1,MSTP(1)
11687                 IB=2*J-1+MOD(IA,2)
11688                 IPM=(5-ISIGN(1,I))/2
11689                 IDC=J+MDCY(IA,2)+2
11690                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420
11691                 MINT(20+JT)=ISIGN(IB,I)
11692                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11693                 IF(RVCKM.LE.0D0) GOTO 430
11694   420         CONTINUE
11695             ELSE
11696               IB=2*((IA+1)/2)-1+MOD(IA,2)
11697               MINT(20+JT)=ISIGN(IB,I)
11698             ENDIF
11699   430     CONTINUE
11700           KCC=22
11701           KFRES=KFHIGG
11702  
11703         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
11704 C...f + gamma*_(T,L) -> f + g; th=(p(f)-p(f))**2
11705           IF(MINT(15).EQ.22) JS=2
11706           MINT(23-JS)=21
11707           KCC=24+JS
11708           KCS=ISIGN(1,MINT(14+JS))
11709  
11710         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
11711 C...f + gamma*_(T,L) -> f + gamma; th=(p(f)-p(f))**2
11712           IF(MINT(15).EQ.22) JS=2
11713           KCC=22
11714           KCS=ISIGN(1,MINT(14+JS))
11715  
11716         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
11717 C...g + gamma*_(T,L) -> f + fbar; th arbitrary
11718           KCS=(-1)**INT(1.5D0+PYR(0))
11719           MINT(21)=ISIGN(KFLF,KCS)
11720           MINT(22)=-MINT(21)
11721           KCC=27
11722           IF(MINT(16).EQ.21) KCC=28
11723  
11724         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
11725 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar; th arbitrary
11726           KCS=(-1)**INT(1.5D0+PYR(0))
11727           MINT(21)=ISIGN(KFLF,KCS)
11728           MINT(22)=-MINT(21)
11729           KCC=21
11730  
11731         ENDIF
11732  
11733       ELSEIF(ISUB.LE.160) THEN
11734         IF(ISUB.EQ.141) THEN
11735 C...f + fbar -> gamma*/Z0/Z'0
11736           KFRES=32
11737  
11738         ELSEIF(ISUB.EQ.142) THEN
11739 C...f + fbar' -> W'+/-
11740           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11741           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11742           KFRES=ISIGN(34,KCH1+KCH2)
11743  
11744         ELSEIF(ISUB.EQ.143) THEN
11745 C...f + fbar' -> H+/-
11746           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11747           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11748           KFRES=ISIGN(37,KCH1+KCH2)
11749  
11750         ELSEIF(ISUB.EQ.144) THEN
11751 C...f + fbar' -> R
11752           KFRES=ISIGN(41,MINT(15)+MINT(16))
11753  
11754         ELSEIF(ISUB.EQ.145) THEN
11755 C...q + l -> LQ (leptoquark)
11756           IF(IABS(MINT(16)).LE.8) JS=2
11757           KFRES=ISIGN(42,MINT(14+JS))
11758           KCC=28+JS
11759           KCS=ISIGN(1,MINT(14+JS))
11760  
11761         ELSEIF(ISUB.EQ.146) THEN
11762 C...e + gamma -> e* (excited lepton)
11763           IF(MINT(15).EQ.22) JS=2
11764           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
11765           KCC=22
11766  
11767         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
11768 C...q + g -> q* (excited quark)
11769           IF(MINT(15).EQ.21) JS=2
11770           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
11771           KCC=30+JS
11772           KCS=ISIGN(1,MINT(14+JS))
11773  
11774         ELSEIF(ISUB.EQ.149) THEN
11775 C...g + g -> eta_tc
11776           KFRES=KTECHN+331
11777           KCC=23
11778           KCS=(-1)**INT(1.5D0+PYR(0))
11779         ENDIF
11780  
11781       ELSEIF(ISUB.LE.200) THEN
11782         IF(ISUB.EQ.161) THEN
11783 C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2
11784           IF(MINT(15).EQ.21) JS=2
11785           I=MINT(14+JS)
11786           IA=IABS(I)
11787           MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I)
11788           IB=IA+MOD(IA,2)-MOD(IA+1,2)
11789           MINT(20+JS)=ISIGN(IB,I)
11790           KCC=15+JS
11791           KCS=ISIGN(1,MINT(14+JS))
11792  
11793         ELSEIF(ISUB.EQ.162) THEN
11794 C...q + g -> LQ + lbar; LQ=leptoquark; th=(p(q)-p(LQ))^2
11795           IF(MINT(15).EQ.21) JS=2
11796           MINT(20+JS)=ISIGN(42,MINT(14+JS))
11797           KFLQL=KFDP(MDCY(42,2),2)
11798           MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS))
11799           KCC=15+JS
11800           KCS=ISIGN(1,MINT(14+JS))
11801  
11802         ELSEIF(ISUB.EQ.163) THEN
11803 C...g + g -> LQ + LQbar; LQ=leptoquark; th arbitrary
11804           KCS=(-1)**INT(1.5D0+PYR(0))
11805           MINT(21)=ISIGN(42,KCS)
11806           MINT(22)=-MINT(21)
11807           KCC=MINT(2)+10
11808  
11809         ELSEIF(ISUB.EQ.164) THEN
11810 C...q + qbar -> LQ + LQbar; LQ=leptoquark; th=(p(q)-p(LQ))**2
11811           MINT(21)=ISIGN(42,MINT(15))
11812           MINT(22)=-MINT(21)
11813           KCC=4
11814  
11815         ELSEIF(ISUB.EQ.165) THEN
11816 C...q + qbar -> l- + l+; th=(p(q)-p(l-))**2
11817           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11818           MINT(22)=-MINT(21)
11819  
11820         ELSEIF(ISUB.EQ.166) THEN
11821 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
11822           IF(MOD(MINT(15),2).EQ.0) THEN
11823             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
11824             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
11825           ELSE
11826             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11827             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
11828           ENDIF
11829  
11830         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
11831 C...q + q' -> q" + q* (excited quark)
11832           KFQSTR=KFPR(ISUB,2)
11833           KFQEXC=MOD(KFQSTR,KEXCIT)
11834           JS=MINT(2)
11835           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
11836           IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC)
11837      &    MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
11838           KCC=22
11839           JS=3-JS
11840  
11841         ELSEIF(ISUB.EQ.169) THEN
11842 C...q + qbar -> e + e* (excited lepton)
11843           KFQSTR=KFPR(ISUB,2)
11844           KFQEXC=MOD(KFQSTR,KEXCIT)
11845           JS=MINT(2)
11846           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
11847           MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
11848           JS=3-JS
11849  
11850         ELSEIF(ISUB.EQ.191) THEN
11851 C...f + fbar -> rho_tc0.
11852           KFRES=KTECHN+113
11853  
11854         ELSEIF(ISUB.EQ.192) THEN
11855 C...f + fbar' -> rho_tc+/-
11856           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11857           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11858           KFRES=ISIGN(KTECHN+213,KCH1+KCH2)
11859  
11860         ELSEIF(ISUB.EQ.193) THEN
11861 C...f + fbar -> omega_tc0.
11862           KFRES=KTECHN+223
11863  
11864         ELSEIF(ISUB.EQ.194) THEN
11865 C...f + fbar -> f' + fbar' via mixture of s-channel
11866 C...rho_tc and omega_tc; th=(p(f)-p(f'))**2
11867           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11868           MINT(22)=-MINT(21)
11869  
11870         ELSEIF(ISUB.EQ.195) THEN
11871 C...f + fbar' -> f'' + fbar''' via s-channel
11872 C...rho_tc+ th=(p(f)-p(f'))**2
11873 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
11874           IF(MOD(MINT(15),2).EQ.0) THEN
11875             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
11876             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
11877           ELSE
11878             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11879             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
11880           ENDIF
11881         ENDIF
11882  
11883 CMRENNA++
11884       ELSEIF(ISUB.LE.215) THEN
11885         IF(ISUB.EQ.201) THEN
11886 C...f + fbar -> ~e_L + ~e_Lbar
11887           MINT(21)=ISIGN(KSUSY1+11,KCS)
11888           MINT(22)=-MINT(21)
11889  
11890         ELSEIF(ISUB.EQ.202) THEN
11891 C...f + fbar -> ~e_R + ~e_Rbar
11892           MINT(21)=ISIGN(KSUSY2+11,KCS)
11893           MINT(22)=-MINT(21)
11894  
11895         ELSEIF(ISUB.EQ.203) THEN
11896 C...f + fbar -> ~e_L + ~e_Rbar
11897           IF(MINT(15).LT.0) JS=2
11898           IF(MINT(2).EQ.1) THEN
11899             MINT(20+JS)=KFPR(ISUB,1)
11900             MINT(23-JS)=-KFPR(ISUB,2)
11901           ELSE
11902             MINT(20+JS)=-KFPR(ISUB,1)
11903             MINT(23-JS)=KFPR(ISUB,2)
11904           ENDIF
11905  
11906         ELSEIF(ISUB.EQ.204) THEN
11907 C...f + fbar -> ~mu_L + ~mu_Lbar
11908           MINT(21)=ISIGN(KSUSY1+13,KCS)
11909           MINT(22)=-MINT(21)
11910  
11911         ELSEIF(ISUB.EQ.205) THEN
11912 C...f + fbar -> ~mu_R + ~mu_Rbar
11913           MINT(21)=ISIGN(KSUSY2+13,KCS)
11914           MINT(22)=-MINT(21)
11915  
11916         ELSEIF(ISUB.EQ.206) THEN
11917 C...f + fbar -> ~mu_L + ~mu_Rbar
11918           IF(MINT(15).LT.0) JS=2
11919           IF(MINT(2).EQ.1) THEN
11920             MINT(20+JS)=KFPR(ISUB,1)
11921             MINT(23-JS)=-KFPR(ISUB,2)
11922           ELSE
11923             MINT(20+JS)=-KFPR(ISUB,1)
11924             MINT(23-JS)=KFPR(ISUB,2)
11925           ENDIF
11926  
11927         ELSEIF(ISUB.EQ.207) THEN
11928 C...f + fbar -> ~tau_1 + ~tau_1bar
11929           MINT(21)=ISIGN(KSUSY1+15,KCS)
11930           MINT(22)=-MINT(21)
11931  
11932         ELSEIF(ISUB.EQ.208) THEN
11933 C...f + fbar -> ~tau_2 + ~tau_2bar
11934           MINT(21)=ISIGN(KSUSY2+15,KCS)
11935           MINT(22)=-MINT(21)
11936  
11937         ELSEIF(ISUB.EQ.209) THEN
11938 C...f + fbar -> ~tau_1 + ~tau_2bar
11939           IF(MINT(15).LT.0) JS=2
11940           IF(MINT(2).EQ.1) THEN
11941             MINT(20+JS)=KFPR(ISUB,1)
11942             MINT(23-JS)=-KFPR(ISUB,2)
11943           ELSE
11944             MINT(20+JS)=-KFPR(ISUB,1)
11945             MINT(23-JS)=KFPR(ISUB,2)
11946           ENDIF
11947  
11948         ELSEIF(ISUB.EQ.210) THEN
11949 C...q + qbar' -> ~l_L + ~nulbar; th arbitrary
11950           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11951           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11952           MINT(21)=-ISIGN(KFPR(ISUB,1),KCH1+KCH2)
11953           MINT(22)=ISIGN(KFPR(ISUB,2),KCH1+KCH2)
11954  
11955         ELSEIF(ISUB.EQ.211) THEN
11956 C...q + qbar'-> ~tau_1 + ~nutaubar; th arbitrary
11957           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11958           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11959           MINT(21)=-ISIGN(KSUSY1+15,KCH1+KCH2)
11960           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
11961  
11962         ELSEIF(ISUB.EQ.212) THEN
11963 C...q + qbar'-> ~tau_2 + ~nutaubar; th arbitrary
11964           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11965           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11966           MINT(21)=-ISIGN(KSUSY2+15,KCH1+KCH2)
11967           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
11968  
11969         ELSEIF(ISUB.EQ.213) THEN
11970 C...f + fbar -> ~nul + ~nulbar
11971           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11972           MINT(22)=-MINT(21)
11973  
11974         ELSEIF(ISUB.EQ.214) THEN
11975 C...f + fbar -> ~nutau + ~nutaubar
11976           MINT(21)=ISIGN(KSUSY1+16,KCS)
11977           MINT(22)=-MINT(21)
11978         ENDIF
11979  
11980       ELSEIF(ISUB.LE.225) THEN
11981         IF(ISUB.EQ.216) THEN
11982 C...f + fbar -> ~chi01 + ~chi01
11983           MINT(21)=KSUSY1+22
11984           MINT(22)=KSUSY1+22
11985  
11986         ELSEIF(ISUB.EQ.217) THEN
11987 C...f + fbar -> ~chi02 + ~chi02
11988           MINT(21)=KSUSY1+23
11989           MINT(22)=KSUSY1+23
11990  
11991         ELSEIF(ISUB.EQ.218 ) THEN
11992 C...f + fbar -> ~chi03 + ~chi03
11993           MINT(21)=KSUSY1+25
11994           MINT(22)=KSUSY1+25
11995  
11996         ELSEIF(ISUB.EQ.219 ) THEN
11997 C...f + fbar -> ~chi04 + ~chi04
11998           MINT(21)=KSUSY1+35
11999           MINT(22)=KSUSY1+35
12000  
12001         ELSEIF(ISUB.EQ.220 ) THEN
12002 C...f + fbar -> ~chi01 + ~chi02
12003           IF(MINT(15).LT.0) JS=2
12004 C          IF(PYR(0).GT.0.5D0) JS=2
12005           MINT(20+JS)=KSUSY1+22
12006           MINT(23-JS)=KSUSY1+23
12007  
12008         ELSEIF(ISUB.EQ.221 ) THEN
12009 C...f + fbar -> ~chi01 + ~chi03
12010           IF(MINT(15).LT.0) JS=2
12011 C          IF(PYR(0).GT.0.5D0) JS=2
12012           MINT(20+JS)=KSUSY1+22
12013           MINT(23-JS)=KSUSY1+25
12014  
12015         ELSEIF(ISUB.EQ.222) THEN
12016 C...f + fbar -> ~chi01 + ~chi04
12017           IF(MINT(15).LT.0) JS=2
12018 C          IF(PYR(0).GT.0.5D0) JS=2
12019           MINT(20+JS)=KSUSY1+22
12020           MINT(23-JS)=KSUSY1+35
12021  
12022         ELSEIF(ISUB.EQ.223) THEN
12023 C...f + fbar -> ~chi02 + ~chi03
12024           IF(MINT(15).LT.0) JS=2
12025 C          IF(PYR(0).GT.0.5D0) JS=2
12026           MINT(20+JS)=KSUSY1+23
12027           MINT(23-JS)=KSUSY1+25
12028  
12029         ELSEIF(ISUB.EQ.224) THEN
12030 C...f + fbar -> ~chi02 + ~chi04
12031           IF(MINT(15).LT.0) JS=2
12032 C          IF(PYR(0).GT.0.5D0) JS=2
12033           MINT(20+JS)=KSUSY1+23
12034           MINT(23-JS)=KSUSY1+35
12035  
12036         ELSEIF(ISUB.EQ.225) THEN
12037 C...f + fbar -> ~chi03 + ~chi04
12038           IF(MINT(15).LT.0) JS=2
12039 C          IF(PYR(0).GT.0.5D0) JS=2
12040           MINT(20+JS)=KSUSY1+25
12041           MINT(23-JS)=KSUSY1+35
12042         ENDIF
12043  
12044       ELSEIF(ISUB.LE.236) THEN
12045         IF(ISUB.EQ.226) THEN
12046 C...f + fbar -> ~chi+-1 + ~chi-+1
12047 C...th=(p(q)-p(chi+))**2 or (p(qbar)-p(chi-))**2
12048           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12049           MINT(21)=ISIGN(KSUSY1+24,KCH1)
12050           MINT(22)=-MINT(21)
12051  
12052         ELSEIF(ISUB.EQ.227) THEN
12053 C...f + fbar -> ~chi+-2 + ~chi-+2
12054           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12055           MINT(21)=ISIGN(KSUSY1+37,KCH1)
12056           MINT(22)=-MINT(21)
12057  
12058         ELSEIF(ISUB.EQ.228) THEN
12059 C...f + fbar -> ~chi+-1 + ~chi-+2
12060 C...th=(p(q)-p(chi1+))**2 or th=(p(qbar)-p(chi1-))**2
12061 C...js=1 if pyr<.5, js=2 if pyr>.5
12062 C...if 15=q, 16=qbar and js=1, chi1+ + chi2-, th=(q-chi1+)**2
12063 C...if 15=qbar, 16=q and js=1, chi2- + chi1+, th=(q-chi1+)**2
12064 C...if 15=q, 16=qbar and js=2, chi1- + chi2+, th=(qbar-chi1-)**2
12065 C...if 15=qbar, 16=q and js=2, chi2+ + chi1-, th=(q-chi1-)**2
12066           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12067           KCH2=INT(1-KCH1)/2
12068           IF(MINT(2).EQ.1) THEN
12069             MINT(21)= ISIGN(KSUSY1+24,KCH1)
12070             MINT(22)= -ISIGN(KSUSY1+37,KCH1)
12071 c            IF(KCH2.EQ.0) JS=2
12072           ELSE
12073             MINT(21)= ISIGN(KSUSY1+37,KCH1)
12074             MINT(22)= -ISIGN(KSUSY1+24,KCH1)
12075             JS=2
12076 c            IF(KCH2.EQ.1) JS=2
12077           ENDIF
12078  
12079         ELSEIF(ISUB.EQ.229) THEN
12080 C...q + qbar' -> ~chi01 + ~chi+-1
12081 C...th=(p(u)-p(chi+))**2 or (p(ubar)-p(chi-))**2
12082           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12083           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12084 C...CHECK THIS
12085           IF(MOD(MINT(15),2).EQ.0) JS=2
12086           MINT(20+JS)=KSUSY1+22
12087           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
12088  
12089         ELSEIF(ISUB.EQ.230) THEN
12090 C...q + qbar' -> ~chi02 + ~chi+-1
12091           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12092           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12093           IF(MOD(MINT(15),2).EQ.0) JS=2
12094           MINT(20+JS)=KSUSY1+23
12095           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
12096  
12097         ELSEIF(ISUB.EQ.231) THEN
12098 C...q + qbar' -> ~chi03 + ~chi+-1
12099           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12100           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12101           IF(MOD(MINT(15),2).EQ.0) JS=2
12102           MINT(20+JS)=KSUSY1+25
12103           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
12104  
12105         ELSEIF(ISUB.EQ.232) THEN
12106 C...q + qbar' -> ~chi04 + ~chi+-1
12107           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12108           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12109           IF(MOD(MINT(15),2).EQ.0) JS=2
12110           MINT(20+JS)=KSUSY1+35
12111           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
12112  
12113         ELSEIF(ISUB.EQ.233) THEN
12114 C...q + qbar' -> ~chi01 + ~chi+-2
12115           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12116           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12117           IF(MOD(MINT(15),2).EQ.0) JS=2
12118           MINT(20+JS)=KSUSY1+22
12119           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
12120  
12121         ELSEIF(ISUB.EQ.234) THEN
12122 C...q + qbar' -> ~chi02 + ~chi+-2
12123           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12124           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12125           IF(MOD(MINT(15),2).EQ.0) JS=2
12126           MINT(20+JS)=KSUSY1+23
12127           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
12128  
12129         ELSEIF(ISUB.EQ.235) THEN
12130 C...q + qbar' -> ~chi03 + ~chi+-2
12131           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12132           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12133           IF(MOD(MINT(15),2).EQ.0) JS=2
12134           MINT(20+JS)=KSUSY1+25
12135           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
12136  
12137         ELSEIF(ISUB.EQ.236) THEN
12138 C...q + qbar' -> ~chi04 + ~chi+-2
12139           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12140           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12141           IF(MOD(MINT(15),2).EQ.0) JS=2
12142           MINT(20+JS)=KSUSY1+35
12143           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
12144         ENDIF
12145  
12146       ELSEIF(ISUB.LE.245) THEN
12147         IF(ISUB.EQ.237) THEN
12148 C...q + qbar -> ~chi01 + ~g
12149 C...th arbitrary
12150           IF(PYR(0).GT.0.5D0) JS=2
12151           MINT(20+JS)=KSUSY1+21
12152           MINT(23-JS)=KSUSY1+22
12153           KCC=17+JS
12154  
12155         ELSEIF(ISUB.EQ.238) THEN
12156 C...q + qbar -> ~chi02 + ~g
12157 C...th arbitrary
12158           IF(PYR(0).GT.0.5D0) JS=2
12159           MINT(20+JS)=KSUSY1+21
12160           MINT(23-JS)=KSUSY1+23
12161           KCC=17+JS
12162  
12163         ELSEIF(ISUB.EQ.239) THEN
12164 C...q + qbar -> ~chi03 + ~g
12165 C...th arbitrary
12166           IF(PYR(0).GT.0.5D0) JS=2
12167           MINT(20+JS)=KSUSY1+21
12168           MINT(23-JS)=KSUSY1+25
12169           KCC=17+JS
12170  
12171         ELSEIF(ISUB.EQ.240) THEN
12172 C...q + qbar -> ~chi04 + ~g
12173 C...th arbitrary
12174           IF(PYR(0).GT.0.5D0) JS=2
12175           MINT(20+JS)=KSUSY1+21
12176           MINT(23-JS)=KSUSY1+35
12177           KCC=17+JS
12178  
12179         ELSEIF(ISUB.EQ.241) THEN
12180 C...q + qbar' -> ~chi+-1 + ~g
12181 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
12182 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
12183 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
12184 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
12185 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
12186           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12187           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12188           JS=1
12189           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12190           MINT(20+JS)=KSUSY1+21
12191           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
12192           KCC=17+JS
12193  
12194         ELSEIF(ISUB.EQ.242) THEN
12195 C...q + qbar' -> ~chi+-2 + ~g
12196 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
12197 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
12198 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
12199 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
12200 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
12201           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12202           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12203           JS=1
12204           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12205           MINT(20+JS)=KSUSY1+21
12206           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
12207           KCC=17+JS
12208  
12209         ELSEIF(ISUB.EQ.243) THEN
12210 C...q + qbar -> ~g + ~g ; th arbitrary
12211           MINT(21)=KSUSY1+21
12212           MINT(22)=KSUSY1+21
12213           KCC=MINT(2)+4
12214  
12215         ELSEIF(ISUB.EQ.244) THEN
12216 C...g + g -> ~g + ~g ; th arbitrary
12217           KCC=MINT(2)+12
12218           KCS=(-1)**INT(1.5D0+PYR(0))
12219           MINT(21)=KSUSY1+21
12220           MINT(22)=KSUSY1+21
12221         ENDIF
12222  
12223       ELSEIF(ISUB.LE.260) THEN
12224         IF(ISUB.EQ.246) THEN
12225 C...qj + g -> ~qj_L + ~chi01
12226           IF(MINT(15).EQ.21) JS=2
12227           I=MINT(14+JS)
12228           IA=IABS(I)
12229           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12230           MINT(23-JS)=KSUSY1+22
12231           KCC=15+JS
12232           KCS=ISIGN(1,MINT(14+JS))
12233  
12234         ELSEIF(ISUB.EQ.247) THEN
12235 C...qj + g -> ~qj_R + ~chi01
12236           IF(MINT(15).EQ.21) JS=2
12237           I=MINT(14+JS)
12238           IA=IABS(I)
12239           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12240           MINT(23-JS)=KSUSY1+22
12241           KCC=15+JS
12242           KCS=ISIGN(1,MINT(14+JS))
12243  
12244         ELSEIF(ISUB.EQ.248) THEN
12245 C...qj + g -> ~qj_L + ~chi02
12246           IF(MINT(15).EQ.21) JS=2
12247           I=MINT(14+JS)
12248           IA=IABS(I)
12249           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12250           MINT(23-JS)=KSUSY1+23
12251           KCC=15+JS
12252           KCS=ISIGN(1,MINT(14+JS))
12253  
12254         ELSEIF(ISUB.EQ.249) THEN
12255 C...qj + g -> ~qj_R + ~chi02
12256           IF(MINT(15).EQ.21) JS=2
12257           I=MINT(14+JS)
12258           IA=IABS(I)
12259           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12260           MINT(23-JS)=KSUSY1+23
12261           KCC=15+JS
12262           KCS=ISIGN(1,MINT(14+JS))
12263  
12264         ELSEIF(ISUB.EQ.250) THEN
12265 C...qj + g -> ~qj_L + ~chi03
12266           IF(MINT(15).EQ.21) JS=2
12267           I=MINT(14+JS)
12268           IA=IABS(I)
12269           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12270           MINT(23-JS)=KSUSY1+25
12271           KCC=15+JS
12272           KCS=ISIGN(1,MINT(14+JS))
12273  
12274         ELSEIF(ISUB.EQ.251) THEN
12275 C...qj + g -> ~qj_R + ~chi03
12276           IF(MINT(15).EQ.21) JS=2
12277           I=MINT(14+JS)
12278           IA=IABS(I)
12279           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12280           MINT(23-JS)=KSUSY1+25
12281           KCC=15+JS
12282           KCS=ISIGN(1,MINT(14+JS))
12283  
12284         ELSEIF(ISUB.EQ.252) THEN
12285 C...qj + g -> ~qj_L + ~chi04
12286           IF(MINT(15).EQ.21) JS=2
12287           I=MINT(14+JS)
12288           IA=IABS(I)
12289           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12290           MINT(23-JS)=KSUSY1+35
12291           KCC=15+JS
12292           KCS=ISIGN(1,MINT(14+JS))
12293  
12294         ELSEIF(ISUB.EQ.253) THEN
12295 C...qj + g -> ~qj_R + ~chi04
12296           IF(MINT(15).EQ.21) JS=2
12297           I=MINT(14+JS)
12298           IA=IABS(I)
12299           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12300           MINT(23-JS)=KSUSY1+35
12301           KCC=15+JS
12302           KCS=ISIGN(1,MINT(14+JS))
12303  
12304         ELSEIF(ISUB.EQ.254) THEN
12305 C...qj + g -> ~qk_L + ~chi+-1
12306           IF(MINT(15).EQ.21) JS=2
12307           I=MINT(14+JS)
12308           IA=IABS(I)
12309           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
12310           IB=-IA+INT((IA+1)/2)*4-1
12311           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
12312           KCC=15+JS
12313           KCS=ISIGN(1,MINT(14+JS))
12314  
12315         ELSEIF(ISUB.EQ.255) THEN
12316 C...qj + g -> ~qk_L + ~chi+-1
12317           IF(MINT(15).EQ.21) JS=2
12318           I=MINT(14+JS)
12319           IA=IABS(I)
12320           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
12321           IB=-IA+INT((IA+1)/2)*4-1
12322           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
12323           KCC=15+JS
12324           KCS=ISIGN(1,MINT(14+JS))
12325  
12326         ELSEIF(ISUB.EQ.256) THEN
12327 C...qj + g -> ~qk_L + ~chi+-2
12328           IF(MINT(15).EQ.21) JS=2
12329           I=MINT(14+JS)
12330           IA=IABS(I)
12331           IB=-IA+INT((IA+1)/2)*4-1
12332           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
12333           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
12334           KCC=15+JS
12335           KCS=ISIGN(1,MINT(14+JS))
12336  
12337         ELSEIF(ISUB.EQ.257) THEN
12338 C...qj + g -> ~qk_R + ~chi+-2
12339           IF(MINT(15).EQ.21) JS=2
12340           I=MINT(14+JS)
12341           IA=IABS(I)
12342           IB=-IA+INT((IA+1)/2)*4-1
12343           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
12344           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
12345           KCC=15+JS
12346           KCS=ISIGN(1,MINT(14+JS))
12347  
12348         ELSEIF(ISUB.EQ.258) THEN
12349 C...qj + g -> ~qj_L + ~g
12350           IF(MINT(15).EQ.21) JS=2
12351           I=MINT(14+JS)
12352           IA=IABS(I)
12353           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12354           MINT(23-JS)=KSUSY1+21
12355           KCC=MINT(2)+6
12356           IF(JS.EQ.2) KCC=KCC+2
12357           KCS=ISIGN(1,I)
12358  
12359         ELSEIF(ISUB.EQ.259) THEN
12360 C...qj + g -> ~qj_R + ~g
12361           IF(MINT(15).EQ.21) JS=2
12362           I=MINT(14+JS)
12363           IA=IABS(I)
12364           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12365           MINT(23-JS)=KSUSY1+21
12366           KCC=MINT(2)+6
12367           IF(JS.EQ.2) KCC=KCC+2
12368           KCS=ISIGN(1,I)
12369         ENDIF
12370  
12371       ELSEIF(ISUB.LE.270) THEN
12372         IF(ISUB.EQ.261) THEN
12373 C...f + fbar -> ~t_1 + ~t_1bar; th = (p(q)-p(sq))**2
12374           ISGN=1
12375           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12376           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12377           MINT(22)=-MINT(21)
12378 C...Correct color combination
12379           IF(MINT(43).EQ.4) KCC=4
12380  
12381         ELSEIF(ISUB.EQ.262) THEN
12382 C...f + fbar -> ~t_2 + ~t_2bar; th = (p(q)-p(sq))**2
12383           ISGN=1
12384           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12385           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12386           MINT(22)=-MINT(21)
12387 C...Correct color combination
12388           IF(MINT(43).EQ.4) KCC=4
12389  
12390         ELSEIF(ISUB.EQ.263) THEN
12391 C...f + fbar -> ~t_1 + ~t_2bar; th = (p(q)-p(sq))**2
12392           IF((KCS.GT.0.AND.MINT(2).EQ.1).OR.
12393      &    (KCS.LT.0.AND.MINT(2).EQ.2)) THEN
12394             MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12395             MINT(22)=-ISIGN(KFPR(ISUB,2),KCS)
12396           ELSE
12397             JS=2
12398             MINT(21)=ISIGN(KFPR(ISUB,2),KCS)
12399             MINT(22)=-ISIGN(KFPR(ISUB,1),KCS)
12400           ENDIF
12401 C...Correct color combination
12402           IF(MINT(43).EQ.4) KCC=4
12403  
12404         ELSEIF(ISUB.EQ.264) THEN
12405 C...g + g -> ~t_1 + ~t_1bar; th arbitrary
12406           KCS=(-1)**INT(1.5D0+PYR(0))
12407           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12408           MINT(22)=-MINT(21)
12409           KCC=MINT(2)+10
12410  
12411         ELSEIF(ISUB.EQ.265) THEN
12412 C...g + g -> ~t_2 + ~t_2bar; th arbitrary
12413           KCS=(-1)**INT(1.5D0+PYR(0))
12414           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12415           MINT(22)=-MINT(21)
12416           KCC=MINT(2)+10
12417         ENDIF
12418  
12419       ELSEIF(ISUB.LE.301) THEN
12420         IF(ISUB.EQ.271.OR.ISUB.EQ.281.OR.ISUB.EQ.291) THEN
12421 C...qi + qj -> ~qi_L + ~qj_L
12422           KCC=MINT(2)
12423           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12424           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
12425           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
12426  
12427         ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.282.OR.ISUB.EQ.292) THEN
12428 C...qi + qj -> ~qi_R + ~qj_R
12429           KCC=MINT(2)
12430           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12431           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
12432           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
12433  
12434         ELSEIF(ISUB.EQ.273.OR.ISUB.EQ.283.OR.ISUB.EQ.293) THEN
12435 C...qi + qj -> ~qi_L + ~qj_R
12436           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
12437           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
12438           KCC=MINT(2)
12439           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12440  
12441         ELSEIF(ISUB.EQ.274.OR.ISUB.EQ.284) THEN
12442 C...qi + qjbar -> ~qi_L + ~qj_Lbar; th = (p(f)-p(sf'))**2
12443           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
12444           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
12445           KCC=MINT(2)
12446           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12447  
12448         ELSEIF(ISUB.EQ.275.OR.ISUB.EQ.285) THEN
12449 C...qi + qjbar -> ~qi_R + ~qj_Rbar ; th = (p(f)-p(sf'))**2
12450           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
12451           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
12452           KCC=MINT(2)
12453           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12454  
12455         ELSEIF(ISUB.EQ.276.OR.ISUB.EQ.286.OR.ISUB.EQ.296) THEN
12456 C...qi + qjbar -> ~qi_L + ~qj_Rbar ; th = (p(f)-p(sf'))**2
12457           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
12458           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
12459           KCC=MINT(2)
12460           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12461  
12462         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.287) THEN
12463 C...f + fbar -> ~qi_L + ~qi_Lbar ; th = (p(q)-p(sq))**2
12464           ISGN=1
12465           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12466           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12467           MINT(22)=-MINT(21)
12468           IF(MINT(43).EQ.4) KCC=4
12469  
12470         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.288) THEN
12471 C...f + fbar -> ~qi_R + ~qi_Rbar; th = (p(q)-p(sq))**2
12472           ISGN=1
12473           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12474           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12475           MINT(22)=-MINT(21)
12476           IF(MINT(43).EQ.4) KCC=4
12477  
12478         ELSEIF(ISUB.EQ.279.OR.ISUB.EQ.289) THEN
12479 C...g + g -> ~qi_L + ~qi_Lbar ; th arbitrary
12480 C...pure LL + RR
12481           KCS=(-1)**INT(1.5D0+PYR(0))
12482           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12483           MINT(22)=-MINT(21)
12484           KCC=MINT(2)+10
12485  
12486         ELSEIF(ISUB.EQ.280.OR.ISUB.EQ.290) THEN
12487 C...g + g -> ~qi_R + ~qi_Rbar ; th arbitrary
12488           KCS=(-1)**INT(1.5D0+PYR(0))
12489           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12490           MINT(22)=-MINT(21)
12491           KCC=MINT(2)+10
12492  
12493         ELSEIF(ISUB.EQ.294) THEN
12494 C...qj + g -> ~qj_L + ~g
12495           IF(MINT(15).EQ.21) JS=2
12496           I=MINT(14+JS)
12497           IA=IABS(I)
12498           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12499           MINT(23-JS)=KSUSY1+21
12500           KCC=MINT(2)+6
12501           IF(JS.EQ.2) KCC=KCC+2
12502           KCS=ISIGN(1,I)
12503  
12504         ELSEIF(ISUB.EQ.295) THEN
12505 C...qj + g -> ~qj_R + ~g
12506           IF(MINT(15).EQ.21) JS=2
12507           I=MINT(14+JS)
12508           IA=IABS(I)
12509           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12510           MINT(23-JS)=KSUSY1+21
12511           KCC=MINT(2)+6
12512           IF(JS.EQ.2) KCC=KCC+2
12513           KCS=ISIGN(1,I)
12514  
12515         ELSEIF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
12516 C...q + qbar' -> H+ + H0
12517           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12518           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12519           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12520           MINT(20+JS)=ISIGN(37,KCH1+KCH2)
12521           MINT(23-JS)=KFPR(ISUB,2)
12522         ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
12523 C...f + fbar -> A0 + H0; th arbitrary
12524           IF(PYR(0).GT.0.5D0) JS=2
12525           MINT(20+JS)=KFPR(ISUB,1)
12526           MINT(23-JS)=KFPR(ISUB,2)
12527         ELSEIF(ISUB.EQ.301) THEN
12528 C...f + fbar -> H+ H-
12529           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12530           MINT(22)=-MINT(21)
12531         ENDIF
12532 CMRENNA--
12533       ELSEIF(ISUB.LE.330) THEN
12534         IF(ISUB.EQ.311)THEN
12535 C...g + g -> g* + g* (UED)
12536           KCC=MINT(2)+12
12537           KCS=(-1)**INT(1.5D0+PYR(0))
12538           MUED(1)=472
12539           MUED(2)=472
12540           MINT(21)=IUEDEQ(472)
12541           MINT(22)=IUEDEQ(472)
12542         ELSEIF(ISUB.EQ.312)THEN
12543 C...q + g -> q*_D + g*, q*_S + g*
12544 C...The two channels have the same cross section
12545           KKFLMI=450
12546           IF(PYR(0).GT.0.5)KKFLMI=456
12547           IF(MINT(15).EQ.21) JS=2
12548           KCC=MINT(2)+6
12549           IF(MINT(15).EQ.21)KCC=KCC+2
12550           IF(MINT(15).NE.21)THEN
12551             KCS=ISIGN(1,MINT(15))
12552             MUED(2)=472
12553             MUED(1)=KCS*(KKFLMI+IABS(MINT(15)))
12554             MINT(22)=IUEDEQ(472)
12555             MINT(21)=KCS*IUEDEQ(KKFLMI+IABS(MINT(15)))
12556           ENDIF
12557           IF(MINT(16).NE.21)THEN
12558             KCS=ISIGN(1,MINT(16))
12559             MUED(2)=KCS*(KKFLMI+IABS(MINT(16)))
12560             MUED(1)=472
12561             MINT(22)=KCS*IUEDEQ(KKFLMI+IABS(MINT(16)))
12562             MINT(21)=IUEDEQ(472)
12563           ENDIF
12564         ELSEIF(ISUB.EQ.313)THEN
12565 C...q + q' -> q*_D + q*_D',q*_S+q*_S'
12566 C...The two channels have the same cross section
12567           KKFLMI=450
12568           IF(PYR(0).GT.0.5)KKFLMI=456
12569           KCC=MINT(2)         
12570           IF(MINT(15).EQ.MINT(16))THEN
12571             MUED(1)=SIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15)))
12572             MUED(2)=MINT(21)
12573             MINT(21)=SIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15)))
12574             MINT(22)=MINT(21)
12575           ELSE
12576             MUED(1)=SIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15)))
12577             MUED(2)=SIGN(1,MINT(16))*(KKFLMI+IABS(MINT(16)))
12578             MINT(21)=SIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15)))
12579             MINT(22)=SIGN(1,MINT(16))*IUEDEQ(KKFLMI+IABS(MINT(16)))
12580           ENDIF
12581           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2        
12582         ELSEIF(ISUB.EQ.314)THEN
12583 C...g + g -> q*_D + q*_D_bar, q*_S + q*_S_bar
12584 C...The two channels have the same cross section
12585           KKFLMI=450
12586           IF(PYR(0).GT.0.5)KKFLMI=456
12587           KCS=(-1)**INT(1.5D0+PYR(0))    
12588           XFLAOUT=PYR(0)
12589           IF(XFLAOUT.LE.0.2)THEN
12590             MUED(1)=ISIGN(1,KCS)*(KKFLMI+1)
12591             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+1)
12592           ELSEIF(XFLAOUT.LE.0.4)THEN
12593             MUED(1)=ISIGN(1,KCS)*(KKFLMI+2)
12594             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+2)
12595           ELSEIF(XFLAOUT.LE.0.6)THEN
12596             MUED(1)=ISIGN(1,KCS)*(KKFLMI+3)
12597             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+3)
12598           ELSEIF(XFLAOUT.LE.0.8)THEN
12599             MUED(1)=ISIGN(1,KCS)*(KKFLMI+4)
12600             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+4)
12601           ELSE
12602             MUED(1)=ISIGN(1,KCS)*(KKFLMI+5)
12603             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+5)
12604           ENDIF
12605           MINT(22)=-MINT(21)
12606           MUED(2)=-MUED(1)
12607           KCC=MINT(2)+10
12608         ELSEIF(ISUB.EQ.315)THEN
12609 C...q + qbar -> q*_D + q*_D_bar, q*_S + q*_S_bar
12610 C...The two channels have the same cross section
12611           KKFLMI=450
12612           IF(PYR(0).GT.0.5)KKFLMI=456
12613           MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15)))
12614           MUED(2)=-MINT(21)
12615           MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15)))
12616           MINT(22)=-MINT(21)
12617           KCC=4
12618         ELSEIF(ISUB.EQ.316)THEN
12619 C...q + qbar'    -> q*_D + q*_S_bar'
12620           MUED(1)=ISIGN(1,MINT(15))*(456+IABS(MINT(15)))
12621           MUED(2)=ISIGN(1,MINT(16))*(450+IABS(MINT(16)))
12622           MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(456+IABS(MINT(15)))
12623           MINT(22)=ISIGN(1,MINT(16))*IUEDEQ(450+IABS(MINT(16)))
12624           KCC=MINT(2)+2
12625         ELSEIF(ISUB.EQ.317)THEN
12626 C...q + qbar'    -> q*_D + q*_D_bar', q*_S + q*_S_bar
12627 C...The two channels have the same cross section
12628           KKFLMI=450
12629           IF(PYR(0).GT.0.5)KKFLMI=456      
12630           MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15)))
12631           MUED(2)=ISIGN(1,MINT(16))*(KKFLMI+IABS(MINT(16)))
12632           MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15)))
12633           MINT(22)=ISIGN(1,MINT(16))*IUEDEQ(KKFLMI+IABS(MINT(16)))
12634           KCC=MINT(2)+2
12635         ELSEIF(ISUB.EQ.318)THEN
12636 C...q + q'    -> q*_D + q*_S'     
12637           KCC=MINT(2)         
12638           MUED(1)=SIGN(1,MINT(15))*(456+IABS(MINT(15)))
12639           MUED(2)=SIGN(1,MINT(16))*(450+IABS(MINT(16)))               
12640           MINT(21)=SIGN(1,MINT(15))*IUEDEQ(456+IABS(MINT(15)))
12641           MINT(22)=SIGN(1,MINT(16))*IUEDEQ(450+IABS(MINT(16)))
12642         ELSEIF(ISUB.EQ.319)THEN
12643 C...q + qbar -> q*_D' + q*_D_bar', q*_S' + q*_S_bar'
12644 C...The two channels have the same cross section
12645           KKFLMI=450
12646           IF(PYR(0).GT.0.5)KKFLMI=456
12647           XFLAOUT=PYR(0)
12648           IIFLAV=0
12649 C...N.B. NFLAVOURS=IUED(3)
12650 C   DO I=1,NFLAVOURS
12651           DO 433 I=1,IUED(3)
12652             IF(I.NE.IABS(MINT(15)))THEN
12653               IIFLAV=IIFLAV+1
12654               IOKFLA(IIFLAV)=I
12655             ENDIF
12656  433      CONTINUE
12657           FLASTEP=1./(IUED(3)-1)
12658           DO I=1,IUED(3)-1
12659             FLAVV=FLASTEP*I
12660             IF(XFLAOUT.LE.FLAVV)THEN                  
12661               MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IOKFLA(I))
12662               MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IOKFLA(I))
12663               GOTO 435
12664             ENDIF
12665           ENDDO
12666  435      CONTINUE
12667           IF(IABS(MUED(1)).LT.451.AND.IABS(MUED(1)).GT.462)THEN
12668             WRITE(MSTU(11),*) 'IN PYSCAT: KK FLAVORS PROBLEM !!!'
12669             CALL PYSTOP(5000000)
12670           ENDIF
12671           MINT(22)=-MINT(21)
12672           KCC=4
12673         ENDIF
12674          
12675       ELSEIF(ISUB.LE.360) THEN
12676  
12677         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
12678 C...l + l -> H_L++/--, H_R++/--
12679           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12680           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12681           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
12682  
12683         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
12684 C...l + gamma -> l' + H++/--; th=(p(l)-p(H))**2
12685           IF(MINT(15).EQ.22) JS=2
12686           MINT(20+JS)=ISIGN(KFPR(ISUB,1),-MINT(14+JS))
12687           MINT(23-JS)=ISIGN(KFPR(ISUB,2),-MINT(14+JS))
12688           KCC=22
12689  
12690         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
12691 C...f + fbar -> H++ + H--; th = (p(f)-p(H--))**2
12692           MINT(21)=-ISIGN(KFPR(ISUB,1),MINT(15))
12693           MINT(22)=-MINT(21)
12694  
12695         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
12696 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/--
12697 C...as inner process).
12698           DO 450 JT=1,2
12699             I=MINT(14+JT)
12700             IA=IABS(I)
12701             IF(IA.LE.10) THEN
12702               RVCKM=VINT(180+I)*PYR(0)
12703               DO 440 J=1,MSTP(1)
12704                 IB=2*J-1+MOD(IA,2)
12705                 IPM=(5-ISIGN(1,I))/2
12706                 IDC=J+MDCY(IA,2)+2
12707                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 440
12708                 MINT(20+JT)=ISIGN(IB,I)
12709                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
12710                 IF(RVCKM.LE.0D0) GOTO 450
12711   440         CONTINUE
12712             ELSE
12713               IB=2*((IA+1)/2)-1+MOD(IA,2)
12714               MINT(20+JT)=ISIGN(IB,I)
12715             ENDIF
12716   450     CONTINUE
12717           KCC=22
12718           KFRES=ISIGN(KFPR(ISUB,1),MINT(15))
12719           IF(MOD(MINT(15),2).EQ.1) KFRES=-KFRES
12720  
12721         ELSEIF(ISUB.EQ.353) THEN
12722 C...f + fbar -> Z_R0
12723           KFRES=KFPR(ISUB,1)
12724  
12725         ELSEIF(ISUB.EQ.354) THEN
12726 C...f + fbar' -> W+/-
12727           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12728           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12729           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
12730  
12731         ENDIF
12732  
12733       ELSEIF(ISUB.LE.380) THEN
12734  
12735         IF(ISUB.LE.363.OR.ISUB.EQ.368) THEN
12736 C...f + fbar -> charged+ charged- technicolor
12737           KSW=(-1)**INT(1.5D0+PYR(0))
12738           MINT(21)=ISIGN(KFPR(ISUB,1),KSW)
12739           MINT(22)=-ISIGN(KFPR(ISUB,2),KSW)
12740  
12741         ELSEIF(ISUB.LE.367.OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN
12742 C...f + fbar -> neutral neutral technicolor
12743           MINT(21)=KFPR(ISUB,1)
12744           MINT(22)=KFPR(ISUB,2)
12745  
12746         ELSEIF(ISUB.EQ.374.OR.ISUB.EQ.375.OR.ISUB.EQ.378) THEN
12747 C...f + fbar' -> neutral charged technicolor
12748           IN=1
12749           IC=2
12750           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12751           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12752           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
12753           MINT(23-JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
12754           MINT(20+JS)=KFPR(ISUB,IN)
12755  
12756         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
12757 C...f + fbar' -> charged neutral technicolor
12758           IN=2
12759           IC=1
12760           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12761           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12762           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12763           MINT(20+JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
12764           MINT(23-JS)=KFPR(ISUB,IN)
12765         ENDIF
12766  
12767       ELSEIF(ISUB.LE.400) THEN
12768         IF(ISUB.EQ.381) THEN
12769 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2, TC extensions
12770           KCC=MINT(2)
12771           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12772  
12773         ELSEIF(ISUB.EQ.382) THEN
12774 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2, TC extensions
12775           MINT(21)=ISIGN(KFLF,MINT(15))
12776           MINT(22)=-MINT(21)
12777           KCC=4
12778  
12779         ELSEIF(ISUB.EQ.383) THEN
12780 C...f + fbar -> g + g; th arbitrary, TC extensions
12781           MINT(21)=21
12782           MINT(22)=21
12783           KCC=MINT(2)+4
12784  
12785         ELSEIF(ISUB.EQ.384) THEN
12786 C...f + g -> f + g; th = (p(f)-p(f))**2, TC extensions
12787           IF(MINT(15).EQ.21) JS=2
12788           KCC=MINT(2)+6
12789           IF(MINT(15).EQ.21) KCC=KCC+2
12790           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
12791           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
12792  
12793         ELSEIF(ISUB.EQ.385) THEN
12794 C...g + g -> f + fbar; th arbitrary, TC extensions
12795           KCS=(-1)**INT(1.5D0+PYR(0))
12796           MINT(21)=ISIGN(KFLF,KCS)
12797           MINT(22)=-MINT(21)
12798           KCC=MINT(2)+10
12799  
12800         ELSEIF(ISUB.EQ.386) THEN
12801 C...g + g -> g + g; th arbitrary, TC extensions
12802           KCC=MINT(2)+12
12803           KCS=(-1)**INT(1.5D0+PYR(0))
12804  
12805         ELSEIF(ISUB.EQ.387) THEN
12806 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2, TC extensions
12807           MINT(21)=ISIGN(MINT(55),MINT(15))
12808           MINT(22)=-MINT(21)
12809           KCC=4
12810  
12811         ELSEIF(ISUB.EQ.388) THEN
12812 C...g + g -> Q + Qbar; th arbitrary, TC extensions
12813           KCS=(-1)**INT(1.5D0+PYR(0))
12814           MINT(21)=ISIGN(MINT(55),KCS)
12815           MINT(22)=-MINT(21)
12816           KCC=MINT(2)+10
12817  
12818         ELSEIF(ISUB.EQ.391) THEN
12819 C...f + fbar -> G*.
12820           KFRES=KFPR(ISUB,1)
12821  
12822         ELSEIF(ISUB.EQ.392) THEN
12823 C...g + g -> G*.
12824           KCC=21
12825           KFRES=KFPR(ISUB,1)
12826  
12827         ELSEIF(ISUB.EQ.393) THEN
12828 C...q + qbar -> g + G*;  th arbitrary.
12829           IF(PYR(0).GT.0.5D0) JS=2
12830           MINT(20+JS)=KFPR(ISUB,1)
12831           MINT(23-JS)=KFPR(ISUB,2)
12832           KCC=17+JS
12833  
12834         ELSEIF(ISUB.EQ.394) THEN
12835 C...q + g -> q + G*;  th = (p(f) - p(f))**2
12836           IF(MINT(15).EQ.21) JS=2
12837           MINT(23-JS)=KFPR(ISUB,2)
12838           KCC=15+JS
12839           KCS=ISIGN(1,MINT(14+JS))
12840  
12841         ELSEIF(ISUB.EQ.395) THEN
12842 C...g + g -> G* + g;  th arbitrary.
12843           IF(PYR(0).GT.0.5D0) JS=2
12844           MINT(23-JS)=KFPR(ISUB,2)
12845           KCC=22+JS
12846         ENDIF
12847  
12848       ELSEIF(ISUB.LE.420) THEN
12849         IF(ISUB.EQ.401) THEN
12850 C...g + g -> t + b + H+/-
12851           KCS=(-1)**INT(1.5D0+PYR(0))
12852           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
12853           MINT(22)=ISIGN(5,-KCS)
12854           KCC=11+INT(0.5D0+PYR(0))
12855           KFRES=ISIGN(KFHIGG,-KCS)
12856  
12857         ELSEIF(ISUB.EQ.402) THEN
12858 C...q + qbar -> t + b + H+/-
12859           KFL=(-1)**INT(1.5D0+PYR(0))
12860           MINT(21)=ISIGN(INT(6.+.5*KFL),KCS)
12861           MINT(22)=ISIGN(INT(6.-.5*KFL),-KCS)
12862           KCC=4
12863           KFRES=ISIGN(KFHIGG,-KFL*KCS)
12864         ENDIF
12865  
12866 C...QUARKONIA+++
12867 C...Additional code by Stefan Wolf
12868       ELSEIF(ISUB.LE.430) THEN
12869         IF(ISUB.GE.421.AND.ISUB.LE.424) THEN
12870 C...g + g -> QQ~[n] + g
12871 C...MINT(21), MINT(22) copied from ISUB.EQ.86-89
12872 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12873 C...KCC and KCS copied from ISUB.EQ.86-89 (for ISUB.EQ.421)
12874 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12875 C...or from ISUB.EQ.68 (for ISUB.NE.421)
12876 C...[g + g -> g + g; th arbitrary]
12877           MINT(21)=KFPR(ISUBSV,1)
12878           MINT(22)=KFPR(ISUBSV,2)
12879           IF(ISUB.EQ.421) THEN
12880              KCC=24
12881              KCS=(-1)**INT(1.5D0+PYR(0))
12882           ELSE
12883              KCC=MINT(2)+12
12884              KCS=(-1)**INT(1.5D0+PYR(0))
12885           ENDIF
12886  
12887         ELSEIF(ISUB.GE.425.AND.ISUB.LE.427) THEN
12888 C...q + g -> q + QQ~[n]
12889 C...MINT(21), MINT(22) "copied" from ISUB.EQ.112
12890 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12891 C...KCC copied from ISUB.EQ.28
12892 C...[f + g -> f + g;  th = (p(f)-p(f))**2; (q + g -> q + g  only)]
12893           IF(MINT(15).EQ.21) JS=2
12894           MINT(23-JS)=KFPR(ISUBSV,2)
12895           KCC=MINT(2)+6
12896           IF(MINT(15).EQ.21) KCC=KCC+2
12897           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
12898           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
12899  
12900         ELSEIF(ISUB.GE.428.AND.ISUB.LE.430) THEN
12901 C...q + q~ -> g + QQ~[n]
12902 C...MINT(21), MINT(22) "copied" from ISUB.EQ.111
12903 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12904 C...KCC copied from ISUB.EQ.13
12905 C...[f + fbar -> g + g;  th arbitrary; (q + qbar -> g + g  only)]
12906           IF(PYR(0).GT.0.5) JS=2
12907           MINT(20+JS)=21
12908           MINT(23-JS)=KFPR(ISUBSV,2)
12909           KCC=MINT(2)+4
12910         ENDIF
12911  
12912       ELSEIF(ISUB.LE.440) THEN
12913         IF(ISUB.GE.431.AND.ISUB.LE.433) THEN
12914 C...g + g -> QQ~[n] + g
12915 C...MINT(21), MINT(22) copied from ISUB.EQ.86-89
12916 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12917 C...KCC and KCS copied from ISUB.EQ.86-89
12918 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12919           MINT(21)=KFPR(ISUBSV,1)
12920           MINT(22)=KFPR(ISUBSV,2)
12921           KCC=24
12922           KCS=(-1)**INT(1.5D0+PYR(0))
12923  
12924         ELSEIF(ISUB.GE.434.AND.ISUB.LE.436) THEN
12925 C...q + g -> q + QQ~[n]
12926 C...MINT(21), MINT(22) "copied" from ISUB.EQ.112
12927 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12928 C...KCC and KCS copied from ISUB.EQ.112
12929 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12930           IF(MINT(15).EQ.21) JS=2
12931           MINT(23-JS)=KFPR(ISUBSV,2)
12932           KCC=15+JS
12933           KCS=ISIGN(1,MINT(14+JS))
12934  
12935         ELSEIF(ISUB.GE.437.AND.ISUB.LE.439) THEN
12936 C...q + q~ -> g + QQ~[n]
12937 C...MINT(21), MINT(22) "copied" from ISUB.EQ.111
12938 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12939 C...KCC copied from ISUB.EQ.111
12940 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12941           IF(PYR(0).GT.0.5) JS=2
12942           MINT(20+JS)=21
12943           MINT(23-JS)=KFPR(ISUBSV,2)
12944           KCC=17+JS
12945 C...QUARKONIA---
12946         ENDIF
12947       ELSEIF(ISUB.LE.500) THEN
12948         IF(ISUB.EQ.481.OR.ISUB.EQ.482) THEN
12949           KFRES=9900001
12950           KCRES=PYCOMP(KFRES)
12951           MCOL=KCHG(KCRES,2)
12952           MCHG=KCHG(KCRES,1)
12953           IF(KCRES.EQ.0) 
12954      $      CALL PYERRM(21,"No resonance for Generic 2-> 2 Process")
12955           IDCY=MDCY(KCRES,2)
12956           IF(IDCY.EQ.0)
12957      $      CALL PYERRM(21,"No decays for resonance in Generic 2->2")
12958           KCI1=PYCOMP(MINT(15))
12959           KCI2=PYCOMP(MINT(16))
12960           ICOL1=ISIGN(KCHG(KCI1,2),MINT(15))
12961           ICOL2=ISIGN(KCHG(KCI2,2),MINT(16))
12962           KFF1=KFPR(ISUB,1)
12963           KFF2=KFPR(ISUB,2)
12964           KCF1=PYCOMP(KFF1)
12965           KCF2=PYCOMP(KFF2)
12966           JCOL1=SIGN(KCHG(KCF1,2),KFF1)
12967           IF(JCOL1.EQ.-2) JCOL1=2
12968           JCOL2=SIGN(KCHG(KCF2,2),KFF2)
12969           IF(JCOL2.EQ.-2) JCOL2=2
12970           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12971           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12972           KCHW=KCH1+KCH2
12973           KREL=1
12974           IF(MCHG.NE.0.AND.KCHW.EQ.-MCHG) KREL=-1
12975           IF(KCHG(KCF1,3).NE.0) KFF1=KFF1*KREL
12976           IF(KCHG(KCF2,3).NE.0) KFF2=KFF2*KREL
12977           IF(JCOL1.EQ.1.OR.JCOL1.EQ.-1) JCOL1=JCOL1*KREL
12978           IF(JCOL2.EQ.1.OR.JCOL2.EQ.-1) JCOL2=JCOL2*KREL
12979           IF((ICOL1.EQ.1.AND.ICOL2.EQ.-1).OR.
12980      $      (ICOL2.EQ.1.AND.ICOL1.EQ.-1)) THEN
12981             IF(PYR(0).GT.0.5D0) JS=2
12982             MINT(20+JS)=KFF1
12983             MINT(23-JS)=KFF2
12984             IF(JCOL1.EQ.0.AND.JCOL2.EQ.0) THEN
12985 
12986             ELSEIF(JCOL1.EQ.0.AND.JCOL2.EQ.2) THEN
12987               KCC=17+JS
12988               MINT(20+JS)=KFF2
12989               MINT(23-JS)=KFF1
12990             ELSEIF(JCOL1.EQ.2.AND.JCOL2.EQ.0) THEN
12991               KCC=17+JS
12992               MINT(20+JS)=KFF1
12993               MINT(23-JS)=KFF2
12994             ELSEIF(JCOL1.EQ.2.AND.JCOL2.EQ.2.AND.MCOL.EQ.0) THEN
12995 
12996             ELSEIF(JCOL1.EQ.2.AND.JCOL2.EQ.2) THEN
12997               KCC=MINT(2)+4
12998             ELSEIF((JCOL1.EQ.1.AND.JCOL2.EQ.-1).OR.
12999      $        (JCOL1.EQ.-1.AND.JCOL2.EQ.1)) THEN
13000               IF(ICOL1.EQ.JCOL1) THEN
13001                 JS=1
13002                 MINT(21)=KFF1
13003                 MINT(22)=KFF2
13004               ELSE
13005                 JS=2
13006                 MINT(21)=KFF2
13007                 MINT(22)=KFF1
13008               ENDIF
13009               IF(MCOL.EQ.0) THEN
13010         
13011               ELSE
13012                 KCC=4
13013               ENDIF
13014             ENDIF
13015           ELSEIF((ICOL1.EQ.2.AND.(ICOL2.EQ.1.OR.ICOL2.EQ.-1)).OR.
13016      $      (ICOL2.EQ.2.AND.(ICOL1.EQ.1.OR.ICOL1.EQ.-1))) THEN
13017             IF((JCOL1.EQ.2.AND.ABS(JCOL2).EQ.1).OR.
13018      $        (JCOL2.EQ.2.AND.ABS(JCOL1).EQ.1)) THEN
13019               IF(MINT(15).EQ.21) JS=2
13020               KCC=MINT(2)+6
13021               IF(MINT(15).EQ.21) KCC=KCC+2
13022               IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
13023               IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
13024               IF(JCOL1.EQ.2) THEN
13025                 MINT(20+JS)=KFF2
13026                 MINT(23-JS)=KFF1
13027               ELSE
13028                 MINT(20+JS)=KFF1
13029                 MINT(23-JS)=KFF2
13030               ENDIF
13031             ELSEIF((ABS(JCOL1).EQ.1.AND.JCOL2.EQ.0).OR.
13032      $        (ABS(JCOL2).EQ.1.AND.JCOL1.EQ.0)) THEN
13033               IF(MINT(15).EQ.21) JS=2
13034               KCC=15+JS
13035               KCS=ISIGN(1,MINT(14+JS))
13036               IF(JCOL1.EQ.0) THEN
13037                 MINT(23-JS)=KFF1
13038                 MINT(20+JS)=KFF2
13039               ELSE
13040                 MINT(23-JS)=KFF2
13041                 MINT(20+JS)=KFF1
13042               ENDIF
13043             ENDIF
13044           ELSEIF(ICOL1.EQ.2.AND.ICOL2.EQ.2.AND.
13045      $      JCOL1.EQ.0.AND.JCOL2.EQ.0) THEN
13046             IF(PYR(0).GT.0.5D0) JS=2             
13047             KCC=21
13048             MINT(20+JS)=KFF1
13049             MINT(23-JS)=KFF2
13050           ELSEIF(ICOL1.EQ.2.AND.ICOL2.EQ.2.AND.
13051      $      ((JCOL1.EQ.0.AND.JCOL2.EQ.2).OR.
13052      $      ((JCOL2.EQ.0.AND.JCOL1.EQ.2)))) THEN
13053             IF(PYR(0).GT.0.5D0) JS=2
13054             KCC=22+JS
13055             KCS=(-1)**INT(1.5D0+PYR(0))
13056             IF(JCOL1.EQ.0) THEN
13057               MINT(23-JS)=KFF1
13058               MINT(20+JS)=KFF2
13059             ELSE
13060               MINT(23-JS)=KFF2
13061               MINT(20+JS)=KFF1
13062             ENDIF
13063           ELSEIF(ICOL1.EQ.2.AND.ICOL2.EQ.2.AND.
13064      $      ((JCOL1.EQ.1.AND.JCOL2.EQ.-1).OR.
13065      $      ((JCOL2.EQ.1.AND.JCOL1.EQ.-1)))) THEN
13066 C....two choices, 0 or 2 depending upon mother properties
13067             IF(MCOL.EQ.2) THEN
13068               KCS=(-1)**INT(1.5D0+PYR(0))
13069               KCC=MINT(2)+10
13070               IF(JCOL1.EQ.1) THEN
13071                 MINT(21)=KFF1*KCS
13072                 MINT(22)=KFF2*KCS
13073               ELSE
13074                 MINT(22)=KFF1*KCS
13075                 MINT(21)=KFF2*KCS
13076               ENDIF
13077 c              MINT(20+JS)=KFF1*KCS
13078 c              MINT(23-JS)=KFF2*KCS
13079             ELSEIF(MCOL.EQ.0) THEN
13080               KCC=21
13081               MINT(20+JS)=KFF1*KCS
13082               MINT(23-JS)=KFF2*KCS
13083             ENDIF
13084 
13085           ELSEIF(ICOL1.EQ.2.AND.ICOL2.EQ.2.AND.
13086      $      JCOL1.EQ.2.AND.JCOL2.EQ.2) THEN
13087 C....two choices, 0 or 2 depending upon mother properties
13088             IF(MCOL.EQ.0) THEN
13089               KCC=21
13090               IF(PYR(0).GT.0.5D0) JS=2
13091               MINT(20+JS)=KFF1
13092               MINT(23-JS)=KFF2               
13093             ELSEIF(MCOL.EQ.2) THEN
13094               IF(PYR(0).GT.0.5D0) JS=2
13095               KCC=MINT(2)+12
13096               KCS=(-1)**INT(1.5D0+PYR(0))
13097               MINT(20+JS)=KFF1
13098               MINT(23-JS)=KFF2
13099             ENDIF
13100           ELSEIF((ICOL1.EQ.1.AND.ICOL2.EQ.1).OR.
13101      $      (ICOL1.EQ.-1.AND.ICOL2.EQ.-1)) THEN
13102             KCC=MINT(2) 
13103             IF(PYR(0).GT.0.5D0) JS=2
13104             MINT(20+JS)=KFF1
13105             MINT(23-JS)=KFF2                          
13106           ELSEIF(ICOL1.EQ.0.AND.ICOL2.EQ.0.AND.MCOL.EQ.0) THEN
13107             KCC=20
13108             IF(PYR(0).GT.0.5D0) JS=2
13109             MINT(20+JS)=KFF1
13110             MINT(23-JS)=KFF2                          
13111           ELSE
13112             CALL PYERRM(21,"PYSCAT: No recognized Generic Process")
13113           ENDIF
13114           IF(ISUBSV.EQ.482) KFRES=0
13115         ENDIF 
13116       ENDIF
13117  
13118       IF(ISET(ISUB).EQ.11) THEN
13119 C...Store documentation for user-defined processes
13120         BEZUP=(PUP(3,1)+PUP(3,2))/(PUP(4,1)+PUP(4,2))
13121         KUPPO(1)=MINT(83)+5
13122         KUPPO(2)=MINT(83)+6
13123         I=MINT(83)+6
13124         DO 470 IUP=3,NUP
13125           KUPPO(IUP)=0
13126           IF(MSTP(128).GE.2.AND.MOTHUP(1,IUP).GE.3) THEN
13127             IDOC=IDOC-1
13128             MINT(4)=MINT(4)-1
13129             GOTO 470
13130           ENDIF
13131           I=I+1
13132           KUPPO(IUP)=I
13133           K(I,1)=21
13134           K(I,2)=IDUP(IUP)
13135           IF(IDUP(IUP).EQ.0) K(I,2)=90
13136           K(I,3)=0
13137           IF(MOTHUP(1,IUP).GE.3) K(I,3)=KUPPO(MOTHUP(1,IUP))
13138           K(I,4)=0
13139           K(I,5)=0
13140           DO 460 J=1,5
13141             P(I,J)=PUP(J,IUP)
13142   460     CONTINUE
13143           V(I,5)=VTIMUP(IUP)
13144   470   CONTINUE
13145         CALL PYROBO(MINT(83)+7,MINT(83)+4+NUP,0D0,VINT(24),0D0,0D0,
13146      &  -BEZUP)
13147  
13148 C...Store final state partons for user-defined processes
13149         N=IPU2
13150         DO 490 IUP=3,NUP
13151           N=N+1
13152           K(N,1)=1
13153           IF(ISTUP(IUP).EQ.2.OR.ISTUP(IUP).EQ.3) K(N,1)=11
13154           K(N,2)=IDUP(IUP)
13155           IF(IDUP(IUP).EQ.0) K(N,2)=90
13156           IF(MSTP(128).LE.0.OR.MOTHUP(1,IUP).EQ.0) THEN
13157             K(N,3)=KUPPO(IUP)
13158           ELSE
13159             K(N,3)=MINT(84)+MOTHUP(1,IUP)
13160           ENDIF
13161           K(N,4)=0
13162           K(N,5)=0
13163 C...Search for daughters of intermediate colourless particles.
13164           IF(K(N,1).EQ.11.AND.KCHG(PYCOMP(K(N,2)),2).EQ.0) THEN
13165             DO 475 IUPDAU=IUP+1,NUP
13166               IF(MOTHUP(1,IUPDAU).EQ.IUP.AND.K(N,4).EQ.0) K(N,4)=
13167      &        N+IUPDAU-IUP
13168               IF(MOTHUP(1,IUPDAU).EQ.IUP) K(N,5)=N+IUPDAU-IUP
13169   475       CONTINUE
13170           ENDIF
13171           DO 480 J=1,5
13172             P(N,J)=PUP(J,IUP)
13173   480     CONTINUE
13174           V(N,5)=VTIMUP(IUP)
13175   490   CONTINUE
13176         CALL PYROBO(IPU3,N,0D0,VINT(24),0D0,0D0,-BEZUP)
13177  
13178 C...Arrange colour flow for user-defined processes
13179         NLBL=0
13180         DO 540 IUP1=1,NUP
13181           I1=MINT(84)+IUP1
13182           IF(KCHG(PYCOMP(K(I1,2)),2).EQ.0) GOTO 540
13183           IF(K(I1,1).EQ.1) K(I1,1)=3
13184           IF(K(I1,1).EQ.11) K(I1,1)=14
13185 C...Find a not yet considered colour/anticolour line.
13186           DO 530 ISDE1=1,2
13187             IF(ICOLUP(ISDE1,IUP1).EQ.0) GOTO 530
13188             NMAT=0
13189             DO 500 ILBL=1,NLBL
13190               IF(ICOLUP(ISDE1,IUP1).EQ.ILAB(ILBL)) NMAT=1
13191   500       CONTINUE
13192             IF(NMAT.EQ.0) THEN
13193               NLBL=NLBL+1
13194               ILAB(NLBL)=ICOLUP(ISDE1,IUP1)
13195 C...Find all others belonging to same line.
13196               I3=I1
13197               I4=0
13198               DO 520 IUP2=IUP1+1,NUP
13199                 I2=MINT(84)+IUP2
13200                 DO 510 ISDE2=1,2
13201                   IF(ICOLUP(ISDE2,IUP2).EQ.ICOLUP(ISDE1,IUP1)) THEN
13202                     IF(ISDE2.EQ.ISDE1) THEN
13203                       K(I3,3+ISDE2)=K(I3,3+ISDE2)+I2
13204                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I3
13205                       I3=I2
13206                     ELSEIF(I4.NE.0) THEN
13207                       K(I4,3+ISDE2)=K(I4,3+ISDE2)+I2
13208                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I4
13209                       I4=I2
13210                     ELSEIF(IUP2.LE.2) THEN
13211                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+I2
13212                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+I1
13213                       I4=I2
13214                     ELSE
13215                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+MSTU(5)*I2
13216                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I1
13217                       I4=I2
13218                     ENDIF
13219                   ENDIF
13220   510           CONTINUE
13221   520         CONTINUE
13222             ENDIF
13223   530     CONTINUE
13224   540   CONTINUE
13225  
13226       ELSEIF(IDOC.EQ.7) THEN
13227 C...Resonance not decaying; store kinematics
13228         I=MINT(83)+7
13229         K(IPU3,1)=1
13230         K(IPU3,2)=KFRES
13231         K(IPU3,3)=I
13232         P(IPU3,4)=SHUSER
13233         P(IPU3,5)=SHUSER
13234         K(I,1)=21
13235         K(I,2)=KFRES
13236         P(I,4)=SHUSER
13237         P(I,5)=SHUSER
13238         N=IPU3
13239         MINT(21)=KFRES
13240         MINT(22)=0
13241  
13242 C...Special cases: colour flow in coloured resonances
13243         KCRES=PYCOMP(KFRES)
13244         IF(KCHG(KCRES,2).NE.0) THEN
13245           K(IPU3,1)=3
13246           DO 550 J=1,2
13247             JC=J
13248             IF(KCS.EQ.-1) JC=3-J
13249             IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
13250      &      MINT(84)+ICOL(KCC,1,JC)
13251             IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
13252      &      MINT(84)+ICOL(KCC,2,JC)
13253             IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
13254      &      MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
13255   550     CONTINUE
13256         ELSE
13257           K(IPU1,4)=IPU2
13258           K(IPU1,5)=IPU2
13259           K(IPU2,4)=IPU1
13260           K(IPU2,5)=IPU1
13261         ENDIF
13262  
13263       ELSEIF(IDOC.EQ.8) THEN
13264 C...2 -> 2 processes: store outgoing partons in their CM-frame
13265         DO 560 JT=1,2
13266           I=MINT(84)+2+JT
13267           KCA=PYCOMP(MINT(20+JT))
13268           K(I,1)=1
13269           IF(KCHG(KCA,2).NE.0) K(I,1)=3
13270           K(I,2)=MINT(20+JT)
13271           K(I,3)=MINT(83)+IDOC+JT-2
13272           KFAA=IABS(K(I,2))
13273           IF(KFPR(ISUBSV,1+MOD(JS+JT,2)).NE.0) THEN
13274             P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
13275           ELSE
13276             P(I,5)=PYMASS(K(I,2))
13277           ENDIF
13278           IF((KFAA.EQ.6.OR.KFAA.EQ.7.OR.KFAA.EQ.8).AND.
13279      &    P(I,5).LT.PARP(42)) P(I,5)=PYMASS(K(I,2))
13280   560   CONTINUE
13281         IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN
13282           KFA1=IABS(MINT(21))
13283           KFA2=IABS(MINT(22))
13284           IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21))
13285      &    THEN
13286             MINT(51)=1
13287             RETURN
13288           ENDIF
13289           P(IPU3,5)=0D0
13290           P(IPU4,5)=0D0
13291         ENDIF
13292         P(IPU3,4)=0.5D0*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR)
13293         P(IPU3,3)=SQRT(MAX(0D0,P(IPU3,4)**2-P(IPU3,5)**2))
13294         P(IPU4,4)=SHR-P(IPU3,4)
13295         P(IPU4,3)=-P(IPU3,3)
13296         N=IPU4
13297         MINT(7)=MINT(83)+7
13298         MINT(8)=MINT(83)+8
13299  
13300 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
13301         CALL PYROBO(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
13302  
13303       ELSEIF(IDOC.EQ.9) THEN
13304 C...2 -> 3 processes: store outgoing partons in their CM frame
13305         DO 570 JT=1,2
13306           I=MINT(84)+2+JT
13307           KCA=PYCOMP(MINT(20+JT))
13308           K(I,1)=1
13309           IF(KCHG(KCA,2).NE.0) K(I,1)=3
13310           K(I,2)=MINT(20+JT)
13311           K(I,3)=MINT(83)+IDOC+JT-3
13312           JTA=JT
13313 C...t and b in opposide order in event list as compared to
13314 C...matrix element?
13315           IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) JTA=3-JT
13316           IF(IABS(K(I,2)).LE.22) THEN
13317             P(I,5)=PYMASS(K(I,2))
13318           ELSE
13319             P(I,5)=SQRT(VINT(63+MOD(JS+JTA,2)))
13320           ENDIF
13321           PT=SQRT(MAX(0D0,VINT(197+5*JTA)-P(I,5)**2+VINT(196+5*JTA)**2))
13322           P(I,1)=PT*COS(VINT(198+5*JTA))
13323           P(I,2)=PT*SIN(VINT(198+5*JTA))
13324   570   CONTINUE
13325         K(IPU5,1)=1
13326         K(IPU5,2)=KFRES
13327         K(IPU5,3)=MINT(83)+IDOC
13328         P(IPU5,5)=SHR
13329         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
13330         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
13331         PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
13332         PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2
13333         PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2
13334         PMT3=SQRT(PMS3)
13335         P(IPU5,3)=PMT3*SINH(VINT(211))
13336         P(IPU5,4)=PMT3*COSH(VINT(211))
13337         PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2
13338         SQL12=(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2
13339         IF(SQL12.LE.0D0) THEN
13340           MINT(51)=1
13341           RETURN
13342         ENDIF
13343         P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+
13344      &  VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
13345         P(IPU4,3)=-P(IPU3,3)-P(IPU5,3)
13346         IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) THEN
13347 C...t and b in opposide order in event list as compared to
13348 C...matrix element
13349           P(IPU4,3)=(-P(IPU5,3)*(PMS12+PMS2-PMS1)+
13350      &    VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
13351           P(IPU3,3)=-P(IPU4,3)-P(IPU5,3)
13352         END IF
13353         P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2)
13354         P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2)
13355         MINT(23)=KFRES
13356         N=IPU5
13357         MINT(7)=MINT(83)+7
13358         MINT(8)=MINT(83)+8
13359  
13360       ELSEIF(IDOC.EQ.11) THEN
13361 C...Z0 + Z0 -> h0, W+ + W- -> h0: store Higgs and outgoing partons
13362         PHI(1)=PARU(2)*PYR(0)
13363         PHI(2)=PHI(1)-PHIR
13364         DO 580 JT=1,2
13365           I=MINT(84)+2+JT
13366           K(I,1)=1
13367           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
13368           K(I,2)=MINT(20+JT)
13369           K(I,3)=MINT(83)+IDOC+JT-2
13370           P(I,5)=PYMASS(K(I,2))
13371           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) THEN
13372             MINT(51)=1
13373             RETURN
13374           ENDIF
13375           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
13376           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
13377           P(I,1)=PTABS*COS(PHI(JT))
13378           P(I,2)=PTABS*SIN(PHI(JT))
13379           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
13380           P(I,4)=0.5D0*SHPR*Z(JT)
13381           IZW=MINT(83)+6+JT
13382           K(IZW,1)=21
13383           K(IZW,2)=23
13384           IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT)))
13385           K(IZW,3)=IZW-2
13386           P(IZW,1)=-P(I,1)
13387           P(IZW,2)=-P(I,2)
13388           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
13389           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
13390           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
13391   580   CONTINUE
13392         I=MINT(83)+9
13393         K(IPU5,1)=1
13394         K(IPU5,2)=KFRES
13395         K(IPU5,3)=I
13396         P(IPU5,5)=SHR
13397         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
13398         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
13399         P(IPU5,3)=-P(IPU3,3)-P(IPU4,3)
13400         P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4)
13401         K(I,1)=21
13402         K(I,2)=KFRES
13403         DO 590 J=1,5
13404           P(I,J)=P(IPU5,J)
13405   590   CONTINUE
13406         N=IPU5
13407         MINT(23)=KFRES
13408  
13409       ELSEIF(IDOC.EQ.12) THEN
13410 C...Z0 and W+/- scattering: store bosons and outgoing partons
13411         PHI(1)=PARU(2)*PYR(0)
13412         PHI(2)=PHI(1)-PHIR
13413         JTRAN=INT(1.5D0+PYR(0))
13414         DO 600 JT=1,2
13415           I=MINT(84)+2+JT
13416           K(I,1)=1
13417           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
13418           K(I,2)=MINT(20+JT)
13419           K(I,3)=MINT(83)+IDOC+JT-2
13420           P(I,5)=PYMASS(K(I,2))
13421           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0D0
13422           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
13423           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
13424           P(I,1)=PTABS*COS(PHI(JT))
13425           P(I,2)=PTABS*SIN(PHI(JT))
13426           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
13427           P(I,4)=0.5D0*SHPR*Z(JT)
13428           IZW=MINT(83)+6+JT
13429           K(IZW,1)=21
13430           IF(MINT(14+JT).EQ.MINT(20+JT)) THEN
13431             K(IZW,2)=23
13432           ELSE
13433             K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT))-PYCHGE(MINT(20+JT)))
13434           ENDIF
13435           K(IZW,3)=IZW-2
13436           P(IZW,1)=-P(I,1)
13437           P(IZW,2)=-P(I,2)
13438           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
13439           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
13440           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
13441           IPU=MINT(84)+4+JT
13442           K(IPU,1)=3
13443           K(IPU,2)=KFPR(ISUB,JT)
13444           IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2)
13445           IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2)
13446           K(IPU,3)=MINT(83)+8+JT
13447           IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN
13448             P(IPU,5)=PYMASS(K(IPU,2))
13449           ELSE
13450             P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2)))
13451           ENDIF
13452           MINT(22+JT)=K(IPU,2)
13453   600   CONTINUE
13454 C...Find rotation and boost for hard scattering subsystem
13455         I1=MINT(83)+7
13456         I2=MINT(83)+8
13457         BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4))
13458         BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4))
13459         BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4))
13460         GAMCM=(P(I1,4)+P(I2,4))/SHR
13461         BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3)
13462         PX=P(I1,1)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEXCM
13463         PY=P(I1,2)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEYCM
13464         PZ=P(I1,3)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEZCM
13465         THECM=PYANGL(PZ,SQRT(PX**2+PY**2))
13466         PHICM=PYANGL(PX,PY)
13467 C...Store hard scattering subsystem. Rotate and boost it
13468         SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4D0*P(IPU5,5)**2*
13469      &  P(IPU6,5)**2
13470         PABS=SQRT(MAX(0D0,SQLAM/(4D0*SH)))
13471         CTHWZ=VINT(23)
13472         STHWZ=SQRT(MAX(0D0,1D0-CTHWZ**2))
13473         PHIWZ=VINT(24)-PHICM
13474         P(IPU5,1)=PABS*STHWZ*COS(PHIWZ)
13475         P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ)
13476         P(IPU5,3)=PABS*CTHWZ
13477         P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2)
13478         P(IPU6,1)=-P(IPU5,1)
13479         P(IPU6,2)=-P(IPU5,2)
13480         P(IPU6,3)=-P(IPU5,3)
13481         P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2)
13482         CALL PYROBO(IPU5,IPU6,THECM,PHICM,BEXCM,BEYCM,BEZCM)
13483         DO 620 JT=1,2
13484           I1=MINT(83)+8+JT
13485           I2=MINT(84)+4+JT
13486           K(I1,1)=21
13487           K(I1,2)=K(I2,2)
13488           DO 610 J=1,5
13489             P(I1,J)=P(I2,J)
13490   610     CONTINUE
13491   620   CONTINUE
13492         N=IPU6
13493         MINT(7)=MINT(83)+9
13494         MINT(8)=MINT(83)+10
13495       ENDIF
13496  
13497       IF(ISET(ISUB).EQ.11) THEN
13498       ELSEIF(IDOC.GE.8) THEN
13499 C...Store colour connection indices
13500         DO 630 J=1,2
13501           JC=J
13502           IF(KCS.EQ.-1) JC=3-J
13503           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
13504      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)
13505           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
13506      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)
13507           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
13508      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
13509           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
13510      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
13511   630   CONTINUE
13512  
13513 C...Copy outgoing partons to documentation lines
13514         IMAX=2
13515         IF(IDOC.EQ.9) IMAX=3
13516         DO 650 I=1,IMAX
13517           I1=MINT(83)+IDOC-IMAX+I
13518           I2=MINT(84)+2+I
13519           K(I1,1)=21
13520           K(I1,2)=K(I2,2)
13521           IF(IDOC.LE.9) K(I1,3)=0
13522           IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I
13523           DO 640 J=1,5
13524             P(I1,J)=P(I2,J)
13525   640     CONTINUE
13526   650   CONTINUE
13527  
13528       ELSEIF(IDOC.EQ.9) THEN
13529 C...Store colour connection indices
13530         DO 660 J=1,2
13531           JC=J
13532           IF(KCS.EQ.-1) JC=3-J
13533           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
13534      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+
13535      &    MAX(0,MIN(1,ICOL(KCC,1,JC)-2))
13536           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
13537      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+
13538      &    MAX(0,MIN(1,ICOL(KCC,2,JC)-2))
13539           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
13540      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
13541           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)=
13542      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
13543   660   CONTINUE
13544  
13545 C...Copy outgoing partons to documentation lines
13546         DO 680 I=1,3
13547           I1=MINT(83)+IDOC-3+I
13548           I2=MINT(84)+2+I
13549           K(I1,1)=21
13550           K(I1,2)=K(I2,2)
13551           K(I1,3)=0
13552           DO 670 J=1,5
13553             P(I1,J)=P(I2,J)
13554   670     CONTINUE
13555   680   CONTINUE
13556       ENDIF
13557  
13558 C...Copy outgoing partons to list of allowed radiators.
13559       NPART=0
13560       IF(MINT(35).GE.2.AND.ISET(ISUB).NE.0) THEN
13561         DO 690 I=MINT(84)+3,N
13562           NPART=NPART+1
13563           IPART(NPART)=I
13564           PTPART(NPART)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2)
13565   690   CONTINUE
13566       ENDIF
13567  
13568 C...Low-pT events: remove gluons used for string drawing purposes
13569       IF(ISUB.EQ.95) THEN
13570         IF(MINT(35).LE.1) THEN
13571           K(IPU3,1)=K(IPU3,1)+10
13572           K(IPU4,1)=K(IPU4,1)+10
13573         ENDIF
13574         DO 700 J=41,66
13575           VINTSV(J)=VINT(J)
13576           VINT(J)=0D0
13577   700   CONTINUE
13578         DO 720 I=MINT(83)+5,MINT(83)+8
13579           DO 710 J=1,5
13580             P(I,J)=0D0
13581   710     CONTINUE
13582   720   CONTINUE
13583       ENDIF
13584  
13585       RETURN
13586       END
13587  
13588 C***********************************************************************
13589  
13590 C...PYEVOL
13591 C...Handles intertwined pT-ordered spacelike initial-state parton
13592 C...and multiple interactions.
13593  
13594       SUBROUTINE PYEVOL(MODE,PT2MAX,PT2MIN)
13595 C...Mode = -1 : Initialize first time. Determine MAX and MIN scales.
13596 C...MODE =  0 : (Re-)initialize ISR/MI evolution.
13597 C...Mode =  1 : Evolve event from PT2MAX to PT2MIN.
13598  
13599 C...Double precision and integer declarations.
13600       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
13601       IMPLICIT INTEGER(I-N)
13602       INTEGER PYK,PYCHGE,PYCOMP
13603 C...External
13604       EXTERNAL PYALPS
13605       DOUBLE PRECISION PYALPS
13606 C...Parameter statement for maximum size of showers.
13607       PARAMETER (MAXNUR=1000)
13608 C...Commonblocks.
13609       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
13610       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
13611       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
13612       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
13613       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
13614       COMMON/PYINT1/MINT(400),VINT(400)
13615       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
13616       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
13617       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
13618      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
13619      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
13620       COMMON/PYCTAG/NCT,MCT(4000,2)
13621       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
13622      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
13623       COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
13624 C...Local arrays and saved variables.
13625       DIMENSION VINTSV(11:80),KSAV(4,5),PSAV(4,5),VSAV(4,5),SHAT(240)
13626       SAVE NSAV,NPARTS,M15SV,M16SV,M21SV,M22SV,VINTSV,SHAT,ISUBHD,ALAM3
13627      &     ,PSAV,KSAV,VSAV
13628  
13629       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
13630      &     /PYINT2/,/PYINT3/,/PYINTM/,/PYCTAG/,/PYISMX/,/PYISJN/
13631  
13632 C----------------------------------------------------------------------
13633 C...MODE=-1: Pre-initialization. Store info on hard scattering etc,
13634 C...done only once per event, while MODE=0 is repeated each time the
13635 C...evolution needs to be restarted.
13636       IF (MODE.EQ.-1) THEN
13637         ISUBHD=MINT(1)
13638         NSAV=N
13639         NPARTS=NPART
13640 C...Store hard scattering variables
13641         M15SV=MINT(15)
13642         M16SV=MINT(16)
13643         M21SV=MINT(21)
13644         M22SV=MINT(22)
13645         DO 100 J=11,80
13646           VINTSV(J)=VINT(J)
13647   100   CONTINUE
13648         DO 120 J=1,5
13649           DO 110 IS=1,4
13650             I=IS+MINT(84)
13651             PSAV(IS,J)=P(I,J)
13652             KSAV(IS,J)=K(I,J)
13653             VSAV(IS,J)=V(I,J)
13654   110     CONTINUE
13655   120   CONTINUE
13656  
13657 C...Set shat for hardest scattering
13658         SHAT(1)=VINT(44)
13659         IF(ISET(ISUBHD).GE.3.AND.ISET(ISUBHD).LE.5) SHAT(1)=VINT(26)
13660      &       *VINT(2)
13661  
13662 C...Compute 3-Flavour Lambda_QCD (sets absolute lowest PT scale below)
13663         RMC=PMAS(4,1)
13664         RMB=PMAS(5,1)
13665         ALAM4=PARP(61)
13666         IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
13667         IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
13668         ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
13669  
13670 C----------------------------------------------------------------------
13671 C...MODE= 0: Initialize ISR/MI evolution, i.e. begin from hardest
13672 C...interaction initiators, with no previous evolution. Check the input
13673 C...PT2MAX and PT2MIN and impose extra constraints on minimum PT2 (e.g.
13674 C...must be larger than Lambda_QCD) and maximum PT2 (e.g. must be
13675 C...smaller than the CM energy / 2.)
13676       ELSEIF (MODE.EQ.0) THEN
13677 C...Reset counters and switches
13678         N=NSAV
13679         NPART=NPARTS
13680         MINT(30)=0
13681         MINT(31)=1
13682         MINT(36)=1
13683 C...Reset hard scattering variables
13684         MINT(1)=ISUBHD
13685         DO 130 J=11,80
13686           VINT(J)=VINTSV(J)
13687   130   CONTINUE
13688         DO 150 J=1,5
13689           DO 140 IS=1,4
13690             I=IS+MINT(84)
13691             P(I,J)=PSAV(IS,J)
13692             K(I,J)=KSAV(IS,J)
13693             V(I,J)=VSAV(IS,J)
13694             P(MINT(83)+4+IS,J)=PSAV(IS,J)
13695             V(MINT(83)+4+IS,J)=VSAV(IS,J)
13696   140     CONTINUE
13697   150   CONTINUE
13698 C...Reset statistics on activity in event.
13699         DO 160 J=351,359
13700           MINT(J)=0
13701           VINT(J)=0D0
13702   160   CONTINUE
13703 C...Reset extra companion reweighting factor
13704         VINT(140)=1D0
13705  
13706 C...We do not generate MI for soft process (ISUB=95), but the
13707 C...initialization must be done regardless, for later purposes.
13708         MINT(36)=1
13709  
13710 C...Initialize multiple interactions.
13711         CALL PYPTMI(-1,PTDUM1,PTDUM2,PTDUM3,IDUM)
13712         IF(MINT(51).NE.0) RETURN
13713  
13714 C...Decide whether quarks in hard scattering were valence or sea
13715         PT2HD=VINT(54)
13716         DO 170 JS=1,2
13717           MINT(30)=JS
13718           CALL PYPTMI(2,PT2HD,PTDUM2,PTDUM3,IDUM)
13719           IF(MINT(51).NE.0) RETURN
13720   170   CONTINUE
13721  
13722 C...Set lower cutoff for PT2 iteration and colour interference PT2 scale
13723         VINT(18)=0D0
13724         PT2MIN=MAX(PT2MIN,(1.1D0*ALAM3)**2)
13725         IF (MSTP(70).EQ.2) THEN
13726 C...VINT(18) is freezeout scale of alpha_s: alpha_eff(0) = alpha_s(VINT(18))
13727           VINT(18)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
13728         ELSEIF (MSTP(70).EQ.3) THEN
13729 C...MSTP(70) = 3 : Derive VINT(18) from alpha_eff(Lambda3) = PARP(73) 
13730           ALPHA0 = MAX(1D-6,PARP(73))
13731           Q20 = ALAM3**2/PARP(64)
13732           IF (MSTP(64).EQ.3) Q20 = Q20 * 1.661**2
13733           VINT(18) = Q20 * (EXP(12*PARU(1)/27D0/ALPHA0)-1D0)
13734         ENDIF
13735 C...Also store PT2MIN in VINT(17).
13736   180   VINT(17)=PT2MIN
13737  
13738 C...Set FS masses zero now.
13739         VINT(63)=0D0
13740         VINT(64)=0D0
13741  
13742 C...Initialize IS showers with VINT(56) as max scale.
13743         PT2ISR=VINT(56)
13744         PT20=PT2MIN
13745         IF (MSTP(70).EQ.0) THEN 
13746           PT20=MAX(PT2MIN,PARP(62)**2)
13747         ELSEIF (MSTP(70).EQ.1) THEN
13748           PT20=MAX(PT2MIN,(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2)
13749         ENDIF  
13750         CALL PYPTIS(-1,PT2ISR,PT20,PT2DUM,IFAIL)
13751         IF(MINT(51).NE.0) RETURN
13752  
13753         RETURN
13754  
13755 C----------------------------------------------------------------------
13756 C...MODE= 1: Evolve event from PTMAX to PTMIN.
13757       ELSEIF (MODE.EQ.1) THEN
13758  
13759 C...Skip if no phase space.
13760   190   IF (PT2MAX.LE.PT2MIN) GOTO 330
13761  
13762 C...Starting pT2 max scale (to be udpated successively).
13763         PT2CMX=PT2MAX
13764  
13765 C...Evolve two sides of the event to find which branches at highest pT.
13766   200   JSMX=-1
13767         MIMX=0
13768         PT2MX=0D0
13769  
13770 C...Loop over current shower initiators.
13771         IF (MSTP(61).GE.1) THEN
13772           DO 230 MI=1,MINT(31)
13773             IF (MI.GE.2.AND.MSTP(84).LE.0) GOTO 230
13774             ISUB=96
13775             IF (MI.EQ.1) ISUB=ISUBHD
13776             MINT(1)=ISUB
13777             MINT(36)=MI
13778 C...Set up shat, initiator x values, and x remaining in BR.
13779             VINT(44)=SHAT(MI)
13780             VINT(141)=XMI(1,MI)
13781             VINT(142)=XMI(2,MI)
13782             VINT(143)=1D0
13783             VINT(144)=1D0
13784             DO 210 JI=1,MINT(31)
13785               IF (JI.EQ.MINT(36)) GOTO 210
13786               VINT(143)=VINT(143)-XMI(1,JI)
13787               VINT(144)=VINT(144)-XMI(2,JI)
13788   210       CONTINUE
13789 C...Loop over sides.
13790 C...Generate trial branchings for this interaction. The hardest
13791 C...branching so far is automatically updated if necessary in /PYISMX/.
13792             DO 220 JS=1,2
13793               MINT(30)=JS
13794               PT20=PT2MIN
13795               IF (MSTP(70).EQ.0) THEN 
13796                 PT20=MAX(PT2MIN,PARP(62)**2)
13797               ELSEIF (MSTP(70).EQ.1) THEN
13798                 PT20=MAX(PT2MIN,
13799      &              (PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2)
13800               ENDIF  
13801               CALL PYPTIS(0,PT2CMX,PT20,PT2NEW,IFAIL)
13802               IF (MINT(51).NE.0) RETURN
13803   220       CONTINUE
13804   230     CONTINUE
13805         ENDIF
13806  
13807 C...Generate trial additional interaction.
13808         MINT(36)=MINT(31)+1
13809   240   IF (MOD(MSTP(81),10).GE.1) THEN
13810           MINT(1)=96
13811 C...Set up X remaining in BR.
13812           VINT(143)=1D0
13813           VINT(144)=1D0
13814           DO 250 JI=1,MINT(31)
13815             VINT(143)=VINT(143)-XMI(1,JI)
13816             VINT(144)=VINT(144)-XMI(2,JI)
13817   250     CONTINUE
13818 C...Generate trial interaction
13819   260     CALL PYPTMI(0,PT2CMX,PT2MIN,PT2NEW,IFAIL)
13820           IF (MINT(51).EQ.1) RETURN
13821         ENDIF
13822  
13823 C...And the winner is:
13824         IF (PT2MX.LT.PT2MIN) THEN
13825           GOTO 330
13826         ELSEIF (JSMX.EQ.0) THEN
13827 C...Accept additional interaction (may still fail).
13828           CALL PYPTMI(1,PT2NEW,PT2MIN,PT2DUM,IFAIL)
13829           IF(MINT(51).NE.0) RETURN
13830           IF (IFAIL.EQ.0) THEN
13831             SHAT(MINT(36))=VINT(44)
13832 C...Decide on flavours (valence/sea/companion).
13833             DO 270 JS=1,2
13834               MINT(30)=JS
13835               CALL PYPTMI(2,PT2NEW,PT2MIN,PT2DUM,IFAIL)
13836               IF(MINT(51).NE.0) RETURN
13837   270       CONTINUE
13838           ENDIF
13839         ELSEIF (JSMX.EQ.1.OR.JSMX.EQ.2) THEN
13840 C...Reconstruct kinematics of acceptable ISR branching.
13841 C...Set up shat, initiator x values, and x remaining in BR.
13842           MINT(30)=JSMX
13843           MINT(36)=MIMX
13844           VINT(44)=SHAT(MINT(36))
13845           VINT(141)=XMI(1,MINT(36))
13846           VINT(142)=XMI(2,MINT(36))
13847           VINT(143)=1D0
13848           VINT(144)=1D0
13849           DO 280 JI=1,MINT(31)
13850             IF (JI.EQ.MINT(36)) GOTO 280
13851             VINT(143)=VINT(143)-XMI(1,JI)
13852             VINT(144)=VINT(144)-XMI(2,JI)
13853   280     CONTINUE
13854           PT2NEW=PT2MX
13855           CALL PYPTIS(1,PT2NEW,PT2DM1,PT2DM2,IFAIL)
13856           IF (MINT(51).EQ.1) RETURN
13857         ELSEIF (JSMX.EQ.3.OR.JSMX.EQ.4) THEN
13858 C...Bookeep joining. Cannot (yet) be constructed kinematically.
13859           MINT(354)=MINT(354)+1
13860           VINT(354)=VINT(354)+SQRT(PT2MX)
13861           IF (MINT(354).EQ.1) VINT(359)=SQRT(PT2MX)
13862           MJOIND(JSMX-2,MJN1MX)=MJN2MX
13863           MJOIND(JSMX-2,MJN2MX)=MJN1MX
13864         ENDIF
13865  
13866 C...Update PT2 iteration scale.
13867         PT2CMX=PT2MX
13868  
13869 C...Loop back to continue evolution.
13870         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
13871           CALL PYERRM(11,'(PYEVOL:) no more memory left in PYJETS')
13872         ELSE
13873           IF (JSMX.GE.0.AND.PT2CMX.GE.PT2MIN) GOTO 200
13874         ENDIF
13875  
13876 C----------------------------------------------------------------------
13877 C...MODE= 2: (Re-)store user information on hardest interaction etc.
13878       ELSEIF (MODE.EQ.2) THEN
13879  
13880 C...Revert to "ordinary" meanings of some parameters.
13881   290   DO 310 JS=1,2
13882           MINT(12+JS)=K(IMI(JS,1,1),2)
13883           VINT(140+JS)=XMI(JS,1)
13884           IF(MINT(18+JS).EQ.1) VINT(140+JS)=VINT(154+JS)*XMI(JS,1)
13885           VINT(142+JS)=1D0
13886           DO 300 MI=1,MINT(31)
13887             VINT(142+JS)=VINT(142+JS)-XMI(JS,MI)
13888   300     CONTINUE
13889   310   CONTINUE
13890  
13891 C...Restore saved quantities for hardest interaction.
13892         MINT(1)=ISUBHD
13893         MINT(15)=M15SV
13894         MINT(16)=M16SV
13895         MINT(21)=M21SV
13896         MINT(22)=M22SV
13897         DO 320 J=11,80
13898           VINT(J)=VINTSV(J)
13899   320   CONTINUE
13900  
13901       ENDIF
13902  
13903   330 RETURN
13904       END
13905 
13906 C*********************************************************************
13907  
13908 C...PYSSPA
13909 C...Generates spacelike parton showers.
13910  
13911       SUBROUTINE PYSSPA(IPU1,IPU2)
13912  
13913 C...Double precision and integer declarations.
13914       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
13915       IMPLICIT INTEGER(I-N)
13916       INTEGER PYK,PYCHGE,PYCOMP
13917       PARAMETER (MAXNUR=1000)
13918 C...Commonblocks.
13919       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
13920       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
13921       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
13922       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
13923       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
13924       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
13925       COMMON/PYINT1/MINT(400),VINT(400)
13926       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
13927       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
13928       COMMON/PYCTAG/NCT,MCT(4000,2)
13929       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,
13930      &/PYINT1/,/PYINT2/,/PYINT3/,/PYCTAG/
13931 C...Local arrays and data.
13932       DIMENSION KFLS(4),IS(2),XS(2),ZS(2),Q2S(2),TEVCSV(2),TEVESV(2),
13933      &XFS(2,-25:25),XFA(-25:25),XFB(-25:25),XFN(-25:25),WTAPC(-25:25),
13934      &WTAPE(-25:25),WTSF(-25:25),THE2(2),ALAM(2),DQ2(3),DPC(3),DPD(4),
13935      &DPB(4),ROBO(5),MORE(2),KFBEAM(2),Q2MNCS(2),KCFI(2),NFIS(2),
13936      &THEFIS(2,2),ISFI(2),DPHI(2),MCESV(2)
13937       DATA IS/2*0/
13938  
13939 C...Read out basic information; set global Q^2 scale.
13940       IPUS1=IPU1
13941       IPUS2=IPU2
13942       ISUB=MINT(1)
13943       Q2MX=VINT(56)
13944       VINT2R=VINT(2)*VINT(143)*VINT(144)
13945       IF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.9.OR.ISET(ISUB).EQ.11) Q2MX=
13946      &MIN(VINT2R,PARP(67)*VINT(56))
13947       FCQ2MX=1D0
13948  
13949 C...Define which processes ME corrections have been implemented for.
13950       MECOR=0
13951       IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
13952         IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ.142.OR.
13953      &  ISUB.EQ.144) MECOR=1
13954         IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
13955         IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
13956       ENDIF
13957  
13958 C...Initialize QCD evolution and check phase space.
13959       Q2MNC=PARP(62)**2
13960       Q2MNCS(1)=Q2MNC
13961       Q2MNCS(2)=Q2MNC
13962       IF(MINT(107).EQ.2.AND.MSTP(66).EQ.2) THEN
13963         Q0S=PARP(15)**2
13964         PS=VINT(3)**2
13965         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
13966      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
13967         Q2INT=SQRT(Q0S*Q2EFF)
13968         Q2MNCS(1)=MAX(Q2MNC,Q2INT)
13969       ELSEIF(MINT(107).EQ.3.AND.MSTP(66).GE.1) THEN
13970         Q2MNCS(1)=MAX(Q2MNC,VINT(283))
13971       ENDIF
13972       IF(MINT(108).EQ.2.AND.MSTP(66).EQ.2) THEN
13973         Q0S=PARP(15)**2
13974         PS=VINT(4)**2
13975         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
13976      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
13977         Q2INT=SQRT(Q0S*Q2EFF)
13978         Q2MNCS(2)=MAX(Q2MNC,Q2INT)
13979       ELSEIF(MINT(108).EQ.3.AND.MSTP(66).GE.1) THEN
13980         Q2MNCS(2)=MAX(Q2MNC,VINT(284))
13981       ENDIF
13982       MCEV=0
13983       ALAMS=PARU(112)
13984       PARU(112)=PARP(61)
13985       FQ2C=1D0
13986       TCMX=0D0
13987       IF(MINT(47).GE.2.AND.(MINT(47).LT.5.OR.MSTP(12).GE.1)) THEN
13988         MCEV=1
13989         IF(MSTP(64).EQ.1) FQ2C=PARP(63)
13990         IF(MSTP(64).EQ.2) FQ2C=PARP(64)
13991         TCMX=LOG(FQ2C*Q2MX/PARP(61)**2)
13992         IF(Q2MX.LT.MAX(Q2MNC,2D0*PARP(61)**2).OR.TCMX.LT.0.2D0)
13993      &  MCEV=0
13994       ENDIF
13995  
13996 C...Initialize QED evolution and check phase space.
13997       MEEV=0
13998       XEE=1D-10
13999       SPME=PMAS(11,1)**2
14000       IF(IABS(MINT(11)).EQ.13.OR.IABS(MINT(12)).EQ.13)
14001      &SPME=PMAS(13,1)**2
14002       IF(IABS(MINT(11)).EQ.15.OR.IABS(MINT(12)).EQ.15)
14003      &SPME=PMAS(15,1)**2
14004       Q2MNE=MAX(PARP(68)**2,2D0*SPME)
14005       TEMX=0D0
14006       FWTE=10D0
14007       IF(MINT(45).EQ.3.OR.MINT(46).EQ.3) THEN
14008         MEEV=1
14009         TEMX=LOG(Q2MX/SPME)
14010         IF(Q2MX.LE.Q2MNE.OR.TEMX.LT.0.2D0) MEEV=0
14011       ENDIF
14012       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0) THEN
14013         MEEV=2
14014         TEMX=TCMX
14015         FWTE=1D0
14016       ENDIF
14017       IF(MCEV.EQ.0.AND.MEEV.EQ.0) RETURN
14018  
14019 C...Loopback point in case of failure to reconstruct kinematics.
14020       NS=N
14021       NPARTS=NPART
14022       LOOP=0      
14023       MNT352=MINT(352)
14024       MNT353=MINT(353)
14025       VNT352=VINT(352)
14026       VNT353=VINT(353)
14027   100 LOOP=LOOP+1
14028       IF(LOOP.GT.100) THEN
14029         MINT(51)=1
14030         RETURN
14031       ENDIF
14032       N=NS
14033       NPART=NPARTS
14034       MINT(352)=MNT352
14035       MINT(353)=MNT353
14036       VINT(352)=VNT352
14037       VINT(353)=VNT353
14038  
14039 C...Initial values: flavours, momenta, virtualities.
14040       DO 120 JT=1,2
14041         MORE(JT)=1
14042         KFBEAM(JT)=MINT(10+JT)
14043         IF(MINT(18+JT).EQ.1)KFBEAM(JT)=22
14044         KFLS(JT)=MINT(14+JT)
14045         KFLS(JT+2)=KFLS(JT)
14046         XS(JT)=VINT(40+JT)
14047         IF(MINT(18+JT).EQ.1) XS(JT)=VINT(40+JT)/VINT(154+JT)
14048         IF(MINT(31).GE.2) XS(JT)=XS(JT)/VINT(142+JT)
14049         ZS(JT)=1D0
14050         Q2S(JT)=FCQ2MX*Q2MX
14051         DQ2(JT)=0D0
14052         TEVCSV(JT)=TCMX
14053         ALAM(JT)=PARP(61)
14054         THE2(JT)=1D0
14055         TEVESV(JT)=TEMX
14056         MCESV(JT)=0
14057 C...Calculate initial parton distribution weights.
14058         MINT(105)=MINT(102+JT)
14059         MINT(109)=MINT(106+JT)
14060         VINT(120)=VINT(2+JT)
14061         IF(XS(JT).LT.1D0-XEE) THEN
14062           IF(MINT(31).GE.2) MINT(30)=JT
14063           IF(MSTP(57).LE.1) THEN
14064             CALL PYPDFU(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
14065           ELSE
14066             CALL PYPDFL(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
14067           ENDIF
14068         ENDIF
14069         DO 110 KFL=-25,25
14070           XFS(JT,KFL)=XFB(KFL)
14071   110   CONTINUE
14072 C...Special kinematics check for c/b quarks (that g -> c cbar or
14073 C...b bbar kinematically possible).
14074       KFLCB=IABS(KFLS(JT))
14075       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
14076         IF(XS(JT).GT.0.9D0*Q2S(JT)/(PMAS(KFLCB,1)**2+Q2S(JT))) THEN
14077           MINT(51)=1
14078           RETURN
14079         ENDIF
14080       ENDIF
14081   120 CONTINUE
14082       DSH=VINT(44)
14083       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) DSH=VINT(26)*VINT(2)
14084  
14085 C...Find if interference with final state partons.
14086       MFIS=0
14087       IF(MSTP(67).GE.1.AND.MSTP(67).LE.3) MFIS=MSTP(67)
14088       IF(MFIS.NE.0) THEN
14089         DO 140 I=1,2
14090           KCFI(I)=0
14091           KCA=PYCOMP(IABS(KFLS(I)))
14092           IF(KCA.NE.0) KCFI(I)=KCHG(KCA,2)*ISIGN(1,KFLS(I))
14093           NFIS(I)=0
14094           IF(KCFI(I).NE.0) THEN
14095             IF(I.EQ.1) IPFS=IPUS1
14096             IF(I.EQ.2) IPFS=IPUS2
14097             DO 130 J=1,2
14098               ICSI=MOD(K(IPFS,3+J),MSTU(5))
14099               IF(ICSI.GT.0.AND.ICSI.NE.IPUS1.AND.ICSI.NE.IPUS2.AND.
14100      &        (KCFI(I).EQ.(-1)**(J+1).OR.KCFI(I).EQ.2)) THEN
14101                 NFIS(I)=NFIS(I)+1
14102                 THEFIS(I,NFIS(I))=PYANGL(P(ICSI,3),SQRT(P(ICSI,1)**2+
14103      &          P(ICSI,2)**2))
14104                 IF(I.EQ.2) THEFIS(I,NFIS(I))=PARU(1)-THEFIS(I,NFIS(I))
14105               ENDIF
14106   130       CONTINUE
14107           ENDIF
14108   140   CONTINUE
14109         IF(NFIS(1)+NFIS(2).EQ.0) MFIS=0
14110       ENDIF
14111  
14112 C...Pick up leg with highest virtuality.
14113       JTOLD=1
14114   150 N=N+1
14115       JT=1
14116       IF(N.GT.NS+1.AND.Q2S(2).GT.Q2S(1)) JT=2
14117       IF(N.EQ.NS+2.AND.JT.EQ.JTOLD) JT=3-JT
14118       IF(MORE(JT).EQ.0) JT=3-JT
14119       JTOLD=JT
14120       KFLB=KFLS(JT)
14121       XB=XS(JT)
14122       DO 160 KFL=-25,25
14123         XFB(KFL)=XFS(JT,KFL)
14124   160 CONTINUE
14125       DSHR=2D0*SQRT(DSH)
14126       DSHZ=DSH/ZS(JT)
14127  
14128 C...Check if allowed to branch.
14129       MCEV=0
14130       IF(IABS(KFLB).LE.10.OR.KFLB.EQ.21) THEN
14131         MCEV=1
14132         XEC=MAX(PARP(65)*DSHR/VINT2R,XB*(1D0/(1D0-PARP(66))-1D0))
14133         IF(XB.GE.1D0-2D0*XEC) MCEV=0
14134       ENDIF
14135       MEEV=0
14136       IF(MINT(44+JT).EQ.3) THEN
14137         MEEV=1
14138         IF(XB.GE.1D0-2D0*XEE) MEEV=0
14139         IF((IABS(KFLB).LE.10.OR.KFLB.EQ.21).AND.XB.GE.1D0-2D0*XEC)
14140      &  MEEV=0
14141 C***Currently kill QED shower for resolved photoproduction.
14142         IF(MINT(18+JT).EQ.1) MEEV=0
14143 C***Currently kill shower for W inside electron.
14144         IF(IABS(KFLB).EQ.24) THEN
14145           MCEV=0
14146           MEEV=0
14147         ENDIF
14148       ENDIF
14149       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0.AND.IABS(KFLB).LE.10)
14150      &MEEV=2
14151       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
14152         Q2B=0D0
14153         GOTO 260
14154       ENDIF
14155  
14156 C...Maximum Q2 with or without Q2 ordering. Effective Lambda and n_f.
14157       Q2B=Q2S(JT)
14158       TEVCB=TEVCSV(JT)
14159       TEVEB=TEVESV(JT)
14160       IF(MSTP(62).LE.1) THEN
14161         IF(ZS(JT).GT.0.99999D0) THEN
14162           Q2B=Q2S(JT)
14163         ELSE
14164           Q2B=0.5D0*(1D0/ZS(JT)+1D0)*Q2S(JT)+0.5D0*(1D0/ZS(JT)-1D0)*
14165      &    (Q2S(3-JT)-DSH+SQRT((DSH+Q2S(1)+Q2S(2))**2+
14166      &    8D0*Q2S(1)*Q2S(2)*ZS(JT)/(1D0-ZS(JT))))
14167         ENDIF
14168         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
14169         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
14170       ENDIF
14171       IF(MCEV.EQ.1) THEN
14172         ALSDUM=PYALPS(FQ2C*Q2B)
14173         TEVCB=TEVCB+2D0*LOG(ALAM(JT)/PARU(117))
14174         ALAM(JT)=PARU(117)
14175         B0=(33D0-2D0*MSTU(118))/6D0
14176       ENDIF
14177       IF(MEEV.EQ.2) TEVEB=TEVCB
14178       TEVCBS=TEVCB
14179       TEVEBS=TEVEB
14180  
14181 C...Select side for interference with final state partons.
14182       IF(MFIS.GE.1.AND.N.LE.NS+2) THEN
14183         IFI=N-NS
14184         ISFI(IFI)=0
14185         IF(IABS(KCFI(IFI)).EQ.1.AND.NFIS(IFI).EQ.1) THEN
14186           ISFI(IFI)=1
14187         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.1) THEN
14188           IF(PYR(0).GT.0.5D0) ISFI(IFI)=1
14189         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.2) THEN
14190           ISFI(IFI)=1
14191           IF(PYR(0).GT.0.5D0) ISFI(IFI)=2
14192         ENDIF
14193       ENDIF
14194  
14195 C...Calculate preweighting factor for ME-corrected processes.
14196       IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
14197  
14198 C...Calculate Altarelli-Parisi weights.
14199       DO 170 KFL=-25,25
14200         WTAPC(KFL)=0D0
14201         WTAPE(KFL)=0D0
14202         WTSF(KFL)=0D0
14203   170 CONTINUE
14204 C...q -> q (g or gamma emission), g -> q.
14205       IF(IABS(KFLB).LE.10) THEN
14206         WTAPC(KFLB)=(8D0/3D0)*LOG((1D0-XEC-XB)*(XB+XEC)/(XEC*(1D0-XEC)))
14207         WTAPC(21)=0.5D0*(XB/(XB+XEC)-XB/(1D0-XEC))
14208         EQ2=1D0/9D0
14209         IF(MOD(IABS(KFLB),2).EQ.0) EQ2=4D0*EQ2
14210         IF(MEEV.EQ.2) WTAPE(KFLB)=2.*EQ2*LOG((1D0-XEC-XB)*(XB+XEC)/
14211      &  (XEC*(1D0-XEC)))
14212         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
14213           WTAPC(KFLB)=WTFF*WTAPC(KFLB)
14214           WTAPC(21)=WTGF*WTAPC(21)
14215           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
14216         ENDIF
14217 C...f -> f, gamma -> f.
14218       ELSEIF(IABS(KFLB).LE.20) THEN
14219         WTAPF1=LOG((1D0-XEE-XB)*(XB+XEE)/(XEE*(1D0-XEE)))
14220         WTAPF2=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))
14221         WTAPE(KFLB)=2D0*(WTAPF1+WTAPF2)
14222         IF(MSTP(12).GE.1) WTAPE(22)=XB/(XB+XEE)-XB/(1D0-XEE)
14223         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
14224           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
14225           WTAPE(22)=WTGF*WTAPE(22)
14226         ENDIF
14227 C...f -> g, g -> g.
14228       ELSEIF(KFLB.EQ.21) THEN
14229         WTAPQ=(16D0/3D0)*(SQRT((1D0-XEC)/XB)-SQRT((XB+XEC)/XB))
14230         DO 180 KFL=1,MSTP(58)
14231           WTAPC(KFL)=WTAPQ
14232           WTAPC(-KFL)=WTAPQ
14233   180   CONTINUE
14234         WTAPC(21)=6D0*LOG((1D0-XEC-XB)/XEC)
14235         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
14236           DO 190 KFL=1,MSTP(58)
14237             WTAPC(KFL)=WTFG*WTAPC(KFL)
14238             WTAPC(-KFL)=WTFG*WTAPC(-KFL)
14239   190     CONTINUE
14240           WTAPC(21)=WTGG*WTAPC(21)
14241         ENDIF
14242 C...f -> gamma, W+, W-.
14243       ELSEIF(KFLB.EQ.22) THEN
14244         WTAPF=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))/XB
14245         WTAPE(11)=WTAPF
14246         WTAPE(-11)=WTAPF
14247         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
14248           WTAPE(11)=WTFG*WTAPE(11)
14249           WTAPE(-11)=WTFG*WTAPE(-11)
14250         ENDIF
14251       ELSEIF(KFLB.EQ.24) THEN
14252         WTAPE(-11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
14253      &  (XEE*(XB+XEE)))/XB
14254       ELSEIF(KFLB.EQ.-24) THEN
14255         WTAPE(11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
14256      &  (XEE*(XB+XEE)))/XB
14257       ENDIF
14258  
14259 C...Calculate parton distribution weights and sum.
14260       NTRY=0
14261   200 NTRY=NTRY+1
14262       IF(NTRY.GT.500) THEN
14263         MINT(51)=1
14264         RETURN
14265       ENDIF
14266       WTSUMC=0D0
14267       WTSUME=0D0
14268       XFBO=MAX(1D-10,XFB(KFLB))
14269       DO 210 KFL=-25,25
14270         WTSF(KFL)=XFB(KFL)/XFBO
14271         WTSUMC=WTSUMC+WTAPC(KFL)*WTSF(KFL)
14272         WTSUME=WTSUME+WTAPE(KFL)*WTSF(KFL)
14273   210 CONTINUE
14274       WTSUMC=MAX(0.0001D0,WTSUMC)
14275       WTSUME=MAX(0.0001D0/FWTE,WTSUME)
14276  
14277 C...Choose new t: fix alpha_s, alpha_s(Q^2), alpha_s(k_T^2).
14278       NTRY2=0
14279   220 NTRY2=NTRY2+1
14280       IF(NTRY2.GT.500) THEN
14281         MINT(51)=1
14282         RETURN
14283       ENDIF
14284       IF(MCEV.EQ.1) THEN
14285         IF(MSTP(64).LE.0) THEN
14286           TEVCB=TEVCB+LOG(PYR(0))*PARU(2)/(PARU(111)*WTSUMC)
14287         ELSEIF(MSTP(64).EQ.1) THEN
14288           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/WTSUMC))
14289         ELSE
14290           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/(5D0*WTSUMC)))
14291         ENDIF
14292       ENDIF
14293       IF(MEEV.EQ.1) THEN
14294         TEVEB=TEVEB*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
14295      &  (PARU(101)*FWTE*WTSUME*TEMX)))
14296       ELSEIF(MEEV.EQ.2) THEN
14297         TEVEB=TEVEB+LOG(PYR(0))*PARU(2)/(PARU(101)*WTSUME)
14298       ENDIF
14299  
14300 C...Translate t into Q2 scale; choose between QCD and QED evolution.
14301   230 IF(MCEV.EQ.1) Q2CB=ALAM(JT)**2*EXP(MAX(-50D0,TEVCB))/FQ2C
14302       IF(MEEV.EQ.1) Q2EB=SPME*EXP(MAX(-50D0,TEVEB))
14303       IF(MEEV.EQ.2) Q2EB=ALAM(JT)**2*EXP(MAX(-50D0,TEVEB))/FQ2C
14304 C...Ensure that Q2 is above threshold for charm/bottom.
14305       KFLCB=IABS(KFLB)
14306       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
14307      &MCEV.EQ.1) THEN
14308         IF(Q2CB.LT.PMAS(KFLCB,1)**2) THEN
14309           Q2CB=1.1D0*PMAS(KFLCB,1)**2
14310           TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
14311           FCQ2MX=MIN(2D0,1.05D0*FCQ2MX)
14312         ENDIF
14313       ENDIF
14314       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
14315      &MEEV.EQ.2) THEN
14316         IF(Q2EB.LT.PMAS(KFLCB,1)**2) MEEV=0
14317       ENDIF
14318       MCE=0
14319       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
14320       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.0) THEN
14321         IF(Q2CB.GT.Q2MNCS(JT)) MCE=1
14322       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.1) THEN
14323         IF(Q2EB.GT.Q2MNE) MCE=2
14324       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.2) THEN
14325         IF(Q2EB.GT.Q2MNCS(JT)) MCE=2
14326       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.2) THEN
14327         IF(Q2CB.GT.Q2EB.AND.Q2CB.GT.Q2MNCS(JT)) MCE=1
14328         IF(Q2EB.GT.Q2CB.AND.Q2EB.GT.Q2MNCS(JT)) MCE=2
14329       ELSEIF(Q2MNCS(JT).GT.Q2MNE) THEN
14330         MCE=1
14331         IF(Q2EB.GT.Q2CB.OR.Q2CB.LE.Q2MNCS(JT)) MCE=2
14332         IF(MCE.EQ.2.AND.Q2EB.LE.Q2MNE) MCE=0
14333       ELSE
14334         MCE=2
14335         IF(Q2CB.GT.Q2EB.OR.Q2EB.LE.Q2MNE) MCE=1
14336         IF(MCE.EQ.1.AND.Q2CB.LE.Q2MNCS(JT)) MCE=0
14337       ENDIF
14338  
14339 C...Evolution possibly ended. Update t values.
14340       IF(MCE.EQ.0) THEN
14341         Q2B=0D0
14342         GOTO 260
14343       ELSEIF(MCE.EQ.1) THEN
14344         Q2B=Q2CB
14345         Q2REF=FQ2C*Q2B
14346         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
14347         IF(MEEV.EQ.2) TEVEB=LOG(FQ2C*Q2B/ALAM(JT)**2)
14348       ELSE
14349         Q2B=Q2EB
14350         Q2REF=Q2B
14351         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
14352       ENDIF
14353  
14354 C...Select flavour for branching parton.
14355       IF(MCE.EQ.1) WTRAN=PYR(0)*WTSUMC
14356       IF(MCE.EQ.2) WTRAN=PYR(0)*WTSUME
14357       KFLA=-25
14358   240 KFLA=KFLA+1
14359       IF(MCE.EQ.1) WTRAN=WTRAN-WTAPC(KFLA)*WTSF(KFLA)
14360       IF(MCE.EQ.2) WTRAN=WTRAN-WTAPE(KFLA)*WTSF(KFLA)
14361       IF(KFLA.LE.24.AND.WTRAN.GT.0D0) GOTO 240
14362       IF(KFLA.EQ.25) THEN
14363         Q2B=0D0
14364         GOTO 260
14365       ENDIF
14366  
14367 C...Choose z value and corrective weight.
14368       WTZ=0D0
14369 C...q -> q + g or q -> q + gamma.
14370       IF(IABS(KFLA).LE.10.AND.IABS(KFLB).LE.10) THEN
14371         Z=1D0-((1D0-XB-XEC)/(1D0-XEC))*
14372      &  (XEC*(1D0-XEC)/((XB+XEC)*(1D0-XB-XEC)))**PYR(0)
14373         WTZ=0.5D0*(1D0+Z**2)
14374 C...q -> g + q.
14375       ELSEIF(IABS(KFLA).LE.10.AND.KFLB.EQ.21) THEN
14376         Z=XB/(SQRT(XB+XEC)+PYR(0)*(SQRT(1D0-XEC)-SQRT(XB+XEC)))**2
14377         WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
14378 C...f -> f + gamma.
14379       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
14380         IF(WTAPF1.GT.PYR(0)*(WTAPF1+WTAPF2)) THEN
14381           Z=1D0-((1D0-XB-XEE)/(1D0-XEE))*
14382      &    (XEE*(1D0-XEE)/((XB+XEE)*(1D0-XB-XEE)))**PYR(0)
14383         ELSE
14384           Z=XB+XB*(XEE/(1D0-XEE))*
14385      &    ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
14386         ENDIF
14387         WTZ=0.5D0*(1D0+Z**2)*(Z-XB)/(1D0-XB)
14388 C...f -> gamma + f.
14389       ELSEIF(IABS(KFLA).LE.20.AND.KFLB.EQ.22) THEN
14390         Z=XB+XB*(XEE/(1D0-XEE))*
14391      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
14392         WTZ=0.5D0*(1D0+(1D0-Z)**2)*XB*(Z-XB)/Z
14393 C...f -> W+- + f.
14394       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).EQ.24) THEN
14395         Z=XB+XB*(XEE/(1D0-XEE))*
14396      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
14397         WTZ=0.5D0*(1D0+(1D0-Z)**2)*(XB*(Z-XB)/Z)*
14398      &  (Q2B/(Q2B+PMAS(24,1)**2))
14399 C...g -> q + qbar.
14400       ELSEIF(KFLA.EQ.21.AND.IABS(KFLB).LE.10) THEN
14401         Z=XB/(1D0-XEC)+PYR(0)*(XB/(XB+XEC)-XB/(1D0-XEC))
14402         WTZ=1D0-2D0*Z*(1D0-Z)
14403 C...g -> g + g.
14404       ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
14405         Z=1D0/(1D0+((1D0-XEC-XB)/XB)*(XEC/(1D0-XEC-XB))**PYR(0))
14406         WTZ=(1D0-Z*(1D0-Z))**2
14407 C...gamma -> f + fbar.
14408       ELSEIF(KFLA.EQ.22.AND.IABS(KFLB).LE.20) THEN
14409         Z=XB/(1D0-XEE)+PYR(0)*(XB/(XB+XEE)-XB/(1D0-XEE))
14410         WTZ=1D0-2D0*Z*(1D0-Z)
14411       ENDIF
14412       IF(MCE.EQ.2.AND.MEEV.EQ.1) WTZ=(WTZ/FWTE)*(TEVEB/TEMX)
14413  
14414 C...Option with resummation of soft gluon emission as effective z shift.
14415       IF(MCE.EQ.1) THEN
14416         IF(MSTP(65).GE.1) THEN
14417           RSOFT=6D0
14418           IF(KFLB.NE.21) RSOFT=8D0/3D0
14419           Z=Z*(TEVCB/TEVCSV(JT))**(RSOFT*XEC/((XB+XEC)*B0))
14420           IF(Z.LE.XB) GOTO 220
14421         ENDIF
14422  
14423 C...Option with alpha_s(k_T^2): demand k_T^2 > cutoff, reweight.
14424         IF(MSTP(64).GE.2) THEN
14425           IF((1D0-Z)*Q2B.LT.Q2MNCS(JT)) GOTO 220
14426           ALPRAT=TEVCB/(TEVCB+LOG(1D0-Z))
14427           IF(ALPRAT.LT.5D0*PYR(0)) GOTO 220
14428           IF(ALPRAT.GT.5D0) WTZ=WTZ*ALPRAT/5D0
14429         ENDIF
14430       ENDIF
14431  
14432 C...Remove kinematically impossible branchings.
14433       UHAT=Q2B-DSH*(1D0-Z)/Z
14434       IF(MSTP(68).GE.0.AND.UHAT.GT.0D0) GOTO 220
14435  
14436 C...Select phi angle of branching at random.
14437       PHIBR=PARU(2)*PYR(0)
14438  
14439 C...Matrix-element corrections for some processes.
14440       IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
14441         IF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
14442           CALL PYMEWT(MECOR,1,Q2B,Z,PHIBR,WTME)
14443           WTZ=WTZ*WTME/WTFF
14444         ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.IABS(KFLB).LE.20) THEN
14445           CALL PYMEWT(MECOR,2,Q2B,Z,PHIBR,WTME)
14446           WTZ=WTZ*WTME/WTGF
14447         ELSEIF(IABS(KFLA).LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
14448           CALL PYMEWT(MECOR,3,Q2B,Z,PHIBR,WTME)
14449           WTZ=WTZ*WTME/WTFG
14450         ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
14451           CALL PYMEWT(MECOR,4,Q2B,Z,PHIBR,WTME)
14452           WTZ=WTZ*WTME/WTGG
14453         ENDIF
14454       ENDIF
14455  
14456 C...Impose angular constraint in first branching from interference
14457 C...with final state partons.
14458       IF(MCE.EQ.1) THEN
14459         IF(MFIS.GE.1.AND.N.LE.NS+2.AND.NTRY2.LT.200) THEN
14460           THE2D=(4D0*Q2B)/(DSH*(1D0-Z))
14461           IF(N.EQ.NS+1.AND.ISFI(1).GE.1) THEN
14462             IF(THE2D.GT.THEFIS(1,ISFI(1))**2) GOTO 220
14463           ELSEIF(N.EQ.NS+2.AND.ISFI(2).GE.1) THEN
14464             IF(THE2D.GT.THEFIS(2,ISFI(2))**2) GOTO 220
14465           ENDIF
14466         ENDIF
14467  
14468 C...Option with angular ordering requirement.
14469         IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THEN
14470           THE2T=(4D0*Z**2*Q2B)/(4D0*Z**2*Q2B+(1D0-Z)*XB**2*VINT2R)
14471           IF(THE2T.GT.THE2(JT)) GOTO 220
14472         ENDIF
14473       ENDIF
14474  
14475 C...Weighting with new parton distributions.
14476       MINT(105)=MINT(102+JT)
14477       MINT(109)=MINT(106+JT)
14478       VINT(120)=VINT(2+JT)
14479       IF(MINT(31).GE.2) MINT(30)=JT
14480       IF(MSTP(57).LE.1) THEN
14481         CALL PYPDFU(KFBEAM(JT),XB,Q2REF,XFN)
14482       ELSE
14483         CALL PYPDFL(KFBEAM(JT),XB,Q2REF,XFN)
14484       ENDIF
14485       XFBN=XFN(KFLB)
14486       IF(XFBN.LT.1D-20) THEN
14487         IF(KFLA.EQ.KFLB) THEN
14488           TEVCB=TEVCBS
14489           TEVEB=TEVEBS
14490           WTAPC(KFLB)=0D0
14491           WTAPE(KFLB)=0D0
14492           GOTO 200
14493         ELSEIF(MCE.EQ.1.AND.TEVCBS-TEVCB.GT.0.2D0) THEN
14494           TEVCB=0.5D0*(TEVCBS+TEVCB)
14495           GOTO 230
14496         ELSEIF(MCE.EQ.2.AND.TEVEBS-TEVEB.GT.0.2D0) THEN
14497           TEVEB=0.5D0*(TEVEBS+TEVEB)
14498           GOTO 230
14499         ELSE
14500           XFBN=1D-10
14501           XFN(KFLB)=XFBN
14502         ENDIF
14503       ENDIF
14504       DO 250 KFL=-25,25
14505         XFB(KFL)=XFN(KFL)
14506   250 CONTINUE
14507       XA=XB/Z
14508       IF(MINT(31).GE.2) MINT(30)=JT
14509       IF(MSTP(57).LE.1) THEN
14510         CALL PYPDFU(KFBEAM(JT),XA,Q2REF,XFA)
14511       ELSE
14512         CALL PYPDFL(KFBEAM(JT),XA,Q2REF,XFA)
14513       ENDIF
14514       XFAN=XFA(KFLA)
14515       IF(XFAN.LT.1D-20) GOTO 200
14516       WTSFA=WTSF(KFLA)
14517       IF(WTZ*XFAN/XFBN.LT.PYR(0)*WTSFA) GOTO 200
14518  
14519 C...Define two hard scatterers in their CM-frame.
14520   260 IF(N.EQ.NS+2) THEN
14521         DQ2(JT)=Q2B
14522         DPLCM=SQRT((DSH+DQ2(1)+DQ2(2))**2-4D0*DQ2(1)*DQ2(2))/DSHR
14523         DO 280 JR=1,2
14524           I=NS+JR
14525           IF(JR.EQ.1) IPO=IPUS1
14526           IF(JR.EQ.2) IPO=IPUS2
14527           DO 270 J=1,5
14528             K(I,J)=0
14529             P(I,J)=0D0
14530             V(I,J)=0D0
14531   270     CONTINUE
14532           K(I,1)=14
14533           K(I,2)=KFLS(JR+2)
14534           K(I,4)=IPO
14535           K(I,5)=IPO
14536           P(I,3)=DPLCM*(-1)**(JR+1)
14537           P(I,4)=(DSH+DQ2(3-JR)-DQ2(JR))/DSHR
14538           P(I,5)=-SQRT(DQ2(JR))
14539           K(IPO,1)=14
14540           K(IPO,3)=I
14541           K(IPO,4)=MOD(K(IPO,4),MSTU(5))+MSTU(5)*I
14542           K(IPO,5)=MOD(K(IPO,5),MSTU(5))+MSTU(5)*I
14543           MCT(I,1)=MCT(IPO,1)
14544           MCT(I,2)=MCT(IPO,2)
14545   280   CONTINUE
14546  
14547 C...Find maximum allowed mass of timelike parton.
14548       ELSEIF(N.GT.NS+2) THEN
14549         JR=3-JT
14550         DQ2(3)=Q2B
14551         DPC(1)=P(IS(1),4)
14552         DPC(2)=P(IS(2),4)
14553         DPC(3)=0.5D0*(ABS(P(IS(1),3))+ABS(P(IS(2),3)))
14554         DPD(1)=DSH+DQ2(JR)+DQ2(JT)
14555         DPD(2)=DSHZ+DQ2(JR)+DQ2(3)
14556         DPD(3)=SQRT(DPD(1)**2-4D0*DQ2(JR)*DQ2(JT))
14557         DPD(4)=SQRT(DPD(2)**2-4D0*DQ2(JR)*DQ2(3))
14558         IKIN=0
14559         IF(Q2S(JR).GE.0.25D0*Q2MNC.AND.DPD(1)-DPD(3).GE.
14560      &  1D-10*DPD(1)) IKIN=1
14561         IF(IKIN.EQ.0) DMSMA=(DQ2(JT)/ZS(JT)-DQ2(3))*
14562      &  (DSH/(DSH+DQ2(JT))-DSH/(DSHZ+DQ2(3)))
14563         IF(IKIN.EQ.1) DMSMA=(DPD(1)*DPD(2)-DPD(3)*DPD(4))/
14564      &  (2D0*DQ2(JR))-DQ2(JT)-DQ2(3)
14565  
14566 C...Generate timelike parton shower (if required).
14567         IT=N
14568         DO 290 J=1,5
14569           K(IT,J)=0
14570           P(IT,J)=0D0
14571           V(IT,J)=0D0
14572   290   CONTINUE
14573 C...f -> f + g (gamma).
14574         IF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).LE.20) THEN
14575           K(IT,2)=21
14576           IF(MCESV(JT).EQ.2.OR.IABS(KFLB).GE.11) K(IT,2)=22
14577 C...f -> g (gamma, W+-) + f.
14578         ELSEIF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).GT.20) THEN
14579           K(IT,2)=KFLB
14580           IF(KFLS(JT+2).EQ.24) THEN
14581             K(IT,2)=-12
14582           ELSEIF(KFLS(JT+2).EQ.-24) THEN
14583             K(IT,2)=12
14584           ENDIF
14585 C...g (gamma) -> f + fbar, g + g.
14586         ELSE
14587           K(IT,2)=-KFLS(JT+2)
14588           IF(KFLS(JT+2).GT.20) K(IT,2)=KFLS(JT+2)
14589         ENDIF
14590         K(IT,1)=3
14591         IF((IABS(K(IT,2)).GE.11.AND.IABS(K(IT,2)).LE.18).OR.
14592      &  IABS(K(IT,2)).EQ.22) K(IT,1)=1
14593         P(IT,5)=PYMASS(K(IT,2))
14594         IF(DMSMA.LE.P(IT,5)**2) GOTO 100
14595         IF(MSTP(63).GE.1.AND.MCESV(JT).EQ.1) THEN
14596           MSTJ48=MSTJ(48)
14597           PARJ85=PARJ(85)
14598           P(IT,4)=(DSHZ-DSH-P(IT,5)**2)/DSHR
14599           P(IT,3)=SQRT(P(IT,4)**2-P(IT,5)**2)
14600           IF(MSTP(63).EQ.1) THEN
14601             Q2TIM=DMSMA
14602           ELSEIF(MSTP(63).EQ.2) THEN
14603             Q2TIM=MIN(DMSMA,PARP(71)*Q2S(JT))
14604           ELSE
14605             Q2TIM=DMSMA
14606             MSTJ(48)=1
14607             IF(IKIN.EQ.0) DPT2=DMSMA*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
14608             IF(IKIN.EQ.1) DPT2=DMSMA*(0.5D0*DPD(1)*DPD(2)+0.5D0*DPD(3)*
14609      &      DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)))/(4D0*DSH*DPC(3)**2)
14610             PARJ(85)=SQRT(MAX(0D0,DPT2))*
14611      &      (1D0/P(IT,4)+1D0/P(IS(JT),4))
14612           ENDIF
14613 C...Only do timelike shower here if using PYSHOW
14614           IF (MSTJ(41).NE.11.AND.MSTJ(41).NE.12) THEN
14615             CALL PYSHOW(IT,0,SQRT(Q2TIM))
14616           ENDIF
14617           MSTJ(48)=MSTJ48
14618           PARJ(85)=PARJ85
14619           IF(N.GE.IT+1) P(IT,5)=P(IT+1,5)
14620         ENDIF
14621  
14622 C...Reconstruct kinematics of branching: timelike parton shower.
14623         DMS=P(IT,5)**2
14624         IF(IKIN.EQ.0) DPT2=(DMSMA-DMS)*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
14625         IF(IKIN.EQ.1) DPT2=(DMSMA-DMS)*(0.5D0*DPD(1)*DPD(2)+
14626      &  0.5D0*DPD(3)*DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)+DMS))/
14627      &  (4D0*DSH*DPC(3)**2)
14628         IF(DPT2.LT.0D0) GOTO 100
14629         DPB(1)=(0.5D0*DPD(2)-DPC(JR)*(DSHZ+DQ2(JR)-DQ2(JT)-DMS)/
14630      &  DSHR)/DPC(3)-DPC(3)
14631         P(IT,1)=SQRT(DPT2)
14632         P(IT,3)=DPB(1)*(-1)**(JT+1)
14633         P(IT,4)=SQRT(DPT2+DPB(1)**2+DMS)
14634         IF(N.GE.IT+1) THEN
14635           DPB(1)=SQRT(DPB(1)**2+DPT2)
14636           DPB(2)=SQRT(DPB(1)**2+DMS)
14637           DPB(3)=P(IT+1,3)
14638           DPB(4)=SQRT(DPB(3)**2+DMS)
14639           DBEZ=(DPB(4)*DPB(1)-DPB(3)*DPB(2))/(DPB(4)*DPB(2)-DPB(3)*
14640      &    DPB(1))
14641           CALL PYROBO(IT+1,N,0D0,0D0,0D0,0D0,DBEZ)
14642           THE=PYANGL(P(IT,3),P(IT,1))
14643           CALL PYROBO(IT+1,N,THE,0D0,0D0,0D0,0D0)
14644         ENDIF
14645  
14646 C...Reconstruct kinematics of branching: spacelike parton.
14647         DO 300 J=1,5
14648           K(N+1,J)=0
14649           P(N+1,J)=0D0
14650           V(N+1,J)=0D0
14651   300   CONTINUE
14652         K(N+1,1)=14
14653         K(N+1,2)=KFLB
14654         P(N+1,1)=P(IT,1)
14655         P(N+1,3)=P(IT,3)+P(IS(JT),3)
14656         P(N+1,4)=P(IT,4)+P(IS(JT),4)
14657         P(N+1,5)=-SQRT(DQ2(3))
14658         MCT(N+1,1)=0
14659         MCT(N+1,2)=0
14660  
14661 C...Define colour flow of branching.
14662         K(IS(JT),3)=N+1
14663         K(IT,3)=N+1
14664         IM1=N+1
14665         IM2=N+1
14666 C...f -> f + gamma (Z, W).
14667         IF(IABS(K(IT,2)).GE.22) THEN
14668           K(IT,1)=1
14669           ID1=IS(JT)
14670           ID2=IS(JT)
14671 C...f -> gamma (Z, W) + f.
14672         ELSEIF(IABS(K(IS(JT),2)).GE.22) THEN
14673           ID1=IT
14674           ID2=IT
14675 C...gamma -> q + qbar, g + g.
14676         ELSEIF(K(N+1,2).EQ.22) THEN
14677           ID1=IS(JT)
14678           ID2=IT
14679           IM1=ID2
14680           IM2=ID1
14681 C...q -> q + g.
14682         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21.AND.K(IT,2).EQ.21) THEN
14683           ID1=IT
14684           ID2=IS(JT)
14685 C...q -> g + q.
14686         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21) THEN
14687           ID1=IS(JT)
14688           ID2=IT
14689 C...qbar -> qbar + g.
14690         ELSEIF(K(N+1,2).LT.0.AND.K(IT,2).EQ.21) THEN
14691           ID1=IS(JT)
14692           ID2=IT
14693 C...qbar -> g + qbar.
14694         ELSEIF(K(N+1,2).LT.0) THEN
14695           ID1=IT
14696           ID2=IS(JT)
14697 C...g -> g + g; g -> q + qbar.
14698         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
14699           ID1=IS(JT)
14700           ID2=IT
14701         ELSE
14702           ID1=IT
14703           ID2=IS(JT)
14704         ENDIF
14705         IF(IM1.EQ.N+1) K(IM1,4)=K(IM1,4)+ID1
14706         IF(IM2.EQ.N+1) K(IM2,5)=K(IM2,5)+ID2
14707         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
14708         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
14709         IF(ID1.NE.ID2) THEN
14710           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
14711           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
14712         ENDIF
14713         N=N+1
14714         IF(K(IT,1).EQ.1) THEN
14715           K(IT,4)=0
14716           K(IT,5)=0
14717         ENDIF
14718  
14719 C...Boost to new CM-frame.
14720         DBSVX=(P(N,1)+P(IS(JR),1))/(P(N,4)+P(IS(JR),4))
14721         DBSVZ=(P(N,3)+P(IS(JR),3))/(P(N,4)+P(IS(JR),4))
14722         IF(DBSVX**2+DBSVZ**2.GE.1D0) GOTO 100
14723         CALL PYROBO(NS+1,N,0D0,0D0,-DBSVX,0D0,-DBSVZ)
14724         IR=N+(JT-1)*(IS(1)-N)
14725         CALL PYROBO(NS+1,N,-PYANGL(P(IR,3),P(IR,1)),DPHI(JT),
14726      &  0D0,0D0,0D0)
14727  
14728 C...Save timelike parton in PYPART if doing pT-ordered FSR off ISR
14729         IF (MSTJ(41).EQ.11.OR.MSTJ(41).EQ.12) THEN
14730           NPART=NPART+1
14731           IPART(NPART)=IT
14732           PTPART(NPART)=SQRT(PARP(71)*DPT2)
14733         ENDIF
14734 
14735 C...Global statistics.
14736         MINT(352)=MINT(352)+1
14737         VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
14738         IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
14739 
14740       ENDIF
14741  
14742 C...Update kinematics variables.
14743       IS(JT)=N
14744       DQ2(JT)=Q2B
14745       IF(MSTP(62).GE.3.AND.NTRY2.LT.200.AND.MCE.EQ.1) THE2(JT)=THE2T
14746       DSH=DSHZ
14747  
14748 C...Save quantities; loop back.
14749       Q2S(JT)=Q2B
14750       DPHI(JT)=PHIBR
14751       MCESV(JT)=MCE
14752       IF((MCEV.EQ.1.AND.Q2B.GE.0.25D0*Q2MNC).OR.
14753      &(MEEV.EQ.1.AND.Q2B.GE.Q2MNE)) THEN
14754         KFLS(JT+2)=KFLS(JT)
14755         KFLS(JT)=KFLA
14756         XS(JT)=XA
14757         ZS(JT)=Z
14758         DO 310 KFL=-25,25
14759           XFS(JT,KFL)=XFA(KFL)
14760   310   CONTINUE
14761         TEVCSV(JT)=TEVCB
14762         TEVESV(JT)=TEVEB
14763       ELSE
14764         MORE(JT)=0
14765         IF(JT.EQ.1) IPU1=N
14766         IF(JT.EQ.2) IPU2=N
14767       ENDIF
14768       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
14769         CALL PYERRM(11,'(PYSSPA:) no more memory left in PYJETS')
14770         IF(MSTU(21).GE.1) N=NS
14771         IF(MSTU(21).GE.1) RETURN
14772       ENDIF
14773       IF(MORE(1).EQ.1.OR.MORE(2).EQ.1) GOTO 150
14774  
14775 C...Boost hard scattering partons to frame of shower initiators.
14776       DO 320 J=1,3
14777         ROBO(J+2)=(P(NS+1,J)+P(NS+2,J))/(P(NS+1,4)+P(NS+2,4))
14778   320 CONTINUE
14779       K(N+2,1)=1
14780       DO 330 J=1,5
14781         P(N+2,J)=P(NS+1,J)
14782   330 CONTINUE
14783       CALL PYROBO(N+2,N+2,0D0,0D0,-ROBO(3),-ROBO(4),-ROBO(5))
14784       ROBO(2)=PYANGL(P(N+2,1),P(N+2,2))
14785       ROBO(1)=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
14786       IMIN=MINT(83)+5
14787       IF(MINT(31).GE.2) IMIN=MIN(IPUS1,IPUS2)
14788       CALL PYROBO(IMIN,NS,0D0,-ROBO(2),0D0,0D0,0D0)
14789       CALL PYROBO(IMIN,NS,ROBO(1),ROBO(2),ROBO(3),ROBO(4),ROBO(5))
14790  
14791 C...Store user information. Reset Lambda value.
14792       IF(MINT(31).LE.1) THEN
14793         K(IPU1,3)=MINT(83)+3
14794         K(IPU2,3)=MINT(83)+4
14795       ELSE
14796         K(IPU1,3)=MINT(83)+1
14797         K(IPU2,3)=MINT(83)+2
14798       ENDIF
14799       DO 340 JT=1,2
14800         MINT(12+JT)=KFLS(JT)
14801         VINT(140+JT)=XS(JT)
14802         IF(MINT(18+JT).EQ.1) VINT(140+JT)=VINT(154+JT)*XS(JT)
14803         IF(MINT(31).GE.2) VINT(140+JT)=VINT(140+JT)*VINT(142+JT)
14804   340 CONTINUE
14805       PARU(112)=ALAMS
14806  
14807       RETURN
14808       END
14809 
14810 C*********************************************************************
14811  
14812 C...PYPTIS
14813 C...Generates pT-ordered spacelike initial-state parton showers and
14814 C...trial joinings.
14815 C...MODE=-1: Initialize ISR from scratch, starting from the hardest
14816 C...         interaction initiators at PT2NOW.
14817 C...MODE= 0: Generate a trial branching on interaction MINT(36), side
14818 C...         MINT(30). Start evolution at PT2NOW, solve Sudakov for PT2.
14819 C...         Store in /PYISMX/ if PT2 is largest so far. Abort if PT2
14820 C...         is below PT2CUT.
14821 C...         (Also generate test joinings if MSTP(96)=1.)
14822 C...MODE= 1: Accept stored shower branching. Update event record etc.
14823 C...PT2NOW : Starting (max) PT2 scale for evolution.
14824 C...PT2CUT : Lower limit for evolution.
14825 C...PT2    : Result of evolution. Generated PT2 for trial emission.
14826 C...IFAIL  : Status return code. IFAIL=0 when all is well.
14827  
14828       SUBROUTINE PYPTIS(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
14829  
14830 C...Double precision and integer declarations.
14831       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
14832       IMPLICIT INTEGER(I-N)
14833       INTEGER PYK,PYCHGE,PYCOMP
14834 C...Parameter statement for maximum size of showers.
14835       PARAMETER (MAXNUR=1000)
14836 C...Commonblocks.
14837       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
14838       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
14839       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
14840       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
14841       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14842       COMMON/PYINT1/MINT(400),VINT(400)
14843       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
14844       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
14845      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
14846      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
14847       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
14848      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
14849       COMMON/PYCTAG/NCT,MCT(4000,2)
14850       COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
14851       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
14852      &     /PYINT2/,/PYINTM/,/PYISMX/,/PYCTAG/,/PYISJN/
14853 C...Local variables
14854       DIMENSION ZSAV(2,240),PT2SAV(2,240),
14855      &     XFB(-25:25),XFA(-25:25),XFN(-25:25),XFJ(-25:25),
14856      &     WTAP(-25:25),WTPDF(-25:25),SHTNOW(240),
14857      &     WTAPJ(240),WTPDFJ(240),X1(240),Y(240)
14858       SAVE ZSAV,PT2SAV,XFB,XFA,XFN,WTAP,WTPDF,XMXC,SHTNOW,
14859      &     RMB2,RMC2,ALAM3,ALAM4,ALAM5,TMIN,PTEMAX,WTEMAX,AEM2PI
14860 C...For check on excessive weights.
14861       CHARACTER CHWT*12
14862  
14863 C...Only give errors for very large weights, otherwise just warnings
14864       DATA WTEMAX /1.5D0/
14865 C...Only give errors for large pT, otherwise just warnings
14866       DATA PTEMAX /5D0/
14867  
14868       IFAIL=-1
14869  
14870 C----------------------------------------------------------------------
14871 C...MODE=-1: Initialize initial state showers from scratch, i.e.
14872 C...starting from the hardest interaction initiators.
14873       IF (MODE.EQ.-1) THEN
14874 C...Set hard scattering SHAT.
14875         SHTNOW(1)=VINT(44)
14876 C...Mass thresholds and Lambda for QCD evolution.
14877         AEM2PI=PARU(101)/PARU(2)
14878         RMB=PMAS(5,1)
14879         RMC=PMAS(4,1)
14880         ALAM4=PARP(61)
14881         IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
14882         IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
14883         ALAM5=ALAM4*(ALAM4/RMB)**(2D0/23D0)
14884         ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
14885 C...Optionally use Lambda_MC = Lambda_CMW 
14886         IF (MSTP(64).EQ.3) THEN
14887           ALAM5 = ALAM5 * 1.569 
14888           ALAM4 = ALAM4 * 1.618 
14889           ALAM3 = ALAM3 * 1.661 
14890         ENDIF
14891         RMB2=RMB**2
14892         RMC2=RMC**2
14893 C...Massive quark forced creation threshold (in M**2).
14894         TMIN=1.01D0
14895 C...Set upper limit for X (ensures some X left for beam remnant).
14896         XMXC=1D0-2D0*PARP(111)/VINT(1)
14897  
14898         IF (MSTP(61).GE.1) THEN
14899 C...Initial values: flavours, momenta, virtualities.
14900           DO 100 JS=1,2
14901             NISGEN(JS,1)=0
14902  
14903 C...Special kinematics check for c/b quarks (that g -> c cbar or
14904 C...b bbar kinematically possible).
14905             KFLB=K(IMI(JS,1,1),2)
14906             KFLCB=IABS(KFLB)
14907             IF(KFBEAM(JS).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
14908 C...Check PT2MAX > mQ^2
14909               IF (VINT(56).LT.1.05D0*PMAS(PYCOMP(KFLCB),1)**2) THEN
14910                 CALL PYERRM(9,'(PYPTIS:) PT2MAX < 1.05 * MQ**2. '//
14911      &               'No Q creation possible.')
14912                 MINT(51)=1
14913                 RETURN
14914               ELSE
14915 C...Check for physical z values (m == MQ / sqrt(s))
14916 C...For creation diagram, x < z < (1-m)/(1+m(1-m))
14917                 FMQ=PMAS(KFLCB,1)/SQRT(SHTNOW(1))
14918                 ZMXCR=(1D0-FMQ)/(1D0+FMQ*(1D0-FMQ))
14919                 IF (XMI(JS,1).GT.0.9D0*ZMXCR) THEN
14920                   CALL PYERRM(9,'(PYPTIS:) No physical z value for '//
14921      &                 'Q creation.')
14922                   MINT(51)=1
14923                   RETURN
14924                 ENDIF
14925               ENDIF
14926             ENDIF
14927   100     CONTINUE
14928         ENDIF
14929  
14930         MINT(354)=0
14931 C...Zero joining array
14932         DO 110 MJ=1,240
14933           MJOIND(1,MJ)=0
14934           MJOIND(2,MJ)=0
14935   110   CONTINUE
14936  
14937 C----------------------------------------------------------------------
14938 C...MODE= 0: Generate a trial branching on interaction MINT(36) side
14939 C...MINT(30). Store if emission PT2 scale is largest so far.
14940 C...Also generate test joinings if MSTP(96)=1.
14941       ELSEIF(MODE.EQ.0) THEN
14942         IFAIL=-1
14943         MECOR=0
14944         ISUB=MINT(1)
14945         JS=MINT(30)
14946 C...No shower for structureless beam
14947         IF (MINT(44+JS).EQ.1) RETURN
14948         MI=MINT(36)
14949         SHAT=VINT(44)
14950 C...Absolute shower max scale = VINT(56)
14951         IF (MSTP(67).NE.0) THEN
14952           PT2 = MIN(PT2NOW,VINT(56))
14953         ELSE
14954 C...For MSTP(67)=0, adjust starting scale by PARP(67)
14955           PT2=MIN(PT2NOW,PARP(67)*VINT(56))
14956         ENDIF
14957         IF (NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) SHTNOW(MI)=SHAT
14958 C...Define for which processes ME corrections have been implemented.
14959         IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
14960           IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ
14961      &         .142.OR.ISUB.EQ.144) MECOR=1
14962           IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
14963           IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
14964 C...Calculate preweighting factor for ME-corrected processes.
14965           IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
14966         ENDIF
14967 C...Basic info on daughter for which to find mother.
14968         KFLB=K(IMI(JS,MI,1),2)
14969         KFLBA=IABS(KFLB)
14970 C...KSVCB: -1 for sea or first companion, 0 for valence or gluon, >1 for
14971 C...second companion.
14972         KSVCB=MAX(-1,IMI(JS,MI,2))
14973 C...Treat "first" companion of a pair like an ordinary sea quark
14974 C...(except that creation diagram is not allowed)
14975         IF(IMI(JS,MI,2).GT.IMISEP(MI)) KSVCB=-1
14976 C...X (rescaled to [0,1])
14977         XB=XMI(JS,MI)/VINT(142+JS)
14978 C...Massive quarks (use physical masses.)
14979         RMQ2=0D0
14980         MQMASS=0
14981         IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
14982           RMQ2=RMC2
14983           IF (KFLBA.EQ.5) RMQ2=RMB2
14984 C...Special threshold treatment for non-photon beams
14985           IF (KFBEAM(JS).NE.22) MQMASS=KFLBA
14986 C...Check that not below mass threshold.
14987           IF(MQMASS.GT.0.AND.PT2.LT.TMIN*RMQ2) THEN
14988             CALL PYERRM(9,'(PYPTIS:) PT2 < 1.01 * MQ**2. '//
14989      &        'No Q creation possible.')
14990             MINT(51)=1
14991 C...Special return code if failing before any evolution at all: bad event
14992             IF (NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) MINT(51)=2
14993             RETURN
14994           ENDIF
14995 
14996         ENDIF
14997  
14998 C...Flags for parton distribution calls.
14999         MINT(105)=MINT(102+JS)
15000         MINT(109)=MINT(106+JS)
15001         VINT(120)=VINT(2+JS)
15002  
15003 C...Calculate initial parton distribution weights.
15004         IF(XB.GE.XMXC) THEN
15005           RETURN
15006         ELSEIF(MQMASS.EQ.0) THEN
15007           CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
15008         ELSE
15009 C...Initialize massive quark PT2 dependent pdf underestimate.
15010           PT20=PT2
15011           CALL PYPDFU(KFBEAM(JS),XB,PT20,XFB)
15012 C.!.Tentative treatment of massive valence quarks.
15013           XQ0=MAX(1D-10,XPSVC(KFLB,KSVCB))
15014           XG0=XFB(21)
15015           TPM0=LOG(PT20/RMQ2)
15016           WPDF0=TPM0*XG0/XQ0
15017         ENDIF
15018         IF (KFLBA.LE.6) THEN
15019 C...For quarks, only include respective sea, val, or cmp part.
15020           IF (KSVCB.LE.0) THEN
15021             XFB(KFLB)=XPSVC(KFLB,KSVCB)
15022           ELSE
15023 C...Find companion's companion
15024             MISEA=0
15025   120       MISEA=MISEA+1
15026             IF (IMI(JS,MISEA,2).NE.IMI(JS,MI,1)) GOTO 120
15027             XS=XMI(JS,MISEA)
15028             XREM=VINT(142+JS)
15029             YS=XS/(XREM+XS)
15030 C...Momentum fraction of the companion quark.
15031 C...Rescale from XB = x/XREM to YB = x/(1-Sum_rest) -> factor (1-YS).
15032             YB=XB*(1D0-YS)
15033             XFB(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
15034           ENDIF
15035         ENDIF
15036  
15037 C...Determine overestimated z range: switch at c and b masses.
15038   130   IF (PT2.GT.TMIN*RMB2) THEN
15039           IZRG=3
15040           PT2MNE=MAX(TMIN*RMB2,PT2CUT)
15041           B0=23D0/6D0
15042           ALAM2=ALAM5**2
15043         ELSEIF(PT2.GT.TMIN*RMC2) THEN
15044           IZRG=2
15045           PT2MNE=MAX(TMIN*RMC2,PT2CUT)
15046           B0=25D0/6D0
15047           ALAM2=ALAM4**2
15048         ELSE
15049           IZRG=1
15050           PT2MNE=PT2CUT
15051           B0=27D0/6D0
15052           ALAM2=ALAM3**2
15053         ENDIF
15054 C...Divide Lambda by PARP(64) (equivalent to mult pT2 by PARP(64))
15055         ALAM2=ALAM2/PARP(64)
15056 C...Overestimated ZMAX:
15057         IF (MQMASS.EQ.0) THEN
15058 C...Massless
15059           ZMAX=1D0-0.5D0*(PT2MNE/SHTNOW(MI))*(SQRT(1D0+4D0*SHTNOW(MI)
15060      &         /PT2MNE)-1D0)
15061         ELSE
15062 C...Massive (limit for bremsstrahlung diagram > creation)
15063           FMQ=SQRT(RMQ2/SHTNOW(MI))
15064           ZMAX=1D0/(1D0+FMQ)
15065         ENDIF
15066         ZMIN=XB/XMXC
15067  
15068 C...If kinematically impossible then do not evolve.
15069         IF(PT2.LT.PT2CUT.OR.ZMAX.LE.ZMIN) RETURN
15070  
15071 C...Reset Altarelli-Parisi and PDF weights.
15072         DO 140 KFL=-5,5
15073           WTAP(KFL)=0D0
15074           WTPDF(KFL)=0D0
15075   140   CONTINUE
15076         WTAP(21)=0D0
15077         WTPDF(21)=0D0
15078 C...Zero joining weights and compute X(partner) and X(mother) values.
15079         NJN=0
15080         IF (MSTP(96).NE.0) THEN
15081           DO 150 MJ=1,MINT(31)
15082             WTAPJ(MJ)=0D0
15083             WTPDFJ(MJ)=0D0
15084             X1(MJ)=XMI(JS,MJ)/(VINT(142+JS)+XMI(JS,MJ))
15085             Y(MJ)=(XMI(JS,MI)+XMI(JS,MJ))/(VINT(142+JS)+XMI(JS,MJ)
15086      &           +XMI(JS,MI))
15087   150     CONTINUE
15088         ENDIF
15089  
15090 C...Approximate Altarelli-Parisi weights (integrated AP dz).
15091 C...q -> q, g -> q or q -> q + gamma (already set which).
15092         IF(KFLBA.LE.5) THEN
15093 C...Val and cmp quarks get an extra sqrt(z) to smooth their bumps.
15094           IF (KSVCB.LT.0) THEN
15095             WTAP(KFLB)=(8D0/3D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
15096           ELSE
15097             RMIN=(1+SQRT(ZMIN))/(1-SQRT(ZMIN))
15098             RMAX=(1+SQRT(ZMAX))/(1-SQRT(ZMAX))
15099             WTAP(KFLB)=(8D0/3D0)*LOG(RMAX/RMIN)
15100           ENDIF
15101           WTAP(21)=0.5D0*(ZMAX-ZMIN)
15102           WTAPE=(2D0/9D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
15103           IF(MOD(KFLBA,2).EQ.0) WTAPE=4D0*WTAPE
15104           IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
15105             WTAP(KFLB)=WTFF*WTAP(KFLB)
15106             WTAP(21)=WTGF*WTAP(21)
15107             WTAPE=WTFF*WTAPE
15108           ENDIF
15109           IF(MSTP(61).EQ.1) WTAPE=0D0
15110           IF (KSVCB.GE.1) THEN
15111 C...Kill normal creation but add joining diagrams for cmp quark.
15112             WTAP(21)=0D0
15113             IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
15114               CALL PYERRM(9,'(PYPTIS:) Sorry, I got a heavy companion'//
15115      &             " quark here. Not handled yet, giving up!")
15116               PT2=0D0
15117               MINT(51)=1
15118               RETURN
15119             ENDIF
15120 C...Check for possible joinings
15121             IF (MSTP(96).NE.0.AND.MJOIND(JS,MI).EQ.0) THEN
15122 C...Find companion's companion.
15123               MJ=0
15124   160         MJ=MJ+1
15125               IF (IMI(JS,MJ,2).NE.IMI(JS,MI,1)) GOTO 160
15126               IF (MJOIND(JS,MJ).EQ.0) THEN
15127                 Y(MI)=YB+YS
15128                 Z=YB/Y(MI)
15129                 WTAPJ(MJ)=Z*(1D0-Z)*0.5D0*(Z**2+(1D0-Z)**2)
15130                 IF (WTAPJ(MJ).GT.1D-6) THEN
15131                   NJN=1
15132                 ELSE
15133                   WTAPJ(MJ)=0D0
15134                 ENDIF
15135               ENDIF
15136 C...Add trial gluon joinings.
15137               DO 170 MJ=1,MINT(31)
15138                 KFLC=K(IMI(JS,MJ,1),2)
15139                 IF (KFLC.NE.21.OR.MJOIND(JS,MJ).NE.0) GOTO 170
15140                 Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
15141                 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
15142                 IF (WTAPJ(MJ).GT.1D-6) THEN
15143                   NJN=NJN+1
15144                 ELSE
15145                   WTAPJ(MJ)=0D0
15146                 ENDIF
15147   170         CONTINUE
15148             ENDIF
15149           ELSEIF (IMI(JS,MI,2).GE.0) THEN
15150 C...Kill creation diagram for val quarks and sea quarks with companions.
15151             WTAP(21)=0D0
15152           ELSEIF (MQMASS.EQ.0) THEN
15153 C...Extra safety factor for massless sea quark creation.
15154             WTAP(21)=WTAP(21)*1.25D0
15155           ENDIF
15156  
15157 C...  q -> g, g -> g.
15158         ELSEIF(KFLB.EQ.21) THEN
15159 C...Here we decide later whether a quark picked up is valence or
15160 C...sea, so we maintain the extra factor sqrt(z) since we deal
15161 C...with the *sum* of sea and valence in this context.
15162           WTAPQ=(16D0/3D0)*(SQRT(1D0/ZMIN)-SQRT(1D0/ZMAX))
15163 C...new: do not allow backwards evol to pick up heavy flavour.
15164           DO 180 KFL=1,MIN(3,MSTP(58))
15165             WTAP(KFL)=WTAPQ
15166             WTAP(-KFL)=WTAPQ
15167   180     CONTINUE
15168           WTAP(21)=6D0*LOG(ZMAX*(1D0-ZMIN)/(ZMIN*(1D0-ZMAX)))
15169           IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
15170             WTAPQ=WTFG*WTAPQ
15171             WTAP(21)=WTGG*WTAP(21)
15172           ENDIF
15173 C...Check for possible joinings (companions handled separately above)
15174           IF (MSTP(96).NE.0.AND.MINT(31).GE.2.AND.MJOIND(JS,MI).EQ.0)
15175      &         THEN
15176             DO 190 MJ=1,MINT(31)
15177               IF (MJ.EQ.MI.OR.MJOIND(JS,MJ).NE.0) GOTO 190
15178               KSVCC=IMI(JS,MJ,2)
15179               IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
15180               IF (KSVCC.GE.1) GOTO 190
15181               KFLC=K(IMI(JS,MJ,1),2)
15182 C...Only try g -> g + g once.
15183               IF (MJ.GT.MI.AND.KFLC.EQ.21) GOTO 190
15184               Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
15185               IF (KFLC.EQ.21) THEN
15186                 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
15187               ELSE
15188                 WTAPJ(MJ)=Z*4D0/3D0*(1D0+Z**2)
15189               ENDIF
15190               IF (WTAPJ(MJ).GT.1D-6) THEN
15191                 NJN=NJN+1
15192               ELSE
15193                 WTAPJ(MJ)=0D0
15194               ENDIF
15195   190       CONTINUE
15196           ENDIF
15197         ENDIF
15198  
15199 C...Initialize massive quark evolution
15200         IF (MQMASS.NE.0) THEN
15201           RML=(RMQ2+VINT(18))/ALAM2
15202           TML=LOG(RML)
15203           TPL=LOG((PT2+VINT(18))/ALAM2)
15204           TPM=LOG((PT2+VINT(18))/RMQ2)
15205           WN=WTAP(21)*WPDF0/B0
15206         ENDIF
15207  
15208  
15209 C...Loopback point for iteration
15210         NTRY=0
15211         NTHRES=0
15212   200   NTRY=NTRY+1
15213         IF(NTRY.GT.500) THEN
15214           CALL PYERRM(9,'(PYPTIS:) failed to evolve shower.')
15215           MINT(51)=1
15216           RETURN
15217         ENDIF
15218  
15219 C...  Calculate PDF weights and sum for evolution rate.
15220         WTSUM=0D0
15221         XFBO=MAX(1D-10,XFB(KFLB))
15222         DO 210 KFL=-5,5
15223           WTPDF(KFL)=XFB(KFL)/XFBO
15224           WTSUM=WTSUM+WTAP(KFL)*WTPDF(KFL)
15225   210   CONTINUE
15226 C...Only add gluon mother diagram for massless KFLB.
15227         IF(MQMASS.EQ.0) THEN
15228           WTPDF(21)=XFB(21)/XFBO
15229           WTSUM=WTSUM+WTAP(21)*WTPDF(21)
15230         ENDIF
15231         WTSUM=MAX(0.0001D0,WTSUM)
15232         WTSUMS=WTSUM
15233 C...Add joining diagrams where applicable.
15234         WTJOIN=0D0
15235         IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
15236           DO 220 MJ=1,MINT(31)
15237             IF (WTAPJ(MJ).LT.1D-3) GOTO 220
15238             WTPDFJ(MJ)=1D0/XFBO
15239 C...x and x*pdf (+ sea/val) for parton C.
15240             KFLC=K(IMI(JS,MJ,1),2)
15241             KFLCA=IABS(KFLC)
15242             KSVCC=MAX(-1,IMI(JS,MJ,2))
15243             IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
15244             MINT(30)=JS
15245             MINT(36)=MJ
15246             CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
15247             MINT(36)=MI
15248             IF (KFLCA.LE.6.AND.KSVCC.LE.0) THEN
15249               XFJ(KFLC)=XPSVC(KFLC,KSVCC)
15250             ELSEIF (KSVCC.GE.1) THEN
15251               print*, 'error! parton C is companion!'
15252             ENDIF
15253             WTPDFJ(MJ)=WTPDFJ(MJ)/XFJ(KFLC)
15254 C...x and x*pdf (+ sea/val) for parton A.
15255             KFLA=21
15256             KSVCA=0
15257             IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
15258               KFLA=KFLB
15259               KSVCA=KSVCB
15260             ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
15261               KFLA=KFLC
15262               KSVCA=KSVCC
15263             ENDIF
15264             MINT(30)=JS
15265             IF (KSVCA.LE.0) THEN
15266 C...Consider C the "evolved" parton if B is gluon. Val/sea
15267 C...counting will then be done correctly in PYPDFU.
15268               IF (KFLBA.EQ.21) MINT(36)=MJ
15269               CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
15270               MINT(36)=MI
15271               IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
15272             ELSE
15273 C...If parton A is companion, use Y(MI) and YS in call to PYFCMP.
15274               XFJ(KFLA)=PYFCMP(Y(MI)/VINT(140),YS/VINT(140),MSTP(87))
15275             ENDIF
15276             WTPDFJ(MJ)=XFJ(KFLA)*WTPDFJ(MJ)
15277             WTJOIN=WTJOIN+WTAPJ(MJ)*WTPDFJ(MJ)
15278   220     CONTINUE
15279         ENDIF
15280  
15281 C...Pick normal pT2 (in overestimated z range).
15282   230   PT2OLD=PT2
15283         WTSUM=WTSUMS
15284         PT2=ALAM2*((PT2+VINT(18))/ALAM2)**(PYR(0)**(B0/WTSUM))-VINT(18)
15285         KFLC=21
15286  
15287 C...Evolve q -> q gamma separately, pick it if larger pT.
15288         IF(KFLBA.LE.5.AND.MSTP(61).GE.2) THEN
15289           PT2QED=(PT2OLD+VINT(18))*PYR(0)**(1D0/(AEM2PI*WTAPE))-VINT(18)
15290           IF(PT2QED.GT.PT2) THEN
15291             PT2=PT2QED
15292             KFLC=22
15293             KFLA=KFLB
15294           ENDIF
15295         ENDIF
15296  
15297 C...  Evolve massive quark creation separately.
15298         MCRQQ=0
15299         IF (MQMASS.NE.0) THEN
15300           PT2CR=(RMQ2+VINT(18))*(RML**(TPM/(TPL*PYR(0)**(-TML/WN)-TPM)))
15301      &         -VINT(18)
15302 C...If massive quark also on opposite side, ensure sufficient remaining 
15303 C...phase space also for creation of that quark
15304           TMINQQ = TMIN
15305           KFLOPP = K(IMI(3-JS,MI,1),2)
15306           IF (ABS(KFLOPP).EQ.4.OR.ABS(KFLOPP).EQ.5) TMINQQ = 1.05
15307 C...Ensure mininimum PT2CR and force creation near threshold.
15308           IF (PT2CR.LT.TMINQQ*RMQ2) THEN
15309             NTHRES=NTHRES+1
15310             IF (NTHRES.GT.50) THEN
15311               CALL PYERRM(9,'(PYPTIS:) no phase space left for '//
15312      &             'massive quark creation. Gave up trying.')
15313               MINT(51)=1
15314 C...Special return code if failing before any evolution at all: bad event
15315               IF (NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) MINT(51)=2
15316               RETURN
15317             ENDIF
15318             PT2=0D0
15319             PT2CR=TMINQQ*RMQ2
15320 C...Signal that massive quark creation is being forced
15321             MCRQQ=2
15322           ENDIF
15323 C...  Select largest PT2 (brems or creation):
15324           IF (PT2CR.GT.PT2) THEN
15325             MCRQQ=MAX(MCRQQ,1)
15326             WTSUM=0D0
15327             PT2=PT2CR
15328             KFLA=21
15329           ELSE
15330             MCRQQ=0
15331             KFLA=KFLB
15332           ENDIF
15333 C...  Compute logarithms for this PT2
15334           TPL=LOG((PT2+VINT(18))/ALAM2)
15335           TPM=LOG((PT2+VINT(18))/(RMQ2+VINT(18)))
15336           WTCRQQ=TPM/LOG(PT2/RMQ2)
15337         ENDIF
15338  
15339 C...Evolve joining separately
15340         MJOIN=0
15341         IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
15342           PT2JN=ALAM2*((PT2OLD+VINT(18))/ALAM2)**(PYR(0)**(B0/WTJOIN))
15343      &         -VINT(18)
15344           IF (PT2JN.GE.PT2) THEN
15345             MJOIN=1
15346             PT2=PT2JN
15347           ENDIF
15348         ENDIF
15349  
15350 C...Loopback if crossed c/b mass thresholds.
15351         IF(IZRG.EQ.3.AND.PT2.LT.RMB2) THEN
15352           PT2=RMB2
15353          GOTO 130
15354         ELSEIF(IZRG.EQ.2.AND.PT2.LT.RMC2) THEN
15355           PT2=RMC2
15356           GOTO 130
15357         ENDIF
15358  
15359 C...Speed up shower. Skip if higher-PT acceptable branching
15360 C...already found somewhere else.
15361 C...Also finish if below lower cutoff.
15362  
15363         IF ((PT2-PT2MX).LT.-0.001.OR.PT2.LT.PT2CUT) RETURN
15364  
15365 C...Select parton A flavour (massive Q handled above.)
15366         IF (MQMASS.EQ.0.AND.KFLC.NE.22.AND.MJOIN.EQ.0) THEN
15367           WTRAN=PYR(0)*WTSUM
15368           KFLA=-6
15369   240     KFLA=KFLA+1
15370           WTRAN=WTRAN-WTAP(KFLA)*WTPDF(KFLA)
15371           IF(KFLA.LE.5.AND.WTRAN.GT.0D0) GOTO 240
15372           IF(KFLA.EQ.6) KFLA=21
15373         ELSEIF (MJOIN.EQ.1) THEN
15374 C...Tentative joining accept/reject.
15375           WTRAN=PYR(0)*WTJOIN
15376           MJ=0
15377   250     MJ=MJ+1
15378           WTRAN=WTRAN-WTAPJ(MJ)*WTPDFJ(MJ)
15379           IF(MJ.LE.MINT(31)-1.AND.WTRAN.GT.0D0) GOTO 250
15380           IF(MJOIND(JS,MJ).NE.0.OR.MJOIND(JS,MI).NE.0) THEN
15381             CALL PYERRM(9,'(PYPTIS:) Attempted double joining.'//
15382      &           ' Rejected.')
15383             GOTO 230
15384           ENDIF
15385 C...x*pdf (+ sea/val) at new pT2 for parton B.
15386           IF (KSVCB.LE.0) THEN
15387             MINT(30)=JS
15388             CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
15389             IF (KFLBA.LE.6) XFB(KFLB)=XPSVC(KFLB,KSVCB)
15390           ELSE
15391 C...Companion distributions do not evolve.
15392             XFB(KFLB)=XFBO
15393           ENDIF
15394           WTVETO=1D0/WTPDFJ(MJ)/XFB(KFLB)
15395           KFLC=K(IMI(JS,MJ,1),2)
15396           KFLCA=IABS(KFLC)
15397           KSVCC=MAX(-1,IMI(JS,MJ,2))
15398           IF (KSVCB.GE.1) KSVCC=-1
15399 C...x*pdf (+ sea/val) at new pT2 for parton C.
15400           MINT(30)=JS
15401           MINT(36)=MJ
15402           CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
15403           MINT(36)=MI
15404           IF (KFLCA.LE.6.AND.KSVCC.LE.0) XFJ(KFLC)=XPSVC(KFLC,KSVCC)
15405           WTVETO=WTVETO/XFJ(KFLC)
15406 C...x and x*pdf (+ sea/val) at new pT2 for parton A.
15407           KFLA=21
15408           KSVCA=0
15409           IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
15410             KFLA=KFLB
15411             KSVCA=KSVCB
15412           ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
15413             KFLA=KFLC
15414             KSVCA=KSVCC
15415           ENDIF
15416           IF (KSVCA.LE.0) THEN
15417             MINT(30)=JS
15418             IF (KFLB.EQ.21) MINT(36)=MJ
15419             CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
15420             MINT(36)=MI
15421             IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
15422           ELSE
15423             XFJ(KFLA)=PYFCMP(Y(MJ)/VINT(140),YS/VINT(140),MSTP(87))
15424           ENDIF
15425           WTVETO=WTVETO*XFJ(KFLA)
15426 C...Monte Carlo veto.
15427           IF (WTVETO.LT.PYR(0)) GOTO 200
15428 C...If accept, save PT2 of this joining.
15429           IF (PT2.GT.PT2MX) THEN
15430             PT2MX=PT2
15431             JSMX=2+JS
15432             MJN1MX=MJ
15433             MJN2MX=MI
15434             WTAPJ(MJ)=0D0
15435             NJN=0
15436           ENDIF
15437 C...Exit and continue evolution.
15438           GOTO 390
15439         ENDIF
15440         KFLAA=IABS(KFLA)
15441  
15442 C...Choose z value (still in overestimated range) and corrective weight.
15443 C...Unphysical z will be rejected below when Q2 has is computed.
15444         WTZ=0D0
15445  
15446 C...Note: ME and MQ>0 give corrections to overall weights, not shapes.
15447 C...q -> q + g or q -> q + gamma (already set which).
15448         IF (KFLAA.LE.5.AND.KFLBA.LE.5) THEN
15449           IF (KSVCB.LT.0) THEN
15450             Z=1D0-(1D0-ZMIN)*((1D0-ZMAX)/(1D0-ZMIN))**PYR(0)
15451           ELSE
15452             ZFAC=RMIN*(RMAX/RMIN)**PYR(0)
15453             Z=((1-ZFAC)/(1+ZFAC))**2
15454           ENDIF
15455           WTZ=0.5D0*(1D0+Z**2)
15456 C...Massive weight correction.
15457           IF (KFLBA.GE.4) WTZ=WTZ-Z*(1D0-Z)**2*RMQ2/PT2
15458 C...Valence quark weight correction (extra sqrt)
15459           IF (KSVCB.GE.0) WTZ=WTZ*SQRT(Z)
15460  
15461 C...q -> g + q.
15462 C...NB: MQ>0 not yet implemented. Forced absent above.
15463         ELSEIF (KFLAA.LE.5.AND.KFLB.EQ.21) THEN
15464           KFLC=KFLA
15465           Z=ZMAX/(1D0+PYR(0)*(SQRT(ZMAX/ZMIN)-1D0))**2
15466           WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
15467  
15468 C...g -> q + qbar.
15469         ELSEIF (KFLA.EQ.21.AND.KFLBA.LE.5) THEN
15470           KFLC=-KFLB
15471           Z=ZMIN+PYR(0)*(ZMAX-ZMIN)
15472           WTZ=Z**2+(1D0-Z)**2
15473 C...Massive correction
15474           IF (MQMASS.NE.0) THEN
15475             WTZ=WTZ+2D0*Z*(1D0-Z)*RMQ2/PT2
15476 C...Extra safety margin for light sea quark creation
15477           ELSEIF (KSVCB.LT.0) THEN
15478             WTZ=WTZ/1.25D0
15479           ENDIF
15480  
15481 C...g -> g + g.
15482         ELSEIF (KFLA.EQ.21.AND.KFLB.EQ.21) THEN
15483           KFLC=21
15484           Z=1D0/(1D0+((1D0-ZMIN)/ZMIN)*((1D0-ZMAX)*ZMIN/
15485      &         (ZMAX*(1D0-ZMIN)))**PYR(0))
15486           WTZ=(1D0-Z*(1D0-Z))**2
15487         ENDIF
15488  
15489 C...Derive Q2 from pT2.
15490         Q2B=PT2/(1D0-Z)
15491         IF (KFLBA.GE.4) Q2B=Q2B-RMQ2
15492  
15493 C...Loopback if outside allowed z range for given pT2.
15494         RM2C=PYMASS(KFLC)**2
15495         PT2ADJ=Q2B-Z*(SHTNOW(MI)+Q2B)*(Q2B+RM2C)/SHTNOW(MI)
15496         IF (PT2ADJ.LT.1D-6) GOTO 230
15497  
15498 C...Size of phase space and coherence suppression: MSTP(67) and MSTP(62)
15499 C...No modification for very first emission if using ME correction
15500         MSTP67 = MSTP(67)
15501         IF (MECOR.GE.1.AND.NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) THEN
15502           MSTP67 = 0
15503         ENDIF
15504  
15505 C...For 1st branching, limit phase space by s-hat with color-partner
15506         IF (MSTP67.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
15507           MSIDE=1
15508           IDIP=IMI(JS,MI,1)
15509 C...Use anticolor tag for antiquark, or for gluon half the time
15510           IF ((KFLB.LT.0.AND.KFLBA.LT.10).OR.(
15511      &        KFLB.EQ.21.AND.PYR(0).GT.0.5)) MSIDE=2
15512 C...Tag
15513           MCTAG=MCT(IDIP,MSIDE)
15514 C...Default is to set up phase space using the opposite incoming parton
15515           JDIP=IMI(3-JS,MI,1)
15516           NDIP=0
15517 C...Alternatively, look for final-state color partner (pick first if several)
15518           DO 260 IFS=1,NPART
15519             IF (MCT(IPART(IFS),MSIDE).EQ.MCTAG.AND.NDIP.EQ.0) THEN
15520               JDIP=IPART(IFS)
15521               NDIP=NDIP+1
15522             ENDIF
15523   260     CONTINUE
15524 C...Compute momentum transfer: sdip = -t = - (p1 - p2)^2
15525 C...(also works for annihilation since incoming massless, so shat = -(p1 - p2)^2)
15526           SDIP=ABS(((P(IDIP,4)-P(JDIP,4))**2-(P(IDIP,3)-P(JDIP,3))**2
15527      &        -(P(IDIP,2)-P(JDIP,2))**2-(P(IDIP,1)-P(JDIP,1))**2))
15528           IF (MSTP67.EQ.1) THEN
15529 C...1 Option to completely kill radiation above s_dip * PARP(67)
15530             IF (4D0*PT2.GT.PARP(67)*SDIP) GOTO 230
15531           ELSE IF (MSTP67.EQ.2) THEN
15532 C...2 Option to allow suppressed unordered radiation above s_dip * PARP(67)
15533 C...  (-> improved power showers?)
15534             IF (4D0*PT2*PYR(0).GT.PARP(67)*SDIP) GOTO 230
15535           ENDIF
15536  
15537 C...For subsequent branchings, loopback if nonordered in angle/rapidity
15538         ELSE IF (MSTP(62).GE.3.AND.NISGEN(JS,MI).GE.1) THEN
15539           IF(PT2.GT.((1D0-Z)/(Z*(1D0-ZSAV(JS,MI))))**2*PT2SAV(JS,MI))
15540      &         GOTO 230
15541         ENDIF
15542  
15543 C...Select phi angle of branching at random.
15544         PHI=PARU(2)*PYR(0)
15545  
15546 C...Matrix-element corrections for some processes.
15547         IF (MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
15548           IF (KFLAA.LE.20.AND.KFLBA.LE.20) THEN
15549             CALL PYMEWT(MECOR,1,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
15550             WTZ=WTZ*WTME/WTFF
15551           ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.KFLBA.LE.20) THEN
15552             CALL PYMEWT(MECOR,2,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
15553             WTZ=WTZ*WTME/WTGF
15554           ELSEIF(KFLAA.LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
15555             CALL PYMEWT(MECOR,3,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
15556             WTZ=WTZ*WTME/WTFG
15557           ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
15558             CALL PYMEWT(MECOR,4,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
15559             WTZ=WTZ*WTME/WTGG
15560           ENDIF
15561         ENDIF
15562  
15563 C...Parton distributions at new pT2 but old x.
15564         MINT(30)=JS
15565         CALL PYPDFU(KFBEAM(JS),XB,PT2,XFN)
15566 C...Treat val and cmp separately
15567         IF (KFLBA.LE.6.AND.KSVCB.LE.0) XFN(KFLB)=XPSVC(KFLB,KSVCB)
15568         IF (KSVCB.GE.1)
15569      &       XFN(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
15570         XFBN=XFN(KFLB)
15571         IF(XFBN.LT.1D-20) THEN
15572           IF(KFLA.EQ.KFLB) THEN
15573             WTAP(KFLB)=0D0
15574             GOTO 200
15575           ELSE
15576             XFBN=1D-10
15577             XFN(KFLB)=XFBN
15578           ENDIF
15579         ENDIF
15580         DO 270 KFL=-5,5
15581           XFB(KFL)=XFN(KFL)
15582   270   CONTINUE
15583         XFB(21)=XFN(21)
15584  
15585 C...Parton distributions at new pT2 and new x.
15586         XA=XB/Z
15587         MINT(30)=JS
15588         CALL PYPDFU(KFBEAM(JS),XA,PT2,XFA)
15589         IF (KFLBA.LE.5.AND.KFLAA.LE.5) THEN
15590 C...q -> q + g: only consider respective sea, val, or cmp content.
15591           IF (KSVCB.LE.0) THEN
15592             XFA(KFLA)=XPSVC(KFLA,KSVCB)
15593           ELSE
15594             YA=XA*(1D0-YS)
15595             XFA(KFLB)=PYFCMP(YA/VINT(140),YS/VINT(140),MSTP(87))
15596           ENDIF
15597         ENDIF
15598         XFAN=XFA(KFLA)
15599         IF(XFAN.LT.1D-20) THEN
15600           GOTO 200
15601         ENDIF
15602  
15603 C...If weighting fails continue evolution.
15604         WTTOT=0D0
15605         IF (MCRQQ.EQ.0) THEN
15606           WTPDFA=1D0/WTPDF(KFLA)
15607           WTTOT=WTZ*XFAN/XFBN*WTPDFA
15608         ELSEIF(MCRQQ.EQ.1) THEN
15609           WTPDFA=TPM/WPDF0
15610           WTTOT=WTCRQQ*WTZ*XFAN/XFBN*WTPDFA
15611           XBEST=TPM/TPM0*XQ0
15612         ELSEIF(MCRQQ.EQ.2) THEN
15613 C...Force massive quark creation.
15614           WTTOT=1D0
15615         ENDIF
15616  
15617 C...Loop back if trial emission fails.
15618         IF(WTTOT.GE.0D0.AND.WTTOT.LT.PYR(0)) GOTO 200
15619         WTACC=((1D0+PT2)/(0.25D0+PT2))**2
15620         IF(WTTOT.LT.0D0) THEN
15621           WRITE(CHWT,'(1P,E12.4)') WTTOT
15622           CALL PYERRM(19,'(PYPTIS:) Weight '//CHWT//' negative')
15623         ELSEIF(WTTOT.GT.WTACC) THEN
15624           WRITE(CHWT,'(1P,E12.4)') WTTOT
15625           IF (PT2.GT.PTEMAX.OR.WTTOT.GE.WTEMAX) THEN
15626 C...Too high weight: write out as error, but do not update error counter
15627             IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)-1
15628             CALL PYERRM(19,
15629      &         '(PYPTIS:) Weight '//CHWT//' above unity')
15630             IF (PT2.GT.PTEMAX) PTEMAX=PT2
15631             IF (WTTOT.GT.WTEMAX) WTEMAX=WTTOT
15632           ELSE
15633             CALL PYERRM(9,
15634      &         '(PYPTIS:) Weight '//CHWT//' above unity')
15635           ENDIF
15636 C...Useful for debugging but commented out for distribution:
15637 C          print*, 'JS, MI',JS, MI
15638 C          print*, 'PT:',SQRT(PT2), ' MCRQQ',MCRQQ
15639 C          print*, 'A -> B C',KFLA, KFLB, KFLC
15640 C          XFAO=XFBO/WTPDFA
15641 C          print*, 'WT(Z,XFA,XFB)',WTZ, XFAN/XFAO, XFBO/XFBN
15642         ENDIF
15643  
15644 C...Special for PT2 = PT2MX (e.g., if two incoming massive quarks 
15645 C...simultaneously reached their creation thresholds) 
15646         IF (ABS(PT2-PT2MX).LT.0.001) THEN
15647           IF (PYR(0).GT.0.5) PT2=1.0001*PT2MX
15648         ENDIF
15649 
15650 C...Save acceptable branching.
15651         IF(PT2.GT.PT2MX) THEN
15652           MIMX=MINT(36)
15653           JSMX=JS
15654           PT2MX=PT2
15655           KFLAMX=KFLA
15656           KFLCMX=KFLC
15657           RM2CMX=RM2C
15658           Q2BMX=Q2B
15659           ZMX=Z
15660           PT2AMX=PT2ADJ
15661           PHIMX=PHI
15662         ENDIF
15663  
15664 C----------------------------------------------------------------------
15665 C...MODE= 1: Accept stored shower branching. Update event record etc.
15666       ELSEIF (MODE.EQ.1) THEN
15667         MI=MIMX
15668         JS=JSMX
15669         SHAT=SHTNOW(MI)
15670         SIDE=3D0-2D0*JS
15671 C...Shift down rest of event record to make room for insertion.
15672         IT=IMISEP(MI)+1
15673         IM=IT+1
15674         IS=IMI(JS,MI,1)
15675         DO 290 I=N,IT,-1
15676           IF (K(I,3).GE.IT) K(I,3)=K(I,3)+2
15677           KT1=K(I,4)/MSTU(5)**2
15678           KT2=K(I,5)/MSTU(5)**2
15679           ID1=MOD(K(I,4),MSTU(5))
15680           ID2=MOD(K(I,5),MSTU(5))
15681           IM1=MOD(K(I,4)/MSTU(5),MSTU(5))
15682           IM2=MOD(K(I,5)/MSTU(5),MSTU(5))
15683           IF (ID1.GE.IT) ID1=ID1+2
15684           IF (ID2.GE.IT) ID2=ID2+2
15685           IF (IM1.GE.IT) IM1=IM1+2
15686           IF (IM2.GE.IT) IM2=IM2+2
15687           K(I,4)=KT1*MSTU(5)**2+IM1*MSTU(5)+ID1
15688           K(I,5)=KT2*MSTU(5)**2+IM2*MSTU(5)+ID2
15689           DO 280 IX=1,5
15690             K(I+2,IX)=K(I,IX)
15691             P(I+2,IX)=P(I,IX)
15692             V(I+2,IX)=V(I,IX)
15693   280     CONTINUE
15694           MCT(I+2,1)=MCT(I,1)
15695           MCT(I+2,2)=MCT(I,2)
15696   290   CONTINUE
15697         N=N+2
15698 C...Also update shifted-down pointers in IMI, IMISEP, and IPART.
15699         DO 300 JI=1,MINT(31)
15700           IF (IMI(1,JI,1).GE.IT) IMI(1,JI,1)=IMI(1,JI,1)+2
15701           IF (IMI(1,JI,2).GE.IT) IMI(1,JI,2)=IMI(1,JI,2)+2
15702           IF (IMI(2,JI,1).GE.IT) IMI(2,JI,1)=IMI(2,JI,1)+2
15703           IF (IMI(2,JI,2).GE.IT) IMI(2,JI,2)=IMI(2,JI,2)+2
15704           IF (JI.GE.MI) IMISEP(JI)=IMISEP(JI)+2
15705 C...Also update companion pointers to the present mother.
15706           IF (IMI(JS,JI,2).EQ.IS) IMI(JS,JI,2)=IM
15707   300   CONTINUE
15708         DO 310 IFS=1,NPART
15709           IF (IPART(IFS).GE.IT) IPART(IFS)=IPART(IFS)+2
15710   310   CONTINUE
15711 C...Zero entries dedicated for new timelike and mother partons.
15712         DO 330 I=IT,IT+1
15713           DO 320 J=1,5
15714             K(I,J)=0
15715             P(I,J)=0D0
15716             V(I,J)=0D0
15717   320     CONTINUE
15718           MCT(I,1)=0
15719           MCT(I,2)=0
15720   330   CONTINUE
15721  
15722 C...Define timelike and new mother partons. History.
15723         K(IT,1)=3
15724         K(IT,2)=KFLCMX
15725         K(IM,1)=14
15726         K(IM,2)=KFLAMX
15727         K(IS,3)=IM
15728         K(IT,3)=IM
15729 C...Set mother origin = side.
15730         K(IM,3)=MINT(83)+JS+2
15731         IF(MI.GE.2) K(IM,3)=MINT(83)+JS
15732  
15733 C...Define colour flow of branching.
15734         IM1=IM
15735         IM2=IM
15736 C...q -> q + gamma.
15737         IF(K(IT,2).EQ.22) THEN
15738           K(IT,1)=1
15739           ID1=IS
15740           ID2=IS
15741 C...q -> q + g.
15742         ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5.AND.K(IT,2).EQ.21) THEN
15743           ID1=IT
15744           ID2=IS
15745 C...q -> g + q.
15746         ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5) THEN
15747           ID1=IS
15748           ID2=IT
15749 C...qbar -> qbar + g.
15750         ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5.AND.K(IT,2).EQ.21) THEN
15751           ID1=IS
15752           ID2=IT
15753 C...qbar -> g + qbar.
15754         ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5) THEN
15755           ID1=IT
15756           ID2=IS
15757 C...g -> g + g; g -> q + qbar..
15758         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
15759           ID1=IS
15760           ID2=IT
15761         ELSE
15762           ID1=IT
15763           ID2=IS
15764         ENDIF
15765         IF(IM1.EQ.IM) K(IM1,4)=K(IM1,4)+ID1
15766         IF(IM2.EQ.IM) K(IM2,5)=K(IM2,5)+ID2
15767         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
15768         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
15769         IF(ID1.NE.ID2) THEN
15770           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
15771           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
15772         ENDIF
15773         IF(K(IT,1).EQ.1) THEN
15774           K(IT,4)=0
15775           K(IT,5)=0
15776         ENDIF
15777 C...Update IMI and colour tag arrays.
15778         IMI(JS,MI,1)=IM
15779         DO 340 MC=1,2
15780           MCT(IT,MC)=0
15781           MCT(IM,MC)=0
15782   340   CONTINUE
15783         DO 350 JCS=4,5
15784           KCS=JCS
15785 C...If mother flag not yet set for spacelike parton, trace it.
15786           IF (K(IS,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IS,-KCS,IM)
15787           IF(MINT(51).NE.0) RETURN
15788   350   CONTINUE
15789         DO 360 JCS=4,5
15790           KCS=JCS
15791 C...If mother flag not yet set for timelike parton, trace it.
15792           IF (K(IT,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IT,KCS,IM)
15793           IF(MINT(51).NE.0) RETURN
15794   360   CONTINUE
15795  
15796 C...Boost recoiling parton to compensate for Q2 scale.
15797         BETAZ=SIDE*(1D0-(1D0+Q2BMX/SHAT)**2)/
15798      &  (1D0+(1D0+Q2BMX/SHAT)**2)
15799         IR=IMI(3-JS,MI,1)
15800         CALL PYROBO(IR,IR,0D0,0D0,0D0,0D0,BETAZ)
15801  
15802 C...Define system to be rotated and boosted
15803 C...(not including the 2 just added partons)
15804 C...(but including the docu lines for first interaction)
15805         IMIN=IMISEP(MI-1)+1
15806         IF (MI.EQ.1) IMIN=MINT(83)+5
15807         IMAX=IMISEP(MI)-2
15808  
15809 C...Rotate back system in phi to compensate for subsequent rotation.
15810         CALL PYROBO(IMIN,IMAX,0D0,-PHIMX,0D0,0D0,0D0)
15811  
15812 C...Define kinematics of new partons in old frame.
15813         IMAX=IMISEP(MI)
15814         P(IM,1)=SQRT(PT2AMX)*SHAT/(ZMX*(SHAT+Q2BMX))
15815         P(IM,3)=0.5D0*SQRT(SHAT)*((SHAT-Q2BMX)/((SHAT
15816      &       +Q2BMX)*ZMX)+(Q2BMX+RM2CMX)/SHAT)*SIDE
15817         P(IM,4)=SQRT(P(IM,1)**2+P(IM,3)**2)
15818         P(IT,1)=P(IM,1)
15819         P(IT,3)=P(IM,3)-0.5D0*(SHAT+Q2BMX)/SQRT(SHAT)*SIDE
15820         P(IT,4)=SQRT(P(IT,1)**2+P(IT,3)**2+RM2CMX)
15821         P(IT,5)=SQRT(RM2CMX)
15822  
15823 C...Update internal line, now spacelike
15824         P(IS,1)=P(IM,1)-P(IT,1)
15825         P(IS,2)=P(IM,2)-P(IT,2)
15826         P(IS,3)=P(IM,3)-P(IT,3)
15827         P(IS,4)=P(IM,4)-P(IT,4)
15828         P(IS,5)=P(IS,4)**2-P(IS,1)**2-P(IS,2)**2-P(IS,3)**2
15829 C...Represent spacelike virtualities as -sqrt(abs(Q2)) .
15830         IF (P(IS,5).LT.0D0) THEN
15831           P(IS,5)=-SQRT(ABS(P(IS,5)))
15832         ELSE
15833           P(IS,5)=SQRT(P(IS,5))
15834         ENDIF
15835  
15836 C...Boost entire system and rotate to new frame.
15837 C...(including docu lines)
15838         BETAX=(P(IM,1)+P(IR,1))/(P(IM,4)+P(IR,4))
15839         BETAZ=(P(IM,3)+P(IR,3))/(P(IM,4)+P(IR,4))
15840         IF(BETAX**2+BETAZ**2.GE.1D0) THEN
15841           CALL PYERRM(1,'(PYPTIS:) boost bigger than unity')
15842           MINT(51)=1
15843           IFAIL=-1
15844           RETURN
15845         ENDIF
15846         CALL PYROBO(IMIN,IMAX,0D0,0D0,-BETAX,0D0,-BETAZ)
15847         I1=IMI(1,MI,1)
15848         THETA=PYANGL(P(I1,3),P(I1,1))
15849         CALL PYROBO(IMIN,IMAX,-THETA,PHIMX,0D0,0D0,0D0)
15850  
15851 C...Global statistics.
15852         MINT(352)=MINT(352)+1
15853         VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
15854         IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
15855  
15856 C...Add parton with relevant pT scale for timelike shower.
15857         IF (K(IT,2).NE.22) THEN
15858           NPART=NPART+1
15859           IPART(NPART)=IT
15860           PTPART(NPART)=SQRT(PT2AMX)
15861         ENDIF
15862  
15863 C...Update saved variables.
15864         SHTNOW(MIMX)=SHTNOW(MIMX)/ZMX
15865         NISGEN(JSMX,MIMX)=NISGEN(JSMX,MIMX)+1
15866         XMI(JSMX,MIMX)=XMI(JSMX,MIMX)/ZMX
15867         PT2SAV(JSMX,MIMX)=PT2MX
15868         ZSAV(JS,MIMX)=ZMX
15869  
15870         KSA=IABS(K(IS,2))
15871         KMA=IABS(K(IM,2))
15872         IF (KSA.EQ.21.AND.KMA.GE.1.AND.KMA.LE.5) THEN
15873 C...Gluon reconstructs to quark.
15874 C...Decide whether newly created quark is valence or sea:
15875           MINT(30)=JS
15876           CALL PYPTMI(2,PT2NOW,PTDUM1,PTDUM2,IFAIL)
15877           IF(MINT(51).NE.0) RETURN
15878         ENDIF
15879         IF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.EQ.21) THEN
15880 C...Quark reconstructs to gluon.
15881 C...Now some guy may have lost his companion. Check.
15882           ICMP=IMI(JS,MI,2)
15883           IF (ICMP.GT.0) THEN
15884             CALL PYERRM(9,'(PYPTIS:) Sorry, companion quark radiated'
15885      &           //' away. Cannot handle that yet. Giving up.')
15886             MINT(51)=1
15887             RETURN
15888           ELSEIF(ICMP.LT.0) THEN
15889 C...A sea quark with companion still in BR was reconstructed to a gluon.
15890 C...Companion should now be removed from the beam remnant.
15891 C...(Momentum integral is automatically updated in next call to PYPDFU.)
15892             ICMP=-ICMP
15893             IFL=-K(IS,2)
15894             DO 380 JCMP=ICMP,NVC(JS,IFL)-1
15895               XASSOC(JS,IFL,JCMP)=XASSOC(JS,IFL,JCMP+1)
15896               DO 370 JI=1,MINT(31)
15897                 KMI=-IMI(JS,JI,2)
15898                 JFL=-K(IMI(JS,JI,1),2)
15899                 IF (KMI.EQ.JCMP+1.AND.JFL.EQ.IFL) IMI(JS,JI,2)=IMI(JS,JI
15900      &               ,2)+1
15901   370         CONTINUE
15902   380       CONTINUE
15903             NVC(JS,IFL)=NVC(JS,IFL)-1
15904           ENDIF
15905 C...Set gluon IMI(JS,MI,2) = 0.
15906           IMI(JS,MI,2)=0
15907         ELSEIF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.NE.21) THEN
15908 C...Quark reconstructing to quark. If sea with companion still in BR
15909 C...then update associated x value.
15910 C...(Momentum integral is automatically updated in next call to PYPDFU.)
15911           IF (IMI(JS,MI,2).LT.0) THEN
15912             ICMP=-IMI(JS,MI,2)
15913             IFL=-K(IS,2)
15914             XASSOC(JS,IFL,ICMP)=XMI(JSMX,MIMX)
15915           ENDIF
15916         ENDIF
15917  
15918       ENDIF
15919  
15920 C...If reached this point, normal exit.
15921   390 IFAIL=0
15922  
15923       RETURN
15924       END
15925  
15926 C*********************************************************************
15927  
15928 C...PYMEMX
15929 C...Generates maximum ME weight in some initial-state showers.
15930 C...Inparameter MECOR: kind of hard scattering process
15931 C...Outparameter WTFF: maximum weight for fermion -> fermion
15932 C...             WTGF: maximum weight for gluon/photon -> fermion
15933 C...             WTFG: maximum weight for fermion -> gluon/photon
15934 C...             WTGG: maximum weight for gluon -> gluon
15935  
15936       SUBROUTINE PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
15937  
15938 C...Double precision and integer declarations.
15939       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15940       IMPLICIT INTEGER(I-N)
15941       INTEGER PYK,PYCHGE,PYCOMP
15942 C...Commonblocks.
15943       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
15944       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15945       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15946       COMMON/PYINT1/MINT(400),VINT(400)
15947       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15948       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
15949  
15950 C...Default maximum weight.
15951       WTFF=1D0
15952       WTGF=1D0
15953       WTFG=1D0
15954       WTGG=1D0
15955  
15956 C...Select maximum weight by process.
15957       IF(MECOR.EQ.1) THEN
15958         WTFF=1D0
15959         WTGF=3D0
15960       ELSEIF(MECOR.EQ.2) THEN
15961         WTFG=1D0
15962         WTGG=1D0
15963       ENDIF
15964  
15965       RETURN
15966       END
15967  
15968 C*********************************************************************
15969  
15970 C...PYMEWT
15971 C...Calculates actual ME weight in some initial-state showers.
15972 C...Inparameter MECOR: kind of hard scattering process
15973 C...            IFLCB: flavour combination of branching,
15974 C...                   1 for fermion -> fermion,
15975 C...                   2 for gluon/photon -> fermion
15976 C...                   3 for fermion -> gluon/photon,
15977 C...                   4 for gluon -> gluon
15978 C...            Q2:    Q2 value of shower branching
15979 C...            Z:     Z value of branching
15980 C...In+outparameter PHIBR: azimuthal angle of branching
15981 C...Outparameter WTME: actual ME weight
15982  
15983       SUBROUTINE PYMEWT(MECOR,IFLCB,Q2,Z,PHIBR,WTME)
15984  
15985 C...Double precision and integer declarations.
15986       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15987       IMPLICIT INTEGER(I-N)
15988       INTEGER PYK,PYCHGE,PYCOMP
15989 C...Commonblocks.
15990       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
15991       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15992       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15993       COMMON/PYINT1/MINT(400),VINT(400)
15994       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15995       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
15996  
15997 C...Default output.
15998       WTME=1D0
15999  
16000 C...Define kinematics of shower branching in Mandelstam variables.
16001       SQM=VINT(44)
16002       SH=SQM/Z
16003       TH=-Q2
16004       UH=Q2-SQM*(1D0-Z)/Z
16005  
16006 C...Matrix-element corrections for f + fbar -> s-channel vector boson.
16007       IF(MECOR.EQ.1) THEN
16008         IF(IFLCB.EQ.1) THEN
16009           WTME=(TH**2+UH**2+2D0*SQM*SH)/(SH**2+SQM**2)
16010         ELSEIF(IFLCB.EQ.2) THEN
16011           WTME=(SH**2+TH**2+2D0*SQM*UH)/((SH-SQM)**2+SQM**2)
16012         ENDIF
16013  
16014 C...Matrix-element corrections for g + g -> Higgs (h0, H0, A0).
16015       ELSEIF(MECOR.EQ.2) THEN
16016         IF(IFLCB.EQ.3) THEN
16017           WTME=(SH**2+UH**2)/(SH**2+(SH-SQM)**2)
16018         ELSEIF(IFLCB.EQ.4) THEN
16019           WTME=0.5D0*(SH**4+UH**4+TH**4+SQM**4)/(SH**2-SQM*(SH-SQM))**2
16020         ENDIF
16021 
16022 C...Matrix-element corrections for q + qbar -> Higgs (h0)
16023       ELSEIF(MECOR.EQ.3) THEN
16024         IF(IFLCB.EQ.2) THEN
16025           WTME=(SH**2+TH**2+2D0*(SQM-TH)*(SQM-SH))/
16026      1      (SH**2+2D0*SQM*(SQM-SH))
16027         ENDIF
16028       ENDIF
16029  
16030       RETURN
16031       END
16032  
16033 C*********************************************************************
16034  
16035 C...PYPTMI
16036 C...Handles the generation of additional interactions in the new
16037 C...multiple interactions framework.
16038 C...MODE=-1 : Initalize MI from scratch.
16039 C...MODE= 0 : Generate trial interaction. Start at PT2NOW, solve
16040 C...         Sudakov for PT2, abort if below PT2CUT.
16041 C...MODE= 1 : Accept interaction at PT2NOW and store variables.
16042 C...MODE= 2 : Decide sea/val/cmp for kicked-out quark at PT2NOW
16043 C...PT2NOW  : Starting (max) PT2 scale for evolution.
16044 C...PT2CUT  : Lower limit for evolution.
16045 C...PT2     : Result of evolution. Generated PT2 for trial interaction.
16046 C...IFAIL   : Status return code.
16047 C...         = 0: All is well.
16048 C...         < 0: Phase space exhausted, generation to be terminated.
16049 C...         > 0: Additional interaction vetoed, but continue evolution.
16050  
16051       SUBROUTINE PYPTMI(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
16052 C...Double precision and integer declarations.
16053       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16054       IMPLICIT INTEGER(I-N)
16055       INTEGER PYK,PYCHGE,PYCOMP
16056 C...Parameter statement for maximum size of showers.
16057       PARAMETER (MAXNUR=1000)
16058 C...Commonblocks.
16059       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
16060       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
16061       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16062       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
16063       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
16064       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16065       COMMON/PYINT1/MINT(400),VINT(400)
16066       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
16067       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
16068       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
16069       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
16070       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
16071      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
16072      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
16073       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
16074      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
16075       COMMON/PYCTAG/NCT,MCT(4000,2)
16076 C...Local arrays and saved variables.
16077       DIMENSION WDTP(0:400),WDTE(0:400,0:5),XPQ(-25:25)
16078  
16079       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,
16080      &     /PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/,/PYINTM/,
16081      &     /PYISMX/,/PYCTAG/
16082       SAVE NCHN,XT2FAC,SIGS
16083  
16084       IFAIL=0
16085 C...Set MI subprocess = QCD 2 -> 2.
16086       ISUB=96
16087  
16088 C----------------------------------------------------------------------
16089 C...MODE=-1: Initialize from scratch
16090       IF (MODE.EQ.-1) THEN
16091 C...Initialize PT2 array.
16092         PT2MI(1)=VINT(54)
16093 C...Initialize list of incoming beams and partons from two sides.
16094         DO 110 JS=1,2
16095           DO 100 MI=1,240
16096             IMI(JS,MI,1)=0
16097             IMI(JS,MI,2)=0
16098   100     CONTINUE
16099           NMI(JS)=1
16100           IMI(JS,1,1)=MINT(84)+JS
16101           IMI(JS,1,2)=0
16102           XMI(JS,1)=VINT(40+JS)
16103 C...Rescale x values to fractions of photon energy.
16104           IF(MINT(18+JS).EQ.1) XMI(JS,1)=VINT(40+JS)/VINT(154+JS)
16105 C...Hard reset: hard interaction initiators motherless by definition.
16106           K(MINT(84)+JS,3)=2+JS
16107           K(MINT(84)+JS,4)=MOD(K(MINT(84)+JS,4),MSTU(5))
16108           K(MINT(84)+JS,5)=MOD(K(MINT(84)+JS,5),MSTU(5))
16109   110   CONTINUE
16110         IMISEP(0)=MINT(84)
16111         IMISEP(1)=N
16112         IF (MOD(MSTP(81),10).GE.1) THEN
16113           IF(MSTP(82).LE.1) THEN
16114             SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0
16115      &           ,5))
16116             IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
16117      &           VINT(317)/(VINT(318)*VINT(320))
16118             XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
16119           ELSE
16120             XT2FAC=VINT(146)*VINT(148)*XSEC(ISUB,1)/
16121      &           MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
16122           ENDIF
16123         ENDIF
16124 C...Zero entries relating to scatterings beyond the first.
16125         DO 120 MI=2,240
16126           IMI(1,MI,1)=0
16127           IMI(2,MI,1)=0
16128           IMI(1,MI,2)=0
16129           IMI(2,MI,2)=0
16130           IMISEP(MI)=IMISEP(1)
16131           PT2MI(MI)=0D0
16132           XMI(1,MI)=0D0
16133           XMI(2,MI)=0D0
16134   120   CONTINUE
16135 C...Initialize factors for PDF reshaping.
16136         DO 140 JS=1,2
16137           KFBEAM(JS)=MINT(10+JS)
16138           IF(MINT(18+JS).EQ.1) KFBEAM(JS)=22
16139           KFABM=IABS(KFBEAM(JS))
16140           KFSBM=ISIGN(1,KFBEAM(JS))
16141  
16142 C...Zero flavour content of incoming beam particle.
16143           KFIVAL(JS,1)=0
16144           KFIVAL(JS,2)=0
16145           KFIVAL(JS,3)=0
16146 C...  Flavour content of baryon.
16147           IF(KFABM.GT.1000) THEN
16148             KFIVAL(JS,1)=KFSBM*MOD(KFABM/1000,10)
16149             KFIVAL(JS,2)=KFSBM*MOD(KFABM/100,10)
16150             KFIVAL(JS,3)=KFSBM*MOD(KFABM/10,10)
16151 C...  Flavour content of pi+-, K+-.
16152           ELSEIF(KFABM.EQ.211) THEN
16153             KFIVAL(JS,1)=KFSBM*2
16154             KFIVAL(JS,2)=-KFSBM
16155           ELSEIF(KFABM.EQ.321) THEN
16156             KFIVAL(JS,1)=-KFSBM*3
16157             KFIVAL(JS,2)=KFSBM*2
16158 C...  Flavour content of pi0, gamma, K0S, K0L not defined yet.
16159           ENDIF
16160  
16161 C...Zero initial valence and companion content.
16162           DO 130 IFL=-6,6
16163             NVC(JS,IFL)=0
16164   130     CONTINUE
16165   140   CONTINUE
16166 C...Set up colour line tags starting from hard interaction initiators.
16167         NCT=0
16168 C...Reset colour tag array and colour processing flags.
16169         DO 150 I=IMISEP(0)+1,N
16170           MCT(I,1)=0
16171           MCT(I,2)=0
16172           K(I,4)=MOD(K(I,4),MSTU(5)**2)
16173           K(I,5)=MOD(K(I,5),MSTU(5)**2)
16174   150   CONTINUE
16175 C...  Consider each side in turn.
16176         DO 170 JS=1,2
16177           I1=IMI(JS,1,1)
16178           I2=IMI(3-JS,1,1)
16179           DO 160 JCS=4,5
16180             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
16181      &           GOTO 160
16182             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 160
16183             KCS=JCS
16184             CALL PYCTTR(I1,KCS,I2)
16185             IF(MINT(51).NE.0) RETURN
16186   160     CONTINUE
16187   170   CONTINUE
16188  
16189 C...Range checking for companion quark pdf large-x param.
16190         IF (MSTP(87).LT.0) THEN
16191           CALL PYERRM(19,'(PYPTMI:) MSTP(87) out of range. Forced'//
16192      &         ' MSTP(87)=0')
16193           MSTP(87)=0
16194         ELSEIF (MSTP(87).GT.4) THEN
16195           CALL PYERRM(19,'(PYPTMI:) MSTP(87) out of range. Forced'//
16196      &         ' MSTP(87)=4')
16197           MSTP(87)=4
16198         ENDIF
16199  
16200 C----------------------------------------------------------------------
16201 C...MODE=0: Generate trial interaction. Return codes:
16202 C...IFAIL < 0: Phase space exhausted, generation to be terminated.
16203 C...IFAIL = 0: Additional interaction generated at PT2.
16204 C...IFAIL > 0: Additional interaction vetoed, but continue evolution.
16205       ELSEIF (MODE.EQ.0) THEN
16206 C...Abolute MI max scale = VINT(62)
16207         XT2=4D0*MIN(PT2NOW,VINT(62))/VINT(2)
16208   180   IF(MSTP(82).LE.1) THEN
16209           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
16210           IF(XT2.LT.VINT(149)) IFAIL=-2
16211         ELSE
16212           IF(XT2.LE.0.01001D0*VINT(149)) THEN
16213             IFAIL=-3
16214           ELSE
16215             XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
16216      &           LOG(PYR(0)))-VINT(149)
16217           ENDIF
16218         ENDIF
16219 C...Also exit if below lower limit or if higher trial branching
16220 C...already found.
16221         PT2=0.25D0*VINT(2)*XT2
16222         IF (PT2.LE.PT2CUT) IFAIL=-4
16223         IF (PT2.LE.PT2MX) IFAIL=-5
16224         IF (IFAIL.NE.0) THEN
16225           PT2=0D0
16226           RETURN
16227         ENDIF
16228         IF(MSTP(82).GE.2) PT2=MAX(0.25D0*VINT(2)*0.01D0*VINT(149),PT2)
16229         VINT(25)=4D0*PT2/VINT(2)
16230         XT2=VINT(25)
16231  
16232 C...Choose tau and y*. Calculate cos(theta-hat).
16233         IF(PYR(0).LE.COEF(ISUB,1)) THEN
16234           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
16235           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
16236         ELSE
16237           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
16238         ENDIF
16239         VINT(21)=TAU
16240 C...New: require shat > 1.
16241         IF(TAU*VINT(2).LT.1D0) GOTO 180
16242         CALL PYKLIM(2)
16243         RYST=PYR(0)
16244         MYST=1
16245         IF(RYST.GT.COEF(ISUB,8)) MYST=2
16246         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
16247         CALL PYKMAP(2,MYST,PYR(0))
16248         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
16249  
16250 C...Check that x not used up. Accept or reject kinematical variables.
16251         X1M=SQRT(TAU)*EXP(VINT(22))
16252         X2M=SQRT(TAU)*EXP(-VINT(22))
16253         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 180
16254         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
16255         NCHN=0
16256         CALL PYSIGH(NCHN,SIGS)
16257         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
16258         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 180
16259         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS/VINT(320)
16260  
16261 C...Save if highest PT so far.
16262         IF (PT2.GT.PT2MX) THEN
16263           JSMX=0
16264           MIMX=MINT(31)+1
16265           PT2MX=PT2
16266         ENDIF
16267  
16268 C----------------------------------------------------------------------
16269 C...MODE=1: Generate and save accepted scattering.
16270       ELSEIF (MODE.EQ.1) THEN
16271         PT2=PT2NOW
16272 C...Reset K, P, V, and MCT vectors.
16273         DO 200 I=N+1,N+4
16274           DO 190 J=1,5
16275             K(I,J)=0
16276             P(I,J)=0D0
16277             V(I,J)=0D0
16278   190     CONTINUE
16279           MCT(I,1)=0
16280           MCT(I,2)=0
16281   200   CONTINUE
16282  
16283         NTRY=0
16284 C...Choose flavour of reacting partons (and subprocess).
16285   210   NTRY=NTRY+1
16286         IF (NTRY.GT.50) THEN
16287           CALL PYERRM(9,'(PYPTMI:) Unable to generate additional '
16288      &               //'interaction. Giving up!')
16289           MINT(51)=1
16290           RETURN
16291         ENDIF
16292         RSIGS=SIGS*PYR(0)
16293         DO 220 ICHN=1,NCHN
16294           KFL1=ISIG(ICHN,1)
16295           KFL2=ISIG(ICHN,2)
16296           ICONMI=ISIG(ICHN,3)
16297           RSIGS=RSIGS-SIGH(ICHN)
16298           IF(RSIGS.LE.0D0) GOTO 230
16299   220   CONTINUE
16300  
16301 C...Reassign to appropriate process codes.
16302   230   ISUBMI=ICONMI/10
16303         ICONMI=MOD(ICONMI,10)
16304  
16305 C...Choose new quark flavour for annihilation graphs
16306         IF(ISUBMI.EQ.12.OR.ISUBMI.EQ.53) THEN
16307           SH=VINT(21)*VINT(2)
16308           CALL PYWIDT(21,SH,WDTP,WDTE)
16309   240     RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
16310           DO 250 I=1,MDCY(21,3)
16311             KFLF=KFDP(I+MDCY(21,2)-1,1)
16312             RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
16313             IF(RKFL.LE.0D0) GOTO 260
16314   250     CONTINUE
16315   260     IF(ISUBMI.EQ.53.AND.ICONMI.LE.2) THEN
16316             IF(KFLF.GE.4) GOTO 240
16317           ELSEIF(ISUBMI.EQ.53.AND.ICONMI.LE.4) THEN
16318             KFLF=4
16319             ICONMI=ICONMI-2
16320           ELSEIF(ISUBMI.EQ.53) THEN
16321             KFLF=5
16322             ICONMI=ICONMI-4
16323           ENDIF
16324         ENDIF
16325  
16326 C...Final state flavours and colour flow: default values
16327         JS=1
16328         KFL3=KFL1
16329         KFL4=KFL2
16330         KCC=20
16331         KCS=ISIGN(1,KFL1)
16332  
16333         IF(ISUBMI.EQ.11) THEN
16334 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
16335           KCC=ICONMI
16336           IF(KFL1*KFL2.LT.0) KCC=KCC+2
16337  
16338         ELSEIF(ISUBMI.EQ.12) THEN
16339 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
16340           KFL3=ISIGN(KFLF,KFL1)
16341           KFL4=-KFL3
16342           KCC=4
16343  
16344         ELSEIF(ISUBMI.EQ.13) THEN
16345 C...f + fbar -> g + g; th arbitrary
16346           KFL3=21
16347           KFL4=21
16348           KCC=ICONMI+4
16349  
16350         ELSEIF(ISUBMI.EQ.28) THEN
16351 C...f + g -> f + g; th = (p(f)-p(f))**2
16352           IF(KFL1.EQ.21) JS=2
16353           KCC=ICONMI+6
16354           IF(KFL1.EQ.21) KCC=KCC+2
16355           IF(KFL1.NE.21) KCS=ISIGN(1,KFL1)
16356           IF(KFL2.NE.21) KCS=ISIGN(1,KFL2)
16357  
16358         ELSEIF(ISUBMI.EQ.53) THEN
16359 C...g + g -> f + fbar; th arbitrary
16360           KCS=(-1)**INT(1.5D0+PYR(0))
16361           KFL3=ISIGN(KFLF,KCS)
16362           KFL4=-KFL3
16363           KCC=ICONMI+10
16364  
16365         ELSEIF(ISUBMI.EQ.68) THEN
16366 C...g + g -> g + g; th arbitrary
16367           KCC=ICONMI+12
16368           KCS=(-1)**INT(1.5D0+PYR(0))
16369         ENDIF
16370  
16371 C...Check that massive sea quarks have non-zero phase space for g -> Q Q
16372         IF (IABS(KFL3).EQ.4.OR.IABS(KFL4).EQ.4.OR.IABS(KFL3).EQ.5
16373      &       .OR.IABS(KFL4).EQ.5) THEN
16374           RMMAX2=MAX(PMAS(PYCOMP(KFL3),1),PMAS(PYCOMP(KFL4),1))**2
16375           IF (PT2.LE.1.05*RMMAX2) THEN
16376             IF (NTRY.EQ.2) CALL PYERRM(9,'(PYPTMI:) Heavy quarks'
16377      &           //' too close to threshold (2nd try).')
16378             GOTO 210
16379           ENDIF
16380         ENDIF
16381  
16382 C...Store flavours of scattering.
16383         MINT(13)=KFL1
16384         MINT(14)=KFL2
16385         MINT(15)=KFL1
16386         MINT(16)=KFL2
16387         MINT(21)=KFL3
16388         MINT(22)=KFL4
16389  
16390 C...Set flavours and mothers of scattering partons.
16391         K(N+1,1)=14
16392         K(N+2,1)=14
16393         K(N+3,1)=3
16394         K(N+4,1)=3
16395         K(N+1,2)=KFL1
16396         K(N+2,2)=KFL2
16397         K(N+3,2)=KFL3
16398         K(N+4,2)=KFL4
16399         K(N+1,3)=MINT(83)+1
16400         K(N+2,3)=MINT(83)+2
16401         K(N+3,3)=N+1
16402         K(N+4,3)=N+2
16403  
16404 C...Store colour connection indices.
16405         DO 270 J=1,2
16406           JC=J
16407           IF(KCS.EQ.-1) JC=3-J
16408           IF(ICOL(KCC,1,JC).NE.0) K(N+1,J+3)=N+ICOL(KCC,1,JC)
16409           IF(ICOL(KCC,2,JC).NE.0) K(N+2,J+3)=N+ICOL(KCC,2,JC)
16410           IF(ICOL(KCC,3,JC).NE.0) K(N+3,J+3)=MSTU(5)*(N+ICOL(KCC,3,JC))
16411           IF(ICOL(KCC,4,JC).NE.0) K(N+4,J+3)=MSTU(5)*(N+ICOL(KCC,4,JC))
16412   270   CONTINUE
16413  
16414 C...Store incoming and outgoing partons in their CM-frame.
16415         SHR=SQRT(VINT(21))*VINT(1)
16416         P(N+1,3)=0.5D0*SHR
16417         P(N+1,4)=0.5D0*SHR
16418         P(N+2,3)=-0.5D0*SHR
16419         P(N+2,4)=0.5D0*SHR
16420         P(N+3,5)=PYMASS(K(N+3,2))
16421         P(N+4,5)=PYMASS(K(N+4,2))
16422         IF(P(N+3,5)+P(N+4,5).GE.SHR) THEN
16423           IFAIL=1
16424           RETURN
16425         ENDIF
16426         P(N+3,4)=0.5D0*(SHR+(P(N+3,5)**2-P(N+4,5)**2)/SHR)
16427         P(N+3,3)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,5)**2))
16428         P(N+4,4)=SHR-P(N+3,4)
16429         P(N+4,3)=-P(N+3,3)
16430  
16431 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
16432         PHI=PARU(2)*PYR(0)
16433         CALL PYROBO(N+3,N+4,ACOS(VINT(23)),PHI,0D0,0D0,0D0)
16434  
16435 C...Global statistics.
16436         MINT(351)=MINT(351)+1
16437         VINT(351)=VINT(351)+SQRT(P(N+3,1)**2+P(N+3,2)**2)
16438         IF (MINT(351).EQ.1) VINT(356)=SQRT(P(N+3,1)**2+P(N+3,2)**2)
16439  
16440 C...Keep track of loose colour ends and information on scattering.
16441         MINT(31)=MINT(31)+1
16442         MINT(36)=MINT(31)
16443         PT2MI(MINT(36))=PT2
16444         IMISEP(MINT(31))=N+4
16445         DO 280 JS=1,2
16446           IMI(JS,MINT(31),1)=N+JS
16447           IMI(JS,MINT(31),2)=0
16448           XMI(JS,MINT(31))=VINT(40+JS)
16449           NMI(JS)=NMI(JS)+1
16450 C...Update cumulative counters
16451           VINT(142+JS)=VINT(142+JS)-VINT(40+JS)
16452           VINT(150+JS)=VINT(150+JS)+VINT(40+JS)
16453   280   CONTINUE
16454  
16455 C...Add to list of final state partons
16456         IPART(NPART+1)=N+3
16457         IPART(NPART+2)=N+4
16458         PTPART(NPART+1)=SQRT(PT2)
16459         PTPART(NPART+2)=SQRT(PT2)
16460         NPART=NPART+2
16461  
16462 C...Initialize ISR
16463         NISGEN(1,MINT(31))=0
16464         NISGEN(2,MINT(31))=0
16465  
16466 C...Update ER
16467         N=N+4
16468         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
16469           CALL PYERRM(11,'(PYMIGN:) no more memory left in PYJETS')
16470           MINT(51)=1
16471           RETURN
16472         ENDIF
16473  
16474 C...Finally, assign colour tags to new partons
16475         DO 300 JS=1,2
16476           I1=IMI(JS,MINT(31),1)
16477           I2=IMI(3-JS,MINT(31),1)
16478           DO 290 JCS=4,5
16479             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
16480      &           GOTO 290
16481             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 290
16482             KCS=JCS
16483             CALL PYCTTR(I1,KCS,I2)
16484             IF(MINT(51).NE.0) RETURN
16485   290     CONTINUE
16486   300   CONTINUE
16487  
16488 C----------------------------------------------------------------------
16489 C...MODE=2: Decide whether quarks in last scattering were valence,
16490 C...companion, or sea.
16491       ELSEIF (MODE.EQ.2) THEN
16492         JS=MINT(30)
16493         MI=MINT(36)
16494         PT2=PT2NOW
16495         KFSBM=ISIGN(1,MINT(10+JS))
16496         IFL=K(IMI(JS,MI,1),2)
16497         IMI(JS,MI,2)=0
16498         IF (IABS(IFL).GE.6) THEN
16499           IF (IABS(IFL).EQ.6) THEN
16500             CALL PYERRM(29,'(PYPTMI:) top in initial state!')
16501           ENDIF
16502           RETURN
16503         ENDIF
16504 C...Get PDFs at X(rescaled) and PT2 of the current initiator.
16505 C...(Do not include the parton itself in the X rescaling.)
16506         X=XMI(JS,MI)
16507         XRSC=X/(VINT(142+JS)+X)
16508 C...Note: XPSVC = x*pdf.
16509         MINT(30)=JS
16510         CALL PYPDFU(KFBEAM(JS),XRSC,PT2,XPQ)
16511         SEA=XPSVC(IFL,-1)
16512         VAL=XPSVC(IFL,0) 
16513 C...Ensure that pdfs are positive definite   
16514         IF (SEA.LT.0D0) THEN
16515           CALL PYERRM(9,'(PYPTMI:) Sea distribution negative.')
16516           SEA=MAX(0D0,SEA)
16517         ELSEIF (VAL.LT.0D0) THEN
16518           CALL PYERRM(9,'(PYPTMI:) Val distribution negative.')
16519           VAL=MAX(0D0,VAL)          
16520         ENDIF
16521         CMP=0D0
16522         DO 310 IVC=1,NVC(JS,IFL)
16523           CMP=CMP+XPSVC(IFL,IVC)
16524   310   CONTINUE
16525  
16526         NTRY=0
16527 C...Decide (Extra factor x cancels in the dvision).
16528   320   RVCS=PYR(0)*(SEA+VAL+CMP)
16529         IVNOW=1
16530         NTRY=NTRY+1
16531   330   IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
16532 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
16533           IVNOW=0
16534           IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
16535           IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
16536           IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
16537           IF(KFIVAL(JS,1).EQ.0) THEN
16538             IF(KFBEAM(JS).EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
16539             IF(KFBEAM(JS).EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
16540             IF((KFBEAM(JS).EQ.130.OR.KFBEAM(JS).EQ.310).AND.
16541      &           (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
16542           ELSE
16543 C...Count down valence remaining. Do not count current scattering.
16544             DO 340 I1=1,NMI(JS)
16545               IF (I1.EQ.MINT(36)) GOTO 340
16546               IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
16547      &             IVNOW=IVNOW-1
16548   340       CONTINUE
16549           ENDIF
16550           IF(IVNOW.EQ.0) GOTO 330
16551 C...Mark valence.
16552           IMI(JS,MI,2)=0
16553 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
16554           IF(KFIVAL(JS,1).EQ.0) THEN
16555             IF(KFBEAM(JS).EQ.111.OR.KFBEAM(JS).EQ.22) THEN
16556               KFIVAL(JS,1)=IFL
16557               KFIVAL(JS,2)=-IFL
16558             ELSEIF(KFBEAM(JS).EQ.130.OR.KFBEAM(JS).EQ.310) THEN
16559               KFIVAL(JS,1)=IFL
16560               IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
16561               IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
16562             ENDIF
16563           ENDIF
16564  
16565         ELSEIF (RVCS.LE.VAL+SEA) THEN
16566 C...If sea, add opposite sign companion parton. Store X and I.
16567           NVC(JS,-IFL)=NVC(JS,-IFL)+1
16568           XASSOC(JS,-IFL,NVC(JS,-IFL))=XMI(JS,MI)
16569 C...Set pointer to companion
16570           IMI(JS,MI,2)=-NVC(JS,-IFL)
16571  
16572         ELSE
16573 C...If companion, check whether we've got any in the books
16574           IF (NVC(JS,IFL).EQ.0) THEN
16575             CMP=0D0
16576 C...Only report error first time for this event
16577             IF (NTRY.EQ.1) 
16578      &           CALL PYERRM(9,'(PYPTMI:) No cmp quark, but pdf != 0!')
16579 C...Try a few times
16580             IF (NTRY.LE.10) THEN
16581               GOTO 320
16582 C... But if it stil fails, abort this event
16583             ELSE
16584               MINT(51)=1
16585               RETURN
16586             ENDIF
16587           ENDIF
16588 C...If several possibilities, decide which one
16589           CMPSUM=VAL+SEA
16590           ISEL=0
16591   350     ISEL=ISEL+1
16592           CMPSUM=CMPSUM+XPSVC(IFL,ISEL)
16593           IF (RVCS.GT.CMPSUM.AND.ISEL.LT.NVC(JS,IFL)) GOTO 350
16594 C...Find original sea (anti-)quark. Do not consider current scattering.
16595           IASSOC=0
16596           DO 360 I1=1,NMI(JS)
16597             IF (I1.EQ.MINT(36)) GOTO 360
16598             IF (K(IMI(JS,I1,1),2).NE.-IFL) GOTO 360
16599             IF (-IMI(JS,I1,2).EQ.ISEL) THEN
16600               IMI(JS,MI,2)=IMI(JS,I1,1)
16601               IMI(JS,I1,2)=IMI(JS,MI,1)
16602             ENDIF
16603   360     CONTINUE
16604 C...Mark companion "out-kicked".
16605           XASSOC(JS,IFL,ISEL)=-XASSOC(JS,IFL,ISEL)
16606         ENDIF
16607  
16608       ENDIF
16609       RETURN
16610       END
16611  
16612 C*********************************************************************
16613  
16614 C...PYFCMP: Auxiliary to PYPDFU and PYPTIS.
16615 C...Giving the x*f pdf of a companion quark, with its partner at XS,
16616 C...using an approximate gluon density like (1-X)^NPOW/X. The value
16617 C...corresponds to an unrescaled range between 0 and 1-X.
16618  
16619       FUNCTION PYFCMP(XC,XS,NPOW)
16620       IMPLICIT NONE
16621       DOUBLE PRECISION XC, XS, Y, PYFCMP,FAC
16622       INTEGER NPOW
16623  
16624       PYFCMP=0D0
16625 C...Parent gluon momentum fraction
16626       Y=XC+XS
16627       IF (Y.GE.1D0) RETURN
16628 C...Common factor (includes factor XC, since PYFCMP=x*f)
16629       FAC=3D0*XC*XS*(XC**2+XS**2)/(Y**4)
16630 C...Store normalized companion x*f distribution.
16631       IF (NPOW.LE.0) THEN
16632         PYFCMP=FAC/(2D0-XS*(3D0-XS*(3D0-2D0*XS)))
16633       ELSEIF (NPOW.EQ.1) THEN
16634         PYFCMP=FAC*(1D0-Y)/(2D0+XS**2*(-3D0+XS)+3D0*XS*LOG(XS))
16635       ELSEIF (NPOW.EQ.2) THEN
16636         PYFCMP=FAC*(1D0-Y)**2/(2D0*((1D0-XS)*(1D0+XS*(4D0+XS))
16637      &       +3D0*XS*(1D0+XS)*LOG(XS)))
16638       ELSEIF (NPOW.EQ.3) THEN
16639         PYFCMP=FAC*(1D0-Y)**3*2D0/(4D0+27D0*XS-31D0*XS**3
16640      &       +6D0*XS*LOG(XS)*(3D0+2D0*XS*(3D0+XS)))
16641       ELSEIF (NPOW.GE.4) THEN
16642         PYFCMP=FAC*(1D0-Y)**4/(2D0*(1D0+2D0*XS)*((1D0-XS)*(1D0+
16643      &       XS*(10D0+XS))+6D0*XS*LOG(XS)*(1D0+XS)))
16644       ENDIF
16645       RETURN
16646       END
16647  
16648 C*********************************************************************
16649  
16650 C...PYPCMP: Auxiliary to PYPDFU.
16651 C...Giving the momentum integral of a companion quark, with its
16652 C...partner at XS, using an approximate gluon density like (1-x)^NPOW/x.
16653 C...The value corresponds to an unrescaled range between 0 and 1-XS.
16654  
16655       FUNCTION PYPCMP(XS,NPOW)
16656       IMPLICIT NONE
16657       DOUBLE PRECISION XS, PYPCMP
16658       INTEGER NPOW
16659       IF (XS.GE.1D0.OR.XS.LE.0D0) THEN
16660         PYPCMP=0D0
16661       ELSEIF (NPOW.LE.0) THEN
16662         PYPCMP=XS*(5D0+XS*(-9D0-2D0*XS*(-3D0+XS))+3D0*LOG(XS))
16663         PYPCMP=PYPCMP/((-1D0+XS)*(2D0+XS*(-1D0+2D0*XS)))
16664       ELSEIF (NPOW.EQ.1) THEN
16665         PYPCMP=-1D0-3D0*XS+(2D0*(-1D0+XS)**2*(1D0+XS+XS**2))
16666      &       /(2D0+XS**2*(XS-3D0)+3D0*XS*LOG(XS))
16667       ELSEIF (NPOW.EQ.2) THEN
16668         PYPCMP=XS*((1D0-XS)*(19D0+XS*(43D0+4D0*XS))
16669      &       +6D0*LOG(XS)*(1D0+6D0*XS+4D0*XS**2))
16670         PYPCMP=PYPCMP/(4D0*((XS-1D0)*(1D0+XS*(4D0+XS))
16671      &       -3D0*XS*LOG(XS)*(1+XS)))
16672       ELSEIF (NPOW.EQ.3) THEN
16673         PYPCMP=3D0*XS*((XS-1)*(7D0+XS*(28D0+13D0*XS))
16674      &       -2D0*LOG(XS)*(1D0+XS*(9D0+2D0*XS*(6D0+XS))))
16675         PYPCMP=PYPCMP/(4D0+27D0*XS-31D0*XS**3
16676      &       +6D0*XS*LOG(XS)*(3D0+2D0*XS*(3D0+XS)))
16677       ELSE
16678         PYPCMP=(-9D0*XS*(XS**2-1D0)*(5D0+XS*(24D0+XS))+12D0*XS*LOG(XS)
16679      &       *(1D0+2D0*XS)*(1D0+2D0*XS*(5D0+2D0*XS)))
16680         PYPCMP=PYPCMP/(8D0*(1D0+2D0*XS)*((XS-1D0)*(1D0+XS*(10D0+XS))
16681      &       -6D0*XS*LOG(XS)*(1D0+XS)))
16682       ENDIF
16683       RETURN
16684       END
16685  
16686 C*********************************************************************
16687  
16688 C...PYUPRE
16689 C...Rearranges contents of the HEPEUP commonblock so that
16690 C...mothers precede daughters and daughters of a decay are
16691 C...listed consecutively.
16692  
16693       SUBROUTINE PYUPRE
16694  
16695 C...Double precision and integer declarations.
16696       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16697       IMPLICIT INTEGER(I-N)
16698  
16699 C...User process event common block.
16700       INTEGER MAXNUP
16701       PARAMETER (MAXNUP=500)
16702       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
16703       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
16704       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
16705      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
16706      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
16707       SAVE /HEPEUP/
16708  
16709 C...Local arrays.
16710       DIMENSION NEWPOS(0:MAXNUP),IDUPT(MAXNUP),ISTUPT(MAXNUP),
16711      &MOTUPT(2,MAXNUP),ICOUPT(2,MAXNUP),PUPT(5,MAXNUP),
16712      &VTIUPT(MAXNUP),SPIUPT(MAXNUP)
16713  
16714 C...Check whether a rearrangement is required.
16715       NEED=0
16716       DO 100 IUP=1,NUP
16717         IF(MOTHUP(1,IUP).GT.IUP) NEED=NEED+1
16718   100 CONTINUE
16719       DO 110 IUP=2,NUP
16720         IF(MOTHUP(1,IUP).LT.MOTHUP(1,IUP-1)) NEED=NEED+1
16721   110 CONTINUE
16722  
16723       IF(NEED.NE.0) THEN
16724 C...Find the new order that particles should have.
16725         NEWPOS(0)=0
16726         NNEW=0
16727         INEW=-1
16728   120   INEW=INEW+1
16729         DO 130 IUP=1,NUP
16730           IF(MOTHUP(1,IUP).EQ.NEWPOS(INEW)) THEN
16731             NNEW=NNEW+1
16732             NEWPOS(NNEW)=IUP
16733           ENDIF
16734   130   CONTINUE
16735         IF(INEW.LT.NNEW.AND.INEW.LT.NUP) GOTO 120
16736         IF(NNEW.NE.NUP) THEN
16737           CALL PYERRM(2,
16738      &    '(PYUPRE:) failed to make sense of mother pointers in HEPEUP')
16739           RETURN
16740         ENDIF
16741  
16742 C...Copy old info into temporary storage.
16743         DO 150 I=1,NUP
16744           IDUPT(I)=IDUP(I)
16745           ISTUPT(I)=ISTUP(I)
16746           MOTUPT(1,I)=MOTHUP(1,I)
16747           MOTUPT(2,I)=MOTHUP(2,I)
16748           ICOUPT(1,I)=ICOLUP(1,I)
16749           ICOUPT(2,I)=ICOLUP(2,I)
16750           DO 140 J=1,5
16751             PUPT(J,I)=PUP(J,I)
16752   140     CONTINUE
16753           VTIUPT(I)=VTIMUP(I)
16754           SPIUPT(I)=SPINUP(I)
16755   150   CONTINUE
16756  
16757 C...Copy info back into HEPEUP in right order.
16758         DO 180 I=1,NUP
16759           IOLD=NEWPOS(I)
16760           IDUP(I)=IDUPT(IOLD)
16761           ISTUP(I)=ISTUPT(IOLD)
16762           MOTHUP(1,I)=0
16763           MOTHUP(2,I)=0
16764           DO 160 IMOT=1,I-1
16765             IF(MOTUPT(1,IOLD).EQ.NEWPOS(IMOT)) MOTHUP(1,I)=IMOT
16766             IF(MOTUPT(2,IOLD).EQ.NEWPOS(IMOT)) MOTHUP(2,I)=IMOT
16767   160     CONTINUE
16768           IF(MOTHUP(2,I).GT.0.AND.MOTHUP(2,I).LT.MOTHUP(1,I)) THEN
16769             MOTHSW=MOTHUP(1,I)
16770             MOTHUP(1,I)=MOTHUP(2,I)
16771             MOTHUP(2,I)=MOTHSW
16772           ENDIF
16773           ICOLUP(1,I)=ICOUPT(1,IOLD)
16774           ICOLUP(2,I)=ICOUPT(2,IOLD)
16775           DO 170 J=1,5
16776             PUP(J,I)=PUPT(J,IOLD)
16777   170     CONTINUE
16778           VTIMUP(I)=VTIUPT(IOLD)
16779           SPINUP(I)=SPIUPT(IOLD)
16780   180   CONTINUE
16781       ENDIF
16782  
16783 c...If incoming particles are massive recalculate to put them massless.
16784       IF(PUP(5,1).NE.0D0.OR.PUP(5,2).NE.0D0) THEN
16785         PPLUS=(PUP(4,1)+PUP(3,1))+(PUP(4,2)+PUP(3,2))
16786         PMINUS=(PUP(4,1)-PUP(3,1))+(PUP(4,2)-PUP(3,2))
16787         PUP(4,1)=0.5D0*PPLUS
16788         PUP(3,1)=PUP(4,1)
16789         PUP(5,1)=0D0
16790         PUP(4,2)=0.5D0*PMINUS
16791         PUP(3,2)=-PUP(4,2)
16792         PUP(5,2)=0D0
16793       ENDIF
16794  
16795       RETURN
16796       END
16797  
16798 C*********************************************************************
16799  
16800 C...PYADSH
16801 C...Administers the generation of successive final-state showers
16802 C...in external processes.
16803  
16804       SUBROUTINE PYADSH(NFIN)
16805  
16806 C...Double precision and integer declarations.
16807       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16808       IMPLICIT INTEGER(I-N)
16809       INTEGER PYK,PYCHGE,PYCOMP
16810 C...Parameter statement for maximum size of showers.
16811       PARAMETER (MAXNUR=1000)
16812 C...Commonblocks.
16813       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
16814       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
16815       COMMON/PYCTAG/NCT,MCT(4000,2)
16816       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16817       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16818       COMMON/PYINT1/MINT(400),VINT(400)
16819       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYPARS/,/PYINT1/
16820 C...Local array.
16821       DIMENSION IBEG(100),KSAV(100,5),PSUM(4),BETA(3)
16822  
16823 C...Set primary vertex.
16824       DO 100 J=1,5
16825         V(MINT(83)+5,J)=0D0
16826         V(MINT(83)+6,J)=0D0
16827         V(MINT(84)+1,J)=0D0
16828         V(MINT(84)+2,J)=0D0
16829   100 CONTINUE
16830  
16831 C...Isolate systems of particles with the same mother.
16832       NSYS=0
16833       IMS=-1
16834       DO 140 I=MINT(84)+3,NFIN
16835         IM=K(I,3)
16836         IF(IM.GT.0.AND.IM.LE.MINT(84)) IM=K(IM,3)
16837         IF(IM.NE.IMS) THEN
16838           NSYS=NSYS+1
16839           IBEG(NSYS)=I
16840           IMS=IM
16841         ENDIF
16842  
16843 C...Set production vertices.
16844         IF(IM.LE.MINT(83)+6.OR.(IM.GT.MINT(84).AND.IM.LE.MINT(84)+2))
16845      &  THEN
16846           DO 110 J=1,4
16847             V(I,J)=0D0
16848   110     CONTINUE
16849         ELSE
16850           DO 120 J=1,4
16851             V(I,J)=V(IM,J)+V(IM,5)*P(IM,J)/P(IM,5)
16852   120     CONTINUE
16853         ENDIF
16854         IF(MSTP(125).GE.1) THEN
16855           IDOC=I-MSTP(126)+4
16856           DO 130 J=1,5
16857             V(IDOC,J)=V(I,J)
16858   130     CONTINUE
16859         ENDIF
16860   140 CONTINUE
16861  
16862 C...End loop over systems. Return if no showers to be performed.
16863       IBEG(NSYS+1)=NFIN+1
16864       IF(MSTP(71).LE.0) RETURN
16865  
16866 C...Loop through systems of particles; check that sensible size.
16867       DO 270 ISYS=1,NSYS
16868         NSIZ=IBEG(ISYS+1)-IBEG(ISYS)
16869         IF(MINT(35).LE.2) THEN
16870           IF(NSIZ.EQ.1.AND.ISYS.EQ.1) THEN
16871             GOTO 270
16872           ELSEIF(NSIZ.LE.1) THEN
16873             CALL PYERRM(2,'(PYADSH:) only one particle in system')
16874             GOTO 270
16875           ELSEIF(NSIZ.GT.80) THEN
16876             CALL PYERRM(2,'(PYADSH:) more than 80 particles in system')
16877             GOTO 270
16878           ENDIF
16879         ENDIF
16880  
16881 C...Save status codes and daughters of showering particles; reset them.
16882         DO 150 J=1,4
16883           PSUM(J)=0D0
16884   150   CONTINUE
16885         DO 170 II=1,NSIZ
16886           I=IBEG(ISYS)-1+II
16887           KSAV(II,1)=K(I,1)
16888           IF(K(I,1).GT.10) THEN
16889             K(I,1)=1
16890             IF(KSAV(II,1).EQ.14) K(I,1)=3
16891           ENDIF
16892           IF(KSAV(II,1).LE.10) THEN
16893           ELSEIF(K(I,1).EQ.1) THEN
16894             KSAV(II,4)=K(I,4)
16895             KSAV(II,5)=K(I,5)
16896             K(I,4)=0
16897             K(I,5)=0
16898           ELSE
16899             KSAV(II,4)=MOD(K(I,4),MSTU(5))
16900             KSAV(II,5)=MOD(K(I,5),MSTU(5))
16901             K(I,4)=K(I,4)-KSAV(II,4)
16902             K(I,5)=K(I,5)-KSAV(II,5)
16903           ENDIF
16904           DO 160 J=1,4
16905             PSUM(J)=PSUM(J)+P(I,J)
16906   160     CONTINUE
16907   170   CONTINUE
16908  
16909 C...Perform shower.
16910         QMAX=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
16911      &  PSUM(3)**2))
16912         IF(ISYS.EQ.1) QMAX=MIN(QMAX,SQRT(PARP(71))*VINT(55))
16913         NSAV=N
16914         IF(MINT(35).LE.2) THEN
16915           IF(NSIZ.EQ.2) THEN
16916             CALL PYSHOW(IBEG(ISYS),IBEG(ISYS)+1,QMAX)
16917           ELSE
16918             CALL PYSHOW(IBEG(ISYS),-NSIZ,QMAX)
16919           ENDIF
16920  
16921 C...For external processes, first call, also ISR partons radiate.
16922 C...Can use existing PYPART list, removing partons that radiate later.
16923         ELSEIF(ISYS.EQ.1) THEN
16924           NPARTN=0
16925           DO 175 II=1,NPART
16926             IF(IPART(II).LT.IBEG(2).OR.IPART(II).GE.IBEG(NSYS+1)) THEN
16927               NPARTN=NPARTN+1
16928               IPART(NPARTN)=IPART(II)
16929               PTPART(NPARTN)=PTPART(II)
16930             ENDIF
16931  175      CONTINUE
16932           NPART=NPARTN
16933           CALL PYPTFS(1,0.5D0*QMAX,0D0,PTGEN)
16934         ELSE
16935 C...For subsequent calls use the systems excluded above.
16936           NPART=NSIZ
16937           NPARTD=0
16938           DO 180 II=1,NSIZ
16939             I=IBEG(ISYS)-1+II
16940             IPART(II)=I
16941             PTPART(II)=0.5D0*QMAX
16942   180     CONTINUE
16943           CALL PYPTFS(2,0.5D0*QMAX,0D0,PTGEN)
16944         ENDIF
16945  
16946 C...Look up showered copies of original showering particles.
16947         DO 260 II=1,NSIZ
16948           I=IBEG(ISYS)-1+II
16949           IMV=I
16950 C...Particles without daughters need not be studied.
16951           IF(KSAV(II,1).LE.10) GOTO 260
16952           IF(N.EQ.NSAV.OR.K(I,1).LE.10) THEN
16953           ELSEIF(K(I,1).EQ.11) THEN
16954   190       IMV=MOD(K(IMV,4),MSTU(5))
16955             IF(K(IMV,1).EQ.11) GOTO 190
16956           ELSE
16957             KDA1=MOD(K(I,4),MSTU(5))
16958             IF(KDA1.GT.0) THEN
16959               IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16960             ENDIF
16961             KDA2=MOD(K(I,5),MSTU(5))
16962             IF(KDA2.GT.0) THEN
16963               IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16964             ENDIF
16965             DO 200 I3=I+1,N
16966               IF(K(I3,2).EQ.K(I,2).AND.(I3.EQ.KDA1.OR.I3.EQ.KDA2))
16967      &        THEN
16968                 IMV=I3
16969                 KDA1=MOD(K(I3,4),MSTU(5))
16970                 IF(KDA1.GT.0) THEN
16971                   IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16972                 ENDIF
16973                 KDA2=MOD(K(I3,5),MSTU(5))
16974                 IF(KDA2.GT.0) THEN
16975                   IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16976                 ENDIF
16977               ENDIF
16978   200       CONTINUE
16979           ENDIF
16980  
16981 C...Restore daughter info of original partons to showered copies.
16982           IF(KSAV(II,1).GT.10) K(IMV,1)=KSAV(II,1)
16983           IF(KSAV(II,1).LE.10) THEN
16984           ELSEIF(K(I,1).EQ.1) THEN
16985             K(IMV,4)=KSAV(II,4)
16986             K(IMV,5)=KSAV(II,5)
16987           ELSE
16988             K(IMV,4)=K(IMV,4)+KSAV(II,4)
16989             K(IMV,5)=K(IMV,5)+KSAV(II,5)
16990           ENDIF
16991  
16992 C...Reset mother info of existing daughters to showered copies.
16993           DO 210 I3=IBEG(ISYS+1),NFIN
16994             IF(K(I3,3).EQ.I) K(I3,3)=IMV
16995             IF(K(I3,1).EQ.3.OR.K(I3,1).EQ.14) THEN
16996               IF(K(I3,4)/MSTU(5).EQ.I) K(I3,4)=K(I3,4)+MSTU(5)*(IMV-I)
16997               IF(K(I3,5)/MSTU(5).EQ.I) K(I3,5)=K(I3,5)+MSTU(5)*(IMV-I)
16998             ENDIF
16999   210     CONTINUE
17000  
17001 C...Boost all original daughters to new frame of showered copy.
17002 C...Also update their colour tags.
17003           IF(IMV.NE.I) THEN
17004             DO 220 J=1,3
17005               BETA(J)=(P(IMV,J)-P(I,J))/(P(IMV,4)+P(I,4))
17006   220       CONTINUE
17007             FAC=2D0/(1D0+BETA(1)**2+BETA(2)**2+BETA(3)**2)
17008             DO 230 J=1,3
17009               BETA(J)=FAC*BETA(J)
17010   230       CONTINUE
17011             DO 250 I3=IBEG(ISYS+1),NFIN
17012               IMO=I3
17013   240         IMO=K(IMO,3)
17014               IF(MSTP(128).LE.0) THEN
17015                 IF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) GOTO 240
17016                 IF(IMO.EQ.I.OR.(K(I,3).LE.MINT(84).AND.IMO.EQ.K(I,3)))
17017      &          THEN
17018                   CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
17019                   IF(MCT(I3,1).EQ.MCT(I,1)) MCT(I3,1)=MCT(IMV,1)
17020                   IF(MCT(I3,2).EQ.MCT(I,2)) MCT(I3,2)=MCT(IMV,2)
17021                 ENDIF
17022               ELSE
17023                 IF(IMO.EQ.IMV) THEN
17024                   CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
17025                   IF(MCT(I3,1).EQ.MCT(I,1)) MCT(I3,1)=MCT(IMV,1)
17026                   IF(MCT(I3,2).EQ.MCT(I,2)) MCT(I3,2)=MCT(IMV,2)
17027                 ELSEIF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) THEN
17028                   GOTO 240
17029                 ENDIF
17030               ENDIF
17031   250       CONTINUE
17032           ENDIF
17033   260   CONTINUE
17034  
17035 C...End of loop over showering systems
17036   270 CONTINUE
17037  
17038       RETURN
17039       END
17040  
17041 C*********************************************************************
17042  
17043 C...PYVETO
17044 C...Interface to UPVETO, which allows user to veto event generation
17045 C...on the parton level, after parton showers but before multiple
17046 C...interactions, beam remnants and hadronization is added.
17047  
17048       SUBROUTINE PYVETO(IVETO)
17049  
17050 C...All real arithmetic in double precision.
17051       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
17052 C...Three Pythia functions return integers, so need declaring.
17053       INTEGER PYK,PYCHGE,PYCOMP
17054  
17055 C...PYTHIA commonblocks.
17056       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
17057       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
17058       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
17059       COMMON/PYINT1/MINT(400),VINT(400)
17060       SAVE /PYJETS/,/PYPARS/,/PYINT1/
17061 C...HEPEVT commonblock.
17062       PARAMETER (NMXHEP=4000)
17063       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
17064      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
17065       DOUBLE PRECISION PHEP,VHEP
17066       SAVE /HEPEVT/
17067 C...Local array.
17068       DIMENSION IRESO(100)
17069  
17070 C...Define longitudinal boost from initiator rest frame to cm frame.
17071       GAMMA=0.5D0*(VINT(141)+VINT(142))/SQRT(VINT(141)*VINT(142))
17072       GABEZ=0.5D0*(VINT(141)-VINT(142))/SQRT(VINT(141)*VINT(142))
17073 
17074 C...Presentation is different if using pT-ordered shower
17075       IF(MINT(35).EQ.3) THEN
17076         GAMMA=1D0
17077         GABEZ=0D0
17078       ENDIF
17079 
17080 C... Reset counters.
17081       NEVHEP=0
17082       NHEP=0
17083       NRESO=0
17084       
17085 C...Oth pass: identify beam and incoming partons
17086       DO 140 I=MINT(83)+1,MINT(83)+6
17087         ISTORE=0
17088         IF(K(I,2).EQ.94) THEN
17089 
17090         ELSE
17091           NRESO=NRESO+1
17092           IRESO(NRESO)=I
17093           IMOTH=K(I,3)
17094         ENDIF
17095  140  CONTINUE
17096 
17097 C...First pass: identify final locations of resonances
17098 C...and of their daughters before showering.
17099       DO 150 I=MINT(84)+3,N
17100         ISTORE=0
17101         IMOTH=0
17102  
17103 C...Skip shower CM frame documentation lines.
17104         IF(K(I,2).EQ.94) THEN
17105  
17106 C...  Store a new intermediate product, when mother in documentation.
17107         ELSEIF(MSTP(128).EQ.0.AND.K(I,3).GT.MINT(83)+6.AND.
17108      &  K(I,3).LE.MINT(84)) THEN
17109           ISTORE=1
17110           NHEP=NHEP+1
17111           II=NHEP
17112           NRESO=NRESO+1
17113           IRESO(NRESO)=I
17114           IMOTH=MAX(0,K(K(I,3),3)-(MINT(83)+6))
17115  
17116 C...  Store a new intermediate product, when mother in main section.
17117         ELSEIF(MSTP(128).EQ.1.AND.K(I-MINT(84)+MINT(83)+4,1).EQ.21.AND.
17118      &  K(I-MINT(84)+MINT(83)+4,2).EQ.K(I,2)) THEN
17119           ISTORE=1
17120           NHEP=NHEP+1
17121           II=NHEP
17122           NRESO=NRESO+1
17123           IRESO(NRESO)=I
17124           IMOTH=MAX(0,K(I-MINT(84)+MINT(83)+4,3)-(MINT(83)+6))
17125         ENDIF
17126   
17127         IF(ISTORE.EQ.1) THEN
17128 C...Copy parton info, boosting momenta along z axis to cm frame.
17129           ISTHEP(II)=2
17130           IDHEP(II)=K(I,2)
17131           PHEP(1,II)=P(I,1)
17132           PHEP(2,II)=P(I,2)
17133           PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
17134           PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
17135           PHEP(5,II)=P(I,5)
17136 C...Store one mother. Rest of history and vertex info zeroed.
17137           JMOHEP(1,II)=IMOTH
17138           JMOHEP(2,II)=0
17139           JDAHEP(1,II)=0
17140           JDAHEP(2,II)=0
17141           VHEP(1,II)=0D0
17142           VHEP(2,II)=0D0
17143           VHEP(3,II)=0D0
17144           VHEP(4,II)=0D0
17145         ENDIF
17146  150  CONTINUE
17147 
17148 C...Second pass: identify current set of "final" partons.
17149       DO 200 I=MINT(84)+3,N
17150         ISTORE=0
17151         IMOTH=0
17152  
17153 C...Store a final parton.
17154         IF(K(I,1).GE.1.AND.K(I,1).LE.10) THEN
17155           ISTORE=1
17156           NHEP=NHEP+1
17157           II=NHEP
17158 C..Trace it back through shower, to check if from documented particle.
17159           IHIST=I
17160           ISAVE=IHIST
17161   160     CONTINUE
17162           IF(IHIST.GT.MINT(84)) THEN
17163             IF(K(IHIST,2).EQ.94) IHIST=K(IHIST,3)+(ISAVE-1-IHIST)
17164             DO 170 IRI=1,NRESO
17165               IF(IHIST.EQ.IRESO(IRI)) IMOTH=IRI
17166   170       CONTINUE
17167             ISAVE=IHIST
17168             IHIST=K(IHIST,3)
17169             IF(IMOTH.EQ.0) GOTO 160
17170             IMOTH=MAX(0,IMOTH-6)
17171           ELSEIF(IHIST.LE.4) THEN
17172             IF(IHIST.EQ.1.OR.IHIST.EQ.2) THEN
17173               ISTORE=0
17174               NHEP=NHEP-1
17175             ELSE
17176               IMOTH=0
17177             ENDIF
17178           ENDIF
17179         ENDIF
17180  
17181         IF(ISTORE.EQ.1) THEN
17182 C...Copy parton info, boosting momenta along z axis to cm frame.
17183           ISTHEP(II)=1
17184           IDHEP(II)=K(I,2)
17185           PHEP(1,II)=P(I,1)
17186           PHEP(2,II)=P(I,2)
17187           PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
17188           PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
17189           PHEP(5,II)=P(I,5)
17190 C...Store one mother. Rest of history and vertex info zeroed.
17191           JMOHEP(1,II)=IMOTH
17192           JMOHEP(2,II)=0
17193           JDAHEP(1,II)=0
17194           JDAHEP(2,II)=0
17195           VHEP(1,II)=0D0
17196           VHEP(2,II)=0D0
17197           VHEP(3,II)=0D0
17198           VHEP(4,II)=0D0
17199         ENDIF
17200   200 CONTINUE
17201 C...Call user-written routine to decide whether to keep events.
17202       CALL UPVETO(IVETO)
17203       RETURN
17204       END
17205 C*********************************************************************
17206  
17207 C...PYRESD
17208 C...Allows resonances to decay (including parton showers for hadronic
17209 C...channels).
17210  
17211       SUBROUTINE PYRESD(IRES)
17212  
17213 C...Double precision and integer declarations.
17214       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
17215       IMPLICIT INTEGER(I-N)
17216       INTEGER PYK,PYCHGE,PYCOMP
17217 C...Parameter statement to help give large particle numbers.
17218       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
17219      &KEXCIT=4000000,KDIMEN=5000000)
17220 C...Parameter statement for maximum size of showers.
17221       PARAMETER (MAXNUR=1000)
17222 C...Commonblocks.
17223       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
17224       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
17225       COMMON/PYCTAG/NCT,MCT(4000,2)
17226       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
17227       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
17228       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
17229       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
17230       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
17231       COMMON/PYINT1/MINT(400),VINT(400)
17232       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
17233       COMMON/PYINT4/MWID(500),WIDS(500,5)
17234       COMMON/PYPUED/IUED(0:99),RUED(0:99)
17235       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,
17236      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/,/PYPUED/
17237 C...Local arrays and complex and character variables.
17238       DIMENSION IREF(50,8),KDCY(3),KFL1(3),KFL2(3),KFL3(3),KEQL(3),
17239      &KCQM(3),KCQ1(3),KCQ2(3),KCQ3(3),NSD(3),PMMN(4),ILIN(6),
17240      &HGZ(3,3),COUP(6,4),CORL(2,2,2),PK(6,4),PKK(6,6),CTHE(3),
17241      &PHI(3),WDTP(0:400),WDTE(0:400,0:5),DPMO(5),VDCY(4),
17242      &ITJUNC(3),CTM2(3),KCQ(0:10),IANT(4),ITRI(4),IOCT(4),KCQ4(3),
17243      &KFL4(3)
17244       COMPLEX FGK,HA(6,6),HC(6,6)
17245       REAL TIR,UIR
17246       CHARACTER CODE*9,MASS*9
17247 C...Local arrays.
17248       DIMENSION PV(10,5),RORD(10),UE(3),BE(3),WTCOR(10)
17249       DATA WTCOR/2D0,5D0,15D0,60D0,250D0,1500D0,1.2D4,1.2D5,150D0,16D0/
17250   
17251 C...Functions: momentum in two-particle decays and four-product.
17252       PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2D0*A)
17253  
17254 C...The F, Xi and Xj functions of Gunion and Kunszt
17255 C...(Phys. Rev. D33, 665, plus errata from the authors).
17256       FGK(I1,I2,I3,I4,I5,I6)=4.*HA(I1,I3)*HC(I2,I6)*(HA(I1,I5)*
17257      &HC(I1,I4)+HA(I3,I5)*HC(I3,I4))
17258       DIGK(DT,DU)=-4D0*D34*D56+DT*(3D0*DT+4D0*DU)+DT**2*(DT*DU/
17259      &(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+2D0*(D34/D56+D56/D34))
17260       DJGK(DT,DU)=8D0*(D34+D56)**2-8D0*(D34+D56)*(DT+DU)-6D0*DT*DU-
17261      &2D0*DT*DU*(DT*DU/(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+
17262      &2D0*(D34/D56+D56/D34))
17263  
17264 C...Some general constants.
17265       XW=PARU(102)
17266       XWV=XW
17267       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
17268       XW1=1D0-XW
17269       SQMZ=PMAS(23,1)**2
17270  
17271       GMMZ=PMAS(23,1)*PMAS(23,2)
17272       SQMW=PMAS(24,1)**2
17273       GMMW=PMAS(24,1)*PMAS(24,2)
17274       SH=VINT(44)
17275  
17276 C...Boost and rotate to rest frame of incoming partons, 
17277 C...to get proper amount of smearing of decay angles.
17278       IBST=0
17279       IF(IRES.EQ.0) THEN
17280         IBST=1
17281         IIN1=MINT(84)+1
17282         IIN2=MINT(84)+2
17283 C...Bug fix 09 OCT 2008 (PS) at 6.4.18: in new shower, the incoming partons 
17284 C...(101,102) are off shell and can have inconsistent momenta, resulting 
17285 C...in boosts larger than unity. However, the corresponding docu partons 
17286 C...(5,6) are kept on shell, and have consistent momenta that can be used 
17287 C...to derive this boost instead. Ultimately, should change the way the new 
17288 C...shower stores intermediate partons, but just using partons (5,6) for now 
17289 C...does define the boost and furnishes a quick and much needed solution.
17290         IF (MINT(35).EQ.3) THEN
17291           IIN1=MINT(83)+5
17292           IIN2=MINT(83)+6
17293         ENDIF
17294         ETOTIN=P(IIN1,4)+P(IIN2,4)
17295         BEXIN=(P(IIN1,1)+P(IIN2,1))/ETOTIN
17296         BEYIN=(P(IIN1,2)+P(IIN2,2))/ETOTIN
17297         BEZIN=(P(IIN1,3)+P(IIN2,3))/ETOTIN
17298         CALL PYROBO(MINT(83)+7,N,0D0,0D0,-BEXIN,-BEYIN,-BEZIN)
17299         PHIIN=PYANGL(P(MINT(84)+1,1),P(MINT(84)+1,2))
17300         CALL PYROBO(MINT(83)+7,N,0D0,-PHIIN,0D0,0D0,0D0)
17301         THEIN=PYANGL(P(MINT(84)+1,3),P(MINT(84)+1,1))
17302         CALL PYROBO(MINT(83)+7,N,-THEIN,0D0,0D0,0D0,0D0)
17303       ENDIF
17304  
17305 C...Reset original resonance configuration.
17306       DO 100 JT=1,8
17307         IREF(1,JT)=0
17308   100 CONTINUE
17309  
17310 C...Define initial one, two or three objects for subprocess.
17311       IHDEC=0
17312       IF(IRES.EQ.0) THEN
17313         ISUB=MINT(1)
17314         IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
17315           IREF(1,1)=MINT(84)+2+ISET(ISUB)
17316           IREF(1,4)=MINT(83)+6+ISET(ISUB)
17317           JTMAX=1
17318         ELSEIF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.4) THEN
17319           IREF(1,1)=MINT(84)+1+ISET(ISUB)
17320           IREF(1,2)=MINT(84)+2+ISET(ISUB)
17321           IREF(1,4)=MINT(83)+5+ISET(ISUB)
17322           IREF(1,5)=MINT(83)+6+ISET(ISUB)
17323           JTMAX=2
17324         ELSEIF(ISET(ISUB).EQ.5) THEN
17325           IREF(1,1)=MINT(84)+3
17326           IREF(1,2)=MINT(84)+4
17327           IREF(1,3)=MINT(84)+5
17328           IREF(1,4)=MINT(83)+7
17329           IREF(1,5)=MINT(83)+8
17330           IREF(1,6)=MINT(83)+9
17331           JTMAX=3
17332         ENDIF
17333  
17334 C...Define original resonance for odd cases.
17335       ELSE
17336         ISUB=0
17337         IF(K(IRES,2).EQ.25.OR.K(IRES,2).EQ.35.OR.K(IRES,2).EQ.36)
17338      &  IHDEC=1
17339         IF(IHDEC.EQ.1) ISUB=3
17340         IREF(1,1)=IRES
17341         IREF(1,4)=K(IRES,3)
17342         IRESTM=IRES
17343         IF(IREF(1,4).GT.MINT(84)) THEN
17344   110     ITMPMO=IREF(1,4)
17345           IF(K(ITMPMO,2).EQ.94) THEN
17346             IREF(1,4)=K(ITMPMO,3)+(IRESTM-ITMPMO-1)
17347             IF(K(IREF(1,4),3).LE.MINT(84)) IREF(1,4)=K(IREF(1,4),3)
17348           ELSEIF(K(ITMPMO,2).EQ.K(IRES,2)) THEN
17349             IRESTM=ITMPMO
17350 C...Explicitly check that reference particle exists, otherwise stop recursion
17351             IF(ITMPMO.GT.0.AND.K(ITMPMO,3).GT.0) THEN
17352               IREF(1,4)=K(ITMPMO,3)
17353               GOTO 110
17354             ENDIF
17355           ENDIF
17356         ENDIF
17357         IF(IREF(1,4).GT.MINT(84)) THEN
17358           EMATCH=1D10
17359           IREF14=IREF(1,4)
17360           DO 120 II=MINT(83)+7,MINT(83)+MINT(4)
17361             IF(K(II,2).EQ.K(IRES,2).AND.ABS(P(II,4)-P(IREF14,4)).LT.
17362      &      EMATCH) THEN
17363               IREF(1,4)=II
17364               EMATCH=ABS(P(II,4)-P(IREF14,4))
17365             ENDIF
17366   120     CONTINUE
17367         ENDIF
17368         JTMAX=1
17369       ENDIF
17370  
17371 C...Check if initial resonance has been moved (in resonance + jet).
17372       DO 140 JT=1,3
17373         IF(IREF(1,JT).GT.0) THEN
17374           IF(K(IREF(1,JT),1).GT.10) THEN
17375             KFA=IABS(K(IREF(1,JT),2))
17376             IF(KFA.GE.6.AND.KCHG(PYCOMP(KFA),2).NE.0) THEN
17377               KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
17378               KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
17379               IF(KDA1.GT.IREF(1,JT).AND.KDA1.LE.N) THEN
17380                 IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
17381               ENDIF
17382               IF(KDA2.GT.IREF(1,JT).AND.KDA2.LE.N) THEN
17383                 IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
17384               ENDIF
17385               DO 130 I=IREF(1,JT)+1,N
17386                 IF(K(I,2).EQ.K(IREF(1,JT),2).AND.(I.EQ.KDA1.OR.
17387      &          I.EQ.KDA2)) THEN
17388                   IREF(1,JT)=I
17389                   KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
17390                   KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
17391                   IF(KDA1.GT.IREF(1,JT).AND.KDA1.LE.N) THEN
17392                     IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
17393                   ENDIF
17394                   IF(KDA2.GT.IREF(1,JT).AND.KDA2.LE.N) THEN
17395                     IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
17396                   ENDIF
17397                 ENDIF
17398   130         CONTINUE
17399             ELSE
17400               KDA=MOD(K(IREF(1,JT),4),MSTU(5))
17401               IF(MWID(PYCOMP(KFA)).NE.0.AND.KDA.GT.1) IREF(1,JT)=KDA
17402             ENDIF
17403           ENDIF
17404         ENDIF
17405   140 CONTINUE
17406  
17407 C...Set decay vertex for initial resonances
17408       DO 160 JT=1,JTMAX
17409         DO 150 I=1,4
17410           V(IREF(1,JT),I)=0D0
17411   150   CONTINUE
17412   160 CONTINUE
17413  
17414 C...Loop over decay history.
17415       NP=1
17416       IP=0
17417   170 IP=IP+1
17418       NINH=0
17419       JTMAX=2
17420       IF(IREF(IP,2).EQ.0) JTMAX=1
17421       IF(IREF(IP,3).NE.0) JTMAX=3
17422       IT4=0
17423       NSAV=N
17424  
17425 C...Check for Higgs which appears as decay product of user-process.
17426       IF(ISUB.EQ.0) THEN
17427         IHDEC=0
17428         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
17429      &  .EQ.36) IHDEC=1
17430         IF(IHDEC.EQ.1) ISUB=3
17431       ENDIF
17432  
17433 C...Start treatment of one, two or three resonances in parallel.
17434   180 N=NSAV
17435       DO 340 JT=1,JTMAX
17436         ID=IREF(IP,JT)
17437         KDCY(JT)=0
17438         KFL1(JT)=0
17439         KFL2(JT)=0
17440         KFL3(JT)=0
17441         KFL4(JT)=0
17442         KEQL(JT)=0
17443         NSD(JT)=ID
17444         ITJUNC(JT)=0
17445  
17446 C...Check whether particle can/is allowed to decay.
17447         IF(ID.EQ.0) GOTO 330
17448         KFA=IABS(K(ID,2))
17449         KCA=PYCOMP(KFA)
17450         IF(MWID(KCA).EQ.0) GOTO 330
17451         IF(K(ID,1).GT.10.OR.MDCY(KCA,1).EQ.0) GOTO 330
17452         IF(KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8.OR.KFA.EQ.17.OR.
17453      &  KFA.EQ.18) IT4=IT4+1
17454         K(ID,4)=MSTU(5)*(K(ID,4)/MSTU(5))
17455         K(ID,5)=MSTU(5)*(K(ID,5)/MSTU(5))
17456  
17457 C...Choose lifetime and determine decay vertex.
17458         IF(K(ID,1).EQ.5) THEN
17459           V(ID,5)=0D0
17460         ELSEIF(K(ID,1).NE.4) THEN
17461           V(ID,5)=-PMAS(KCA,4)*LOG(PYR(0))
17462         ENDIF
17463         DO 190 J=1,4
17464           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
17465   190   CONTINUE
17466  
17467 C...Determine whether decay allowed or not.
17468         MOUT=0
17469         IF(MSTJ(22).EQ.2) THEN
17470           IF(PMAS(KCA,4).GT.PARJ(71)) MOUT=1
17471         ELSEIF(MSTJ(22).EQ.3) THEN
17472           IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
17473         ELSEIF(MSTJ(22).EQ.4) THEN
17474           IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
17475           IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
17476         ENDIF
17477         IF(MOUT.EQ.1.AND.K(ID,1).NE.5) THEN
17478           K(ID,1)=4
17479           GOTO 330
17480         ENDIF
17481  
17482 C...Info for selection of decay channel: sign, pairings.
17483         IF(KCHG(KCA,3).EQ.0) THEN
17484           IPM=2
17485         ELSE
17486           IPM=(5-ISIGN(1,K(ID,2)))/2
17487         ENDIF
17488         KFB=0
17489         IF(JTMAX.EQ.2) THEN
17490           KFB=IABS(K(IREF(IP,3-JT),2))
17491         ELSEIF(JTMAX.EQ.3) THEN
17492           JT2=JT+1-3*(JT/3)
17493           KFB=IABS(K(IREF(IP,JT2),2))
17494           IF(KFB.NE.KFA) THEN
17495             JT2=JT+2-3*((JT+1)/3)
17496             KFB=IABS(K(IREF(IP,JT2),2))
17497           ENDIF
17498         ENDIF
17499  
17500 C...Select decay channel.
17501         IF(ISUB.EQ.1.OR.ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.
17502      &  ISUB.EQ.30.OR.ISUB.EQ.35.OR.ISUB.EQ.141) MINT(61)=1
17503         CALL PYWIDT(KFA,P(ID,5)**2,WDTP,WDTE)
17504         WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
17505         IF(KFB.EQ.KFA) WDTE0S=WDTE0S+WDTE(0,5)
17506         IF(WDTE0S.LE.0D0) GOTO 330
17507         RKFL=WDTE0S*PYR(0)
17508         IDL=0
17509   200   IDL=IDL+1
17510         IDC=IDL+MDCY(KCA,2)-1
17511         RKFL=RKFL-(WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4))
17512         IF(KFB.EQ.KFA) RKFL=RKFL-WDTE(IDL,5)
17513         IF(IDL.LT.MDCY(KCA,3).AND.RKFL.GT.0D0) GOTO 200
17514  
17515         NPROD=0
17516 C...Read out flavours and colour charges of decay channel chosen.
17517         KCQM(JT)=KCHG(KCA,2)*ISIGN(1,K(ID,2))
17518         IF(KCQM(JT).EQ.-2) KCQM(JT)=2
17519         KFL1(JT)=KFDP(IDC,1)*ISIGN(1,K(ID,2))
17520         KFC1A=PYCOMP(IABS(KFL1(JT)))
17521         IF(KCHG(KFC1A,3).EQ.0) KFL1(JT)=IABS(KFL1(JT))
17522         NPROD=NPROD+1
17523         KCQ1(JT)=KCHG(KFC1A,2)*ISIGN(1,KFL1(JT))
17524         IF(KCQ1(JT).EQ.-2) KCQ1(JT)=2
17525         KFL2(JT)=KFDP(IDC,2)*ISIGN(1,K(ID,2))
17526         KFC2A=PYCOMP(IABS(KFL2(JT)))
17527         IF(KCHG(KFC2A,3).EQ.0) KFL2(JT)=IABS(KFL2(JT))
17528         KCQ2(JT)=KCHG(KFC2A,2)*ISIGN(1,KFL2(JT))
17529         IF(KCQ2(JT).EQ.-2) KCQ2(JT)=2
17530         NPROD=NPROD+1
17531         KFL3(JT)=KFDP(IDC,3)*ISIGN(1,K(ID,2))
17532         KCQ3(JT)=0
17533         KFL4(JT)=KFDP(IDC,4)*ISIGN(1,K(ID,2))
17534         KCQ4(JT)=0        
17535         IF(KFL3(JT).NE.0) THEN
17536           KFC3A=PYCOMP(IABS(KFL3(JT)))
17537           IF(KCHG(KFC3A,3).EQ.0) KFL3(JT)=IABS(KFL3(JT))
17538           KCQ3(JT)=KCHG(KFC3A,2)*ISIGN(1,KFL3(JT))
17539           IF(KCQ3(JT).EQ.-2) KCQ3(JT)=2
17540           NPROD=NPROD+1
17541           IF(KFL4(JT).NE.0) THEN
17542             KFC4A=PYCOMP(IABS(KFL4(JT)))
17543             IF(KCHG(KFC4A,3).EQ.0) KFL4(JT)=IABS(KFL4(JT))
17544             KCQ4(JT)=KCHG(KFC4A,2)*ISIGN(1,KFL4(JT))
17545             IF(KCQ4(JT).EQ.-2) KCQ4(JT)=2
17546             NPROD=NPROD+1
17547           ENDIF
17548         ENDIF
17549  
17550 C...Set/save further info on channel.
17551         KDCY(JT)=1
17552         IF(KFB.EQ.KFA) KEQL(JT)=MDME(IDC,1)
17553         NSD(JT)=N
17554         HGZ(JT,1)=VINT(111)
17555         HGZ(JT,2)=VINT(112)
17556         HGZ(JT,3)=VINT(114)
17557         JTZ=JT
17558  
17559         PXSUM=0D0
17560 C...Select masses; to begin with assume resonances narrow.
17561         DO 220 I=1,4
17562           P(N+I,5)=0D0
17563           PMMN(I)=0D0
17564           IF(I.EQ.1) THEN
17565             KFLW=IABS(KFL1(JT))
17566             KCW=KFC1A
17567           ELSEIF(I.EQ.2) THEN
17568             KFLW=IABS(KFL2(JT))
17569             KCW=KFC2A
17570           ELSEIF(I.EQ.3) THEN
17571             IF(KFL3(JT).EQ.0) GOTO 220
17572             KFLW=IABS(KFL3(JT))
17573             KCW=KFC3A
17574           ELSEIF(I.EQ.4) THEN
17575             IF(KFL4(JT).EQ.0) GOTO 220
17576             KFLW=IABS(KFL4(JT))
17577             KCW=KFC4A
17578           ENDIF
17579           P(N+I,5)=PMAS(KCW,1)
17580           PXSUM=PXSUM+P(N+I,5)
17581 CMRENNA++
17582 C...This prevents SUSY/t particles from becoming too light.
17583           IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
17584             PMMN(I)=PMAS(KCW,1)
17585             DO 210 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
17586               IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
17587                 PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
17588      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
17589                 IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
17590      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
17591                 IF(KFDP(IDC,4).NE.0) PMSUM=PMSUM+
17592      &              PMAS(PYCOMP(KFDP(IDC,4)),1)
17593                 PMMN(I)=MIN(PMMN(I),PMSUM)
17594               ENDIF
17595  210        CONTINUE
17596 C   MRENNA--
17597           ELSEIF(KFLW.EQ.6) THEN
17598             PMMN(I)=PMAS(24,1)+PMAS(5,1)
17599           ENDIF
17600 C...UED: select a graviton mass from continuous distribution
17601 C...(stored in PMAS(39,1) so no value returned)
17602           IF (IUED(1).EQ.1.AND.IUED(2).EQ.1.AND.KFLW.EQ.39) 
17603      &         CALL PYGRAM(1)
17604  220    CONTINUE
17605         
17606 C...Check which two out of three are widest.
17607         IWID1=1
17608         IWID2=2
17609         PWID1=PMAS(KFC1A,2)
17610         PWID2=PMAS(KFC2A,2)
17611         KFLW1=IABS(KFL1(JT))
17612         KFLW2=IABS(KFL2(JT))
17613         IF(KFL3(JT).NE.0) THEN
17614           PWID3=PMAS(KFC3A,2)
17615           IF(PWID3.GT.PWID1.AND.PWID2.GE.PWID1) THEN
17616             IWID1=3
17617             PWID1=PWID3
17618             KFLW1=IABS(KFL3(JT))
17619           ELSEIF(PWID3.GT.PWID2) THEN
17620             IWID2=3
17621             PWID2=PWID3
17622             KFLW2=IABS(KFL3(JT))
17623           ENDIF
17624         ENDIF
17625         IF(KFL4(JT).NE.0) THEN
17626           PWID4=PMAS(KFC4A,2)
17627           IF(PWID4.GT.PWID1.AND.PWID2.GE.PWID1) THEN
17628             IWID1=4
17629             PWID1=PWID4
17630             KFLW1=IABS(KFL4(JT))
17631           ELSEIF(PWID4.GT.PWID2) THEN
17632             IWID2=4
17633             PWID2=PWID4
17634             KFLW2=IABS(KFL4(JT))
17635           ENDIF
17636         ENDIF
17637  
17638 C...If all narrow then only check that masses consistent.
17639         IF(MSTP(42).LE.0.OR.(PWID1.LT.PARP(41).AND.
17640      &  PWID2.LT.PARP(41))) THEN
17641 CMRENNA++
17642 C....Handle near degeneracy cases.
17643           IF(KFA/KSUSY1.EQ.1.OR.KFA/KSUSY1.EQ.2) THEN
17644             IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
17645               P(N+1,5)=P(ID,5)-P(N+2,5)-0.5D0
17646               IF(P(N+1,5).LT.0D0) P(N+1,5)=0D0
17647             ENDIF
17648           ENDIF
17649 CMRENNA--
17650           IF(PXSUM.GT.P(ID,5)) THEN
17651             CALL PYERRM(13,'(PYRESD:) daughter masses too large')
17652             MINT(51)=1
17653             GOTO 720
17654           ELSEIF(PXSUM+PARJ(64).GT.P(ID,5)) THEN
17655             CALL PYERRM(3,'(PYRESD:) masses+PARJ(64) too large')
17656             MINT(51)=1
17657             GOTO 720
17658           ENDIF
17659  
17660 C...For three wide resonances select narrower of three
17661 C...according to BW decoupled from rest.
17662         ELSE
17663           PMTOT=P(ID,5)
17664           IF(KFL3(JT).NE.0) THEN
17665             IWID3=6-IWID1-IWID2
17666             KFLW3=IABS(KFL1(JT))+IABS(KFL2(JT))+IABS(KFL3(JT))-
17667      &      KFLW1-KFLW2
17668             LOOP=0
17669   230       LOOP=LOOP+1
17670             P(N+IWID3,5)=PYMASS(KFLW3)
17671             IF(LOOP.LE.10.AND. P(N+IWID3,5).LE.PMMN(IWID3)) GOTO 230
17672             PMTOT=PMTOT-P(N+IWID3,5)
17673           ENDIF
17674 C...Select other two correlated within remaining phase space.
17675           IF(IP.EQ.1) THEN
17676             CKIN45=CKIN(45)
17677             CKIN47=CKIN(47)
17678             CKIN(45)=MAX(PMMN(IWID1),CKIN(45))
17679             CKIN(47)=MAX(PMMN(IWID2),CKIN(47))
17680             CALL PYOFSH(2,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
17681      &      P(N+IWID2,5))
17682             CKIN(45)=CKIN45
17683             CKIN(47)=CKIN47
17684           ELSE
17685             CKIN(49)=PMMN(IWID1)
17686             CKIN(50)=PMMN(IWID2)
17687             CALL PYOFSH(5,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
17688      &      P(N+IWID2,5))
17689             CKIN(49)=0D0
17690             CKIN(50)=0D0
17691           ENDIF
17692           IF(MINT(51).EQ.1) GOTO 720
17693         ENDIF
17694  
17695 C...Begin fill decay products, with colour flow for coloured objects.
17696         MSTU10=MSTU(10)
17697         MSTU(10)=1
17698         MSTU(19)=1
17699 
17700 
17701 C...Three-body decays 
17702         IF(KFL3(JT).NE.0.OR.KFL4(JT).NE.0) THEN
17703           DO 250 I=N+1,N+NPROD
17704             DO 240 J=1,5
17705               K(I,J)=0
17706               V(I,J)=0D0
17707   240       CONTINUE
17708             MCT(I,1)=0
17709             MCT(I,2)=0
17710   250     CONTINUE
17711           K(N+1,1)=1
17712           K(N+1,2)=KFL1(JT)
17713           K(N+2,1)=1
17714           K(N+2,2)=KFL2(JT)
17715           K(N+3,1)=1
17716           K(N+3,2)=KFL3(JT)
17717           IF(KFL4(JT).NE.0) THEN
17718             K(N+4,1)=1
17719             K(N+4,2)=KFL4(JT)
17720           ENDIF
17721           IDIN=ID
17722 
17723 C...Generate kinematics (default is flat)
17724           IF(KFL4(JT).EQ.0) THEN
17725             CALL PYTBDY(IDIN)
17726           ELSE
17727             PS=P(N+1,5)+P(N+2,5)+P(N+3,5)+P(N+4,5)
17728             ND=4
17729             PV(1,1)=0D0
17730             PV(1,2)=0D0
17731             PV(1,3)=0D0
17732             PV(1,4)=P(IDIN,5)
17733             PV(1,5)=P(IDIN,5)
17734 C...Calculate maximum weight ND-particle decay.
17735             PV(ND,5)=P(N+ND,5)
17736             WTMAX=1D0/WTCOR(ND-2)
17737             PMAX=PV(1,5)-PS+P(N+ND,5)
17738             PMIN=0D0
17739             DO 381 IL=ND-1,1,-1
17740               PMAX=PMAX+P(N+IL,5)
17741               PMIN=PMIN+P(N+IL+1,5)
17742               WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5))
17743  381        CONTINUE
17744 
17745 C...M-generator gives weight. If rejected, try again.
17746 
17747  411        RORD(1)=1D0
17748             DO 441 IL1=2,ND-1
17749               RSAV=PYR(0)
17750               DO 421 IL2=IL1-1,1,-1
17751                 IF(RSAV.LE.RORD(IL2)) GOTO 431
17752                 RORD(IL2+1)=RORD(IL2)
17753  421          CONTINUE
17754  431          RORD(IL2+1)=RSAV
17755  441        CONTINUE
17756             RORD(ND)=0D0
17757             WT=1D0
17758             DO 451 IL=ND-1,1,-1
17759               PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*
17760      &             (PV(1,5)-PS)
17761               WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
17762  451        CONTINUE
17763             IF(WT.LT.PYR(0)*WTMAX) GOTO 411
17764 
17765 C...Perform two-particle decays in respective CM frame.
17766             DO 481 IL=1,ND-1
17767               PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
17768               UE(3)=2D0*PYR(0)-1D0
17769               PHIX=PARU(2)*PYR(0)
17770               UE(1)=SQRT(1D0-UE(3)**2)*COS(PHIX)
17771               UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHIX)
17772               DO 471 J=1,3
17773                 P(N+IL,J)=PA*UE(J)
17774                 PV(IL+1,J)=-PA*UE(J)
17775  471          CONTINUE
17776               P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2)
17777               PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2)
17778  481        CONTINUE
17779 
17780 C...Lorentz transform decay products to lab frame.
17781             DO 491 J=1,4
17782               P(N+ND,J)=PV(ND,J)
17783  491        CONTINUE
17784             DO 531 IL=ND-1,1,-1
17785               DO 501 J=1,3
17786                 BE(J)=PV(IL,J)/PV(IL,4)
17787  501          CONTINUE
17788               GA=PV(IL,4)/PV(IL,5)
17789               DO 521 I=N+IL,N+ND
17790                 BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
17791                 DO 511 J=1,3
17792                   P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
17793  511            CONTINUE
17794                 P(I,4)=GA*(P(I,4)+BEP)
17795  521          CONTINUE
17796  531        CONTINUE
17797 
17798           ENDIF
17799 
17800 C...Set generic colour flows whenever unambiguous,
17801 C...(independently of the order of the decay products)
17802 C...Sum up total colour content
17803           NANT=0
17804           NTRI=0
17805           NOCT=0
17806           KCQ(0)=KCQM(JT)
17807           KCQ(1)=KCQ1(JT)
17808           KCQ(2)=KCQ2(JT)
17809           KCQ(3)=KCQ3(JT)
17810           KCQ(4)=KCQ4(JT)
17811           DO 255 J=0,NPROD
17812             IF (KCQ(J).EQ.-1) THEN
17813               NANT=NANT+1
17814               IANT(NANT)=N+J
17815             ELSEIF (KCQ(J).EQ.1) THEN
17816               NTRI=NTRI+1              
17817               ITRI(NTRI)=N+J
17818             ELSEIF (KCQ(J).EQ.2) THEN 
17819               NOCT=NOCT+1
17820               IOCT(NOCT)=N+J
17821             ENDIF
17822  255      CONTINUE
17823           
17824 C...Set color flow for generic 1 -> N processes (N arbitrary)
17825           IF (NTRI.EQ.0.AND.NANT.EQ.0.AND.NOCT.EQ.0) THEN
17826 C...All singlets: do nothing
17827             
17828           ELSEIF (NOCT.EQ.2.AND.NTRI.EQ.0.AND.NANT.EQ.0) THEN
17829 C...Two octets, zero triplets, n singlets:
17830             IF (KCQ(0).EQ.2) THEN
17831 C...8 -> 8 + n(1) 
17832               K(ID,4)=K(ID,4)+IOCT(2)
17833               K(ID,5)=K(ID,5)+IOCT(2)
17834               K(IOCT(2),1)=3
17835               K(IOCT(2),4)=MSTU(5)*ID
17836               K(IOCT(2),5)=MSTU(5)*ID
17837               MCT(IOCT(2),1)=MCT(ID,1)
17838               MCT(IOCT(2),2)=MCT(ID,2)
17839             ELSE
17840 C...1 -> 8 + 8 + n(1)
17841               K(IOCT(1),1)=3
17842               K(IOCT(1),4)=MSTU(5)*IOCT(2)
17843               K(IOCT(1),5)=MSTU(5)*IOCT(2)
17844               K(IOCT(2),1)=3
17845               K(IOCT(2),4)=MSTU(5)*IOCT(1)
17846               K(IOCT(2),5)=MSTU(5)*IOCT(1)
17847               NCT=NCT+1
17848               MCT(IOCT(1),1)=NCT
17849               MCT(IOCT(2),2)=NCT
17850               NCT=NCT+1
17851               MCT(IOCT(2),1)=NCT
17852               MCT(IOCT(1),2)=NCT
17853             ENDIF
17854             
17855           ELSEIF (NTRI+NANT.EQ.2.AND.NOCT.EQ.0) THEN
17856 C...Two triplets, zero octets, n singlets.            
17857             IF (KCQ(0).EQ.1) THEN
17858 C...3 -> 3 + n(1)
17859               K(ID,4)=K(ID,4)+ITRI(2)
17860               K(ITRI(2),1)=3
17861               K(ITRI(2),4)=MSTU(5)*ID
17862               MCT(ITRI(2),1)=MCT(ID,1)
17863             ELSEIF (KCQ(0).EQ.-1) THEN
17864 C...3bar -> 3bar + n(1)              
17865               K(ID,5)=K(ID,5)+IANT(2)
17866               K(IANT(2),1)=3
17867               K(IANT(2),5)=MSTU(5)*ID
17868               MCT(IANT(2),2)=MCT(ID,2)
17869             ELSE
17870 C...1 -> 3 + 3bar + n(1)
17871               K(ITRI(1),1)=3
17872               K(ITRI(1),4)=MSTU(5)*IANT(1)
17873               K(IANT(1),1)=3
17874               K(IANT(1),5)=MSTU(5)*ITRI(1)
17875               NCT=NCT+1
17876               MCT(ITRI(1),1)=NCT
17877               MCT(IANT(1),2)=NCT
17878             ENDIF
17879             
17880           ELSEIF(NTRI+NANT.EQ.2.AND.NOCT.EQ.1) THEN
17881 C...Two triplets, one octet, n singlets.            
17882             IF (KCQ(0).EQ.2) THEN
17883 C...8 -> 3 + 3bar + n(1)
17884               K(ID,4)=K(ID,4)+ITRI(1)
17885               K(ID,5)=K(ID,5)+IANT(1)
17886               K(ITRI(1),1)=3
17887               K(ITRI(1),4)=MSTU(5)*ID
17888               K(IANT(1),1)=3
17889               K(IANT(1),5)=MSTU(5)*ID
17890               MCT(ITRI(1),1)=MCT(ID,1)
17891               MCT(IANT(1),2)=MCT(ID,2)
17892             ELSEIF (KCQ(0).EQ.1) THEN
17893 C...3 -> 8 + 3 + n(1)
17894               K(ID,4)=K(ID,4)+IOCT(1)
17895               K(IOCT(1),1)=3
17896               K(IOCT(1),4)=MSTU(5)*ID
17897               K(IOCT(1),5)=MSTU(5)*ITRI(2)
17898               K(ITRI(2),1)=3
17899               K(ITRI(2),4)=MSTU(5)*IOCT(1)
17900               MCT(IOCT(1),1)=MCT(ID,1)
17901               NCT=NCT+1
17902               MCT(IOCT(1),2)=NCT
17903               MCT(ITRI(2),1)=NCT
17904             ELSEIF (KCQ(0).EQ.-1) THEN
17905 C...3bar -> 8 + 3bar + n(1)
17906               K(ID,5)=K(ID,5)+IOCT(1)
17907               K(IOCT(1),1)=3
17908               K(IOCT(1),5)=MSTU(5)*ID
17909               K(IOCT(1),4)=MSTU(5)*IANT(2)
17910               K(IANT(2),1)=3
17911               K(IANT(2),5)=MSTU(5)*IOCT(1)
17912               MCT(IOCT(1),2)=MCT(ID,2)
17913               NCT=NCT+1
17914               MCT(IOCT(1),1)=NCT
17915               MCT(IANT(2),2)=NCT
17916             ELSE
17917 C...1 -> 3 + 3bar + 8 + n(1)
17918               K(ITRI(1),1)=3
17919               K(ITRI(1),4)=MSTU(5)*IOCT(1)
17920               K(IOCT(1),1)=3
17921               K(IOCT(1),5)=MSTU(5)*ITRI(1)
17922               K(IOCT(1),4)=MSTU(5)*IANT(1)
17923               K(IANT(1),1)=3
17924               K(IANT(1),5)=MSTU(5)*IOCT(1)
17925               NCT=NCT+1
17926               MCT(ITRI(1),1)=NCT
17927               MCT(IOCT(1),2)=NCT
17928               NCT=NCT+1
17929               MCT(IOCT(1),1)=NCT
17930               MCT(IANT(1),2)=NCT
17931             ENDIF
17932          ELSEIF(NTRI+NANT.EQ.4) THEN
17933 C...
17934             IF (KCQ(0).EQ.1) THEN
17935 C...3 -> 3 + n(1) -> 3 + 3bar
17936               K(ID,4)=K(ID,4)+ITRI(2)
17937               K(ITRI(2),1)=3
17938               K(ITRI(2),4)=MSTU(5)*ID
17939               MCT(ITRI(2),1)=MCT(ID,1)
17940               K(ITRI(3),1)=3
17941               K(ITRI(3),4)=MSTU(5)*IANT(1)
17942               K(IANT(1),1)=3
17943               K(IANT(1),5)=MSTU(5)*ITRI(3)
17944               NCT=NCT+1
17945               MCT(ITRI(3),1)=NCT
17946               MCT(IANT(1),2)=NCT
17947             ELSEIF (KCQ(0).EQ.-1) THEN
17948 C...3bar -> 3bar + n(1) -> 3 + 3bar             
17949               K(ID,5)=K(ID,5)+IANT(2)
17950               K(IANT(2),1)=3
17951               K(IANT(2),5)=MSTU(5)*ID
17952               MCT(IANT(2),2)=MCT(ID,2)
17953               K(ITRI(1),1)=3
17954               K(ITRI(1),4)=MSTU(5)*IANT(3)
17955               K(IANT(3),1)=3
17956               K(IANT(3),5)=MSTU(5)*ITRI(1)
17957               NCT=NCT+1
17958               MCT(ITRI(1),1)=NCT
17959               MCT(IANT(3),2)=NCT
17960             ENDIF
17961           ELSEIF(KFL4(JT).NE.0) THEN
17962             CALL PYERRM(21,'(PYRESD:) unknown 4-bdy decay')
17963 CPS-- End of generic cases 
17964 C...(could three octets also be handled?)
17965 C...(could (some of) the RPV cases be made generic as well?)
17966 
17967 C...Special cases (= old treatment)
17968 C...Set colour flow for t -> W + b + Z.
17969           ELSEIF(KFA.EQ.6) THEN
17970             K(N+2,1)=3
17971             ISID=4
17972             IF(KCQM(JT).EQ.-1) ISID=5
17973             IDAU=N+2
17974             K(ID,ISID)=K(ID,ISID)+IDAU
17975             K(IDAU,ISID)=MSTU(5)*ID
17976  
17977 C...Set colour flow in three-body decays - programmed as special cases.
17978  
17979           ELSEIF(KFC2A.LE.6) THEN
17980             K(N+2,1)=3
17981             K(N+3,1)=3
17982             ISID=4
17983             IF(KFL2(JT).LT.0) ISID=5
17984             K(N+2,ISID)=MSTU(5)*(N+3)
17985             K(N+3,9-ISID)=MSTU(5)*(N+2)
17986 C...PS++: Bugfix 16 MAR 2006 for 3-body squark decays (e.g. via SLHA)
17987           ELSEIF(KFA.GT.KSUSY1.AND.MOD(KFA,KSUSY1).LT.10
17988      &          .AND.KFL3(JT).NE.0) THEN
17989             KQSUMA=IABS(KCQ1(JT))+IABS(KCQ2(JT))+IABS(KCQ3(JT))
17990 C...3-body decays of squarks to colour singlets plus one quark
17991             IF (KQSUMA.EQ.1) THEN
17992 C...Find quark
17993               IQ=0
17994               IF (KCQ1(JT).NE.0) IQ=1
17995               IF (KCQ2(JT).NE.0) IQ=2
17996               IF (KCQ3(JT).NE.0) IQ=3
17997               ISID=4
17998               IF (K(N+IQ,2).LT.0) ISID=5
17999               K(N+IQ,1)=3
18000               K(ID,ISID)=K(ID,ISID)+(N+IQ)
18001               K(N+IQ,ISID)=MSTU(5)*ID
18002             ENDIF
18003 C...PS--
18004           ELSEIF(KFL1(JT).EQ.KSUSY1+21) THEN
18005             K(N+1,1)=3
18006             K(N+2,1)=3
18007             K(N+3,1)=3
18008             ISID=4
18009             IF(KFL2(JT).LT.0) ISID=5
18010             K(N+1,ISID)=MSTU(5)*(N+2)
18011             K(N+1,9-ISID)=MSTU(5)*(N+3)
18012             K(N+2,ISID)=MSTU(5)*(N+1)
18013             K(N+3,9-ISID)=MSTU(5)*(N+1)
18014           ELSEIF(KFA.EQ.KSUSY1+21) THEN
18015             K(N+2,1)=3
18016             K(N+3,1)=3
18017             ISID=4
18018             IF(KFL2(JT).LT.0) ISID=5
18019             K(ID,ISID)=K(ID,ISID)+(N+2)
18020             K(ID,9-ISID)=K(ID,9-ISID)+(N+3)
18021             K(N+2,ISID)=MSTU(5)*ID
18022             K(N+3,9-ISID)=MSTU(5)*ID
18023 CMRENNA--
18024  
18025           ELSEIF(KFA.GE.KSUSY1+22.AND.KFA.LE.KSUSY1+37.AND.
18026      &    IABS(KCQ2(JT)).EQ.1) THEN
18027             K(N+2,1)=3
18028             K(N+3,1)=3
18029             ISID=4
18030             IF(KFL2(JT).LT.0) ISID=5
18031             K(N+2,ISID)=MSTU(5)*(N+3)
18032             K(N+3,9-ISID)=MSTU(5)*(N+2)
18033           ENDIF
18034            
18035           NSAV=N
18036           
18037 C...Set colour flow in three-body decays with baryon number violation.
18038 C...Neutralino and chargino decays first.
18039           KCQSUM=KCQ1(JT)+KCQ2(JT)+KCQ3(JT)
18040           IF(KCQM(JT).EQ.0.AND.IABS(KCQSUM).EQ.3) THEN
18041             ITJUNC(JT)=(1+(1-KCQ1(JT))/2)
18042             K(N+4,4)=ITJUNC(JT)*MSTU(5)
18043 C...Insert junction to keep track of colours.
18044             IF(KCQ1(JT).NE.0) K(N+1,1)=3
18045             IF(KCQ2(JT).NE.0) K(N+2,1)=3
18046             IF(KCQ3(JT).NE.0) K(N+3,1)=3
18047 C...Set special junction codes:
18048             K(N+4,1)=42
18049             K(N+4,2)=88
18050  
18051 C...Order decay products by invariant mass. (will be used in PYSTRF).
18052             PM12=P(N+1,4)*P(N+2,4)-P(N+1,1)*P(N+2,1)-P(N+1,2)*P(N+2,2)-
18053      &      P(N+1,3)*P(N+2,3)
18054             PM13=P(N+1,4)*P(N+3,4)-P(N+1,1)*P(N+3,1)-P(N+1,2)*P(N+3,2)-
18055      &      P(N+1,3)*P(N+3,3)
18056             PM23=P(N+2,4)*P(N+3,4)-P(N+2,1)*P(N+3,1)-P(N+2,2)*P(N+3,2)-
18057      &      P(N+2,3)*P(N+3,3)
18058             IF(PM12.LT.PM13.AND.PM12.LT.PM23) THEN
18059               K(N+4,4)=N+3+K(N+4,4)
18060               K(N+4,5)=N+1+MSTU(5)*(N+2)
18061             ELSEIF(PM13.LT.PM23) THEN
18062               K(N+4,4)=N+2+K(N+4,4)
18063               K(N+4,5)=N+1+MSTU(5)*(N+3)
18064             ELSE
18065               K(N+4,4)=N+1+K(N+4,4)
18066               K(N+4,5)=N+2+MSTU(5)*(N+3)
18067             ENDIF
18068             DO 260 J=1,5
18069               P(N+4,J)=0D0
18070               V(N+4,J)=0D0
18071   260       CONTINUE
18072 C...Connect daughters to junction.
18073             DO 270 II=N+1,N+3
18074               K(II,4)=0
18075               K(II,5)=0
18076               K(II,ITJUNC(JT)+3)=MSTU(5)*(N+4)
18077   270       CONTINUE
18078 C...Particle counter should be stepped up one extra for junction.
18079             N=N+1
18080  
18081 C...Gluino decays.
18082           ELSEIF (KCQM(JT).EQ.2.AND.IABS(KCQSUM).EQ.3) THEN
18083             ITJUNC(JT)=(5+(1-KCQ1(JT))/2)
18084             K(N+4,4)=ITJUNC(JT)*MSTU(5)
18085 C...Insert junction to keep track of colours.
18086             IF(KCQ1(JT).NE.0) K(N+1,1)=3
18087             IF(KCQ2(JT).NE.0) K(N+2,1)=3
18088             IF(KCQ3(JT).NE.0) K(N+3,1)=3
18089             K(N+4,1)=42
18090             K(N+4,2)=88
18091             DO 280 J=1,5
18092               P(N+4,J)=0D0
18093               V(N+4,J)=0D0
18094   280       CONTINUE
18095             CTMSUM=0D0
18096             DO 290 II=N+1,N+3
18097               K(II,4)=0
18098               K(II,5)=0
18099 C...Start by connecting all daughters to junction.
18100               K(II,ITJUNC(JT)-1)=MSTU(5)*(N+4)
18101 C...Only consider colour topologies with off shell resonances.
18102               RMQ1=PMAS(PYCOMP(K(II,2)),1)
18103               RMRES=PMAS(PYCOMP(KSUSY1+IABS(K(II,2))),1)
18104               RMGLU=PMAS(PYCOMP(KSUSY1+21),1)
18105               IF (RMGLU-RMQ1.LT.RMRES) THEN
18106 C...Calculate propagators for each colour topology.
18107                 RM2Q23=RMGLU**2+RMQ1**2-2D0*(P(II,4)*P(ID,4)+P(II,1)
18108      &               *P(ID,1)+P(II,2)*P(ID,2)+P(II,3)*P(ID,3))
18109                 CTM2(II-N)=1D0/(RM2Q23-RMRES**2)**2
18110               ELSE
18111                 CTM2(II-N)=0D0
18112               ENDIF
18113               CTMSUM=CTMSUM+CTM2(II-N)
18114   290       CONTINUE
18115             CTMSUM=PYR(0)*CTMSUM
18116 C...Select colour topology J, with most off shell least likely.
18117             J=0
18118   300       J=J+1
18119             CTMSUM=CTMSUM-CTM2(J)
18120             IF (CTMSUM.GT.0D0) GOTO 300
18121 C...The lucky winner gets its colour (anti-colour) directly from gluino.
18122             K(N+J,ITJUNC(JT)-1)=MSTU(5)*ID
18123             K(ID,ITJUNC(JT)-1)=N+J+(K(ID,ITJUNC(JT)-1)/MSTU(5))*MSTU(5)
18124 C...The other gluino colour is connected to junction
18125             K(ID,10-ITJUNC(JT))=N+4+(K(ID,10-ITJUNC(JT))/MSTU(5))*
18126      &      MSTU(5)
18127             K(N+4,4)=K(N+4,4)+ID
18128 C...Lastly, connect junction to remaining daughters.
18129             K(N+4,5)=N+1+MOD(J,3)+MSTU(5)*(N+1+MOD(J+1,3))
18130 C...Particle counter should be stepped up one extra for junction.
18131             N=N+1
18132           ENDIF
18133  
18134 C...Update particle counter.
18135           N=N+NPROD
18136 
18137 C...2) Everything else two-body decay.
18138         ELSE
18139           CALL PY2ENT(N+1,KFL1(JT),KFL2(JT),P(ID,5))
18140           MCT(N-1,1)=0
18141           MCT(N-1,2)=0
18142           MCT(N,1)=0
18143           MCT(N,2)=0
18144 C...First set colour flow as if mother colour singlet.
18145           IF(KCQ1(JT).NE.0) THEN
18146             K(N-1,1)=3
18147             IF(KCQ1(JT).NE.-1) K(N-1,4)=MSTU(5)*N
18148             IF(KCQ1(JT).NE.1) K(N-1,5)=MSTU(5)*N
18149           ENDIF
18150           IF(KCQ2(JT).NE.0) THEN
18151             K(N,1)=3
18152             IF(KCQ2(JT).NE.-1) K(N,4)=MSTU(5)*(N-1)
18153             IF(KCQ2(JT).NE.1) K(N,5)=MSTU(5)*(N-1)
18154           ENDIF
18155 C...Then redirect colour flow if mother (anti)triplet.
18156           IF(KCQM(JT).EQ.0) THEN
18157           ELSEIF(KCQM(JT).NE.2) THEN
18158             ISID=4
18159             IF(KCQM(JT).EQ.-1) ISID=5
18160             IDAU=N-1
18161             IF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.2) IDAU=N
18162             K(ID,ISID)=K(ID,ISID)+IDAU
18163             K(IDAU,ISID)=MSTU(5)*ID
18164 C...Then redirect colour flow if mother octet.
18165           ELSEIF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.0) THEN
18166             IDAU=N-1
18167             IF(KCQ1(JT).EQ.0) IDAU=N
18168             K(ID,4)=K(ID,4)+IDAU
18169             K(ID,5)=K(ID,5)+IDAU
18170             K(IDAU,4)=MSTU(5)*ID
18171             K(IDAU,5)=MSTU(5)*ID
18172           ELSE
18173             ISID=4
18174             IF(KCQ1(JT).EQ.-1) ISID=5
18175             IF(KCQ1(JT).EQ.2) ISID=INT(4.5D0+PYR(0))
18176             K(ID,ISID)=K(ID,ISID)+(N-1)
18177             K(ID,9-ISID)=K(ID,9-ISID)+N
18178             K(N-1,ISID)=MSTU(5)*ID
18179             K(N,9-ISID)=MSTU(5)*ID
18180           ENDIF
18181  
18182 C...Insert junction
18183           IF(IABS(KCQ1(JT)+KCQ2(JT)-KCQM(JT)).EQ.3) THEN
18184             N=N+1
18185 C...~q* mother: type 3 junction. ~q mother: type 4.
18186             ITJUNC(JT)=(7+KCQM(JT))/2
18187 C...Specify junction KF and set colour flow from junction
18188             K(N,1)=42
18189             K(N,2)=88
18190             K(N,3)=ID
18191 C...Junction type encoded together with mother:
18192             K(N,4)=ID+ITJUNC(JT)*MSTU(5)
18193             K(N,5)=N-1+MSTU(5)*(N-2)
18194 C...Zero P and V for junction (V filled later)
18195             DO 310 J=1,5
18196               P(N,J)=0D0
18197               V(N,J)=0D0
18198   310       CONTINUE
18199 C...Set colour flow from mother to junction
18200             K(ID,8-ITJUNC(JT))= N + MSTU(5)*(K(ID,8-ITJUNC(JT))/MSTU(5))
18201 C...Set colour flow from daughters to junction
18202             DO 320 II=N-2,N-1
18203               K(II,4) = 0
18204               K(II,5) = 0
18205 C...(Anti-)colour mother is junction.
18206               K(II,1+ITJUNC(JT)) = MSTU(5)*N
18207   320       CONTINUE
18208           ENDIF
18209         ENDIF
18210  
18211 C...End loop over resonances for daughter flavour and mass selection.
18212         MSTU(10)=MSTU10
18213   330   IF(MWID(KCA).NE.0.AND.(KFL1(JT).EQ.0.OR.KFL3(JT).NE.0))
18214      &  NINH=NINH+1
18215         IF(IRES.GT.0.AND.MWID(KCA).NE.0.AND.MDCY(KCA,1).NE.0.AND.
18216      &  KFL1(JT).EQ.0) THEN
18217           WRITE(CODE,'(I9)') K(ID,2)
18218           WRITE(MASS,'(F9.3)') P(ID,5)
18219           CALL PYERRM(3,'(PYRESD:) Failed to decay particle'//
18220      &    CODE//' with mass'//MASS)
18221           MINT(51)=1
18222           GOTO 720
18223         ENDIF
18224   340 CONTINUE
18225  
18226 C...Check for allowed combinations. Skip if no decays.
18227       IF(JTMAX.EQ.1) THEN
18228         IF(KDCY(1).EQ.0) GOTO 710
18229       ELSEIF(JTMAX.EQ.2) THEN
18230         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0) GOTO 710
18231         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 180
18232         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 180
18233       ELSEIF(JTMAX.EQ.3) THEN
18234         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0.AND.KDCY(3).EQ.0) GOTO 710
18235         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 180
18236         IF(KEQL(1).EQ.4.AND.KEQL(3).EQ.4) GOTO 180
18237         IF(KEQL(2).EQ.4.AND.KEQL(3).EQ.4) GOTO 180
18238         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 180
18239         IF(KEQL(1).EQ.5.AND.KEQL(3).EQ.5) GOTO 180
18240         IF(KEQL(2).EQ.5.AND.KEQL(3).EQ.5) GOTO 180
18241       ENDIF
18242  
18243 C...Special case: matrix element option for Z0 decay to quarks.
18244       IF(MSTP(48).EQ.1.AND.ISUB.EQ.1.AND.JTMAX.EQ.1.AND.
18245      &IABS(MINT(11)).EQ.11.AND.IABS(KFL1(1)).LE.5) THEN
18246  
18247 C...Check consistency of MSTJ options set.
18248         IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
18249           CALL PYERRM(6,
18250      &    '(PYRESD:) MSTJ(109) value requires MSTJ(110) = 1')
18251           MSTJ(110)=1
18252         ENDIF
18253         IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
18254           CALL PYERRM(6,
18255      &    '(PYRESD:) MSTJ(109) value requires MSTJ(111) = 0')
18256  
18257           MSTJ(111)=0
18258         ENDIF
18259  
18260 C...Select alpha_strong behaviour.
18261         MST111=MSTU(111)
18262         PAR112=PARU(112)
18263         MSTU(111)=MSTJ(108)
18264         IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
18265      &  MSTU(111)=1
18266         PARU(112)=PARJ(121)
18267         IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
18268  
18269 C...Find axial fraction in total cross section for scalar gluon model.
18270         PARJ(171)=0D0
18271         IF((IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.1).OR.
18272      &  (MSTJ(101).EQ.5.AND.MSTJ(49).EQ.1)) THEN
18273           POLL=1D0-PARJ(131)*PARJ(132)
18274           SFF=1D0/(16D0*XW*XW1)
18275           SFW=P(ID,5)**4/((P(ID,5)**2-PARJ(123)**2)**2+
18276      &    (PARJ(123)*PARJ(124))**2)
18277           SFI=SFW*(1D0-(PARJ(123)/P(ID,5))**2)
18278           VE=4D0*XW-1D0
18279           HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
18280           HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*
18281      &    (PARJ(132)-PARJ(131)))
18282           KFLC=IABS(KFL1(1))
18283           PMQ=PYMASS(KFLC)
18284           QF=KCHG(KFLC,1)/3D0
18285           VQ=1D0
18286           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,
18287      &    1D0-(2D0*PMQ/P(ID,5))**2))
18288           VF=SIGN(1D0,QF)-4D0*QF*XW
18289           RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+
18290      &    VF**2*HF1W)+VQ**3*HF1W
18291           IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
18292         ENDIF
18293  
18294 C...Choice of jet configuration.
18295         CALL PYXJET(P(ID,5),NJET,CUT)
18296         KFLC=IABS(KFL1(1))
18297         KFLN=21
18298         IF(NJET.EQ.4) THEN
18299           CALL PYX4JT(NJET,CUT,KFLC,P(ID,5),KFLN,X1,X2,X4,X12,X14)
18300         ELSEIF(NJET.EQ.3) THEN
18301           CALL PYX3JT(NJET,CUT,KFLC,P(ID,5),X1,X3)
18302         ELSE
18303           MSTJ(120)=1
18304         ENDIF
18305  
18306 C...Fill jet configuration; return if incorrect kinematics.
18307         NC=N-2
18308         IF(NJET.EQ.2.AND.MSTJ(101).NE.5) THEN
18309           CALL PY2ENT(NC+1,KFLC,-KFLC,P(ID,5))
18310         ELSEIF(NJET.EQ.2) THEN
18311           CALL PY2ENT(-(NC+1),KFLC,-KFLC,P(ID,5))
18312         ELSEIF(NJET.EQ.3) THEN
18313           CALL PY3ENT(NC+1,KFLC,21,-KFLC,P(ID,5),X1,X3)
18314         ELSEIF(KFLN.EQ.21) THEN
18315           CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
18316      &    X12,X14)
18317         ELSE
18318           CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
18319      &    X12,X14)
18320         ENDIF
18321         IF(MSTU(24).NE.0) THEN
18322           MINT(51)=1
18323           MSTU(111)=MST111
18324           PARU(112)=PAR112
18325           GOTO 720
18326         ENDIF
18327  
18328 C...Angular orientation according to matrix element.
18329         IF(MSTJ(106).EQ.1) THEN
18330           CALL PYXDIF(NC,NJET,KFLC,P(ID,5),CHIZ,THEZ,PHIZ)
18331           IF(MINT(11).LT.0) THEZ=PARU(1)-THEZ
18332           CTHE(1)=COS(THEZ)
18333           CALL PYROBO(NC+1,N,0D0,CHIZ,0D0,0D0,0D0)
18334           CALL PYROBO(NC+1,N,THEZ,PHIZ,0D0,0D0,0D0)
18335         ENDIF
18336  
18337 C...Boost partons to Z0 rest frame.
18338         CALL PYROBO(NC+1,N,0D0,0D0,P(ID,1)/P(ID,4),
18339      &  P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
18340  
18341 C...Mark decayed resonance and add documentation lines,
18342         K(ID,1)=K(ID,1)+10
18343         IDOC=MINT(83)+MINT(4)
18344         DO 360 I=NC+1,N
18345           I1=MINT(83)+MINT(4)+1
18346           K(I,3)=I1
18347           IF(MSTP(128).GE.1) K(I,3)=ID
18348           IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
18349             MINT(4)=MINT(4)+1
18350             K(I1,1)=21
18351             K(I1,2)=K(I,2)
18352             K(I1,3)=IREF(IP,4)
18353             DO 350 J=1,5
18354               P(I1,J)=P(I,J)
18355   350       CONTINUE
18356           ENDIF
18357   360   CONTINUE
18358  
18359 C...Generate parton shower.
18360         IF(MSTJ(101).EQ.5.AND.MINT(35).LE.1) THEN
18361           CALL PYSHOW(N-1,N,P(ID,5))
18362         ELSEIF(MSTJ(101).EQ.5.AND.MINT(35).GE.2) THEN
18363           NPART=2
18364           IPART(1)=N-1
18365           IPART(2)=N
18366           PTPART(1)=0.5D0*P(ID,5)
18367           PTPART(2)=PTPART(1)
18368           NCT=NCT+1
18369           IF(K(N-1,2).GT.0) THEN
18370             MCT(N-1,1)=NCT
18371             MCT(N,2)=NCT
18372           ELSE
18373             MCT(N-1,2)=NCT
18374             MCT(N,1)=NCT
18375           ENDIF
18376           CALL PYPTFS(2,0.5D0*P(ID,5),0D0,PTGEN)
18377         ENDIF
18378  
18379 C... End special case for Z0: skip ahead.
18380         MSTU(111)=MST111
18381         PARU(112)=PAR112
18382         GOTO 700
18383       ENDIF
18384  
18385 C...Order incoming partons and outgoing resonances.
18386       IF(JTMAX.EQ.2.AND.ISUB.NE.0.AND.MSTP(47).GE.1.AND.
18387      &NINH.EQ.0) THEN
18388         ILIN(1)=MINT(84)+1
18389         IF(K(MINT(84)+1,2).GT.0) ILIN(1)=MINT(84)+2
18390         IF(K(ILIN(1),2).EQ.21.OR.K(ILIN(1),2).EQ.22)
18391      &  ILIN(1)=2*MINT(84)+3-ILIN(1)
18392         ILIN(2)=2*MINT(84)+3-ILIN(1)
18393         IMIN=1
18394         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
18395      &  .EQ.36) IMIN=3
18396         IMAX=2
18397         IORD=1
18398         IF(K(IREF(IP,1),2).EQ.23) IORD=2
18399         IF(K(IREF(IP,1),2).EQ.24.AND.K(IREF(IP,2),2).EQ.-24) IORD=2
18400         IAKIPD=IABS(K(IREF(IP,IORD),2))
18401         IF(IAKIPD.EQ.25.OR.IAKIPD.EQ.35.OR.IAKIPD.EQ.36) IORD=3-IORD
18402         IF(KDCY(IORD).EQ.0) IORD=3-IORD
18403  
18404 C...Order decay products of resonances.
18405         DO 370 JT=IORD,3-IORD,3-2*IORD
18406           IF(KDCY(JT).EQ.0) THEN
18407             ILIN(IMAX+1)=NSD(JT)
18408             IMAX=IMAX+1
18409           ELSEIF(K(NSD(JT)+1,2).GT.0) THEN
18410             ILIN(IMAX+1)=N+2*JT-1
18411             ILIN(IMAX+2)=N+2*JT
18412             IMAX=IMAX+2
18413             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
18414             K(N+2*JT,2)=K(NSD(JT)+2,2)
18415           ELSE
18416             ILIN(IMAX+1)=N+2*JT
18417  
18418             ILIN(IMAX+2)=N+2*JT-1
18419             IMAX=IMAX+2
18420             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
18421             K(N+2*JT,2)=K(NSD(JT)+2,2)
18422           ENDIF
18423   370   CONTINUE
18424  
18425 C...Find charge, isospin, left- and righthanded couplings.
18426         DO 390 I=IMIN,IMAX
18427           DO 380 J=1,4
18428             COUP(I,J)=0D0
18429   380     CONTINUE
18430           KFA=IABS(K(ILIN(I),2))
18431           IF(KFA.EQ.0.OR.KFA.GT.20) GOTO 390
18432           COUP(I,1)=KCHG(KFA,1)/3D0
18433           COUP(I,2)=(-1)**MOD(KFA,2)
18434           COUP(I,4)=-2D0*COUP(I,1)*XWV
18435           COUP(I,3)=COUP(I,2)+COUP(I,4)
18436   390   CONTINUE
18437  
18438 C...Full propagator dependence and flavour correlations for 2 gamma*/Z.
18439         IF(ISUB.EQ.22) THEN
18440           DO 420 I=3,5,2
18441             I1=IORD
18442             IF(I.EQ.5) I1=3-IORD
18443             DO 410 J1=1,2
18444               DO 400 J2=1,2
18445                 CORL(I/2,J1,J2)=COUP(1,1)**2*HGZ(I1,1)*COUP(I,1)**2/
18446      &          16D0+COUP(1,1)*COUP(1,J1+2)*HGZ(I1,2)*COUP(I,1)*
18447      &          COUP(I,J2+2)/4D0+COUP(1,J1+2)**2*HGZ(I1,3)*
18448      &          COUP(I,J2+2)**2
18449   400         CONTINUE
18450   410       CONTINUE
18451   420     CONTINUE
18452           COWT12=(CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
18453      &    (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2))
18454           COMX12=(CORL(1,1,1)+CORL(1,1,2)+CORL(1,2,1)+CORL(1,2,2))*
18455      &    (CORL(2,1,1)+CORL(2,1,2)+CORL(2,2,1)+CORL(2,2,2))
18456  
18457           IF(COWT12.LT.PYR(0)*COMX12) GOTO 180
18458         ENDIF
18459       ENDIF
18460  
18461 C...Select angular orientation type - Z'/W' only.
18462       MZPWP=0
18463       IF(ISUB.EQ.141) THEN
18464         IF(PYR(0).LT.PARU(130)) MZPWP=1
18465         IF(IP.EQ.2) THEN
18466           IF(IABS(K(IREF(2,1),2)).EQ.37) MZPWP=2
18467           IAKIR=IABS(K(IREF(2,2),2))
18468           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
18469           IF(IAKIR.LE.20) MZPWP=2
18470         ENDIF
18471         IF(IP.GE.3) MZPWP=2
18472       ELSEIF(ISUB.EQ.142) THEN
18473         IF(PYR(0).LT.PARU(136)) MZPWP=1
18474         IF(IP.EQ.2) THEN
18475           IAKIR=IABS(K(IREF(2,2),2))
18476           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
18477           IF(IAKIR.LE.20) MZPWP=2
18478         ENDIF
18479         IF(IP.GE.3) MZPWP=2
18480       ENDIF
18481  
18482 C...Select random angles (begin of weighting procedure).
18483   430 DO 440 JT=1,JTMAX
18484         IF(KDCY(JT).EQ.0) GOTO 440
18485         IF(JTMAX.EQ.1.AND.ISUB.NE.0.AND.IHDEC.EQ.0) THEN
18486           CTHE(JT)=VINT(13)+(VINT(33)-VINT(13)+VINT(34)-VINT(14))*PYR(0)
18487           IF(CTHE(JT).GT.VINT(33)) CTHE(JT)=CTHE(JT)+VINT(14)-VINT(33)
18488           PHI(JT)=VINT(24)
18489         ELSE
18490           CTHE(JT)=2D0*PYR(0)-1D0
18491           PHI(JT)=PARU(2)*PYR(0)
18492         ENDIF
18493   440 CONTINUE
18494  
18495       IF(JTMAX.EQ.2.AND.MSTP(47).GE.1.AND.NINH.EQ.0) THEN
18496 C...Construct massless four-vectors.
18497         DO 460 I=N+1,N+4
18498           K(I,1)=1
18499           DO 450 J=1,5
18500             P(I,J)=0D0
18501             V(I,J)=0D0
18502   450     CONTINUE
18503   460   CONTINUE
18504         DO 470 JT=1,JTMAX
18505           IF(KDCY(JT).EQ.0) GOTO 470
18506           ID=IREF(IP,JT)
18507           P(N+2*JT-1,3)=0.5D0*P(ID,5)
18508           P(N+2*JT-1,4)=0.5D0*P(ID,5)
18509           P(N+2*JT,3)=-0.5D0*P(ID,5)
18510           P(N+2*JT,4)=0.5D0*P(ID,5)
18511           CALL PYROBO(N+2*JT-1,N+2*JT,ACOS(CTHE(JT)),PHI(JT),
18512      &    P(ID,1)/P(ID,4),P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
18513   470   CONTINUE
18514  
18515 C...Store incoming and outgoing momenta, with random rotation to
18516 C...avoid accidental zeroes in HA expressions.
18517         IF(ISUB.NE.0) THEN
18518           DO 490 I=IMIN,IMAX
18519             K(N+4+I,1)=1
18520             P(N+4+I,4)=SQRT(P(ILIN(I),1)**2+P(ILIN(I),2)**2+
18521      &      P(ILIN(I),3)**2+P(ILIN(I),5)**2)
18522             P(N+4+I,5)=P(ILIN(I),5)
18523             DO 480 J=1,3
18524               P(N+4+I,J)=P(ILIN(I),J)
18525   480       CONTINUE
18526   490     CONTINUE
18527   500     THERR=ACOS(2D0*PYR(0)-1D0)
18528           PHIRR=PARU(2)*PYR(0)
18529           CALL PYROBO(N+4+IMIN,N+4+IMAX,THERR,PHIRR,0D0,0D0,0D0)
18530           DO 520 I=IMIN,IMAX
18531             IF(P(N+4+I,1)**2+P(N+4+I,2)**2.LT.1D-4*(P(N+4+I,1)**2+
18532      &      P(N+4+I,2)**2+P(N+4+I,3)**2)) GOTO 500
18533             DO 510 J=1,4
18534               PK(I,J)=P(N+4+I,J)
18535   510       CONTINUE
18536   520     CONTINUE
18537         ENDIF
18538  
18539 C...Calculate internal products.
18540         IF(ISUB.EQ.22.OR.ISUB.EQ.23.OR.ISUB.EQ.25.OR.ISUB.EQ.141.OR.
18541      &  ISUB.EQ.142) THEN
18542           DO 540 I1=IMIN,IMAX-1
18543             DO 530 I2=I1+1,IMAX
18544               HA(I1,I2)=SNGL(SQRT((PK(I1,4)-PK(I1,3))*(PK(I2,4)+
18545      &        PK(I2,3))/(1D-20+PK(I1,1)**2+PK(I1,2)**2)))*
18546      &        CMPLX(SNGL(PK(I1,1)),SNGL(PK(I1,2)))-
18547      &        SNGL(SQRT((PK(I1,4)+PK(I1,3))*(PK(I2,4)-PK(I2,3))/
18548      &        (1D-20+PK(I2,1)**2+PK(I2,2)**2)))*
18549      &        CMPLX(SNGL(PK(I2,1)),SNGL(PK(I2,2)))
18550               HC(I1,I2)=CONJG(HA(I1,I2))
18551               IF(I1.LE.2) HA(I1,I2)=CMPLX(0.,1.)*HA(I1,I2)
18552               IF(I1.LE.2) HC(I1,I2)=CMPLX(0.,1.)*HC(I1,I2)
18553               HA(I2,I1)=-HA(I1,I2)
18554               HC(I2,I1)=-HC(I1,I2)
18555   530       CONTINUE
18556   540     CONTINUE
18557         ENDIF
18558  
18559 C...Calculate four-products.
18560         IF(ISUB.NE.0) THEN
18561           DO 560 I=1,2
18562             DO 550 J=1,4
18563               PK(I,J)=-PK(I,J)
18564   550       CONTINUE
18565   560     CONTINUE
18566           DO 580 I1=IMIN,IMAX-1
18567             DO 570 I2=I1+1,IMAX
18568               PKK(I1,I2)=2D0*(PK(I1,4)*PK(I2,4)-PK(I1,1)*PK(I2,1)-
18569      &        PK(I1,2)*PK(I2,2)-PK(I1,3)*PK(I2,3))
18570               PKK(I2,I1)=PKK(I1,I2)
18571   570       CONTINUE
18572   580     CONTINUE
18573         ENDIF
18574       ENDIF
18575  
18576       KFAGM=IABS(IREF(IP,7))
18577       IF(MSTP(47).LE.0.OR.NINH.NE.0) THEN
18578 C...Isotropic decay selected by user.
18579         WT=1D0
18580         WTMAX=1D0
18581  
18582       ELSEIF(JTMAX.EQ.3) THEN
18583 C...Isotropic decay when three mother particles.
18584         WT=1D0
18585         WTMAX=1D0
18586  
18587       ELSEIF(IT4.GE.1) THEN
18588 C... Isotropic decay t -> b + W etc for 4th generation q and l.
18589         WT=1D0
18590         WTMAX=1D0
18591  
18592       ELSEIF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.
18593      &  IREF(IP,7).EQ.36) THEN
18594 C...Angular weight for h0/A0 -> Z0 + Z0 or W+ + W- -> 4 quarks/leptons.
18595 C...CP-odd case added by Kari Ertresvag Myklevoll.
18596 C...Now also with mixed Higgs CP-states
18597         ETA=PARP(25)
18598         IF(IP.EQ.1) WTMAX=SH**2
18599         IF(IP.GE.2) WTMAX=P(IREF(IP,8),5)**4
18600         KFA=IABS(K(IREF(IP,1),2))
18601         KFT=IABS(K(IREF(IP,2),2))
18602         
18603         IF((KFA.EQ.KFT).AND.(KFA.EQ.23.OR.KFA.EQ.24).AND.
18604      &  MSTP(25).GE.3) THEN
18605 C...For mixed CP states need epsilon product.
18606           P10=PK(3,4)
18607           P20=PK(4,4)
18608           P30=PK(5,4)
18609           P40=PK(6,4)
18610           P11=PK(3,1)
18611           P21=PK(4,1)
18612           P31=PK(5,1)
18613           P41=PK(6,1)
18614           P12=PK(3,2)
18615           P22=PK(4,2)
18616           P32=PK(5,2)
18617           P42=PK(6,2)
18618           P13=PK(3,3)
18619           P23=PK(4,3)
18620           P33=PK(5,3)
18621           P43=PK(6,3)
18622           EPSI=P10*P21*P32*P43-P10*P21*P33*P42-P10*P22*P31*P43+P10*P22*
18623      &      P33*P41+P10*P23*P31*P42-P10*P23*P32*P41-P11*P20*P32*P43+P11*
18624      &      P20*P33*P42+P11*P22*P30*P43-P11*P22*P33*P40-P11*P23*P30*P42+
18625      &      P11*P23*P32*P40+P12*P20*P31*P43-P12*P20*P33*P41-P12*P21*P30*
18626      &      P43+P12*P21*P33*P40+P12*P23*P30*P41-P12*P23*P31*P40-P13*P20*
18627      &      P31*P42+P13*P20*P32*P41+P13*P21*P30*P42-P13*P21*P32*P40-P13*
18628      &      P22*P30*P41+P13*P22*P31*P40
18629 C...For mixed CP states need gauge boson masses.
18630           XMA=SQRT(MAX(0D0,(PK(3,4)+PK(4,4))**2-(PK(3,1)+PK(4,1))**2-
18631      &      (PK(3,2)+PK(4,2))**2-(PK(3,3)+PK(4,3))**2))
18632           XMB=SQRT(MAX(0D0,(PK(5,4)+PK(6,4))**2-(PK(5,1)+PK(6,1))**2-
18633      &      (PK(5,2)+PK(6,2))**2-(PK(5,3)+PK(6,3))**2))
18634           XMV=PMAS(KFA,1)
18635         ENDIF
18636  
18637 C...Z decay
18638         IF(KFA.EQ.23.AND.KFA.EQ.KFT) THEN
18639           KFLF1A=IABS(KFL1(1))
18640           EF1=KCHG(KFLF1A,1)/3D0
18641           AF1=SIGN(1D0,EF1+0.1D0)
18642           VF1=AF1-4D0*EF1*XWV
18643           KFLF2A=IABS(KFL1(2))
18644           EF2=KCHG(KFLF2A,1)/3D0
18645           AF2=SIGN(1D0,EF2+0.1D0)
18646           VF2=AF2-4D0*EF2*XWV
18647           VA12AS=4D0*VF1*AF1*VF2*AF2/((VF1**2+AF1**2)*(VF2**2+AF2**2))
18648           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
18649      &      THEN
18650 C...CP-even decay
18651             WT=8D0*(1D0+VA12AS)*PKK(3,5)*PKK(4,6)+
18652      &        8D0*(1D0-VA12AS)*PKK(3,6)*PKK(4,5)
18653           ELSEIF(MSTP(25).LE.2) THEN
18654 C...CP-odd decay
18655             WT=((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
18656      &        -2*PKK(3,4)*PKK(5,6)
18657      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
18658      &        (PKK(3,4)*PKK(5,6))
18659      &        +VA12AS*(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
18660      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))/(1+VA12AS)
18661           ELSE
18662 C...Mixed CP states.
18663             WT=32D0*(0.25D0*((1D0+VA12AS)*PKK(3,5)*PKK(4,6)
18664      &        +(1D0-VA12AS)*PKK(3,6)*PKK(4,5))
18665      &        -0.5D0*ETA/XMV**2*EPSI*((1D0+VA12AS)*(PKK(3,5)+PKK(4,6))
18666      &        -(1D0-VA12AS)*(PKK(3,6)+PKK(4,5)))
18667      &        +6.25D-2*ETA**2/XMV**4*(-2D0*PKK(3,4)**2*PKK(5,6)**2
18668      &        -2D0*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2
18669      &        +PKK(3,4)*PKK(5,6)
18670      &        *((PKK(3,5)+PKK(4,6))**2+(PKK(3,6)+PKK(4,5))**2)
18671      &        +VA12AS*PKK(3,4)*PKK(5,6)
18672      &        *(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))
18673      &        *(PKK(3,5)-PKK(3,6)+PKK(4,5)-PKK(4,6))))
18674      &        /(1D0 +2D0*ETA*XMA*XMB/XMV**2
18675      &          +2D0*(ETA*XMA*XMB/XMV**2)**2*(1D0+VA12AS))
18676           ENDIF
18677  
18678 C...W decay
18679         ELSEIF(KFA.EQ.24.AND.KFA.EQ.KFT) THEN
18680           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
18681      &      THEN
18682 C...CP-even decay
18683             WT=16D0*PKK(3,5)*PKK(4,6)
18684           ELSEIF(MSTP(25).LE.2) THEN
18685 C...CP-odd decay
18686             WT=0.5D0*((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
18687      &        -2*PKK(3,4)*PKK(5,6)
18688      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
18689      &        (PKK(3,4)*PKK(5,6))
18690      &        +(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
18691      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))
18692           ELSE
18693 C...Mixed CP states.
18694             WT=32D0*(0.25D0*2D0*PKK(3,5)*PKK(4,6)
18695      &        -0.5D0*ETA/XMV**2*EPSI*2D0*(PKK(3,5)+PKK(4,6))
18696      &        +6.25D-2*ETA**2/XMV**4*(-2D0*PKK(3,4)**2*PKK(5,6)**2
18697      &        -2D0*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2
18698      &        +PKK(3,4)*PKK(5,6)
18699      &        *((PKK(3,5)+PKK(4,6))**2+(PKK(3,6)+PKK(4,5))**2)
18700      &        +PKK(3,4)*PKK(5,6)
18701      &        *(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))
18702      &        *(PKK(3,5)-PKK(3,6)+PKK(4,5)-PKK(4,6))))
18703      &        /(1D0 +2D0*ETA*XMA*XMB/XMV**2
18704      &          +(2D0*ETA*XMA*XMB/XMV**2)**2)
18705           ENDIF
18706  
18707 C...No angular correlations in other Higgs decays.
18708         ELSE
18709           WT=WTMAX
18710         ENDIF
18711  
18712       ELSEIF((KFAGM.EQ.6.OR.KFAGM.EQ.7.OR.KFAGM.EQ.8.OR.
18713      &  KFAGM.EQ.17.OR.KFAGM.EQ.18).AND.IABS(K(IREF(IP,1),2)).EQ.24)
18714      &  THEN
18715 C...Angular correlation in f -> f' + W -> f' + 2 quarks/leptons.
18716         I1=IREF(IP,8)
18717         IF(MOD(KFAGM,2).EQ.0) THEN
18718           I2=N+1
18719           I3=N+2
18720         ELSE
18721           I2=N+2
18722           I3=N+1
18723         ENDIF
18724         I4=IREF(IP,2)
18725         WT=(P(I1,4)*P(I2,4)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
18726      &  P(I1,3)*P(I2,3))*(P(I3,4)*P(I4,4)-P(I3,1)*P(I4,1)-
18727      &  P(I3,2)*P(I4,2)-P(I3,3)*P(I4,3))
18728         WTMAX=(P(I1,5)**4-P(IREF(IP,1),5)**4)/8D0
18729  
18730       ELSEIF(ISUB.EQ.1) THEN
18731 C...Angular weight for gamma*/Z0 -> 2 quarks/leptons.
18732         EI=KCHG(IABS(MINT(15)),1)/3D0
18733         AI=SIGN(1D0,EI+0.1D0)
18734         VI=AI-4D0*EI*XWV
18735         EF=KCHG(IABS(KFL1(1)),1)/3D0
18736         AF=SIGN(1D0,EF+0.1D0)
18737  
18738         VF=AF-4D0*EF*XWV
18739         RMF=MIN(1D0,4D0*PMAS(IABS(KFL1(1)),1)**2/SH)
18740         WT1=EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
18741      &  (VI**2+AI**2)*VINT(114)*(VF**2+(1D0-RMF)*AF**2)
18742         WT2=RMF*(EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
18743      &  (VI**2+AI**2)*VINT(114)*VF**2)
18744         WT3=SQRT(1D0-RMF)*(EI*AI*VINT(112)*EF*AF+
18745      &  4D0*VI*AI*VINT(114)*VF*AF)
18746         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
18747      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
18748         WTMAX=2D0*(WT1+ABS(WT3))
18749  
18750       ELSEIF(ISUB.EQ.2) THEN
18751 C...Angular weight for W+/- -> 2 quarks/leptons.
18752         RM3=PMAS(IABS(KFL1(1)),1)**2/SH
18753         RM4=PMAS(IABS(KFL2(1)),1)**2/SH
18754         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
18755         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
18756         WTMAX=4D0
18757  
18758       ELSEIF(ISUB.EQ.15.OR.ISUB.EQ.19) THEN
18759 C...Angular weight for f + fbar -> gluon/gamma + (gamma*/Z0) ->
18760 C...-> gluon/gamma + 2 quarks/leptons.
18761         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18762      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
18763      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
18764         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18765      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
18766      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
18767         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18768      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
18769      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
18770         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18771      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
18772      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
18773         WT=(CLILF+CRIRF)*(PKK(1,3)**2+PKK(2,4)**2)+
18774      &  (CLIRF+CRILF)*(PKK(1,4)**2+PKK(2,3)**2)
18775         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
18776      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2)
18777  
18778       ELSEIF(ISUB.EQ.16.OR.ISUB.EQ.20) THEN
18779 C...Angular weight for f + fbar' -> gluon/gamma + W+/- ->
18780 C...-> gluon/gamma + 2 quarks/leptons.
18781         WT=PKK(1,3)**2+PKK(2,4)**2
18782         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2
18783  
18784       ELSEIF(ISUB.EQ.22) THEN
18785 C...Angular weight for f + fbar -> Z0 + Z0 -> 4 quarks/leptons.
18786         S34=P(IREF(IP,IORD),5)**2
18787         S56=P(IREF(IP,3-IORD),5)**2
18788         TI=PKK(1,3)+PKK(1,4)+S34
18789         UI=PKK(1,5)+PKK(1,6)+S56
18790         TIR=REAL(TI)
18791         UIR=REAL(UI)
18792         FGK135=ABS(FGK(1,2,3,4,5,6)/TIR+FGK(1,2,5,6,3,4)/UIR)**2
18793         FGK145=ABS(FGK(1,2,4,3,5,6)/TIR+FGK(1,2,5,6,4,3)/UIR)**2
18794         FGK136=ABS(FGK(1,2,3,4,6,5)/TIR+FGK(1,2,6,5,3,4)/UIR)**2
18795         FGK146=ABS(FGK(1,2,4,3,6,5)/TIR+FGK(1,2,6,5,4,3)/UIR)**2
18796         FGK253=ABS(FGK(2,1,5,6,3,4)/TIR+FGK(2,1,3,4,5,6)/UIR)**2
18797         FGK263=ABS(FGK(2,1,6,5,3,4)/TIR+FGK(2,1,3,4,6,5)/UIR)**2
18798         FGK254=ABS(FGK(2,1,5,6,4,3)/TIR+FGK(2,1,4,3,5,6)/UIR)**2
18799         FGK264=ABS(FGK(2,1,6,5,4,3)/TIR+FGK(2,1,4,3,6,5)/UIR)**2
18800  
18801         WT=
18802      &  CORL(1,1,1)*CORL(2,1,1)*FGK135+CORL(1,1,2)*CORL(2,1,1)*FGK145+
18803      &  CORL(1,1,1)*CORL(2,1,2)*FGK136+CORL(1,1,2)*CORL(2,1,2)*FGK146+
18804      &  CORL(1,2,1)*CORL(2,2,1)*FGK253+CORL(1,2,2)*CORL(2,2,1)*FGK263+
18805      &  CORL(1,2,1)*CORL(2,2,2)*FGK254+CORL(1,2,2)*CORL(2,2,2)*FGK264
18806         WTMAX=16D0*((CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
18807      &  (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2)))*S34*S56*
18808      &  ((TI**2+UI**2+2D0*SH*(S34+S56))/(TI*UI)-S34*S56*(1D0/TI**2+
18809      &  1D0/UI**2))
18810  
18811       ELSEIF(ISUB.EQ.23) THEN
18812 C...Angular weight for f + fbar' -> Z0 + W+/- -> 4 quarks/leptons.
18813         D34=P(IREF(IP,IORD),5)**2
18814         D56=P(IREF(IP,3-IORD),5)**2
18815         DT=PKK(1,3)+PKK(1,4)+D34
18816         DU=PKK(1,5)+PKK(1,6)+D56
18817         FACBW=1D0/((SH-SQMW)**2+GMMW**2)
18818         CAWZ=COUP(2,3)/DT-2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
18819         CBWZ=COUP(1,3)/DU+2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
18820         FGK135=ABS(REAL(CAWZ)*FGK(1,2,3,4,5,6)+
18821  
18822      &  REAL(CBWZ)*FGK(1,2,5,6,3,4))
18823         FGK136=ABS(REAL(CAWZ)*FGK(1,2,3,4,6,5)+
18824      &  REAL(CBWZ)*FGK(1,2,6,5,3,4))
18825         WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
18826         WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*(CAWZ**2*
18827      &  DIGK(DT,DU)+CBWZ**2*DIGK(DU,DT)+CAWZ*CBWZ*DJGK(DT,DU))
18828  
18829       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
18830 C...Angular weight for f + fbar -> Z0 + h0 -> 2 quarks/leptons + h0
18831 C...(or H0, or A0).
18832         WT=((COUP(1,3)*COUP(3,3))**2+(COUP(1,4)*COUP(3,4))**2)*
18833      &  PKK(1,3)*PKK(2,4)+((COUP(1,3)*COUP(3,4))**2+(COUP(1,4)*
18834      &  COUP(3,3))**2)*PKK(1,4)*PKK(2,3)
18835         WTMAX=(COUP(1,3)**2+COUP(1,4)**2)*(COUP(3,3)**2+COUP(3,4)**2)*
18836      &  (PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
18837  
18838       ELSEIF(ISUB.EQ.25) THEN
18839 C...Angular weight for f + fbar -> W+ + W- -> 4 quarks/leptons.
18840         POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
18841         POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
18842         D34=P(IREF(IP,IORD),5)**2
18843         D56=P(IREF(IP,3-IORD),5)**2
18844         DT=PKK(1,3)+PKK(1,4)+D34
18845         DU=PKK(1,5)+PKK(1,6)+D56
18846         FACBW=1D0/((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
18847         CDWW=(COUP(1,3)*SQMZ*(SH-SQMZ)*FACBW+COUP(1,2))/SH
18848         CAWW=CDWW+0.5D0*(COUP(1,2)+1D0)/DT
18849         CBWW=CDWW+0.5D0*(COUP(1,2)-1D0)/DU
18850         CCWW=COUP(1,4)*SQMZ*(SH-SQMZ)*FACBW/SH
18851         FGK135=ABS(REAL(CAWW)*FGK(1,2,3,4,5,6)-
18852      &  REAL(CBWW)*FGK(1,2,5,6,3,4))
18853         FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
18854         IF(MSTP(50).LE.0) THEN
18855           WT=FGK135**2+(CCWW*FGK253)**2
18856           WTMAX=4D0*D34*D56*(CAWW**2*DIGK(DT,DU)+CBWW**2*DIGK(DU,DT)-
18857      &    CAWW*CBWW*DJGK(DT,DU)+CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-
18858      &    DJGK(DT,DU)))
18859         ELSE
18860           WT=POLL*FGK135**2+POLR*(CCWW*FGK253)**2
18861           WTMAX=4D0*D34*D56*(POLL*(CAWW**2*DIGK(DT,DU)+
18862      &    CBWW**2*DIGK(DU,DT)-CAWW*CBWW*DJGK(DT,DU))+
18863      &    POLR*CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU)))
18864         ENDIF
18865  
18866       ELSEIF(ISUB.EQ.26.OR.ISUB.EQ.172.OR.ISUB.EQ.177) THEN
18867 C...Angular weight for f + fbar' -> W+/- + h0 -> 2 quarks/leptons + h0
18868 C...(or H0, or A0).
18869         WT=PKK(1,3)*PKK(2,4)
18870         WTMAX=(PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
18871  
18872       ELSEIF(ISUB.EQ.30.OR.ISUB.EQ.35) THEN
18873 C...Angular weight for f + g/gamma -> f + (gamma*/Z0)
18874 C...-> f + 2 quarks/leptons.
18875         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18876      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
18877      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
18878         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18879      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
18880      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
18881         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18882      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
18883      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
18884         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18885      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
18886      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
18887         IF(K(ILIN(1),2).GT.0) WT=(CLILF+CRIRF)*(PKK(1,4)**2+
18888      &  PKK(3,5)**2)+(CLIRF+CRILF)*(PKK(1,3)**2+PKK(4,5)**2)
18889         IF(K(ILIN(1),2).LT.0) WT=(CLILF+CRIRF)*(PKK(1,3)**2+
18890      &  PKK(4,5)**2)+(CLIRF+CRILF)*(PKK(1,4)**2+PKK(3,5)**2)
18891         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
18892      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2)
18893  
18894       ELSEIF(ISUB.EQ.31.OR.ISUB.EQ.36) THEN
18895 C...Angular weight for f + g/gamma -> f' + W+/- -> f' + 2 fermions.
18896         IF(K(ILIN(1),2).GT.0) WT=PKK(1,4)**2+PKK(3,5)**2
18897         IF(K(ILIN(1),2).LT.0) WT=PKK(1,3)**2+PKK(4,5)**2
18898         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2
18899  
18900       ELSEIF(ISUB.EQ.71.OR.ISUB.EQ.72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.
18901      &  ISUB.EQ.77) THEN
18902 C...Angular weight for V_L1 + V_L2 -> V_L3 + V_L4 (V = Z/W).
18903         WT=16D0*PKK(3,5)*PKK(4,6)
18904         WTMAX=SH**2
18905  
18906       ELSEIF(ISUB.EQ.110) THEN
18907 C...Angular weight for f + fbar -> gamma + h0 -> gamma + X is isotropic.
18908         WT=1D0
18909         WTMAX=1D0
18910  
18911       ELSEIF(ISUB.EQ.141) THEN
18912 C...Special case: if only branching ratios known then isotropic decay.
18913         IF(MWID(32).EQ.2) THEN
18914           WT=1D0
18915           WTMAX=1D0
18916         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN 
18917 C...Angular weight for f + fbar -> gamma*/Z0/Z'0 -> 2 quarks/leptons.
18918 C...Couplings of incoming flavour.
18919           KFAI=IABS(MINT(15))
18920           EI=KCHG(KFAI,1)/3D0
18921           AI=SIGN(1D0,EI+0.1D0)
18922           VI=AI-4D0*EI*XWV
18923           KFAIC=1
18924           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
18925           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
18926           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
18927           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
18928             VPI=PARU(119+2*KFAIC)
18929             API=PARU(120+2*KFAIC)
18930           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
18931             VPI=PARJ(178+2*KFAIC)
18932             API=PARJ(179+2*KFAIC)
18933           ELSE
18934             VPI=PARJ(186+2*KFAIC)
18935             API=PARJ(187+2*KFAIC)
18936           ENDIF
18937 C...Couplings of final flavour.
18938           KFAF=IABS(KFL1(1))
18939           EF=KCHG(KFAF,1)/3D0
18940           AF=SIGN(1D0,EF+0.1D0)
18941           VF=AF-4D0*EF*XWV
18942           KFAFC=1
18943           IF(KFAF.LE.10.AND.MOD(KFAF,2).EQ.0) KFAFC=2
18944           IF(KFAF.GT.10.AND.MOD(KFAF,2).NE.0) KFAFC=3
18945           IF(KFAF.GT.10.AND.MOD(KFAF,2).EQ.0) KFAFC=4
18946           IF(KFAF.LE.2.OR.KFAF.EQ.11.OR.KFAF.EQ.12) THEN
18947             VPF=PARU(119+2*KFAFC)
18948             APF=PARU(120+2*KFAFC)
18949           ELSEIF(KFAF.LE.4.OR.KFAF.EQ.13.OR.KFAF.EQ.14) THEN
18950             VPF=PARJ(178+2*KFAFC)
18951             APF=PARJ(179+2*KFAFC)
18952           ELSE
18953             VPF=PARJ(186+2*KFAFC)
18954             APF=PARJ(187+2*KFAFC)
18955           ENDIF
18956 C...Asymmetry and weight.
18957           ASYM=2D0*(EI*AI*VINT(112)*EF*AF+EI*API*VINT(113)*EF*APF+
18958      &    4D0*VI*AI*VINT(114)*VF*AF+(VI*API+VPI*AI)*VINT(115)*
18959      &    (VF*APF+VPF*AF)+4D0*VPI*API*VINT(116)*VPF*APF)/
18960      &    (EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
18961      &    EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
18962      &    (VF**2+AF**2)+(VI*VPI+AI*API)*VINT(115)*(VF*VPF+AF*APF)+
18963      &    (VPI**2+API**2)*VINT(116)*(VPF**2+APF**2))
18964           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
18965           WTMAX=2D0+ABS(ASYM)
18966         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).EQ.24) THEN
18967 C...Angular weight for f + fbar -> Z' -> W+ + W-.
18968           RM1=P(NSD(1)+1,5)**2/SH
18969           RM2=P(NSD(1)+2,5)**2/SH
18970           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
18971      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
18972           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
18973      &    (RM2-RM1)**2)
18974           WT=CFLAT+CCOS2*CTHE(1)**2
18975           WTMAX=CFLAT+MAX(0D0,CCOS2)
18976         ELSEIF(IP.EQ.1.AND.(KFL1(1).EQ.25.OR.KFL1(1).EQ.35.OR.
18977      &    IABS(KFL1(1)).EQ.37)) THEN
18978 C...Angular weight for f + fbar -> Z' -> h0 + A0, H0 + A0, H+ + H-.
18979           WT=1D0-CTHE(1)**2
18980           WTMAX=1D0
18981         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
18982 C...Angular weight for f + fbar -> Z' -> Z0 + h0.
18983           RM1=P(NSD(1)+1,5)**2/SH
18984           RM2=P(NSD(1)+2,5)**2/SH
18985           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
18986           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
18987           WTMAX=1D0+FLAM2/(8D0*RM1)
18988         ELSEIF(MZPWP.EQ.0) THEN
18989 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
18990 C...(W:s like if intermediate Z).
18991           D34=P(IREF(IP,IORD),5)**2
18992           D56=P(IREF(IP,3-IORD),5)**2
18993           DT=PKK(1,3)+PKK(1,4)+D34
18994           DU=PKK(1,5)+PKK(1,6)+D56
18995           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
18996           FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
18997           WT=(COUP(1,3)*FGK135)**2+(COUP(1,4)*FGK253)**2
18998           WTMAX=4D0*D34*D56*(COUP(1,3)**2+COUP(1,4)**2)*
18999      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
19000         ELSEIF(MZPWP.EQ.1) THEN
19001 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
19002 C...(W:s approximately longitudinal, like if intermediate H).
19003           WT=16D0*PKK(3,5)*PKK(4,6)
19004           WTMAX=SH**2
19005         ELSE
19006 C...Angular weight for f + fbar -> Z' -> H+ + H-, Z0 + h0, h0 + A0,
19007 C...H0 + A0 -> 4 quarks/leptons, t + tbar -> b + W+ + bbar + W- .
19008           WT=1D0
19009           WTMAX=1D0
19010         ENDIF
19011  
19012       ELSEIF(ISUB.EQ.142) THEN
19013 C...Special case: if only branching ratios known then isotropic decay.
19014         IF(MWID(34).EQ.2) THEN
19015           WT=1D0
19016           WTMAX=1D0
19017         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN 
19018 C...Angular weight for f + fbar' -> W'+/- -> 2 quarks/leptons.
19019           KFAI=IABS(MINT(15))
19020           KFAIC=1
19021           IF(KFAI.GT.10) KFAIC=2
19022           VI=PARU(129+2*KFAIC)
19023           AI=PARU(130+2*KFAIC)
19024           KFAF=IABS(KFL1(1))
19025           KFAFC=1
19026           IF(KFAF.GT.10) KFAFC=2
19027           VF=PARU(129+2*KFAFC)
19028           AF=PARU(130+2*KFAFC)
19029           ASYM=8D0*VI*AI*VF*AF/((VI**2+AI**2)*(VF**2+AF**2))
19030           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
19031           WTMAX=2D0+ABS(ASYM)
19032         ELSEIF(IP.EQ.1.AND.IABS(KFL2(1)).EQ.23) THEN
19033 C...Angular weight for f + fbar' -> W'+/- -> W+/- + Z0.
19034           RM1=P(NSD(1)+1,5)**2/SH
19035           RM2=P(NSD(1)+2,5)**2/SH
19036           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
19037      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
19038           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
19039      &    (RM2-RM1)**2)
19040           WT=CFLAT+CCOS2*CTHE(1)**2
19041           WTMAX=CFLAT+MAX(0D0,CCOS2)
19042         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
19043 C...Angular weight for f + fbar -> W'+/- -> W+/- + h0.
19044           RM1=P(NSD(1)+1,5)**2/SH
19045           RM2=P(NSD(1)+2,5)**2/SH
19046           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
19047           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
19048           WTMAX=1D0+FLAM2/(8D0*RM1)
19049         ELSEIF(MZPWP.EQ.0) THEN
19050 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
19051 C...(W/Z like if intermediate W).
19052           D34=P(IREF(IP,IORD),5)**2
19053           D56=P(IREF(IP,3-IORD),5)**2
19054           DT=PKK(1,3)+PKK(1,4)+D34
19055           DU=PKK(1,5)+PKK(1,6)+D56
19056           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
19057           FGK136=ABS(FGK(1,2,3,4,6,5)-FGK(1,2,6,5,3,4))
19058           WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
19059           WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*
19060      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
19061         ELSEIF(MZPWP.EQ.1) THEN
19062 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
19063 C...(W/Z approximately longitudinal, like if intermediate H).
19064           WT=16D0*PKK(3,5)*PKK(4,6)
19065           WTMAX=SH**2
19066         ELSE
19067 C...Angular weight for f + fbar -> W' -> W + h0 -> whatever,
19068 C...t + bbar -> t + W + bbar.
19069           WT=1D0
19070           WTMAX=1D0
19071         ENDIF
19072  
19073       ELSEIF(ISUB.EQ.145.OR.ISUB.EQ.162.OR.ISUB.EQ.163.OR.ISUB.EQ.164)
19074      &  THEN
19075 C...Isotropic decay of leptoquarks (assumed spin 0).
19076         WT=1D0
19077         WTMAX=1D0
19078  
19079       ELSEIF(ISUB.GE.146.AND.ISUB.LE.148) THEN
19080 C...Decays of (spin 1/2) q*/e* -> q/e + (g,gamma) or (Z0,W+-).
19081         SIDE=1D0
19082         IF(MINT(16).EQ.21.OR.MINT(16).EQ.22) SIDE=-1D0
19083         IF(IP.EQ.1.AND.(KFL1(1).EQ.21.OR.KFL1(1).EQ.22)) THEN
19084           WT=1D0+SIDE*CTHE(1)
19085           WTMAX=2D0
19086         ELSEIF(IP.EQ.1) THEN
19087  
19088           RM1=P(NSD(1)+1,5)**2/SH
19089           WT=1D0+SIDE*CTHE(1)*(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
19090           WTMAX=1D0+(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
19091         ELSE
19092 C...W/Z decay assumed isotropic, since not known.
19093           WT=1D0
19094           WTMAX=1D0
19095         ENDIF
19096  
19097       ELSEIF(ISUB.EQ.149) THEN
19098 C...Isotropic decay of techni-eta.
19099         WT=1D0
19100         WTMAX=1D0
19101  
19102       ELSEIF(ISUB.EQ.191) THEN
19103         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
19104 C...Angular weight for f + fbar -> rho_tc0 -> W+ W-,
19105 C...W+ pi_tc-, pi_tc+ W- or pi_tc+ pi_tc-.
19106           WT=1D0-CTHE(1)**2
19107           WTMAX=1D0
19108         ELSEIF(IP.EQ.1) THEN
19109 C...Angular weight for f + fbar -> rho_tc0 -> f fbar.
19110           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
19111           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
19112           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
19113           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
19114           KFAI=IABS(MINT(15))
19115           EI=KCHG(KFAI,1)/3D0
19116           AI=SIGN(1D0,EI+0.1D0)
19117           VI=AI-4D0*EI*XWV
19118           VALI=0.5D0*(VI+AI)
19119           VARI=0.5D0*(VI-AI)
19120           ALEFTI=(EI+VALI*BWZR)**2+(VALI*BWZI)**2
19121           ARIGHI=(EI+VARI*BWZR)**2+(VARI*BWZI)**2
19122           KFAF=IABS(KFL1(1))
19123           EF=KCHG(KFAF,1)/3D0
19124           AF=SIGN(1D0,EF+0.1D0)
19125           VF=AF-4D0*EF*XWV
19126           VALF=0.5D0*(VF+AF)
19127           VARF=0.5D0*(VF-AF)
19128           ALEFTF=(EF+VALF*BWZR)**2+(VALF*BWZI)**2
19129           ARIGHF=(EF+VARF*BWZR)**2+(VARF*BWZI)**2
19130           ASAME=ALEFTI*ALEFTF+ARIGHI*ARIGHF
19131           AFLIP=ALEFTI*ARIGHF+ARIGHI*ALEFTF
19132           WT=ASAME*(1D0+CTHESG)**2+AFLIP*(1D0-CTHESG)**2
19133           WTMAX=4D0*MAX(ASAME,AFLIP)
19134         ELSE
19135 C...Isotropic decay of W/pi_tc produced in rho_tc decay.
19136           WT=1D0
19137           WTMAX=1D0
19138         ENDIF
19139  
19140       ELSEIF(ISUB.EQ.192) THEN
19141         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
19142 C...Angular weight for f + fbar' -> rho_tc+ -> W+ Z0,
19143 C...W+ pi_tc0, pi_tc+ Z0 or pi_tc+ pi_tc0.
19144           WT=1D0-CTHE(1)**2
19145           WTMAX=1D0
19146         ELSEIF(IP.EQ.1) THEN
19147 C...Angular weight for f + fbar' -> rho_tc+ -> f fbar'.
19148           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
19149           WT=(1D0+CTHESG)**2
19150           WTMAX=4D0
19151         ELSE
19152 C...Isotropic decay of W/Z/pi_tc produced in rho_tc+ decay.
19153           WT=1D0
19154           WTMAX=1D0
19155         ENDIF
19156  
19157       ELSEIF(ISUB.EQ.193) THEN
19158         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
19159 C...Angular weight for f + fbar -> omega_tc0 ->
19160 C...gamma pi_tc0 or Z0 pi_tc0.
19161           WT=1D0+CTHE(1)**2
19162           WTMAX=2D0
19163         ELSEIF(IP.EQ.1) THEN
19164 C...Angular weight for f + fbar -> omega_tc0 -> f fbar.
19165           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
19166           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
19167           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
19168           KFAI=IABS(MINT(15))
19169           EI=KCHG(KFAI,1)/3D0
19170           AI=SIGN(1D0,EI+0.1D0)
19171           VI=AI-4D0*EI*XWV
19172           VALI=0.5D0*(VI+AI)
19173           VARI=0.5D0*(VI-AI)
19174           BLEFTI=(EI-VALI*BWZR)**2+(VALI*BWZI)**2
19175           BRIGHI=(EI-VARI*BWZR)**2+(VARI*BWZI)**2
19176           KFAF=IABS(KFL1(1))
19177           EF=KCHG(KFAF,1)/3D0
19178           AF=SIGN(1D0,EF+0.1D0)
19179           VF=AF-4D0*EF*XWV
19180           VALF=0.5D0*(VF+AF)
19181           VARF=0.5D0*(VF-AF)
19182           BLEFTF=(EF-VALF*BWZR)**2+(VALF*BWZI)**2
19183           BRIGHF=(EF-VARF*BWZR)**2+(VARF*BWZI)**2
19184           BSAME=BLEFTI*BLEFTF+BRIGHI*BRIGHF
19185           BFLIP=BLEFTI*BRIGHF+BRIGHI*BLEFTF
19186           WT=BSAME*(1D0+CTHESG)**2+BFLIP*(1D0-CTHESG)**2
19187           WTMAX=4D0*MAX(BSAME,BFLIP)
19188         ELSE
19189 C...Isotropic decay of Z/pi_tc produced in omega_tc decay.
19190           WT=1D0
19191           WTMAX=1D0
19192         ENDIF
19193  
19194       ELSEIF(ISUB.EQ.353) THEN
19195 C...Angular weight for Z_R0 -> 2 quarks/leptons.
19196         EI=KCHG(IABS(MINT(15)),1)/3D0
19197         AI=SIGN(1D0,EI+0.1D0)
19198         VI=AI-4D0*EI*XWV
19199         EF=KCHG(PYCOMP(KFL1(1)),1)/3D0
19200         AF=SIGN(1D0,EF+0.1D0)
19201         VF=AF-4D0*EF*XWV
19202         RMF=MIN(1D0,4D0*PMAS(PYCOMP(KFL1(1)),1)**2/SH)
19203         WT1=(VI**2+AI**2)*(VF**2+(1D0-RMF)*AF**2)
19204         WT2=RMF*(VI**2+AI**2)*VF**2
19205         WT3=SQRT(1D0-RMF)*4D0*VI*AI*VF*AF
19206         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
19207      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
19208         WTMAX=2D0*(WT1+ABS(WT3))
19209  
19210       ELSEIF(ISUB.EQ.354) THEN
19211 C...Angular weight for W_R+/- -> 2 quarks/leptons.
19212         RM3=PMAS(PYCOMP(KFL1(1)),1)**2/SH
19213         RM4=PMAS(PYCOMP(KFL2(1)),1)**2/SH
19214         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
19215         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
19216         WTMAX=4D0
19217  
19218       ELSEIF(ISUB.EQ.391) THEN
19219 C...Angular weight for f + fbar -> G* -> f + fbar
19220         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
19221           WT=1D0-3D0*CTHE(1)**2+4D0*CTHE(1)**4
19222           WTMAX=2D0
19223 C...Angular weight for f + fbar -> G* -> gamma + gamma or g + g
19224 C...implemented by M.-C. Lemaire
19225         ELSEIF(IP.EQ.1.AND.(IABS(KFL1(1)).EQ.21.OR.
19226      &  IABS(KFL1(1)).EQ.22)) THEN
19227           WT=1D0-CTHE(1)**4
19228           WTMAX=1D0
19229 C...Other G* decays not yet implemented angular distributions.
19230         ELSE
19231           WT=1D0
19232           WTMAX=1D0
19233         ENDIF
19234  
19235       ELSEIF(ISUB.EQ.392) THEN
19236 C...Angular weight for g + g -> G* -> f + fbar
19237         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
19238           WT=1D0-CTHE(1)**4
19239           WTMAX=1D0
19240 C...Angular weight for g + g -> G* -> gamma +gamma or g + g
19241 C...implemented by M.-C. Lemaire
19242         ELSEIF(IP.EQ.1.AND.(IABS(KFL1(1)).EQ.21.OR.
19243      &  IABS(KFL1(1)).EQ.22)) THEN
19244          WT=1D0+6D0*CTHE(1)**2+CTHE(1)**4
19245           WTMAX=8D0
19246 C...Other G* decays not yet implemented angular distributions.
19247         ELSE
19248           WT=1D0
19249           WTMAX=1D0
19250         ENDIF
19251  
19252 C...Obtain correct angular distribution by rejection techniques.
19253       ELSE
19254         WT=1D0
19255         WTMAX=1D0
19256       ENDIF
19257       IF(WT.LT.PYR(0)*WTMAX) GOTO 430
19258   
19259 C...Construct massive four-vectors using angles chosen.
19260   590 DO 690 JT=1,JTMAX
19261         IF(KDCY(JT).EQ.0) GOTO 690
19262         ID=IREF(IP,JT)
19263         DO 600 J=1,5
19264           DPMO(J)=P(ID,J)
19265   600   CONTINUE
19266         DPMO(4)=SQRT(DPMO(1)**2+DPMO(2)**2+DPMO(3)**2+DPMO(5)**2)
19267 CMRENNA++
19268         NPROD=2
19269         IF(KFL3(JT).NE.0) NPROD=3
19270         IF(KFL4(JT).NE.0) NPROD=4
19271         CALL PYROBO(NSD(JT)+1,NSD(JT)+NPROD,ACOS(CTHE(JT)),PHI(JT),
19272      &       DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
19273         N0=NSD(JT)+NPROD
19274  
19275         DO 610 J=1,4
19276           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
19277   610   CONTINUE
19278 C...Fill in position of decay vertex.
19279         DO 630 I=NSD(JT)+1,N0
19280           DO 620 J=1,4
19281             V(I,J)=VDCY(J)
19282   620     CONTINUE
19283           V(I,5)=0D0
19284  
19285   630   CONTINUE
19286 CMRENNA--
19287  
19288 C...Mark decayed resonances; trace history.
19289         K(ID,1)=K(ID,1)+10
19290         KFA=IABS(K(ID,2))
19291         KCA=PYCOMP(KFA)
19292         IF(KCQM(JT).NE.0) THEN
19293 C...Do not kill colour flow through coloured resonance!
19294         ELSE
19295           K(ID,4)=NSD(JT)+1
19296           K(ID,5)=NSD(JT)+NPROD
19297           IF(ITJUNC(JT).NE.0) K(ID,5)=K(ID,5)+1
19298 C...If 3-body or 2-body with junction:
19299 c          IF(KFL3(JT).NE.0.OR.ITJUNC(JT).NE.0) K(ID,5)=NSD(JT)+3
19300 C...If 3-body with junction:
19301 c          IF(ITJUNC(JT).NE.0.AND.KFL3(JT).NE.0) K(ID,5)=NSD(JT)+4
19302         ENDIF
19303  
19304 C...Add documentation lines.
19305         ISUBRG=MAX(1,MIN(500,MINT(1)))
19306         IF(IRES.EQ.0.OR.ISET(ISUBRG).EQ.11) THEN
19307           IDOC=MINT(83)+MINT(4)
19308 CMRENNA+++
19309           IHI=NSD(JT)+NPROD
19310 c          IF(KFL3(JT).NE.0) IHI=IHI+1
19311           DO 650 I=NSD(JT)+1,IHI
19312 CMRENNA---
19313             I1=MINT(83)+MINT(4)+1
19314             K(I,3)=I1
19315             IF(MSTP(128).GE.1) K(I,3)=ID
19316             IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
19317               MINT(4)=MINT(4)+1
19318               K(I1,1)=21
19319               K(I1,2)=K(I,2)
19320               K(I1,3)=IREF(IP,JT+3)
19321               DO 640 J=1,5
19322                 P(I1,J)=P(I,J)
19323   640         CONTINUE
19324             ENDIF
19325   650     CONTINUE
19326         ELSE
19327           K(NSD(JT)+1,3)=ID
19328           K(NSD(JT)+2,3)=ID
19329 C...If 3-body or 2-body with junction:
19330           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).GT.0) K(NSD(JT)+3,3)=ID
19331 C...If 3-body with junction:
19332           IF(KFL3(JT).NE.0.AND.ITJUNC(JT).GT.0) K(NSD(JT)+4,3)=ID
19333 C...If 4-body or 3-body with junction:
19334           IF(KFL4(JT).NE.0.OR.ITJUNC(JT).GT.0) K(NSD(JT)+4,3)=ID
19335 C...If 4-body with junction:
19336           IF(KFL4(JT).NE.0.AND.ITJUNC(JT).GT.0) K(NSD(JT)+5,3)=ID
19337         ENDIF
19338  
19339 C...Do showering of two or three objects.
19340         NSHBEF=N
19341         IF(MSTP(71).GE.1.AND.MINT(35).LE.1) THEN
19342           IF(KFL3(JT).EQ.0) THEN
19343             CALL PYSHOW(NSD(JT)+1,NSD(JT)+2,P(ID,5))
19344           ELSE
19345             CALL PYSHOW(NSD(JT)+1,-NPROD,P(ID,5))
19346           ENDIF
19347  
19348 c...For pT-ordered shower need set up first, especially colour tags.
19349 C...(Need to set up colour tags even if MSTP(71) = 0)
19350         ELSEIF(MINT(35).GE.2) THEN
19351           NPART=NPROD
19352 c          IF(KFL3(JT).NE.0) NPART=3
19353           IPART(1)=NSD(JT)+1
19354           IPART(2)=NSD(JT)+2
19355           IPART(3)=NSD(JT)+3
19356           IPART(4)=NSD(JT)+4
19357           PTPART(1)=0.5D0*P(ID,5)
19358           PTPART(2)=PTPART(1)
19359           PTPART(3)=PTPART(1)
19360           PTPART(4)=PTPART(1)
19361           IF(KCQ1(JT).EQ.1.OR.KCQ1(JT).EQ.2) THEN
19362             MOTHER=K(NSD(JT)+1,4)/MSTU(5)
19363             IF(MOTHER.LE.NSD(JT)) THEN
19364               MCT(NSD(JT)+1,1)=MCT(MOTHER,1)
19365             ELSE
19366               NCT=NCT+1
19367               MCT(NSD(JT)+1,1)=NCT
19368               MCT(MOTHER,2)=NCT
19369             ENDIF
19370           ENDIF
19371           IF(KCQ1(JT).EQ.-1.OR.KCQ1(JT).EQ.2) THEN
19372             MOTHER=K(NSD(JT)+1,5)/MSTU(5)
19373             IF(MOTHER.LE.NSD(JT)) THEN
19374               MCT(NSD(JT)+1,2)=MCT(MOTHER,2)
19375             ELSE
19376               NCT=NCT+1
19377               MCT(NSD(JT)+1,2)=NCT
19378               MCT(MOTHER,1)=NCT
19379             ENDIF
19380           ENDIF
19381           IF(MCT(NSD(JT)+2,1).EQ.0.AND.(KCQ2(JT).EQ.1.OR.
19382      &    KCQ2(JT).EQ.2)) THEN
19383             MOTHER=K(NSD(JT)+2,4)/MSTU(5)
19384             IF(MOTHER.LE.NSD(JT)) THEN
19385               MCT(NSD(JT)+2,1)=MCT(MOTHER,1)
19386             ELSE
19387               NCT=NCT+1
19388               MCT(NSD(JT)+2,1)=NCT
19389               MCT(MOTHER,2)=NCT
19390             ENDIF
19391           ENDIF
19392           IF(MCT(NSD(JT)+2,2).EQ.0.AND.(KCQ2(JT).EQ.-1.OR.
19393      &    KCQ2(JT).EQ.2)) THEN
19394             MOTHER=K(NSD(JT)+2,5)/MSTU(5)
19395             IF(MOTHER.LE.NSD(JT)) THEN
19396               MCT(NSD(JT)+2,2)=MCT(MOTHER,2)
19397             ELSE
19398               NCT=NCT+1
19399               MCT(NSD(JT)+2,2)=NCT
19400               MCT(MOTHER,1)=NCT
19401             ENDIF
19402           ENDIF
19403           IF(NPART.EQ.3.AND.MCT(NSD(JT)+3,1).EQ.0.AND.
19404      &    (KCQ3(JT).EQ.1.OR. KCQ3(JT).EQ.2)) THEN
19405             MOTHER=K(NSD(JT)+3,4)/MSTU(5)
19406             MCT(NSD(JT)+3,1)=MCT(MOTHER,1)
19407           ENDIF
19408           IF(NPART.EQ.3.AND.MCT(NSD(JT)+3,2).EQ.0.AND.
19409      &    (KCQ3(JT).EQ.-1.OR.KCQ3(JT).EQ.2)) THEN
19410             MOTHER=K(NSD(JT)+3,5)/MSTU(5)
19411             MCT(NSD(JT)+2,2)=MCT(MOTHER,2)
19412           ENDIF
19413           IF(NPART.EQ.4.AND.MCT(NSD(JT)+4,1).EQ.0.AND.
19414      &    (KCQ4(JT).EQ.1.OR. KCQ4(JT).EQ.2)) THEN
19415             MOTHER=K(NSD(JT)+4,4)/MSTU(5)
19416             MCT(NSD(JT)+4,1)=MCT(MOTHER,1)
19417           ENDIF
19418           IF(NPART.EQ.4.AND.MCT(NSD(JT)+4,2).EQ.0.AND.
19419      &    (KCQ4(JT).EQ.-1.OR.KCQ4(JT).EQ.2)) THEN
19420             MOTHER=K(NSD(JT)+4,5)/MSTU(5)
19421             MCT(NSD(JT)+4,2)=MCT(MOTHER,2)
19422           ENDIF
19423 
19424           IF (MSTP(71).GE.1) CALL PYPTFS(2,0.5D0*P(ID,5),0D0,PTGEN)
19425         ENDIF
19426         NSHAFT=N
19427         IF(JT.EQ.1) NAFT1=N
19428  
19429 C...Check if decay products moved by shower.
19430         NSD1=NSD(JT)+1
19431         NSD2=NSD(JT)+2
19432         NSD3=NSD(JT)+3
19433         NSD4=NSD(JT)+4
19434 C...4-body decays will only work if one of the products is "inert"
19435         IF(NSHAFT.GT.NSHBEF) THEN
19436           IF(K(NSD1,1).GT.10) THEN
19437             DO 660 I=NSHBEF+1,NSHAFT
19438               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD1,2)) NSD1=I
19439   660       CONTINUE
19440           ENDIF
19441           IF(K(NSD2,1).GT.10) THEN
19442             DO 670 I=NSHBEF+1,NSHAFT
19443               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD2,2).AND.
19444      &        I.NE.NSD1) NSD2=I
19445   670       CONTINUE
19446           ENDIF
19447           IF(KFL3(JT).NE.0.AND.K(NSD3,1).GT.10) THEN
19448             DO 680 I=NSHBEF+1,NSHAFT
19449               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD3,2).AND.
19450      &        I.NE.NSD1.AND.I.NE.NSD2) NSD3=I
19451   680       CONTINUE
19452           ENDIF
19453           IF(KFL4(JT).NE.0.AND.K(NSD4,1).GT.10) THEN
19454             DO 685 I=NSHBEF+1,NSHAFT
19455               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD4,2).AND.
19456      &        I.NE.NSD1.AND.I.NE.NSD2.AND.I.NE.NSD3) NSD4=I
19457   685       CONTINUE
19458           ENDIF
19459         ENDIF
19460  
19461 C...Store decay products for further treatment.
19462         IF(KFL4(JT).EQ.0) THEN
19463           NP=NP+1
19464           IREF(NP,1)=NSD1
19465           IREF(NP,2)=NSD2
19466           IREF(NP,3)=0
19467           IF(KFL3(JT).NE.0) IREF(NP,3)=NSD3
19468           IREF(NP,4)=IDOC+1
19469           IREF(NP,5)=IDOC+2
19470           IREF(NP,6)=0
19471           IF(KFL3(JT).NE.0) IREF(NP,6)=IDOC+3
19472           IREF(NP,7)=K(IREF(IP,JT),2)
19473           IREF(NP,8)=IREF(IP,JT)
19474         ELSE
19475           NSDA=NSD1
19476           NSDB=NSD2
19477           NSDC=NSD3
19478           NP=NP+1
19479           IREF(NP,4)=IDOC+1
19480           IREF(NP,5)=IDOC+2
19481           IREF(NP,6)=IDOC+3
19482           IF(K(NSD1,1).EQ.1) THEN
19483             NSDA=NSD4
19484             IREF(NP,4)=IDOC+4
19485           ELSEIF(K(NSD2,1).EQ.1) THEN
19486             NSDB=NSD4
19487             IREF(NP,5)=IDOC+4
19488           ELSEIF(K(NSD3,1).EQ.1) THEN
19489             NSDC=NSD4
19490             IREF(NP,6)=IDOC+4
19491           ENDIF
19492           IREF(NP,1)=NSDA
19493           IREF(NP,2)=NSDB
19494           IREF(NP,3)=NSDC
19495           IREF(NP,7)=K(IREF(IP,JT),2)
19496           IREF(NP,8)=IREF(IP,JT)
19497         ENDIF
19498   690 CONTINUE
19499  
19500  
19501 C...Fill information for 2 -> 1 -> 2.
19502   700 IF(JTMAX.EQ.1.AND.KDCY(1).NE.0.AND.ISUB.NE.0) THEN
19503         MINT(7)=MINT(83)+6+2*ISET(ISUB)
19504         MINT(8)=MINT(83)+7+2*ISET(ISUB)
19505         MINT(25)=KFL1(1)
19506         MINT(26)=KFL2(1)
19507         VINT(23)=CTHE(1)
19508         RM3=P(N-1,5)**2/SH
19509         RM4=P(N,5)**2/SH
19510         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
19511         VINT(45)=-0.5D0*SH*(1D0-RM3-RM4-BE34*CTHE(1))
19512         VINT(46)=-0.5D0*SH*(1D0-RM3-RM4+BE34*CTHE(1))
19513         VINT(48)=0.25D0*SH*BE34**2*MAX(0D0,1D0-CTHE(1)**2)
19514         VINT(47)=SQRT(VINT(48))
19515       ENDIF
19516  
19517 C...Possibility of colour rearrangement in W+W- events.
19518       IF((ISUB.EQ.25.OR.ISUB.EQ.22).AND.MSTP(115).GE.1) THEN
19519         IAKF1=IABS(KFL1(1))
19520         IAKF2=IABS(KFL1(2))
19521         IAKF3=IABS(KFL2(1))
19522         IAKF4=IABS(KFL2(2))
19523         IF(MIN(IAKF1,IAKF2,IAKF3,IAKF4).GE.1.AND.
19524      &  MAX(IAKF1,IAKF2,IAKF3,IAKF4).LE.5) CALL
19525      &  PYRECO(IREF(1,1),IREF(1,2),NSD(1),NAFT1)
19526         IF(MINT(51).NE.0) RETURN
19527       ENDIF
19528 
19529 C...Loop back if needed.
19530   710 IF(IP.LT.NP) GOTO 170
19531 
19532 C...Boost back to standard frame.
19533   720 IF(IBST.EQ.1) CALL PYROBO(MINT(83)+7,N,THEIN,PHIIN,BEXIN,BEYIN,
19534      &BEZIN)
19535 
19536  
19537       RETURN
19538       END
19539  
19540 C*********************************************************************
19541  
19542 C...PYMULT
19543 C...Initializes treatment of multiple interactions, selects kinematics
19544 C...of hardest interaction if low-pT physics included in run, and
19545 C...generates all non-hardest interactions.
19546  
19547       SUBROUTINE PYMULT(MMUL)
19548  
19549 C...Double precision and integer declarations.
19550       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19551       IMPLICIT INTEGER(I-N)
19552       INTEGER PYK,PYCHGE,PYCOMP
19553 C...Commonblocks.
19554       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
19555       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19556       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19557       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
19558       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19559       COMMON/PYINT1/MINT(400),VINT(400)
19560       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
19561       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
19562       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
19563       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
19564       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
19565      &/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/
19566 C...Local arrays and saved variables.
19567       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80)
19568       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM,P83A,P83B,P83C,
19569      &CQ2I,CQ2R,PIK,BDIV,B,PLOWB,PHIGHB,PALLB,S4A,S4B,S4C,POWIP,
19570      &RPWIP,B2RPDV,B2RPMX,BAVG,VNT145,VNT146,VNT147
19571  
19572 C...Initialization of multiple interaction treatment.
19573       IF(MMUL.EQ.1) THEN
19574         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
19575         ISUB=96
19576         MINT(1)=96
19577         VINT(63)=0D0
19578         VINT(64)=0D0
19579         VINT(143)=1D0
19580         VINT(144)=1D0
19581  
19582 C...Loop over phase space points: xT2 choice in 20 bins.
19583   100   SIGSUM=0D0
19584         DO 120 IXT2=1,20
19585           NMUL(IXT2)=MSTP(83)
19586           SIGM(IXT2)=0D0
19587           DO 110 ITRY=1,MSTP(83)
19588             RSCA=0.05D0*((21-IXT2)-PYR(0))
19589             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
19590             XT2=MAX(0.01D0*VINT(149),XT2)
19591             VINT(25)=XT2
19592  
19593 C...Choose tau and y*. Calculate cos(theta-hat).
19594             IF(PYR(0).LE.COEF(ISUB,1)) THEN
19595               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
19596               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
19597             ELSE
19598               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
19599             ENDIF
19600             VINT(21)=TAU
19601             CALL PYKLIM(2)
19602             RYST=PYR(0)
19603             MYST=1
19604             IF(RYST.GT.COEF(ISUB,8)) MYST=2
19605             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
19606             CALL PYKMAP(2,MYST,PYR(0))
19607             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
19608  
19609 C...Calculate differential cross-section.
19610             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
19611             CALL PYSIGH(NCHN,SIGS)
19612             SIGM(IXT2)=SIGM(IXT2)+SIGS
19613   110     CONTINUE
19614           SIGSUM=SIGSUM+SIGM(IXT2)
19615   120   CONTINUE
19616         SIGSUM=SIGSUM/(20D0*MSTP(83))
19617  
19618 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
19619         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
19620           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
19621      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
19622           PARP(82)=0.9D0*PARP(82)
19623           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
19624      &    VINT(2)
19625           GOTO 100
19626         ENDIF
19627         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
19628      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
19629  
19630 C...Start iteration to find k factor.
19631         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
19632         P83A=(1D0-PARP(83))**2
19633         P83B=2D0*PARP(83)*(1D0-PARP(83))
19634         P83C=PARP(83)**2
19635         CQ2I=1D0/PARP(84)**2
19636         CQ2R=2D0/(1D0+PARP(84)**2)
19637         SO=0.5D0
19638         XI=0D0
19639         YI=0D0
19640         XF=0D0
19641         YF=0D0
19642         XK=0.5D0
19643         IIT=0
19644   130   IF(IIT.EQ.0) THEN
19645           XK=2D0*XK
19646         ELSEIF(IIT.EQ.1) THEN
19647           XK=0.5D0*XK
19648         ELSE
19649           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
19650         ENDIF
19651  
19652 C...Evaluate overlap integrals. Find where to divide the b range.
19653         IF(MSTP(82).EQ.2) THEN
19654           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
19655           SOP=SP/PARU(1)
19656         ELSE
19657           IF(MSTP(82).EQ.3) THEN
19658             DELTAB=0.02D0
19659           ELSEIF(MSTP(82).EQ.4) THEN
19660             DELTAB=MIN(0.01D0,0.05D0*PARP(84))
19661           ELSE
19662             POWIP=MAX(0.4D0,PARP(83))
19663             RPWIP=2D0/POWIP-1D0
19664             DELTAB=MAX(0.02D0,0.02D0*(2D0/POWIP)**(1D0/POWIP))
19665             SO=0D0
19666           ENDIF
19667           SP=0D0
19668           SOP=0D0
19669           BSP=0D0
19670           SOHIGH=0D0
19671           IBDIV=0
19672           B=-0.5D0*DELTAB
19673   140     B=B+DELTAB
19674           IF(MSTP(82).EQ.3) THEN
19675             OV=EXP(-B**2)/PARU(2)
19676           ELSEIF(MSTP(82).EQ.4) THEN
19677             OV=(P83A*EXP(-MIN(50D0,B**2))+
19678      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
19679      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
19680           ELSE
19681             OV=EXP(-B**POWIP)/PARU(2)
19682             SO=SO+PARU(2)*B*DELTAB*OV
19683           ENDIF
19684           IF(IBDIV.EQ.1) SOHIGH=SOHIGH+PARU(2)*B*DELTAB*OV
19685           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
19686           SP=SP+PARU(2)*B*DELTAB*PACC
19687           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
19688           BSP=BSP+B*PARU(2)*B*DELTAB*PACC
19689           IF(IBDIV.EQ.0.AND.PARU(1)*XK*OV.LT.1D0) THEN
19690             IBDIV=1 
19691             BDIV=B+0.5D0*DELTAB
19692           ENDIF
19693           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
19694         ENDIF
19695         YK=PARU(1)*XK*SO/SP
19696  
19697 C...Continue iteration until convergence.
19698         IF(YK.LT.YKE) THEN
19699           XI=XK
19700           YI=YK
19701           IF(IIT.EQ.1) IIT=2
19702         ELSE
19703           XF=XK
19704           YF=YK
19705           IF(IIT.EQ.0) IIT=1
19706         ENDIF
19707         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
19708  
19709 C...Store some results for subsequent use.
19710         BAVG=BSP/SP
19711         VINT(145)=SIGSUM
19712         VINT(146)=SOP/SO
19713         VINT(147)=SOP/SP
19714         VNT145=VINT(145)
19715         VNT146=VINT(146)
19716         VNT147=VINT(147)
19717 C...PIK = PARU(1)*XK = (VINT(146)/VINT(147))*sigma_jet/sigma_nondiffr.
19718         PIK=(VNT146/VNT147)*YKE
19719 
19720 C...Find relative weight for low and high impact parameter.
19721       PLOWB=PARU(1)*BDIV**2
19722       IF(MSTP(82).EQ.3) THEN
19723         PHIGHB=PIK*0.5*EXP(-BDIV**2)
19724       ELSEIF(MSTP(82).EQ.4) THEN
19725         S4A=P83A*EXP(-BDIV**2)
19726         S4B=P83B*EXP(-BDIV**2*CQ2R)
19727         S4C=P83C*EXP(-BDIV**2*CQ2I)
19728         PHIGHB=PIK*0.5*(S4A+S4B+S4C)
19729       ELSEIF(PARP(83).GE.1.999D0) THEN
19730         PHIGHB=PIK*SOHIGH
19731         B2RPDV=BDIV**POWIP
19732       ELSE
19733         PHIGHB=PIK*SOHIGH
19734         B2RPDV=BDIV**POWIP
19735         B2RPMX=MAX(2D0*RPWIP,B2RPDV)
19736       ENDIF 
19737       PALLB=PLOWB+PHIGHB
19738  
19739 C...Initialize iteration in xT2 for hardest interaction.
19740       ELSEIF(MMUL.EQ.2) THEN
19741         VINT(145)=VNT145
19742         VINT(146)=VNT146
19743         VINT(147)=VNT147
19744         IF(MSTP(82).LE.0) THEN
19745         ELSEIF(MSTP(82).EQ.1) THEN
19746           XT2=1D0
19747           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
19748           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
19749      &    VINT(317)/(VINT(318)*VINT(320))
19750           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
19751         ELSEIF(MSTP(82).EQ.2) THEN
19752           XT2=1D0
19753           XT2FAC=VNT146*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
19754      &    VINT(149)*(1D0+VINT(149))
19755         ELSE
19756           XC2=4D0*CKIN(3)**2/VINT(2)
19757           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
19758         ENDIF
19759 
19760 C...Select impact parameter for hardest interaction.
19761         IF(MSTP(82).LE.2) RETURN
19762   142   IF(PYR(0)*PALLB.LT.PLOWB) THEN
19763 C...Treatment in low b region.
19764           MINT(39)=1
19765           B=BDIV*SQRT(PYR(0)) 
19766           IF(MSTP(82).EQ.3) THEN
19767             OV=EXP(-B**2)/PARU(2)
19768           ELSEIF(MSTP(82).EQ.4) THEN
19769             OV=(P83A*EXP(-MIN(50D0,B**2))+
19770      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
19771      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
19772           ELSE
19773             OV=EXP(-B**POWIP)/PARU(2)
19774           ENDIF  
19775           VINT(148)=OV/VNT147
19776           PACC=1D0-EXP(-MIN(50D0,PIK*OV))
19777           XT2=1D0
19778           XT2FAC=VNT146*VINT(148)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
19779      &    VINT(149)*(1D0+VINT(149))
19780         ELSE
19781 C...Treatment in high b region.
19782           MINT(39)=2
19783           IF(MSTP(82).EQ.3) THEN
19784             B=SQRT(BDIV**2-LOG(PYR(0)))
19785             OV=EXP(-B**2)/PARU(2)
19786           ELSEIF(MSTP(82).EQ.4) THEN
19787             S4RNDM=PYR(0)*(S4A+S4B+S4C)
19788             IF(S4RNDM.LT.S4A) THEN
19789               B=SQRT(BDIV**2-LOG(PYR(0)))
19790             ELSEIF(S4RNDM.LT.S4A+S4B) THEN
19791               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2R)
19792             ELSE
19793               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2I)
19794             ENDIF    
19795             OV=(P83A*EXP(-MIN(50D0,B**2))+
19796      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
19797      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
19798           ELSEIF(PARP(83).GE.1.999D0) THEN
19799   144       B2RPW=B2RPDV-LOG(PYR(0))
19800             ACCIP=(B2RPW/B2RPDV)**RPWIP
19801             IF(ACCIP.LT.PYR(0)) GOTO 144
19802             OV=EXP(-B2RPW)/PARU(2)
19803             B=B2RPW**(1D0/POWIP)
19804           ELSE
19805   146       B2RPW=B2RPDV-2D0*LOG(PYR(0))
19806             ACCIP=(B2RPW/B2RPMX)**RPWIP*EXP(-0.5D0*(B2RPW-B2RPMX))
19807             IF(ACCIP.LT.PYR(0)) GOTO 146
19808             OV=EXP(-B2RPW)/PARU(2)
19809             B=B2RPW**(1D0/POWIP)
19810           ENDIF  
19811           VINT(148)=OV/VNT147
19812           PACC=(1D0-EXP(-MIN(50D0,PIK*OV)))/(PIK*OV)
19813         ENDIF
19814         IF(PACC.LT.PYR(0)) GOTO 142
19815         VINT(139)=B/BAVG
19816  
19817       ELSEIF(MMUL.EQ.3) THEN
19818 C...Low-pT or multiple interactions (first semihard interaction):
19819 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
19820 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
19821         ISUB=MINT(1)
19822         VINT(145)=VNT145
19823         VINT(146)=VNT146
19824         VINT(147)=VNT147
19825         IF(MSTP(82).LE.0) THEN
19826           XT2=0D0
19827         ELSEIF(MSTP(82).EQ.1) THEN
19828           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
19829 C...Use with "Sudakov" for low b values when impact parameter dependence.
19830         ELSEIF(MSTP(82).EQ.2.OR.MINT(39).EQ.1) THEN
19831           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
19832      &    VINT(149)))).GT.PYR(0)) XT2=1D0
19833           IF(XT2.GE.1D0) THEN
19834             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
19835      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
19836      &      VINT(149)
19837           ELSE
19838             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
19839      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
19840      &      VINT(149)
19841           ENDIF
19842           XT2=MAX(0.01D0*VINT(149),XT2)
19843 C...Use without "Sudakov" for high b values when impact parameter dep.
19844         ELSE
19845           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
19846      &    PYR(0)*(1D0-XC2))-VINT(149)
19847           XT2=MAX(0.01D0*VINT(149),XT2)
19848         ENDIF
19849         VINT(25)=XT2
19850  
19851 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
19852         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
19853           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
19854           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
19855           ISUB=95
19856           MINT(1)=ISUB
19857           VINT(21)=0.01D0*VINT(149)
19858           VINT(22)=0D0
19859           VINT(23)=0D0
19860           VINT(25)=0.01D0*VINT(149)
19861  
19862         ELSE
19863 C...Multiple interactions (first semihard interaction).
19864 C...Choose tau and y*. Calculate cos(theta-hat).
19865           IF(PYR(0).LE.COEF(ISUB,1)) THEN
19866             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
19867             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
19868           ELSE
19869             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
19870           ENDIF
19871           VINT(21)=TAU
19872           CALL PYKLIM(2)
19873           RYST=PYR(0)
19874           MYST=1
19875           IF(RYST.GT.COEF(ISUB,8)) MYST=2
19876           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
19877           CALL PYKMAP(2,MYST,PYR(0))
19878           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
19879         ENDIF
19880         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
19881  
19882 C...Store results of cross-section calculation.
19883       ELSEIF(MMUL.EQ.4) THEN
19884         ISUB=MINT(1)
19885         VINT(145)=VNT145
19886         VINT(146)=VNT146
19887         VINT(147)=VNT147
19888         XTS=VINT(25)
19889         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
19890         IF(ISET(ISUB).EQ.2)
19891      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
19892         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
19893         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
19894      &  (XTS+VINT(149))))
19895         IRBIN=INT(1D0+20D0*RBIN)
19896         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
19897           NMUL(IRBIN)=NMUL(IRBIN)+1
19898           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
19899         ENDIF
19900  
19901 C...Choose impact parameter if not already done.
19902       ELSEIF(MMUL.EQ.5) THEN
19903         ISUB=MINT(1)
19904         VINT(145)=VNT145
19905         VINT(146)=VNT146
19906         VINT(147)=VNT147
19907   150   IF(MINT(39).GT.0) THEN
19908         ELSEIF(MSTP(82).EQ.3) THEN
19909           EXPB2=PYR(0)
19910           B2=-LOG(PYR(0))
19911           VINT(148)=EXPB2/(PARU(2)*VNT147)
19912           VINT(139)=SQRT(B2)/BAVG
19913         ELSEIF(MSTP(82).EQ.4) THEN
19914           RTYPE=PYR(0)
19915           IF(RTYPE.LT.P83A) THEN
19916             B2=-LOG(PYR(0))
19917           ELSEIF(RTYPE.LT.P83A+P83B) THEN
19918             B2=-LOG(PYR(0))/CQ2R
19919           ELSE
19920             B2=-LOG(PYR(0))/CQ2I
19921           ENDIF
19922           VINT(148)=(P83A*EXP(-MIN(50D0,B2))+
19923      &    P83B*CQ2R*EXP(-MIN(50D0,B2*CQ2R))+
19924      &    P83C*CQ2I*EXP(-MIN(50D0,B2*CQ2I)))/(PARU(2)*VNT147)
19925           VINT(139)=SQRT(B2)/BAVG
19926         ELSEIF(PARP(83).GE.1.999D0) THEN
19927           POWIP=MAX(2D0,PARP(83))
19928           RPWIP=2D0/POWIP-1D0
19929           PROB1=POWIP/(2D0*EXP(-1D0)+POWIP)
19930   160     IF(PYR(0).LT.PROB1) THEN
19931             B2RPW=PYR(0)**(0.5D0*POWIP)
19932             ACCIP=EXP(-B2RPW)
19933           ELSE
19934             B2RPW=1D0-LOG(PYR(0))
19935             ACCIP=B2RPW**RPWIP
19936           ENDIF
19937           IF(ACCIP.LT.PYR(0)) GOTO 160
19938           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
19939           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
19940         ELSE
19941           POWIP=MAX(0.4D0,PARP(83))
19942           RPWIP=2D0/POWIP-1D0
19943           PROB1=RPWIP/(RPWIP+2D0**RPWIP*EXP(-RPWIP))
19944   170     IF(PYR(0).LT.PROB1) THEN
19945             B2RPW=2D0*RPWIP*PYR(0)
19946             ACCIP=(B2RPW/RPWIP)**RPWIP*EXP(RPWIP-B2RPW)
19947           ELSE
19948             B2RPW=2D0*(RPWIP-LOG(PYR(0)))
19949             ACCIP=(0.5D0*B2RPW/RPWIP)**RPWIP*EXP(RPWIP-0.5D0*B2RPW)
19950           ENDIF
19951           IF(ACCIP.LT .PYR(0)) GOTO 170
19952           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
19953           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
19954         ENDIF
19955  
19956 C...Multiple interactions (variable impact parameter) : reject with
19957 C...probability exp(-overlap*cross-section above pT/normalization).
19958 C...Does not apply to low-b region, where "Sudakov" already included.
19959         VINT(150)=1D0 
19960         IF(MINT(39).NE.1) THEN
19961           RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
19962           SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
19963           DO 180 IBIN=IRBIN+1,20
19964             RNCOR=RNCOR+NMUL(IBIN)
19965             SIGCOR=SIGCOR+SIGM(IBIN)
19966   180     CONTINUE
19967           SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
19968           IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
19969           VINT(150)=EXP(-MIN(50D0,VNT146*VINT(148)*
19970      &    SIGABV/MAX(1D-10,SIGT(0,0,5))))
19971         ENDIF
19972         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
19973      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
19974      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
19975           IF(VINT(150).LT.PYR(0)) GOTO 150
19976           VINT(150)=1D0
19977         ENDIF
19978  
19979 C...Generate additional multiple semihard interactions.
19980       ELSEIF(MMUL.EQ.6) THEN
19981         ISUBSV=MINT(1)
19982         VINT(145)=VNT145
19983         VINT(146)=VNT146
19984         VINT(147)=VNT147
19985         DO 190 J=11,80
19986           VINTSV(J)=VINT(J)
19987   190   CONTINUE
19988         ISUB=96
19989         MINT(1)=96
19990         VINT(151)=0D0
19991         VINT(152)=0D0
19992  
19993 C...Reconstruct strings in hard scattering.
19994         NMAX=MINT(84)+4
19995         IF(ISET(ISUBSV).EQ.1) NMAX=MINT(84)+2
19996         IF(ISET(ISUBSV).EQ.11) NMAX=MINT(84)+2+MINT(3)
19997         NSTR=0
19998         DO 210 I=MINT(84)+1,NMAX
19999           KCS=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
20000           IF(KCS.EQ.0) GOTO 210
20001           DO 200 J=1,4
20002             IF(KCS.EQ.1.AND.(J.EQ.2.OR.J.EQ.4)) GOTO 200
20003             IF(KCS.EQ.-1.AND.(J.EQ.1.OR.J.EQ.3)) GOTO 200
20004             IF(J.LE.2) THEN
20005               IST=MOD(K(I,J+3)/MSTU(5),MSTU(5))
20006             ELSE
20007               IST=MOD(K(I,J+1),MSTU(5))
20008             ENDIF
20009             IF(IST.LT.MINT(84).OR.IST.GT.I) GOTO 200
20010             IF(KCHG(PYCOMP(K(IST,2)),2).EQ.0) GOTO 200
20011             NSTR=NSTR+1
20012             IF(J.EQ.1.OR.J.EQ.4) THEN
20013               KSTR(NSTR,1)=I
20014               KSTR(NSTR,2)=IST
20015             ELSE
20016               KSTR(NSTR,1)=IST
20017               KSTR(NSTR,2)=I
20018             ENDIF
20019   200     CONTINUE
20020   210   CONTINUE
20021  
20022 C...Set up starting values for iteration in xT2.
20023         XT2=4D0*VINT(62)/VINT(2)
20024         IF(MSTP(82).LE.1) THEN
20025           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
20026           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
20027      &    VINT(317)/(VINT(318)*VINT(320))
20028           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
20029         ELSE
20030           XT2FAC=VNT146*VINT(148)*XSEC(ISUB,1)/
20031      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
20032         ENDIF
20033         VINT(63)=0D0
20034         VINT(64)=0D0
20035         VINT(143)=1D0-VINT(141)
20036         VINT(144)=1D0-VINT(142)
20037  
20038 C...Iterate downwards in xT2.
20039   220   IF(MSTP(82).LE.1) THEN
20040           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
20041           IF(XT2.LT.VINT(149)) GOTO 270
20042         ELSE
20043           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 270
20044           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
20045      &    LOG(PYR(0)))-VINT(149)
20046           IF(XT2.LE.0D0) GOTO 270
20047           XT2=MAX(0.01D0*VINT(149),XT2)
20048         ENDIF
20049         VINT(25)=XT2
20050  
20051 C...Choose tau and y*. Calculate cos(theta-hat).
20052         IF(PYR(0).LE.COEF(ISUB,1)) THEN
20053           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20054           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20055         ELSE
20056           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20057         ENDIF
20058         VINT(21)=TAU
20059         CALL PYKLIM(2)
20060         RYST=PYR(0)
20061         MYST=1
20062         IF(RYST.GT.COEF(ISUB,8)) MYST=2
20063         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20064         CALL PYKMAP(2,MYST,PYR(0))
20065         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20066  
20067 C...Check that x not used up. Accept or reject kinematical variables.
20068         X1M=SQRT(TAU)*EXP(VINT(22))
20069         X2M=SQRT(TAU)*EXP(-VINT(22))
20070         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 220
20071         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
20072         CALL PYSIGH(NCHN,SIGS)
20073         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
20074         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 220
20075  
20076 C...Reset K, P and V vectors. Select some variables.
20077         DO 240 I=N+1,N+2
20078           DO 230 J=1,5
20079             K(I,J)=0
20080             P(I,J)=0D0
20081             V(I,J)=0D0
20082   230     CONTINUE
20083   240   CONTINUE
20084         RFLAV=PYR(0)
20085         PT=0.5D0*VINT(1)*SQRT(XT2)
20086         PHI=PARU(2)*PYR(0)
20087         CTH=VINT(23)
20088  
20089 C...Add first parton to event record.
20090         K(N+1,1)=3
20091         K(N+1,2)=21
20092         IF(RFLAV.GE.MAX(PARP(85),PARP(86))) K(N+1,2)=
20093      &  1+INT((2D0+PARJ(2))*PYR(0))
20094         P(N+1,1)=PT*COS(PHI)
20095         P(N+1,2)=PT*SIN(PHI)
20096         P(N+1,3)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)-VINT(42)*(1D0-CTH))
20097         P(N+1,4)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)+VINT(42)*(1D0-CTH))
20098         P(N+1,5)=0D0
20099  
20100 C...Add second parton to event record.
20101         K(N+2,1)=3
20102         K(N+2,2)=21
20103         IF(K(N+1,2).NE.21) K(N+2,2)=-K(N+1,2)
20104         P(N+2,1)=-P(N+1,1)
20105         P(N+2,2)=-P(N+1,2)
20106         P(N+2,3)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)-VINT(42)*(1D0+CTH))
20107         P(N+2,4)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)+VINT(42)*(1D0+CTH))
20108         P(N+2,5)=0D0
20109  
20110         IF(RFLAV.LT.PARP(85).AND.NSTR.GE.1) THEN
20111 C....Choose relevant string pieces to place gluons on.
20112           DO 260 I=N+1,N+2
20113             DMIN=1D8
20114             DO 250 ISTR=1,NSTR
20115               I1=KSTR(ISTR,1)
20116               I2=KSTR(ISTR,2)
20117               DIST=(P(I,4)*P(I1,4)-P(I,1)*P(I1,1)-P(I,2)*P(I1,2)-
20118      &        P(I,3)*P(I1,3))*(P(I,4)*P(I2,4)-P(I,1)*P(I2,1)-
20119      &        P(I,2)*P(I2,2)-P(I,3)*P(I2,3))/MAX(1D0,P(I1,4)*P(I2,4)-
20120      &        P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-P(I1,3)*P(I2,3))
20121               IF(ISTR.EQ.1.OR.DIST.LT.DMIN) THEN
20122                 DMIN=DIST
20123                 IST1=I1
20124                 IST2=I2
20125                 ISTM=ISTR
20126               ENDIF
20127   250       CONTINUE
20128  
20129 C....Colour flow adjustments, new string pieces.
20130             IF(K(IST1,4)/MSTU(5).EQ.IST2) K(IST1,4)=MSTU(5)*I+
20131      &      MOD(K(IST1,4),MSTU(5))
20132             IF(MOD(K(IST1,5),MSTU(5)).EQ.IST2) K(IST1,5)=
20133      &      MSTU(5)*(K(IST1,5)/MSTU(5))+I
20134             K(I,5)=MSTU(5)*IST1
20135             K(I,4)=MSTU(5)*IST2
20136             IF(K(IST2,5)/MSTU(5).EQ.IST1) K(IST2,5)=MSTU(5)*I+
20137      &      MOD(K(IST2,5),MSTU(5))
20138             IF(MOD(K(IST2,4),MSTU(5)).EQ.IST1) K(IST2,4)=
20139      &      MSTU(5)*(K(IST2,4)/MSTU(5))+I
20140             KSTR(ISTM,2)=I
20141             KSTR(NSTR+1,1)=I
20142             KSTR(NSTR+1,2)=IST2
20143             NSTR=NSTR+1
20144   260     CONTINUE
20145  
20146 C...String drawing and colour flow for gluon loop.
20147         ELSEIF(K(N+1,2).EQ.21) THEN
20148           K(N+1,4)=MSTU(5)*(N+2)
20149           K(N+1,5)=MSTU(5)*(N+2)
20150           K(N+2,4)=MSTU(5)*(N+1)
20151           K(N+2,5)=MSTU(5)*(N+1)
20152           KSTR(NSTR+1,1)=N+1
20153           KSTR(NSTR+1,2)=N+2
20154           KSTR(NSTR+2,1)=N+2
20155           KSTR(NSTR+2,2)=N+1
20156           NSTR=NSTR+2
20157  
20158 C...String drawing and colour flow for qqbar pair.
20159         ELSE
20160           K(N+1,4)=MSTU(5)*(N+2)
20161           K(N+2,5)=MSTU(5)*(N+1)
20162           KSTR(NSTR+1,1)=N+1
20163           KSTR(NSTR+1,2)=N+2
20164           NSTR=NSTR+1
20165         ENDIF
20166  
20167 C...Global statistics.
20168         MINT(351)=MINT(351)+1
20169         VINT(351)=VINT(351)+PT
20170         IF (MINT(351).EQ.1) VINT(356)=PT
20171  
20172 C...Update remaining energy; iterate.
20173         N=N+2
20174         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
20175           CALL PYERRM(11,'(PYMULT:) no more memory left in PYJETS')
20176           MINT(51)=1
20177           RETURN
20178         ENDIF
20179         MINT(31)=MINT(31)+1
20180         VINT(151)=VINT(151)+VINT(41)
20181         VINT(152)=VINT(152)+VINT(42)
20182         VINT(143)=VINT(143)-VINT(41)
20183         VINT(144)=VINT(144)-VINT(42)
20184 C...Allow FSR for UE (always handle with old showers)
20185         IF(MSTP(152).EQ.1) THEN
20186           M41SAV=MSTJ(41)
20187           IF (MSTJ(41).EQ.10) MSTJ(41)=2
20188           MSTJ(41)=MOD(MSTJ(41),10)
20189           CALL PYSHOW(N-1,N,SQRT(PARP(71))*PT)
20190           MSTJ(41)=M41SAV
20191         ENDIF
20192         IF(MINT(31).LT.240) GOTO 220
20193   270   CONTINUE
20194         MINT(1)=ISUBSV
20195         DO 280 J=11,80
20196           VINT(J)=VINTSV(J)
20197   280   CONTINUE
20198       ENDIF
20199  
20200 C...Format statements for printout.
20201  5000 FORMAT(/1X,'****** PYMULT: initialization of multiple inter',
20202      &'actions for MSTP(82) =',I2,' ******')
20203  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
20204      &D9.2,' mb: rejected')
20205  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
20206      &D9.2,' mb: accepted')
20207  
20208       RETURN
20209       END
20210  
20211 C*********************************************************************
20212  
20213 C...PYREMN
20214 C...Adds on target remnants (one or two from each side) and
20215 C...includes primordial kT for hadron beams.
20216  
20217       SUBROUTINE PYREMN(IPU1,IPU2)
20218  
20219 C...Double precision and integer declarations.
20220       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20221       IMPLICIT INTEGER(I-N)
20222       INTEGER PYK,PYCHGE,PYCOMP
20223 C...Commonblocks.
20224       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
20225       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
20226       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
20227       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
20228       COMMON/PYINT1/MINT(400),VINT(400)
20229       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
20230 C...Local arrays.
20231       DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
20232      &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
20233  
20234 C...Find event type and remaining energy.
20235       ISUB=MINT(1)
20236       NS=N
20237       IF(MINT(50).EQ.0.OR.MOD(MSTP(81),10).LE.0) THEN
20238         VINT(143)=1D0-VINT(141)
20239         VINT(144)=1D0-VINT(142)
20240       ENDIF
20241  
20242 C...Define initial partons.
20243       NTRY=0
20244   100 NTRY=NTRY+1
20245       DO 130 JT=1,2
20246         I=MINT(83)+JT+2
20247         IF(JT.EQ.1) IPU=IPU1
20248         IF(JT.EQ.2) IPU=IPU2
20249         K(I,1)=21
20250         K(I,2)=K(IPU,2)
20251         K(I,3)=I-2
20252         PMS(JT)=0D0
20253         VINT(156+JT)=0D0
20254         VINT(158+JT)=0D0
20255         IF(MINT(47).EQ.1) THEN
20256           DO 110 J=1,5
20257             P(I,J)=P(I-2,J)
20258   110     CONTINUE
20259         ELSEIF(ISUB.EQ.95) THEN
20260           K(I,2)=21
20261         ELSE
20262           P(I,5)=P(IPU,5)
20263  
20264 C...No primordial kT, or chosen according to truncated Gaussian or
20265 C...exponential, or (for photon) predetermined or power law.
20266   120     IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
20267             IF(MSTP(91).LE.0) THEN
20268               PT=0D0
20269             ELSEIF(MSTP(91).EQ.1) THEN
20270               PT=PARP(91)*SQRT(-LOG(PYR(0)))
20271             ELSE
20272               RPT1=PYR(0)
20273               RPT2=PYR(0)
20274               PT=-PARP(92)*LOG(RPT1*RPT2)
20275             ENDIF
20276             IF(PT.GT.PARP(93)) GOTO 120
20277           ELSEIF(MINT(106+JT).EQ.3) THEN
20278             PTA=SQRT(VINT(282+JT))
20279             PTB=0D0
20280             IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
20281               PTB=PARP(99)*SQRT(-LOG(PYR(0)))
20282             ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
20283               RPT1=PYR(0)
20284               RPT2=PYR(0)
20285               PTB=-PARP(99)*LOG(RPT1*RPT2)
20286             ENDIF
20287             IF(PTB.GT.PARP(100)) GOTO 120
20288             PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
20289             PT=PT*0.8D0**MINT(57)
20290             IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
20291           ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
20292             IF(MSTP(93).LE.0) THEN
20293               PT=0D0
20294             ELSEIF(MSTP(93).EQ.1) THEN
20295               PT=PARP(99)*SQRT(-LOG(PYR(0)))
20296             ELSEIF(MSTP(93).EQ.2) THEN
20297               RPT1=PYR(0)
20298               RPT2=PYR(0)
20299               PT=-PARP(99)*LOG(RPT1*RPT2)
20300             ELSEIF(MSTP(93).EQ.3) THEN
20301               HA=PARP(99)**2
20302               HB=PARP(100)**2
20303               PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
20304             ELSE
20305               HA=PARP(99)**2
20306               HB=PARP(100)**2
20307               IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
20308               PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
20309             ENDIF
20310             IF(PT.GT.PARP(100)) GOTO 120
20311           ELSE
20312             PT=0D0
20313           ENDIF
20314           VINT(156+JT)=PT
20315           PHI=PARU(2)*PYR(0)
20316           P(I,1)=PT*COS(PHI)
20317           P(I,2)=PT*SIN(PHI)
20318           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
20319         ENDIF
20320   130 CONTINUE
20321       IF(MINT(47).EQ.1) RETURN
20322  
20323 C...Kinematics construction for initial partons.
20324       I1=MINT(83)+3
20325       I2=MINT(83)+4
20326       IF(ISUB.EQ.95) THEN
20327         SHS=0D0
20328         SHR=0D0
20329       ELSE
20330         SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
20331      &  (P(I1,2)+P(I2,2))**2
20332         SHR=SQRT(MAX(0D0,SHS))
20333         IF((SHS-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2).LE.0D0) GOTO 100
20334         P(I1,4)=0.5D0*(SHR+(PMS(1)-PMS(2))/SHR)
20335         P(I1,3)=SQRT(MAX(0D0,P(I1,4)**2-PMS(1)))
20336         P(I2,4)=SHR-P(I1,4)
20337         P(I2,3)=-P(I1,3)
20338  
20339 C...Transform partons to overall CM-frame.
20340         ROBO(3)=(P(I1,1)+P(I2,1))/SHR
20341         ROBO(4)=(P(I1,2)+P(I2,2))/SHR
20342         CALL PYROBO(I1,I2,0D0,0D0,-ROBO(3),-ROBO(4),0D0)
20343         ROBO(2)=PYANGL(P(I1,1),P(I1,2))
20344         CALL PYROBO(I1,I2,0D0,-ROBO(2),0D0,0D0,0D0)
20345         ROBO(1)=PYANGL(P(I1,3),P(I1,1))
20346         CALL PYROBO(I1,I2,-ROBO(1),0D0,0D0,0D0,0D0)
20347         CALL PYROBO(I2+1,MINT(52),0D0,-ROBO(2),0D0,0D0,0D0)
20348         CALL PYROBO(I1,MINT(52),ROBO(1),ROBO(2),ROBO(3),ROBO(4),0D0)
20349         ROBO(5)=(VINT(141)-VINT(142))/(VINT(141)+VINT(142))
20350         CALL PYROBO(I1,MINT(52),0D0,0D0,0D0,0D0,ROBO(5))
20351       ENDIF
20352  
20353 C...Optionally fix up x and Q2 definitions for leptoproduction.
20354       IDISXQ=0
20355       IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
20356      &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
20357       IF(IDISXQ.EQ.1) THEN
20358  
20359 C...Find where incoming and outgoing leptons/partons are sitting.
20360         LESD=1
20361         IF(MINT(42).EQ.1) LESD=2
20362         LPIN=MINT(83)+3-LESD
20363         LEIN=MINT(84)+LESD
20364         LQIN=MINT(84)+3-LESD
20365         LEOUT=MINT(84)+2+LESD
20366         LQOUT=MINT(84)+5-LESD
20367         IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
20368         IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
20369         LSCMS=0
20370         DO 140 I=MINT(84)+5,N
20371           IF(K(I,2).EQ.94) THEN
20372             LSCMS=I
20373             LEOUT=I+LESD
20374             LQOUT=I+3-LESD
20375           ENDIF
20376   140   CONTINUE
20377         LQBG=IPU1
20378         IF(LESD.EQ.1) LQBG=IPU2
20379  
20380 C...Calculate actual and wanted momentum transfer.
20381         XNOM=VINT(43-LESD)
20382         Q2NOM=-VINT(45)
20383         HPK=2D0*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
20384      &  P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
20385      &  (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
20386         HPT2=MAX(0D0,Q2NOM*(1D0-Q2NOM/(XNOM*HPK)))
20387         FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
20388         P(N+1,1)=FAC*P(LEOUT,1)
20389         P(N+1,2)=FAC*P(LEOUT,2)
20390         P(N+1,3)=0.25D0*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
20391      &  Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
20392         P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
20393      &  P(N+1,3)**2)
20394         DO 150 J=1,4
20395           QOLD(J)=P(LEIN,J)-P(LEOUT,J)
20396           QNEW(J)=P(LEIN,J)-P(N+1,J)
20397   150   CONTINUE
20398  
20399 C...Boost outgoing electron and daughters.
20400         IF(LSCMS.EQ.0) THEN
20401           DO 160 J=1,4
20402             P(LEOUT,J)=P(N+1,J)
20403   160     CONTINUE
20404         ELSE
20405           DO 170 J=1,3
20406             P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
20407   170     CONTINUE
20408           PINV=2D0/(1D0+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
20409           DO 180 J=1,3
20410             DBE(J)=PINV*P(N+2,J)
20411   180     CONTINUE
20412           DO 200 I=LSCMS+1,N
20413             IORIG=I
20414   190       IORIG=K(IORIG,3)
20415             IF(IORIG.GT.LEOUT) GOTO 190
20416             IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
20417      &      CALL PYROBO(I,I,0D0,0D0,DBE(1),DBE(2),DBE(3))
20418   200     CONTINUE
20419         ENDIF
20420  
20421 C...Copy shower initiator and all outgoing partons.
20422         NCOP=N+1
20423         K(NCOP,3)=LQBG
20424         DO 210 J=1,5
20425           P(NCOP,J)=P(LQBG,J)
20426   210   CONTINUE
20427         DO 240 I=MINT(84)+1,N
20428           ICOP=0
20429           IF(K(I,1).GT.10) GOTO 240
20430           IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
20431             ICOP=I
20432           ELSE
20433             IORIG=I
20434   220       IORIG=K(IORIG,3)
20435             IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
20436               ICOP=IORIG
20437             ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
20438               GOTO 220
20439             ENDIF
20440           ENDIF
20441           IF(ICOP.NE.0) THEN
20442             NCOP=NCOP+1
20443             K(NCOP,3)=I
20444             DO 230 J=1,5
20445               P(NCOP,J)=P(I,J)
20446   230       CONTINUE
20447           ENDIF
20448   240   CONTINUE
20449  
20450 C...Calculate relative rescaling factors.
20451         SLC=3-2*LESD
20452         PLCSUM=0D0
20453         DO 250 I=N+2,NCOP
20454           PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
20455   250   CONTINUE
20456         DO 260 I=N+2,NCOP
20457           V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
20458   260   CONTINUE
20459  
20460 C...Transfer extra three-momentum of current.
20461         DO 280 I=N+2,NCOP
20462           DO 270 J=1,3
20463             P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
20464   270     CONTINUE
20465           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
20466   280   CONTINUE
20467  
20468 C...Iterate change of initiator momentum to get energy right.
20469         ITER=0
20470   290   ITER=ITER+1
20471         PEEX=-P(N+1,4)-QNEW(4)
20472         PEMV=-P(N+1,3)/P(N+1,4)
20473         DO 300 I=N+2,NCOP
20474           PEEX=PEEX+P(I,4)
20475           PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
20476   300   CONTINUE
20477         IF(ABS(PEMV).LT.1D-10) THEN
20478           MINT(51)=1
20479           MINT(57)=MINT(57)+1
20480           RETURN
20481         ENDIF
20482         PZCH=-PEEX/PEMV
20483         P(N+1,3)=P(N+1,3)+PZCH
20484         P(N+1,4)=SQRT(P(N+1,5)**2+P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
20485         DO 310 I=N+2,NCOP
20486           P(I,3)=P(I,3)+V(I,1)*PZCH
20487           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
20488   310   CONTINUE
20489         IF(ITER.LT.10.AND.ABS(PEEX).GT.1D-6*P(N+1,4)) GOTO 290
20490  
20491 C...Modify momenta in event record.
20492         HBE=2D0*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
20493      &  ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
20494         IF(ABS(HBE).GE.1D0) THEN
20495           MINT(51)=1
20496           MINT(57)=MINT(57)+1
20497           RETURN
20498         ENDIF
20499         I=MINT(83)+5-LESD
20500         CALL PYROBO(I,I,0D0,0D0,0D0,0D0,HBE)
20501         DO 330 I=N+1,NCOP
20502           ICOP=K(I,3)
20503           DO 320 J=1,4
20504             P(ICOP,J)=P(I,J)
20505   320     CONTINUE
20506   330   CONTINUE
20507       ENDIF
20508  
20509 C...Check minimum invariant mass of remnant system(s).
20510       PSYS(0,4)=P(I1,4)+P(I2,4)+0.5D0*VINT(1)*(VINT(151)+VINT(152))
20511       PSYS(0,3)=P(I1,3)+P(I2,3)+0.5D0*VINT(1)*(VINT(151)-VINT(152))
20512       PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
20513       PMIN(0)=SQRT(PMS(0))
20514       DO 340 JT=1,2
20515         PSYS(JT,4)=0.5D0*VINT(1)*VINT(142+JT)
20516         PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
20517         PMIN(JT)=0D0
20518         IF(MINT(44+JT).EQ.1) GOTO 340
20519         MINT(105)=MINT(102+JT)
20520         MINT(109)=MINT(106+JT)
20521         CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
20522         IF(MINT(51).NE.0) THEN
20523           MINT(57)=MINT(57)+1
20524           RETURN
20525         ENDIF
20526         IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLCH(JT))
20527         IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLSP(JT))
20528         IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5D0*PARP(111)
20529         PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
20530      &  P(MINT(83)+JT+2,2)**2)
20531   340 CONTINUE
20532       IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
20533      &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
20534      &PSYS(2,4))) THEN
20535         MINT(51)=1
20536         MINT(57)=MINT(57)+1
20537         RETURN
20538       ENDIF
20539  
20540 C...Loop over two remnants; skip if none there.
20541       I=NS
20542       DO 410 JT=1,2
20543         ISN(JT)=0
20544         IF(MINT(44+JT).EQ.1) GOTO 410
20545         IF(JT.EQ.1) IPU=IPU1
20546         IF(JT.EQ.2) IPU=IPU2
20547  
20548 C...Store first remnant parton.
20549         I=I+1
20550         IS(JT)=I
20551         ISN(JT)=1
20552         DO 350 J=1,5
20553           K(I,J)=0
20554           P(I,J)=0D0
20555           V(I,J)=0D0
20556   350   CONTINUE
20557         K(I,1)=1
20558         K(I,2)=KFLSP(JT)
20559         K(I,3)=MINT(83)+JT
20560         P(I,5)=PYMASS(K(I,2))
20561  
20562 C...First parton colour connections and kinematics.
20563         KCOL=KCHG(PYCOMP(KFLSP(JT)),2)
20564         IF(KCOL.EQ.2) THEN
20565           K(I,1)=3
20566           K(I,4)=MSTU(5)*IPU+IPU
20567           K(I,5)=MSTU(5)*IPU+IPU
20568           K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
20569           K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
20570         ELSEIF(KCOL.NE.0) THEN
20571           K(I,1)=3
20572           KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
20573           K(I,KFLS+3)=IPU
20574           K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
20575         ENDIF
20576         IF(KFLCH(JT).EQ.0) THEN
20577           P(I,1)=-P(MINT(83)+JT+2,1)
20578           P(I,2)=-P(MINT(83)+JT+2,2)
20579           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
20580           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
20581           P(I,3)=PSYS(JT,3)
20582           P(I,4)=PSYS(JT,4)
20583  
20584 C...When extra remnant parton or hadron: store extra remnant.
20585         ELSE
20586           I=I+1
20587           ISN(JT)=2
20588           DO 360 J=1,5
20589             K(I,J)=0
20590             P(I,J)=0D0
20591             V(I,J)=0D0
20592   360     CONTINUE
20593           K(I,1)=1
20594           K(I,2)=KFLCH(JT)
20595           K(I,3)=MINT(83)+JT
20596           P(I,5)=PYMASS(K(I,2))
20597  
20598 C...Find parton colour connections of extra remnant.
20599           KCOL=KCHG(PYCOMP(KFLCH(JT)),2)
20600           IF(KCOL.EQ.2) THEN
20601             K(I,1)=3
20602             K(I,4)=MSTU(5)*IPU+IPU
20603             K(I,5)=MSTU(5)*IPU+IPU
20604             K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
20605             K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
20606           ELSEIF(KCOL.NE.0) THEN
20607             K(I,1)=3
20608             KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
20609             K(I,KFLS+3)=IPU
20610             K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
20611           ENDIF
20612  
20613 C...Relative transverse momentum when two remnants.
20614           LOOP=0
20615   370     LOOP=LOOP+1
20616           CALL PYPTDI(1,P(I-1,1),P(I-1,2))
20617           IF(IABS(MINT(10+JT)).LT.20) THEN
20618             P(I-1,1)=0D0
20619             P(I-1,2)=0D0
20620           ELSE
20621             P(I-1,1)=P(I-1,1)-0.5D0*P(MINT(83)+JT+2,1)
20622             P(I-1,2)=P(I-1,2)-0.5D0*P(MINT(83)+JT+2,2)
20623           ENDIF
20624           PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
20625           P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
20626           P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
20627           PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
20628  
20629 C...Meson or baryon; photon as meson. For splitup below.
20630           IMB=1
20631           IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
20632  
20633 C***Relative distribution for electron into two electrons. Temporary!
20634           IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
20635      &    THEN
20636             CHI(JT)=PYR(0)
20637  
20638 C...Relative distribution of electron energy into electron plus parton.
20639           ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
20640             XHRD=VINT(140+JT)
20641             XE=VINT(154+JT)
20642             CHI(JT)=(XE-XHRD)/(1D0-XHRD)
20643  
20644 C...Relative distribution of energy for particle into two jets.
20645           ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
20646             CHIK=PARP(92+2*IMB)
20647             IF(MSTP(92).LE.1) THEN
20648               IF(IMB.EQ.1) CHI(JT)=PYR(0)
20649               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
20650             ELSEIF(MSTP(92).EQ.2) THEN
20651               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+CHIK))
20652             ELSEIF(MSTP(92).EQ.3) THEN
20653               CUT=2D0*0.3D0/VINT(1)
20654   380         CHI(JT)=PYR(0)**2
20655               IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25D0*
20656      &        (1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 380
20657             ELSEIF(MSTP(92).EQ.4) THEN
20658               CUT=2D0*0.3D0/VINT(1)
20659               CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
20660   390         CHIR=CUT*CUTR**PYR(0)
20661               CHI(JT)=(CHIR**2-CUT**2)/(2D0*CHIR)
20662               IF((1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 390
20663             ELSE
20664               CUT=2D0*0.3D0/VINT(1)
20665               CUTA=CUT**(1D0-PARP(98))
20666               CUTB=(1D0+CUT)**(1D0-PARP(98))
20667   400         CHI(JT)=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
20668               IF(((CHI(JT)+CUT)**2/(2D0*(CHI(JT)**2+CUT**2)))**
20669      &        (0.5D0*PARP(98))*(1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 400
20670             ENDIF
20671  
20672 C...Relative distribution of energy for particle into jet plus particle.
20673           ELSE
20674             IF(MSTP(94).LE.1) THEN
20675               IF(IMB.EQ.1) CHI(JT)=PYR(0)
20676               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
20677               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
20678             ELSEIF(MSTP(94).EQ.2) THEN
20679               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
20680               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
20681             ELSEIF(MSTP(94).EQ.3) THEN
20682               CALL PYZDIS(1,0,PMS(JT+4),ZZ)
20683               CHI(JT)=ZZ
20684             ELSE
20685               CALL PYZDIS(1000,0,PMS(JT+4),ZZ)
20686               CHI(JT)=ZZ
20687             ENDIF
20688           ENDIF
20689  
20690 C...Construct total transverse mass; reject if too large.
20691           CHI(JT)=MAX(1D-8,MIN(1D0-1D-8,CHI(JT)))
20692           PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1D0-CHI(JT))
20693           IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
20694             IF(LOOP.LT.100) THEN
20695               GOTO 370
20696             ELSE
20697               MINT(51)=1
20698               MINT(57)=MINT(57)+1
20699               RETURN
20700             ENDIF
20701           ENDIF
20702           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
20703           VINT(158+JT)=CHI(JT)
20704  
20705 C...Subdivide longitudinal momentum according to value selected above.
20706           PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
20707           P(IS(JT)+1,4)=0.5D0*(PW1+PMS(JT+4)/PW1)
20708           P(IS(JT)+1,3)=0.5D0*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
20709           P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
20710           P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
20711         ENDIF
20712   410 CONTINUE
20713       N=I
20714  
20715 C...Check if longitudinal boosts needed - if so pick two systems.
20716       PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
20717      &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
20718       IF(PDEV.LE.1D-6*VINT(1)) RETURN
20719       IF(ISN(1).EQ.0) THEN
20720         IR=0
20721         IL=2
20722       ELSEIF(ISN(2).EQ.0) THEN
20723         IR=1
20724         IL=0
20725       ELSEIF(VINT(143).GT.0.2D0.AND.VINT(144).GT.0.2D0) THEN
20726         IR=1
20727         IL=2
20728       ELSEIF(VINT(143).GT.0.2D0) THEN
20729         IR=1
20730         IL=0
20731       ELSEIF(VINT(144).GT.0.2D0) THEN
20732         IR=0
20733         IL=2
20734       ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
20735         IR=1
20736         IL=0
20737       ELSE
20738         IR=0
20739         IL=2
20740       ENDIF
20741       IG=3-IR-IL
20742  
20743 C...E+-pL wanted for system to be modified.
20744       IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
20745         PPB=VINT(1)
20746         PNB=VINT(1)
20747       ELSE
20748         PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
20749         PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
20750       ENDIF
20751  
20752 C...To keep x and Q2 in leptoproduction: do not count scattered lepton.
20753       IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
20754         PPB=PPB-(PSYS(0,4)+PSYS(0,3))
20755         PNB=PNB-(PSYS(0,4)-PSYS(0,3))
20756         DO 420 J=1,4
20757           PSYS(0,J)=0D0
20758   420   CONTINUE
20759         DO 450 I=MINT(84)+1,NS
20760           IF(K(I,1).GT.10) GOTO 450
20761           INCL=0
20762           IORIG=I
20763   430     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
20764           IORIG=K(IORIG,3)
20765           IF(IORIG.GT.LPIN) GOTO 430
20766           IF(INCL.EQ.0) GOTO 450
20767           DO 440 J=1,4
20768             PSYS(0,J)=PSYS(0,J)+P(I,J)
20769   440     CONTINUE
20770   450   CONTINUE
20771         PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
20772         PPB=PPB+(PSYS(0,4)+PSYS(0,3))
20773         PNB=PNB+(PSYS(0,4)-PSYS(0,3))
20774       ENDIF
20775  
20776 C...Construct longitudinal boosts.
20777       DPMTB=PPB*PNB
20778       DPMTR=PMS(IR)
20779       DPMTL=PMS(IL)
20780       DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
20781       IF(DSQLAM.LE.1D-6*DPMTB) THEN
20782         MINT(51)=1
20783         MINT(57)=MINT(57)+1
20784         RETURN
20785       ENDIF
20786       DSQSGN=SIGN(1D0,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
20787       DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
20788      &(2D0*(PSYS(IR,4)+PSYS(IR,3))*PNB)
20789       DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
20790      &(2D0*(PSYS(IL,4)-PSYS(IL,3))*PPB)
20791       DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
20792       DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
20793  
20794 C...Perform longitudinal boosts.
20795       IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
20796         P(IS(1),3)=0D0
20797         P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
20798       ELSEIF(IR.EQ.1) THEN
20799         CALL PYROBO(IS(1),IS(1)+ISN(1)-1,0D0,0D0,0D0,0D0,DBER)
20800       ELSEIF(IDISXQ.EQ.1) THEN
20801         DO 470 I=I1,NS
20802           INCL=0
20803           IORIG=I
20804   460     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
20805           IORIG=K(IORIG,3)
20806           IF(IORIG.GT.LPIN) GOTO 460
20807           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBER)
20808   470   CONTINUE
20809       ELSE
20810         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBER)
20811       ENDIF
20812       IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
20813         P(IS(2),3)=0D0
20814         P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
20815       ELSEIF(IL.EQ.2) THEN
20816         CALL PYROBO(IS(2),IS(2)+ISN(2)-1,0D0,0D0,0D0,0D0,DBEL)
20817       ELSEIF(IDISXQ.EQ.1) THEN
20818         DO 490 I=I1,NS
20819           INCL=0
20820           IORIG=I
20821   480     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
20822           IORIG=K(IORIG,3)
20823           IF(IORIG.GT.LPIN) GOTO 480
20824           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBEL)
20825   490   CONTINUE
20826       ELSE
20827         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBEL)
20828       ENDIF
20829  
20830 C...Final check that energy-momentum conservation worked.
20831       PESUM=0D0
20832       PZSUM=0D0
20833       DO 500 I=MINT(84)+1,N
20834         IF(K(I,1).GT.10) GOTO 500
20835         PESUM=PESUM+P(I,4)
20836         PZSUM=PZSUM+P(I,3)
20837   500 CONTINUE
20838       PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
20839       IF(PDEV.GT.1D-4*VINT(1)) THEN
20840         MINT(51)=1
20841         MINT(57)=MINT(57)+1
20842         RETURN
20843       ENDIF
20844  
20845 C...Calculate rotation and boost from overall CM frame to
20846 C...hadronic CM frame in leptoproduction.
20847       MINT(91)=0
20848       IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
20849         MINT(91)=1
20850         LESD=1
20851         IF(MINT(42).EQ.1) LESD=2
20852         LPIN=MINT(83)+3-LESD
20853  
20854 C...Sum upp momenta of everything not lepton or photon to define boost.
20855         DO 510 J=1,4
20856           PSUM(J)=0D0
20857   510   CONTINUE
20858         DO 530 I=1,N
20859           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
20860           IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
20861           IF(K(I,2).EQ.22) GOTO 530
20862           DO 520 J=1,4
20863             PSUM(J)=PSUM(J)+P(I,J)
20864   520     CONTINUE
20865   530   CONTINUE
20866         VINT(223)=-PSUM(1)/PSUM(4)
20867         VINT(224)=-PSUM(2)/PSUM(4)
20868         VINT(225)=-PSUM(3)/PSUM(4)
20869  
20870 C...Boost incoming hadron to hadronic CM frame to determine rotations.
20871         K(N+1,1)=1
20872         DO 540 J=1,5
20873           P(N+1,J)=P(LPIN,J)
20874           V(N+1,J)=V(LPIN,J)
20875   540   CONTINUE
20876         CALL PYROBO(N+1,N+1,0D0,0D0,VINT(223),VINT(224),VINT(225))
20877         VINT(222)=-PYANGL(P(N+1,1),P(N+1,2))
20878         CALL PYROBO(N+1,N+1,0D0,VINT(222),0D0,0D0,0D0)
20879         IF(LESD.EQ.2) THEN
20880           VINT(221)=-PYANGL(P(N+1,3),P(N+1,1))
20881         ELSE
20882           VINT(221)=PYANGL(-P(N+1,3),P(N+1,1))
20883         ENDIF
20884       ENDIF
20885  
20886       RETURN
20887       END
20888  
20889 C*********************************************************************
20890  
20891 C...PYMIGN
20892 C...Initializes treatment of new multiple interactions scenario,
20893 C...selects kinematics of hardest interaction if low-pT physics
20894 C...included in run, and generates all non-hardest interactions.
20895  
20896       SUBROUTINE PYMIGN(MMUL)
20897  
20898 C...Double precision and integer declarations.
20899       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20900       IMPLICIT INTEGER(I-N)
20901       INTEGER PYK,PYCHGE,PYCOMP
20902       EXTERNAL PYALPS
20903       DOUBLE PRECISION PYALPS
20904 C...Commonblocks.
20905       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
20906       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
20907       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
20908       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
20909       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
20910       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
20911       COMMON/PYINT1/MINT(400),VINT(400)
20912       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
20913       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
20914       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
20915       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
20916       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
20917      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
20918      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
20919       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
20920      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/,/PYINTM/
20921 C...Local arrays and saved variables.
20922       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80),
20923      &WDTP(0:400),WDTE(0:400,0:5),XPQ(-25:25),KSAV(4,5),PSAV(4,5)
20924       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM,P83A,P83B,P83C,
20925      &CQ2I,CQ2R,PIK,BDIV,B,PLOWB,PHIGHB,PALLB,S4A,S4B,S4C,POWIP,
20926      &RPWIP,B2RPDV,B2RPMX,BAVG,VNT145,VNT146,VNT147
20927  
20928 C...Initialization of multiple interaction treatment.
20929       IF(MMUL.EQ.1) THEN
20930         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
20931         ISUB=96
20932         MINT(1)=96
20933         VINT(63)=0D0
20934         VINT(64)=0D0
20935         VINT(143)=1D0
20936         VINT(144)=1D0
20937  
20938 C...Loop over phase space points: xT2 choice in 20 bins.
20939   100   SIGSUM=0D0
20940         DO 120 IXT2=1,20
20941           NMUL(IXT2)=MSTP(83)
20942           SIGM(IXT2)=0D0
20943           DO 110 ITRY=1,MSTP(83)
20944             RSCA=0.05D0*((21-IXT2)-PYR(0))
20945             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
20946             XT2=MAX(0.01D0*VINT(149),XT2)
20947             VINT(25)=XT2
20948  
20949 C...Choose tau and y*. Calculate cos(theta-hat).
20950             IF(PYR(0).LE.COEF(ISUB,1)) THEN
20951               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20952               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20953             ELSE
20954               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20955             ENDIF
20956             VINT(21)=TAU
20957             CALL PYKLIM(2)
20958             RYST=PYR(0)
20959             MYST=1
20960             IF(RYST.GT.COEF(ISUB,8)) MYST=2
20961             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20962             CALL PYKMAP(2,MYST,PYR(0))
20963             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20964  
20965 C...Calculate differential cross-section.
20966             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
20967             CALL PYSIGH(NCHN,SIGS)
20968             SIGM(IXT2)=SIGM(IXT2)+SIGS
20969   110     CONTINUE
20970           SIGSUM=SIGSUM+SIGM(IXT2)
20971   120   CONTINUE
20972         SIGSUM=SIGSUM/(20D0*MSTP(83))
20973  
20974 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
20975         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
20976           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
20977      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
20978           PARP(82)=0.9D0*PARP(82)
20979           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
20980      &    VINT(2)
20981           GOTO 100
20982         ENDIF
20983         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
20984      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
20985  
20986 C...Start iteration to find k factor.
20987         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
20988         P83A=(1D0-PARP(83))**2
20989         P83B=2D0*PARP(83)*(1D0-PARP(83))
20990         P83C=PARP(83)**2
20991         CQ2I=1D0/PARP(84)**2
20992         CQ2R=2D0/(1D0+PARP(84)**2)
20993         SO=0.5D0
20994         XI=0D0
20995         YI=0D0
20996         XF=0D0
20997         YF=0D0
20998         XK=0.5D0
20999         IIT=0
21000   130   IF(IIT.EQ.0) THEN
21001           XK=2D0*XK
21002         ELSEIF(IIT.EQ.1) THEN
21003           XK=0.5D0*XK
21004         ELSE
21005           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
21006         ENDIF
21007  
21008 C...Evaluate overlap integrals. Find where to divide the b range.
21009         IF(MSTP(82).EQ.2) THEN
21010           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
21011           SOP=SP/PARU(1)
21012         ELSE
21013           IF(MSTP(82).EQ.3) THEN
21014             DELTAB=0.02D0
21015           ELSEIF(MSTP(82).EQ.4) THEN
21016             DELTAB=MIN(0.01D0,0.05D0*PARP(84))
21017           ELSE
21018             POWIP=MAX(0.4D0,PARP(83))
21019             RPWIP=2D0/POWIP-1D0
21020             DELTAB=MAX(0.02D0,0.02D0*(2D0/POWIP)**(1D0/POWIP))
21021             SO=0D0
21022           ENDIF
21023           SP=0D0
21024           SOP=0D0
21025           BSP=0D0
21026           SOHIGH=0D0
21027           IBDIV=0
21028           B=-0.5D0*DELTAB
21029   140     B=B+DELTAB
21030           IF(MSTP(82).EQ.3) THEN
21031             OV=EXP(-B**2)/PARU(2)
21032           ELSEIF(MSTP(82).EQ.4) THEN
21033             OV=(P83A*EXP(-MIN(50D0,B**2))+
21034      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
21035      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
21036           ELSE
21037             OV=EXP(-B**POWIP)/PARU(2)
21038             SO=SO+PARU(2)*B*DELTAB*OV
21039           ENDIF
21040           IF(IBDIV.EQ.1) SOHIGH=SOHIGH+PARU(2)*B*DELTAB*OV
21041           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
21042           SP=SP+PARU(2)*B*DELTAB*PACC
21043           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
21044           BSP=BSP+B*PARU(2)*B*DELTAB*PACC
21045           IF(IBDIV.EQ.0.AND.PARU(1)*XK*OV.LT.1D0) THEN
21046             IBDIV=1 
21047             BDIV=B+0.5D0*DELTAB
21048           ENDIF
21049           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
21050         ENDIF
21051         YK=PARU(1)*XK*SO/SP
21052  
21053 C...Continue iteration until convergence.
21054         IF(YK.LT.YKE) THEN
21055           XI=XK
21056           YI=YK
21057           IF(IIT.EQ.1) IIT=2
21058         ELSE
21059           XF=XK
21060           YF=YK
21061           IF(IIT.EQ.0) IIT=1
21062         ENDIF
21063         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
21064  
21065 C...Store some results for subsequent use.
21066         BAVG=BSP/SP
21067         VINT(145)=SIGSUM
21068         VINT(146)=SOP/SO
21069         VINT(147)=SOP/SP
21070         VNT145=VINT(145)
21071         VNT146=VINT(146)
21072         VNT147=VINT(147)
21073 C...PIK = PARU(1)*XK = (VINT(146)/VINT(147))*sigma_jet/sigma_nondiffr.
21074         PIK=(VNT146/VNT147)*YKE
21075 
21076 C...Find relative weight for low and high impact parameter..
21077       PLOWB=PARU(1)*BDIV**2
21078       IF(MSTP(82).EQ.3) THEN
21079         PHIGHB=PIK*0.5*EXP(-BDIV**2)
21080       ELSEIF(MSTP(82).EQ.4) THEN
21081         S4A=P83A*EXP(-BDIV**2)
21082         S4B=P83B*EXP(-BDIV**2*CQ2R)
21083         S4C=P83C*EXP(-BDIV**2*CQ2I)
21084         PHIGHB=PIK*0.5*(S4A+S4B+S4C)
21085       ELSEIF(PARP(83).GE.1.999D0) THEN
21086         PHIGHB=PIK*SOHIGH
21087         B2RPDV=BDIV**POWIP
21088       ELSE
21089         PHIGHB=PIK*SOHIGH
21090         B2RPDV=BDIV**POWIP
21091         B2RPMX=MAX(2D0*RPWIP,B2RPDV)
21092       ENDIF 
21093       PALLB=PLOWB+PHIGHB
21094  
21095 C...Initialize iteration in xT2 for hardest interaction.
21096       ELSEIF(MMUL.EQ.2) THEN
21097         VINT(145)=VNT145
21098         VINT(146)=VNT146
21099         VINT(147)=VNT147
21100         IF(MSTP(82).LE.0) THEN
21101         ELSEIF(MSTP(82).EQ.1) THEN
21102           XT2=1D0
21103           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
21104           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
21105      &    VINT(317)/(VINT(318)*VINT(320))
21106           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
21107         ELSEIF(MSTP(82).EQ.2) THEN
21108           XT2=1D0
21109           XT2FAC=VNT146*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
21110      &    VINT(149)*(1D0+VINT(149))
21111         ELSE
21112           XC2=4D0*CKIN(3)**2/VINT(2)
21113           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
21114         ENDIF
21115 
21116 C...Select impact parameter for hardest interaction.
21117         IF(MSTP(82).LE.2) RETURN
21118   142   IF(PYR(0)*PALLB.LT.PLOWB) THEN
21119 C...Treatment in low b region.
21120           MINT(39)=1
21121           B=BDIV*SQRT(PYR(0)) 
21122           IF(MSTP(82).EQ.3) THEN
21123             OV=EXP(-B**2)/PARU(2)
21124           ELSEIF(MSTP(82).EQ.4) THEN
21125             OV=(P83A*EXP(-MIN(50D0,B**2))+
21126      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
21127      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
21128           ELSE
21129             OV=EXP(-B**POWIP)/PARU(2)
21130           ENDIF  
21131           VINT(148)=OV/VNT147
21132           PACC=1D0-EXP(-MIN(50D0,PIK*OV))
21133           XT2=1D0
21134           XT2FAC=VNT146*VINT(148)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
21135      &    VINT(149)*(1D0+VINT(149))
21136         ELSE
21137 C...Treatment in high b region.
21138           MINT(39)=2
21139           IF(MSTP(82).EQ.3) THEN
21140             B=SQRT(BDIV**2-LOG(PYR(0)))
21141             OV=EXP(-B**2)/PARU(2)
21142           ELSEIF(MSTP(82).EQ.4) THEN
21143             S4RNDM=PYR(0)*(S4A+S4B+S4C)
21144             IF(S4RNDM.LT.S4A) THEN
21145               B=SQRT(BDIV**2-LOG(PYR(0)))
21146             ELSEIF(S4RNDM.LT.S4A+S4B) THEN
21147               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2R)
21148             ELSE
21149               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2I)
21150             ENDIF    
21151             OV=(P83A*EXP(-MIN(50D0,B**2))+
21152      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
21153      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
21154           ELSEIF(PARP(83).GE.1.999D0) THEN
21155   144       B2RPW=B2RPDV-LOG(PYR(0))
21156             ACCIP=(B2RPW/B2RPDV)**RPWIP
21157             IF(ACCIP.LT.PYR(0)) GOTO 144
21158             OV=EXP(-B2RPW)/PARU(2)
21159             B=B2RPW**(1D0/POWIP)
21160           ELSE
21161   146       B2RPW=B2RPDV-2D0*LOG(PYR(0))
21162             ACCIP=(B2RPW/B2RPMX)**RPWIP*EXP(-0.5D0*(B2RPW-B2RPMX))
21163             IF(ACCIP.LT.PYR(0)) GOTO 146
21164             OV=EXP(-B2RPW)/PARU(2)
21165             B=B2RPW**(1D0/POWIP)
21166           ENDIF  
21167           VINT(148)=OV/VNT147
21168           PACC=(1D0-EXP(-MIN(50D0,PIK*OV)))/(PIK*OV)
21169         ENDIF
21170         IF(PACC.LT.PYR(0)) GOTO 142
21171         VINT(139)=B/BAVG
21172  
21173       ELSEIF(MMUL.EQ.3) THEN
21174 C...Low-pT or multiple interactions (first semihard interaction):
21175 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
21176 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
21177         ISUB=MINT(1)
21178         VINT(145)=VNT145
21179         VINT(146)=VNT146
21180         VINT(147)=VNT147
21181         IF(MSTP(82).LE.0) THEN
21182           XT2=0D0
21183         ELSEIF(MSTP(82).EQ.1) THEN
21184           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
21185 C...Use with "Sudakov" for low b values when impact parameter dependence.
21186         ELSEIF(MSTP(82).EQ.2.OR.MINT(39).EQ.1) THEN
21187           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
21188      &    VINT(149)))).GT.PYR(0)) XT2=1D0
21189           IF(XT2.GE.1D0) THEN
21190             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
21191      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
21192      &      VINT(149)
21193           ELSE
21194             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
21195      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
21196      &      VINT(149)
21197           ENDIF
21198           XT2=MAX(0.01D0*VINT(149),XT2)
21199 C...Use without "Sudakov" for high b values when impact parameter dep.
21200         ELSE
21201           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
21202      &    PYR(0)*(1D0-XC2))-VINT(149)
21203           XT2=MAX(0.01D0*VINT(149),XT2)
21204         ENDIF
21205         VINT(25)=XT2
21206  
21207 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
21208         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
21209           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
21210           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
21211           ISUB=95
21212           MINT(1)=ISUB
21213           VINT(21)=1D-12*VINT(149)
21214           VINT(22)=0D0
21215           VINT(23)=0D0
21216           VINT(25)=1D-12*VINT(149)
21217  
21218         ELSE
21219 C...Multiple interactions (first semihard interaction).
21220 C...Choose tau and y*. Calculate cos(theta-hat).
21221           IF(PYR(0).LE.COEF(ISUB,1)) THEN
21222             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
21223             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
21224           ELSE
21225             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
21226           ENDIF
21227           VINT(21)=TAU
21228           CALL PYKLIM(2)
21229           RYST=PYR(0)
21230           MYST=1
21231           IF(RYST.GT.COEF(ISUB,8)) MYST=2
21232           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
21233           CALL PYKMAP(2,MYST,PYR(0))
21234           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
21235         ENDIF
21236         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
21237  
21238 C...Store results of cross-section calculation.
21239       ELSEIF(MMUL.EQ.4) THEN
21240         ISUB=MINT(1)
21241         VINT(145)=VNT145
21242         VINT(146)=VNT146
21243         VINT(147)=VNT147
21244         XTS=VINT(25)
21245         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
21246         IF(ISET(ISUB).EQ.2)
21247      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
21248         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
21249         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
21250      &  (XTS+VINT(149))))
21251         IRBIN=INT(1D0+20D0*RBIN)
21252         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
21253           NMUL(IRBIN)=NMUL(IRBIN)+1
21254           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
21255         ENDIF
21256  
21257 C...Choose impact parameter if not already done.
21258       ELSEIF(MMUL.EQ.5) THEN
21259         ISUB=MINT(1)
21260         VINT(145)=VNT145
21261         VINT(146)=VNT146
21262         VINT(147)=VNT147
21263   150   IF(MINT(39).GT.0) THEN
21264         ELSEIF(MSTP(82).EQ.3) THEN
21265           EXPB2=PYR(0)
21266           B2=-LOG(PYR(0))
21267           VINT(148)=EXPB2/(PARU(2)*VNT147)
21268           VINT(139)=SQRT(B2)/BAVG
21269         ELSEIF(MSTP(82).EQ.4) THEN
21270           RTYPE=PYR(0)
21271           IF(RTYPE.LT.P83A) THEN
21272             B2=-LOG(PYR(0))
21273           ELSEIF(RTYPE.LT.P83A+P83B) THEN
21274             B2=-LOG(PYR(0))/CQ2R
21275           ELSE
21276             B2=-LOG(PYR(0))/CQ2I
21277           ENDIF
21278           VINT(148)=(P83A*EXP(-MIN(50D0,B2))+
21279      &    P83B*CQ2R*EXP(-MIN(50D0,B2*CQ2R))+
21280      &    P83C*CQ2I*EXP(-MIN(50D0,B2*CQ2I)))/(PARU(2)*VNT147)
21281           VINT(139)=SQRT(B2)/BAVG
21282         ELSEIF(PARP(83).GE.1.999D0) THEN
21283           POWIP=MAX(2D0,PARP(83))
21284           RPWIP=2D0/POWIP-1D0
21285           PROB1=POWIP/(2D0*EXP(-1D0)+POWIP)
21286   160     IF(PYR(0).LT.PROB1) THEN
21287             B2RPW=PYR(0)**(0.5D0*POWIP)
21288             ACCIP=EXP(-B2RPW)
21289           ELSE
21290             B2RPW=1D0-LOG(PYR(0))
21291             ACCIP=B2RPW**RPWIP
21292           ENDIF
21293           IF(ACCIP.LT.PYR(0)) GOTO 160
21294           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
21295           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
21296         ELSE
21297           POWIP=MAX(0.4D0,PARP(83))
21298           RPWIP=2D0/POWIP-1D0
21299           PROB1=RPWIP/(RPWIP+2D0**RPWIP*EXP(-RPWIP))
21300   170     IF(PYR(0).LT.PROB1) THEN
21301             B2RPW=2D0*RPWIP*PYR(0)
21302             ACCIP=(B2RPW/RPWIP)**RPWIP*EXP(RPWIP-B2RPW)
21303           ELSE
21304             B2RPW=2D0*(RPWIP-LOG(PYR(0)))
21305             ACCIP=(0.5D0*B2RPW/RPWIP)**RPWIP*EXP(RPWIP-0.5D0*B2RPW)
21306           ENDIF
21307           IF(ACCIP.LT .PYR(0)) GOTO 170
21308           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
21309           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
21310         ENDIF
21311  
21312 C...Multiple interactions (variable impact parameter) : reject with
21313 C...probability exp(-overlap*cross-section above pT/normalization).
21314 C...Does not apply to low-b region, where "Sudakov" already included.
21315         VINT(150)=1D0 
21316         IF(MINT(39).NE.1) THEN
21317           RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
21318           SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
21319           DO 180 IBIN=IRBIN+1,20
21320             RNCOR=RNCOR+NMUL(IBIN)
21321             SIGCOR=SIGCOR+SIGM(IBIN)
21322   180     CONTINUE
21323           SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
21324           IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
21325           VINT(150)=EXP(-MIN(50D0,VNT146*VINT(148)*
21326      &    SIGABV/MAX(1D-10,SIGT(0,0,5))))
21327         ENDIF
21328         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
21329      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
21330      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
21331           IF(VINT(150).LT.PYR(0)) GOTO 150
21332           VINT(150)=1D0
21333         ENDIF
21334  
21335 C...Generate additional multiple semihard interactions.
21336       ELSEIF(MMUL.EQ.6) THEN
21337  
21338 C...Save data for hardest initeraction, to be restored.
21339         ISUBSV=MINT(1)
21340         VINT(145)=VNT145
21341         VINT(146)=VNT146
21342         VINT(147)=VNT147
21343         M13SV=MINT(13)
21344         M14SV=MINT(14)
21345         M15SV=MINT(15)
21346         M16SV=MINT(16)
21347         M21SV=MINT(21)
21348         M22SV=MINT(22)
21349         DO 190 J=11,80
21350           VINTSV(J)=VINT(J)
21351   190   CONTINUE
21352         V141SV=VINT(141)
21353         V142SV=VINT(142)
21354  
21355 C...Store data on hardest interaction.
21356         XMI(1,1)=VINT(141)
21357         XMI(2,1)=VINT(142)
21358         PT2MI(1)=VINT(54)
21359         IMISEP(0)=MINT(84)
21360         IMISEP(1)=N
21361  
21362 C...Change process to generate; sum of x values so far.
21363         ISUB=96
21364         MINT(1)=96
21365         VINT(143)=1D0-VINT(141)
21366         VINT(144)=1D0-VINT(142)
21367         VINT(151)=0D0
21368         VINT(152)=0D0
21369  
21370 C...Initialize factors for PDF reshaping.
21371         DO 230 JS=1,2
21372           KFBEAM=MINT(10+JS)
21373           KFABM=IABS(KFBEAM)
21374           KFSBM=ISIGN(1,KFBEAM)
21375  
21376 C...Zero flavour content of incoming beam particle.
21377           KFIVAL(JS,1)=0
21378           KFIVAL(JS,2)=0
21379           KFIVAL(JS,3)=0
21380 C...Flavour content of baryon.
21381           IF(KFABM.GT.1000) THEN
21382             KFIVAL(JS,1)=KFSBM*MOD(KFABM/1000,10)
21383             KFIVAL(JS,2)=KFSBM*MOD(KFABM/100,10)
21384             KFIVAL(JS,3)=KFSBM*MOD(KFABM/10,10)
21385 C...Flavour content of pi+-, K+-.
21386           ELSEIF(KFABM.EQ.211) THEN
21387             KFIVAL(JS,1)=KFSBM*2
21388             KFIVAL(JS,2)=-KFSBM
21389           ELSEIF(KFABM.EQ.321) THEN
21390             KFIVAL(JS,1)=-KFSBM*3
21391             KFIVAL(JS,2)=KFSBM*2
21392 C...Flavour content of pi0, gamma, K0S, K0L not defined yet.
21393           ENDIF
21394  
21395 C...Zero initial valence and companion content.
21396           DO 200 IFL=-6,6
21397             NVC(JS,IFL)=0
21398   200     CONTINUE
21399  
21400 C...Initiate listing of all incoming partons from two sides.
21401           NMI(JS)=0
21402           DO 210 I=MINT(84)+1,N
21403             IF(K(I,3).EQ.MINT(83)+2+JS) THEN
21404               IMI(JS,1,1)=I
21405               IMI(JS,1,2)=0
21406             ENDIF
21407   210     CONTINUE
21408  
21409 C...Decide whether quarks in hard scattering were valence or sea.
21410           IFL=K(IMI(JS,1,1),2)
21411           IF (IABS(IFL).GT.6) GOTO 230
21412  
21413 C...Get PDFs at X and Q2 of the parton shower initiator for the
21414 C...hard scattering.
21415           X=VINT(140+JS)
21416           IF(MSTP(61).GE.1) THEN
21417             Q2=PARP(62)**2
21418           ELSE
21419             Q2=VINT(54)
21420           ENDIF
21421 C...Note: XPSVC = x*pdf.
21422           MINT(30)=JS
21423           CALL PYPDFU(KFBEAM,X,Q2,XPQ)
21424           SEA=XPSVC(IFL,-1)
21425           VAL=XPSVC(IFL,0)
21426  
21427 C...Decide (Extra factor x cancels in the division).
21428           RVCS=PYR(0)*(SEA+VAL)
21429           IVNOW=1
21430   220     IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
21431 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
21432             IVNOW=0
21433             IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
21434             IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
21435             IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
21436             IF(KFIVAL(JS,1).EQ.0) THEN
21437               IF(KFBEAM.EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
21438               IF(KFBEAM.EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
21439               IF((KFBEAM.EQ.130.OR.KFBEAM.EQ.310).AND.
21440      &        (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
21441             ENDIF
21442             IF(IVNOW.EQ.0) GOTO 220
21443 C...Mark valence.
21444             IMI(JS,1,2)=0
21445 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
21446             IF(KFIVAL(JS,1).EQ.0) THEN
21447               IF(KFBEAM.EQ.111.OR.KFBEAM.EQ.22) THEN
21448                 KFIVAL(JS,1)=IFL
21449                 KFIVAL(JS,2)=-IFL
21450               ELSEIF(KFBEAM.EQ.130.OR.KFBEAM.EQ.310) THEN
21451                 KFIVAL(JS,1)=IFL
21452                 IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
21453                 IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
21454               ENDIF
21455             ENDIF
21456  
21457 C...If sea, add opposite sign companion parton. Store X and I.
21458           ELSE
21459             NVC(JS,-IFL)=NVC(JS,-IFL)+1
21460             XASSOC(JS,-IFL,NVC(JS,-IFL))=X
21461 C...Set pointer to companion
21462             IMI(JS,1,2)=-NVC(JS,-IFL)
21463           ENDIF
21464   230   CONTINUE
21465  
21466 C...Update counter number of multiple interactions.
21467         NMI(1)=1
21468         NMI(2)=1
21469  
21470 C...Set up starting values for iteration in xT2.
21471         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
21472      &  ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
21473      &  ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
21474      &  ISUBSV.NE.96)) THEN
21475           XT2=(1D0-VINT(141))*(1D0-VINT(142))
21476         ELSE
21477           XT2=VINT(25)
21478           IF(ISET(ISUBSV).EQ.1) XT2=VINT(21)
21479           IF(ISET(ISUBSV).EQ.2)
21480      &    XT2=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
21481           IF(ISET(ISUBSV).GE.3.AND.ISET(ISUBSV).LE.5) XT2=VINT(26)
21482         ENDIF
21483         IF(MSTP(82).LE.1) THEN
21484           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
21485           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
21486      &    VINT(317)/(VINT(318)*VINT(320))
21487           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
21488         ELSE
21489           XT2FAC=VNT146*VINT(148)*XSEC(ISUB,1)/
21490      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
21491         ENDIF
21492         VINT(63)=0D0
21493         VINT(64)=0D0
21494  
21495 C...Iterate downwards in xT2.
21496   240   IF((MINT(35).EQ.2.AND.MSTP(81).EQ.10).OR.ISUBSV.EQ.95) THEN
21497           XT2=0D0
21498           GOTO 440
21499         ELSEIF(MSTP(82).LE.1) THEN
21500           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
21501           IF(XT2.LT.VINT(149)) GOTO 440
21502         ELSE
21503           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 440
21504           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
21505      &    LOG(PYR(0)))-VINT(149)
21506           IF(XT2.LE.0D0) GOTO 440
21507           XT2=MAX(0.01D0*VINT(149),XT2)
21508         ENDIF
21509         VINT(25)=XT2
21510  
21511 C...Choose tau and y*. Calculate cos(theta-hat).
21512         IF(PYR(0).LE.COEF(ISUB,1)) THEN
21513           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
21514           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
21515         ELSE
21516           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
21517         ENDIF
21518         VINT(21)=TAU
21519 C...New: require shat > 1.
21520         IF(TAU*VINT(2).LT.1D0) GOTO 240
21521         CALL PYKLIM(2)
21522         RYST=PYR(0)
21523         MYST=1
21524         IF(RYST.GT.COEF(ISUB,8)) MYST=2
21525         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
21526         CALL PYKMAP(2,MYST,PYR(0))
21527         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
21528  
21529 C...Check that x not used up. Accept or reject kinematical variables.
21530         X1M=SQRT(TAU)*EXP(VINT(22))
21531         X2M=SQRT(TAU)*EXP(-VINT(22))
21532         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 240
21533         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
21534         CALL PYSIGH(NCHN,SIGS)
21535         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
21536         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 240
21537         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS/VINT(320)
21538  
21539 C...Reset K, P and V vectors.
21540         DO 260 I=N+1,N+4
21541           DO 250 J=1,5
21542             K(I,J)=0
21543             P(I,J)=0D0
21544             V(I,J)=0D0
21545   250     CONTINUE
21546   260   CONTINUE
21547         PT=0.5D0*VINT(1)*SQRT(XT2)
21548  
21549 C...Choose flavour of reacting partons (and subprocess).
21550         RSIGS=SIGS*PYR(0)
21551         DO 270 ICHN=1,NCHN
21552           KFL1=ISIG(ICHN,1)
21553           KFL2=ISIG(ICHN,2)
21554           ICONMI=ISIG(ICHN,3)
21555           RSIGS=RSIGS-SIGH(ICHN)
21556           IF(RSIGS.LE.0D0) GOTO 280
21557   270   CONTINUE
21558  
21559 C...Reassign to appropriate process codes.
21560   280   ISUBMI=ICONMI/10
21561         ICONMI=MOD(ICONMI,10)
21562  
21563 C...Choose new quark flavour for annihilation graphs
21564         IF(ISUBMI.EQ.12.OR.ISUBMI.EQ.53) THEN
21565           SH=TAU*VINT(2)
21566           CALL PYWIDT(21,SH,WDTP,WDTE)
21567   290     RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
21568           DO 300 I=1,MDCY(21,3)
21569             KFLF=KFDP(I+MDCY(21,2)-1,1)
21570             RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
21571             IF(RKFL.LE.0D0) GOTO 310
21572   300     CONTINUE
21573   310     IF(ISUBMI.EQ.53.AND.ICONMI.LE.2) THEN
21574             IF(KFLF.GE.4) GOTO 290
21575           ELSEIF(ISUBMI.EQ.53.AND.ICONMI.LE.4) THEN
21576             KFLF=4
21577             ICONMI=ICONMI-2
21578           ELSEIF(ISUBMI.EQ.53) THEN
21579             KFLF=5
21580             ICONMI=ICONMI-4
21581           ENDIF
21582         ENDIF
21583  
21584 C...Final state flavours and colour flow: default values
21585         JS=1
21586         KFL3=KFL1
21587         KFL4=KFL2
21588         KCC=20
21589         KCS=ISIGN(1,KFL1)
21590  
21591         IF(ISUBMI.EQ.11) THEN
21592 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
21593           KCC=ICONMI
21594           IF(KFL1*KFL2.LT.0) KCC=KCC+2
21595  
21596         ELSEIF(ISUBMI.EQ.12) THEN
21597 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
21598           KFL3=ISIGN(KFLF,KFL1)
21599           KFL4=-KFL3
21600           KCC=4
21601  
21602         ELSEIF(ISUBMI.EQ.13) THEN
21603 C...f + fbar -> g + g; th arbitrary
21604           KFL3=21
21605           KFL4=21
21606           KCC=ICONMI+4
21607  
21608         ELSEIF(ISUBMI.EQ.28) THEN
21609 C...f + g -> f + g; th = (p(f)-p(f))**2
21610           IF(KFL1.EQ.21) JS=2
21611           KCC=ICONMI+6
21612           IF(KFL1.EQ.21) KCC=KCC+2
21613           IF(KFL1.NE.21) KCS=ISIGN(1,KFL1)
21614           IF(KFL2.NE.21) KCS=ISIGN(1,KFL2)
21615  
21616         ELSEIF(ISUBMI.EQ.53) THEN
21617 C...g + g -> f + fbar; th arbitrary
21618           KCS=(-1)**INT(1.5D0+PYR(0))
21619           KFL3=ISIGN(KFLF,KCS)
21620           KFL4=-KFL3
21621           KCC=ICONMI+10
21622  
21623         ELSEIF(ISUBMI.EQ.68) THEN
21624 C...g + g -> g + g; th arbitrary
21625           KCC=ICONMI+12
21626           KCS=(-1)**INT(1.5D0+PYR(0))
21627         ENDIF
21628  
21629 C...Store flavours of scattering.
21630         MINT(13)=KFL1
21631         MINT(14)=KFL2
21632         MINT(15)=KFL1
21633         MINT(16)=KFL2
21634         MINT(21)=KFL3
21635         MINT(22)=KFL4
21636  
21637 C...Set flavours and mothers of scattering partons.
21638         K(N+1,1)=14
21639         K(N+2,1)=14
21640         K(N+3,1)=3
21641         K(N+4,1)=3
21642         K(N+1,2)=KFL1
21643         K(N+2,2)=KFL2
21644         K(N+3,2)=KFL3
21645         K(N+4,2)=KFL4
21646         K(N+1,3)=MINT(83)+1
21647         K(N+2,3)=MINT(83)+2
21648         K(N+3,3)=N+1
21649         K(N+4,3)=N+2
21650  
21651 C...Store colour connection indices.
21652         DO 320 J=1,2
21653           JC=J
21654           IF(KCS.EQ.-1) JC=3-J
21655           IF(ICOL(KCC,1,JC).NE.0) K(N+1,J+3)=N+ICOL(KCC,1,JC)
21656           IF(ICOL(KCC,2,JC).NE.0) K(N+2,J+3)=N+ICOL(KCC,2,JC)
21657           IF(ICOL(KCC,3,JC).NE.0) K(N+3,J+3)=MSTU(5)*(N+ICOL(KCC,3,JC))
21658           IF(ICOL(KCC,4,JC).NE.0) K(N+4,J+3)=MSTU(5)*(N+ICOL(KCC,4,JC))
21659   320   CONTINUE
21660  
21661 C...Store incoming and outgoing partons in their CM-frame.
21662         SHR=SQRT(TAU)*VINT(1)
21663         P(N+1,3)=0.5D0*SHR
21664         P(N+1,4)=0.5D0*SHR
21665         P(N+2,3)=-0.5D0*SHR
21666         P(N+2,4)=0.5D0*SHR
21667         P(N+3,5)=PYMASS(K(N+3,2))
21668         P(N+4,5)=PYMASS(K(N+4,2))
21669         IF(P(N+3,5)+P(N+4,5).GE.SHR) GOTO 240
21670         P(N+3,4)=0.5D0*(SHR+(P(N+3,5)**2-P(N+4,5)**2)/SHR)
21671         P(N+3,3)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,5)**2))
21672         P(N+4,4)=SHR-P(N+3,4)
21673         P(N+4,3)=-P(N+3,3)
21674  
21675 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
21676         PHI=PARU(2)*PYR(0)
21677         CALL PYROBO(N+3,N+4,ACOS(VINT(23)),PHI,0D0,0D0,0D0)
21678  
21679 C...Set up default values before showers.
21680         MINT(31)=MINT(31)+1
21681         IPU1=N+1
21682         IPU2=N+2
21683         IPU3=N+3
21684         IPU4=N+4
21685         VINT(141)=VINT(41)
21686         VINT(142)=VINT(42)
21687         N=N+4
21688  
21689 C...Showering of initial state partons (optional).
21690 C...Note: no showering of final state partons here; it comes later.
21691         IF(MSTP(84).GE.1.AND.MSTP(61).GE.1) THEN
21692           MINT(51)=0
21693           ALAMSV=PARJ(81)
21694           PARJ(81)=PARP(72)
21695           NSAV=N
21696           DO 340 I=1,4
21697             DO 330 J=1,5
21698               KSAV(I,J)=K(N-4+I,J)
21699               PSAV(I,J)=P(N-4+I,J)
21700   330       CONTINUE
21701   340     CONTINUE
21702           CALL PYSSPA(IPU1,IPU2)
21703           PARJ(81)=ALAMSV
21704 C...If shower failed then restore to situation before shower.
21705           IF(MINT(51).GE.1) THEN
21706             N=NSAV
21707             DO 360 I=1,4
21708               DO 350 J=1,5
21709                 K(N-4+I,J)=KSAV(I,J)
21710                 P(N-4+I,J)=PSAV(I,J)
21711   350         CONTINUE
21712   360       CONTINUE
21713             IPU1=N-3
21714             IPU2=N-2
21715             VINT(141)=VINT(41)
21716             VINT(142)=VINT(42)
21717           ENDIF
21718         ENDIF
21719  
21720 C...Keep track of loose colour ends and information on scattering.
21721   370   IMI(1,MINT(31),1)=IPU1
21722         IMI(2,MINT(31),1)=IPU2
21723         IMI(1,MINT(31),2)=0
21724         IMI(2,MINT(31),2)=0
21725         XMI(1,MINT(31))=VINT(141)
21726         XMI(2,MINT(31))=VINT(142)
21727         PT2MI(MINT(31))=VINT(54)
21728         IMISEP(MINT(31))=N
21729  
21730 C...Decide whether quarks in last scattering were valence, companion or
21731 C...sea.
21732         DO 430 JS=1,2
21733           KFBEAM=MINT(10+JS)
21734           KFSBM=ISIGN(1,MINT(10+JS))
21735           IFL=K(IMI(JS,MINT(31),1),2)
21736           IMI(JS,MINT(31),2)=0
21737           IF (IABS(IFL).GT.6) GOTO 430
21738  
21739 C...Get PDFs at X and Q2 of the parton shower initiator for the
21740 C...last scattering. At this point VINT(143:144) do not yet
21741 C...include the scattered x values VINT(141:142).
21742           X=VINT(140+JS)/VINT(142+JS)
21743           IF(MSTP(84).GE.1.AND.MSTP(61).GE.1) THEN
21744             Q2=PARP(62)**2
21745           ELSE
21746             Q2=VINT(54)
21747           ENDIF
21748 C...Note: XPSVC = x*pdf.
21749           MINT(30)=JS
21750           CALL PYPDFU(KFBEAM,X,Q2,XPQ)
21751           SEA=XPSVC(IFL,-1)
21752           VAL=XPSVC(IFL,0)
21753           CMP=0D0
21754           DO 380 IVC=1,NVC(JS,IFL)
21755             CMP=CMP+XPSVC(IFL,IVC)
21756   380     CONTINUE
21757  
21758 C...Decide (Extra factor x cancels in the dvision).
21759           RVCS=PYR(0)*(SEA+VAL+CMP)
21760           IVNOW=1
21761   390     IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
21762 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
21763             IVNOW=0
21764             IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
21765             IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
21766             IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
21767             IF(KFIVAL(JS,1).EQ.0) THEN
21768               IF(KFBEAM.EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
21769               IF(KFBEAM.EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
21770               IF((KFBEAM.EQ.130.OR.KFBEAM.EQ.310).AND.
21771      &        (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
21772             ELSE
21773               DO 400 I1=1,NMI(JS)
21774                 IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
21775      &            IVNOW=IVNOW-1
21776   400         CONTINUE
21777             ENDIF
21778             IF(IVNOW.EQ.0) GOTO 390
21779 C...Mark valence.
21780             IMI(JS,MINT(31),2)=0
21781 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
21782             IF(KFIVAL(JS,1).EQ.0) THEN
21783               IF(KFBEAM.EQ.111.OR.KFBEAM.EQ.22) THEN
21784                 KFIVAL(JS,1)=IFL
21785                 KFIVAL(JS,2)=-IFL
21786               ELSEIF(KFBEAM.EQ.130.OR.KFBEAM.EQ.310) THEN
21787                 KFIVAL(JS,1)=IFL
21788                 IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
21789                 IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
21790               ENDIF
21791             ENDIF
21792  
21793           ELSEIF (RVCS.LE.VAL+SEA.OR.NVC(JS,IFL).EQ.0) THEN
21794 C...If sea, add opposite sign companion parton. Store X and I.
21795             NVC(JS,-IFL)=NVC(JS,-IFL)+1
21796             XASSOC(JS,-IFL,NVC(JS,-IFL))=X
21797 C...Set pointer to companion
21798             IMI(JS,MINT(31),2)=-NVC(JS,-IFL)
21799           ELSE
21800 C...If companion, decide which one.
21801             CMPSUM=VAL+SEA
21802             ISEL=0
21803   410       ISEL=ISEL+1
21804             CMPSUM=CMPSUM+XPSVC(IFL,ISEL)
21805             IF (RVCS.GT.CMPSUM.AND.ISEL.LT.NVC(JS,IFL)) GOTO 410
21806 C...Find original sea (anti-)quark:
21807             IASSOC=0
21808             DO 420 I1=1,NMI(JS)
21809               IF (K(IMI(JS,I1,1),2).NE.-IFL) GOTO 420
21810               IF (-IMI(JS,I1,2).EQ.ISEL) THEN
21811                 IMI(JS,MINT(31),2)=IMI(JS,I1,1)
21812                 IMI(JS,I1,2)=IMI(JS,MINT(31),1)
21813               ENDIF
21814   420       CONTINUE
21815 C...Change X to what associated companion had, so that the correct
21816 C...amount of momentum can be subtracted from the companion sum below.
21817             X=XASSOC(JS,IFL,ISEL)
21818 C...Mark companion read.
21819             XASSOC(JS,IFL,ISEL)=0D0
21820           ENDIF
21821  430    CONTINUE
21822  
21823 C...Global statistics.
21824         MINT(351)=MINT(351)+1
21825         VINT(351)=VINT(351)+PT
21826         IF (MINT(351).EQ.1) VINT(356)=PT
21827  
21828 C...Update remaining energy and other counters.
21829         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
21830           CALL PYERRM(11,'(PYMIGN:) no more memory left in PYJETS')
21831           MINT(51)=1
21832           RETURN
21833         ENDIF
21834         NMI(1)=NMI(1)+1
21835         NMI(2)=NMI(2)+1
21836         VINT(151)=VINT(151)+VINT(41)
21837         VINT(152)=VINT(152)+VINT(42)
21838         VINT(143)=VINT(143)-VINT(141)
21839         VINT(144)=VINT(144)-VINT(142)
21840  
21841 C...Iterate, with more interactions allowed.
21842         IF(MINT(31).LT.240) GOTO 240
21843  440    CONTINUE
21844  
21845 C...Restore saved quantities for hardest interaction.
21846         MINT(1)=ISUBSV
21847         MINT(13)=M13SV
21848         MINT(14)=M14SV
21849         MINT(15)=M15SV
21850         MINT(16)=M16SV
21851         MINT(21)=M21SV
21852         MINT(22)=M22SV
21853         DO 450 J=11,80
21854           VINT(J)=VINTSV(J)
21855   450   CONTINUE
21856         VINT(141)=V141SV
21857         VINT(142)=V142SV
21858  
21859       ENDIF
21860  
21861 C...Format statements for printout.
21862  5000 FORMAT(/1X,'****** PYMIGN: initialization of multiple inter',
21863      &'actions for MSTP(82) =',I2,' ******')
21864  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
21865      &D9.2,' mb: rejected')
21866  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
21867      &D9.2,' mb: accepted')
21868  
21869       RETURN
21870       END
21871  
21872 C*********************************************************************
21873  
21874 C...PYMIHK
21875 C...Finds left-behind remnant flavour content and hooks up
21876 C...the colour flow between the hard scattering and remnants
21877  
21878       SUBROUTINE PYMIHK
21879  
21880 C...Double precision and integer declarations.
21881       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
21882       IMPLICIT INTEGER(I-N)
21883       INTEGER PYK,PYCHGE,PYCOMP
21884 C...The event record
21885       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
21886 C...Parameters
21887       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
21888       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
21889       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
21890       COMMON/PYINT1/MINT(400),VINT(400)
21891 C...The common block of dangling ends
21892       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
21893      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
21894      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
21895       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINTM/
21896 C...Local variables
21897       PARAMETER (NERSIZ=4000)
21898       COMMON /PYCBLS/MCO(NERSIZ,2),NCC,JCCO(NERSIZ,2),JCCN(NERSIZ,2)
21899      &     ,MACCPT
21900       COMMON /PYCTAG/NCT,MCT(NERSIZ,2)
21901       SAVE /PYCBLS/,/PYCTAG/
21902       DIMENSION JST(2,3),IV(2,3),IDQ(3),NVSUM(2),NBRTOT(2),NG(2)
21903      &     ,ITJUNC(2),MOUT(2),INSR(1000,3),ISTR(6),YMI(240)
21904       DATA NERRPR/0/
21905       SAVE NERRPR
21906       FOUR(I,J)=P(I,4)*P(J,4)-P(I,3)*P(J,3)-P(I,2)*P(J,2)-P(I,1)*P(J,1)
21907  
21908 C...Set up error checkers
21909       IBOOST=0
21910  
21911 C...Initialize colour arrays: MCO (Original) and MCT (New)
21912       DO 110 I=MINT(84)+1,NERSIZ
21913         DO 100 JC=1,2
21914           MCT(I,JC)=0
21915           MCO(I,JC)=0
21916   100   CONTINUE
21917 C...Also zero colour tracing information, if existed.
21918         IF (I.LE.N) THEN
21919           K(I,4)=MOD(K(I,4),MSTU(5)**2)
21920           K(I,5)=MOD(K(I,5),MSTU(5)**2)
21921         ENDIF
21922   110 CONTINUE
21923  
21924 C...Initialize colour tag collapse arrays:
21925 C...JCCO (Original) and JCCN (New).
21926       DO 130 MG=MINT(84)+1,NERSIZ
21927         DO 120 JC=1,2
21928           JCCO(MG,JC)=0
21929           JCCN(MG,JC)=0
21930   120   CONTINUE
21931   130 CONTINUE
21932  
21933 C...Zero gluon insertion array
21934       DO 150 IM=1,1000
21935         DO 140 J=1,3
21936           INSR(IM,J)=0
21937   140   CONTINUE
21938   150 CONTINUE
21939  
21940 C...Compute hard scattering system rapidities
21941       IF (MSTP(89).EQ.1) THEN
21942         DO 160 IM=1,240
21943           IF (IM.LE.MINT(31)) THEN
21944             YMI(IM)=LOG(XMI(1,IM)/XMI(2,IM))
21945           ELSE
21946 C...Set (unsigned) rapidity = 100 for beam remnant systems.
21947             YMI(IM)=100D0
21948           ENDIF
21949   160   CONTINUE
21950       ENDIF
21951  
21952 C...Treat each side separately
21953       DO 290 JS=1,2
21954  
21955 C...Initialize side.
21956         NG(JS)=0
21957         JV=0
21958         KFS=ISIGN(1,MINT(10+JS))
21959  
21960 C...Set valence content of pi0, gamma, K0S, K0L if not yet done.
21961         IF(KFIVAL(JS,1).EQ.0) THEN
21962           IF(MINT(10+JS).EQ.111) THEN
21963             KFIVAL(JS,1)=INT(1.5D0+PYR(0))
21964             KFIVAL(JS,2)=-KFIVAL(JS,1)
21965           ELSEIF(MINT(10+JS).EQ.22) THEN
21966             PYRKF=PYR(0)
21967             KFIVAL(JS,1)=1
21968             IF(PYRKF.GT.0.1D0) KFIVAL(JS,1)=2
21969             IF(PYRKF.GT.0.5D0) KFIVAL(JS,1)=3
21970             IF(PYRKF.GT.0.6D0) KFIVAL(JS,1)=4
21971             KFIVAL(JS,2)=-KFIVAL(JS,1)
21972           ELSEIF(MINT(10+JS).EQ.130.OR.MINT(10+JS).EQ.310) THEN
21973             IF(PYR(0).GT.0.5D0) THEN
21974               KFIVAL(JS,1)=1
21975               KFIVAL(JS,2)=-3
21976             ELSE
21977               KFIVAL(JS,1)=3
21978               KFIVAL(JS,2)=-1
21979             ENDIF
21980           ENDIF
21981         ENDIF
21982  
21983 C...Initialize beam remnant sea and valence content flavour by flavour.
21984         NVSUM(JS)=0
21985         NBRTOT(JS)=0
21986         DO 210 JFA=1,6
21987 C...Count up original number of JFA valence quarks and antiquarks.
21988           NVALQ=0
21989           NVALQB=0
21990           NSEA=0
21991           DO 170 J=1,3
21992             IF(KFIVAL(JS,J).EQ.JFA) NVALQ=NVALQ+1
21993             IF(KFIVAL(JS,J).EQ.-JFA) NVALQB=NVALQB+1
21994   170     CONTINUE
21995           NVSUM(JS)=NVSUM(JS)+NVALQ+NVALQB
21996 C...Subtract kicked out valence and determine sea from flavour cons.
21997           DO 180 IM=1,NMI(JS)
21998             IFL = K(IMI(JS,IM,1),2)
21999             IFA = IABS(IFL)
22000             IFS = ISIGN(1,IFL)
22001             IF (IFL.EQ.JFA.AND.IMI(JS,IM,2).EQ.0) THEN
22002 C...Subtract K.O. valence quark from remainder.
22003               NVALQ=NVALQ-1
22004               JV=NVSUM(JS)-NVALQ-NVALQB
22005               IV(JS,JV)=IMI(JS,IM,1)
22006             ELSEIF (IFL.EQ.-JFA.AND.IMI(JS,IM,2).EQ.0) THEN
22007 C...Subtract K.O. valence antiquark from remainder.
22008               NVALQB=NVALQB-1
22009               JV=NVSUM(JS)-NVALQ-NVALQB
22010               IV(JS,JV)=IMI(JS,IM,1)
22011             ELSEIF (IFA.EQ.JFA) THEN
22012 C...Outside sea without companion: add opposite sea flavour inside.
22013               IF (IMI(JS,IM,2).LT.0) NSEA=NSEA-IFS
22014             ENDIF
22015   180     CONTINUE
22016 C...Check if space left in PYJETS for additional BR flavours
22017           NFLSUM=IABS(NSEA)+NVALQ+NVALQB
22018           NBRTOT(JS)=NBRTOT(JS)+NFLSUM
22019           IF (N+NFLSUM+1.GT.MSTU(4)) THEN
22020             CALL PYERRM(11,'(PYMIHK:) no more memory left in PYJETS')
22021             MINT(51)=1
22022             RETURN
22023           ENDIF
22024 C...Add required val+sea content to beam remnant.
22025           IF (NFLSUM.GT.0) THEN
22026             DO 200 IA=1,NFLSUM
22027 C...Insert beam remnant quark as p.t. symbolic parton in ER.
22028               N=N+1
22029               DO 190 IX=1,5
22030                 K(N,IX)=0
22031                 P(N,IX)=0D0
22032                 V(N,IX)=0D0
22033   190         CONTINUE
22034               K(N,1)=3
22035               K(N,2)=ISIGN(JFA,NSEA)
22036               IF (IA.LE.NVALQ) K(N,2)=JFA
22037               IF (IA.GT.NVALQ.AND.IA.LE.NVALQ+NVALQB) K(N,2)=-JFA
22038               K(N,3)=MINT(83)+JS
22039 C...Also update NMI, IMI, and IV arrays.
22040               NMI(JS)=NMI(JS)+1
22041               IMI(JS,NMI(JS),1)=N
22042               IMI(JS,NMI(JS),2)=-1
22043               IF (IA.LE.NVALQ+NVALQB) THEN
22044                 IMI(JS,NMI(JS),2)=0
22045                 JV=JV+1
22046                 IV(JS,JV)=IMI(JS,NMI(JS),1)
22047               ENDIF
22048   200       CONTINUE
22049           ENDIF
22050   210   CONTINUE
22051  
22052         IM=0
22053   220   IM=IM+1
22054         IF (IM.LE.NMI(JS)) THEN
22055           IF (K(IMI(JS,IM,1),2).EQ.21) THEN
22056             NG(JS)=NG(JS)+1
22057 C...Add fictitious parent gluons for companion pairs.
22058           ELSEIF (IMI(JS,IM,2).NE.0.AND.K(IMI(JS,IM,1),2).GT.0) THEN
22059 C...Randomly assign companions to sea quarks which have none.
22060             IF (IMI(JS,IM,2).LT.0) THEN
22061               IMC=PYR(0)*NMI(JS)
22062   230         IMC=MOD(IMC,NMI(JS))+1
22063               IF (K(IMI(JS,IMC,1),2).NE.-K(IMI(JS,IM,1),2)) GOTO 230
22064               IF (IMI(JS,IMC,2).GE.0) GOTO 230
22065               IMI(JS, IM,2) = IMI(JS,IMC,1)
22066               IMI(JS,IMC,2) = IMI(JS, IM,1)
22067             ENDIF
22068 C...Add fictitious parent gluon
22069             N=N+1
22070             DO 240 IX=1,5
22071               K(N,IX)=0
22072               P(N,IX)=0D0
22073               V(N,IX)=0D0
22074   240       CONTINUE
22075             K(N,1)=14
22076             K(N,2)=21
22077             K(N,3)=MINT(83)+JS
22078 C...Set gluon (anti-)colour daughter pointers
22079             K(N,4)=IMI(JS, IM,1)
22080             K(N,5)=IMI(JS, IM,2)
22081 C...Set quark (anti-)colour parent pointers
22082             K(IMI(JS, IM,2),5)=K(IMI(JS, IM,2),5)+MSTU(5)*N
22083             K(IMI(JS, IM,1),4)=K(IMI(JS, IM,1),4)+MSTU(5)*N
22084 C...Add gluon to IMI
22085             NMI(JS)=NMI(JS)+1
22086             IMI(JS,NMI(JS),1)=N
22087             IMI(JS,NMI(JS),2)=0
22088           ENDIF
22089           GOTO 220
22090         ENDIF
22091  
22092 C...If incoming (anti-)baryon, insert inside (anti-)junction.
22093 C...Set up initial v-v-j-v configuration. Otherwise set up
22094 C...mesonic v-vbar configuration
22095         IF (IABS(MINT(10+JS)).GT.1000) THEN
22096 C...Determine junction type (1: B=1 2: B=-1)
22097           ITJUNC(JS) = (3-KFS)/2
22098 C...Insert junction.
22099           N=N+1
22100           DO 250 IX=1,5
22101             K(N,IX)=0
22102             P(N,IX)=0D0
22103             V(N,IX)=0D0
22104   250     CONTINUE
22105 C...Set special junction codes:
22106           K(N,1)=42
22107           K(N,2)=88
22108 C...Set parent to side.
22109           K(N,3)=MINT(83)+JS
22110           K(N,4)=ITJUNC(JS)*MSTU(5)
22111           K(N,5)=0
22112 C...Connect valence quarks to junction.
22113           MOUT(JS)=0
22114           MANTI=ITJUNC(JS)-1
22115 C...Set (anti)colour mother = junction.
22116           DO 260 JV=1,3
22117             K(IV(JS,JV),4+MANTI)=MOD(K(IV(JS,JV),4+MANTI),MSTU(5))
22118      &           +MSTU(5)*N
22119 C...Keep track of partons adjacent to junction:
22120             JST(JS,JV)=IV(JS,JV)
22121   260     CONTINUE
22122         ELSE
22123 C...Mesons: set up initial q-qbar topology
22124           ITJUNC(JS)=0
22125           IF (K(IV(JS,1),2).GT.0) THEN
22126             IQ=IV(JS,1)
22127             IQBAR=IV(JS,2)
22128           ELSE
22129             IQ=IV(JS,2)
22130             IQBAR=IV(JS,1)
22131           ENDIF
22132           IV(JS,3)=0
22133           JST(JS,1)=IQ
22134           JST(JS,2)=IQBAR
22135           JST(JS,3)=0
22136           K(IQ,4)=MOD(K(IQ,4),MSTU(5))+MSTU(5)*IQBAR
22137           K(IQBAR,5)=MOD(K(IQBAR,5),MSTU(5))+MSTU(5)*IQ
22138 C...Special for mesons. Insert gluon if BR empty.
22139           IF (NBRTOT(JS).EQ.0) THEN
22140             N=N+1
22141             DO 270 IX=1,5
22142               K(N,IX)=0
22143               P(N,IX)=0D0
22144               V(N,IX)=0D0
22145   270       CONTINUE
22146             K(N,1)=3
22147             K(N,2)=21
22148             K(N,3)=MINT(83)+JS
22149             K(N,4)=0
22150             K(N,5)=0
22151             NBRTOT(JS)=1
22152             NG(JS)=NG(JS)+1
22153 C...Add gluon to IMI
22154             NMI(JS)=NMI(JS)+1
22155             IMI(JS,NMI(JS),1)=N
22156             IMI(JS,NMI(JS),2)=0
22157           ENDIF
22158           MOUT(JS)=0
22159         ENDIF
22160  
22161 C...Count up number of valence quarks outside BR.
22162         DO 280 JV=1,3
22163           IF (JST(JS,JV).LE.MINT(53).AND.JST(JS,JV).GT.0)
22164      &         MOUT(JS)=MOUT(JS)+1
22165   280   CONTINUE
22166  
22167   290 CONTINUE
22168  
22169 C...Now both sides have been prepared in an initial vvjv (baryonic) or
22170 C...v(g)vbar (mesonic) configuration.
22171  
22172 C...Create colour line tags starting from initiators.
22173       NCT=0
22174       DO 320 IM=1,MINT(31)
22175 C...Consider each side in turn.
22176         DO 310 JS=1,2
22177           I1=IMI(JS,IM,1)
22178           I2=IMI(3-JS,IM,1)
22179           DO 300 JCS=4,5
22180             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
22181      &           GOTO 300
22182             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 300
22183  
22184             KCS=JCS
22185             CALL PYCTTR(I1,KCS,I2)
22186             IF(MINT(51).NE.0) RETURN
22187  
22188   300     CONTINUE
22189   310   CONTINUE
22190   320 CONTINUE
22191  
22192       DO 340 JS=1,2
22193 C...Create colour tags for beam remnant partons.
22194         DO 330 IM=MINT(31)+1,NMI(JS)
22195           IP=IMI(JS,IM,1)
22196           IF (K(IP,2).NE.21) THEN
22197             JC=(3-ISIGN(1,K(IP,2)))/2
22198             IF (MCT(IP,JC).EQ.0) THEN
22199               NCT=NCT+1
22200               MCT(IP,JC)=NCT
22201             ENDIF
22202           ELSE
22203 C...Gluons
22204             ICD=K(IP,4)
22205             IAD=K(IP,5)
22206             IF (ICD.NE.0) THEN
22207 C...Fictituous gluons just inherit from their quark daughters.
22208               ICC=MCT(ICD,1)
22209               IAC=MCT(IAD,2)
22210             ELSE
22211 C...Real beam remnant gluons get their own colours
22212               ICC=NCT+1
22213               IAC=NCT+2
22214               NCT=NCT+2
22215             ENDIF
22216             MCT(IP,1)=ICC
22217             MCT(IP,2)=IAC
22218           ENDIF
22219   330   CONTINUE
22220   340 CONTINUE
22221  
22222 C...Create colour tags for colour lines which are detached from the
22223 C...initial state.
22224  
22225       DO 360 MQGST=1,2
22226         DO 350 I=MINT(84)+1,N
22227  
22228 C...Look for coloured string endpoint, or (later) leftover gluon.
22229           IF (K(I,1).NE.3) GOTO 350
22230           KC=PYCOMP(K(I,2))
22231           IF(KC.EQ.0) GOTO 350
22232           KQ=KCHG(KC,2)
22233           IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 350
22234  
22235 C...Pick up loose string end with no previous tag.
22236           KCS=4
22237           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
22238           IF(MCT(I,KCS-3).NE.0) GOTO 350
22239  
22240           CALL PYCTTR(I,KCS,I)
22241           IF(MINT(51).NE.0) RETURN
22242  
22243   350   CONTINUE
22244   360 CONTINUE
22245  
22246 C...Store original colour tags
22247       DO 370 I=MINT(84)+1,N
22248         MCO(I,1)=MCT(I,1)
22249         MCO(I,2)=MCT(I,2)
22250   370 CONTINUE
22251  
22252 C...Iteratively add gluons to already existing string pieces, enforcing
22253 C...various possible orderings, and rejecting insertions that would give
22254 C...rise to singlet gluons.
22255 C...<kappa tau> normalization.
22256       RM0=1.5D0
22257       MRETRY=0
22258       PARP80=PARP(80)
22259  
22260 C...Set up simplified kinematics.
22261 C...Boost hard interaction systems.
22262       IBOOST=IBOOST+1
22263       DO 380 IM=1,MINT(31)
22264         BETA=(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
22265         CALL PYROBO(IMISEP(IM-1)+1,IMISEP(IM),0D0,0D0,0D0,0D0,BETA)
22266   380 CONTINUE
22267 C...Assign preliminary beam remnant momenta.
22268       DO 390 I=MINT(53)+1,N
22269         JS=K(I,3)
22270         P(I,1)=0D0
22271         P(I,2)=0D0
22272         IF (K(I,2).NE.88) THEN
22273           P(I,4)=0.5D0*VINT(142+JS)*VINT(1)/MAX(1,NMI(JS)-MINT(31))
22274           P(I,3)=P(I,4)
22275           IF (JS.EQ.2) P(I,3)=-P(I,3)
22276         ELSE
22277 C...Junctions are wildcards for the present.
22278           P(I,4)=0D0
22279           P(I,3)=0D0
22280         ENDIF
22281   390 CONTINUE
22282  
22283 C...Reset colour processing information.
22284   400 DO 410 I=MINT(84)+1,N
22285         K(I,4)=MOD(K(I,4),MSTU(5)**2)
22286         K(I,5)=MOD(K(I,5),MSTU(5)**2)
22287   410 CONTINUE
22288  
22289       NCC=0
22290       DO 430 JS=1,2
22291 C...If meson,  without gluon in BR, collapse q-qbar colour tags:
22292         IF (ITJUNC(JS).EQ.0) THEN
22293           JC1=MCT(JST(JS,1),1)
22294           JC2=MCT(JST(JS,2),2)
22295           NCC=NCC+1
22296           JCCO(NCC,1)=MAX(JC1,JC2)
22297           JCCO(NCC,2)=MIN(JC1,JC2)
22298 C...Collapse colour tags in event record
22299           DO 420 I=MINT(84)+1,N
22300             IF (MCT(I,1).EQ.JCCO(NCC,1)) MCT(I,1)=JCCO(NCC,2)
22301             IF (MCT(I,2).EQ.JCCO(NCC,1)) MCT(I,2)=JCCO(NCC,2)
22302   420     CONTINUE
22303         ENDIF
22304   430 CONTINUE
22305  
22306   440 JS=1
22307       IF (PYR(0).GT.0.5D0.OR.NG(1).EQ.0) JS=2
22308       IF (NG(JS).GT.0) THEN
22309         NOPT=0
22310         RLOPT=1D9
22311 C...Start at random gluon (optimizes speed for random attachments)
22312         NMGL=0
22313         IMGL=PYR(0)*NMI(JS)+1
22314   450   IMGL=MOD(IMGL,NMI(JS))+1
22315         NMGL=NMGL+1
22316 C...Only loop through NMI once (with upper limit to save time)
22317         IF (NMGL.LE.NMI(JS).AND.NOPT.LE.3) THEN
22318           IGL  = IMI(JS,IMGL,1)
22319 C...If not gluon or if already connected, try next.
22320           IF (K(IGL,2).NE.21.OR.K(IGL,4)/MSTU(5).NE.0
22321      &         .OR.K(IGL,5)/MSTU(5).NE.0) GOTO 450
22322 C...Now loop through all possible insertions of this gluon.
22323           NMP1=0
22324           IMP1=PYR(0)*NMI(JS)+1
22325   460     IMP1=MOD(IMP1,NMI(JS))+1
22326           NMP1=NMP1+1
22327           IF (IMP1.EQ.IMGL) GOTO 460
22328 C...Only loop through NMI once (with upper limit to save time).
22329           IF (NMP1.LE.NMI(JS).AND.NOPT.LE.3) THEN
22330             IP1  = IMI(JS,IMP1,1)
22331 C...Try both colour mother and colour anti-mother.
22332 C...Randomly select which one to try first.
22333             NANTI=0
22334             MANTI=PYR(0)*2
22335   470       MANTI=MOD(MANTI+1,2)
22336             NANTI=NANTI+1
22337             IF (NANTI.LE.2) THEN
22338               IP2 =MOD(K(IP1,4+MANTI)/MSTU(5),MSTU(5))
22339 C...Reject if no appropriate mother (or if mother is fictitious
22340 C...parent gluon.)
22341               IF (IP2.LE.0) GOTO 470
22342               IF (K(IP2,2).EQ.21.AND.IP2.GT.MINT(53)) GOTO 470
22343 C...Also reject if this link has already been tried.
22344               IF (K(IP1,4+MANTI)/MSTU(5)**2.EQ.2) GOTO 470
22345               IF (K(IP2,5-MANTI)/MSTU(5)**2.EQ.2) GOTO 470
22346 C...Set flag to indicate that this link has now been tried for this
22347 C...gluon. IP2 may be junction, which has several mothers.
22348               K(IP1,4+MANTI)=K(IP1,4+MANTI)+2*MSTU(5)**2
22349               IF (K(IP2,2).NE.88) THEN
22350                 K(IP2,5-MANTI)=K(IP2,5-MANTI)+2*MSTU(5)**2
22351               ENDIF
22352  
22353 C...JCG1: Original colour tag of gluon on IP1 side
22354 C...JCG2: Original colour tag of gluon on IP2 side
22355 C...JCP1: Original colour tag of IP1 on gluon side
22356 C...JCP2: Original colour tag of IP2 on gluon side.
22357               JCG1=MCO(IGL,2-MANTI)
22358               JCG2=MCO(IGL,1+MANTI)
22359               JCP1=MCO(IP1,1+MANTI)
22360               JCP2=MCO(IP2,2-MANTI)
22361  
22362               CALL PYMIHG(JCP1,JCG1,JCP2,JCG2)
22363 C...Reject gluon attachments that give rise to singlet gluons.
22364               IF (MACCPT.EQ.0) GOTO 470
22365  
22366 C...Update colours
22367               JCG1=MCT(IGL,2-MANTI)
22368               JCG2=MCT(IGL,1+MANTI)
22369               JCP1=MCT(IP1,1+MANTI)
22370               JCP2=MCT(IP2,2-MANTI)
22371  
22372 C...Select whether to accept this insertion
22373               IF (MSTP(89).EQ.0) THEN
22374 C...Random insertions: no measure.
22375                 RL=1D0
22376 C...For random ordering, we want to suppress beam remnant breakups
22377 C...already at this point.
22378                 IF (IP1.GT.MINT(53).AND.IP2.GT.MINT(53)
22379      &               .AND.MOUT(JS).NE.0.AND.PYR(0).GT.PARP80) THEN
22380                   NMP1=0
22381                   NMGL=0
22382                   GOTO 470
22383                 ENDIF
22384               ELSEIF (MSTP(89).EQ.1) THEN
22385 C...Rapidity ordering:
22386 C...YGL = Rapidity of gluon.
22387                 YGL=YMI(IMGL)
22388 C...If fictitious gluon
22389                 IF (YGL.EQ.100D0) THEN
22390                   YGL=(3-2*JS)*100D0
22391                   IDA1=MOD(K(IGL,4),MSTU(5))
22392                   IDA2=MOD(K(IGL,5),MSTU(5))
22393                   DO 480 IMT=1,NMI(JS)
22394 C...Select (arbitrarily) the most central daughter.
22395                     IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2)
22396      &                   THEN
22397                       IF (ABS(YGL).GT.ABS(YMI(IMT))) YGL=YMI(IMT)
22398                     ENDIF
22399   480             CONTINUE
22400                 ENDIF
22401 C...YP1 = Rapidity IP1
22402                 YP1=YMI(IMP1)
22403 C...If fictitious gluon
22404                 IF (YP1.EQ.100D0) THEN
22405                   YP1=(3-2*JS)*YP1
22406                   IDA1=MOD(K(IP1,4),MSTU(5))
22407                   IDA2=MOD(K(IP1,5),MSTU(5))
22408                   DO 490 IMT=1,NMI(JS)
22409 C...Select (arbitrarily) the most central daughter.
22410                     IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2)
22411      &                   THEN
22412                       IF (ABS(YP1).GT.ABS(YMI(IMT))) YP1=YMI(IMT)
22413                     ENDIF
22414   490             CONTINUE
22415                 ENDIF
22416 C...YP2 = Rapidity of mother system
22417                 IF (K(IP2,2).NE.88) THEN
22418                   DO 500 IMT=1,NMI(JS)
22419                     IF (IMI(JS,IMT,1).EQ.IP2) YP2=YMI(IMT)
22420   500             CONTINUE
22421 C...If fictitious gluon
22422                   IF (YP2.EQ.100D0) THEN
22423                     YP2=(3-2*JS)*YP2
22424                     IDA1=MOD(K(IP2,4),MSTU(5))
22425                     IDA2=MOD(K(IP2,5),MSTU(5))
22426                     DO 510 IMT=1,NMI(JS)
22427 C...Select (arbitrarily) the most central daughter.
22428                       IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2
22429      &                     ) THEN
22430                         IF (ABS(YP2).GT.ABS(YMI(IMT))) YP2=YMI(IMT)
22431                       ENDIF
22432   510               CONTINUE
22433                   ENDIF
22434 C...Assign (arbitrarily) 100D0 to junction also
22435                 ELSE
22436                   YP2=(3-2*JS)*100D0
22437                 ENDIF
22438                 RL=ABS(YGL-YP1)+ABS(YGL-YP2)
22439               ELSEIF (MSTP(89).EQ.2) THEN
22440 C...Lambda ordering:
22441 C...Compute lambda measure for this insertion.
22442                 RL=1D0
22443                 DO 520 IST=1,6
22444                   ISTR(IST)=0
22445   520           CONTINUE
22446 C...If IP2 is junction, not caught below.
22447                 IF (JCP2.EQ.0) THEN
22448                   ITJU=MOD(K(IP2,4)/MSTU(5),MSTU(5))
22449 C...Anti-junction is colour endpoint et vv., always on JCG2.
22450                   ISTR(5-ITJU)=IP2
22451                 ENDIF
22452                 DO 530 I=MINT(84)+1,N
22453                   IF (K(I,1).LT.10) THEN
22454 C...The new string pieces
22455                     IF (MCT(I,1).EQ.JCG1) ISTR(1)=I
22456                     IF (MCT(I,2).EQ.JCG1) ISTR(2)=I
22457                     IF (MCT(I,1).EQ.JCG2) ISTR(3)=I
22458                     IF (MCT(I,2).EQ.JCG2) ISTR(4)=I
22459                   ENDIF
22460   530           CONTINUE
22461 C...Also identify junctions as string endpoints.
22462                 DO 540 I=MINT(84)+1,N
22463                   ICMO=MOD(K(I,4)/MSTU(5),MSTU(5))
22464                   IAMO=MOD(K(I,5)/MSTU(5),MSTU(5))
22465 C...Find partons adjacent to junctions.
22466                   IF (ICMO.GT.0.AND.ICMO.LE.N) THEN
22467                     IF (K(ICMO,1).EQ.42.AND.MCT(I,1).EQ.JCG1.AND.ISTR(2)
22468      &                  .EQ.0) ISTR(2) = ICMO
22469                     IF (K(ICMO,1).EQ.42.AND.MCT(I,1).EQ.JCG2.AND.ISTR(4)
22470      &                  .EQ.0) ISTR(4) = ICMO
22471                   ENDIF
22472                   IF (IAMO.GT.0.AND.IAMO.LE.N) THEN
22473                     IF (K(IAMO,1).EQ.42.AND.MCT(I,2).EQ.JCG1.AND.ISTR(1)
22474      &                  .EQ.0) ISTR(1) = IAMO
22475                     IF (K(IAMO,1).EQ.42.AND.MCT(I,2).EQ.JCG2.AND.ISTR(3)
22476      &                  .EQ.0) ISTR(3) = IAMO
22477                   ENDIF
22478   540           CONTINUE
22479 C...The old string piece
22480                 ISTR(5)=ISTR(1+2*MANTI)
22481                 ISTR(6)=ISTR(4-2*MANTI)
22482                 IF (ISTR(1).EQ.0.OR.ISTR(2).EQ.0.OR.ISTR(3).EQ.0.OR.
22483      &              ISTR(4).EQ.0.OR.ISTR(5).EQ.0.OR.ISTR(6).EQ.0) THEN
22484 C...If one or more of the colour tags for this connection is/are still
22485 C...dangling, skip this attempt for the time being. 
22486                   RL=1D6
22487                 ELSE
22488                   RL=MAX(1D0,FOUR(ISTR(1),ISTR(2)))*MAX(1D0,FOUR(ISTR(3)
22489      &                ,ISTR(4)))/MAX(1D0,FOUR(ISTR(5),ISTR(6)))
22490                   RL=LOG(RL)
22491                 ENDIF
22492               ENDIF
22493 C...Allow some breadth to speed things up.
22494               IF (ABS(1D0-RL/RLOPT).LT.0.05D0) THEN
22495                 NOPT=NOPT+1
22496               ELSEIF (RL.GT.RLOPT) THEN
22497                 GOTO 470
22498               ELSE
22499                 NOPT=1
22500                 RLOPT=RL
22501               ENDIF
22502 C...INSR(NOPT,1)=Gluon colour mother
22503 C...INSR(NOPT,2)=Gluon
22504 C...INSR(NOPT,3)=Gluon anticolour mother
22505               IF (NOPT.GT.1000) GOTO 470
22506               INSR(NOPT,1+2*MANTI)=IP2
22507               INSR(NOPT,2)=IGL
22508               INSR(NOPT,3-2*MANTI)=IP1
22509               IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 470
22510             ENDIF
22511             IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 460
22512           ENDIF
22513 C...Reset link test information.
22514           DO 550 I=MINT(84)+1,N
22515             K(I,4)=MOD(K(I,4),MSTU(5)**2)
22516             K(I,5)=MOD(K(I,5),MSTU(5)**2)
22517   550     CONTINUE
22518           IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 450
22519         ENDIF
22520 C...Now we have a list of best gluon insertions, none of which cause
22521 C...singlets to arise. If list is empty, try again a few times. Note:
22522 C...this should never happen if we have a meson with a gluon inserted
22523 C...in the beam remnant, since that breaks up the colour line.
22524         IF (NOPT.EQ.0) THEN
22525 C...Abandon BR-g-BR suppression for retries. This is not serious, it
22526 C...just means we happened to start with trying a bad sequence.
22527           PARP80=1D0
22528           IF (MRETRY.LE.10.AND.(ITJUNC(1).NE.0.OR.JST(1,3).EQ.0).AND
22529      &         .(ITJUNC(2).NE.0.OR.JST(2,3).EQ.0)) THEN
22530             MRETRY=MRETRY+1
22531             DO 590 JS=1,2
22532               IF (ITJUNC(JS).NE.0) THEN
22533                 JST(JS,1)=IV(JS,1)
22534                 JST(JS,2)=IV(JS,2)
22535                 JST(JS,3)=IV(JS,3)
22536 C...Reset valence quark parent pointers
22537                 DO 560 I=MINT(53)+1,N
22538                   IF (K(I,2).EQ.88.AND.K(I,3).EQ.JS) IJU=I
22539   560           CONTINUE
22540                 MANTI=ITJUNC(JS)-1
22541 C...Set (anti)colour mother = junction.
22542                 DO 570 JV=1,3
22543                   K(IV(JS,JV),4+MANTI)=MOD(K(IV(JS,JV),4+MANTI),MSTU(5))
22544      &                 +MSTU(5)*IJU
22545   570           CONTINUE
22546               ELSE
22547 C...Same for mesons. JST unchanged, so needn't be restored.
22548                 IQ=JST(JS,1)
22549                 IQBAR=JST(JS,2)
22550                 K(IQ,4)=MOD(K(IQ,4),MSTU(5))+MSTU(5)*IQBAR
22551                 K(IQBAR,5)=MOD(K(IQBAR,5),MSTU(5))+MSTU(5)*IQ
22552               ENDIF
22553 C...Also reset gluon parent pointers.
22554               NG(JS)=0
22555               DO 580 IM=1,NMI(JS)
22556                 I=IMI(JS,IM,1)
22557                 IF (K(I,2).EQ.21) THEN
22558                   K(I,4)=MOD(K(I,4),MSTU(5))
22559                   K(I,5)=MOD(K(I,5),MSTU(5))
22560                   NG(JS)=NG(JS)+1
22561                 ENDIF
22562   580         CONTINUE
22563   590       CONTINUE
22564 C...Reset colour tags
22565             DO 600 I=MINT(84)+1,N
22566               MCT(I,1)=MCO(I,1)
22567               MCT(I,2)=MCO(I,2)
22568   600       CONTINUE
22569             GOTO 400
22570           ELSE
22571             IF(NERRPR.LT.5) THEN
22572               NERRPR=NERRPR+1
22573               CALL PYLIST(4)
22574               CALL PYERRM(19,'(PYMIHK:) No physical colour flow found!')
22575               WRITE(MSTU(11),*) 'NG:', NG,'   MOUT:', MOUT(JS)
22576             ENDIF
22577 C...Kill event and start another.
22578             MINT(51)=1
22579             RETURN
22580           ENDIF
22581         ELSE
22582 C...Select between insertions, suppressing insertions wholly in the BR.
22583           IIN=PYR(0)*NOPT+1
22584   610     IIN=MOD(IIN,NOPT)+1
22585           IF (INSR(IIN,1).GT.MINT(53).AND.INSR(IIN,3).GT.MINT(53)
22586      &         .AND.MOUT(JS).NE.0.AND.PYR(0).GT.PARP80) GOTO 610
22587         ENDIF
22588  
22589 C...Now we know which gluon to insert where. Colour tags in JCCO and
22590 C...colour connection information should be updated, NG(JS) should be
22591 C...counted down, and a new loop performed if there are still gluons
22592 C...left on any side.
22593         ICM=INSR(IIN,1)
22594         IACM=INSR(IIN,3)
22595         IGL=INSR(IIN,2)
22596 C...JCG : Original gluon colour tag
22597 C...JCAG: Original gluon anticolour tag.
22598 C...JCM : Original anticolour tag of gluon colour mother
22599 C...JACM: Original colour tag of gluon anticolour mother
22600         JCG=MCO(IGL,1)
22601         JCM=MCO(ICM,2)
22602         JACG=MCO(IGL,2)
22603         JACM=MCO(IACM,1)
22604  
22605         CALL PYMIHG(JACM,JACG,JCM,JCG)
22606         IF (MACCPT.EQ.0) THEN
22607           IF(NERRPR.LT.5) THEN
22608             NERRPR=NERRPR+1
22609             CALL PYLIST(4)
22610             CALL PYERRM(11,'(PYMIHK:) Unphysical colour flow!')
22611             WRITE(MSTU(11),*) 'attaching', IGL,' between', ICM, IACM
22612           ENDIF
22613 C...Kill event and start another.
22614           MINT(51)=1
22615           RETURN
22616         ELSE
22617 C...If everything went fine, store new JCCN in JCCO.
22618           NCC=NCC+1
22619           DO 620 ICC=1,NCC
22620             JCCO(ICC,1)=JCCN(ICC,1)
22621             JCCO(ICC,2)=JCCN(ICC,2)
22622   620     CONTINUE
22623         ENDIF
22624  
22625 C...One gluon attached is counted as equivalent to one end outside.
22626         MOUT(JS)=1
22627 C...Set IGL colour mother = ICM.
22628         K(IGL,4)=MOD(K(IGL,4),MSTU(5))+MSTU(5)*ICM
22629 C...Set ICM anticolour mother = IGL colour.
22630         IF (K(ICM,2).NE.88) THEN
22631           K(ICM,5)=MOD(K(ICM,5),MSTU(5))+MSTU(5)*IGL
22632         ELSE
22633 C...If ICM is junction, just update JST array for now.
22634           DO 630 MSJ=1,3
22635             IF (JST(JS,MSJ).EQ.IACM) JST(JS,MSJ)=IGL
22636   630     CONTINUE
22637         ENDIF
22638 C...Set IGL anticolour mother = IACM.
22639         K(IGL,5)=MOD(K(IGL,5),MSTU(5))+MSTU(5)*IACM
22640 C...Set IACM anticolour mother = IGL anticolour.
22641         IF (K(IACM,2).NE.88) THEN
22642           K(IACM,4)=MOD(K(IACM,4),MSTU(5))+MSTU(5)*IGL
22643         ELSE
22644 C...If IACM is junction, just update JST array for now.
22645           DO 640 MSJ=1,3
22646             IF (JST(JS,MSJ).EQ.ICM) JST(JS,MSJ)=IGL
22647   640     CONTINUE
22648         ENDIF
22649 C...Count down # unconnected gluons.
22650         NG(JS)=NG(JS)-1
22651       ENDIF
22652       IF (NG(1).GT.0.OR.NG(2).GT.0) GOTO 440
22653  
22654       DO 840 JS=1,2
22655 C...Collapse fictitious gluons.
22656         DO 670 IGL=MINT(53)+1,N
22657           IF (K(IGL,2).EQ.21.AND.K(IGL,3).EQ.MINT(83)+JS.AND.
22658      &         K(IGL,1).EQ.14) THEN
22659             ICM=K(IGL,4)/MSTU(5)
22660             IAM=K(IGL,5)/MSTU(5)
22661             ICD=MOD(K(IGL,4),MSTU(5))
22662             IAD=MOD(K(IGL,5),MSTU(5))
22663 C...Set gluon daughters pointing to gluon mothers
22664             K(IAD,5)=MOD(K(IAD,5),MSTU(5))+MSTU(5)*IAM
22665             K(ICD,4)=MOD(K(ICD,4),MSTU(5))+MSTU(5)*ICM
22666 C...Set gluon mothers pointing to gluon daughters.
22667             IF (K(ICM,2).NE.88) THEN
22668               K(ICM,5)=MOD(K(ICM,5),MSTU(5))+MSTU(5)*ICD
22669             ELSE
22670 C...Special case: mother=junction. Just update JST array for now.
22671               DO 650 MSJ=1,3
22672                 IF (JST(JS,MSJ).EQ.IGL) JST(JS,MSJ)=ICD
22673   650         CONTINUE
22674             ENDIF
22675             IF (K(IAM,2).NE.88) THEN
22676               K(IAM,4)=MOD(K(IAM,4),MSTU(5))+MSTU(5)*IAD
22677             ELSE
22678               DO 660 MSJ=1,3
22679                 IF (JST(JS,MSJ).EQ.IGL) JST(JS,MSJ)=IAD
22680   660         CONTINUE
22681             ENDIF
22682           ENDIF
22683   670   CONTINUE
22684  
22685 C...Erase collapsed gluons from NMI and IMI (but keep them in ER)
22686         IM=NMI(JS)+1
22687   680   IM=IM-1
22688         IF (IM.GT.MINT(31).AND.K(IMI(JS,IM,1),2).NE.21) GOTO 680
22689         IF (IM.GT.MINT(31)) THEN
22690           NMI(JS)=NMI(JS)-1
22691           DO 690 IMR=IM,NMI(JS)
22692             IMI(JS,IMR,1)=IMI(JS,IMR+1,1)
22693             IMI(JS,IMR,2)=IMI(JS,IMR+1,2)
22694   690     CONTINUE
22695           GOTO 680
22696         ENDIF
22697  
22698 C...Finally, connect junction.
22699         IF (ITJUNC(JS).NE.0) THEN
22700           DO 700 I=MINT(53)+1,N
22701             IF (K(I,2).EQ.88.AND.K(I,3).EQ.MINT(83)+JS) IJU=I
22702   700     CONTINUE
22703 C...NBRJQ counts # of jq, NBRVQ # of jv, inside BR.
22704           NBRJQ =0
22705           NBRVQ =0
22706           DO 720 MSJ=1,3
22707             IDQ(MSJ)=0
22708 C...Find jq with no glue inbetween inside beam remnant.
22709             IF (JST(JS,MSJ).GT.MINT(53).AND.IABS(K(JST(JS,MSJ),2)).LE.5)
22710      &           THEN
22711               NBRJQ=NBRJQ+1
22712 C...Set IDQ = -I if q non-valence and = +I if q valence.
22713               IDQ(NBRJQ)=-JST(JS,MSJ)
22714               DO 710 JV=1,3
22715                 IF (IV(JS,JV).EQ.JST(JS,MSJ)) THEN
22716                   IDQ(NBRJQ)=JST(JS,MSJ)
22717                   NBRVQ=NBRVQ+1
22718                 ENDIF
22719   710         CONTINUE
22720             ENDIF
22721             I12=MOD(MSJ+1,2)
22722             I45=5
22723             IF (MSJ.EQ.3) I45=4
22724             K(IJU,I45)=K(IJU,I45)+(MSTU(5)**I12)*JST(JS,MSJ)
22725   720     CONTINUE
22726  
22727 C...Check if diquark can be formed.
22728           IF ((MSTP(88).GE.0.AND.NBRVQ.GE.2).OR.(NBRJQ.GE.2.AND.MSTP(88)
22729      &         .GE.1)) THEN
22730 C...If there is less than 2 valence quarks connected to junction
22731 C...and MSTP(88)>1, use random non-valence quarks to fill up.
22732             IF (NBRVQ.LE.1) THEN
22733               NDIQ=NBRVQ
22734   730         JFLIP=NBRJQ*PYR(0)+1
22735               IF (IDQ(JFLIP).LT.0) THEN
22736                 IDQ(JFLIP)=-IDQ(JFLIP)
22737                 NDIQ=NDIQ+1
22738               ENDIF
22739               IF (NDIQ.LE.1) GOTO 730
22740             ENDIF
22741 C...Place selected quarks first in IDQ, ordered in flavour.
22742             DO 740 JDQ=1,3
22743               IF (IDQ(JDQ).LE.0) THEN
22744                 ITEMP1  = IDQ(JDQ)
22745                 IDQ(JDQ)= IDQ(3)
22746                 IDQ(3)  = -ITEMP1
22747                 IF (IABS(K(IDQ(1),2)).LT.IABS(K(IDQ(2),2))) THEN
22748                   ITEMP1  = IDQ(1)
22749                   IDQ(1)  = IDQ(2)
22750                   IDQ(2)  = ITEMP1
22751                 ENDIF
22752               ENDIF
22753   740       CONTINUE
22754 C...Choose diquark spin.
22755             IF (NBRVQ.EQ.2) THEN
22756 C...If the selected quarks are both valence, we may use SU(6) rules
22757 C...to figure out which spin the diquark has, by a subdivision of the
22758 C...original beam hadron into the selected diquark system plus a kicked
22759 C...out quark, IKO.
22760               JKO=6
22761               DO 760 JDQ=1,2
22762                 DO 750 JV=1,3
22763                   IF (IDQ(JDQ).EQ.IV(JS,JV)) JKO=JKO-JV
22764   750           CONTINUE
22765   760         CONTINUE
22766               IKO=IV(JS,JKO)
22767               CALL PYSPLI(MINT(10+JS),K(IKO,2),KFDUM,KFDQ)
22768             ELSE
22769 C...If one or more of the selected quarks are not valence, we cannot use
22770 C...SU(6) subdivisions of the original beam hadron. Instead, with the
22771 C...flavours of the diquark already selected, we assume for now
22772 C...50:50 spin-1:spin-0 (where spin-0 possible).
22773               KFDQ=1000*K(IDQ(1),2)+100*K(IDQ(2),2)
22774               IS=3
22775               IF (K(IDQ(1),2).NE.K(IDQ(2),2).AND.
22776      &           (1D0+3D0*PARJ(4))*PYR(0).LT.1D0) IS=1
22777               KFDQ=KFDQ+ISIGN(IS,KFDQ)
22778             ENDIF
22779  
22780 C...Collapse diquark-j-quark system to baryon, if allowed and possible.
22781 C...Note: third quark can per definition not also be valence,
22782 C...therefore we can only do this if we are allowed to use sea quarks.
22783   770       IF (IDQ(3).NE.0.AND.MSTP(88).GE.2) THEN
22784               NTRY=0
22785   780         NTRY=NTRY+1
22786               CALL PYKFDI(KFDQ,K(IABS(IDQ(3)),2),KFDUM,KFBAR)
22787               IF (KFBAR.EQ.0.AND.NTRY.LE.100) THEN
22788                 GOTO 780
22789               ELSEIF(NTRY.GT.100) THEN
22790 C...If no baryon can be found, give up and form diquark.
22791                 IDQ(3)=0
22792                 GOTO 770
22793               ELSE
22794 C...Replace junction by baryon.
22795                 K(IJU,1)=1
22796                 K(IJU,2)=KFBAR
22797                 K(IJU,3)=MINT(83)+JS
22798                 K(IJU,4)=0
22799                 K(IJU,5)=0
22800                 P(IJU,5)=PYMASS(KFBAR)
22801                 DO 790 MSJ=1,3
22802 C...Prepare removal of participating quarks from ER.
22803                   K(JST(JS,MSJ),1)=-1
22804   790           CONTINUE
22805               ENDIF
22806             ELSE
22807 C...If collapse to baryon not possible or not allowed, replace junction
22808 C...by diquark. This way, collapsed gluons that were pointing at the
22809 C...junction will now point (correctly) at diquark.
22810               MANTI=ITJUNC(JS)-1
22811               K(IJU,1)=3
22812               K(IJU,2)=KFDQ
22813               K(IJU,3)=MINT(83)+JS
22814               K(IJU,4)=0
22815               K(IJU,5)=0
22816               DO 800 MSJ=1,3
22817                 IP=JST(JS,MSJ)
22818                 IF (IP.NE.IDQ(1).AND.IP.NE.IDQ(2)) THEN
22819                   K(IJU,4+MANTI)=0
22820                   K(IJU,5-MANTI)=IP*MSTU(5)
22821                   K(IP,4+MANTI)=MOD(K(IP,4+MANTI),MSTU(5))+
22822      &                 MSTU(5)*IJU
22823                   MCT(IJU,2-MANTI)=MCT(IP,1+MANTI)
22824                 ELSE
22825 C...Prepare removal of participating quarks from ER.
22826                   K(IP,1)=-1
22827                 ENDIF
22828   800         CONTINUE
22829             ENDIF
22830  
22831 C...Update so ER pointers to collapsed quarks
22832 C...now go to collapsed object.
22833             DO 820 I=MINT(84)+1,N
22834               IF ((K(I,3).EQ.MINT(83)+JS.OR.K(I,3).EQ.MINT(83)+2+JS).AND
22835      &             .K(I,1).GT.0) THEN
22836                 DO 810 ISID=4,5
22837                   IMO=K(I,ISID)/MSTU(5)
22838                   IDA=MOD(K(I,ISID),MSTU(5))
22839                   IF (IMO.GT.0) THEN
22840                     IF (K(IMO,1).EQ.-1) IMO=IJU
22841                   ENDIF
22842                   IF (IDA.GT.0) THEN
22843                     IF (K(IDA,1).EQ.-1) IDA=IJU
22844                   ENDIF
22845                   K(I,ISID)=IDA+MSTU(5)*IMO
22846   810           CONTINUE
22847               ENDIF
22848   820       CONTINUE
22849           ENDIF
22850         ENDIF
22851  
22852 C...Finally, if beam remnant is empty, insert a gluon in beam remnant.
22853 C...(this only happens for baryons, where we want to force the gluon
22854 C...to sit next to the junction. Mesons handled above.)
22855         IF (NBRTOT(JS).EQ.0) THEN
22856           N=N+1
22857           DO 830 IX=1,5
22858             K(N,IX)=0
22859             P(N,IX)=0D0
22860             V(N,IX)=0D0
22861   830     CONTINUE
22862           IGL=N
22863           K(IGL,1)=3
22864           K(IGL,2)=21
22865           K(IGL,3)=MINT(83)+JS
22866           IF (ITJUNC(JS).NE.0) THEN
22867 C...Incoming baryons. Pick random leg in JST (NVSUM = 3 for baryons)
22868             JLEG=PYR(0)*NVSUM(JS)+1
22869             I1=JST(JS,JLEG)
22870             JST(JS,JLEG)=IGL
22871             JCT=MCT(I1,ITJUNC(JS))
22872             MCT(IGL,3-ITJUNC(JS))=JCT
22873             NCT=NCT+1
22874             MCT(IGL,ITJUNC(JS))=NCT
22875             MANTI=ITJUNC(JS)-1
22876           ELSE
22877 C...Meson. Should not happen.
22878             CALL PYERRM(19,'(PYMIHK:) Empty meson beam remnant')
22879             IF(NERRPR.LT.5) THEN
22880               WRITE(MSTU(11),*) 'This should not have been possible!'
22881               CALL PYLIST(4)
22882               NERRPR=NERRPR+1
22883             ENDIF
22884             MINT(51)=1
22885             RETURN
22886           ENDIF
22887           I2=MOD(K(I1,4+MANTI)/MSTU(5),MSTU(5))
22888           K(I1,4+MANTI)=MOD(K(I1,4+MANTI),MSTU(5))+MSTU(5)*IGL
22889           K(IGL,5-MANTI)=MOD(K(IGL,5-MANTI),MSTU(5))+MSTU(5)*I1
22890           K(IGL,4+MANTI)=MOD(K(IGL,4+MANTI),MSTU(5))+MSTU(5)*I2
22891           IF (K(I2,2).NE.88) THEN
22892             K(I2,5-MANTI)=MOD(K(I2,5-MANTI),MSTU(5))+MSTU(5)*IGL
22893           ELSE
22894             IF (MOD(K(I2,4),MSTU(5)).EQ.I1) THEN
22895               K(I2,4)=(K(I2,4)/MSTU(5))*MSTU(5)+IGL
22896             ELSEIF(MOD(K(I2,5)/MSTU(5),MSTU(5)).EQ.I1) THEN
22897               K(I2,5)=MOD(K(I2,5),MSTU(5))+MSTU(5)*IGL
22898             ELSE
22899               K(I2,5)=(K(I2,5)/MSTU(5))*MSTU(5)+IGL
22900             ENDIF
22901           ENDIF
22902         ENDIF
22903   840 CONTINUE
22904  
22905 C...Remove collapsed quarks and junctions from ER and update IMI.
22906       CALL PYEDIT(11)
22907  
22908 C...Also update beam remnant part of IMI.
22909       NMI(1)=MINT(31)
22910       NMI(2)=MINT(31)
22911       DO 850 I=MINT(53)+1,N
22912         IF (K(I,1).LE.0) GOTO 850
22913 C...Restore BR quark/diquark/baryon pointers in IMI.
22914         IF ((K(I,2).NE.21.OR.K(I,1).NE.14).AND.K(I,2).NE.88) THEN
22915           JS=K(I,3)-MINT(83)
22916           NMI(JS)=NMI(JS)+1
22917           IMI(JS,NMI(JS),1)=I
22918           IMI(JS,NMI(JS),2)=0
22919         ENDIF
22920   850 CONTINUE
22921  
22922 C...Restore companion information from collapsed gluons.
22923       DO 870 I=MINT(53)+1,N
22924         IF (K(I,2).EQ.21.AND.K(I,1).EQ.14) THEN
22925           JS=K(I,3)-MINT(83)
22926           JCD=MOD(K(I,4),MSTU(5))
22927           JAD=MOD(K(I,5),MSTU(5))
22928           DO 860 IM=1,NMI(JS)
22929             IF (IMI(JS,IM,1).EQ.JCD) IMC=IM
22930             IF (IMI(JS,IM,1).EQ.JAD) IMA=IM
22931   860     CONTINUE
22932           IMI(JS,IMC,2)=IMI(JS,IMA,1)
22933           IMI(JS,IMA,2)=IMI(JS,IMC,1)
22934         ENDIF
22935   870 CONTINUE
22936  
22937 C...Renumber colour lines (since some have disappeared)
22938       JCT=0
22939       JCD=0
22940   880 JCT=JCT+1
22941       MFOUND=0
22942       I=MINT(84)
22943   890 I=I+1
22944       IF (I.EQ.N+1) THEN
22945         IF (MFOUND.EQ.0) JCD=JCD+1
22946       ELSEIF (MCT(I,1).EQ.JCT.AND.K(I,1).GE.1) THEN
22947         MCT(I,1)=JCT-JCD
22948         MFOUND=1
22949       ELSEIF (MCT(I,2).EQ.JCT.AND.K(I,1).GE.1) THEN
22950         MCT(I,2)=JCT-JCD
22951         MFOUND=1
22952       ENDIF
22953       IF (I.LE.N) GOTO 890
22954       IF (JCT.LT.NCT) GOTO 880
22955       NCT=JCT-JCD
22956  
22957 C...Reset hard interaction subsystems to their CM frames.
22958       IF (IBOOST.EQ.1) THEN
22959         DO 900 IM=1,MINT(31)
22960           BETA=-(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
22961           CALL PYROBO(IMISEP(IM-1)+1,IMISEP(IM),0D0,0D0,0D0,0D0,BETA)
22962   900   CONTINUE
22963 C...Zero beam remnant longitudinal momenta and energies
22964         DO 910 I=MINT(53)+1,N
22965           P(I,3)=0D0
22966           P(I,4)=0D0
22967   910   CONTINUE
22968       ELSE
22969         CALL PYERRM(9
22970      &       ,'(PYMIHK:) Inconsistent kinematics. Too many boosts.')
22971 C...Kill event and start another.
22972         MINT(51)=1
22973         RETURN
22974       ENDIF
22975  
22976  9999 RETURN
22977       END
22978 C*********************************************************************
22979  
22980 C...PYCTTR
22981 C...Adapted from PYPREP.
22982 C...Assigns LHA1 colour tags to coloured partons based on
22983 C...K(I,4) and K(I,5) colour connection record.
22984 C...KCS negative signifies that a previous tracing should be continued.
22985 C...(in case the tag to be continued is empty, the routine exits)
22986 C...Starts at I and ends at I or IEND.
22987 C...Special considerations for systems with junctions.
22988 C...Special: if IEND=-1, means trace this parton to its color partner,
22989 C...         then exit. If no partner found, exit with 0. 
22990 
22991       SUBROUTINE PYCTTR(I,KCS,IEND)
22992 C...Double precision and integer declarations.
22993       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22994       INTEGER PYK,PYCHGE,PYCOMP
22995 C...Commonblocks.
22996       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
22997       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22998       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
22999       COMMON/PYINT1/MINT(400),VINT(400)
23000 C...The common block of colour tags.
23001       COMMON/PYCTAG/NCT,MCT(4000,2)
23002       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/
23003       DATA NERRPR/0/
23004       SAVE NERRPR
23005  
23006 C...Skip if parton not existing or does not have KCS
23007       IF (K(I,1).LE.0) GOTO 120
23008       KC=PYCOMP(K(I,2))
23009       IF (KC.EQ.0) GOTO 120
23010       KQ=KCHG(KC,2)
23011       IF (KQ.EQ.0) GOTO 120
23012       IF (IABS(KQ).EQ.1.AND.KQ*(9-2*ABS(KCS)).NE.ISIGN(1,K(I,2))) 
23013      &    GOTO 120
23014  
23015       IF (KCS.GT.0) THEN
23016         NCT=NCT+1
23017 C...Set colour tag of first parton.
23018         MCT(I,KCS-3)=NCT
23019         NCS=NCT
23020       ELSE
23021         KCS=-KCS
23022         NCS=MCT(I,KCS-3)
23023         IF (NCS.EQ.0) GOTO 120
23024       ENDIF
23025  
23026       IA=I
23027       NSTP=0
23028   100 NSTP=NSTP+1
23029       IF(NSTP.GT.4*N) THEN
23030         CALL PYERRM(14,'(PYCTTR:) caught in infinite loop')
23031         GOTO 120
23032       ENDIF
23033  
23034 C...Finished if reached final-state triplet.
23035       IF(K(IA,1).EQ.3) THEN
23036         IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) GOTO 120
23037       ENDIF
23038  
23039 C...Also finished if reached junction.
23040       IF(K(IA,1).EQ.42) THEN
23041         GOTO 120
23042       ENDIF
23043  
23044 C...GOTO next parton in colour space.
23045   110 IB=IA
23046 C...If IB's KCS daughter not traced and exists, goto KCS daughter.
23047       IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5))
23048      &     .NE.0) THEN
23049         IA=MOD(K(IB,KCS),MSTU(5))
23050         K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
23051         MREV=0
23052       ELSE
23053 C...If KCS mother traced or KCS mother nonexistent, switch colour.
23054         IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
23055      &       MSTU(5)).EQ.0) THEN
23056           KCS=9-KCS
23057           NCT=NCT+1
23058           NCS=NCT
23059 C...Assign new colour tag on other side of old parton.
23060           MCT(IB,KCS-3)=NCT
23061         ENDIF
23062 C...Goto (new) KCS mother, set mother traced tag
23063         IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
23064         K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
23065         MREV=1
23066       ENDIF
23067       IF(IA.LE.0.OR.IA.GT.N) THEN
23068         IF (IEND.EQ.-1) THEN
23069           IEND=0
23070           GOTO 120
23071         ENDIF
23072         CALL PYERRM(12,'(PYCTTR:) colour tag tracing failed')
23073         IF(NERRPR.LT.5) THEN
23074           write(*,*) 'began at ',I
23075           write(*,*) 'ended going from', IB, ' to', IA, '  KCS=',KCS,
23076      &        '  NCS=',NCS,'  MREV=',MREV
23077           CALL PYLIST(4)
23078           NERRPR=NERRPR+1
23079         ENDIF
23080         MINT(51)=1
23081         RETURN
23082       ENDIF
23083       IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5),
23084      &     MSTU(5)).EQ.IB) THEN
23085         IF(MREV.EQ.1) KCS=9-KCS
23086         IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
23087 C...Set KSC mother traced tag for IA
23088         K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
23089       ELSE
23090         IF(MREV.EQ.0) KCS=9-KCS
23091         IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
23092 C...Set KCS daughter traced tag for IA
23093         K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
23094       ENDIF
23095 C...Assign new colour tag
23096       MCT(IA,KCS-3)=NCS
23097 C...Finish if IEND=-1 and found final-state color partner 
23098       IF (IEND.EQ.-1.AND.K(IA,1).LT.10) THEN
23099         IEND=IA
23100         GOTO 120        
23101       ENDIF
23102       IF (IA.NE.I.AND.IA.NE.IEND) GOTO 100
23103  
23104   120 RETURN
23105       END
23106  
23107 *********************************************************************
23108  
23109 C...PYMIHG
23110 C...Collapse JCP1 and connecting tags to JCG1.
23111 C...Collapse JCP2 and connecting tags to JCG2.
23112  
23113       SUBROUTINE PYMIHG(JCP1,JCG1,JCP2,JCG2)
23114 C...Double precision and integer declarations.
23115       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23116       IMPLICIT INTEGER(I-N)
23117       INTEGER PYK,PYCHGE,PYCOMP
23118 C...The event record
23119       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
23120 C...Parameters
23121       COMMON/PYINT1/MINT(400),VINT(400)
23122       SAVE /PYJETS/,/PYINT1/
23123 C...Local variables
23124       COMMON /PYCBLS/MCO(4000,2),NCC,JCCO(4000,2),JCCN(4000,2),MACCPT
23125       COMMON /PYCTAG/NCT,MCT(4000,2)
23126       SAVE /PYCBLS/,/PYCTAG/
23127  
23128 C...Break up JCP1<->JCP2 tag and create JCP1<->JCG1 and JCP2<->JCG2 tags
23129 C...in temporary tag collapse array JCCN. Only break up one connection.
23130       MACCPT=1
23131       MCLPS=0
23132       DO 100 ICC=1,NCC
23133         JCCN(ICC,1)=JCCO(ICC,1)
23134         JCCN(ICC,2)=JCCO(ICC,2)
23135 C...If there was a mother, it was previously connected to JCP1.
23136 C...Should be changed to JCP2.
23137         IF (MCLPS.EQ.0) THEN
23138           IF (JCCN(ICC,1).EQ.MAX(JCP1,JCP2).AND.JCCN(ICC,2).EQ.MIN(JCP1
23139      &         ,JCP2)) THEN
23140             JCCN(ICC,1)=MAX(JCG2,JCP2)
23141             JCCN(ICC,2)=MIN(JCG2,JCP2)
23142             MCLPS=1
23143           ENDIF
23144         ENDIF
23145   100 CONTINUE
23146 C...Also collapse colours on JCP1 side of JCG1
23147       IF (JCP1.NE.0) THEN
23148         JCCN(NCC+1,1)=MAX(JCP1,JCG1)
23149         JCCN(NCC+1,2)=MIN(JCP1,JCG1)
23150       ELSE
23151         JCCN(NCC+1,1)=MAX(JCP2,JCG2)
23152         JCCN(NCC+1,2)=MIN(JCP2,JCG2)
23153       ENDIF
23154  
23155 C...Initialize event record colour tag array MCT array to MCO.
23156        DO 110 I=MINT(84)+1,N
23157         MCT(I,1)=MCO(I,1)
23158         MCT(I,2)=MCO(I,2)
23159   110 CONTINUE
23160  
23161 C...Collapse tags:
23162 C...IS = 1 : All tags connecting to JCG1 on JCG1 side -> JCG1
23163 C...IS = 2 : All tags connecting to JCG2 on JCG2 side -> JCG2
23164 C...IS = 3 : All tags connecting to JCG1 on JCP1 side -> JCG1
23165 C...IS = 4 : All tags connecting to JCG2 on JCP2 side -> JCG2
23166       DO 160 IS=1,4
23167 C...Skip if junction.
23168         IF ((IS.EQ.4.AND.JCP2.EQ.0).OR.(IS.EQ.3).AND.JCP1.EQ.0) GOTO 160
23169 C...Define starting point in tag space.
23170 C...JCA = previous tag
23171 C...JCO = present tag
23172 C...JCN = new tag
23173         IF (MOD(IS,2).EQ.1) THEN
23174           JCO=JCP1
23175           JCN=JCG1
23176           JCALL=JCG1
23177         ELSEIF (MOD(IS,2).EQ.0) THEN
23178           JCO=JCP2
23179           JCN=JCG2
23180           JCALL=JCG2
23181         ENDIF
23182         ITRACE=0
23183   120   ITRACE=ITRACE+1
23184         IF (ITRACE.GT.1000) THEN
23185 C...NB: Proper error message should be defined here.
23186           CALL PYERRM(14
23187      &         ,'(PYMIHG:) Inf loop when collapsing colours.')
23188           MINT(57)=MINT(57)+1
23189           MINT(51)=1
23190           RETURN
23191         ENDIF
23192 C...Collapse all JCN tags to JCALL
23193         DO 130 I=MINT(84)+1,N
23194           IF (MCO(I,1).EQ.JCN) MCT(I,1)=JCALL
23195           IF (MCO(I,2).EQ.JCN) MCT(I,2)=JCALL
23196   130   CONTINUE
23197 C...IS = 1,2: first step forward. IS = 3,4: first step backward.
23198         IF (IS.GT.2.AND.(JCN.EQ.JCALL)) THEN
23199           JCA=JCN
23200           JCN=JCO
23201         ELSE
23202           JCA=JCO
23203           JCO=JCN
23204         ENDIF
23205 C...If possible, step from JCO to new tag JCN not equal to JCA.
23206         DO 140 ICC=1,NCC+1
23207           IF (JCCN(ICC,1).EQ.JCO.AND.JCCN(ICC,2).NE.JCA) JCN=
23208      &         JCCN(ICC,2)
23209           IF (JCCN(ICC,2).EQ.JCO.AND.JCCN(ICC,1).NE.JCA) JCN=
23210      &         JCCN(ICC,1)
23211   140   CONTINUE
23212 C...Iterate if new colour was arrived at, but don't go in circles.
23213         IF (JCN.NE.JCO.AND.JCN.NE.JCALL) GOTO 120
23214 C...Change all JCN tags in MCO to JCALL in MCT.
23215         DO 150 I=MINT(84)+1,N
23216           IF (MCO(I,1).EQ.JCN) MCT(I,1)=JCALL
23217           IF (MCO(I,2).EQ.JCN) MCT(I,2)=JCALL
23218 C...If gluon and colour tag = anticolour tag (and not = 0) try again.
23219           IF (K(I,2).EQ.21.AND.MCT(I,1).EQ.MCT(I,2).AND.MCT(I,1)
23220      &         .NE.0) MACCPT=0
23221   150   CONTINUE
23222   160 CONTINUE
23223  
23224       DO 200 JCL=NCT,1,-1
23225         JCA=0
23226         JCN=JCL
23227   170   JCO=JCN
23228         DO 180 ICC=1,NCC+1
23229           IF (JCCN(ICC,1).EQ.JCO.AND.JCCN(ICC,2).NE.JCA) JCN
23230      &         =JCCN(ICC,2)
23231           IF (JCCN(ICC,2).EQ.JCO.AND.JCCN(ICC,1).NE.JCA) JCN
23232      &         =JCCN(ICC,1)
23233   180   CONTINUE
23234 C...Overpaint all JCN with JCL
23235         IF (JCN.NE.JCO.AND.JCN.NE.JCL) THEN
23236           DO 190 I=MINT(84)+1,N
23237             IF (MCT(I,1).EQ.JCN) MCT(I,1)=JCL
23238             IF (MCT(I,2).EQ.JCN) MCT(I,2)=JCL
23239 C...If gluon and colour tag = anticolour tag (and not = 0) try again.
23240             IF (K(I,2).EQ.21.AND.MCT(I,1).EQ.MCT(I,2).AND.MCT(I,1)
23241      &           .NE.0) MACCPT=0
23242   190     CONTINUE
23243           JCA=JCO
23244           GOTO 170
23245         ENDIF
23246   200 CONTINUE
23247  
23248       RETURN
23249       END
23250  
23251 C*********************************************************************
23252  
23253 C...PYMIRM
23254 C...Picks primordial kT and shares longitudinal momentum among
23255 C...beam remnants.
23256  
23257       SUBROUTINE PYMIRM
23258  
23259 C...Double precision and integer declarations.
23260       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23261       IMPLICIT INTEGER(I-N)
23262       INTEGER PYK,PYCHGE,PYCOMP
23263 C...The event record
23264       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
23265 C...Parameters
23266       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23267       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23268       COMMON/PYINT1/MINT(400),VINT(400)
23269 C...The common block of colour tags.
23270       COMMON/PYCTAG/NCT,MCT(4000,2)
23271 C...The common block of dangling ends
23272       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
23273      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
23274      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
23275       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINTM/,/PYCTAG/
23276 C...Local variables
23277       DIMENSION W(0:2,0:2),VB(3),NNXT(2),IVALQ(2),ICOMQ(2)
23278 C...W(I,J)|  J=0    |   1   |   2   |
23279 C...  I=0 | Wrem**2 |  W+   |  W-   |
23280 C...    1 | W1**2   |  W1+  |  W1-  |
23281 C...    2 | W2**2   |  W2+  |  W2-  |
23282 C...4-product
23283       FOUR(I,J)=P(I,4)*P(J,4)-P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
23284 C...Tentative parametrization of <kT> as a function of Q.
23285       SIGPT(Q)=MAX(PARJ(21),2.1D0*Q/(7D0+Q))
23286 C      SIGPT(Q)=MAX(0.36D0,4D0*SQRT(Q)/(10D0+SQRT(Q))
23287 C      SIGPT(Q)=MAX(PARJ(21),3D0*SQRT(Q)/(5D0+SQRT(Q))
23288       GETPT(Q,SIGMA)=MIN(SIGMA*SQRT(-LOG(PYR(0))),PARP(93))
23289 C...Lambda kinematic function.
23290       FLAM(A,B,C)=A**2+B**2+C**2-2D0*(A*B+B*C+C*A)
23291  
23292 C...Beginning and end of beam remnant partons
23293       NOUT=MINT(53)
23294       ISUB=MINT(1)
23295  
23296 C...Loopback point if kinematic choices gives impossible configuration.
23297       NTRY=0
23298   100 NTRY=NTRY+1
23299  
23300 C...Assign kT values on each side separately.
23301       DO 180 JS=1,2
23302  
23303 C...First zero all kT on this side. Skip if no kT to generate.
23304         DO 110 IM=1,NMI(JS)
23305           P(IMI(JS,IM,1),1)=0D0
23306           P(IMI(JS,IM,1),2)=0D0
23307   110   CONTINUE
23308         IF(MSTP(91).LE.0) GOTO 180
23309  
23310 C...Now assign kT to each (non-collapsed) parton in IMI.
23311         DO 170 IM=1,NMI(JS)
23312           I=IMI(JS,IM,1)
23313 C...Select kT according to truncated gaussian or 1/kt6 tails.
23314 C...For first interaction, either use rms width = PARP(91) or fitted.
23315           IF (IM.EQ.1) THEN
23316             SIGMA=PARP(91)
23317             IF (MSTP(91).GE.11.AND.MSTP(91).LE.20) THEN
23318               Q=SQRT(PT2MI(IM))
23319               SIGMA=SIGPT(Q)
23320             ENDIF
23321           ELSE
23322 C...For subsequent interactions and BR partons use fragmentation width.
23323             SIGMA=PARJ(21)
23324           ENDIF
23325           PHI=PARU(2)*PYR(0)
23326           PT=0D0
23327           IF(NTRY.LE.100) THEN
23328  111        IF (MSTP(91).EQ.1.OR.MSTP(91).EQ.11) THEN
23329               PT=GETPT(Q,SIGMA)
23330               PTX=PT*COS(PHI)
23331               PTY=PT*SIN(PHI)
23332             ELSEIF (MSTP(91).EQ.2) THEN
23333               CALL PYERRM(1,'(PYMIRM:) Sorry, MSTP(91)=2 not '//
23334      &          'available, using MSTP(91)=1.')
23335               CALL PYGIVE('MSTP(91)=1')
23336               GOTO 111
23337             ELSEIF(MSTP(91).EQ.3.OR.MSTP(91).EQ.13) THEN
23338 C...Use distribution with kt**6 tails, rms width = PARP(91).
23339               EPS=SQRT(3D0/2D0)*SIGMA
23340 C...Generate PTX and PTY separately, each propto 1/KT**6
23341               DO 119 IXY=1,2
23342 C...Decide which interval to try
23343  112            P12=1D0/(1D0+27D0/40D0*SIGMA**6/EPS**6)
23344                 IF (PYR(0).LT.P12) THEN
23345 C...Use flat approx with accept/reject up to EPS.
23346                   PT=PYR(0)*EPS
23347                   WT=(3D0/2D0*SIGMA**2/(PT**2+3D0/2D0*SIGMA**2))**3
23348                   IF (PYR(0).GT.WT) GOTO 112
23349                 ELSE
23350 C...Above EPS, use 1/kt**6 approx with accept/reject.
23351                   PT=EPS/(PYR(0)**(1D0/5D0))
23352                   WT=PT**6/(PT**2+3D0/2D0*SIGMA**2)**3
23353                   IF (PYR(0).GT.WT) GOTO 112
23354                 ENDIF
23355                 MSIGN=1
23356                 IF (PYR(0).GT.0.5D0) MSIGN=-1
23357                 IF (IXY.EQ.1) PTX=MSIGN*PT
23358                 IF (IXY.EQ.2) PTY=MSIGN*PT
23359  119          CONTINUE
23360             ELSEIF (MSTP(91).EQ.4.OR.MSTP(91).EQ.14) THEN
23361               PTX=SIGMA*(SQRT(6D0)*PYR(0)-SQRT(3D0/2D0))
23362               PTY=SIGMA*(SQRT(6D0)*PYR(0)-SQRT(3D0/2D0))
23363             ENDIF
23364 C...Adjust final PT. Impose upper cutoff, or zero for soft evts.
23365             PT=SQRT(PTX**2+PTY**2)
23366             WT=1D0
23367             IF (PT.GT.PARP(93)) WT=SQRT(PARP(93)/PT)
23368             IF(ISUB.EQ.95.AND.IM.EQ.1) WT=0D0
23369             PTX=PTX*WT
23370             PTY=PTY*WT
23371             PT=SQRT(PTX**2+PTY**2)
23372           ENDIF
23373  
23374           P(I,1)=P(I,1)+PTX
23375           P(I,2)=P(I,2)+PTY
23376  
23377 C...Compensation kicks, with varying degree of local anticorrelations.
23378           MCORR=MSTP(90)
23379           IF (MCORR.EQ.0.OR.ISUB.EQ.95) THEN
23380             PTCX=-PTX/(NMI(JS)-1)
23381             PTCY=-PTY/(NMI(JS)-1)
23382             IF(ISUB.EQ.95) THEN
23383               PTCX=-PTX/(NMI(JS)-2)
23384               PTCY=-PTY/(NMI(JS)-2)
23385             ENDIF
23386             DO 120 IMC=1,NMI(JS)
23387               IF (IMC.EQ.IM) GOTO 120
23388               IF(ISUB.EQ.95.AND.IMC.EQ.1) GOTO 120
23389               P(IMI(JS,IMC,1),1)=P(IMI(JS,IMC,1),1)+PTCX
23390               P(IMI(JS,IMC,1),2)=P(IMI(JS,IMC,1),2)+PTCY
23391   120       CONTINUE
23392           ELSEIF (MCORR.GE.1) THEN
23393             DO 140 MSID=4,5
23394               NNXT(MSID-3)=0
23395 C...Count up # of neighbours on either side
23396               IMO=I
23397   130         IMO=K(IMO,MSID)/MSTU(5)
23398               IF (IMO.EQ.0) GOTO 140
23399               NNXT(MSID-3)=NNXT(MSID-3)+1
23400 C...Stop at quarks and junctions
23401               IF (MCORR.EQ.1.AND.K(IMO,2).EQ.21) GOTO 130
23402   140       CONTINUE
23403 C...How should compensation be shared when unequal numbers on the
23404 C...two sides? 50/50 regardless? N1:N2? Assume latter for now.
23405             NSUM=NNXT(1)+NNXT(2)
23406             T1=0
23407             DO 160 MSID=4,5
23408 C...Total momentum to be compensated on this side
23409               IF (NNXT(MSID-3).EQ.0) GOTO 160
23410               PTCX=-(NNXT(MSID-3)*PTX)/NSUM
23411               PTCY=-(NNXT(MSID-3)*PTY)/NSUM
23412 C...RS: compensation supression factor as we go out from parton I.
23413 C...Hardcoded behaviour RS=0.5, i.e. 1/2**n falloff,
23414 C...since (for now) MSTP(90) provides enough variability.
23415               RS=0.5D0
23416               FAC=(1D0-RS)/(RS*(1-RS**NNXT(MSID-3)))
23417               IMO=I
23418   150         IDA=IMO
23419               IMO=K(IMO,MSID)/MSTU(5)
23420               IF (IMO.EQ.0) GOTO 160
23421               FAC=FAC*RS
23422               IF (K(IMO,2).NE.88) THEN
23423                 P(IMO,1)=P(IMO,1)+FAC*PTCX
23424                 P(IMO,2)=P(IMO,2)+FAC*PTCY
23425                 IF (MCORR.EQ.1.AND.K(IMO,2).EQ.21) GOTO 150
23426 C...If we reach junction, divide out the kT that would have been
23427 C...assigned to the junction on each of its other legs.
23428               ELSE
23429                 L1=MOD(K(IMO,4),MSTU(5))
23430                 L2=K(IMO,5)/MSTU(5)
23431                 L3=MOD(K(IMO,5),MSTU(5))
23432                 P(L1,1)=P(L1,1)+0.5D0*FAC*PTCX
23433                 P(L1,2)=P(L1,2)+0.5D0*FAC*PTCY
23434                 P(L2,1)=P(L2,1)+0.5D0*FAC*PTCX
23435                 P(L2,2)=P(L2,2)+0.5D0*FAC*PTCY
23436                 P(L3,1)=P(L3,1)+0.5D0*FAC*PTCX
23437                 P(L3,2)=P(L3,2)+0.5D0*FAC*PTCY
23438                 P(IDA,1)=P(IDA,1)-0.5D0*FAC*PTCX
23439                 P(IDA,2)=P(IDA,2)-0.5D0*FAC*PTCY
23440               ENDIF
23441  
23442   160       CONTINUE
23443           ENDIF
23444   170   CONTINUE
23445 C...End assignment of kT values to initiators and remnants.
23446   180 CONTINUE
23447  
23448 C...Check kinematics constraints for non-BR partons.
23449       DO 190 IM=1,MINT(31)
23450         SHAT=XMI(1,IM)*XMI(2,IM)*VINT(2)
23451         PT1=SQRT(P(IMI(1,IM,1),1)**2+P(IMI(1,IM,1),2)**2)
23452         PT2=SQRT(P(IMI(2,IM,1),1)**2+P(IMI(2,IM,1),2)**2)
23453         PT1PT2=P(IMI(1,IM,1),1)*P(IMI(2,IM,1),1)
23454      &        +P(IMI(1,IM,1),2)*P(IMI(2,IM,1),2)
23455         IF (SHAT.LT.2D0*(PT1*PT2-PT1PT2).AND.NTRY.LE.100) THEN
23456           IF(NTRY.GE.100) THEN
23457 C...Kill this event and start another.
23458             CALL PYERRM(1,
23459      &           '(PYMIRM:) No consistent (x,kT) sets found')
23460             MINT(51)=1
23461             RETURN
23462           ENDIF
23463           GOTO 100
23464         ENDIF
23465   190 CONTINUE
23466  
23467 C...Calculate W+ and W- available for combined remnant system.
23468       W(0,1)=VINT(1)
23469       W(0,2)=VINT(1)
23470       DO 200 IM=1,MINT(31)
23471         PT2 = (P(IMI(1,IM,1),1)+P(IMI(2,IM,1),1))**2
23472      &       +(P(IMI(1,IM,1),2)+P(IMI(2,IM,1),2))**2
23473         ST=XMI(1,IM)*XMI(2,IM)*VINT(2)+PT2
23474         W(0,1)=W(0,1)-SQRT(XMI(1,IM)/XMI(2,IM)*ST)
23475         W(0,2)=W(0,2)-SQRT(XMI(2,IM)/XMI(1,IM)*ST)
23476   200 CONTINUE
23477 C...Also store Wrem**2 = W+ * W-
23478       W(0,0)=W(0,1)*W(0,2)
23479  
23480       IF ((W(0,0).LT.0D0.OR.W(0,1)+W(0,2).LT.0D0).AND.NTRY.LE.100) THEN
23481           IF(NTRY.GE.100) THEN
23482 C...Kill this event and start another.
23483             CALL PYERRM(1,
23484      &    '(PYMIRM:) Negative beam remnant mass squared unavoidable')
23485             MINT(51)=1
23486             RETURN
23487           ENDIF
23488           GOTO 100
23489       ENDIF
23490 
23491 C...Assign unscaled x values to partons/hadrons in each of the
23492 C...beam remnants and calculate unscaled W+ and W- from them.
23493       NTRYX=0
23494   210 NTRYX=NTRYX+1
23495       DO 280 JS=1,2
23496         W(JS,1)=0D0
23497         W(JS,2)=0D0
23498         DO 270 IM=MINT(31)+1,NMI(JS)
23499           I=IMI(JS,IM,1)
23500           KF=K(I,2)
23501           KFA=IABS(KF)
23502           ICOMP=IMI(JS,IM,2)
23503  
23504 C...Skip collapsed gluons and junctions. Reset.
23505           IF (KFA.EQ.21.AND.K(I,1).EQ.14) GOTO 270
23506           IF (KFA.EQ.88) GOTO 270
23507           X=0D0
23508           IVALQ(1)=0
23509           IVALQ(2)=0
23510           ICOMQ(1)=0
23511           ICOMQ(2)=0
23512  
23513 C...If gluon then only beam remnant, so takes all.
23514           IF(KFA.EQ.21) THEN
23515             X=1D0
23516 C...If valence quark then use parametrized valence distribution.
23517           ELSEIF(KFA.LE.6.AND.ICOMP.EQ.0) THEN
23518             IVALQ(1)=KF
23519 C...If companion quark then derive from companion x.
23520           ELSEIF(KFA.LE.6) THEN
23521             ICOMQ(1)=ICOMP
23522 C...If valence diquark then use two parametrized valence distributions.
23523           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0.AND.
23524      &    ICOMP.EQ.0) THEN
23525             IVALQ(1)=ISIGN(KFA/1000,KF)
23526             IVALQ(2)=ISIGN(MOD(KFA/100,10),KF)
23527 C...If valence+sea diquark then combine valence + companion choices.
23528           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0.AND.
23529      &    ICOMP.LT.MSTU(5)) THEN
23530             IF(KFA/1000.EQ.IABS(K(ICOMP,2))) THEN
23531               IVALQ(1)=ISIGN(MOD(KFA/100,10),KF)
23532             ELSE
23533               IVALQ(1)=ISIGN(KFA/1000,KF)
23534             ENDIF
23535             ICOMQ(1)=ICOMP
23536 C...Extra code: workaround for diquark made out of two sea
23537 C...quarks, but where not (yet) ICOMP > MSTU(5).
23538             DO 220 IM1=1,MINT(31)
23539               IF(IMI(JS,IM1,2).EQ.I.AND.IMI(JS,IM1,1).NE.ICOMP) THEN
23540                 ICOMQ(2)=IMI(JS,IM1,1)
23541                 IVALQ(1)=0
23542               ENDIF
23543   220       CONTINUE
23544 C...If sea diquark then sum of two derived from companion x.
23545           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0) THEN
23546              ICOMQ(1)=MOD(ICOMP,MSTU(5))
23547              ICOMQ(2)=ICOMP/MSTU(5)
23548 C...If meson or baryon then use fragmentation function.
23549 C...Somewhat arbitrary split into old and new flavour, but OK normally.
23550           ELSE
23551             KFL3=MOD(KFA/10,10)
23552             IF(MOD(KFA/1000,10).EQ.0) THEN
23553               KFL1=MOD(KFA/100,10)
23554             ELSE
23555               KFL1=MOD(KFA,10000)-10*KFL3-1
23556               IF(MOD(KFA/1000,10).EQ.MOD(KFA/100,10).AND.
23557      &        MOD(KFA,10).EQ.2) KFL1=KFL1+2
23558             ENDIF
23559             PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
23560             CALL PYZDIS(KFL1,KFL3,PR,X)
23561           ENDIF
23562  
23563           DO 260 IQ=1,2
23564 C...Calculation of x of valence quark: assume form (1-x)^a/sqrt(x),
23565 C...where a=3.5 for u in proton, =2 for d in proton and =0.8 for meson.
23566 C...In other baryons combine u and d from proton appropriately.
23567             IF(IVALQ(IQ).NE.0) THEN
23568               NVAL=0
23569               IF(KFIVAL(JS,1).EQ.IVALQ(IQ)) NVAL=NVAL+1
23570               IF(KFIVAL(JS,2).EQ.IVALQ(IQ)) NVAL=NVAL+1
23571               IF(KFIVAL(JS,3).EQ.IVALQ(IQ)) NVAL=NVAL+1
23572 C...Meson.
23573               IF(KFIVAL(JS,3).EQ.0) THEN
23574                 MDU=0
23575 C...Baryon with three identical quarks: mix u and d forms.
23576               ELSEIF(NVAL.EQ.3) THEN
23577                 MDU=INT(PYR(0)+5D0/3D0)
23578 C...Baryon, one of two identical quarks: u form.
23579               ELSEIF(NVAL.EQ.2) THEN
23580                 MDU=2
23581 C...Baryon with two identical quarks, but not the one picked: d form.
23582               ELSEIF(KFIVAL(JS,1).EQ.KFIVAL(JS,2).OR.KFIVAL(JS,2).EQ.
23583      &        KFIVAL(JS,3).OR.KFIVAL(JS,1).EQ.KFIVAL(JS,3)) THEN
23584                 MDU=1
23585 C...Baryon with three nonidentical quarks: mix u and d forms.
23586               ELSE
23587                 MDU=INT(PYR(0)+5D0/3D0)
23588               ENDIF
23589               XPOW=0.8D0
23590               IF(MDU.EQ.1) XPOW=3.5D0
23591               IF(MDU.EQ.2) XPOW=2D0
23592   230         XX=PYR(0)**2
23593               IF((1D0-XX)**XPOW.LT.PYR(0)) GOTO 230
23594               X=X+XX
23595             ENDIF
23596  
23597 C...Calculation of x of companion quark.
23598             IF(ICOMQ(IQ).NE.0) THEN
23599               XCOMP=1D-4
23600               DO 240 IM1=1,MINT(31)
23601                 IF(IMI(JS,IM1,1).EQ.ICOMQ(IQ)) XCOMP=XMI(JS,IM1)
23602   240         CONTINUE
23603               NPOW=MAX(0,MIN(4,MSTP(87)))
23604   250         XX=XCOMP*(1D0/(1D0-PYR(0)*(1D0-XCOMP))-1D0)
23605               CORR=((1D0-XCOMP-XX)/(1D0-XCOMP))**NPOW*
23606      &        (XCOMP**2+XX**2)/(XCOMP+XX)**2
23607               IF(CORR.LT.PYR(0)) GOTO 250
23608               X=X+XX
23609             ENDIF
23610   260     CONTINUE
23611  
23612 C...Optionally enchance x of composite systems (e.g. diquarks)
23613           IF (KFA.GT.100) X=PARP(79)*X
23614  
23615 C...Store x. Also calculate light cone energies of each system.
23616           XMI(JS,IM)=X
23617           W(JS,JS)=W(JS,JS)+X
23618           W(JS,3-JS)=W(JS,3-JS)+(P(I,5)**2+P(I,1)**2+P(I,2)**2)/X
23619   270   CONTINUE
23620         W(JS,JS)=W(JS,JS)*W(0,JS)
23621         W(JS,3-JS)=W(JS,3-JS)/W(0,JS)
23622         W(JS,0)=W(JS,1)*W(JS,2)
23623   280 CONTINUE
23624  
23625 C...Check W1 W2 < Wrem (can be done before rescaling, since W
23626 C...insensitive to global rescalings of the BR x values).
23627       IF (SQRT(W(1,0))+SQRT(W(2,0)).GT.SQRT(W(0,0)).AND.NTRYX.LE.100)
23628      &     THEN
23629         GOTO 210
23630       ELSEIF (NTRYX.GT.100.AND.NTRY.LE.100) THEN
23631         GOTO 100
23632       ELSEIF (NTRYX.GT.100) THEN
23633         CALL PYERRM(1,'(PYMIRM:) No consistent (x,kT) sets found')
23634         MINT(57)=MINT(57)+1
23635         MINT(51)=1
23636         RETURN
23637       ENDIF
23638  
23639 C...Compute x rescaling factors
23640       COMTRM=W(0,0)+SQRT(FLAM(W(0,0),W(1,0),W(2,0)))
23641       R1=(COMTRM+W(1,0)-W(2,0))/(2D0*W(1,1)*W(0,2))
23642       R2=(COMTRM+W(2,0)-W(1,0))/(2D0*W(2,2)*W(0,1))
23643  
23644       IF (R1.LT.0.OR.R2.LT.0) THEN
23645         CALL PYERRM(19,'(PYMIRM:) negative rescaling factors !')
23646         MINT(57)=MINT(57)+1
23647         MINT(51)=1
23648       ENDIF
23649  
23650 C...Rescale W(1,*) and W(2,*) (not really necessary, but consistent).
23651       W(1,1)=W(1,1)*R1
23652       W(1,2)=W(1,2)/R1
23653       W(2,1)=W(2,1)/R2
23654       W(2,2)=W(2,2)*R2
23655  
23656 C...Rescale BR x values.
23657       DO 290 IM=MINT(31)+1,MAX(NMI(1),NMI(2))
23658         XMI(1,IM)=XMI(1,IM)*R1
23659         XMI(2,IM)=XMI(2,IM)*R2
23660   290 CONTINUE
23661  
23662 C...Now we have a consistent set of x and kT values.
23663 C...First set up the initiators and their daughters correctly.
23664       DO 300 IM=1,MINT(31)
23665         I1=IMI(1,IM,1)
23666         I2=IMI(2,IM,1)
23667         ST=XMI(1,IM)*XMI(2,IM)*VINT(2)+(P(I1,1)+P(I2,1))**2+
23668      &       (P(I1,2)+P(I2,2))**2
23669         PT12=P(I1,1)**2+P(I1,2)**2
23670         PT22=P(I2,1)**2+P(I2,2)**2
23671 C...p_z
23672         P(I1,3)=SQRT(FLAM(ST,PT12,PT22)/(4D0*ST))
23673         P(I2,3)=-P(I1,3)
23674 C...Energies (masses should be zero at this stage)
23675         P(I1,4)=SQRT(PT12+P(I1,3)**2)
23676         P(I2,4)=SQRT(PT22+P(I2,3)**2)
23677  
23678 C...Transverse 12 system initiator velocity:
23679         VB(1)=(P(I1,1)+P(I2,1))/SQRT(ST)
23680         VB(2)=(P(I1,2)+P(I2,2))/SQRT(ST)
23681 C...Boost to overall initiator system rest frame
23682         CALL PYROBO(I1,I1,0D0,0D0,-VB(1),-VB(2),0D0)
23683         CALL PYROBO(I2,I2,0D0,0D0,-VB(1),-VB(2),0D0)
23684 
23685 C...Compute phi,theta coordinates of I1 and rotate z axis.
23686         PHI=PYANGL(P(I1,1),P(I1,2))
23687         THE=PYANGL(P(I1,3),SQRT(P(I1,1)**2+P(I1,2)**2))
23688         IMIN=IMISEP(IM-1)+1
23689 C...(include documentation lines if MI = 1)
23690         IF (IM.EQ.1) IMIN=MINT(83)+5
23691         IMAX=IMISEP(IM)
23692 C...Rotate entire system in phi
23693         CALL PYROBO(IMIN,IMAX,0D0,-PHI,0D0,0D0,0D0)
23694 C...Only rotate 12 system in theta
23695         CALL PYROBO(I1,I1,-THE,0D0,0D0,0D0,0D0)
23696         CALL PYROBO(I2,I2,-THE,0D0,0D0,0D0,0D0)
23697 
23698 C...Now boost entire system back to LAB
23699         VB(3)=(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
23700         CALL PYROBO(IMIN,IMAX,THE,PHI,VB(1),VB(2),0D0)
23701         CALL PYROBO(IMIN,IMAX,0D0,0D0,0D0,0D0,VB(3))
23702 
23703   300 CONTINUE
23704  
23705  
23706 C...For the beam remnant partons/hadrons, we only need to set pz and E.
23707       DO 320 JS=1,2
23708         DO 310 IM=MINT(31)+1,NMI(JS)
23709           I=IMI(JS,IM,1)
23710 C...Skip collapsed gluons and junctions.
23711           IF (K(I,2).EQ.21.AND.K(I,1).EQ.14) GOTO 310
23712           IF (KFA.EQ.88) GOTO 310
23713           RMT2=P(I,5)**2+P(I,1)**2+P(I,2)**2
23714           P(I,4)=0.5D0*(XMI(JS,IM)*W(0,JS)+RMT2/(XMI(JS,IM)*W(0,JS)))
23715           P(I,3)=0.5D0*(XMI(JS,IM)*W(0,JS)-RMT2/(XMI(JS,IM)*W(0,JS)))
23716           IF (JS.EQ.2) P(I,3)=-P(I,3)
23717   310   CONTINUE
23718   320 CONTINUE
23719  
23720  
23721 C...Documentation lines
23722       DO 340 JS=1,2
23723         IN=MINT(83)+JS+2
23724         IO=IMI(JS,1,1)
23725         K(IN,1)=21
23726         K(IN,2)=K(IO,2)
23727         K(IN,3)=MINT(83)+JS
23728         K(IN,4)=0
23729         K(IN,5)=0
23730         DO 330 J=1,5
23731           P(IN,J)=P(IO,J)
23732           V(IN,J)=V(IO,J)
23733   330   CONTINUE
23734         MCT(IN,1)=MCT(IO,1)
23735         MCT(IN,2)=MCT(IO,2)
23736   340 CONTINUE
23737  
23738 C...Final state colour reconnections.
23739       IF (MSTP(95).NE.1.OR.MINT(31).LE.1) GOTO 380
23740  
23741 C...Number of colour tags for which a recoupling will be tried.
23742       NTOT=NCT
23743 C...Number of recouplings to try
23744       MINT(34)=0
23745       NRECP=0
23746       NITER=0
23747   350 NRECP=MINT(34)
23748       NITER=NITER+1
23749       IITER=0
23750   360 IITER=IITER+1
23751       IF (IITER.LE.PARP(78)*NTOT) THEN
23752 C...Select two colour tags at random
23753 C...NB: jj strings do not have colour tags assigned to them,
23754 C...thus they are as yet not affected by anything done here.
23755         JCT=PYR(0)*NCT+1
23756         KCT=MOD(INT(JCT+PYR(0)*NCT),NCT)+1
23757         IJ1=0
23758         IJ2=0
23759         IK1=0
23760         IK2=0
23761 C...Find final state partons with this (anti)colour
23762         DO 370 I=MINT(84)+1,N
23763           IF (K(I,1).EQ.3) THEN
23764             IF (MCT(I,1).EQ.JCT) IJ1=I
23765             IF (MCT(I,2).EQ.JCT) IJ2=I
23766             IF (MCT(I,1).EQ.KCT) IK1=I
23767             IF (MCT(I,2).EQ.KCT) IK2=I
23768           ENDIF
23769   370   CONTINUE
23770 C...Only consider recouplings not involving junctions for now.
23771         IF (IJ1.EQ.0.OR.IJ2.EQ.0.OR.IK1.EQ.0.OR.IK2.EQ.0) GOTO 360
23772  
23773         RLO=2D0*FOUR(IJ1,IJ2)*2D0*FOUR(IK1,IK2)
23774         RLN=2D0*FOUR(IJ1,IK2)*2D0*FOUR(IK1,IJ2)
23775         IF (RLN.LT.RLO.AND.MCT(IJ2,1).NE.KCT.AND.MCT(IK2,1).NE.JCT) THEN
23776           MCT(IJ2,2)=KCT
23777           MCT(IK2,2)=JCT
23778 C...Count up number of reconnections
23779           MINT(34)=MINT(34)+1
23780         ENDIF
23781         IF (MINT(34).LE.1000) THEN
23782           GOTO 360
23783         ELSE
23784           CALL PYERRM(4,'(PYMIRM:) caught in infinite loop')
23785           GOTO 380
23786         ENDIF
23787       ENDIF
23788       IF (NRECP.LT.MINT(34)) GOTO 350
23789  
23790 C...Signal PYPREP to use /PYCTAG/ information rather than K(I,KCS).
23791   380 MINT(33)=1
23792  
23793       RETURN
23794       END
23795 
23796 C*********************************************************************
23797  
23798 C...PYFSCR
23799 C...Performs colour annealing.
23800 C...MSTP(95) : CR Type
23801 C...         = 1  : old cut-and-paste reconnections, handled in PYMIHK
23802 C...         = 2  : Type I(no gg loops); hadron-hadron only
23803 C...         = 3  : Type I(no gg loops); all beams
23804 C...         = 4  : Type II(gg loops)  ; hadron-hadron only
23805 C...         = 5  : Type II(gg loops)  ; all beams
23806 C...         = 6  : Type S             ; hadron-hadron only
23807 C...         = 7  : Type S             ; all beams
23808 C...         = 8  : Type P             ; hadron-hadron only
23809 C...         = 9  : Type P             ; all beams
23810 C...Types I and II are described in Sandhoff+Skands, in hep-ph/0604120.
23811 C...Type S is driven by starting only from free triplets, not octets.
23812 C...Type P is also driven by free triplets, but the reconnect probability
23813 C...is computed from the string density per unit rapidity, where the axis
23814 C...with respect to which the rapidity is computed is the Thrust axis of the
23815 C...event. 
23816 C...A string piece remains unchanged with probability
23817 C...    PKEEP = (1-PARP(78))**N
23818 C...This scaling corresponds to each string piece having to go through
23819 C...N other ones, each with probability PARP(78) for reconnection.
23820 C...For types I, II, and S, N is chosen simply as the number of multiple 
23821 C...interactions, for a rough scaling with the general level of activity.
23822 C...For type P, N is chosen to be the number of string pieces in a given 
23823 C...interval of rapidity (minus one, since the string doesn't reconnect 
23824 C...with itself), and the reconnect probability is interpreted as the 
23825 C...probability per unit rapidity. 
23826 C...It also also possible to apply a dampening factor to the CR strength,
23827 C...using PARP(77), which will cause reconnections among high-pT string
23828 C...pieces to be suppressed. 
23829 
23830       SUBROUTINE PYFSCR(IP)
23831 C...Double precision and integer declarations.
23832       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23833       INTEGER PYK,PYCHGE,PYCOMP
23834 C...Commonblocks.
23835       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
23836       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23837       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23838       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23839       COMMON/PYINT1/MINT(400),VINT(400)
23840 C...The common block of colour tags.
23841       COMMON/PYCTAG/NCT,MCT(4000,2)
23842       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/,
23843      &/PYPARS/
23844 C...MCN: Temporary storage of new colour tags
23845       INTEGER MCN(4000,2)
23846 C...Arrays for storing color strings
23847       PARAMETER (NBINY=100)
23848       INTEGER ICR(4000),MSCR(4000)
23849       INTEGER IOPT(4000), NSTRY(NBINY)
23850       DOUBLE PRECISION RLOPTC(4000)
23851  
23852 C...Function to give four-product.
23853       FOUR(I,J)=P(I,4)*P(J,4)
23854      &          -P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
23855  
23856 C...Check valid range of MSTP(95), local copy
23857       IF (MSTP(95).LE.1.OR.MSTP(95).GE.10) RETURN
23858       MSTP95=MOD(MSTP(95),10)
23859 C...Set whether CR allowed inside resonance systems or not
23860 C...(not implemented yet)
23861 C      MRESCR=1
23862 C      IF (MSTP(95).GE.10) MRESCR=0
23863  
23864 C...Check whether colour tags already defined
23865       IF (MINT(33).EQ.0) THEN
23866 C...Erase any existing colour tags for this event
23867         DO 100 I=1,N
23868           MCT(I,1)=0
23869           MCT(I,2)=0
23870  100    CONTINUE
23871 C...Create colour tags for this event
23872         DO 120 I=1,N
23873           IF (K(I,1).EQ.3) THEN
23874             DO 110 KCS=4,5
23875               KCSIN=KCS
23876               IF (MCT(I,KCSIN-3).EQ.0) THEN
23877                 CALL PYCTTR(I,KCSIN,I)
23878               ENDIF
23879  110        CONTINUE
23880           ENDIF
23881  120    CONTINUE
23882 C...Instruct PYPREP to use colour tags
23883         MINT(33)=1
23884       ENDIF
23885  
23886 C...For MSTP(95) even, only apply to hadron-hadron
23887       KA1=IABS(MINT(11))
23888       KA2=IABS(MINT(12))
23889       IF (MOD(MSTP(95),2).EQ.0.AND.(KA1.LT.100.OR.KA2.LT.100)) GOTO 9999
23890  
23891 C...Initialize new tag array (but do not delete old yet)
23892       LCT=NCT
23893       DO 130 I=MAX(1,IP),N
23894          MCN(I,1)=0
23895          MCN(I,2)=0
23896   130 CONTINUE
23897  
23898 C...For Paquis type, determine thrust axis (default along Z axis)
23899       TX=0D0
23900       TY=0D0
23901       TZ=1D0
23902       IF (MSTP95.GE.8) THEN
23903         CALL PYTHRU(THRDUM,OBLDUM)
23904         TX = P(N+1,1)
23905         TY = P(N+1,2)
23906         TZ = P(N+1,3)
23907       ENDIF
23908       
23909 C...For each final-state dipole, check whether string should be
23910 C...preserved.
23911       NCR=0
23912       IA=0
23913       IC=0
23914       RAPMAX=0.0
23915 
23916       ICTMIN=NCT
23917       DO 150 ICT=1,NCT
23918         IA=0
23919         IC=0
23920         DO 140 I=MAX(1,IP),N
23921           IF (K(I,1).EQ.3.AND.MCT(I,1).EQ.ICT) IC=I
23922           IF (K(I,1).EQ.3.AND.MCT(I,2).EQ.ICT) IA=I
23923   140   CONTINUE
23924         IF (IC.NE.0.AND.IA.NE.0) THEN
23925 C...Save smallest NCT value so far
23926           ICTMIN = MIN(ICTMIN,ICT)
23927 C...For Paquis algorithm, just store all string pieces for now
23928           IF (MSTP95.GE.8) THEN 
23929 C...  Add coloured parton
23930             NCR=NCR+1
23931             ICR(NCR)=IC
23932             MSCR(NCR)=1
23933             IOPT(NCR)=0
23934 C...  Store rapidity (along Thrust axis) in RLOPT for the time being
23935 C...  Add pion mass headroom to energy for this calculation
23936             EET = P(IC,4)*SQRT(1D0+(0.135D0/P(IC,4))**2)
23937             PZT = P(IC,1)*TX+P(IC,2)*TY+P(IC,3)*TZ
23938             RLOPTC(NCR)=LOG((EET+PZT)/(EET-PZT))
23939 C...  Add anti-coloured parton
23940             NCR       = NCR+1
23941             ICR(NCR)  = IA   
23942             MSCR(NCR) = 2
23943             IOPT(NCR) = 0
23944 C...  Store rapidity (along Thrust axis) in RLOPT for the time being
23945             EET = P(IA,4)*SQRT(1D0+(0.135D0/P(IA,4))**2)
23946             PZT = P(IA,1)*TX+P(IA,2)*TY+P(IA,3)*TZ
23947             RLOPTC(NCR)=LOG((EET+PZT)/(EET-PZT))
23948 C...  Keep track of largest endpoint "rapidity"
23949             RAPMAX = MAX(RAPMAX,ABS(RLOPTC(NCR)))
23950             RAPMAX = MAX(RAPMAX,ABS(RLOPTC(NCR-1)))
23951           ELSE
23952             CRMODF=1D0
23953 C...  Opt: suppress breakup of high-boost string pieces (i.e., let them escape)
23954 C...  (so far ignores the possibility that the whole "muck" may be moving.)
23955             IF (PARP(77).GT.0D0) THEN
23956               PT2STR=(P(IA,1)+P(IC,1))**2+(P(IA,2)+P(IC,2))**2
23957 C...  For lepton-lepton, use actual p2/m2, otherwise approximate p2 ~ 3/2 pT2
23958               IF (KA1.LT.100.AND.KA2.LT.100) THEN
23959                 P2STR = PT2STR + (P(IA,3)+P(IC,3))**2
23960               ELSE
23961                 P2STR = 3D0/2D0 * PT2STR
23962               ENDIF
23963               RM2STR=(P(IA,4)+P(IC,4))**2-(P(IA,3)+P(IC,3))**2-PT2STR
23964               RM2STR=MAX(RM2STR,PMAS(PYCOMP(111),1)**2)
23965 C...  Estimate number of particles ~ log(M2), cut off at 1.
23966               RLOGM2=MAX(1D0,LOG(RM2STR))
23967               P2AVG=P2STR/RLOGM2
23968 C...  Supress reconnection probability by 1/(1+P77*P2AVG)
23969               CRMODF=1D0/(1D0+PARP(77)**2*P2AVG)
23970             ENDIF
23971             PKEEP=(1D0-PARP(78)*CRMODF)**MINT(31)
23972             IF (PYR(0).LE.PKEEP) THEN
23973               LCT=LCT+1
23974               MCN(IC,1)=LCT
23975               MCN(IA,2)=LCT
23976             ELSE
23977 C...  Add coloured parton
23978               NCR=NCR+1
23979               ICR(NCR)=IC
23980               MSCR(NCR)=1
23981               IOPT(NCR)=0
23982               RLOPTC(NCR)=1D19
23983 C...  Add anti-coloured parton
23984               NCR=NCR+1
23985               ICR(NCR)=IA   
23986               MSCR(NCR)=2
23987               IOPT(NCR)=0
23988               RLOPTC(NCR)=1D19
23989             ENDIF
23990           ENDIF
23991         ENDIF
23992   150 CONTINUE
23993 
23994 C...PAQUIS TYPE
23995       IF (MSTP95.GE.8) THEN
23996 C...  For Paquis type, make "histogram" of string densities along thrust axis
23997         RAPMIN = -RAPMAX
23998         DRAP   = 2*RAPMAX/(1D0*NBINY)
23999 C...  Explicitly zero histogram bin content
24000         DO 147 IBINY=1,NBINY
24001           NSTRY(IBINY)=0
24002  147    CONTINUE
24003         DO 152 ISTR=1,NCR-1,2
24004           IC = ICR(ISTR)
24005           IA = ICR(ISTR+1)
24006           Y1 = MIN(RLOPTC(ISTR),RLOPTC(ISTR+1))
24007           Y2 = MAX(RLOPTC(ISTR),RLOPTC(ISTR+1))
24008           DO 153 IBINY=1,NBINY
24009             YBINLO = RAPMIN + (IBINY-1)*DRAP
24010 C...  If bin inside string piece, add 1 in this bin
24011 C...  (Strictly speaking: if it starts before midpoint and ends after midpoint)
24012             IF (Y1.LE.YBINLO+0.5*DRAP.AND.Y2.GE.YBINLO+0.5*DRAP)
24013      &           NSTRY(IBINY) = NSTRY(IBINY) + 1
24014  153      CONTINUE
24015  152    CONTINUE
24016 C...  Loop over pieces to find individual reconnect probability
24017         DO 167 IS=1,NCR-1,2
24018           DNSUM  = 0D0
24019           DNAVG  = 0D0
24020 C...Beginning at Y = RAPMIN = -RAPMAX, ending at Y = RAPMAX
24021           RBINLO = (MIN(RLOPTC(IS),RLOPTC(IS+1))-RAPMIN)/DRAP + 0.5
24022           RBINHI = (MAX(RLOPTC(IS),RLOPTC(IS+1))-RAPMIN)/DRAP + 0.5    
24023 C...Make sure integer bin numbers lie inside proper range
24024           IBINLO = MAX(1,MIN(NBINY,NINT(RBINLO)))
24025           IBINHI = MAX(1,MIN(NBINY,NINT(RBINHI)))
24026 C...Size of rapidity bins (is < DRAP if piece smaller than one bin)
24027 C...(also smaller than DRAP if a one-unit wide piece is stretched 
24028 C... over 2 bins, thus making the computation more accurate)
24029           DRAPAV = (RBINHI-RBINLO)/(IBINHI-IBINLO+1)*DRAP
24030 C...  Decide whether to suppress reconnections in high-pT string pieces
24031           CRMODF = 1D0
24032           IF (PARP(77).GT.0D0) THEN
24033 C...  Total string piece energy, momentum squared, and components
24034             EES  =  P(ICR(IS),4) + P(ICR(IS+1),4)
24035             PPS2 = (P(ICR(IS),1)+ P(ICR(IS+1),1))**2
24036      &           + (P(ICR(IS),2)+ P(ICR(IS+1),2))**2
24037      &           + (P(ICR(IS),3)+ P(ICR(IS+1),3))**2
24038             PZTS = P(ICR(IS),1)*TX+P(ICR(IS),2)*TY+P(ICR(IS),3)*TZ 
24039      &           + P(ICR(IS+1),1)*TX+P(ICR(IS+1),2)*TY+P(ICR(IS+1),3)*TZ
24040             PTTS = SQRT(PPS2 - PZTS**2)
24041 C...  Mass of string piece in units of mpi (at least 1)
24042             RMPI2  = 0.135D0 
24043             RM2STR = MAX(RMPI2,EES**2 - PPS2)
24044 C...  Estimate number of pions ~ log(M2) (at least 1)
24045             RNPI   = LOG(RM2STR/RMPI2)+1D0
24046             PT2AVG = (PTTS / RNPI)**2
24047 C...  Supress reconnection probability by 1/(1+P77*P2AVG)        
24048             CRMODF=1D0/(1D0+PARP(77)**2*PT2AVG)
24049           ENDIF
24050           PKEEP = 1.0
24051           DO 178 IBINY=IBINLO,IBINHI
24052 C            DNSUM = DNSUM + 1D0
24053             DNOVL = MAX(0,NSTRY(IBINY)-1)
24054             PKEEP = PKEEP * (1D0-CRMODF*PARP(78))**(DRAPAV*DNOVL)
24055 C            DNAVG = DNAVG + MAX(1,NSTRY(IBINY))
24056  178      CONTINUE
24057 C          DNAVG = DNAVG / DNSUM
24058 C...  If keeping string piece, save
24059           IF (PYR(0).LE.PKEEP) THEN
24060             LCT = LCT+1
24061             MCN(ICR(IS),1)=LCT
24062             MCN(ICR(IS+1),2)=LCT
24063           ENDIF
24064  167    CONTINUE
24065       ENDIF
24066 
24067 C...Skip if there is only one possibility
24068       IF (NCR.LE.2) THEN
24069         GOTO 9999
24070       ENDIF
24071 
24072 C...Reorder, so ordered in I (in order to correspond to old algorithm)
24073       NLOOP=0
24074  151  NLOOP=NLOOP+1
24075       MORD=1
24076       DO 155 IC1=1,NCR-1
24077         I1=ICR(IC1)
24078         I2=ICR(IC1+1)
24079         IF (I1.GT.I2) THEN
24080           IT=I1
24081           MST=MSCR(IC1)
24082           ICR(IC1)=I2
24083           MSCR(IC1)=MSCR(IC1+1)
24084           ICR(IC1+1)=IT
24085           MSCR(IC1+1)=MST
24086           MORD=0
24087         ENDIF
24088  155  CONTINUE
24089 C...Max do 1000 reordering loops
24090       IF (MORD.EQ.0.AND.NLOOP.LE.1000) GOTO 151
24091 
24092 C...PS: 03 May 2010
24093 C...For Seattle and Paquis types, check if there is a dangling tag
24094 C...Needed for special case when entire reconnected state was one or
24095 C...more gluon loops in original topology in which case these CR
24096 C...algorithms need to be told they shouldn't look for a dangling tag.
24097       M3FREE=0
24098       IF (MSTP95.GE.6.AND.MSTP95.LE.9) THEN
24099         DO 157 IC1=1,NCR
24100           I1=ICR(IC1)
24101 C...Color charge
24102           MCI=KCHG(PYCOMP(K(I1,2)),2)*ISIGN(1,K(I1,2))
24103           IF (MCI.EQ.1.AND.MCN(I1,1).EQ.0) M3FREE=1
24104           IF (MCI.EQ.-1.AND.MCN(I1,2).EQ.0) M3FREE=1
24105           IF (MCI.EQ.2) THEN
24106             IF (MCN(I1,1).NE.0.AND.MCN(I1,2).EQ.0) M3FREE=1
24107             IF (MCN(I1,2).NE.0.AND.MCN(I1,1).EQ.0) M3FREE=1
24108           ENDIF
24109  157    CONTINUE
24110       ENDIF
24111 
24112 C...Loop over CR partons
24113 C...(Ignore junctions for now.)
24114       NLOOP=0
24115   160 NLOOP=NLOOP+1
24116       RLMAX=0D0
24117       ICRMAX=0
24118 C...Loop over coloured partons
24119       DO 230 IC1=1,NCR
24120 C...Retrieve parton Event Record index and Colour Side
24121         I=ICR(IC1)
24122         MSI=MSCR(IC1)
24123 C...Skip already connected partons        
24124         IF (MCN(I,MSI).NE.0) GOTO 230
24125 C...Shorthand for colour charge
24126         MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
24127 C...For Seattle algorithm, only start from partons with one dangling
24128 C...colour tag (unless there aren't any, cf. M3FREE above.)
24129         IF (MSTP(95).GE.6.AND.MSTP(95).LE.9) THEN          
24130           IF (MCI.EQ.2.AND.MCN(I,1).EQ.0.AND.MCN(I,2).EQ.0
24131      &         .AND.M3FREE.EQ.1) THEN
24132             GOTO 230
24133           ENDIF
24134         ENDIF
24135 C...Retrieve saved optimal partner                
24136         IO=IOPT(IC1) 
24137         IF (IO.NE.0) THEN 
24138 C...Reject saved optimal partner if latter is now connected
24139 C...(Also reject if using model S1, since saved partner may
24140 C...now give rise to gg loop.)
24141           IF (MCN(IO,3-MSI).NE.0.OR.MSTP(95).LE.3) THEN
24142             IOPT(IC1)=0
24143             RLOPTC(IC1)=1D19
24144           ENDIF
24145         ENDIF
24146         RLOPT=RLOPTC(IC1)
24147 C...Search for new optimal partner if necessary
24148         IF (IOPT(IC1).EQ.0) THEN
24149           MBROPT=0
24150           MGGOPT=0
24151           RLOPT=1D19
24152 C...Loop over partons you can connect to
24153           DO 210 IC2=1,NCR
24154             J=ICR(IC2)
24155             MSJ=MSCR(IC2)
24156 C...Skip if already connected
24157             IF (MCN(J,MSJ).NE.0) GOTO 210
24158 C...Skip if this not colour-anticolour pair
24159             IF (MSI.EQ.MSJ) GOTO 210          
24160 C...And do not let gluons connect to themselves
24161             IF (I.EQ.J) GOTO 210
24162 C...Suppress direct connections between partons in same Beam Remnant
24163             MBRSTR=0
24164             IF (K(I,3).LE.2.AND.K(I,3).GE.1.AND.K(I,3).EQ.K(J,3))
24165      &          MBRSTR=1
24166 C...Shorthand for colour charge
24167             MCJ=KCHG(PYCOMP(K(J,2)),2)*ISIGN(1,K(J,2))
24168 C...Check for gluon loops
24169             MGGSTR=0
24170             IF (MCJ.EQ.2.AND.MCI.EQ.2) THEN
24171               IF (MCN(I,2).EQ.MCN(J,1).AND.MSTP(95).LE.3.AND.
24172      &            MCN(I,2).NE.0) MGGSTR=1
24173             ENDIF
24174 C...Save connection with smallest lambda measure
24175             RL=FOUR(I,J)
24176 C...If best so far was a BR string and this is not, also save.
24177 C...If best so far was a gg string and this is not, also save.
24178 C...NB: this is not fool-proof. If the algorithm finds a BR or gg
24179 C...string with a small Lambda measure as the last step, this connection
24180 C...will be saved regardless of whether other possibilities existed.
24181 C...I.e., there should really be a check whether another possibility has
24182 C...already been found, but since these models are now actively in use
24183 C...and uncertainties are anyway large, the algorithm is left as it is. 
24184 C...(correction --> Pythia 8 ?)
24185             IF (RL.LT.RLOPT.OR.(RL.EQ.RLOPT.AND.PYR(0).LE.0.5D0)
24186      &          .OR.(MBROPT.EQ.1.AND.MBRSTR.EQ.0)
24187      &          .OR.(MGGOPT.EQ.1.AND.MGGSTR.EQ.0)) THEN
24188 C...Paquis type: fix problem above
24189               MPAQ = 0
24190               IF (MSTP95.GE.8.AND.RLOPT.LE.1D18) THEN
24191                 IF (MBRSTR.EQ.1.AND.MBROPT.EQ.0) MPAQ=1
24192                 IF (MGGSTR.EQ.1.AND.MGGOPT.EQ.0) MPAQ=1
24193               ENDIF
24194               IF (MPAQ.EQ.0) THEN
24195                 RLOPT=RL
24196                 RLOPTC(IC1)=RLOPT
24197                 IOPT(IC1)=J
24198                 MBROPT=MBRSTR
24199                 MGGOPT=MGGSTR
24200               ENDIF
24201             ENDIF
24202  210      CONTINUE
24203         ENDIF
24204         IF (IOPT(IC1).NE.0) THEN
24205 C...Save pair with largest RLOPT so far
24206           IF (RLOPT.GE.RLMAX) THEN
24207             ICRMAX=IC1
24208             RLMAX=RLOPT
24209           ENDIF
24210         ENDIF
24211  230  CONTINUE
24212 C...Save and iterate
24213       ICMAX=0
24214       IF (ICRMAX.GT.0) THEN
24215         LCT=LCT+1
24216         ILMAX=ICR(ICRMAX)
24217         JLMAX=IOPT(ICRMAX)
24218         ICMAX=MSCR(ICRMAX)
24219         JCMAX=3-ICMAX
24220         MCN(ILMAX,ICMAX)=LCT
24221         MCN(JLMAX,JCMAX)=LCT        
24222         IF (NLOOP.LE.2*(N-IP)) THEN
24223           GOTO 160
24224         ELSE
24225           CALL PYERRM(31,' PYFSCR: infinite loop in color annealing')
24226           CALL PYSTOP(11)
24227         ENDIF
24228       ELSE
24229 C...Save and exit. First check for leftover gluon(s)
24230         DO 260 I=MAX(1,IP),N
24231 C...Check colour charge
24232           MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
24233           IF (K(I,1).NE.3.OR.MCI.NE.2) GOTO 260
24234           IF(MCN(I,1).EQ.0.AND.MCN(I,2).EQ.0) THEN
24235 C...Decide where to put left-over gluon (minimal insertion)
24236             ICMAX=0
24237             RLMAX=1D19
24238 C...PS: Bug fix 30 Apr 2010: try all lines, not just reconnected ones
24239             DO 250 KCT=ICTMIN,LCT
24240               IC=0
24241               IA=0
24242               DO 240 IT=MAX(1,IP),N
24243                 IF (IT.EQ.I.OR.K(IT,1).NE.3) GOTO 240
24244                 IF (MCN(IT,1).EQ.KCT) IC=IT
24245                 IF (MCN(IT,2).EQ.KCT) IA=IT
24246  240          CONTINUE
24247 C...Skip if this color tag no longer present in event record
24248               IF (IC.EQ.0.OR.IA.EQ.0) GOTO 250
24249               RL=FOUR(IC,I)*FOUR(IA,I)
24250               IF (RL.LT.RLMAX) THEN
24251                 RLMAX=RL
24252                 ICMAX=IC
24253                 IAMAX=IA
24254               ENDIF
24255  250        CONTINUE
24256             LCT=LCT+1
24257             MCN(I,1)=MCN(ICMAX,1)
24258             MCN(I,2)=LCT
24259             MCN(ICMAX,1)=LCT
24260           ENDIF
24261  260    CONTINUE
24262 C...Here we need to loop over entire event.
24263         DO 270 IZ=MAX(1,IP),N
24264 C...Do not erase parton shower colour history
24265           IF (K(IZ,1).NE.3) GOTO 270
24266 C...Check colour charge
24267           MCI=KCHG(PYCOMP(K(IZ,2)),2)*ISIGN(1,K(IZ,2))
24268           IF (MCI.EQ.0) GOTO 270
24269           IF (MCN(IZ,1).NE.0) MCT(IZ,1)=MCN(IZ,1)
24270           IF (MCN(IZ,2).NE.0) MCT(IZ,2)=MCN(IZ,2)
24271  270    CONTINUE
24272       ENDIF
24273       
24274  9999 RETURN
24275       END
24276 
24277 C*********************************************************************
24278  
24279 C...PYDIFF
24280 C...Handles diffractive and elastic scattering.
24281  
24282       SUBROUTINE PYDIFF
24283  
24284 C...Double precision and integer declarations.
24285       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24286       IMPLICIT INTEGER(I-N)
24287       INTEGER PYK,PYCHGE,PYCOMP
24288 C...Commonblocks.
24289       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
24290       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
24291       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
24292       COMMON/PYINT1/MINT(400),VINT(400)
24293       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
24294  
24295 C...Reset K, P and V vectors. Store incoming particles.
24296       DO 110 JT=1,MSTP(126)+10
24297         I=MINT(83)+JT
24298         DO 100 J=1,5
24299           K(I,J)=0
24300           P(I,J)=0D0
24301           V(I,J)=0D0
24302   100   CONTINUE
24303   110 CONTINUE
24304       N=MINT(84)
24305       MINT(3)=0
24306       MINT(21)=0
24307       MINT(22)=0
24308       MINT(23)=0
24309       MINT(24)=0
24310       MINT(4)=4
24311       DO 130 JT=1,2
24312         I=MINT(83)+JT
24313         K(I,1)=21
24314         K(I,2)=MINT(10+JT)
24315         DO 120 J=1,5
24316           P(I,J)=VINT(285+5*JT+J)
24317   120   CONTINUE
24318   130 CONTINUE
24319       MINT(6)=2
24320  
24321 C...Subprocess; kinematics.
24322       SQLAM=(VINT(2)-VINT(63)-VINT(64))**2-4D0*VINT(63)*VINT(64)
24323       PZ=SQRT(SQLAM)/(2D0*VINT(1))
24324       DO 200 JT=1,2
24325         I=MINT(83)+JT
24326         PE=(VINT(2)+VINT(62+JT)-VINT(65-JT))/(2D0*VINT(1))
24327         KFH=MINT(102+JT)
24328  
24329 C...Elastically scattered particle. (Except elastic GVMD states.)
24330         IF(MINT(16+JT).LE.0.AND.(MINT(10+JT).NE.22.OR.
24331      &  MINT(106+JT).NE.3)) THEN
24332           N=N+1
24333           K(N,1)=1
24334           K(N,2)=KFH
24335           K(N,3)=I+2
24336           P(N,3)=PZ*(-1)**(JT+1)
24337           P(N,4)=PE
24338           P(N,5)=SQRT(VINT(62+JT))
24339  
24340 C...Decay rho from elastic scattering of gamma with sin**2(theta)
24341 C...distribution of decay products (in rho rest frame).
24342           IF(KFH.EQ.113.AND.MINT(10+JT).EQ.22.AND.MSTP(102).EQ.1) THEN
24343             NSAV=N
24344             DBETAZ=P(N,3)/SQRT(P(N,3)**2+P(N,5)**2)
24345             P(N,3)=0D0
24346             P(N,4)=P(N,5)
24347             CALL PYDECY(NSAV)
24348             IF(N.EQ.NSAV+2.AND.IABS(K(NSAV+1,2)).EQ.211) THEN
24349               PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
24350               CALL PYROBO(NSAV+1,NSAV+2,0D0,-PHI,0D0,0D0,0D0)
24351               THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
24352               CALL PYROBO(NSAV+1,NSAV+2,-THE,0D0,0D0,0D0,0D0)
24353   140         CTHE=2D0*PYR(0)-1D0
24354               IF(1D0-CTHE**2.LT.PYR(0)) GOTO 140
24355               CALL PYROBO(NSAV+1,NSAV+2,ACOS(CTHE),PHI,0D0,0D0,0D0)
24356             ENDIF
24357             CALL PYROBO(NSAV,NSAV+2,0D0,0D0,0D0,0D0,DBETAZ)
24358           ENDIF
24359  
24360 C...Diffracted particle: low-mass system to two particles.
24361         ELSEIF(VINT(62+JT).LT.(VINT(66+JT)+PARP(103))**2) THEN
24362           N=N+2
24363           K(N-1,1)=1
24364           K(N,1)=1
24365           K(N-1,3)=I+2
24366           K(N,3)=I+2
24367           PMMAS=SQRT(VINT(62+JT))
24368           NTRY=0
24369   150     NTRY=NTRY+1
24370           IF(NTRY.LT.20) THEN
24371             MINT(105)=MINT(102+JT)
24372             MINT(109)=MINT(106+JT)
24373             CALL PYSPLI(KFH,21,KFL1,KFL2)
24374             CALL PYKFDI(KFL1,0,KFL3,KF1)
24375             IF(KF1.EQ.0) GOTO 150
24376             CALL PYKFDI(KFL2,-KFL3,KFLDUM,KF2)
24377             IF(KF2.EQ.0) GOTO 150
24378           ELSE
24379             KF1=KFH
24380             KF2=111
24381           ENDIF
24382           PM1=PYMASS(KF1)
24383           PM2=PYMASS(KF2)
24384           IF(PM1+PM2+PARJ(64).GT.PMMAS) GOTO 150
24385           K(N-1,2)=KF1
24386           K(N,2)=KF2
24387           P(N-1,5)=PM1
24388           P(N,5)=PM2
24389           PZP=SQRT(MAX(0D0,(PMMAS**2-PM1**2-PM2**2)**2-
24390      &    4D0*PM1**2*PM2**2))/(2D0*PMMAS)
24391           P(N-1,3)=PZP
24392           P(N,3)=-PZP
24393           P(N-1,4)=SQRT(PM1**2+PZP**2)
24394           P(N,4)=SQRT(PM2**2+PZP**2)
24395           CALL PYROBO(N-1,N,ACOS(2D0*PYR(0)-1D0),PARU(2)*PYR(0),
24396      &    0D0,0D0,0D0)
24397           DBETAZ=PZ*(-1)**(JT+1)/SQRT(PZ**2+PMMAS**2)
24398           CALL PYROBO(N-1,N,0D0,0D0,0D0,0D0,DBETAZ)
24399  
24400 C...Diffracted particle: valence quark kicked out.
24401         ELSEIF(MSTP(101).EQ.1.OR.(MSTP(101).EQ.3.AND.PYR(0).LT.
24402      &    PARP(101))) THEN
24403           N=N+2
24404           K(N-1,1)=2
24405           K(N,1)=1
24406           K(N-1,3)=I+2
24407           K(N,3)=I+2
24408           MINT(105)=MINT(102+JT)
24409           MINT(109)=MINT(106+JT)
24410           CALL PYSPLI(KFH,21,K(N,2),K(N-1,2))
24411           P(N-1,5)=PYMASS(K(N-1,2))
24412           P(N,5)=PYMASS(K(N,2))
24413           SQLAM=(VINT(62+JT)-P(N-1,5)**2-P(N,5)**2)**2-
24414      &    4D0*P(N-1,5)**2*P(N,5)**2
24415           P(N-1,3)=(PE*SQRT(SQLAM)+PZ*(VINT(62+JT)+P(N-1,5)**2-
24416      &    P(N,5)**2))/(2D0*VINT(62+JT))*(-1)**(JT+1)
24417           P(N-1,4)=SQRT(P(N-1,3)**2+P(N-1,5)**2)
24418           P(N,3)=PZ*(-1)**(JT+1)-P(N-1,3)
24419           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
24420  
24421 C...Diffracted particle: gluon kicked out.
24422         ELSE
24423           N=N+3
24424           K(N-2,1)=2
24425           K(N-1,1)=2
24426           K(N,1)=1
24427           K(N-2,3)=I+2
24428           K(N-1,3)=I+2
24429           K(N,3)=I+2
24430           MINT(105)=MINT(102+JT)
24431           MINT(109)=MINT(106+JT)
24432           CALL PYSPLI(KFH,21,K(N,2),K(N-2,2))
24433           K(N-1,2)=21
24434           P(N-2,5)=PYMASS(K(N-2,2))
24435           P(N-1,5)=0D0
24436           P(N,5)=PYMASS(K(N,2))
24437 C...Energy distribution for particle into two jets.
24438   160     IMB=1
24439           IF(MOD(KFH/1000,10).NE.0) IMB=2
24440           CHIK=PARP(92+2*IMB)
24441           IF(MSTP(92).LE.1) THEN
24442             IF(IMB.EQ.1) CHI=PYR(0)
24443             IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
24444           ELSEIF(MSTP(92).EQ.2) THEN
24445             CHI=1D0-PYR(0)**(1D0/(1D0+CHIK))
24446           ELSEIF(MSTP(92).EQ.3) THEN
24447             CUT=2D0*0.3D0/VINT(1)
24448   170       CHI=PYR(0)**2
24449             IF((CHI**2/(CHI**2+CUT**2))**0.25D0*(1D0-CHI)**CHIK.LT.
24450      &      PYR(0)) GOTO 170
24451           ELSEIF(MSTP(92).EQ.4) THEN
24452             CUT=2D0*0.3D0/VINT(1)
24453             CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
24454   180       CHIR=CUT*CUTR**PYR(0)
24455             CHI=(CHIR**2-CUT**2)/(2D0*CHIR)
24456             IF((1D0-CHI)**CHIK.LT.PYR(0)) GOTO 180
24457           ELSE
24458             CUT=2D0*0.3D0/VINT(1)
24459             CUTA=CUT**(1D0-PARP(98))
24460             CUTB=(1D0+CUT)**(1D0-PARP(98))
24461   190       CHI=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
24462             IF(((CHI+CUT)**2/(2D0*(CHI**2+CUT**2)))**
24463      &      (0.5D0*PARP(98))*(1D0-CHI)**CHIK.LT.PYR(0)) GOTO 190
24464           ENDIF
24465           IF(CHI.LT.P(N,5)**2/VINT(62+JT).OR.CHI.GT.1D0-P(N-2,5)**2/
24466      &    VINT(62+JT)) GOTO 160
24467           SQM=P(N-2,5)**2/(1D0-CHI)+P(N,5)**2/CHI
24468           PZI=(PE*(VINT(62+JT)-SQM)+PZ*(VINT(62+JT)+SQM))/
24469      &    (2D0*VINT(62+JT))
24470           PEI=SQRT(PZI**2+SQM)
24471           PQQP=(1D0-CHI)*(PEI+PZI)
24472           P(N-2,3)=0.5D0*(PQQP-P(N-2,5)**2/PQQP)*(-1)**(JT+1)
24473           P(N-2,4)=SQRT(P(N-2,3)**2+P(N-2,5)**2)
24474           P(N-1,4)=0.5D0*(VINT(62+JT)-SQM)/(PEI+PZI)
24475           P(N-1,3)=P(N-1,4)*(-1)**JT
24476           P(N,3)=PZI*(-1)**(JT+1)-P(N-2,3)
24477           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
24478         ENDIF
24479  
24480 C...Documentation lines.
24481         K(I+2,1)=21
24482         IF(MINT(16+JT).EQ.0) K(I+2,2)=KFH
24483         IF(MINT(16+JT).NE.0.OR.(MINT(10+JT).EQ.22.AND.
24484      &  MINT(106+JT).EQ.3)) K(I+2,2)=ISIGN(9900000,KFH)+10*(KFH/10)
24485         K(I+2,3)=I
24486         P(I+2,3)=PZ*(-1)**(JT+1)
24487         P(I+2,4)=PE
24488         P(I+2,5)=SQRT(VINT(62+JT))
24489   200 CONTINUE
24490  
24491 C...Rotate outgoing partons/particles using cos(theta).
24492       IF(VINT(23).LT.0.9D0) THEN
24493         CALL PYROBO(MINT(83)+3,N,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
24494       ELSE
24495         CALL PYROBO(MINT(83)+3,N,ASIN(VINT(59)),VINT(24),0D0,0D0,0D0)
24496       ENDIF
24497  
24498       RETURN
24499       END
24500  
24501 C*********************************************************************
24502  
24503 C...PYDISG
24504 C...Set up a DIS process as gamma* + f -> f, with beam remnant
24505 C...and showering added consecutively. Photon flux by the PYGAGA
24506 C...routine (if at all).
24507  
24508       SUBROUTINE PYDISG
24509  
24510 C...Double precision and integer declarations.
24511       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24512       IMPLICIT INTEGER(I-N)
24513       INTEGER PYK,PYCHGE,PYCOMP
24514 C...Parameter statement to help give large particle numbers.
24515       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
24516      &KEXCIT=4000000,KDIMEN=5000000)
24517 C...Commonblocks.
24518       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
24519       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
24520       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
24521       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
24522       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
24523       COMMON/PYINT1/MINT(400),VINT(400)
24524       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
24525 C...Local arrays.
24526       DIMENSION PMS(4)
24527  
24528 C...Choice of subprocess, number of documentation lines
24529       IDOC=7
24530       MINT(3)=IDOC-6
24531       MINT(4)=IDOC
24532       IPU1=MINT(84)+1
24533       IPU2=MINT(84)+2
24534       IPU3=MINT(84)+3
24535       ISIDE=1
24536       IF(MINT(107).EQ.4) ISIDE=2
24537  
24538 C...Reset K, P and V vectors. Store incoming particles
24539       DO 110 JT=1,MSTP(126)+20
24540         I=MINT(83)+JT
24541         DO 100 J=1,5
24542           K(I,J)=0
24543           P(I,J)=0D0
24544           V(I,J)=0D0
24545   100   CONTINUE
24546   110 CONTINUE
24547       DO 130 JT=1,2
24548         I=MINT(83)+JT
24549         K(I,1)=21
24550         K(I,2)=MINT(10+JT)
24551         DO 120 J=1,5
24552           P(I,J)=VINT(285+5*JT+J)
24553   120   CONTINUE
24554   130 CONTINUE
24555       MINT(6)=2
24556  
24557 C...Store incoming partons in hadronic CM-frame
24558       DO 140 JT=1,2
24559         I=MINT(84)+JT
24560         K(I,1)=14
24561         K(I,2)=MINT(14+JT)
24562         K(I,3)=MINT(83)+2+JT
24563   140 CONTINUE
24564       IF(MINT(15).EQ.22) THEN
24565         P(MINT(84)+1,3)=0.5D0*(VINT(1)+VINT(307)/VINT(1))
24566         P(MINT(84)+1,4)=0.5D0*(VINT(1)-VINT(307)/VINT(1))
24567         P(MINT(84)+1,5)=-SQRT(VINT(307))
24568         P(MINT(84)+2,3)=-0.5D0*VINT(307)/VINT(1)
24569         P(MINT(84)+2,4)=0.5D0*VINT(307)/VINT(1)
24570         KFRES=MINT(16)
24571         ISIDE=2
24572       ELSE
24573         P(MINT(84)+1,3)=0.5D0*VINT(308)/VINT(1)
24574         P(MINT(84)+1,4)=0.5D0*VINT(308)/VINT(1)
24575         P(MINT(84)+2,3)=-0.5D0*(VINT(1)+VINT(308)/VINT(1))
24576         P(MINT(84)+2,4)=0.5D0*(VINT(1)-VINT(308)/VINT(1))
24577         P(MINT(84)+1,5)=-SQRT(VINT(308))
24578         KFRES=MINT(15)
24579         ISIDE=1
24580       ENDIF
24581       SIDESG=(-1D0)**(ISIDE-1)
24582  
24583 C...Copy incoming partons to documentation lines.
24584       DO 170 JT=1,2
24585         I1=MINT(83)+4+JT
24586         I2=MINT(84)+JT
24587         K(I1,1)=21
24588         K(I1,2)=K(I2,2)
24589         K(I1,3)=I1-2
24590         DO 150 J=1,5
24591           P(I1,J)=P(I2,J)
24592   150   CONTINUE
24593  
24594 C...Second copy for partons before ISR shower, since no such.
24595         I1=MINT(83)+2+JT
24596         K(I1,1)=21
24597         K(I1,2)=K(I2,2)
24598         K(I1,3)=I1-2
24599         DO 160 J=1,5
24600           P(I1,J)=P(I2,J)
24601   160   CONTINUE
24602   170 CONTINUE
24603  
24604 C...Define initial partons.
24605       NTRY=0
24606   180 NTRY=NTRY+1
24607       IF(NTRY.GT.100) THEN
24608         MINT(51)=1
24609         RETURN
24610       ENDIF
24611  
24612 C...Scattered quark in hadronic CM frame.
24613       I=MINT(83)+7
24614       K(IPU3,1)=3
24615       K(IPU3,2)=KFRES
24616       K(IPU3,3)=I
24617       P(IPU3,5)=PYMASS(KFRES)
24618       P(IPU3,3)=P(IPU1,3)+P(IPU2,3)
24619       P(IPU3,4)=P(IPU1,4)+P(IPU2,4)
24620       P(IPU3,5)=0D0
24621       K(I,1)=21
24622       K(I,2)=KFRES
24623       K(I,3)=MINT(83)+4+ISIDE
24624       P(I,3)=P(IPU3,3)
24625       P(I,4)=P(IPU3,4)
24626       P(I,5)=P(IPU3,5)
24627       N=IPU3
24628       MINT(21)=KFRES
24629       MINT(22)=0
24630  
24631 C...No primordial kT, or chosen according to truncated Gaussian or
24632 C...exponential, or (for photon) predetermined or power law.
24633   190 IF(MINT(40+ISIDE).EQ.2.AND.MINT(10+ISIDE).NE.22) THEN
24634         IF(MSTP(91).LE.0) THEN
24635           PT=0D0
24636         ELSEIF(MSTP(91).EQ.1) THEN
24637           PT=PARP(91)*SQRT(-LOG(PYR(0)))
24638         ELSE
24639           RPT1=PYR(0)
24640           RPT2=PYR(0)
24641           PT=-PARP(92)*LOG(RPT1*RPT2)
24642         ENDIF
24643         IF(PT.GT.PARP(93)) GOTO 190
24644       ELSEIF(MINT(106+ISIDE).EQ.3) THEN
24645         PTA=SQRT(VINT(282+ISIDE))
24646         PTB=0D0
24647         IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
24648           PTB=PARP(99)*SQRT(-LOG(PYR(0)))
24649         ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
24650           RPT1=PYR(0)
24651           RPT2=PYR(0)
24652           PTB=-PARP(99)*LOG(RPT1*RPT2)
24653         ENDIF
24654         IF(PTB.GT.PARP(100)) GOTO 190
24655         PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
24656         IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
24657       ELSEIF(IABS(MINT(14+ISIDE)).LE.8.OR.MINT(14+ISIDE).EQ.21) THEN
24658         IF(MSTP(93).LE.0) THEN
24659           PT=0D0
24660         ELSEIF(MSTP(93).EQ.1) THEN
24661           PT=PARP(99)*SQRT(-LOG(PYR(0)))
24662         ELSEIF(MSTP(93).EQ.2) THEN
24663           RPT1=PYR(0)
24664           RPT2=PYR(0)
24665           PT=-PARP(99)*LOG(RPT1*RPT2)
24666         ELSEIF(MSTP(93).EQ.3) THEN
24667           HA=PARP(99)**2
24668           HB=PARP(100)**2
24669           PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
24670         ELSE
24671           HA=PARP(99)**2
24672           HB=PARP(100)**2
24673           IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
24674           PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
24675         ENDIF
24676         IF(PT.GT.PARP(100)) GOTO 190
24677       ELSE
24678         PT=0D0
24679       ENDIF
24680       VINT(156+ISIDE)=PT
24681       PHI=PARU(2)*PYR(0)
24682       P(IPU3,1)=PT*COS(PHI)
24683       P(IPU3,2)=PT*SIN(PHI)
24684       P(IPU3,4)=SQRT(P(IPU3,5)**2+PT**2+P(IPU3,3)**2)
24685       PMS(3-ISIDE)=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
24686       PCP=P(IPU3,4)+ABS(P(IPU3,3))
24687  
24688 C...Find one or two beam remnants.
24689       MINT(105)=MINT(102+ISIDE)
24690       MINT(109)=MINT(106+ISIDE)
24691       CALL PYSPLI(MINT(10+ISIDE),MINT(12+ISIDE),KFLCH,KFLSP)
24692       IF(MINT(51).NE.0) THEN
24693         MINT(51)=0
24694         GOTO 180
24695       ENDIF
24696  
24697 C...Store first remnant parton, with colour info and kinematics.
24698       I=N+1
24699       K(I,1)=1
24700       K(I,2)=KFLSP
24701       K(I,3)=MINT(83)+ISIDE
24702       P(I,5)=PYMASS(K(I,2))
24703       KCOL=KCHG(PYCOMP(KFLSP),2)
24704       IF(KCOL.NE.0) THEN
24705         K(I,1)=3
24706         KFLS=(3-KCOL*ISIGN(1,KFLSP))/2
24707         K(I,KFLS+3)=MSTU(5)*IPU3
24708         K(IPU3,6-KFLS)=MSTU(5)*I
24709         ICOLR=I
24710       ENDIF
24711       IF(KFLCH.EQ.0) THEN
24712         P(I,1)=-P(IPU3,1)
24713         P(I,2)=-P(IPU3,2)
24714         PMS(ISIDE)=P(I,5)**2+P(I,1)**2+P(I,2)**2
24715         P(I,3)=-P(IPU3,3)
24716         P(I,4)=SQRT(PMS(ISIDE)+P(I,3)**2)
24717         PRP=P(I,4)+ABS(P(I,3))
24718  
24719 C...When extra remnant parton or hadron: store extra remnant.
24720       ELSE
24721         I=I+1
24722         K(I,1)=1
24723         K(I,2)=KFLCH
24724         K(I,3)=MINT(83)+ISIDE
24725         P(I,5)=PYMASS(K(I,2))
24726         KCOL=KCHG(PYCOMP(KFLCH),2)
24727         IF(KCOL.NE.0) THEN
24728           K(I,1)=3
24729           KFLS=(3-KCOL*ISIGN(1,KFLCH))/2
24730           K(I,KFLS+3)=MSTU(5)*IPU3
24731           K(IPU3,6-KFLS)=MSTU(5)*I
24732           ICOLR=I
24733         ENDIF
24734  
24735 C...Relative transverse momentum when two remnants.
24736         LOOP=0
24737   200   LOOP=LOOP+1
24738         CALL PYPTDI(1,P(I-1,1),P(I-1,2))
24739         P(I-1,1)=P(I-1,1)-0.5D0*P(IPU3,1)
24740         P(I-1,2)=P(I-1,2)-0.5D0*P(IPU3,2)
24741         PMS(3)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
24742         P(I,1)=-P(IPU3,1)-P(I-1,1)
24743         P(I,2)=-P(IPU3,2)-P(I-1,2)
24744         PMS(4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
24745  
24746 C...Relative distribution of energy for particle into jet plus particle.
24747         IMB=1
24748         IF(MOD(MINT(10+ISIDE)/1000,10).NE.0) IMB=2
24749         IF(MSTP(94).LE.1) THEN
24750           IF(IMB.EQ.1) CHI=PYR(0)
24751           IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
24752           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
24753         ELSEIF(MSTP(94).EQ.2) THEN
24754           CHI=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
24755           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
24756         ELSEIF(MSTP(94).EQ.3) THEN
24757           CALL PYZDIS(1,0,PMS(4),ZZ)
24758           CHI=ZZ
24759         ELSE
24760           CALL PYZDIS(1000,0,PMS(4),ZZ)
24761           CHI=ZZ
24762         ENDIF
24763  
24764 C...Construct total transverse mass; reject if too large.
24765         CHI=MAX(1D-8,MIN(1D0-1D-8,CHI))
24766         PMS(ISIDE)=PMS(4)/CHI+PMS(3)/(1D0-CHI)
24767         IF(PMS(ISIDE).GT.P(IPU3,4)**2) THEN
24768           IF(LOOP.LT.10) GOTO 200
24769           GOTO 180
24770         ENDIF
24771         VINT(158+ISIDE)=CHI
24772  
24773 C...Subdivide longitudinal momentum according to value selected above.
24774         PRP=SQRT(PMS(ISIDE)+P(IPU3,3)**2)+ABS(P(IPU3,3))
24775         PW1=(1D0-CHI)*PRP
24776         P(I-1,4)=0.5D0*(PW1+PMS(3)/PW1)
24777         P(I-1,3)=0.5D0*(PW1-PMS(3)/PW1)*SIDESG
24778         PW2=CHI*PRP
24779         P(I,4)=0.5D0*(PW2+PMS(4)/PW2)
24780         P(I,3)=0.5D0*(PW2-PMS(4)/PW2)*SIDESG
24781       ENDIF
24782       N=I
24783  
24784 C...Boost current and remnant systems to correct frame.
24785       IF(SQRT(PMS(1))+SQRT(PMS(2)).GT.0.99D0*VINT(1)) GOTO 180
24786       DSQLAM=SQRT(MAX(0D0,(VINT(2)-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2)))
24787       DRKC=(VINT(2)+PMS(3-ISIDE)-PMS(ISIDE)+DSQLAM)/
24788      &(2D0*VINT(1)*PCP)
24789       DRKR=(VINT(2)+PMS(ISIDE)-PMS(3-ISIDE)+DSQLAM)/
24790      &(2D0*VINT(1)*PRP)
24791       DBEC=-SIDESG*(DRKC**2-1D0)/(DRKC**2+1D0)
24792       DBER=SIDESG*(DRKR**2-1D0)/(DRKR**2+1D0)
24793       CALL PYROBO(IPU3,IPU3,0D0,0D0,0D0,0D0,DBEC)
24794       CALL PYROBO(IPU3+1,N,0D0,0D0,0D0,0D0,DBER)
24795  
24796 C...Let current quark shower; recoil but no showering by colour partner.
24797       QMAX=2D0*SQRT(VINT(309-ISIDE))
24798       MSTJ48=MSTJ(48)
24799       MSTJ(48)=1
24800       PARJ86=PARJ(86)
24801       PARJ(86)=0D0
24802       IF(MSTP(71).EQ.1) CALL PYSHOW(IPU3,ICOLR,QMAX)
24803       MSTJ(48)=MSTJ48
24804       PARJ(86)=PARJ86
24805  
24806       RETURN
24807       END
24808  
24809 C*********************************************************************
24810  
24811 C...PYDOCU
24812 C...Handles the documentation of the process in MSTI and PARI,
24813 C...and also computes cross-sections based on accumulated statistics.
24814  
24815       SUBROUTINE PYDOCU
24816  
24817 C...Double precision and integer declarations.
24818       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24819       IMPLICIT INTEGER(I-N)
24820       INTEGER PYK,PYCHGE,PYCOMP
24821 C...Commonblocks.
24822       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
24823       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
24824       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
24825       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
24826       COMMON/PYINT1/MINT(400),VINT(400)
24827       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
24828       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
24829       SAVE /PYJETS/,/PYDAT1/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
24830      &/PYINT5/
24831  
24832 C...Calculate Monte Carlo estimates of cross-sections.
24833       ISUB=MINT(1)
24834       IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
24835       NGEN(0,3)=NGEN(0,3)+1
24836       XSEC(0,3)=0D0
24837       DO 100 I=1,500
24838         IF(I.EQ.96.OR.I.EQ.97) THEN
24839           XSEC(I,3)=0D0
24840         ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
24841      &    I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
24842           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
24843      &    DBLE(NGEN(96,2)))
24844         ELSEIF(MSUB(95).EQ.1.AND.I.GE.381.AND.I.LE.386) THEN
24845           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
24846      &    DBLE(NGEN(96,2)))
24847         ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
24848           XSEC(I,3)=0D0
24849         ELSEIF(NGEN(I,2).EQ.0) THEN
24850           XSEC(I,3)=XSEC(I,2)*NGEN(0,3)/(DBLE(NGEN(I,1))*
24851      &    DBLE(NGEN(0,2)))
24852         ELSE
24853           XSEC(I,3)=XSEC(I,2)*NGEN(I,3)/(DBLE(NGEN(I,1))*
24854      &    DBLE(NGEN(I,2)))
24855         ENDIF
24856         XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
24857   100 CONTINUE
24858  
24859 C...Rescale to known low-pT cross-section for standard QCD processes.
24860       IF(MSUB(95).EQ.1) THEN
24861         XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
24862      &  XSEC(68,3)+XSEC(95,3)
24863         XSECW=XSEC(97,2)/MAX(1D0,DBLE(NGEN(97,1)))
24864         IF(XSECH.GT.1D-20.AND.XSECW.GT.1D-20) THEN
24865           FAC=XSECW/XSECH
24866           XSEC(11,3)=FAC*XSEC(11,3)
24867           XSEC(12,3)=FAC*XSEC(12,3)
24868           XSEC(13,3)=FAC*XSEC(13,3)
24869           XSEC(28,3)=FAC*XSEC(28,3)
24870           XSEC(53,3)=FAC*XSEC(53,3)
24871           XSEC(68,3)=FAC*XSEC(68,3)
24872           XSEC(95,3)=FAC*XSEC(95,3)
24873           XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
24874         ENDIF
24875       ENDIF
24876  
24877 C...Save information for gamma-p and gamma-gamma.
24878       IF(MINT(121).GT.1) THEN
24879         IGA=MINT(122)
24880         CALL PYSAVE(2,IGA)
24881         CALL PYSAVE(5,0)
24882       ENDIF
24883  
24884 C...Reset information on hard interaction.
24885       DO 110 J=1,200
24886         MSTI(J)=0
24887         PARI(J)=0D0
24888   110 CONTINUE
24889  
24890 C...Copy integer valued information from MINT into MSTI.
24891       DO 120 J=1,32
24892         MSTI(J)=MINT(J)
24893   120 CONTINUE
24894       IF(MINT(121).GT.1) MSTI(9)=MINT(122)
24895  
24896 C...Store cross-section variables in PARI.
24897       PARI(1)=XSEC(0,3)
24898       PARI(2)=XSEC(0,3)/MINT(5)
24899       PARI(7)=VINT(97)
24900       PARI(9)=VINT(99)
24901       PARI(10)=VINT(100)
24902       VINT(98)=VINT(98)+VINT(100)
24903       IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
24904  
24905 C...Store kinematics variables in PARI.
24906       PARI(11)=VINT(1)
24907       PARI(12)=VINT(2)
24908       IF(ISUB.NE.95) THEN
24909         DO 130 J=13,26
24910           PARI(J)=VINT(30+J)
24911   130   CONTINUE
24912         PARI(29)=VINT(39)
24913         PARI(30)=VINT(40)
24914         PARI(31)=VINT(141)
24915         PARI(32)=VINT(142)
24916         PARI(33)=VINT(41)
24917         PARI(34)=VINT(42)
24918         PARI(35)=PARI(33)-PARI(34)
24919         PARI(36)=VINT(21)
24920         PARI(37)=VINT(22)
24921         PARI(38)=VINT(26)
24922         PARI(39)=VINT(157)
24923         PARI(40)=VINT(158)
24924         PARI(41)=VINT(23)
24925         PARI(42)=2D0*VINT(47)/VINT(1)
24926       ENDIF
24927  
24928 C...Store information on scattered partons in PARI.
24929       IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
24930         DO 140 IS=7,8
24931           I=MINT(IS)
24932           PARI(36+IS)=P(I,3)/VINT(1)
24933           PARI(38+IS)=P(I,4)/VINT(1)
24934           PR=MAX(1D-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
24935           PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
24936      &    SQRT(PR),1D20)),P(I,3))
24937           PR=MAX(1D-20,P(I,1)**2+P(I,2)**2)
24938           PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
24939      &    SQRT(PR),1D20)),P(I,3))
24940           PARI(44+IS)=P(I,3)/SQRT(1D-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
24941           PARI(46+IS)=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
24942           PARI(48+IS)=PYANGL(P(I,1),P(I,2))
24943   140   CONTINUE
24944       ENDIF
24945  
24946 C...Store sum up transverse and longitudinal momenta.
24947       PARI(65)=2D0*PARI(17)
24948       IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
24949         DO 150 I=MSTP(126)+1,N
24950           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
24951           PT=SQRT(P(I,1)**2+P(I,2)**2)
24952           PARI(69)=PARI(69)+PT
24953           IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
24954           IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
24955   150   CONTINUE
24956         PARI(67)=PARI(68)
24957         PARI(71)=VINT(151)
24958         PARI(72)=VINT(152)
24959         PARI(73)=VINT(151)
24960         PARI(74)=VINT(152)
24961       ELSE
24962         PARI(66)=PARI(65)
24963         PARI(69)=PARI(65)
24964       ENDIF
24965  
24966 C...Store various other pieces of information into PARI.
24967       PARI(61)=VINT(148)
24968       PARI(75)=VINT(155)
24969       PARI(76)=VINT(156)
24970       PARI(77)=VINT(159)
24971       PARI(78)=VINT(160)
24972       PARI(81)=VINT(138)
24973  
24974 C...Store information on lepton -> lepton + gamma in PYGAGA.
24975       MSTI(71)=MINT(141)
24976       MSTI(72)=MINT(142)
24977       PARI(101)=VINT(301)
24978       PARI(102)=VINT(302)
24979       DO 160 I=103,114
24980         PARI(I)=VINT(I+202)
24981   160 CONTINUE
24982  
24983 C...Set information for PYTABU.
24984       IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
24985         MSTU(161)=MINT(21)
24986         MSTU(162)=0
24987       ELSEIF(ISET(ISUB).EQ.5) THEN
24988         MSTU(161)=MINT(23)
24989         MSTU(162)=0
24990       ELSE
24991         MSTU(161)=MINT(21)
24992         MSTU(162)=MINT(22)
24993       ENDIF
24994  
24995       RETURN
24996       END
24997  
24998 C*********************************************************************
24999  
25000 C...PYFRAM
25001 C...Performs transformations between different coordinate frames.
25002  
25003       SUBROUTINE PYFRAM(IFRAME)
25004  
25005 C...Double precision and integer declarations.
25006       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
25007       IMPLICIT INTEGER(I-N)
25008       INTEGER PYK,PYCHGE,PYCOMP
25009 C...Commonblocks.
25010       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
25011       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
25012       COMMON/PYINT1/MINT(400),VINT(400)
25013       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
25014  
25015 C...Check that transformation can and should be done.
25016       IF(IFRAME.EQ.1.OR.IFRAME.EQ.2.OR.(IFRAME.EQ.3.AND.
25017      &MINT(91).EQ.1)) THEN
25018         IF(IFRAME.EQ.MINT(6)) RETURN
25019       ELSE
25020         WRITE(MSTU(11),5000) IFRAME,MINT(6)
25021         RETURN
25022       ENDIF
25023  
25024       IF(MINT(6).EQ.1) THEN
25025 C...Transform from fixed target or user specified frame to
25026 C...overall CM frame.
25027         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
25028         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
25029         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
25030       ELSEIF(MINT(6).EQ.3) THEN
25031 C...Transform from hadronic CM frame in DIS to overall CM frame.
25032         CALL PYROBO(0,0,-VINT(221),-VINT(222),-VINT(223),-VINT(224),
25033      &  -VINT(225))
25034       ENDIF
25035  
25036       IF(IFRAME.EQ.1) THEN
25037 C...Transform from overall CM frame to fixed target or user specified
25038 C...frame.
25039         CALL PYROBO(0,0,VINT(6),VINT(7),VINT(8),VINT(9),VINT(10))
25040       ELSEIF(IFRAME.EQ.3) THEN
25041 C...Transform from overall CM frame to hadronic CM frame in DIS.
25042         CALL PYROBO(0,0,0D0,0D0,VINT(223),VINT(224),VINT(225))
25043         CALL PYROBO(0,0,0D0,VINT(222),0D0,0D0,0D0)
25044         CALL PYROBO(0,0,VINT(221),0D0,0D0,0D0,0D0)
25045       ENDIF
25046  
25047 C...Set information about new frame.
25048       MINT(6)=IFRAME
25049       MSTI(6)=IFRAME
25050  
25051  5000 FORMAT(1X,'Error: illegal values in subroutine PYFRAM.',1X,
25052      &'No transformation performed.'/1X,'IFRAME =',1X,I5,'; MINT(6) =',
25053      &1X,I5)
25054  
25055       RETURN
25056       END
25057  
25058 C*********************************************************************
25059  
25060 C...PYWIDT
25061 C...Calculates full and partial widths of resonances.
25062  
25063       SUBROUTINE PYWIDT(KFLR,SH,WDTP,WDTE)
25064  
25065 C...Double precision and integer declarations.
25066       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
25067       IMPLICIT INTEGER(I-N)
25068       INTEGER PYK,PYCHGE,PYCOMP
25069 C...Parameter statement to help give large particle numbers.
25070       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
25071      &KEXCIT=4000000,KDIMEN=5000000)
25072 C...Commonblocks.
25073       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
25074       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
25075       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
25076       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
25077       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
25078       COMMON/PYINT1/MINT(400),VINT(400)
25079       COMMON/PYINT4/MWID(500),WIDS(500,5)
25080       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
25081       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
25082      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
25083       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
25084       COMMON/PYPUED/IUED(0:99),RUED(0:99)
25085       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
25086      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYTCSM/,/PYPUED/
25087 C...Local arrays and saved variables.
25088       COMPLEX*16 ZMIXC(4,4),AL,BL,AR,BR,FL,FR
25089       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
25090      &WID2SV(3,2),WDTPP(0:400),WDTEP(0:400,0:5)
25091 C...UED: equivalences between ordered particles (451->475)
25092 C...and UED particle code (5 000 000 + id)
25093       PARAMETER(KKFLMI=451,KKFLMA=475)
25094       DIMENSION CHIDEL(3), IUEDPR(25)
25095       DIMENSION IUEDEQ(KKFLMA),MUED(2)
25096       COMMON/SW1/SW21,CW21
25097       DATA (IUEDEQ(I),I=KKFLMI,KKFLMA)/
25098      & 6100001,6100002,6100003,6100004,6100005,6100006, 
25099      & 5100001,5100002,5100003,5100004,5100005,5100006, 
25100      & 6100011,6100013,6100015,                         
25101      & 5100012,5100011,5100014,5100013,5100016,5100015, 
25102      & 5100021,5100022,5100023,5100024/                 
25103 C...Save local variables
25104       SAVE MOFSV,WIDWSV,WID2SV
25105 C...Initial values
25106       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
25107       DATA CHIDEL/1.1D-03,1.D0,7.4D+2/
25108       DATA IUEDPR/25*0/
25109 C...UED: inline functions used in kk width calculus
25110       FKAC1(X,Y)=1.-X**2/Y**2
25111       FKAC2(X,Y)=2.+X**2/Y**2
25112  
25113 C...Compressed code and sign; mass.
25114       KFLA=IABS(KFLR)
25115       KFLS=ISIGN(1,KFLR)
25116       KC=PYCOMP(KFLA)
25117       SHR=SQRT(SH)
25118       PMR=PMAS(KC,1)
25119  
25120 C...Reset width information.
25121       DO 110 I=0,MDCY(KC,3)
25122         WDTP(I)=0D0
25123         DO 100 J=0,5
25124           WDTE(I,J)=0D0
25125   100   CONTINUE
25126   110 CONTINUE
25127  
25128 C...Allow for fudge factor to rescale resonance width.
25129       FUDGE=1D0
25130       IF(MSTP(110).NE.0.AND.(MWID(KC).EQ.1.OR.MWID(KC).EQ.2.OR.
25131      &(MWID(KC).EQ.3.AND.MINT(63).EQ.1))) THEN
25132         IF(MSTP(110).EQ.KFLA) THEN
25133           FUDGE=PARP(110)
25134         ELSEIF(MSTP(110).EQ.-1) THEN
25135           IF(KFLA.NE.6.AND.KFLA.NE.23.AND.KFLA.NE.24) FUDGE=PARP(110)
25136         ELSEIF(MSTP(110).EQ.-2) THEN
25137           FUDGE=PARP(110)
25138         ENDIF
25139       ENDIF
25140  
25141 C...Not to be treated as a resonance: return.
25142       IF((MWID(KC).LE.0.OR.MWID(KC).GE.4).AND.KFLA.NE.21.AND.
25143      &KFLA.NE.22) THEN
25144         WDTP(0)=1D0
25145         WDTE(0,0)=1D0
25146         MINT(61)=0
25147         MINT(62)=0
25148         MINT(63)=0
25149         RETURN
25150  
25151 C...Treatment as a resonance based on tabulated branching ratios.
25152       ELSEIF(MWID(KC).EQ.2.OR.(MWID(KC).EQ.3.AND.MINT(63).EQ.0)) THEN
25153 C...Loop over possible decay channels; skip irrelevant ones.
25154         DO 120 I=1,MDCY(KC,3)
25155           IDC=I+MDCY(KC,2)-1
25156           IF(MDME(IDC,1).LT.0) GOTO 120
25157  
25158 C...Read out decay products and nominal masses.
25159           KFD1=KFDP(IDC,1)
25160           KFC1=PYCOMP(KFD1)
25161 C...Skip dummy modes or unrecognized particles
25162           IF (KFD1.EQ.0.OR.KFC1.EQ.0) GOTO 120
25163           IF(KCHG(KFC1,3).EQ.1) KFD1=KFLS*KFD1
25164           PM1=PMAS(KFC1,1)
25165           KFD2=KFDP(IDC,2)
25166           KFC2=PYCOMP(KFD2)
25167           IF(KCHG(KFC2,3).EQ.1) KFD2=KFLS*KFD2
25168           PM2=PMAS(KFC2,1)
25169           KFD3=KFDP(IDC,3)
25170           PM3=0D0
25171           IF(KFD3.NE.0) THEN
25172             KFC3=PYCOMP(KFD3)
25173             IF(KCHG(KFC3,3).EQ.1) KFD3=KFLS*KFD3
25174             PM3=PMAS(KFC3,1)
25175           ENDIF
25176  
25177 C...Naive partial width and alternative threshold factors.
25178           WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)
25179           IF(MDME(IDC,2).GE.51.AND.MDME(IDC,2).LE.53.AND.
25180      &    PM1+PM2+PM3.GE.SHR) THEN
25181              WDTP(I)=0D0
25182           ELSEIF(MDME(IDC,2).EQ.52.AND.KFD3.EQ.0) THEN
25183             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,(SH-PM1**2-PM2**2)**2-
25184      &      4D0*PM1**2*PM2**2))/SH
25185           ELSEIF(MDME(IDC,2).EQ.52) THEN
25186             PMA=MAX(PM1,PM2,PM3)
25187             PMC=MIN(PM1,PM2,PM3)
25188             PMB=PM1+PM2+PM3-PMA-PMC
25189             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMC-PMC)
25190             PMAN=PMA**2/SH
25191             PMBN=PMB**2/SH
25192             PMCN=PMC**2/SH
25193             PMBCN=PMBC**2/SH
25194             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,
25195      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
25196      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
25197      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
25198      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
25199      &      ((1D0-PMBCN)*PMBCN*SH)
25200           ELSEIF(MDME(IDC,2).EQ.53.AND.KFD3.EQ.0) THEN
25201             WDTP(I)=WDTP(I)*SQRT(
25202      &      MAX(0D0,(SH-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2)/
25203      &      MAX(1D-4,(PMR**2-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2))
25204           ELSEIF(MDME(IDC,2).EQ.53) THEN
25205             PMA=MAX(PM1,PM2,PM3)
25206             PMC=MIN(PM1,PM2,PM3)
25207             PMB=PM1+PM2+PM3-PMA-PMC
25208             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMB-PMC)
25209             PMAN=PMA**2/SH
25210             PMBN=PMB**2/SH
25211             PMCN=PMC**2/SH
25212             PMBCN=PMBC**2/SH
25213             FACACT=SQRT(MAX(0D0,
25214      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
25215      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
25216      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
25217      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
25218      &      ((1D0-PMBCN)*PMBCN*SH)
25219             PMBC=PMB+PMC+0.5D0*(PMR-PMA-PMB-PMC)
25220             PMAN=PMA**2/PMR**2
25221             PMBN=PMB**2/PMR**2
25222             PMCN=PMC**2/PMR**2
25223             PMBCN=PMBC**2/PMR**2
25224             FACNOM=SQRT(MAX(0D0,
25225      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
25226      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
25227      &      ((PMR-PMA)**2-(PMB+PMC)**2)*
25228      &      (1D0+0.25D0*(PMA+PMB+PMC)/PMR)/
25229      &      ((1D0-PMBCN)*PMBCN*PMR**2)
25230             WDTP(I)=WDTP(I)*FACACT/MAX(1D-6,FACNOM)
25231           ENDIF
25232           WDTP(I)=FUDGE*WDTP(I)
25233           WDTP(0)=WDTP(0)+WDTP(I)
25234  
25235 C...Calculate secondary width (at most two identical/opposite).
25236           WID2=1D0
25237           IF(MDME(IDC,1).GT.0) THEN
25238             IF(KFD2.EQ.KFD1) THEN
25239               IF(KCHG(KFC1,3).EQ.0) THEN
25240                 WID2=WIDS(KFC1,1)
25241               ELSEIF(KFD1.GT.0) THEN
25242                 WID2=WIDS(KFC1,4)
25243               ELSE
25244                 WID2=WIDS(KFC1,5)
25245               ENDIF
25246               IF(KFD3.GT.0) THEN
25247                 WID2=WID2*WIDS(KFC3,2)
25248               ELSEIF(KFD3.LT.0) THEN
25249                 WID2=WID2*WIDS(KFC3,3)
25250               ENDIF
25251             ELSEIF(KFD2.EQ.-KFD1) THEN
25252               WID2=WIDS(KFC1,1)
25253               IF(KFD3.GT.0) THEN
25254                 WID2=WID2*WIDS(KFC3,2)
25255               ELSEIF(KFD3.LT.0) THEN
25256                 WID2=WID2*WIDS(KFC3,3)
25257               ENDIF
25258             ELSEIF(KFD3.EQ.KFD1) THEN
25259               IF(KCHG(KFC1,3).EQ.0) THEN
25260                 WID2=WIDS(KFC1,1)
25261               ELSEIF(KFD1.GT.0) THEN
25262                 WID2=WIDS(KFC1,4)
25263               ELSE
25264                 WID2=WIDS(KFC1,5)
25265               ENDIF
25266               IF(KFD2.GT.0) THEN
25267                 WID2=WID2*WIDS(KFC2,2)
25268               ELSEIF(KFD2.LT.0) THEN
25269                 WID2=WID2*WIDS(KFC2,3)
25270               ENDIF
25271             ELSEIF(KFD3.EQ.-KFD1) THEN
25272               WID2=WIDS(KFC1,1)
25273               IF(KFD2.GT.0) THEN
25274                 WID2=WID2*WIDS(KFC2,2)
25275               ELSEIF(KFD2.LT.0) THEN
25276                 WID2=WID2*WIDS(KFC2,3)
25277               ENDIF
25278             ELSEIF(KFD3.EQ.KFD2) THEN
25279               IF(KCHG(KFC2,3).EQ.0) THEN
25280                 WID2=WIDS(KFC2,1)
25281               ELSEIF(KFD2.GT.0) THEN
25282                 WID2=WIDS(KFC2,4)
25283               ELSE
25284                 WID2=WIDS(KFC2,5)
25285               ENDIF
25286               IF(KFD1.GT.0) THEN
25287                 WID2=WID2*WIDS(KFC1,2)
25288               ELSEIF(KFD1.LT.0) THEN
25289                 WID2=WID2*WIDS(KFC1,3)
25290               ENDIF
25291             ELSEIF(KFD3.EQ.-KFD2) THEN
25292               WID2=WIDS(KFC2,1)
25293               IF(KFD1.GT.0) THEN
25294                 WID2=WID2*WIDS(KFC1,2)
25295               ELSEIF(KFD1.LT.0) THEN
25296                 WID2=WID2*WIDS(KFC1,3)
25297               ENDIF
25298             ELSE
25299               IF(KFD1.GT.0) THEN
25300                 WID2=WIDS(KFC1,2)
25301               ELSE
25302                 WID2=WIDS(KFC1,3)
25303               ENDIF
25304               IF(KFD2.GT.0) THEN
25305                 WID2=WID2*WIDS(KFC2,2)
25306               ELSE
25307                 WID2=WID2*WIDS(KFC2,3)
25308               ENDIF
25309               IF(KFD3.GT.0) THEN
25310                 WID2=WID2*WIDS(KFC3,2)
25311               ELSEIF(KFD3.LT.0) THEN
25312                 WID2=WID2*WIDS(KFC3,3)
25313               ENDIF
25314             ENDIF
25315  
25316 C...Store effective widths according to case.
25317             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25318             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25319             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25320             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25321           ENDIF
25322   120   CONTINUE
25323 C...Return.
25324         MINT(61)=0
25325         MINT(62)=0
25326         MINT(63)=0
25327         RETURN
25328       ENDIF
25329  
25330 C...Here begins detailed dynamical calculation of resonance widths.
25331 C...Shared treatment of Higgs states.
25332       KFHIGG=25
25333       IHIGG=1
25334       IF(KFLA.EQ.35.OR.KFLA.EQ.36) THEN
25335         KFHIGG=KFLA
25336         IHIGG=KFLA-33
25337       ENDIF
25338  
25339 C...Common electroweak and strong constants.
25340       XW=PARU(102)
25341       XWV=XW
25342       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
25343       XW1=1D0-XW
25344       AEM=PYALEM(SH)
25345       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
25346       AS=PYALPS(SH)
25347       RADC=1D0+AS/PARU(1)
25348  
25349       IF(KFLA.EQ.6) THEN
25350 C...t quark.
25351         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
25352         RADCT=1D0-2.5D0*AS/PARU(1)
25353         DO 140 I=1,MDCY(KC,3)
25354           IDC=I+MDCY(KC,2)-1
25355           IF(MDME(IDC,1).LT.0) GOTO 140
25356           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25357           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25358           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
25359           WID2=1D0
25360           IF(I.GE.4.AND.I.LE.7) THEN
25361 C...t -> W + q; including approximate QCD correction factor.
25362             WDTP(I)=FAC*VCKM(3,I-3)*RADCT*
25363      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25364      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
25365             IF(KFLR.GT.0) THEN
25366               WID2=WIDS(24,2)
25367               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
25368             ELSE
25369               WID2=WIDS(24,3)
25370               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
25371             ENDIF
25372           ELSEIF(I.EQ.9) THEN
25373 C...t -> H + b.
25374             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
25375             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25376      &      ((1D0+RM2-RM1)*(RM2R*PARU(141)**2+1D0/PARU(141)**2)+
25377      &      4D0*SQRT(RM2R*RM2))
25378             WID2=WIDS(37,2)
25379             IF(KFLR.LT.0) WID2=WIDS(37,3)
25380 CMRENNA++
25381           ELSEIF(I.GE.10.AND.I.LE.13.AND.IMSS(1).NE.0) THEN
25382 C...t -> ~t + ~chi_i0, i = 1, 2, 3 or 4.
25383             BETA=ATAN(RMSS(5))
25384             SINB=SIN(BETA)
25385             TANW=SQRT(PARU(102)/(1D0-PARU(102)))
25386             ET=KCHG(6,1)/3D0
25387             T3L=SIGN(0.5D0,ET)
25388             KFC1=PYCOMP(KFDP(IDC,1))
25389             KFC2=PYCOMP(KFDP(IDC,2))
25390             PMNCHI=PMAS(KFC1,1)
25391             PMSTOP=PMAS(KFC2,1)
25392             IF(SHR.GT.PMNCHI+PMSTOP) THEN
25393               IZ=I-9
25394               DO 130 IK=1,4
25395                 ZMIXC(IZ,IK)=DCMPLX(ZMIX(IZ,IK),ZMIXI(IZ,IK))
25396   130         CONTINUE
25397               AL=SHR*DCONJG(ZMIXC(IZ,4))/(2.0D0*PMAS(24,1)*SINB)
25398               AR=-ET*ZMIXC(IZ,1)*TANW
25399               BL=T3L*(ZMIXC(IZ,2)-ZMIXC(IZ,1)*TANW)-AR
25400               BR=AL
25401               FL=SFMIX(6,1)*AL+SFMIX(6,2)*AR
25402               FR=SFMIX(6,1)*BL+SFMIX(6,2)*BR
25403               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
25404      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
25405               WDTP(I)=(0.5D0*PYALEM(SH)/PARU(102))*PCM*
25406      &        ((ABS(FL)**2+ABS(FR)**2)*(SH+PMNCHI**2-PMSTOP**2)+
25407      &        SMZ(IZ)*4D0*SHR*DBLE(FL*DCONJG(FR)))/SH
25408               IF(KFLR.GT.0) THEN
25409                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
25410               ELSE
25411                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
25412               ENDIF
25413             ENDIF
25414           ELSEIF(I.EQ.14.AND.IMSS(1).NE.0) THEN
25415 C...t -> ~g + ~t
25416             KFC1=PYCOMP(KFDP(IDC,1))
25417             KFC2=PYCOMP(KFDP(IDC,2))
25418             PMNCHI=PMAS(KFC1,1)
25419             PMSTOP=PMAS(KFC2,1)
25420             IF(SHR.GT.PMNCHI+PMSTOP) THEN
25421               RL=SFMIX(6,1)
25422               RR=-SFMIX(6,2)
25423               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
25424      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
25425               WDTP(I)=4D0/3D0*0.5D0*PYALPS(SH)*PCM*((RL**2+RR**2)*
25426      &        (SH+PMNCHI**2-PMSTOP**2)+PMNCHI*4D0*SHR*RL*RR)/SH
25427               IF(KFLR.GT.0) THEN
25428                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
25429               ELSE
25430                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
25431               ENDIF
25432             ENDIF
25433           ELSEIF(I.EQ.15.AND.IMSS(1).NE.0) THEN
25434 C...t -> ~gravitino + ~t
25435             XMP2=RMSS(29)**2
25436             KFC1=PYCOMP(KFDP(IDC,1))
25437             XMGR2=PMAS(KFC1,1)**2
25438             WDTP(I)=SH**2*SHR/(96D0*PARU(1)*XMP2*XMGR2)*(1D0-RM2)**4
25439             KFC2=PYCOMP(KFDP(IDC,2))
25440             WID2=WIDS(KFC2,2)
25441             IF(KFLR.LT.0) WID2=WIDS(KFC2,3)
25442 CMRENNA--
25443           ENDIF
25444           WDTP(I)=FUDGE*WDTP(I)
25445           WDTP(0)=WDTP(0)+WDTP(I)
25446           IF(MDME(IDC,1).GT.0) THEN
25447             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25448             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25449             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25450             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25451           ENDIF
25452   140   CONTINUE
25453  
25454       ELSEIF(KFLA.EQ.7) THEN
25455 C...b' quark.
25456         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
25457         DO 150 I=1,MDCY(KC,3)
25458           IDC=I+MDCY(KC,2)-1
25459           IF(MDME(IDC,1).LT.0) GOTO 150
25460           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25461           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25462           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 150
25463           WID2=1D0
25464           IF(I.GE.4.AND.I.LE.7) THEN
25465 C...b' -> W + q.
25466             WDTP(I)=FAC*VCKM(I-3,4)*
25467      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25468      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
25469             IF(KFLR.GT.0) THEN
25470               WID2=WIDS(24,3)
25471               IF(I.EQ.6) WID2=WID2*WIDS(6,2)
25472               IF(I.EQ.7) WID2=WID2*WIDS(8,2)
25473             ELSE
25474               WID2=WIDS(24,2)
25475               IF(I.EQ.6) WID2=WID2*WIDS(6,3)
25476               IF(I.EQ.7) WID2=WID2*WIDS(8,3)
25477             ENDIF
25478             WID2=WIDS(24,3)
25479             IF(KFLR.LT.0) WID2=WIDS(24,2)
25480           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
25481 C...b' -> H + q.
25482             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25483      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
25484             IF(KFLR.GT.0) THEN
25485               WID2=WIDS(37,3)
25486               IF(I.EQ.10) WID2=WID2*WIDS(6,2)
25487             ELSE
25488               WID2=WIDS(37,2)
25489               IF(I.EQ.10) WID2=WID2*WIDS(6,3)
25490             ENDIF
25491           ENDIF
25492           WDTP(I)=FUDGE*WDTP(I)
25493           WDTP(0)=WDTP(0)+WDTP(I)
25494           IF(MDME(IDC,1).GT.0) THEN
25495             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25496             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25497             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25498             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25499           ENDIF
25500   150   CONTINUE
25501  
25502       ELSEIF(KFLA.EQ.8) THEN
25503 C...t' quark.
25504         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
25505         DO 160 I=1,MDCY(KC,3)
25506           IDC=I+MDCY(KC,2)-1
25507           IF(MDME(IDC,1).LT.0) GOTO 160
25508           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25509           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25510           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 160
25511           WID2=1D0
25512           IF(I.GE.4.AND.I.LE.7) THEN
25513 C...t' -> W + q.
25514             WDTP(I)=FAC*VCKM(4,I-3)*
25515      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25516      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
25517             IF(KFLR.GT.0) THEN
25518               WID2=WIDS(24,2)
25519               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
25520             ELSE
25521               WID2=WIDS(24,3)
25522               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
25523             ENDIF
25524           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
25525 C...t' -> H + q.
25526             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25527      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
25528             IF(KFLR.GT.0) THEN
25529               WID2=WIDS(37,2)
25530               IF(I.EQ.10) WID2=WID2*WIDS(7,2)
25531             ELSE
25532               WID2=WIDS(37,3)
25533               IF(I.EQ.10) WID2=WID2*WIDS(7,3)
25534             ENDIF
25535           ENDIF
25536           WDTP(I)=FUDGE*WDTP(I)
25537           WDTP(0)=WDTP(0)+WDTP(I)
25538           IF(MDME(IDC,1).GT.0) THEN
25539             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25540             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25541             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25542             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25543           ENDIF
25544   160   CONTINUE
25545  
25546       ELSEIF(KFLA.EQ.17) THEN
25547 C...tau' lepton.
25548         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
25549         DO 170 I=1,MDCY(KC,3)
25550           IDC=I+MDCY(KC,2)-1
25551           IF(MDME(IDC,1).LT.0) GOTO 170
25552           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25553           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25554           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 170
25555           WID2=1D0
25556           IF(I.EQ.3) THEN
25557 C...tau' -> W + nu'_tau.
25558             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25559      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
25560             IF(KFLR.GT.0) THEN
25561               WID2=WIDS(24,3)
25562               WID2=WID2*WIDS(18,2)
25563             ELSE
25564               WID2=WIDS(24,2)
25565               WID2=WID2*WIDS(18,3)
25566             ENDIF
25567           ELSEIF(I.EQ.5) THEN
25568 C...tau' -> H + nu'_tau.
25569             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25570      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
25571             IF(KFLR.GT.0) THEN
25572               WID2=WIDS(37,3)
25573               WID2=WID2*WIDS(18,2)
25574             ELSE
25575               WID2=WIDS(37,2)
25576               WID2=WID2*WIDS(18,3)
25577             ENDIF
25578           ENDIF
25579           WDTP(I)=FUDGE*WDTP(I)
25580           WDTP(0)=WDTP(0)+WDTP(I)
25581           IF(MDME(IDC,1).GT.0) THEN
25582             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25583             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25584             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25585             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25586           ENDIF
25587   170   CONTINUE
25588  
25589       ELSEIF(KFLA.EQ.18) THEN
25590 C...nu'_tau neutrino.
25591         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
25592         DO 180 I=1,MDCY(KC,3)
25593           IDC=I+MDCY(KC,2)-1
25594           IF(MDME(IDC,1).LT.0) GOTO 180
25595           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25596           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25597           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 180
25598           WID2=1D0
25599           IF(I.EQ.2) THEN
25600 C...nu'_tau -> W + tau'.
25601             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25602      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
25603             IF(KFLR.GT.0) THEN
25604               WID2=WIDS(24,2)
25605               WID2=WID2*WIDS(17,2)
25606             ELSE
25607               WID2=WIDS(24,3)
25608               WID2=WID2*WIDS(17,3)
25609             ENDIF
25610           ELSEIF(I.EQ.3) THEN
25611 C...nu'_tau -> H + tau'.
25612             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
25613      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
25614             IF(KFLR.GT.0) THEN
25615               WID2=WIDS(37,2)
25616               WID2=WID2*WIDS(17,2)
25617             ELSE
25618               WID2=WIDS(37,3)
25619               WID2=WID2*WIDS(17,3)
25620             ENDIF
25621           ENDIF
25622           WDTP(I)=FUDGE*WDTP(I)
25623           WDTP(0)=WDTP(0)+WDTP(I)
25624           IF(MDME(IDC,1).GT.0) THEN
25625             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25626             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25627             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25628             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25629           ENDIF
25630   180   CONTINUE
25631  
25632       ELSEIF(KFLA.EQ.21) THEN
25633 C...QCD:
25634 C***Note that widths are not given in dimensional quantities here.
25635         DO 190 I=1,MDCY(KC,3)
25636           IDC=I+MDCY(KC,2)-1
25637           IF(MDME(IDC,1).LT.0) GOTO 190
25638           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
25639           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
25640           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 190
25641           WID2=1D0
25642           IF(I.LE.8) THEN
25643 C...QCD -> q + qbar
25644             WDTP(I)=(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
25645             IF(I.EQ.6) WID2=WIDS(6,1)
25646             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
25647           ENDIF
25648           WDTP(I)=FUDGE*WDTP(I)
25649           WDTP(0)=WDTP(0)+WDTP(I)
25650           IF(MDME(IDC,1).GT.0) THEN
25651             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25652             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25653             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25654             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25655           ENDIF
25656   190   CONTINUE
25657  
25658       ELSEIF(KFLA.EQ.22) THEN
25659 C...QED photon.
25660 C***Note that widths are not given in dimensional quantities here.
25661         DO 200 I=1,MDCY(KC,3)
25662           IDC=I+MDCY(KC,2)-1
25663           IF(MDME(IDC,1).LT.0) GOTO 200
25664           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
25665           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
25666           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 200
25667           WID2=1D0
25668           IF(I.LE.8) THEN
25669 C...QED -> q + qbar.
25670             EF=KCHG(I,1)/3D0
25671             FCOF=3D0*RADC
25672             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
25673             WDTP(I)=FCOF*EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
25674             IF(I.EQ.6) WID2=WIDS(6,1)
25675             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
25676           ELSEIF(I.LE.12) THEN
25677 C...QED -> l+ + l-.
25678             EF=KCHG(9+2*(I-8),1)/3D0
25679             WDTP(I)=EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
25680             IF(I.EQ.12) WID2=WIDS(17,1)
25681           ENDIF
25682           WDTP(I)=FUDGE*WDTP(I)
25683           WDTP(0)=WDTP(0)+WDTP(I)
25684           IF(MDME(IDC,1).GT.0) THEN
25685             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25686             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25687             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25688             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25689           ENDIF
25690   200   CONTINUE
25691  
25692       ELSEIF(KFLA.EQ.23) THEN
25693 C...Z0:
25694         ICASE=1
25695         XWC=1D0/(16D0*XW*XW1)
25696         FAC=(AEM*XWC/3D0)*SHR
25697   210   CONTINUE
25698         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
25699           VINT(111)=0D0
25700           VINT(112)=0D0
25701           VINT(114)=0D0
25702         ENDIF
25703         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25704           KFI=IABS(MINT(15))
25705           IF(KFI.GT.20) KFI=IABS(MINT(16))
25706           EI=KCHG(KFI,1)/3D0
25707           AI=SIGN(1D0,EI)
25708           VI=AI-4D0*EI*XWV
25709           SQMZ=PMAS(23,1)**2
25710           HZ=SHR*WDTP(0)
25711           IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=1D0
25712           IF(MSTP(43).EQ.3) VINT(112)=
25713      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
25714           IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
25715      &    XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
25716         ENDIF
25717         DO 220 I=1,MDCY(KC,3)
25718           IDC=I+MDCY(KC,2)-1
25719           IF(MDME(IDC,1).LT.0) GOTO 220
25720           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
25721           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
25722           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 220
25723           WID2=1D0
25724           IF(I.LE.8) THEN
25725 C...Z0 -> q + qbar
25726             EF=KCHG(I,1)/3D0
25727             AF=SIGN(1D0,EF+0.1D0)
25728             VF=AF-4D0*EF*XWV
25729             FCOF=3D0*RADC
25730             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
25731             IF(I.EQ.6) WID2=WIDS(6,1)
25732             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
25733           ELSEIF(I.LE.16) THEN
25734 C...Z0 -> l+ + l-, nu + nubar
25735             EF=KCHG(I+2,1)/3D0
25736             AF=SIGN(1D0,EF+0.1D0)
25737             VF=AF-4D0*EF*XWV
25738             FCOF=1D0
25739             IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
25740           ENDIF
25741           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
25742           IF(ICASE.EQ.1) THEN
25743             WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
25744      &      BE34
25745           ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25746             WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
25747      &      EF*VF+(VI**2+AI**2)*VINT(114)*VF**2)*(1D0+2D0*RM1)+
25748      &      (VI**2+AI**2)*VINT(114)*AF**2*(1D0-4D0*RM1))*BE34
25749           ELSEIF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
25750             FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
25751             FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
25752             FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
25753           ENDIF
25754           IF(ICASE.EQ.1) WDTP(I)=FUDGE*WDTP(I)
25755           IF(ICASE.EQ.1) WDTP(0)=WDTP(0)+WDTP(I)
25756           IF(MDME(IDC,1).GT.0) THEN
25757             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
25758      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
25759               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25760               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
25761      &        WDTE(I,MDME(IDC,1))
25762               WDTE(I,0)=WDTE(I,MDME(IDC,1))
25763               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25764             ENDIF
25765             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
25766               IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=
25767      &        VINT(111)+FGGF*WID2
25768               IF(MSTP(43).EQ.3) VINT(112)=VINT(112)+FGZF*WID2
25769               IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
25770      &        VINT(114)+FZZF*WID2
25771             ENDIF
25772           ENDIF
25773   220   CONTINUE
25774         IF(MINT(61).GE.1) ICASE=3-ICASE
25775         IF(ICASE.EQ.2) GOTO 210
25776  
25777       ELSEIF(KFLA.EQ.24) THEN
25778 C...W+/-:
25779         FAC=(AEM/(24D0*XW))*SHR
25780         DO 230 I=1,MDCY(KC,3)
25781           IDC=I+MDCY(KC,2)-1
25782           IF(MDME(IDC,1).LT.0) GOTO 230
25783           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
25784           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
25785           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 230
25786           WID2=1D0
25787           IF(I.LE.16) THEN
25788 C...W+/- -> q + qbar'
25789             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
25790             IF(KFLR.GT.0) THEN
25791               IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
25792               IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
25793               IF(I.GE.13) WID2=WID2*WIDS(7,3)
25794             ELSE
25795               IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
25796               IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
25797               IF(I.GE.13) WID2=WID2*WIDS(7,2)
25798             ENDIF
25799           ELSEIF(I.LE.20) THEN
25800 C...W+/- -> l+/- + nu
25801             FCOF=1D0
25802             IF(KFLR.GT.0) THEN
25803               IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
25804             ELSE
25805               IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
25806             ENDIF
25807           ENDIF
25808           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
25809      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25810           WDTP(I)=FUDGE*WDTP(I)
25811           WDTP(0)=WDTP(0)+WDTP(I)
25812           IF(MDME(IDC,1).GT.0) THEN
25813             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25814             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25815             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25816             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25817           ENDIF
25818   230   CONTINUE
25819  
25820       ELSEIF(KFLA.EQ.25.OR.KFLA.EQ.35.OR.KFLA.EQ.36) THEN
25821 C...h0 (or H0, or A0):
25822         SHFS=SH
25823         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
25824         DO 270 I=1,MDCY(KFHIGG,3)
25825           IDC=I+MDCY(KFHIGG,2)-1
25826           IF(MDME(IDC,1).LT.0) GOTO 270
25827           KFC1=PYCOMP(KFDP(IDC,1))
25828           KFC2=PYCOMP(KFDP(IDC,2))
25829           RM1=PMAS(KFC1,1)**2/SH
25830           RM2=PMAS(KFC2,1)**2/SH
25831           IF(I.NE.16.AND.I.NE.17.AND.SQRT(RM1)+SQRT(RM2).GT.1D0)
25832      &    GOTO 270
25833           WID2=1D0
25834  
25835           IF(I.LE.8) THEN
25836 C...h0 -> q + qbar
25837             WDTP(I)=FAC*3D0*(PYMRUN(KFDP(IDC,1),SH)**2/SHFS)*
25838      &      SQRT(MAX(0D0,1D0-4D0*RM1))*RADC
25839 C...A0 behaves like beta, ho and H0 like beta**3.
25840             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
25841             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
25842               IF(MOD(I,2).EQ.1) WDTP(I)=WDTP(I)*PARU(151+10*IHIGG)**2
25843               IF(MOD(I,2).EQ.0) WDTP(I)=WDTP(I)*PARU(152+10*IHIGG)**2
25844               IF(IMSS(1).NE.0.AND.KFC1.EQ.5) THEN
25845                 WDTP(I)=WDTP(I)/(1D0+RMSS(41))**2
25846                 IF(IHIGG.NE.3) THEN
25847                   WDTP(I)=WDTP(I)*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
25848      &            PARU(151+10*IHIGG))**2
25849                 ENDIF
25850               ENDIF
25851             ENDIF
25852             IF(I.EQ.6) WID2=WIDS(6,1)
25853             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
25854           ELSEIF(I.LE.12) THEN
25855 C...h0 -> l+ + l-
25856             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))*(SH/SHFS)
25857 C...A0 behaves like beta, ho and H0 like beta**3.
25858             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
25859             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
25860      &      PARU(153+10*IHIGG)**2
25861             IF(I.EQ.12) WID2=WIDS(17,1)
25862  
25863           ELSEIF(I.EQ.13) THEN
25864 C...h0 -> g + g; quark loop contribution only
25865             ETARE=0D0
25866             ETAIM=0D0
25867             DO 240 J=1,2*MSTP(1)
25868               EPS=(2D0*PMAS(J,1))**2/SH
25869 C...Loop integral; function of eps=4m^2/shat; different for A0.
25870               IF(EPS.LE.1D0) THEN
25871                 IF(EPS.GT.1D-4) THEN
25872                   ROOT=SQRT(1D0-EPS)
25873                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
25874                 ELSE
25875                   RLN=LOG(4D0/EPS-2D0)
25876                 ENDIF
25877                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
25878                 PHIIM=0.5D0*PARU(1)*RLN
25879               ELSE
25880                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
25881                 PHIIM=0D0
25882               ENDIF
25883               IF(IHIGG.LE.2) THEN
25884                 ETAREJ=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
25885                 ETAIMJ=-0.5D0*EPS*(1D0-EPS)*PHIIM
25886               ELSE
25887                 ETAREJ=-0.5D0*EPS*PHIRE
25888                 ETAIMJ=-0.5D0*EPS*PHIIM
25889               ENDIF
25890 C...Couplings (=1 for standard model Higgs).
25891               IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
25892                 IF(MOD(J,2).EQ.1) THEN
25893                   ETAREJ=ETAREJ*PARU(151+10*IHIGG)
25894                   ETAIMJ=ETAIMJ*PARU(151+10*IHIGG)
25895                 ELSE
25896                   ETAREJ=ETAREJ*PARU(152+10*IHIGG)
25897                   ETAIMJ=ETAIMJ*PARU(152+10*IHIGG)
25898                 ENDIF
25899               ENDIF
25900               ETARE=ETARE+ETAREJ
25901               ETAIM=ETAIM+ETAIMJ
25902   240       CONTINUE
25903             ETA2=ETARE**2+ETAIM**2
25904             WDTP(I)=FAC*(AS/PARU(1))**2*ETA2
25905  
25906           ELSEIF(I.EQ.14) THEN
25907 C...h0 -> gamma + gamma; quark, lepton, W+- and H+- loop contributions
25908             ETARE=0D0
25909             ETAIM=0D0
25910             JMAX=3*MSTP(1)+1
25911             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
25912             DO 250 J=1,JMAX
25913               IF(J.LE.2*MSTP(1)) THEN
25914                 EJ=KCHG(J,1)/3D0
25915                 EPS=(2D0*PMAS(J,1))**2/SH
25916               ELSEIF(J.LE.3*MSTP(1)) THEN
25917                 JL=2*(J-2*MSTP(1))-1
25918                 EJ=KCHG(10+JL,1)/3D0
25919                 EPS=(2D0*PMAS(10+JL,1))**2/SH
25920               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
25921                 EPS=(2D0*PMAS(24,1))**2/SH
25922               ELSE
25923                 EPS=(2D0*PMAS(37,1))**2/SH
25924               ENDIF
25925 C...Loop integral; function of eps=4m^2/shat.
25926               IF(EPS.LE.1D0) THEN
25927                 IF(EPS.GT.1D-4) THEN
25928                   ROOT=SQRT(1D0-EPS)
25929                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
25930                 ELSE
25931                   RLN=LOG(4D0/EPS-2D0)
25932                 ENDIF
25933                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
25934                 PHIIM=0.5D0*PARU(1)*RLN
25935               ELSE
25936                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
25937                 PHIIM=0D0
25938               ENDIF
25939               IF(J.LE.3*MSTP(1)) THEN
25940 C...Fermion loops: loop integral different for A0; charges.
25941                 IF(IHIGG.LE.2) THEN
25942                   PHIPRE=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
25943                   PHIPIM=-0.5D0*EPS*(1D0-EPS)*PHIIM
25944                 ELSE
25945                   PHIPRE=-0.5D0*EPS*PHIRE
25946                   PHIPIM=-0.5D0*EPS*PHIIM
25947                 ENDIF
25948                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
25949                   EJC=3D0*EJ**2
25950                   EJH=PARU(151+10*IHIGG)
25951                 ELSEIF(J.LE.2*MSTP(1)) THEN
25952                   EJC=3D0*EJ**2
25953                   EJH=PARU(152+10*IHIGG)
25954                 ELSE
25955                   EJC=EJ**2
25956                   EJH=PARU(153+10*IHIGG)
25957                 ENDIF
25958                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
25959                 ETAREJ=EJC*EJH*PHIPRE
25960                 ETAIMJ=EJC*EJH*PHIPIM
25961               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
25962 C...W loops: loop integral and charges.
25963                 ETAREJ=0.5D0+0.75D0*EPS*(1D0+(2D0-EPS)*PHIRE)
25964                 ETAIMJ=0.75D0*EPS*(2D0-EPS)*PHIIM
25965                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
25966                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
25967                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
25968                 ENDIF
25969               ELSE
25970 C...Charged H loops: loop integral and charges.
25971                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*
25972      &          PARU(158+10*IHIGG+2*(IHIGG/3))
25973                 ETAREJ=EPS*(1D0-EPS*PHIRE)*FACHHH
25974                 ETAIMJ=-EPS**2*PHIIM*FACHHH
25975               ENDIF
25976               ETARE=ETARE+ETAREJ
25977               ETAIM=ETAIM+ETAIMJ
25978   250       CONTINUE
25979             ETA2=ETARE**2+ETAIM**2
25980             WDTP(I)=FAC*(AEM/PARU(1))**2*0.5D0*ETA2
25981  
25982           ELSEIF(I.EQ.15) THEN
25983 C...h0 -> gamma + Z0; quark, lepton, W and H+- loop contributions
25984             ETARE=0D0
25985             ETAIM=0D0
25986             JMAX=3*MSTP(1)+1
25987             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
25988             DO 260 J=1,JMAX
25989               IF(J.LE.2*MSTP(1)) THEN
25990                 EJ=KCHG(J,1)/3D0
25991                 AJ=SIGN(1D0,EJ+0.1D0)
25992                 VJ=AJ-4D0*EJ*XWV
25993                 EPS=(2D0*PMAS(J,1))**2/SH
25994                 EPSP=(2D0*PMAS(J,1)/PMAS(23,1))**2
25995               ELSEIF(J.LE.3*MSTP(1)) THEN
25996                 JL=2*(J-2*MSTP(1))-1
25997                 EJ=KCHG(10+JL,1)/3D0
25998                 AJ=SIGN(1D0,EJ+0.1D0)
25999                 VJ=AJ-4D0*EJ*XWV
26000                 EPS=(2D0*PMAS(10+JL,1))**2/SH
26001                 EPSP=(2D0*PMAS(10+JL,1)/PMAS(23,1))**2
26002               ELSE
26003                 EPS=(2D0*PMAS(24,1))**2/SH
26004                 EPSP=(2D0*PMAS(24,1)/PMAS(23,1))**2
26005               ENDIF
26006 C...Loop integrals; functions of eps=4m^2/shat and eps'=4m^2/m_Z^2.
26007               IF(EPS.LE.1D0) THEN
26008                 ROOT=SQRT(1D0-EPS)
26009                 IF(EPS.GT.1D-4) THEN
26010                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
26011                 ELSE
26012                   RLN=LOG(4D0/EPS-2D0)
26013                 ENDIF
26014                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
26015                 PHIIM=0.5D0*PARU(1)*RLN
26016                 PSIRE=0.5D0*ROOT*RLN
26017                 PSIIM=-0.5D0*ROOT*PARU(1)
26018               ELSE
26019                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
26020                 PHIIM=0D0
26021                 PSIRE=SQRT(EPS-1D0)*ASIN(1D0/SQRT(EPS))
26022                 PSIIM=0D0
26023               ENDIF
26024               IF(EPSP.LE.1D0) THEN
26025                 ROOT=SQRT(1D0-EPSP)
26026                 IF(EPSP.GT.1D-4) THEN
26027                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
26028                 ELSE
26029                   RLN=LOG(4D0/EPSP-2D0)
26030                 ENDIF
26031                 PHIREP=-0.25D0*(RLN**2-PARU(1)**2)
26032                 PHIIMP=0.5D0*PARU(1)*RLN
26033                 PSIREP=0.5D0*ROOT*RLN
26034                 PSIIMP=-0.5D0*ROOT*PARU(1)
26035               ELSE
26036                 PHIREP=(ASIN(1D0/SQRT(EPSP)))**2
26037                 PHIIMP=0D0
26038                 PSIREP=SQRT(EPSP-1D0)*ASIN(1D0/SQRT(EPSP))
26039                 PSIIMP=0D0
26040               ENDIF
26041               FXYRE=EPS*EPSP/(8D0*(EPS-EPSP))*(1D0+EPS*EPSP/(EPS-EPSP)*
26042      &        (PHIRE-PHIREP)+2D0*EPS/(EPS-EPSP)*(PSIRE-PSIREP))
26043               FXYIM=EPS**2*EPSP/(8D0*(EPS-EPSP)**2)*
26044      &        (EPSP*(PHIIM-PHIIMP)+2D0*(PSIIM-PSIIMP))
26045               F1RE=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIRE-PHIREP)
26046               F1IM=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIIM-PHIIMP)
26047               IF(J.LE.3*MSTP(1)) THEN
26048 C...Fermion loops: loop integral different for A0; charges.
26049                 IF(IHIGG.EQ.3) FXYRE=0D0
26050                 IF(IHIGG.EQ.3) FXYIM=0D0
26051                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
26052                   EJC=-3D0*EJ*VJ
26053                   EJH=PARU(151+10*IHIGG)
26054                 ELSEIF(J.LE.2*MSTP(1)) THEN
26055                   EJC=-3D0*EJ*VJ
26056                   EJH=PARU(152+10*IHIGG)
26057                 ELSE
26058                   EJC=-EJ*VJ
26059                   EJH=PARU(153+10*IHIGG)
26060                 ENDIF
26061                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
26062                 ETAREJ=EJC*EJH*(FXYRE-0.25D0*F1RE)
26063                 ETAIMJ=EJC*EJH*(FXYIM-0.25D0*F1IM)
26064               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
26065 C...W loops: loop integral and charges.
26066                 HEPS=(1D0+2D0/EPS)*XW/XW1-(5D0+2D0/EPS)
26067                 ETAREJ=-XW1*((3D0-XW/XW1)*F1RE+HEPS*FXYRE)
26068                 ETAIMJ=-XW1*((3D0-XW/XW1)*F1IM+HEPS*FXYIM)
26069                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
26070                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
26071                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
26072                 ENDIF
26073               ELSE
26074 C...Charged H loops: loop integral and charges.
26075                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*(1D0-2D0*XW)*
26076      &          PARU(158+10*IHIGG+2*(IHIGG/3))
26077                 ETAREJ=FACHHH*FXYRE
26078                 ETAIMJ=FACHHH*FXYIM
26079               ENDIF
26080               ETARE=ETARE+ETAREJ
26081               ETAIM=ETAIM+ETAIMJ
26082   260       CONTINUE
26083             ETA2=(ETARE**2+ETAIM**2)/(XW*XW1)
26084             WDTP(I)=FAC*(AEM/PARU(1))**2*(1D0-PMAS(23,1)**2/SH)**3*ETA2
26085             WID2=WIDS(23,2)
26086  
26087           ELSEIF(I.LE.17) THEN
26088 C...h0 -> Z0 + Z0, W+ + W-
26089             PM1=PMAS(IABS(KFDP(IDC,1)),1)
26090             PG1=PMAS(IABS(KFDP(IDC,1)),2)
26091             IF(MINT(62).GE.1) THEN
26092               IF(MSTP(42).EQ.0.OR.(4D0*(PM1+10D0*PG1)**2.LT.SH.AND.
26093      &        CKIN(46).LT.CKIN(45).AND.CKIN(48).LT.CKIN(47).AND.
26094      &        MAX(CKIN(45),CKIN(47)).LT.PM1-10D0*PG1)) THEN
26095                 MOFSV(IHIGG,I-15)=0
26096                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
26097      &          1D0-4D0*RM1))
26098                 WID2=1D0
26099               ELSE
26100                 MOFSV(IHIGG,I-15)=1
26101                 RMAS=SQRT(MAX(0D0,SH))
26102                 CALL PYOFSH(1,KFLA,KFDP(IDC,1),KFDP(IDC,2),RMAS,WIDW,
26103      &          WID2)
26104                 WIDWSV(IHIGG,I-15)=WIDW
26105                 WID2SV(IHIGG,I-15)=WID2
26106               ENDIF
26107             ELSE
26108               IF(MOFSV(IHIGG,I-15).EQ.0) THEN
26109                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
26110      &          1D0-4D0*RM1))
26111                 WID2=1D0
26112               ELSE
26113                 WIDW=WIDWSV(IHIGG,I-15)
26114                 WID2=WID2SV(IHIGG,I-15)
26115               ENDIF
26116             ENDIF
26117             WDTP(I)=FAC*WIDW/(2D0*(18-I))
26118             IF(MSTP(49).NE.0) WDTP(I)=WDTP(I)*PMAS(KFHIGG,1)**2/SHFS
26119             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
26120      &      PARU(138+I+10*IHIGG)**2
26121             WID2=WID2*WIDS(7+I,1)
26122  
26123           ELSEIF(I.EQ.18.AND.IHIGG.GE.2) THEN
26124 C...H0 -> Z0 + h0, A0-> Z0 + h0
26125             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
26126      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26127             IF(IHIGG.EQ.2) THEN
26128              WDTP(I)=WDTP(I)*PARU(179)**2
26129             ELSEIF(IHIGG.EQ.3) THEN
26130              WDTP(I)=WDTP(I)*PARU(186)**2
26131             ENDIF
26132             WID2=WIDS(23,2)*WIDS(25,2)
26133  
26134           ELSEIF(I.EQ.19.AND.IHIGG.GE.2) THEN
26135 C...H0 -> h0 + h0, A0-> h0 + h0
26136             WDTP(I)=FAC*0.25D0*
26137      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
26138             IF(IHIGG.EQ.2) THEN
26139              WDTP(I)=WDTP(I)*PARU(176)**2
26140             ELSEIF(IHIGG.EQ.3) THEN
26141              WDTP(I)=WDTP(I)*PARU(169)**2
26142             ENDIF
26143             WID2=WIDS(25,1)
26144           ELSEIF((I.EQ.20.OR.I.EQ.21).AND.IHIGG.GE.2) THEN
26145 C...H0 -> W+/- + H-/+, A0 -> W+/- + H-/+
26146             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
26147      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26148      &      *PARU(195+IHIGG)**2
26149             IF(I.EQ.20) THEN
26150               WID2=WIDS(24,2)*WIDS(37,3)
26151             ELSEIF(I.EQ.21) THEN
26152               WID2=WIDS(24,3)*WIDS(37,2)
26153             ENDIF
26154  
26155           ELSEIF(I.EQ.22.AND.IHIGG.EQ.2) THEN
26156 C...H0 -> Z0 + A0.
26157             WDTP(I)=FAC*0.5D0*PARU(187)**2*SQRT(MAX(0D0,
26158      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26159             WID2=WIDS(36,2)*WIDS(23,2)
26160  
26161           ELSEIF(I.EQ.23.AND.IHIGG.EQ.2) THEN
26162 C...H0 -> h0 + A0.
26163             WDTP(I)=FAC*0.5D0*PARU(180)**2*
26164      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
26165             WID2=WIDS(25,2)*WIDS(36,2)
26166  
26167           ELSEIF(I.EQ.24.AND.IHIGG.EQ.2) THEN
26168 C...H0 -> A0 + A0
26169             WDTP(I)=FAC*0.25D0*PARU(177)**2*
26170      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
26171             WID2=WIDS(36,1)
26172  
26173 CMRENNA++
26174           ELSE
26175 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
26176             RM10=RM1*SH/PMR**2
26177             RM20=RM2*SH/PMR**2
26178             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
26179             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
26180             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
26181               WFAC=0D0
26182             ELSE
26183               WFAC=WFAC/WFAC0
26184             ENDIF
26185             WDTP(I)=PMAS(KFLA,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
26186 CMRENNA--
26187             IF(KFC2.EQ.KFC1) THEN
26188               WID2=WIDS(KFC1,1)
26189             ELSE
26190               KSGN1=2
26191               IF(KFDP(IDC,1).LT.0) KSGN1=3
26192               KSGN2=2
26193               IF(KFDP(IDC,2).LT.0) KSGN2=3
26194               WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
26195             ENDIF
26196           ENDIF
26197           WDTP(I)=FUDGE*WDTP(I)
26198           WDTP(0)=WDTP(0)+WDTP(I)
26199           IF(MDME(IDC,1).GT.0) THEN
26200             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26201             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26202             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26203             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26204           ENDIF
26205   270   CONTINUE
26206  
26207       ELSEIF(KFLA.EQ.32) THEN
26208 C...Z'0:
26209         ICASE=1
26210         XWC=1D0/(16D0*XW*XW1)
26211         FAC=(AEM*XWC/3D0)*SHR
26212         VINT(117)=0D0
26213   280   CONTINUE
26214         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
26215           VINT(111)=0D0
26216           VINT(112)=0D0
26217           VINT(113)=0D0
26218           VINT(114)=0D0
26219           VINT(115)=0D0
26220           VINT(116)=0D0
26221         ENDIF
26222         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
26223           KFAI=IABS(MINT(15))
26224           EI=KCHG(KFAI,1)/3D0
26225           AI=SIGN(1D0,EI+0.1D0)
26226           VI=AI-4D0*EI*XWV
26227           KFAIC=1
26228           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
26229           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
26230           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
26231           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
26232             VPI=PARU(119+2*KFAIC)
26233             API=PARU(120+2*KFAIC)
26234           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
26235             VPI=PARJ(178+2*KFAIC)
26236             API=PARJ(179+2*KFAIC)
26237           ELSE
26238             VPI=PARJ(186+2*KFAIC)
26239             API=PARJ(187+2*KFAIC)
26240           ENDIF
26241           SQMZ=PMAS(23,1)**2
26242           HZ=SHR*VINT(117)
26243           SQMZP=PMAS(32,1)**2
26244           HZP=SHR*WDTP(0)
26245           IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
26246      &    MSTP(44).EQ.7) VINT(111)=1D0
26247           IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=
26248      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
26249           IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=
26250      &    2D0*XWC*SH*(SH-SQMZP)/((SH-SQMZP)**2+HZP**2)
26251           IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
26252      &    MSTP(44).EQ.7) VINT(114)=XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
26253           IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=
26254      &    2D0*XWC**2*SH**2*((SH-SQMZ)*(SH-SQMZP)+HZ*HZP)/
26255      &    (((SH-SQMZ)**2+HZ**2)*((SH-SQMZP)**2+HZP**2))
26256           IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
26257      &    MSTP(44).EQ.7) VINT(116)=XWC**2*SH**2/((SH-SQMZP)**2+HZP**2)
26258         ENDIF
26259         DO 290 I=1,MDCY(KC,3)
26260           IDC=I+MDCY(KC,2)-1
26261           IF(MDME(IDC,1).LT.0) GOTO 290
26262           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26263           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26264           IF(SQRT(RM1)+SQRT(RM2).GT.1D0.OR.MDME(IDC,1).LT.0) GOTO 290
26265           WID2=1D0
26266           IF(I.LE.16) THEN
26267             IF(I.LE.8) THEN
26268 C...Z'0 -> q + qbar
26269               EF=KCHG(I,1)/3D0
26270               AF=SIGN(1D0,EF+0.1D0)
26271               VF=AF-4D0*EF*XWV
26272               IF(I.LE.2) THEN
26273                 VPF=PARU(123-2*MOD(I,2))
26274                 APF=PARU(124-2*MOD(I,2))
26275               ELSEIF(I.LE.4) THEN
26276                 VPF=PARJ(182-2*MOD(I,2))
26277                 APF=PARJ(183-2*MOD(I,2))
26278               ELSE
26279                 VPF=PARJ(190-2*MOD(I,2))
26280                 APF=PARJ(191-2*MOD(I,2))
26281               ENDIF
26282               FCOF=3D0*RADC
26283               IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
26284      &        PYHFTH(SH,SH*RM1,1D0)
26285               IF(I.EQ.6) WID2=WIDS(6,1)
26286               IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
26287             ELSEIF(I.LE.16) THEN
26288 C...Z'0 -> l+ + l-, nu + nubar
26289               EF=KCHG(I+2,1)/3D0
26290               AF=SIGN(1D0,EF+0.1D0)
26291               VF=AF-4D0*EF*XWV
26292               IF(I.LE.10) THEN
26293                 VPF=PARU(127-2*MOD(I,2))
26294                 APF=PARU(128-2*MOD(I,2))
26295               ELSEIF(I.LE.12) THEN
26296                 VPF=PARJ(186-2*MOD(I,2))
26297                 APF=PARJ(187-2*MOD(I,2))
26298               ELSE
26299                 VPF=PARJ(194-2*MOD(I,2))
26300                 APF=PARJ(195-2*MOD(I,2))
26301               ENDIF
26302               FCOF=1D0
26303               IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
26304             ENDIF
26305             BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
26306             IF(ICASE.EQ.1) THEN
26307               WDTPZ=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
26308               WDTP(I)=FAC*FCOF*(VPF**2*(1D0+2D0*RM1)+
26309      &        APF**2*(1D0-4D0*RM1))*BE34
26310             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
26311               WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
26312      &        EF*VF+EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
26313      &        VF**2+(VI*VPI+AI*API)*VINT(115)*VF*VPF+(VPI**2+API**2)*
26314      &        VINT(116)*VPF**2)*(1D0+2D0*RM1)+((VI**2+AI**2)*VINT(114)*
26315      &        AF**2+(VI*VPI+AI*API)*VINT(115)*AF*APF+(VPI**2+API**2)*
26316      &        VINT(116)*APF**2)*(1D0-4D0*RM1))*BE34
26317             ELSEIF(MINT(61).EQ.2) THEN
26318               FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
26319               FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
26320               FGZPF=FCOF*EF*VPF*(1D0+2D0*RM1)*BE34
26321               FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
26322               FZZPF=FCOF*(VF*VPF*(1D0+2D0*RM1)+AF*APF*(1D0-4D0*RM1))*
26323      &        BE34
26324               FZPZPF=FCOF*(VPF**2*(1D0+2D0*RM1)+APF**2*(1D0-4D0*RM1))*
26325      &        BE34
26326             ENDIF
26327           ELSEIF(I.EQ.17) THEN
26328 C...Z'0 -> W+ + W-
26329             WDTPZP=PARU(129)**2*XW1**2*
26330      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26331      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
26332             IF(ICASE.EQ.1) THEN
26333               WDTPZ=0D0
26334               WDTP(I)=FAC*WDTPZP
26335             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
26336               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
26337             ELSEIF(MINT(61).EQ.2) THEN
26338               FGGF=0D0
26339               FGZF=0D0
26340               FGZPF=0D0
26341               FZZF=0D0
26342               FZZPF=0D0
26343               FZPZPF=WDTPZP
26344             ENDIF
26345             WID2=WIDS(24,1)
26346           ELSEIF(I.EQ.18) THEN
26347 C...Z'0 -> H+ + H-
26348             CZC=2D0*(1D0-2D0*XW)
26349             BE34C=(1D0-4D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
26350             IF(ICASE.EQ.1) THEN
26351               WDTPZ=0.25D0*PARU(142)**2*CZC**2*BE34C
26352               WDTP(I)=FAC*0.25D0*PARU(143)**2*CZC**2*BE34C
26353             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
26354               WDTP(I)=FAC*0.25D0*(EI**2*VINT(111)+PARU(142)*EI*VI*
26355      &        VINT(112)*CZC+PARU(143)*EI*VPI*VINT(113)*CZC+PARU(142)**2*
26356      &        (VI**2+AI**2)*VINT(114)*CZC**2+PARU(142)*PARU(143)*
26357      &        (VI*VPI+AI*API)*VINT(115)*CZC**2+PARU(143)**2*
26358      &        (VPI**2+API**2)*VINT(116)*CZC**2)*BE34C
26359             ELSEIF(MINT(61).EQ.2) THEN
26360               FGGF=0.25D0*BE34C
26361               FGZF=0.25D0*PARU(142)*CZC*BE34C
26362               FGZPF=0.25D0*PARU(143)*CZC*BE34C
26363               FZZF=0.25D0*PARU(142)**2*CZC**2*BE34C
26364               FZZPF=0.25D0*PARU(142)*PARU(143)*CZC**2*BE34C
26365               FZPZPF=0.25D0*PARU(143)**2*CZC**2*BE34C
26366             ENDIF
26367             WID2=WIDS(37,1)
26368           ELSEIF(I.EQ.19) THEN
26369 C...Z'0 -> Z0 + gamma.
26370           ELSEIF(I.EQ.20) THEN
26371 C...Z'0 -> Z0 + h0
26372             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26373             WDTPZP=PARU(145)**2*4D0*ABS(1D0-2D0*XW)*
26374      &      (3D0*RM1+0.25D0*FLAM**2)*FLAM
26375             IF(ICASE.EQ.1) THEN
26376               WDTPZ=0D0
26377               WDTP(I)=FAC*WDTPZP
26378             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
26379               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
26380             ELSEIF(MINT(61).EQ.2) THEN
26381               FGGF=0D0
26382               FGZF=0D0
26383               FGZPF=0D0
26384               FZZF=0D0
26385               FZZPF=0D0
26386               FZPZPF=WDTPZP
26387             ENDIF
26388             WID2=WIDS(23,2)*WIDS(25,2)
26389           ELSEIF(I.EQ.21.OR.I.EQ.22) THEN
26390 C...Z' -> h0 + A0 or H0 + A0.
26391             BE34C=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26392             IF(I.EQ.21) THEN
26393               CZAH=PARU(186)
26394               CZPAH=PARU(188)
26395             ELSE
26396               CZAH=PARU(187)
26397               CZPAH=PARU(189)
26398             ENDIF
26399             IF(ICASE.EQ.1) THEN
26400               WDTPZ=CZAH**2*BE34C
26401               WDTP(I)=FAC*CZPAH**2*BE34C
26402             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
26403               WDTP(I)=FAC*(CZAH**2*(VI**2+AI**2)*VINT(114)+CZAH*CZPAH*
26404      &        (VI*VPI+AI*API)*VINT(115)+CZPAH**2*(VPI**2+API**2)*
26405      &        VINT(116))*BE34C
26406             ELSEIF(MINT(61).EQ.2) THEN
26407               FGGF=0D0
26408               FGZF=0D0
26409               FGZPF=0D0
26410               FZZF=CZAH**2*BE34C
26411               FZZPF=CZAH*CZPAH*BE34C
26412               FZPZPF=CZPAH**2*BE34C
26413             ENDIF
26414             IF(I.EQ.21) WID2=WIDS(25,2)*WIDS(36,2)
26415             IF(I.EQ.22) WID2=WIDS(35,2)*WIDS(36,2)
26416           ENDIF
26417           IF(ICASE.EQ.1) THEN
26418             VINT(117)=VINT(117)+FAC*WDTPZ
26419             WDTP(I)=FUDGE*WDTP(I)
26420             WDTP(0)=WDTP(0)+WDTP(I)
26421           ENDIF
26422           IF(MDME(IDC,1).GT.0) THEN
26423             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
26424      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
26425               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26426               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
26427      &        WDTE(I,MDME(IDC,1))
26428               WDTE(I,0)=WDTE(I,MDME(IDC,1))
26429               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26430             ENDIF
26431             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
26432               IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
26433      &        MSTP(44).EQ.7) VINT(111)=VINT(111)+FGGF*WID2
26434               IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=VINT(112)+
26435      &        FGZF*WID2
26436               IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=VINT(113)+
26437      &        FGZPF*WID2
26438               IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
26439      &        MSTP(44).EQ.7) VINT(114)=VINT(114)+FZZF*WID2
26440               IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=VINT(115)+
26441      &        FZZPF*WID2
26442               IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
26443      &        MSTP(44).EQ.7) VINT(116)=VINT(116)+FZPZPF*WID2
26444             ENDIF
26445           ENDIF
26446   290   CONTINUE
26447         IF(MINT(61).GE.1) ICASE=3-ICASE
26448         IF(ICASE.EQ.2) GOTO 280
26449  
26450       ELSEIF(KFLA.EQ.34) THEN
26451 C...W'+/-:
26452         FAC=(AEM/(24D0*XW))*SHR
26453         DO 300 I=1,MDCY(KC,3)
26454           IDC=I+MDCY(KC,2)-1
26455           IF(MDME(IDC,1).LT.0) GOTO 300
26456           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26457           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26458           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 300
26459           WID2=1D0
26460           IF(I.LE.20) THEN
26461             IF(I.LE.16) THEN
26462 C...W'+/- -> q + qbar'
26463               CKMFAC = VCKM((I-1)/4+1,MOD(I-1,4)+1)
26464               FCOF=3D0*CKMFAC*RADC*(PARU(131)**2+PARU(132)**2)
26465               FCOF2=3D0*CKMFAC*RADC*(PARU(131)**2-PARU(132)**2)
26466               IF(KFLR.GT.0) THEN
26467                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
26468                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
26469                 IF(I.GE.13) WID2=WID2*WIDS(7,3)
26470               ELSE
26471                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
26472                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
26473                 IF(I.GE.13) WID2=WID2*WIDS(7,2)
26474               ENDIF
26475             ELSEIF(I.LE.20) THEN
26476 C...W'+/- -> l+/- + nu
26477               FCOF=PARU(133)**2+PARU(134)**2
26478               FCOF2=PARU(133)**2-PARU(134)**2
26479               IF(KFLR.GT.0) THEN
26480                 IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
26481               ELSE
26482                 IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
26483               ENDIF
26484             ENDIF
26485             WDTP(I)=FAC*0.5*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)
26486      &           *SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))            
26487             IF (RM1.GT.0D0.AND.RM2.GT.0D0) THEN
26488 C...PS 28/06/2010
26489 C...Inserted (gV2-gA2)*sqrt(m1*m2) term (FCOF2), following M. Chizhov
26490               WDTP(I)=WDTP(I) + FAC*0.5*6D0*FCOF2*SQRT(RM1*RM2)
26491      &             *SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))            
26492             ENDIF
26493           ELSEIF(I.EQ.21) THEN
26494 C...W'+/- -> W+/- + Z0
26495             WDTP(I)=FAC*PARU(135)**2*0.5D0*XW1*(RM1/RM2)*
26496      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26497      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
26498             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(23,2)
26499             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(23,2)
26500           ELSEIF(I.EQ.23) THEN
26501 C...W'+/- -> W+/- + h0
26502             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26503             WDTP(I)=FAC*PARU(146)**2*2D0*(3D0*RM1+0.25D0*FLAM**2)*FLAM
26504             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
26505             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
26506           ENDIF
26507           WDTP(I)=FUDGE*WDTP(I)
26508           WDTP(0)=WDTP(0)+WDTP(I)
26509           IF(MDME(IDC,1).GT.0) THEN
26510             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26511             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26512             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26513             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26514           ENDIF
26515   300   CONTINUE
26516  
26517       ELSEIF(KFLA.EQ.37) THEN
26518 C...H+/-:
26519 C        IF(MSTP(49).EQ.0) THEN
26520         SHFS=SH
26521 C        ELSE
26522 C          SHFS=PMAS(37,1)**2
26523 C        ENDIF
26524         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
26525         DO 310 I=1,MDCY(KC,3)
26526           IDC=I+MDCY(KC,2)-1
26527           IF(MDME(IDC,1).LT.0) GOTO 310
26528           KFC1=PYCOMP(KFDP(IDC,1))
26529           KFC2=PYCOMP(KFDP(IDC,2))
26530           RM1=PMAS(KFC1,1)**2/SH
26531           RM2=PMAS(KFC2,1)**2/SH
26532           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 310
26533           WID2=1D0
26534           IF(I.LE.4) THEN
26535 C...H+/- -> q + qbar'
26536             RM1R=PYMRUN(KFDP(IDC,1),SH)**2/SH
26537             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
26538             WDTP(I)=FAC*3D0*RADC*MAX(0D0,(RM1R*PARU(141)**2+
26539      &      RM2R/PARU(141)**2)*(1D0-RM1R-RM2R)-4D0*RM1R*RM2R)*
26540      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
26541             IF(KFLR.GT.0) THEN
26542               IF(I.EQ.3) WID2=WIDS(6,2)
26543               IF(I.EQ.4) WID2=WIDS(7,3)*WIDS(8,2)
26544             ELSE
26545               IF(I.EQ.3) WID2=WIDS(6,3)
26546               IF(I.EQ.4) WID2=WIDS(7,2)*WIDS(8,3)
26547             ENDIF
26548           ELSEIF(I.LE.8) THEN
26549 C...H+/- -> l+/- + nu
26550             WDTP(I)=FAC*((RM1*PARU(141)**2+RM2/PARU(141)**2)*
26551      &      (1D0-RM1-RM2)-4D0*RM1*RM2)*SQRT(MAX(0D0,
26552      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
26553             IF(KFLR.GT.0) THEN
26554               IF(I.EQ.8) WID2=WIDS(17,3)*WIDS(18,2)
26555             ELSE
26556               IF(I.EQ.8) WID2=WIDS(17,2)*WIDS(18,3)
26557             ENDIF
26558           ELSEIF(I.EQ.9) THEN
26559 C...H+/- -> W+/- + h0.
26560             WDTP(I)=FAC*PARU(195)**2*0.5D0*SQRT(MAX(0D0,
26561      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26562             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
26563             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
26564  
26565 CMRENNA++
26566           ELSE
26567 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
26568             RM10=RM1*SH/PMR**2
26569             RM20=RM2*SH/PMR**2
26570             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
26571             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
26572             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
26573               WFAC=0D0
26574             ELSE
26575               WFAC=WFAC/WFAC0
26576             ENDIF
26577             WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
26578 CMRENNA--
26579             KSGN1=2
26580             IF(KFLS*KFDP(IDC,1).LT.0.AND.KCHG(KFC1,3).EQ.1) KSGN1=3
26581             KSGN2=2
26582             IF(KFLS*KFDP(IDC,2).LT.0.AND.KCHG(KFC2,3).EQ.1) KSGN2=3
26583             WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
26584           ENDIF
26585           WDTP(I)=FUDGE*WDTP(I)
26586           WDTP(0)=WDTP(0)+WDTP(I)
26587           IF(MDME(IDC,1).GT.0) THEN
26588             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26589             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26590             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26591             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26592           ENDIF
26593   310   CONTINUE
26594  
26595       ELSEIF(KFLA.EQ.41) THEN
26596 C...R:
26597         FAC=(AEM/(12D0*XW))*SHR
26598         DO 320 I=1,MDCY(KC,3)
26599           IDC=I+MDCY(KC,2)-1
26600           IF(MDME(IDC,1).LT.0) GOTO 320
26601           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26602           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26603           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 320
26604           WID2=1D0
26605           IF(I.LE.6) THEN
26606 C...R -> q + qbar'
26607             FCOF=3D0*RADC
26608           ELSEIF(I.LE.9) THEN
26609 C...R -> l+ + l'-
26610             FCOF=1D0
26611           ENDIF
26612           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
26613      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26614           IF(KFLR.GT.0) THEN
26615             IF(I.EQ.4) WID2=WIDS(6,3)
26616             IF(I.EQ.5) WID2=WIDS(7,3)
26617             IF(I.EQ.6) WID2=WIDS(6,2)*WIDS(8,3)
26618             IF(I.EQ.9) WID2=WIDS(17,3)
26619           ELSE
26620             IF(I.EQ.4) WID2=WIDS(6,2)
26621             IF(I.EQ.5) WID2=WIDS(7,2)
26622             IF(I.EQ.6) WID2=WIDS(6,3)*WIDS(8,2)
26623             IF(I.EQ.9) WID2=WIDS(17,2)
26624           ENDIF
26625           WDTP(I)=FUDGE*WDTP(I)
26626           WDTP(0)=WDTP(0)+WDTP(I)
26627           IF(MDME(IDC,1).GT.0) THEN
26628             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26629             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26630             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26631             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26632           ENDIF
26633   320   CONTINUE
26634  
26635       ELSEIF(KFLA.EQ.42) THEN
26636 C...LQ (leptoquark).
26637         FAC=(AEM/4D0)*PARU(151)*SHR
26638         DO 330 I=1,MDCY(KC,3)
26639           IDC=I+MDCY(KC,2)-1
26640           IF(MDME(IDC,1).LT.0) GOTO 330
26641           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26642           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26643           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 330
26644           WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26645           WID2=1D0
26646           ILQQ=KFDP(IDC,1)*ISIGN(1,KFLR)
26647           IF(ILQQ.GE.6) WID2=WIDS(ILQQ,2)
26648           IF(ILQQ.LE.-6) WID2=WIDS(-ILQQ,3)
26649           ILQL=KFDP(IDC,2)*ISIGN(1,KFLR)
26650           IF(ILQL.GE.17) WID2=WID2*WIDS(ILQL,2)
26651           IF(ILQL.LE.-17) WID2=WID2*WIDS(-ILQL,3)
26652           WDTP(I)=FUDGE*WDTP(I)
26653           WDTP(0)=WDTP(0)+WDTP(I)
26654           IF(MDME(IDC,1).GT.0) THEN
26655             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26656             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26657             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26658             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26659           ENDIF
26660   330   CONTINUE
26661  
26662 C...UED: kk state width decays : flav: 451 476
26663       ELSEIF(IUED(1).EQ.1.AND.
26664      &       PYCOMP(ABS(KFLA)).GE.KKFLMI.AND.
26665      &       PYCOMP(ABS(KFLA)).LE.KKFLMA) THEN
26666          KCLA=PYCOMP(KFLA)
26667 C...q*_S,q*_D,l*_S,l*_D,gamma*,g*,Z*,W*
26668          RMFLAS=PMAS(KCLA,1)
26669          FACSH=SH/PMAS(KCLA,1)**2
26670          ALPHEM=PYALEM(RMFLAS**2)
26671          ALPHS=PYALPS(RMFLAS**2)
26672 
26673 C...uedcor parameters (alpha_s is calculated at mkk scale)
26674 C...alpha_em is calculated at z pole !
26675          ALPHEM=PARU(101)
26676          FACSH=1.
26677          
26678          DO 1070 I=1,MDCY(KCLA,3)
26679           IDC=I+MDCY(KCLA,2)-1
26680 
26681           IF(MDME(IDC,1).LT.0) GOTO 1070
26682           KFC1=PYCOMP(ABS(KFDP(IDC,1)))
26683           KFC2=PYCOMP(ABS(KFDP(IDC,2)))
26684           RM1=PMAS(KFC1,1)**2/SH
26685           RM2=PMAS(KFC2,1)**2/SH
26686           IF(SQRT(RM1)+SQRT(RM2).GT.1D0)
26687      &    GOTO 1070
26688           WID2=1D0
26689 
26690 C...N.B. RINV=RUED(1)
26691           RMKK=RUED(1)
26692           RMWKK=PMAS(475,1)
26693           RMZKK=PMAS(474,1)
26694           SW2=PARU(102)
26695           CW2=1.-SW2 
26696           KKCLA=KCLA-KKFLMI+1
26697           IF(ABS(KFC1).GE.KKFLMI)KKPART=KFC1
26698           IF(ABS(KFC2).GE.KKFLMI)KKPART=KFC2
26699           IF(KKCLA.LE.6) THEN
26700 C...q*_S -> q + gamma* (in first time sw21=0)
26701              FAC=0.25*ALPHEM*RMFLAS*0.5*CW21/CW2*KCHG(KCLA,1)**2/9.
26702 C...Eventually change the following by enabling a choice of open or closed.
26703 C...Only the gamma_kk channel is open.
26704              IF(MOD(I,2).EQ.0)
26705      +            WDTP(I)=FAC*FKAC2(RMFLAS,RMKK)*FKAC1(RMKK,RMFLAS)**2
26706              WDTP(I)=FACSH*WDTP(I)
26707              WID2=WIDS(473,2)
26708            ELSEIF(KKCLA.GT.6.AND.KKCLA.LE.12)THEN
26709 C...q*_D -> q + Z*/W*
26710               FAC=0.25*ALPHEM*RMFLAS/(4.*SW2)
26711               GAMMAW=FAC*FKAC2(RMFLAS,RMWKK)*FKAC1(RMWKK,RMFLAS)**2
26712               IF(I.EQ.1)THEN
26713 C...q*_D -> q + Z*
26714                  WDTP(I)=0.5*GAMMAW
26715                  WID2=WIDS(474,2)                 
26716               ELSEIF(I.EQ.2)THEN
26717 C...q*_D -> q + W*
26718                  WDTP(I)=GAMMAW
26719                  WID2=WIDS(475,2)                 
26720               ENDIF
26721               WDTP(I)=FACSH*WDTP(I)
26722 C...q*_D -> q + gamma* is closed
26723            ELSEIF(KKCLA.GT.12.AND.KKCLA.LE.21)THEN
26724 C...l*_S,l*_D -> gamma* + l*_S/l*_D(=nu_l,l)
26725               FAC=ALPHEM/4.*RMFLAS/CW2/8.
26726               RMGAKK=PMAS(473,1)
26727               WDTP(I)=FAC*FKAC2(RMFLAS,RMGAKK)*
26728      +                FKAC1(RMGAKK,RMFLAS)**2
26729               WDTP(I)=FACSH*WDTP(I)
26730               WID2=WIDS(473,2)
26731            ELSEIF(KKCLA.EQ.22)THEN
26732               RMQST=PMAS(KKPART,1)
26733               WID2=WIDS(KKPART,2)
26734 C...g* -> q*_S/q*_D + q
26735               FAC=10.*ALPHS/12.*RMFLAS
26736               WDTP(I)=FAC*FKAC1(RMQST,RMFLAS)**2*FKAC2(RMQST,RMFLAS)
26737               WDTP(I)=FACSH*WDTP(I)
26738            ELSEIF(KKCLA.EQ.23)THEN
26739 C...gamma* decays to graviton + gamma : initial value is used
26740              ICHI=IUED(4)/2
26741              WDTP(I)=RMFLAS*(RMFLAS/RUED(2))**(IUED(4)+2)
26742      &            *CHIDEL(ICHI)
26743            ELSEIF(KKCLA.EQ.24)THEN 
26744 C...Z* -> l*_S + l is closed
26745 C...  Z* -> l*_D + l
26746              IF(I.LE.3)GOTO 1070
26747 c...  After closing the channels for a Z* decaying into positively charged 
26748 C...  KK lepton singlets, close the channels for a Z* decaying into negatively 
26749 C...  charged KK lepton singlets + positively charged SM particles
26750              IF(I.GE.10.AND.I.LE.12)GOTO 1070
26751              FAC=3./2.*ALPHEM/24./SW2*RMZKK
26752              RMLST=PMAS(KKPART,1)
26753              WDTP(I)=FAC*FKAC1(RMLST,RMZKK)**2*FKAC2(RMLST,RMZKK)
26754              WDTP(I)=FACSH*WDTP(I)
26755              WID2=WIDS(KKPART,2)                 
26756            ELSEIF(KKCLA.EQ.25)THEN 
26757 C...W* -> l*_D lbar
26758              FAC=3.*ALPHEM/12./SW2*RMWKK
26759              RMLST=PMAS(KKPART,1)
26760              WDTP(I)=FAC*FKAC1(RMLST,RMWKK)**2*FKAC2(RMLST,RMWKK)
26761              WDTP(I)=FACSH*WDTP(I)
26762              WID2=WIDS(KKPART,2)                 
26763            ENDIF
26764           WDTP(0)=WDTP(0)+WDTP(I)
26765           IF(MDME(IDC,1).GT.0) THEN
26766             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26767             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26768             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26769             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26770           ENDIF
26771  1070   CONTINUE
26772         IUEDPR(KKCLA)=1
26773 
26774       ELSEIF(KFLA.EQ.KTECHN+111.OR.KFLA.EQ.KTECHN+221) THEN
26775 C...Techni-pi0 and techni-pi0':
26776         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
26777         DO 340 I=1,MDCY(KC,3)
26778           IDC=I+MDCY(KC,2)-1
26779           IF(MDME(IDC,1).LT.0) GOTO 340
26780           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
26781           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
26782           RM1=PM1**2/SH
26783           RM2=PM2**2/SH
26784           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 340
26785           WID2=1D0
26786 C...pi_tc -> g + g
26787           IF(I.EQ.8) THEN
26788             FACP=(AS/(4D0*PARU(1))*ITCM(1)/RTCM(1))**2
26789      &      /(8D0*PARU(1))*SH*SHR
26790             IF(KFLA.EQ.KTECHN+111) THEN
26791               FACP=FACP*RTCM(9)
26792             ELSE
26793               FACP=FACP*RTCM(10)
26794             ENDIF
26795             WDTP(I)=FACP
26796           ELSE
26797 C...pi_tc -> f + fbar.
26798             FCOF=1D0
26799             IKA=IABS(KFDP(IDC,1))
26800             IF(IKA.LT.10) FCOF=3D0*RADC
26801             HM1=PM1
26802             HM2=PM2
26803             IF(IKA.GE.4.AND.IKA.LE.6) THEN
26804                FCOF=FCOF*RTCM(1+IKA)**2
26805                HM1=PYMRUN(KFDP(IDC,1),SH)
26806                HM2=PYMRUN(KFDP(IDC,2),SH)
26807             ELSEIF(IKA.EQ.15) THEN
26808                FCOF=FCOF*RTCM(8)**2
26809             ENDIF
26810             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
26811      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26812           ENDIF
26813           WDTP(I)=FUDGE*WDTP(I)
26814           WDTP(0)=WDTP(0)+WDTP(I)
26815           IF(MDME(IDC,1).GT.0) THEN
26816             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26817             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26818             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26819             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26820           ENDIF
26821   340   CONTINUE
26822  
26823       ELSEIF(KFLA.EQ.KTECHN+211) THEN
26824 C...pi+_tc
26825         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
26826         DO 350 I=1,MDCY(KC,3)
26827           IDC=I+MDCY(KC,2)-1
26828           IF(MDME(IDC,1).LT.0) GOTO 350
26829           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
26830           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
26831           PM3=0D0
26832           IF(I.EQ.5) PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
26833           RM1=PM1**2/SH
26834           RM2=PM2**2/SH
26835           RM3=PM3**2/SH
26836           IF(SQRT(RM1)+SQRT(RM2)+SQRT(RM3).GT.1D0) GOTO 350
26837           WID2=1D0
26838 C...pi_tc -> f + f'.
26839           FCOF=1D0
26840           IF(IABS(KFDP(IDC,1)).LT.10) FCOF=3D0*RADC
26841 C...pi_tc+ -> W b b~
26842           IF(I.EQ.5.AND.SHR.LT.PMAS(6,1)+PMAS(5,1)) THEN
26843             FCOF=3D0*RADC
26844             XMT2=PMAS(6,1)**2/SH
26845             FACP=FAC/(4D0*PARU(1))*FCOF*XMT2*RTCM(7)**2
26846             KFC3=PYCOMP(KFDP(IDC,3))
26847             CHECK = SQRT(RM1)+SQRT(RM2)+SQRT(RM3)
26848             CHECK = SQRT(RM1)
26849             T0 = (1D0-CHECK**2)*
26850      &      (XMT2*(6D0*XMT2**2+3D0*XMT2*RM1-4D0*RM1**2)-
26851      &      (5D0*XMT2**2+2D0*XMT2*RM1-8D0*RM1**2))/(4D0*XMT2**2)
26852             T1 = (1D0-XMT2)*(RM1-XMT2)*((XMT2**2+XMT2*RM1+4D0*RM1**2)
26853      &      -3D0*XMT2**2*(XMT2+RM1))/(2D0*XMT2**3)
26854             T3 = RM1**2/XMT2**3*(3D0*XMT2-4D0*RM1+4D0*XMT2*RM1)
26855             WDTP(I)=FACP*(T0 + T1*LOG((XMT2-CHECK**2)/(XMT2-1D0))
26856      &      +T3*LOG(CHECK))
26857             IF(KFLR.GT.0) THEN
26858                WID2=WIDS(24,2)
26859             ELSE
26860                WID2=WIDS(24,3)
26861             ENDIF
26862           ELSE
26863             FCOF=1D0
26864             IKA=IABS(KFDP(IDC,1))
26865             IF(IKA.LT.10) FCOF=3D0*RADC
26866             HM1=PM1
26867             HM2=PM2
26868             IF(I.GE.1.AND.I.LE.5) THEN
26869               IF(I.LE.2) THEN
26870                 FCOF=FCOF*RTCM(5)**2
26871               ELSEIF(I.LE.4) THEN
26872                 FCOF=FCOF*RTCM(6)**2
26873               ELSEIF(I.EQ.5) THEN
26874                 FCOF=FCOF*RTCM(7)**2
26875               ENDIF
26876               HM1=PYMRUN(KFDP(IDC,1),SH)
26877               HM2=PYMRUN(KFDP(IDC,2),SH)
26878             ELSEIF(I.EQ.8) THEN
26879               FCOF=FCOF*RTCM(8)**2
26880             ENDIF
26881             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
26882      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26883           ENDIF
26884           WDTP(I)=FUDGE*WDTP(I)
26885           WDTP(0)=WDTP(0)+WDTP(I)
26886           IF(MDME(IDC,1).GT.0) THEN
26887             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26888             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26889             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26890             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26891           ENDIF
26892   350     CONTINUE
26893  
26894       ELSEIF(KFLA.EQ.KTECHN+331) THEN
26895 C...Techni-eta.
26896         FAC=(SH/PARP(46)**2)*SHR
26897         DO 360 I=1,MDCY(KC,3)
26898           IDC=I+MDCY(KC,2)-1
26899           IF(MDME(IDC,1).LT.0) GOTO 360
26900           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26901           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26902           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 360
26903           WID2=1D0
26904           IF(I.LE.2) THEN
26905             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))/(4D0*PARU(1))
26906             IF(I.EQ.2) WID2=WIDS(6,1)
26907           ELSE
26908             WDTP(I)=FAC*5D0*AS**2/(96D0*PARU(1)**3)
26909           ENDIF
26910           WDTP(I)=FUDGE*WDTP(I)
26911           WDTP(0)=WDTP(0)+WDTP(I)
26912           IF(MDME(IDC,1).GT.0) THEN
26913             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26914             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26915             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26916             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26917           ENDIF
26918   360   CONTINUE
26919  
26920       ELSEIF(KFLA.EQ.KTECHN+113) THEN
26921 C...Techni-rho0:
26922         ALPRHT=2.16D0*(3D0/ITCM(1))
26923         FAC=(ALPRHT/12D0)*SHR
26924         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
26925         SQMZ=PMAS(23,1)**2
26926         SQMW=PMAS(24,1)**2
26927         SHP=SH
26928         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
26929         GMMZ=SHR*WDTPP(0)
26930         XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
26931         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26932         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26933         DO 370 I=1,MDCY(KC,3)
26934           IDC=I+MDCY(KC,2)-1
26935           IF(MDME(IDC,1).LT.0) GOTO 370
26936           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26937           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26938           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 370
26939           WID2=1D0
26940           IF(I.EQ.1) THEN
26941 C...rho_tc0 -> W+ + W-.
26942 C... Multiplied by  2 for W^+_T W^-_L + W^+_L W^-_T  
26943             WDTP(I)=FAC*RTCM(3)**4*
26944      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26945      &      2D0*AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
26946      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
26947      &      RTCM(3)**2/4D0/XW/24D0/RTCM(13)**2*SHR**3
26948             WID2=WIDS(24,1)
26949           ELSEIF(I.EQ.2) THEN
26950 C...rho_tc0 -> W+ + pi_tc-.
26951 C... Multiplied by  2 for pi_T^+ W^-_T + pi_T^- W^+_T  
26952             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
26953      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26954      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
26955      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*RM1)*
26956      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
26957             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
26958           ELSEIF(I.EQ.3) THEN
26959 C...rho_tc0 -> pi_tc+ + W-.
26960             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
26961      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26962      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
26963      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*RM2)*
26964      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
26965             WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(24,3)
26966           ELSEIF(I.EQ.4) THEN
26967 C...rho_tc0 -> pi_tc+ + pi_tc-.
26968             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
26969      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26970             WID2=WIDS(PYCOMP(KTECHN+211),1)
26971           ELSEIF(I.EQ.5) THEN
26972 C...rho_tc0 -> gamma + pi_tc0
26973             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26974      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
26975      &      SHR**3
26976             WID2=WIDS(PYCOMP(KTECHN+111),2)
26977           ELSEIF(I.EQ.6) THEN
26978 C...rho_tc0 -> gamma + pi_tc0'
26979             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26980      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*SHR**3
26981             WID2=WIDS(PYCOMP(KTECHN+221),2)
26982           ELSEIF(I.EQ.7) THEN
26983 C...rho_tc0 -> Z0 + pi_tc0
26984             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26985      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
26986      &      XW/XW1*SHR**3
26987             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
26988           ELSEIF(I.EQ.8) THEN
26989 C...rho_tc0 -> Z0 + pi_tc0'
26990             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26991      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
26992      &      XW/XW1*SHR**3
26993             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
26994           ELSEIF(I.EQ.9) THEN
26995 C...rho_tc0 -> gamma + Z0
26996             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26997      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
26998             WID2=WIDS(23,2)
26999           ELSEIF(I.EQ.10) THEN
27000 C...rho_tc0 -> Z0 + Z0
27001             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27002      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2*XW/XW1/24D0/RTCM(12)**2*
27003      &      SHR**3
27004             WID2=WIDS(23,1)
27005           ELSE
27006 C...rho_tc0 -> f + fbar.
27007             WID2=1D0
27008             IF(I.LE.18) THEN
27009               IA=I-10
27010               FCOF=3D0*RADC
27011               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
27012             ELSE
27013               IA=I-6
27014               FCOF=1D0
27015               IF(IA.GE.17) WID2=WIDS(IA,1)
27016             ENDIF
27017             EI=KCHG(IA,1)/3D0
27018             AI=SIGN(1D0,EI+0.1D0)
27019             VI=AI-4D0*EI*XWV
27020             VALI=0.5D0*(VI+AI)
27021             VARI=0.5D0*(VI-AI)
27022             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
27023      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
27024      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
27025      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
27026           ENDIF
27027           WDTP(I)=FUDGE*WDTP(I)
27028           WDTP(0)=WDTP(0)+WDTP(I)
27029           IF(MDME(IDC,1).GT.0) THEN
27030             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27031             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27032             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27033             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27034           ENDIF
27035   370   CONTINUE
27036  
27037       ELSEIF(KFLA.EQ.KTECHN+213) THEN
27038 C...Techni-rho+/-:
27039         ALPRHT=2.16D0*(3D0/ITCM(1))
27040         FAC=(ALPRHT/12D0)*SHR
27041         SQMZ=PMAS(23,1)**2
27042         SQMW=PMAS(24,1)**2
27043         SHP=SH
27044         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
27045         GMMW=SHR*WDTPP(0)
27046         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
27047      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
27048         DO 380 I=1,MDCY(KC,3)
27049           IDC=I+MDCY(KC,2)-1
27050           IF(MDME(IDC,1).LT.0) GOTO 380
27051           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27052           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27053           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 380
27054           WID2=1D0
27055           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27056 c            WDTP(I)=AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
27057 c     &      /3D0*SHR**3
27058           IF(I.EQ.1) THEN
27059 C...rho_tc+ -> W+ + Z0.
27060 C......Goldstone
27061             WDTP(I)=FAC*RTCM(3)**4*
27062      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
27063             VA2=RTCM(3)**2*(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(12)**2
27064             AA2=RTCM(3)**2/RTCM(13)**2/4D0/XW/XW1
27065 C......W_L Z_T
27066             WDTP(I)=WDTP(I)+AEM*PCM*(AA2*(PCM**2+1.5D0*RM2)+PCM**2*VA2)
27067      &      /3D0*SHR**3
27068             VA2=0D0
27069             AA2=RTCM(3)**2/RTCM(13)**2/4D0/XW
27070 C......W_T Z_L
27071             WDTP(I)=WDTP(I)+AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
27072      &      /3D0*SHR**3
27073             IF(KFLR.GT.0) THEN
27074               WID2=WIDS(24,2)*WIDS(23,2)
27075             ELSE
27076               WID2=WIDS(24,3)*WIDS(23,2)
27077             ENDIF
27078           ELSEIF(I.EQ.2) THEN
27079 C...rho_tc+ -> W+ + pi_tc0.
27080             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
27081      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
27082      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
27083      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
27084      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
27085             IF(KFLR.GT.0) THEN
27086               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+111),2)
27087             ELSE
27088               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+111),2)
27089             ENDIF
27090           ELSEIF(I.EQ.3) THEN
27091 C...rho_tc+ -> pi_tc+ + Z0.
27092             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
27093      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
27094      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
27095      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMZ/SH)*
27096      &      (1D0-RTCM(3)**2)/4D0/XW/XW1/24D0/RTCM(13)**2*SHR**3+
27097      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27098      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
27099      &      SHR**3*XW/XW1
27100             IF(KFLR.GT.0) THEN
27101               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(23,2)
27102             ELSE
27103               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(23,2)
27104             ENDIF
27105           ELSEIF(I.EQ.4) THEN
27106 C...rho_tc+ -> pi_tc+ + pi_tc0.
27107             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
27108      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
27109             IF(KFLR.GT.0) THEN
27110               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(PYCOMP(KTECHN+111),2)
27111             ELSE
27112               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(PYCOMP(KTECHN+111),2)
27113             ENDIF
27114           ELSEIF(I.EQ.5) THEN
27115 C...rho_tc+ -> pi_tc+ + gamma
27116             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27117      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
27118      &      SHR**3
27119             IF(KFLR.GT.0) THEN
27120               WID2=WIDS(PYCOMP(KTECHN+211),2)
27121             ELSE
27122               WID2=WIDS(PYCOMP(KTECHN+211),3)
27123             ENDIF
27124           ELSEIF(I.EQ.6) THEN
27125 C...rho_tc+ -> W+ + pi_tc0'
27126             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27127      &      (1D0-RTCM(4)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3
27128             IF(KFLR.GT.0) THEN
27129               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+221),2)
27130             ELSE
27131               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+221),2)
27132             ENDIF
27133           ELSEIF(I.EQ.7) THEN
27134 C...rho_tc+ -> W+ + gamma
27135             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27136      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
27137             IF(KFLR.GT.0) THEN
27138               WID2=WIDS(24,2)
27139             ELSE
27140               WID2=WIDS(24,3)
27141             ENDIF
27142           ELSE
27143 C...rho_tc+ -> f + fbar'.
27144             IA=I-7
27145             WID2=1D0
27146             IF(IA.LE.16) THEN
27147               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
27148               IF(KFLR.GT.0) THEN
27149                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
27150                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
27151                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
27152               ELSE
27153                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
27154                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
27155                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
27156               ENDIF
27157             ELSE
27158               FCOF=1D0
27159               IF(KFLR.GT.0) THEN
27160                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
27161               ELSE
27162                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
27163               ENDIF
27164             ENDIF
27165             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
27166      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27167           ENDIF
27168           WDTP(I)=FUDGE*WDTP(I)
27169           WDTP(0)=WDTP(0)+WDTP(I)
27170           IF(MDME(IDC,1).GT.0) THEN
27171             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27172             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27173             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27174             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27175           ENDIF
27176   380   CONTINUE
27177  
27178       ELSEIF(KFLA.EQ.KTECHN+223) THEN
27179 C...Techni-omega:
27180         ALPRHT=2.16D0*(3D0/ITCM(1))
27181         FAC=(ALPRHT/12D0)*SHR
27182         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR*(2D0*RTCM(2)-1D0)**2
27183         SQMZ=PMAS(23,1)**2
27184         SHP=SH
27185         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
27186         GMMZ=SHR*WDTPP(0)
27187         BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
27188         BWZI=-(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
27189         DO 390 I=1,MDCY(KC,3)
27190           IDC=I+MDCY(KC,2)-1
27191           IF(MDME(IDC,1).LT.0) GOTO 390
27192           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27193           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27194           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 390
27195           WID2=1D0
27196           IF(I.EQ.1) THEN
27197 C...omega_tc0 -> gamma + pi_tc0.
27198             WDTP(I)=AEM/24D0/RTCM(12)**2*(1D0-RTCM(3)**2)*
27199      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*SHR**3
27200             WID2=WIDS(PYCOMP(KTECHN+111),2)
27201           ELSEIF(I.EQ.2) THEN
27202 C...omega_tc0 -> Z0 + pi_tc0
27203             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27204      &      (1D0-RTCM(3)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
27205      &      XW/XW1*SHR**3
27206             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
27207           ELSEIF(I.EQ.3) THEN
27208 C...omega_tc0 -> gamma + pi_tc0'
27209             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27210      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
27211      &      SHR**3
27212             WID2=WIDS(PYCOMP(KTECHN+221),2)
27213           ELSEIF(I.EQ.4) THEN
27214 C...omega_tc0 -> Z0 + pi_tc0'
27215             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27216      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
27217      &      XW/XW1*SHR**3
27218             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
27219           ELSEIF(I.EQ.5) THEN
27220 C...omega_tc0 -> W+ + pi_tc-
27221             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27222      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
27223      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
27224      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
27225             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
27226           ELSEIF(I.EQ.6) THEN
27227 C...omega_tc0 -> pi_tc+ + W-
27228             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27229      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
27230      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
27231      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
27232             WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
27233           ELSEIF(I.EQ.7) THEN
27234 C...omega_tc0 -> W+ + W-.
27235 C... Multiplied by  2 for W^+_T W^-_L + W^+_L W^-_T  
27236             WDTP(I)=FAC*RTCM(3)**4*RTCM(11)**2*
27237      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
27238      &      2D0*AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27239      &      RTCM(3)**2/4D0/XW/24D0/RTCM(12)**2*SHR**3
27240             WID2=WIDS(24,1)
27241           ELSEIF(I.EQ.8) THEN
27242 C...omega_tc0 -> pi_tc+ + pi_tc-.
27243             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*RTCM(11)**2*
27244      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
27245             WID2=WIDS(PYCOMP(KTECHN+211),1)
27246 C...omega_tc0 -> gamma + Z0
27247           ELSEIF(I.EQ.9) THEN
27248             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27249      &      RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
27250             WID2=WIDS(23,2)
27251 C...omega_tc0 -> Z0 + Z0
27252           ELSEIF(I.EQ.10) THEN
27253             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
27254      &      RTCM(3)**2*(XW1-XW)**2/XW/XW1/4D0
27255      &      /24D0/RTCM(12)**2*SHR**3
27256             WID2=WIDS(23,1)
27257           ELSE
27258 C...omega_tc0 -> f + fbar.
27259             WID2=1D0
27260             IF(I.LE.18) THEN
27261               IA=I-10
27262               FCOF=3D0*RADC
27263               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
27264             ELSE
27265               IA=I-8
27266               FCOF=1D0
27267               IF(IA.GE.17) WID2=WIDS(IA,1)
27268             ENDIF
27269             EI=KCHG(IA,1)/3D0
27270             AI=SIGN(1D0,EI+0.1D0)
27271             VI=AI-4D0*EI*XWV
27272             VALI=-0.5D0*(VI+AI)
27273             VARI=-0.5D0*(VI-AI)
27274             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
27275      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
27276      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
27277      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
27278           ENDIF
27279           WDTP(I)=FUDGE*WDTP(I)
27280           WDTP(0)=WDTP(0)+WDTP(I)
27281           IF(MDME(IDC,1).GT.0) THEN
27282             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27283             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27284             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27285             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27286           ENDIF
27287   390   CONTINUE
27288  
27289 C.....V8 -> quark anti-quark
27290       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
27291         FAC=AS/6D0*SHR
27292         TANT3=RTCM(21)
27293         IF(ITCM(2).EQ.0) THEN
27294           IMDL=1
27295         ELSEIF(ITCM(2).EQ.1) THEN
27296           IMDL=2
27297         ENDIF
27298         DO 400 I=1,MDCY(KC,3)
27299           IDC=I+MDCY(KC,2)-1
27300           IF(MDME(IDC,1).LT.0) GOTO 400
27301           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
27302           RM1=PM1**2/SH
27303           IF(RM1.GT.0.25D0) GOTO 400
27304           WID2=1D0
27305           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
27306             FMIX=1D0/TANT3**2
27307           ELSE
27308             FMIX=TANT3**2
27309           ENDIF
27310           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
27311           IF(I.EQ.6) WID2=WIDS(6,1)
27312           WDTP(I)=FUDGE*WDTP(I)
27313           WDTP(0)=WDTP(0)+WDTP(I)
27314           IF(MDME(IDC,1).GT.0) THEN
27315             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27316             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27317             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27318             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27319           ENDIF
27320   400   CONTINUE
27321  
27322       ELSEIF(KFLA.EQ.KTECHN+100111.OR.KFLA.EQ.KTECHN+200111) THEN
27323         FAC=(1D0/(4D0*PARU(1)*RTCM(1)**2))*SHR
27324         CLEBF=0D0
27325         DO 410 I=1,MDCY(KC,3)
27326           IDC=I+MDCY(KC,2)-1
27327           IF(MDME(IDC,1).LT.0) GOTO 410
27328           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27329           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27330           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 410
27331           WID2=1D0
27332 C...pi_tc -> g + g
27333           IF(I.EQ.7) THEN
27334             IF(KFLA.EQ.KTECHN+100111) THEN
27335               CLEBG=4D0/3D0
27336             ELSE
27337               CLEBG=5D0/3D0
27338             ENDIF
27339             FACP=(AS/(8D0*PARU(1))*ITCM(1)/RTCM(1))**2
27340      &      /(2D0*PARU(1))*SH*SHR*CLEBG
27341             WDTP(I)=FACP
27342           ELSE
27343 C...pi_tc -> f + fbar.
27344             IF(I.EQ.6) WID2=WIDS(6,1)
27345             FCOF=1D0
27346             IKA=IABS(KFDP(IDC,1))
27347             IF(IKA.LT.10) FCOF=3D0*RADC
27348             HM1=PYMRUN(KFDP(IDC,1),SH)
27349             WDTP(I)=FAC*FCOF*HM1**2*CLEBF*
27350      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27351           ENDIF
27352           WDTP(I)=FUDGE*WDTP(I)
27353           WDTP(0)=WDTP(0)+WDTP(I)
27354           IF(MDME(IDC,1).GT.0) THEN
27355             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27356             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27357             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27358             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27359           ENDIF
27360   410   CONTINUE
27361  
27362       ELSEIF(KFLA.GE.KTECHN+100113.AND.KFLA.LE.KTECHN+400113) THEN
27363         FAC=AS/6D0*SHR
27364         ALPRHT=2.16D0*(3D0/ITCM(1))
27365         TANT3=RTCM(21)
27366         SIN2T=2D0*TANT3/(TANT3**2+1D0)
27367         SINT3=TANT3/SQRT(TANT3**2+1D0)
27368         CSXPP=RTCM(22)
27369         RM82=RTCM(27)**2
27370         X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
27371      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)
27372         X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
27373      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)
27374         X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
27375      &  SINT3**2)*2D0
27376         X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
27377      &  SINT3**2)*2D0
27378         CALL PYWIDX(KTECHN+100021,SH,WDTPP,WDTEP)
27379  
27380         IF(WDTPP(0).GT.RTCM(33)*SHR) WDTPP(0)=RTCM(33)*SHR
27381         GMV8=SHR*WDTPP(0)
27382         RMV8=PMAS(PYCOMP(KTECHN+100021),1)
27383         FV8RE=SH*(SH-RMV8**2)/((SH-RMV8**2)**2+GMV8**2)
27384         FV8IM=SH*GMV8/((SH-RMV8**2)**2+GMV8**2)
27385         IF(ITCM(2).EQ.0) THEN
27386           IMDL=1
27387         ELSE
27388           IMDL=2
27389         ENDIF
27390         DO 420 I=1,MDCY(KC,3)
27391           IF(I.EQ.7.AND.(KFLA.EQ.KTECHN+200113.OR.
27392      &    KFLA.EQ.KTECHN+300113)) GOTO 420
27393           IDC=I+MDCY(KC,2)-1
27394           IF(MDME(IDC,1).LT.0) GOTO 420
27395           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27396           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27397           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 420
27398           WID2=1D0
27399           IF(I.LE.6) THEN
27400             IF(I.EQ.6) WID2=WIDS(6,1)
27401             XIG=1D0
27402             IF(KFLA.EQ.KTECHN+200113) THEN
27403               XIG=0D0
27404               XIJ=X12
27405             ELSEIF(KFLA.EQ.KTECHN+300113) THEN
27406               XIG=0D0
27407               XIJ=X21
27408             ELSEIF(KFLA.EQ.KTECHN+100113) THEN
27409               XIJ=X11
27410             ELSE
27411               XIJ=X22
27412             ENDIF
27413             IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
27414               FMIX=1D0/TANT3/SIN2T
27415             ELSE
27416               FMIX=-TANT3/SIN2T
27417             ENDIF
27418             XFAC=(XIG+FMIX*XIJ*FV8RE)**2+(FMIX*XIJ*FV8IM)**2
27419             WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*AS/ALPRHT*XFAC
27420           ELSEIF(I.EQ.7) THEN
27421             WDTP(I)=SHR*AS**2/(4D0*ALPRHT)
27422           ELSEIF(KFLA.EQ.KTECHN+400113.AND.I.LE.9) THEN
27423             PSH=SHR*(1D0-RM1)/2D0
27424             WDTP(I)=AS/9D0*PSH**3/RM82
27425             IF(I.EQ.8) THEN
27426               WDTP(I)=2D0*WDTP(I)*CSXPP**2
27427               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
27428             ELSE
27429               WDTP(I)=5D0*WDTP(I)
27430               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
27431             ENDIF
27432           ENDIF
27433           WDTP(I)=FUDGE*WDTP(I)
27434           WDTP(0)=WDTP(0)+WDTP(I)
27435           IF(MDME(IDC,1).GT.0) THEN
27436             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27437             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27438             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27439             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27440           ENDIF
27441   420   CONTINUE
27442  
27443       ELSEIF(KFLA.EQ.KEXCIT+1) THEN
27444 C...d* excited quark.
27445         FAC=(SH/RTCM(41)**2)*SHR
27446         DO 430 I=1,MDCY(KC,3)
27447           IDC=I+MDCY(KC,2)-1
27448           IF(MDME(IDC,1).LT.0) GOTO 430
27449           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27450           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27451           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 430
27452           WID2=1D0
27453           IF(I.EQ.1) THEN
27454 C...d* -> g + d.
27455             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
27456             WID2=1D0
27457           ELSEIF(I.EQ.2) THEN
27458 C...d* -> gamma + d.
27459             QF=-RTCM(43)/2D0+RTCM(44)/6D0
27460             WDTP(I)=FAC*AEM*QF**2/4D0
27461             WID2=1D0
27462           ELSEIF(I.EQ.3) THEN
27463 C...d* -> Z0 + d.
27464             QF=-RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
27465             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
27466      &      (1D0-RM1)**2*(2D0+RM1)
27467             WID2=WIDS(23,2)
27468           ELSEIF(I.EQ.4) THEN
27469 C...d* -> W- + u.
27470             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
27471      &      (1D0-RM1)**2*(2D0+RM1)
27472             IF(KFLR.GT.0) WID2=WIDS(24,3)
27473             IF(KFLR.LT.0) WID2=WIDS(24,2)
27474           ENDIF
27475           WDTP(I)=FUDGE*WDTP(I)
27476           WDTP(0)=WDTP(0)+WDTP(I)
27477           IF(MDME(IDC,1).GT.0) THEN
27478             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27479             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27480             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27481             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27482           ENDIF
27483   430   CONTINUE
27484  
27485       ELSEIF(KFLA.EQ.KEXCIT+2) THEN
27486 C...u* excited quark.
27487         FAC=(SH/RTCM(41)**2)*SHR
27488         DO 440 I=1,MDCY(KC,3)
27489           IDC=I+MDCY(KC,2)-1
27490           IF(MDME(IDC,1).LT.0) GOTO 440
27491           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27492           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27493           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 440
27494           WID2=1D0
27495           IF(I.EQ.1) THEN
27496 C...u* -> g + u.
27497             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
27498             WID2=1D0
27499           ELSEIF(I.EQ.2) THEN
27500 C...u* -> gamma + u.
27501             QF=RTCM(43)/2D0+RTCM(44)/6D0
27502             WDTP(I)=FAC*AEM*QF**2/4D0
27503             WID2=1D0
27504           ELSEIF(I.EQ.3) THEN
27505 C...u* -> Z0 + u.
27506             QF=RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
27507             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
27508      &      (1D0-RM1)**2*(2D0+RM1)
27509             WID2=WIDS(23,2)
27510           ELSEIF(I.EQ.4) THEN
27511 C...u* -> W+ + d.
27512             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
27513      &      (1D0-RM1)**2*(2D0+RM1)
27514             IF(KFLR.GT.0) WID2=WIDS(24,2)
27515             IF(KFLR.LT.0) WID2=WIDS(24,3)
27516           ENDIF
27517           WDTP(I)=FUDGE*WDTP(I)
27518           WDTP(0)=WDTP(0)+WDTP(I)
27519           IF(MDME(IDC,1).GT.0) THEN
27520             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27521             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27522             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27523             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27524           ENDIF
27525   440   CONTINUE
27526  
27527       ELSEIF(KFLA.EQ.KEXCIT+11) THEN
27528 C...e* excited lepton.
27529         FAC=(SH/RTCM(41)**2)*SHR
27530         DO 450 I=1,MDCY(KC,3)
27531           IDC=I+MDCY(KC,2)-1
27532           IF(MDME(IDC,1).LT.0) GOTO 450
27533           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27534           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27535           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 450
27536           WID2=1D0
27537           IF(I.EQ.1) THEN
27538 C...e* -> gamma + e.
27539             QF=-RTCM(43)/2D0-RTCM(44)/2D0
27540             WDTP(I)=FAC*AEM*QF**2/4D0
27541             WID2=1D0
27542           ELSEIF(I.EQ.2) THEN
27543 C...e* -> Z0 + e.
27544             QF=-RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
27545             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
27546      &      (1D0-RM1)**2*(2D0+RM1)
27547             WID2=WIDS(23,2)
27548           ELSEIF(I.EQ.3) THEN
27549 C...e* -> W- + nu.
27550             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
27551      &      (1D0-RM1)**2*(2D0+RM1)
27552             IF(KFLR.GT.0) WID2=WIDS(24,3)
27553             IF(KFLR.LT.0) WID2=WIDS(24,2)
27554           ENDIF
27555           WDTP(I)=FUDGE*WDTP(I)
27556           WDTP(0)=WDTP(0)+WDTP(I)
27557           IF(MDME(IDC,1).GT.0) THEN
27558             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27559             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27560             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27561             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27562           ENDIF
27563   450   CONTINUE
27564  
27565       ELSEIF(KFLA.EQ.KEXCIT+12) THEN
27566 C...nu*_e excited neutrino.
27567         FAC=(SH/RTCM(41)**2)*SHR
27568         DO 460 I=1,MDCY(KC,3)
27569           IDC=I+MDCY(KC,2)-1
27570           IF(MDME(IDC,1).LT.0) GOTO 460
27571           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27572           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27573           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 460
27574           WID2=1D0
27575           IF(I.EQ.1) THEN
27576 C...nu*_e -> Z0 + nu*_e.
27577             QF=RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
27578             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
27579      &      (1D0-RM1)**2*(2D0+RM1)
27580             WID2=WIDS(23,2)
27581           ELSEIF(I.EQ.2) THEN
27582 C...nu*_e -> W+ + e.
27583             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
27584      &      (1D0-RM1)**2*(2D0+RM1)
27585             IF(KFLR.GT.0) WID2=WIDS(24,2)
27586             IF(KFLR.LT.0) WID2=WIDS(24,3)
27587           ENDIF
27588           WDTP(I)=FUDGE*WDTP(I)
27589           WDTP(0)=WDTP(0)+WDTP(I)
27590           IF(MDME(IDC,1).GT.0) THEN
27591             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27592             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27593             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27594             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27595           ENDIF
27596   460   CONTINUE
27597  
27598       ELSEIF(KFLA.EQ.KDIMEN+39) THEN
27599 C...G* (graviton resonance):
27600         FAC=(PARP(50)**2/PARU(1))*SHR
27601         DO 470 I=1,MDCY(KC,3)
27602           IDC=I+MDCY(KC,2)-1
27603           IF(MDME(IDC,1).LT.0) GOTO 470
27604           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27605           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27606           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 470
27607           WID2=1D0
27608           IF(I.LE.8) THEN
27609 C...G* -> q + qbar
27610             FCOF=3D0*RADC
27611             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
27612      &      PYHFTH(SH,SH*RM1,1D0)
27613             WDTP(I)=FAC*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
27614      &      (1D0+8D0*RM1/3D0)/320D0
27615             IF(I.EQ.6) WID2=WIDS(6,1)
27616             IF(I.EQ.7.OR.I.EQ.8) WID2=WIDS(I,1)
27617           ELSEIF(I.LE.16) THEN
27618 C...G* -> l+ + l-, nu + nubar
27619             FCOF=1D0
27620             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
27621      &      (1D0+8D0*RM1/3D0)/320D0
27622             IF(I.EQ.15.OR.I.EQ.16) WID2=WIDS(2+I,1)
27623           ELSEIF(I.EQ.17) THEN
27624 C...G* -> g + g.
27625             WDTP(I)=FAC/20D0
27626           ELSEIF(I.EQ.18) THEN
27627 C...G* -> gamma + gamma.
27628             WDTP(I)=FAC/160D0
27629           ELSEIF(I.EQ.19) THEN
27630 C...G* -> Z0 + Z0.
27631             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
27632      &      14D0*RM1/3D0+4D0*RM1**2)/160D0
27633             WID2=WIDS(23,1)
27634           ELSEIF(I.EQ.20) THEN
27635 C...G* -> W+ + W-.
27636             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
27637      &      14D0*RM1/3D0+4D0*RM1**2)/80D0
27638             WID2=WIDS(24,1)
27639           ENDIF
27640           WDTP(I)=FUDGE*WDTP(I)
27641           WDTP(0)=WDTP(0)+WDTP(I)
27642           IF(MDME(IDC,1).GT.0) THEN
27643             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27644             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27645             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27646             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27647           ENDIF
27648   470   CONTINUE
27649  
27650       ELSEIF(KFLA.EQ.9900012.OR.KFLA.EQ.9900014.OR.KFLA.EQ.9900016) THEN
27651 C...nu_eR, nu_muR, nu_tauR: righthanded Majorana neutrinos.
27652         PMWR=MAX(1.001D0*SHR,PMAS(PYCOMP(9900024),1))
27653         FAC=(AEM**2/(768D0*PARU(1)*XW**2))*SHR**5/PMWR**4
27654         DO 480 I=1,MDCY(KC,3)
27655           IDC=I+MDCY(KC,2)-1
27656           IF(MDME(IDC,1).LT.0) GOTO 480
27657           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
27658           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
27659           PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
27660           IF(PM1+PM2+PM3.GE.SHR) GOTO 480
27661           WID2=1D0
27662           IF(I.LE.9) THEN
27663 C...nu_lR -> l- qbar q'
27664             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
27665             IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
27666           ELSEIF(I.LE.18) THEN
27667 C...nu_lR -> l+ q qbar'
27668             FCOF=3D0*RADC*VCKM((I-10)/3+1,MOD(I-10,3)+1)
27669             IF(MOD(I-9,3).EQ.0) WID2=WIDS(6,3)
27670           ELSE
27671 C...nu_lR -> l- l'+ nu_lR' + charge conjugate.
27672             FCOF=1D0
27673             WID2=WIDS(PYCOMP(KFDP(IDC,3)),2)
27674           ENDIF
27675           X=(PM1+PM2+PM3)/SHR
27676           FX=1D0-8D0*X**2+8D0*X**6-X**8-24D0*X**4*LOG(X)
27677           Y=(SHR/PMWR)**2
27678           FY=(12D0*(1D0-Y)*LOG(1D0-Y)+12D0*Y-6D0*Y**2-2D0*Y**3)/Y**4
27679           WDTP(I)=FAC*FCOF*FX*FY
27680           WDTP(I)=FUDGE*WDTP(I)
27681           WDTP(0)=WDTP(0)+WDTP(I)
27682           IF(MDME(IDC,1).GT.0) THEN
27683             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27684             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27685             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27686             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27687           ENDIF
27688   480   CONTINUE
27689  
27690       ELSEIF(KFLA.EQ.9900023) THEN
27691 C...Z_R0:
27692         FAC=(AEM/(48D0*XW*XW1*(1D0-2D0*XW)))*SHR
27693         DO 490 I=1,MDCY(KC,3)
27694           IDC=I+MDCY(KC,2)-1
27695           IF(MDME(IDC,1).LT.0) GOTO 490
27696           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27697           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27698           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 490
27699           WID2=1D0
27700           SYMMET=1D0
27701           IF(I.LE.6) THEN
27702 C...Z_R0 -> q + qbar
27703             EF=KCHG(I,1)/3D0
27704             AF=SIGN(1D0,EF+0.1D0)*(1D0-2D0*XW)
27705             VF=SIGN(1D0,EF+0.1D0)-4D0*EF*XW
27706             FCOF=3D0*RADC
27707             IF(I.EQ.6) WID2=WIDS(6,1)
27708           ELSEIF(I.EQ.7.OR.I.EQ.10.OR.I.EQ.13) THEN
27709 C...Z_R0 -> l+ + l-
27710             AF=-(1D0-2D0*XW)
27711             VF=-1D0+4D0*XW
27712             FCOF=1D0
27713           ELSEIF(I.EQ.8.OR.I.EQ.11.OR.I.EQ.14) THEN
27714 C...Z0 -> nu_L + nu_Lbar, assumed Majorana.
27715             AF=-2D0*XW
27716             VF=0D0
27717             FCOF=1D0
27718             SYMMET=0.5D0
27719           ELSEIF(I.LE.15) THEN
27720 C...Z0 -> nu_R + nu_R, assumed Majorana.
27721             AF=2D0*XW1
27722             VF=0D0
27723             FCOF=1D0
27724             WID2=WIDS(PYCOMP(KFDP(IDC,1)),1)
27725             SYMMET=0.5D0
27726           ENDIF
27727           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
27728      &    SQRT(MAX(0D0,1D0-4D0*RM1))*SYMMET
27729           WDTP(I)=FUDGE*WDTP(I)
27730           WDTP(0)=WDTP(0)+WDTP(I)
27731           IF(MDME(IDC,1).GT.0) THEN
27732             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27733             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27734             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27735             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27736           ENDIF
27737   490   CONTINUE
27738  
27739       ELSEIF(KFLA.EQ.9900024) THEN
27740 C...W_R+/-:
27741         FAC=(AEM/(24D0*XW))*SHR
27742         DO 500 I=1,MDCY(KC,3)
27743           IDC=I+MDCY(KC,2)-1
27744           IF(MDME(IDC,1).LT.0) GOTO 500
27745           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27746           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27747           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 500
27748           WID2=1D0
27749           IF(I.LE.9) THEN
27750 C...W_R+/- -> q + qbar'
27751             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
27752             IF(KFLR.GT.0) THEN
27753               IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
27754             ELSE
27755               IF(MOD(I,3).EQ.0) WID2=WIDS(6,3)
27756             ENDIF
27757           ELSEIF(I.LE.12) THEN
27758 C...W_R+/- -> l+/- + nu_R
27759             FCOF=1D0
27760           ENDIF
27761           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
27762      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27763           WDTP(I)=FUDGE*WDTP(I)
27764           WDTP(0)=WDTP(0)+WDTP(I)
27765           IF(MDME(IDC,1).GT.0) THEN
27766             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27767             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27768             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27769             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27770           ENDIF
27771   500  CONTINUE
27772  
27773       ELSEIF(KFLA.EQ.9900041) THEN
27774 C...H_L++/--:
27775         FAC=(1D0/(8D0*PARU(1)))*SHR
27776         DO 510 I=1,MDCY(KC,3)
27777           IDC=I+MDCY(KC,2)-1
27778           IF(MDME(IDC,1).LT.0) GOTO 510
27779           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27780           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27781           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 510
27782           WID2=1D0
27783           IF(I.LE.6) THEN
27784 C...H_L++/-- -> l+/- + l'+/-
27785             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
27786      &      (IABS(KFDP(IDC,2))-9)/2)**2
27787             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
27788           ELSEIF(I.EQ.7) THEN
27789 C...H_L++/-- -> W_L+/- + W_L+/-
27790             FCOF=0.5D0*PARP(190)**4*PARP(192)**2/PMAS(24,1)**2*
27791      &      (3D0*RM1+0.25D0/RM1-1D0)
27792             WID2=WIDS(24,4+(1-KFLS)/2)
27793           ENDIF
27794           WDTP(I)=FAC*FCOF*
27795      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27796           WDTP(I)=FUDGE*WDTP(I)
27797           WDTP(0)=WDTP(0)+WDTP(I)
27798           IF(MDME(IDC,1).GT.0) THEN
27799             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27800             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27801             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27802             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27803           ENDIF
27804   510   CONTINUE
27805  
27806       ELSEIF(KFLA.EQ.9900042) THEN
27807 C...H_R++/--:
27808         FAC=(1D0/(8D0*PARU(1)))*SHR
27809         DO 520 I=1,MDCY(KC,3)
27810           IDC=I+MDCY(KC,2)-1
27811           IF(MDME(IDC,1).LT.0) GOTO 520
27812           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27813           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27814           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 520
27815           WID2=1D0
27816           IF(I.LE.6) THEN
27817 C...H_R++/-- -> l+/- + l'+/-
27818             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
27819      &      (IABS(KFDP(IDC,2))-9)/2)**2
27820             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
27821           ELSEIF(I.EQ.7) THEN
27822 C...H_R++/-- -> W_R+/- + W_R+/-
27823             FCOF=PARP(191)**2*(3D0*RM1+0.25D0/RM1-1D0)
27824             WID2=WIDS(PYCOMP(9900024),4+(1-KFLS)/2)
27825           ENDIF
27826           WDTP(I)=FAC*FCOF*
27827      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27828           WDTP(I)=FUDGE*WDTP(I)
27829           WDTP(0)=WDTP(0)+WDTP(I)
27830           IF(MDME(IDC,1).GT.0) THEN
27831             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27832             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27833             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27834             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27835           ENDIF
27836   520  CONTINUE
27837 
27838       ELSEIF(KFLA.EQ.KTECHN+115) THEN
27839 C...Techni-a2:
27840 C...Need to update to alpha_rho
27841         ALPRHT=2.16D0*(3D0/ITCM(1))*RTCM(47)**2
27842         FAC=(ALPRHT/12D0)*SHR
27843         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
27844         SQMZ=PMAS(23,1)**2
27845         SQMW=PMAS(24,1)**2
27846         SHP=SH
27847         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
27848         GMMZ=SHR*WDTPP(0)
27849         XWRHT=1D0/(4D0*XW*(1D0-XW))
27850         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
27851         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
27852         DO 530 I=1,MDCY(KC,3)
27853           IDC=I+MDCY(KC,2)-1
27854           IF(MDME(IDC,1).LT.0) GOTO 530
27855           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27856           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27857           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 530
27858           WID2=1D0
27859           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27860           IF(I.LE.4) THEN
27861             FACPV=PCM**2
27862             FACPA=PCM**2+1.5D0*RM1            
27863             VA2=0D0
27864             AA2=0D0
27865 C...a2_tc0 -> W+ + W-
27866             IF(I.EQ.1) THEN
27867               AA2=2D0*RTCM(3)**2/4D0/XW/RTCM(49)**2
27868 C...Multiplied by 2 for W^+_T W^-_L + W^+_L W^-_T.(KL)
27869               WID2=WIDS(24,1)
27870 C...a2_tc0 -> W+ + pi_tc- + c.c.
27871             ELSEIF(I.EQ.2.OR.I.EQ.3) THEN
27872               AA2=(1D0-RTCM(3)**2)/4D0/XW/RTCM(49)**2
27873               IF(I.EQ.6) THEN
27874                 WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
27875               ELSE
27876                 WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
27877               ENDIF
27878             ELSEIF(I.EQ.4) THEN
27879 C...a2_tc0 -> Z0 + pi_tc0'
27880               VA2=(1D0-RTCM(4)**2)/4D0/XW/XW1/RTCM(48)**2
27881               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
27882             ENDIF
27883             WDTP(I)=AEM*SHR**3*PCM/3D0*(VA2*FACPV+AA2*FACPA)
27884           ELSEIF(I.GE.5.AND.I.LE.10) THEN
27885             FACPV=PCM**2*(1D0+RM1+RM2)+3D0*RM1*RM2
27886             FACPA=PCM**2*(1D0+RM1+RM2)
27887             VA2=0D0
27888             AA2=0D0
27889             IF(I.EQ.5) THEN
27890 C...a_T^0 -> gamma rho_T^0
27891               VA2=(2D0*RTCM(2)-1D0)**2/RTCM(50)**4
27892               WID2=WIDS(PYCOMP(KTECHN+113),2)
27893             ELSEIF(I.EQ.6) THEN
27894 C...a_T^0 -> gamma omega_T
27895               VA2=1D0/RTCM(50)**4
27896               WID2=WIDS(PYCOMP(KTECHN+223),2)
27897             ELSEIF(I.EQ.7.OR.I.EQ.8) THEN
27898 C...a_T^0 -> W^+- rho_T^-+
27899               AA2=.25D0/XW/RTCM(51)**4
27900               IF(I.EQ.7) THEN
27901                 WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+213),3)
27902               ELSE
27903                 WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+213),2)
27904               ENDIF
27905             ELSEIF(I.EQ.9) THEN
27906 C...a_T^0 -> Z^0 rho_T^0
27907               VA2=(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(50)**4
27908               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+113),2)
27909             ELSEIF(I.EQ.10) THEN
27910 C...a_T^0 -> Z^0 omega_T
27911               VA2=.25D0*(1D0-2D0*XW)**2/XW/XW1/RTCM(50)**4
27912               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+223),2)
27913             ENDIF            
27914             WDTP(I)=AEM*SHR**5*PCM/12D0*(VA2*FACPV+AA2*FACPA)
27915           ELSE
27916 C...a2_tc0 -> f + fbar.
27917             WID2=1D0
27918             IF(I.LE.18) THEN
27919               IA=I-10
27920               FCOF=3D0*RADC
27921               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
27922             ELSE
27923               IA=I-8
27924               FCOF=1D0
27925               IF(IA.GE.17) WID2=WIDS(IA,1)
27926             ENDIF
27927             EI=KCHG(IA,1)/3D0
27928             AI=SIGN(1D0,EI+0.1D0)
27929             VI=AI-4D0*EI*XWV
27930             VALI=0.5D0*(VI+AI)
27931             VARI=0.5D0*(VI-AI)
27932             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
27933      &      ((VALI*BWZR)**2+(VALI*BWZI)**2+
27934      &      (VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
27935      &      (VALI*BWZR)*(VARI*BWZR)+VALI*VARI*BWZI**2))
27936           ENDIF
27937           WDTP(I)=FUDGE*WDTP(I)
27938           WDTP(0)=WDTP(0)+WDTP(I)
27939           IF(MDME(IDC,1).GT.0) THEN
27940             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27941             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27942             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27943             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27944           ENDIF
27945   530   CONTINUE
27946  
27947       ELSEIF(KFLA.EQ.KTECHN+215) THEN
27948 C...Techni-a2+/-:
27949         ALPRHT=2.16D0*(3D0/ITCM(1))*RTCM(47)**2
27950         FAC=(ALPRHT/12D0)*SHR
27951         SQMZ=PMAS(23,1)**2
27952         SQMW=PMAS(24,1)**2
27953         SHP=SH
27954         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
27955         GMMW=SHR*WDTPP(0)
27956         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
27957      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
27958         DO 540 I=1,MDCY(KC,3)
27959           IDC=I+MDCY(KC,2)-1
27960           IF(MDME(IDC,1).LT.0) GOTO 540
27961           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27962           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27963           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 540
27964           WID2=1D0
27965           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27966           IF(KFLR.GT.0) THEN
27967             ICHANN=2
27968           ELSE
27969             ICHANN=3
27970           ENDIF
27971           IF(I.LE.7) THEN
27972             AA2=0
27973             VA2=0
27974 C...a2_tc+ -> gamma + W+.
27975             IF(I.EQ.1) THEN
27976               AA2=RTCM(3)**2/RTCM(49)**2
27977               WID2=WIDS(24,ICHANN)
27978 C...a2_tc+ -> gamma + pi_tc+.
27979             ELSEIF(I.EQ.2) THEN
27980               AA2=(1D0-RTCM(3)**2)/RTCM(49)**2
27981               WID2=WIDS(PYCOMP(KTECHN+211),ICHANN)
27982 C...a2_tc+ -> W+ + Z
27983             ELSEIF(I.EQ.3) THEN
27984               AA2=RTCM(3)**2*(1D0/4D0/XW1 +
27985      &                       (XW-XW1)**2/4./XW/XW1)/RTCM(49)**2
27986               WID2=WIDS(24,ICHANN)*WIDS(23,2)
27987 C...a2_tc+ -> W+ + pi_tc0.
27988             ELSEIF(I.EQ.4) THEN
27989               AA2=(1D0-RTCM(3)**2)/4D0/XW/RTCM(49)**2
27990               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+111),2)
27991 C...a2_tc+ -> W+ + pi_tc'0.
27992             ELSEIF(I.EQ.5) THEN
27993               VA2=(1D0-RTCM(4)**2)/4D0/XW/RTCM(48)**2
27994               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+221),2)
27995 C...a2_tc+ -> Z0 + pi_tc+.
27996             ELSEIF(I.EQ.6) THEN
27997               AA2=(1D0-RTCM(3)**2)/4D0/XW/XW1*(1D0-2D0*XW)**2/
27998      &         RTCM(49)**2
27999               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+211),ICHANN)
28000             ENDIF
28001             WDTP(I)=AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
28002      &      /3D0*SHR**3
28003           ELSEIF(I.LE.10) THEN
28004             FACPV=PCM**2*(1D0+RM1+RM2)+3D0*RM1*RM2
28005             FACPA=PCM**2*(1D0+RM1+RM2)
28006             VA2=0D0
28007             AA2=0D0
28008 C...a2_tc+ -> gamma + rho_tc+
28009             IF(I.EQ.7) THEN
28010               VA2=(2D0*RTCM(2)-1D0)**2/RTCM(50)**4
28011               WID2=WIDS(PYCOMP(KTECHN+213),ICHANN)
28012 C...a2_tc+ -> W+ + rho_T^0
28013             ELSEIF(I.EQ.8) THEN
28014               AA2=1D0/(4D0*XW)/RTCM(51)**4
28015               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+113),2)
28016 C...a2_tc+ -> W+ + omega_T
28017             ELSEIF(I.EQ.9) THEN
28018               VA2=.25D0/XW/RTCM(50)**4
28019               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+223),2)
28020 C...a2_tc+ -> Z^0  + rho_T^+
28021             ELSEIF(I.EQ.10) THEN
28022               VA2=(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(50)**4
28023               AA2=1D0/(4D0*XW*XW1)/RTCM(51)**4
28024               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+213),ICHANN)
28025             ENDIF            
28026             WDTP(I)=AEM*SHR**5*PCM/12D0*(VA2*FACPV+AA2*FACPA)
28027           ELSE
28028 C...a2_tc+ -> f + fbar'.
28029             IA=I-10
28030             WID2=1D0
28031             IF(IA.LE.16) THEN
28032               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
28033               IF(KFLR.GT.0) THEN
28034                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
28035                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
28036                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
28037               ELSE
28038                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
28039                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
28040                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
28041               ENDIF
28042             ELSE
28043               FCOF=1D0
28044               IF(KFLR.GT.0) THEN
28045                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
28046               ELSE
28047                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
28048               ENDIF
28049             ENDIF
28050             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
28051      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
28052           ENDIF
28053           WDTP(I)=FUDGE*WDTP(I)
28054           WDTP(0)=WDTP(0)+WDTP(I)
28055           IF(MDME(IDC,1).GT.0) THEN
28056             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
28057             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
28058             WDTE(I,0)=WDTE(I,MDME(IDC,1))
28059             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
28060           ENDIF
28061   540   CONTINUE
28062  
28063       ENDIF
28064       MINT(61)=0
28065       MINT(62)=0
28066       MINT(63)=0
28067       RETURN
28068       END
28069  
28070 C***********************************************************************
28071  
28072 C...PYOFSH
28073 C...Calculates partial width and differential cross-section maxima
28074 C...of channels/processes not allowed on mass-shell, and selects
28075 C...masses in such channels/processes.
28076  
28077       SUBROUTINE PYOFSH(MOFSH,KFMO,KFD1,KFD2,PMMO,RET1,RET2)
28078  
28079 C...Double precision and integer declarations.
28080       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28081       IMPLICIT INTEGER(I-N)
28082       INTEGER PYK,PYCHGE,PYCOMP
28083 C...Commonblocks.
28084       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28085       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28086       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
28087       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
28088       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28089       COMMON/PYINT1/MINT(400),VINT(400)
28090       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
28091       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
28092       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
28093      &/PYINT2/,/PYINT5/
28094 C...Local arrays.
28095       DIMENSION KFD(2),MBW(2),PMD(2),PGD(2),PMG(2),PML(2),PMU(2),
28096      &PMH(2),ATL(2),ATU(2),ATH(2),RMG(2),INX1(100),XPT1(100),
28097      &FPT1(100),INX2(100),XPT2(100),FPT2(100),WDTP(0:400),
28098      &WDTE(0:400,0:5)
28099  
28100 C...Find if particles equal, maximum mass, matrix elements, etc.
28101       MINT(51)=0
28102       ISUB=MINT(1)
28103       KFD(1)=IABS(KFD1)
28104       KFD(2)=IABS(KFD2)
28105       MEQL=0
28106       IF(KFD(1).EQ.KFD(2)) MEQL=1
28107       MLM=0
28108       IF(MOFSH.GE.2.AND.MEQL.EQ.1) MLM=INT(1.5D0+PYR(0))
28109       IF(MOFSH.LE.2.OR.MOFSH.EQ.5) THEN
28110         NOFF=44
28111         PMMX=PMMO
28112       ELSE
28113         NOFF=40
28114         PMMX=VINT(1)
28115         IF(CKIN(2).GT.CKIN(1)) PMMX=MIN(CKIN(2),VINT(1))
28116       ENDIF
28117       MMED=0
28118       IF((KFMO.EQ.25.OR.KFMO.EQ.35.OR.KFMO.EQ.36).AND.MEQL.EQ.1.AND.
28119      &(KFD(1).EQ.23.OR.KFD(1).EQ.24)) MMED=1
28120       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(1).EQ.23.OR.
28121      &KFD(1).EQ.24).AND.(KFD(2).EQ.23.OR.KFD(2).EQ.24)) MMED=2
28122       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(2).EQ.25.OR.
28123      &KFD(2).EQ.35.OR.KFD(2).EQ.36)) MMED=3
28124       LOOP=1
28125  
28126 C...Find where Breit-Wigners are required, else select discrete masses.
28127   100 DO 110 I=1,2
28128         KFCA=PYCOMP(KFD(I))
28129         IF(KFCA.GT.0) THEN
28130           PMD(I)=PMAS(KFCA,1)
28131           PGD(I)=PMAS(KFCA,2)
28132         ELSE
28133           PMD(I)=0D0
28134           PGD(I)=0D0
28135         ENDIF
28136         IF(MSTP(42).LE.0.OR.PGD(I).LT.PARP(41)) THEN
28137           MBW(I)=0
28138           PMG(I)=PMD(I)
28139           RMG(I)=(PMG(I)/PMMX)**2
28140         ELSE
28141           MBW(I)=1
28142         ENDIF
28143   110 CONTINUE
28144  
28145 C...Find allowed mass range and Breit-Wigner parameters.
28146       DO 120 I=1,2
28147         IF(MOFSH.EQ.1.AND.LOOP.EQ.1.AND.MBW(I).EQ.1) THEN
28148           PML(I)=PARP(42)
28149           PMU(I)=PMMX-PARP(42)
28150           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
28151           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
28152         ELSEIF(MBW(I).EQ.1.AND.MOFSH.NE.5) THEN
28153           ILM=I
28154           IF(MLM.EQ.2) ILM=3-I
28155           PML(I)=MAX(CKIN(NOFF+2*ILM-1),PARP(42))
28156           IF(MBW(3-I).EQ.0) THEN
28157             PMU(I)=PMMX-PMD(3-I)
28158           ELSE
28159             PMU(I)=PMMX-MAX(CKIN(NOFF+5-2*ILM),PARP(42))
28160           ENDIF
28161           IF(CKIN(NOFF+2*ILM).GT.CKIN(NOFF+2*ILM-1)) PMU(I)=
28162      &    MIN(PMU(I),CKIN(NOFF+2*ILM))
28163           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
28164           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
28165           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
28166           IF(MBW(I).EQ.1) THEN
28167             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
28168             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
28169             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
28170      &      PGD(I)))
28171           ENDIF
28172         ELSEIF(MBW(I).EQ.1.AND.MOFSH.EQ.5) THEN
28173           ILM=I
28174           IF(MLM.EQ.2) ILM=3-I
28175           PML(I)=MAX(CKIN(48+I),PARP(42))
28176           PMU(I)=PMMX-MAX(CKIN(51-I),PARP(42))
28177           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
28178           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
28179           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
28180           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
28181           IF(MBW(I).EQ.1) THEN
28182             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
28183             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
28184             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
28185      &      PGD(I)))
28186           ENDIF
28187         ENDIF
28188   120 CONTINUE
28189       IF(MBW(1).LT.0.OR.MBW(2).LT.0.OR.(MBW(1).EQ.0.AND.MBW(2).EQ.0))
28190      &THEN
28191         CALL PYERRM(3,'(PYOFSH:) no allowed decay product masses')
28192         MINT(51)=1
28193         RETURN
28194       ENDIF
28195  
28196 C...Calculation of partial width of resonance.
28197       IF(MOFSH.EQ.1) THEN
28198  
28199 C..If only one integration, pick that to be the inner.
28200         IF(MBW(1).EQ.0) THEN
28201           PM2=PMD(1)
28202           PMD(1)=PMD(2)
28203           PGD(1)=PGD(2)
28204           PML(1)=PML(2)
28205           PMU(1)=PMU(2)
28206         ELSEIF(MBW(2).EQ.0) THEN
28207           PM2=PMD(2)
28208         ENDIF
28209  
28210 C...Start outer loop of integration.
28211         IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
28212           ATL2=ATAN((PML(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
28213           ATU2=ATAN((PMU(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
28214           NPT2=1
28215           XPT2(1)=1D0
28216           INX2(1)=0
28217           FMAX2=0D0
28218         ENDIF
28219   130   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
28220           PM2S=PMD(2)**2+PMD(2)*PGD(2)*TAN(ATL2+XPT2(NPT2)*(ATU2-ATL2))
28221           PM2=MIN(PMU(2),MAX(PML(2),SQRT(MAX(0D0,PM2S))))
28222         ENDIF
28223         RM2=(PM2/PMMX)**2
28224  
28225 C...Start inner loop of integration.
28226         PML1=PML(1)
28227         PMU1=MIN(PMU(1),PMMX-PM2)
28228         IF(MEQL.EQ.1) PMU1=MIN(PMU1,PM2)
28229         ATL1=ATAN((PML1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
28230         ATU1=ATAN((PMU1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
28231         IF(PML1+PARJ(64).GE.PMU1.OR.ATL1+1D-7.GE.ATU1) THEN
28232           FUNC2=0D0
28233           GOTO 180
28234         ENDIF
28235         NPT1=1
28236         XPT1(1)=1D0
28237         INX1(1)=0
28238         FMAX1=0D0
28239   140   PM1S=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL1+XPT1(NPT1)*(ATU1-ATL1))
28240         PM1=MIN(PMU1,MAX(PML1,SQRT(MAX(0D0,PM1S))))
28241         RM1=(PM1/PMMX)**2
28242  
28243 C...Evaluate function value - inner loop.
28244         FUNC1=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
28245         IF(MMED.EQ.1) FUNC1=FUNC1*((1D0-RM1-RM2)**2+8D0*RM1*RM2)
28246         IF(MMED.EQ.2) FUNC1=FUNC1**3*(1D0+10D0*RM1+10D0*RM2+RM1**2+
28247      &  RM2**2+10D0*RM1*RM2)
28248         IF(FUNC1.GT.FMAX1) FMAX1=FUNC1
28249         FPT1(NPT1)=FUNC1
28250  
28251 C...Go to next position in inner loop.
28252         IF(NPT1.EQ.1) THEN
28253           NPT1=NPT1+1
28254           XPT1(NPT1)=0D0
28255           INX1(NPT1)=1
28256           GOTO 140
28257         ELSEIF(NPT1.LE.8) THEN
28258           NPT1=NPT1+1
28259           IF(NPT1.LE.4.OR.NPT1.EQ.6) ISH1=1
28260           ISH1=ISH1+1
28261           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
28262           INX1(NPT1)=INX1(ISH1)
28263           INX1(ISH1)=NPT1
28264           GOTO 140
28265         ELSEIF(NPT1.LT.100) THEN
28266           ISN1=ISH1
28267   150     ISH1=ISH1+1
28268           IF(ISH1.GT.NPT1) ISH1=2
28269           IF(ISH1.EQ.ISN1) GOTO 160
28270           DFPT1=ABS(FPT1(ISH1)-FPT1(INX1(ISH1)))
28271           IF(DFPT1.LT.PARP(43)*FMAX1) GOTO 150
28272           NPT1=NPT1+1
28273           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
28274           INX1(NPT1)=INX1(ISH1)
28275           INX1(ISH1)=NPT1
28276           GOTO 140
28277         ENDIF
28278  
28279 C...Calculate integral over inner loop.
28280   160   FSUM1=0D0
28281         DO 170 IPT1=2,NPT1
28282           FSUM1=FSUM1+0.5D0*(FPT1(IPT1)+FPT1(INX1(IPT1)))*
28283      &    (XPT1(INX1(IPT1))-XPT1(IPT1))
28284   170   CONTINUE
28285         FUNC2=FSUM1*(ATU1-ATL1)/PARU(1)
28286   180   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
28287           IF(FUNC2.GT.FMAX2) FMAX2=FUNC2
28288           FPT2(NPT2)=FUNC2
28289  
28290 C...Go to next position in outer loop.
28291           IF(NPT2.EQ.1) THEN
28292             NPT2=NPT2+1
28293             XPT2(NPT2)=0D0
28294             INX2(NPT2)=1
28295             GOTO 130
28296           ELSEIF(NPT2.LE.8) THEN
28297             NPT2=NPT2+1
28298             IF(NPT2.LE.4.OR.NPT2.EQ.6) ISH2=1
28299             ISH2=ISH2+1
28300             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
28301             INX2(NPT2)=INX2(ISH2)
28302             INX2(ISH2)=NPT2
28303             GOTO 130
28304           ELSEIF(NPT2.LT.100) THEN
28305             ISN2=ISH2
28306   190       ISH2=ISH2+1
28307             IF(ISH2.GT.NPT2) ISH2=2
28308             IF(ISH2.EQ.ISN2) GOTO 200
28309             DFPT2=ABS(FPT2(ISH2)-FPT2(INX2(ISH2)))
28310             IF(DFPT2.LT.PARP(43)*FMAX2) GOTO 190
28311             NPT2=NPT2+1
28312             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
28313             INX2(NPT2)=INX2(ISH2)
28314             INX2(ISH2)=NPT2
28315             GOTO 130
28316           ENDIF
28317  
28318 C...Calculate integral over outer loop.
28319   200     FSUM2=0D0
28320           DO 210 IPT2=2,NPT2
28321             FSUM2=FSUM2+0.5D0*(FPT2(IPT2)+FPT2(INX2(IPT2)))*
28322      &      (XPT2(INX2(IPT2))-XPT2(IPT2))
28323   210     CONTINUE
28324           FSUM2=FSUM2*(ATU2-ATL2)/PARU(1)
28325           IF(MEQL.EQ.1) FSUM2=2D0*FSUM2
28326         ELSE
28327           FSUM2=FUNC2
28328         ENDIF
28329  
28330 C...Save result; second integration for user-selected mass range.
28331         IF(LOOP.EQ.1) WIDW=FSUM2
28332         WID2=FSUM2
28333         IF(LOOP.EQ.1.AND.(CKIN(46).GE.CKIN(45).OR.CKIN(48).GE.CKIN(47)
28334      &  .OR.MAX(CKIN(45),CKIN(47)).GE.1.01D0*PARP(42))) THEN
28335           LOOP=2
28336           GOTO 100
28337         ENDIF
28338         RET1=WIDW
28339         RET2=WID2/WIDW
28340  
28341 C...Select two decay product masses of a resonance.
28342       ELSEIF(MOFSH.EQ.2.OR.MOFSH.EQ.5) THEN
28343   220   DO 230 I=1,2
28344           IF(MBW(I).EQ.0) GOTO 230
28345           PMBW=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*
28346      &    (ATU(I)-ATL(I)))
28347           PMG(I)=MIN(PMU(I),MAX(PML(I),SQRT(MAX(0D0,PMBW))))
28348           RMG(I)=(PMG(I)/PMMX)**2
28349   230   CONTINUE
28350         IF((MEQL.EQ.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
28351      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) GOTO 220
28352  
28353 C...Weight with matrix element (if none known, use beta factor).
28354         FLAM=SQRT(MAX(0D0,(1D0-RMG(1)-RMG(2))**2-4D0*RMG(1)*RMG(2)))
28355         IF(MMED.EQ.1) THEN
28356           WTBE=FLAM*((1D0-RMG(1)-RMG(2))**2+8D0*RMG(1)*RMG(2))
28357         ELSEIF(MMED.EQ.2) THEN
28358           WTBE=FLAM**3*(1D0+10D0*RMG(1)+10D0*RMG(2)+RMG(1)**2+
28359      &    RMG(2)**2+10D0*RMG(1)*RMG(2))
28360         ELSEIF(MMED.EQ.3) THEN
28361           WTBE=FLAM*(RMG(1)+FLAM**2/12D0)
28362         ELSE
28363           WTBE=FLAM
28364         ENDIF
28365         IF(WTBE.LT.PYR(0)) GOTO 220
28366         RET1=PMG(1)
28367         RET2=PMG(2)
28368  
28369 C...Find suitable set of masses for initialization of 2 -> 2 processes.
28370       ELSEIF(MOFSH.EQ.3) THEN
28371         IF(MBW(1).NE.0.AND.MBW(2).EQ.0) THEN
28372           PMG(1)=MIN(PMD(1),0.5D0*(PML(1)+PMU(1)))
28373           PMG(2)=PMD(2)
28374         ELSEIF(MBW(2).NE.0.AND.MBW(1).EQ.0) THEN
28375           PMG(1)=PMD(1)
28376           PMG(2)=MIN(PMD(2),0.5D0*(PML(2)+PMU(2)))
28377         ELSE
28378           IDIV=-1
28379   240     IDIV=IDIV+1
28380           PMG(1)=MIN(PMD(1),0.1D0*(IDIV*PML(1)+(10-IDIV)*PMU(1)))
28381           PMG(2)=MIN(PMD(2),0.1D0*(IDIV*PML(2)+(10-IDIV)*PMU(2)))
28382           IF(IDIV.LE.9.AND.PMG(1)+PMG(2).GT.0.9D0*PMMX) GOTO 240
28383         ENDIF
28384         RET1=PMG(1)
28385         RET2=PMG(2)
28386  
28387 C...Evaluate importance of excluded tails of Breit-Wigners.
28388         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
28389      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
28390         IF(MEQL.LE.1) THEN
28391           VINT(80)=1D0
28392           DO 250 I=1,2
28393             IF(MBW(I).NE.0) VINT(80)=VINT(80)*1.25D0*(ATU(I)-ATL(I))/
28394      &      PARU(1)
28395   250     CONTINUE
28396         ELSE
28397           VINT(80)=(1.25D0/PARU(1))**2*MAX((ATU(1)-ATL(1))*
28398      &    (ATH(2)-ATL(2)),(ATH(1)-ATL(1))*(ATU(2)-ATL(2)))
28399         ENDIF
28400         IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.30.OR.ISUB.EQ.35).AND.
28401      &  MSTP(43).NE.2) VINT(80)=2D0*VINT(80)
28402         IF(ISUB.EQ.22.AND.MSTP(43).NE.2) VINT(80)=4D0*VINT(80)
28403         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
28404  
28405 C...Pick one particle to be the lighter (if improves efficiency).
28406       ELSEIF(MOFSH.EQ.4) THEN
28407         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
28408      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
28409   260   IF(MEQL.EQ.2) MLM=INT(1.5D0+PYR(0))
28410  
28411 C...Select two masses according to Breit-Wigner + flat in s + 1/s.
28412         DO 270 I=1,2
28413           IF(MBW(I).EQ.0) GOTO 270
28414           PMV=PMU(I)
28415           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
28416           ATV=ATU(I)
28417           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
28418           RBR=PYR(0)
28419           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
28420      &    ISUB.EQ.35).AND.MSTP(43).NE.2) RBR=2D0*RBR
28421           IF(RBR.LT.0.8D0) THEN
28422             PMSR=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*(ATV-ATL(I)))
28423             PMG(I)=MIN(PMV,MAX(PML(I),SQRT(MAX(0D0,PMSR))))
28424           ELSEIF(RBR.LT.0.9D0) THEN
28425             PMG(I)=SQRT(MAX(0D0,PML(I)**2+PYR(0)*(PMV**2-PML(I)**2)))
28426           ELSEIF(RBR.LT.1.5D0) THEN
28427             PMG(I)=PML(I)*(PMV/PML(I))**PYR(0)
28428           ELSE
28429             PMG(I)=SQRT(MAX(0D0,PML(I)**2*PMV**2/(PML(I)**2+PYR(0)*
28430      &      (PMV**2-PML(I)**2))))
28431           ENDIF
28432   270   CONTINUE
28433         IF((MEQL.GE.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
28434      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN
28435           IF(MINT(48).EQ.1.AND.MSTP(171).EQ.0) THEN
28436             NGEN(0,1)=NGEN(0,1)+1
28437             NGEN(MINT(1),1)=NGEN(MINT(1),1)+1
28438             GOTO 260
28439           ELSE
28440             MINT(51)=1
28441             RETURN
28442           ENDIF
28443         ENDIF
28444         RET1=PMG(1)
28445         RET2=PMG(2)
28446  
28447 C...Give weight for selected mass distribution.
28448         VINT(80)=1D0
28449         DO 280 I=1,2
28450           IF(MBW(I).EQ.0) GOTO 280
28451           PMV=PMU(I)
28452           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
28453           ATV=ATU(I)
28454           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
28455           F0=PMD(I)*PGD(I)/((PMG(I)**2-PMD(I)**2)**2+
28456      &    (PMD(I)*PGD(I))**2)/PARU(1)
28457           F1=1D0
28458           F2=1D0/PMG(I)**2
28459           F3=1D0/PMG(I)**4
28460           FI0=(ATV-ATL(I))/PARU(1)
28461           FI1=PMV**2-PML(I)**2
28462           FI2=2D0*LOG(PMV/PML(I))
28463           FI3=1D0/PML(I)**2-1D0/PMV**2
28464           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
28465      &    ISUB.EQ.35).AND.MSTP(43).NE.2) THEN
28466             VINT(80)=VINT(80)*20D0/(8D0+(FI0/F0)*(F1/FI1+6D0*F2/FI2+
28467      &      5D0*F3/FI3))
28468           ELSE
28469             VINT(80)=VINT(80)*10D0/(8D0+(FI0/F0)*(F1/FI1+F2/FI2))
28470           ENDIF
28471           VINT(80)=VINT(80)*FI0
28472   280   CONTINUE
28473         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
28474       ENDIF
28475  
28476       RETURN
28477       END
28478  
28479 C***********************************************************************
28480  
28481 C...PYRECO
28482 C...Handles the possibility of colour reconnection in W+W- events,
28483 C...Based on the main scenarios of the Sjostrand and Khoze study:
28484 C...I, II, II', intermediate and instantaneous; plus one model
28485 C...along the lines of the Gustafson and Hakkinen: GH.
28486 C...Note: also handles Z0 Z0 and W-W+ events, but notation below
28487 C...is as if first resonance is W+ and second W-.
28488  
28489       SUBROUTINE PYRECO(IW1,IW2,NSD1,NAFT1)
28490  
28491 C...Double precision and integer declarations.
28492       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28493       IMPLICIT INTEGER(I-N)
28494       INTEGER PYK,PYCHGE,PYCOMP
28495 C...Parameter value; number of points in MC integration.
28496       PARAMETER (NPT=100)
28497 C...Commonblocks.
28498       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
28499       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28500       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28501       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28502       COMMON/PYINT1/MINT(400),VINT(400)
28503       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
28504 C...Local arrays.
28505       DIMENSION NBEG(2),NEND(2),INP(50),INM(50),BEWW(3),XP(3),XM(3),
28506      &V1(3),V2(3),BETP(50,4),DIRP(50,3),BETM(50,4),DIRM(50,3),
28507      &XD(4),XB(4),IAP(NPT),IAM(NPT),WTA(NPT),V1P(3),V2P(3),V1M(3),
28508      &V2M(3),Q(4,3),XPP(3),XMM(3),IPC(20),IMC(20),TC(0:20),TPC(20),
28509      &TMC(20),IJOIN(100)
28510  
28511 C...Functions to give four-product and to do determinants.
28512       FOUR(I,J)=P(I,4)*P(J,4)-P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
28513       DETER(I,J,L)=Q(I,1)*Q(J,2)*Q(L,3)-Q(I,1)*Q(L,2)*Q(J,3)+
28514      &Q(J,1)*Q(L,2)*Q(I,3)-Q(J,1)*Q(I,2)*Q(L,3)+
28515      &Q(L,1)*Q(I,2)*Q(J,3)-Q(L,1)*Q(J,2)*Q(I,3)
28516  
28517 C...Only allow fraction of recoupling for GH, intermediate and
28518 C...instantaneous.
28519       IF(MSTP(115).EQ.5.OR.MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
28520         IF(PYR(0).GT.PARP(120)) RETURN
28521       ENDIF
28522       ISUB=MINT(1)
28523  
28524 C...Common part for scenarios I, II, II', and GH.
28525       IF(MSTP(115).EQ.1.OR.MSTP(115).EQ.2.OR.MSTP(115).EQ.3.OR.
28526      &MSTP(115).EQ.5) THEN
28527  
28528 C...Read out frequently-used parameters.
28529         PI=PARU(1)
28530         HBAR=PARU(3)
28531         PMW=PMAS(24,1)
28532         IF(ISUB.EQ.22) PMW=PMAS(23,1)
28533         PGW=PMAS(24,2)
28534         IF(ISUB.EQ.22) PGW=PMAS(23,2)
28535         TFRAG=PARP(115)
28536         RHAD=PARP(116)
28537         FACT=PARP(117)
28538         BLOWR=PARP(118)
28539         BLOWT=PARP(119)
28540  
28541 C...Find range of decay products of the W's.
28542 C...Background: the W's are stored in IW1 and IW2.
28543 C...Their direct decay products in NSD1+1 through NSD1+4.
28544 C...Products after shower (if any) in NSD1+5 through NAFT1
28545 C...for first W and in NAFT1+1 through N for the second.
28546         IF(NAFT1.GT.NSD1+4) THEN
28547           NBEG(1)=NSD1+5
28548           NEND(1)=NAFT1
28549         ELSE
28550           NBEG(1)=NSD1+1
28551           NEND(1)=NSD1+2
28552         ENDIF
28553         IF(N.GT.NAFT1) THEN
28554           NBEG(2)=NAFT1+1
28555           NEND(2)=N
28556         ELSE
28557           NBEG(2)=NSD1+3
28558           NEND(2)=NSD1+4
28559         ENDIF
28560  
28561 C...Rearrange parton shower products along strings.
28562         NOLD=N
28563         CALL PYPREP(NSD1+1)
28564         IF(MINT(51).NE.0) RETURN
28565  
28566 C...Find partons pointing back to W+ and W-; store them with quark
28567 C...end of string first.
28568         NNP=0
28569         NNM=0
28570         ISGP=0
28571         ISGM=0
28572         DO 120 I=NOLD+1,N
28573           IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 120
28574           IF(IABS(K(I,2)).GE.22) GOTO 120
28575           IF(K(I,3).GE.NBEG(1).AND.K(I,3).LE.NEND(1)) THEN
28576             IF(ISGP.EQ.0) ISGP=ISIGN(1,K(I,2))
28577             NNP=NNP+1
28578             IF(ISGP.EQ.1) THEN
28579               INP(NNP)=I
28580             ELSE
28581               DO 100 I1=NNP,2,-1
28582                 INP(I1)=INP(I1-1)
28583   100         CONTINUE
28584               INP(1)=I
28585             ENDIF
28586             IF(K(I,1).EQ.1) ISGP=0
28587           ELSEIF(K(I,3).GE.NBEG(2).AND.K(I,3).LE.NEND(2)) THEN
28588             IF(ISGM.EQ.0) ISGM=ISIGN(1,K(I,2))
28589             NNM=NNM+1
28590             IF(ISGM.EQ.1) THEN
28591               INM(NNM)=I
28592             ELSE
28593               DO 110 I1=NNM,2,-1
28594                 INM(I1)=INM(I1-1)
28595   110         CONTINUE
28596               INM(1)=I
28597             ENDIF
28598             IF(K(I,1).EQ.1) ISGM=0
28599           ENDIF
28600   120   CONTINUE
28601  
28602 C...Boost to W+W- rest frame (not strictly needed).
28603         DO 130 J=1,3
28604           BEWW(J)=(P(IW1,J)+P(IW2,J))/(P(IW1,4)+P(IW2,4))
28605   130   CONTINUE
28606         CALL PYROBO(IW1,IW1,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
28607         CALL PYROBO(IW2,IW2,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
28608         CALL PYROBO(NOLD+1,N,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
28609  
28610 C...Select decay vertices of W+ and W-.
28611         TP=HBAR*(-LOG(PYR(0)))*P(IW1,4)/
28612      &  SQRT((P(IW1,5)**2-PMW**2)**2+(P(IW1,5)**2*PGW/PMW)**2)
28613         TM=HBAR*(-LOG(PYR(0)))*P(IW2,4)/
28614      &  SQRT((P(IW2,5)**2-PMW**2)**2+(P(IW2,5)**2*PGW/PMW)**2)
28615         GTMAX=MAX(TP,TM)
28616         DO 140 J=1,3
28617           XP(J)=TP*P(IW1,J)/P(IW1,4)
28618           XM(J)=TM*P(IW2,J)/P(IW2,4)
28619   140   CONTINUE
28620  
28621 C...Begin scenario I specifics.
28622         IF(MSTP(115).EQ.1) THEN
28623  
28624 C...Reconstruct velocity and direction of W+ string pieces.
28625           DO 170 IIP=1,NNP-1
28626             IF(K(INP(IIP),2).LT.0) GOTO 170
28627             I1=INP(IIP)
28628             I2=INP(IIP+1)
28629             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
28630             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
28631             DO 150 J=1,3
28632               V1(J)=P(I1,J)/P1A
28633               V2(J)=P(I2,J)/P2A
28634               BETP(IIP,J)=0.5D0*(V1(J)+V2(J))
28635               DIRP(IIP,J)=V1(J)-V2(J)
28636   150       CONTINUE
28637             BETP(IIP,4)=1D0/SQRT(1D0-BETP(IIP,1)**2-BETP(IIP,2)**2-
28638      &      BETP(IIP,3)**2)
28639             DIRL=SQRT(DIRP(IIP,1)**2+DIRP(IIP,2)**2+DIRP(IIP,3)**2)
28640             DO 160 J=1,3
28641               DIRP(IIP,J)=DIRP(IIP,J)/DIRL
28642   160       CONTINUE
28643   170     CONTINUE
28644  
28645 C...Reconstruct velocity and direction of W- string pieces.
28646           DO 200 IIM=1,NNM-1
28647             IF(K(INM(IIM),2).LT.0) GOTO 200
28648             I1=INM(IIM)
28649             I2=INM(IIM+1)
28650             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
28651             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
28652             DO 180 J=1,3
28653               V1(J)=P(I1,J)/P1A
28654               V2(J)=P(I2,J)/P2A
28655               BETM(IIM,J)=0.5D0*(V1(J)+V2(J))
28656               DIRM(IIM,J)=V1(J)-V2(J)
28657   180       CONTINUE
28658             BETM(IIM,4)=1D0/SQRT(1D0-BETM(IIM,1)**2-BETM(IIM,2)**2-
28659      &      BETM(IIM,3)**2)
28660             DIRL=SQRT(DIRM(IIM,1)**2+DIRM(IIM,2)**2+DIRM(IIM,3)**2)
28661             DO 190 J=1,3
28662               DIRM(IIM,J)=DIRM(IIM,J)/DIRL
28663   190       CONTINUE
28664   200     CONTINUE
28665  
28666 C...Loop over number of space-time points.
28667           NACC=0
28668           SUM=0D0
28669           DO 250 IPT=1,NPT
28670  
28671 C...Pick x,y,z,t Gaussian (width RHAD and TFRAG, respectively).
28672             R=SQRT(-LOG(PYR(0)))
28673             PHI=2D0*PI*PYR(0)
28674             X=BLOWR*RHAD*R*COS(PHI)
28675             Y=BLOWR*RHAD*R*SIN(PHI)
28676             R=SQRT(-LOG(PYR(0)))
28677             PHI=2D0*PI*PYR(0)
28678             Z=BLOWR*RHAD*R*COS(PHI)
28679             T=GTMAX+BLOWT*SQRT(0.5D0)*TFRAG*R*ABS(SIN(PHI))
28680  
28681 C...Reject impossible points. Weight for sample distribution.
28682             IF(T**2-X**2-Y**2-Z**2.LT.0D0) GOTO 250
28683             WTSMP=EXP(-(X**2+Y**2+Z**2)/(BLOWR*RHAD)**2)*
28684      &      EXP(-2D0*(T-GTMAX)**2/(BLOWT*TFRAG)**2)
28685  
28686 C...Loop over W+ string pieces and find one with largest weight.
28687             IMAXP=0
28688             WTMAXP=1D-10
28689             XD(1)=X-XP(1)
28690             XD(2)=Y-XP(2)
28691             XD(3)=Z-XP(3)
28692             XD(4)=T-TP
28693             DO 220 IIP=1,NNP-1
28694               IF(K(INP(IIP),2).LT.0) GOTO 220
28695               BED=BETP(IIP,1)*XD(1)+BETP(IIP,2)*XD(2)+BETP(IIP,3)*XD(3)
28696               BEDG=BETP(IIP,4)*(BETP(IIP,4)*BED/(1D0+BETP(IIP,4))-XD(4))
28697               DO 210 J=1,3
28698                 XB(J)=XD(J)+BEDG*BETP(IIP,J)
28699   210         CONTINUE
28700               XB(4)=BETP(IIP,4)*(XD(4)-BED)
28701               SR2=XB(1)**2+XB(2)**2+XB(3)**2
28702               SZ2=(DIRP(IIP,1)*XB(1)+DIRP(IIP,2)*XB(2)+
28703      &        DIRP(IIP,3)*XB(3))**2
28704               WTP=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
28705      &        TFRAG**2)
28706               IF(XB(4)-SQRT(SR2).LT.0D0) WTP=0D0
28707               IF(WTP.GT.WTMAXP) THEN
28708                 IMAXP=IIP
28709                 WTMAXP=WTP
28710               ENDIF
28711   220       CONTINUE
28712  
28713 C...Loop over W- string pieces and find one with largest weight.
28714             IMAXM=0
28715             WTMAXM=1D-10
28716             XD(1)=X-XM(1)
28717             XD(2)=Y-XM(2)
28718             XD(3)=Z-XM(3)
28719             XD(4)=T-TM
28720             DO 240 IIM=1,NNM-1
28721               IF(K(INM(IIM),2).LT.0) GOTO 240
28722               BED=BETM(IIM,1)*XD(1)+BETM(IIM,2)*XD(2)+BETM(IIM,3)*XD(3)
28723               BEDG=BETM(IIM,4)*(BETM(IIM,4)*BED/(1D0+BETM(IIM,4))-XD(4))
28724               DO 230 J=1,3
28725                 XB(J)=XD(J)+BEDG*BETM(IIM,J)
28726   230         CONTINUE
28727               XB(4)=BETM(IIM,4)*(XD(4)-BED)
28728               SR2=XB(1)**2+XB(2)**2+XB(3)**2
28729               SZ2=(DIRM(IIM,1)*XB(1)+DIRM(IIM,2)*XB(2)+
28730      &        DIRM(IIM,3)*XB(3))**2
28731               WTM=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
28732      &        TFRAG**2)
28733               IF(XB(4)-SQRT(SR2).LT.0D0) WTM=0D0
28734               IF(WTM.GT.WTMAXM) THEN
28735                 IMAXM=IIM
28736                 WTMAXM=WTM
28737               ENDIF
28738   240       CONTINUE
28739  
28740 C...Result of integration.
28741             WT=0D0
28742             IF(IMAXP.NE.0.AND.IMAXM.NE.0) THEN
28743               WT=WTMAXP*WTMAXM/WTSMP
28744               SUM=SUM+WT
28745               NACC=NACC+1
28746               IAP(NACC)=IMAXP
28747               IAM(NACC)=IMAXM
28748               WTA(NACC)=WT
28749             ENDIF
28750   250     CONTINUE
28751           RES=BLOWR**3*BLOWT*SUM/NPT
28752  
28753 C...Decide whether to reconnect and, if so, where.
28754           IACC=0
28755           PREC=1D0-EXP(-FACT*RES)
28756           IF(PREC.GT.PYR(0)) THEN
28757             RSUM=PYR(0)*SUM
28758             DO 260 IA=1,NACC
28759               IACC=IA
28760               RSUM=RSUM-WTA(IA)
28761               IF(RSUM.LE.0D0) GOTO 270
28762   260       CONTINUE
28763   270       IIP=IAP(IACC)
28764             IIM=IAM(IACC)
28765           ENDIF
28766  
28767 C...Begin scenario II and II' specifics.
28768         ELSEIF(MSTP(115).EQ.2.OR.MSTP(115).EQ.3) THEN
28769  
28770 C...Loop through all string pieces, one from W+ and one from W-.
28771           NCROSS=0
28772           TC(0)=0D0
28773           DO 340 IIP=1,NNP-1
28774             IF(K(INP(IIP),2).LT.0) GOTO 340
28775             I1P=INP(IIP)
28776             I2P=INP(IIP+1)
28777             DO 330 IIM=1,NNM-1
28778               IF(K(INM(IIM),2).LT.0) GOTO 330
28779               I1M=INM(IIM)
28780               I2M=INM(IIM+1)
28781  
28782 C...Find endpoint velocity vectors.
28783               DO 280 J=1,3
28784                 V1P(J)=P(I1P,J)/P(I1P,4)
28785                 V2P(J)=P(I2P,J)/P(I2P,4)
28786                 V1M(J)=P(I1M,J)/P(I1M,4)
28787                 V2M(J)=P(I2M,J)/P(I2M,4)
28788   280         CONTINUE
28789  
28790 C...Define q matrix and find t.
28791               DO 290 J=1,3
28792                 Q(1,J)=V2P(J)-V1P(J)
28793                 Q(2,J)=-(V2M(J)-V1M(J))
28794                 Q(3,J)=XP(J)-XM(J)-TP*V1P(J)+TM*V1M(J)
28795                 Q(4,J)=V1P(J)-V1M(J)
28796   290         CONTINUE
28797               T=-DETER(1,2,3)/DETER(1,2,4)
28798  
28799 C...Find alpha and beta; i.e. coordinates of crossing point.
28800               S11=Q(1,1)*(T-TP)
28801               S12=Q(2,1)*(T-TM)
28802               S13=Q(3,1)+Q(4,1)*T
28803               S21=Q(1,2)*(T-TP)
28804               S22=Q(2,2)*(T-TM)
28805               S23=Q(3,2)+Q(4,2)*T
28806               DEN=S11*S22-S12*S21
28807               ALP=(S12*S23-S22*S13)/DEN
28808               BET=(S21*S13-S11*S23)/DEN
28809  
28810 C...Check if solution acceptable.
28811               IANSW=1
28812               IF(T.LT.GTMAX) IANSW=0
28813               IF(ALP.LT.0D0.OR.ALP.GT.1D0) IANSW=0
28814               IF(BET.LT.0D0.OR.BET.GT.1D0) IANSW=0
28815  
28816 C...Find point of crossing and check that not inconsistent.
28817               DO 300 J=1,3
28818                 XPP(J)=XP(J)+(V1P(J)+ALP*(V2P(J)-V1P(J)))*(T-TP)
28819                 XMM(J)=XM(J)+(V1M(J)+BET*(V2M(J)-V1M(J)))*(T-TM)
28820   300         CONTINUE
28821               D2PM=(XPP(1)-XMM(1))**2+(XPP(2)-XMM(2))**2+
28822      &        (XPP(3)-XMM(3))**2
28823               D2P=XPP(1)**2+XPP(2)**2+XPP(3)**2
28824               D2M=XMM(1)**2+XMM(2)**2+XMM(3)**2
28825               IF(D2PM.GT.1D-4*(D2P+D2M)) IANSW=-1
28826  
28827 C...Find string eigentimes at crossing.
28828               IF(IANSW.EQ.1) THEN
28829                 TAUP=SQRT(MAX(0D0,(T-TP)**2-(XPP(1)-XP(1))**2-
28830      &          (XPP(2)-XP(2))**2-(XPP(3)-XP(3))**2))
28831                 TAUM=SQRT(MAX(0D0,(T-TM)**2-(XMM(1)-XM(1))**2-
28832      &          (XMM(2)-XM(2))**2-(XMM(3)-XM(3))**2))
28833               ELSE
28834                 TAUP=0D0
28835                 TAUM=0D0
28836               ENDIF
28837  
28838 C...Order crossings by time. End loop over crossings.
28839               IF(IANSW.EQ.1.AND.NCROSS.LT.20) THEN
28840                 NCROSS=NCROSS+1
28841                 DO 310 I1=NCROSS,1,-1
28842                   IF(T.GT.TC(I1-1).OR.I1.EQ.1) THEN
28843                     IPC(I1)=IIP
28844                     IMC(I1)=IIM
28845                     TC(I1)=T
28846                     TPC(I1)=TAUP
28847                     TMC(I1)=TAUM
28848                     GOTO 320
28849                   ELSE
28850                     IPC(I1)=IPC(I1-1)
28851                     IMC(I1)=IMC(I1-1)
28852                     TC(I1)=TC(I1-1)
28853                     TPC(I1)=TPC(I1-1)
28854                     TMC(I1)=TMC(I1-1)
28855                   ENDIF
28856   310           CONTINUE
28857   320           CONTINUE
28858               ENDIF
28859   330       CONTINUE
28860   340     CONTINUE
28861  
28862 C...Loop over crossings; find first (if any) acceptable one.
28863           IACC=0
28864           IF(NCROSS.GE.1) THEN
28865             DO 350 IC=1,NCROSS
28866               PNFRAG=EXP(-(TPC(IC)**2+TMC(IC)**2)/TFRAG**2)
28867               IF(PNFRAG.GT.PYR(0)) THEN
28868 C...Scenario II: only compare with fragmentation time.
28869                 IF(MSTP(115).EQ.2) THEN
28870                   IACC=IC
28871                   IIP=IPC(IACC)
28872                   IIM=IMC(IACC)
28873                   GOTO 360
28874 C...Scenario II': also require that string length decreases.
28875                 ELSE
28876                   IIP=IPC(IC)
28877                   IIM=IMC(IC)
28878                   I1P=INP(IIP)
28879                   I2P=INP(IIP+1)
28880                   I1M=INM(IIM)
28881                   I2M=INM(IIM+1)
28882                   ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
28883                   ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
28884                   IF(ELNEW.LT.ELOLD) THEN
28885                     IACC=IC
28886                     IIP=IPC(IACC)
28887                     IIM=IMC(IACC)
28888                     GOTO 360
28889                   ENDIF
28890                 ENDIF
28891               ENDIF
28892   350       CONTINUE
28893   360       CONTINUE
28894           ENDIF
28895  
28896 C...Begin scenario GH specifics.
28897         ELSEIF(MSTP(115).EQ.5) THEN
28898  
28899 C...Loop through all string pieces, one from W+ and one from W-.
28900           IACC=0
28901           ELMIN=1D0
28902           DO 380 IIP=1,NNP-1
28903             IF(K(INP(IIP),2).LT.0) GOTO 380
28904             I1P=INP(IIP)
28905             I2P=INP(IIP+1)
28906             DO 370 IIM=1,NNM-1
28907               IF(K(INM(IIM),2).LT.0) GOTO 370
28908               I1M=INM(IIM)
28909               I2M=INM(IIM+1)
28910  
28911 C...Look for largest decrease of (exponent of) Lambda measure.
28912               ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
28913               ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
28914               ELDIF=ELNEW/MAX(1D-10,ELOLD)
28915               IF(ELDIF.LT.ELMIN) THEN
28916                 IACC=IIP+IIM
28917                 ELMIN=ELDIF
28918                 IPC(1)=IIP
28919                 IMC(1)=IIM
28920               ENDIF
28921   370       CONTINUE
28922   380     CONTINUE
28923           IIP=IPC(1)
28924           IIM=IMC(1)
28925         ENDIF
28926  
28927 C...Common for scenarios I, II, II' and GH: reconnect strings.
28928         IF(IACC.NE.0) THEN
28929           MINT(32)=1
28930           NJOIN=0
28931           DO 390 IS=1,NNP+NNM
28932             NJOIN=NJOIN+1
28933             IF(IS.LE.IIP) THEN
28934               I=INP(IS)
28935             ELSEIF(IS.LE.IIP+NNM-IIM) THEN
28936               I=INM(IS-IIP+IIM)
28937             ELSEIF(IS.LE.IIP+NNM) THEN
28938               I=INM(IS-IIP-NNM+IIM)
28939             ELSE
28940               I=INP(IS-NNM)
28941             ENDIF
28942             IJOIN(NJOIN)=I
28943             IF(K(I,2).LT.0) THEN
28944               CALL PYJOIN(NJOIN,IJOIN)
28945               NJOIN=0
28946             ENDIF
28947   390     CONTINUE
28948  
28949 C...Restore original event record if no reconnection.
28950         ELSE
28951           DO 400 I=NSD1+1,NOLD
28952             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
28953               K(I,4)=MOD(K(I,4),MSTU(5)**2)
28954               K(I,5)=MOD(K(I,5),MSTU(5)**2)
28955             ENDIF
28956   400     CONTINUE
28957           DO 410 I=NOLD+1,N
28958             K(K(I,3),1)=3
28959   410     CONTINUE
28960           N=NOLD
28961         ENDIF
28962  
28963 C...Boost back system.
28964         CALL PYROBO(IW1,IW1,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
28965         CALL PYROBO(IW2,IW2,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
28966         IF(N.GT.NOLD) CALL PYROBO(NOLD+1,N,0D0,0D0,
28967      &  BEWW(1),BEWW(2),BEWW(3))
28968  
28969 C...Common part for intermediate and instantaneous scenarios.
28970       ELSEIF(MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
28971         MINT(32)=1
28972  
28973 C...Remove old shower products and reset showering ones.
28974         N=NSD1+4
28975         DO 420 I=NSD1+1,NSD1+4
28976           K(I,1)=3
28977           K(I,4)=MOD(K(I,4),MSTU(5)**2)
28978           K(I,5)=MOD(K(I,5),MSTU(5)**2)
28979   420   CONTINUE
28980  
28981 C...Identify quark-antiquark pairs.
28982         IQ1=NSD1+1
28983         IQ2=NSD1+2
28984         IQ3=NSD1+3
28985         IF(K(IQ1,2)*K(IQ3,2).LT.0) IQ3=NSD1+4
28986         IQ4=2*NSD1+7-IQ3
28987  
28988 C...Reconnect strings.
28989         IJOIN(1)=IQ1
28990         IJOIN(2)=IQ4
28991         CALL PYJOIN(2,IJOIN)
28992         IJOIN(1)=IQ3
28993         IJOIN(2)=IQ2
28994         CALL PYJOIN(2,IJOIN)
28995  
28996 C...Do new parton showers in intermediate scenario.
28997         IF(MSTP(71).GE.1.AND.MSTP(115).EQ.11) THEN
28998           MSTJ50=MSTJ(50)
28999           MSTJ(50)=0
29000           CALL PYSHOW(IQ1,IQ2,P(IW1,5))
29001           CALL PYSHOW(IQ3,IQ4,P(IW2,5))
29002           MSTJ(50)=MSTJ50
29003  
29004 C...Do new parton showers in instantaneous scenario.
29005         ELSEIF(MSTP(71).GE.1.AND.MSTP(115).EQ.12) THEN
29006           PPM2=(P(IQ1,4)+P(IQ4,4))**2-(P(IQ1,1)+P(IQ4,1))**2-
29007      &    (P(IQ1,2)+P(IQ4,2))**2-(P(IQ1,3)+P(IQ4,3))**2
29008           PPM=SQRT(MAX(0D0,PPM2))
29009           CALL PYSHOW(IQ1,IQ4,PPM)
29010           PPM2=(P(IQ3,4)+P(IQ2,4))**2-(P(IQ3,1)+P(IQ2,1))**2-
29011      &    (P(IQ3,2)+P(IQ2,2))**2-(P(IQ3,3)+P(IQ2,3))**2
29012           PPM=SQRT(MAX(0D0,PPM2))
29013           CALL PYSHOW(IQ3,IQ2,PPM)
29014         ENDIF
29015       ENDIF
29016  
29017       RETURN
29018       END
29019  
29020 C***********************************************************************
29021  
29022 C...PYKLIM
29023 C...Checks generated variables against pre-set kinematical limits;
29024 C...also calculates limits on variables used in generation.
29025  
29026       SUBROUTINE PYKLIM(ILIM)
29027  
29028 C...Double precision and integer declarations.
29029       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29030       IMPLICIT INTEGER(I-N)
29031       INTEGER PYK,PYCHGE,PYCOMP
29032 C...Commonblocks.
29033       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
29034       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29035       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29036       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
29037       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
29038       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29039       COMMON/PYINT1/MINT(400),VINT(400)
29040       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
29041       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
29042      &/PYINT1/,/PYINT2/
29043  
29044 C...Common kinematical expressions.
29045       MINT(51)=0
29046       ISUB=MINT(1)
29047       ISTSB=ISET(ISUB)
29048       IF(ISUB.EQ.96) GOTO 100
29049       SQM3=VINT(63)
29050       SQM4=VINT(64)
29051       IF(ILIM.NE.0) THEN
29052         IF(ABS(SQM3).LT.1D-4.AND.ABS(SQM4).LT.1D-4) THEN
29053           CKIN09=MAX(CKIN(9),CKIN(13))
29054           CKIN10=MIN(CKIN(10),CKIN(14))
29055           CKIN11=MAX(CKIN(11),CKIN(15))
29056           CKIN12=MIN(CKIN(12),CKIN(16))
29057         ELSE
29058           CKIN09=MAX(CKIN(9),MIN(0D0,CKIN(13)))
29059           CKIN10=MIN(CKIN(10),MAX(0D0,CKIN(14)))
29060           CKIN11=MAX(CKIN(11),MIN(0D0,CKIN(15)))
29061           CKIN12=MIN(CKIN(12),MAX(0D0,CKIN(16)))
29062         ENDIF
29063       ENDIF
29064       IF(ILIM.NE.1) THEN
29065         TAU=VINT(21)
29066         RM3=SQM3/(TAU*VINT(2))
29067         RM4=SQM4/(TAU*VINT(2))
29068         BE34=SQRT(MAX(1D-20,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
29069       ENDIF
29070       PTHMIN=CKIN(3)
29071       IF(MIN(SQM3,SQM4).LT.CKIN(6)**2.AND.ISTSB.NE.1.AND.ISTSB.NE.3)
29072      &PTHMIN=MAX(CKIN(3),CKIN(5))
29073  
29074       IF(ILIM.EQ.0) THEN
29075 C...Check generated values of tau, y*, cos(theta-hat), and tau' against
29076 C...pre-set kinematical limits.
29077         YST=VINT(22)
29078         CTH=VINT(23)
29079         TAUP=VINT(26)
29080         TAUE=TAU
29081         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
29082         X1=SQRT(TAUE)*EXP(YST)
29083         X2=SQRT(TAUE)*EXP(-YST)
29084         XF=X1-X2
29085         IF(MINT(47).NE.1) THEN
29086           IF(TAU*VINT(2).LT.CKIN(1)**2) MINT(51)=1
29087           IF(CKIN(2).GE.0D0.AND.TAU*VINT(2).GT.CKIN(2)**2) MINT(51)=1
29088           IF(YST.LT.CKIN(7).OR.YST.GT.CKIN(8)) MINT(51)=1
29089           IF(XF.LT.CKIN(25).OR.XF.GT.CKIN(26)) MINT(51)=1
29090         ENDIF
29091         IF(MINT(45).NE.1) THEN
29092           IF(X1.LT.CKIN(21).OR.X1.GT.CKIN(22)) MINT(51)=1
29093         ENDIF
29094         IF(MINT(46).NE.1) THEN
29095           IF(X2.LT.CKIN(23).OR.X2.GT.CKIN(24)) MINT(51)=1
29096         ENDIF
29097         IF(MINT(45).EQ.2) THEN
29098           IF(X1.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
29099         ENDIF
29100         IF(MINT(46).EQ.2) THEN
29101           IF(X2.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
29102         ENDIF
29103         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
29104           PTH=0.5D0*BE34*SQRT(TAU*VINT(2)*MAX(0D0,1D0-CTH**2))
29105           EXPY3=MAX(1D-20,(1D0+RM3-RM4+BE34*CTH)/
29106      &    MAX(1D-20,(1D0+RM3-RM4-BE34*CTH)))
29107           EXPY4=MAX(1D-20,(1D0-RM3+RM4-BE34*CTH)/
29108      &    MAX(1D-20,(1D0-RM3+RM4+BE34*CTH)))
29109           Y3=YST+0.5D0*LOG(EXPY3)
29110           Y4=YST+0.5D0*LOG(EXPY4)
29111           YLARGE=MAX(Y3,Y4)
29112           YSMALL=MIN(Y3,Y4)
29113           ETALAR=20D0
29114           ETASMA=-20D0
29115           STH=SQRT(MAX(0D0,1D0-CTH**2))
29116           EXSQ3=SQRT(MAX(1D-20,((1D0+RM3-RM4)*COSH(YST)+BE34*SINH(YST)*
29117      &    CTH)**2-4D0*RM3))
29118           EXSQ4=SQRT(MAX(1D-20,((1D0-RM3+RM4)*COSH(YST)-BE34*SINH(YST)*
29119      &    CTH)**2-4D0*RM4))
29120           IF(STH.GE.1D-10) THEN
29121             EXPET3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH+EXSQ3)/
29122      &      (BE34*STH)
29123             EXPET4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH+EXSQ4)/
29124      &      (BE34*STH)
29125             ETA3=LOG(MIN(1D10,MAX(1D-10,EXPET3)))
29126             ETA4=LOG(MIN(1D10,MAX(1D-10,EXPET4)))
29127             ETALAR=MAX(ETA3,ETA4)
29128             ETASMA=MIN(ETA3,ETA4)
29129           ENDIF
29130           CTS3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH)/EXSQ3
29131           CTS4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH)/EXSQ4
29132           CTSLAR=MIN(1D0,MAX(-1D0,CTS3,CTS4))
29133           CTSSMA=MAX(-1D0,MIN(1D0,CTS3,CTS4))
29134           SH=TAU*VINT(2)
29135           RPTS=4D0*VINT(71)**2/SH
29136           BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
29137           RM34=MAX(1D-20,2D0*RM3*RM4)
29138           IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
29139      &    RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
29140           RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
29141           THA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
29142           UHA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
29143           IF(PTH.LT.PTHMIN) MINT(51)=1
29144           IF(CKIN(4).GE.0D0.AND.PTH.GT.CKIN(4)) MINT(51)=1
29145           IF(YLARGE.LT.CKIN(9).OR.YLARGE.GT.CKIN(10)) MINT(51)=1
29146           IF(YSMALL.LT.CKIN(11).OR.YSMALL.GT.CKIN(12)) MINT(51)=1
29147           IF(ETALAR.LT.CKIN(13).OR.ETALAR.GT.CKIN(14)) MINT(51)=1
29148           IF(ETASMA.LT.CKIN(15).OR.ETASMA.GT.CKIN(16)) MINT(51)=1
29149           IF(CTSLAR.LT.CKIN(17).OR.CTSLAR.GT.CKIN(18)) MINT(51)=1
29150           IF(CTSSMA.LT.CKIN(19).OR.CTSSMA.GT.CKIN(20)) MINT(51)=1
29151           IF(CTH.LT.CKIN(27).OR.CTH.GT.CKIN(28)) MINT(51)=1
29152           IF(THA.LT.CKIN(35)) MINT(51)=1
29153           IF(CKIN(36).GE.0D0.AND.THA.GT.CKIN(36)) MINT(51)=1
29154           IF(UHA.LT.CKIN(37)) MINT(51)=1
29155           IF(CKIN(38).GE.0D0.AND.UHA.GT.CKIN(38)) MINT(51)=1
29156         ENDIF
29157         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
29158           IF(TAUP*VINT(2).LT.CKIN(31)**2) MINT(51)=1
29159           IF(CKIN(32).GE.0D0.AND.TAUP*VINT(2).GT.CKIN(32)**2) MINT(51)=1
29160         ENDIF
29161  
29162 C...Additional cuts on W2 (approximately) in DIS.
29163         IF(ISUB.EQ.10.AND.MINT(43).GE.2) THEN
29164           XBJ=X2
29165           IF(IABS(MINT(12)).LT.20) XBJ=X1
29166           Q2BJ=THA
29167           W2BJ=Q2BJ*(1D0-XBJ)/XBJ
29168           IF(W2BJ.LT.CKIN(39)) MINT(51)=1
29169           IF(CKIN(40).GT.0D0.AND.W2BJ.GT.CKIN(40)) MINT(51)=1
29170         ENDIF
29171  
29172       ELSEIF(ILIM.EQ.1) THEN
29173 C...Calculate limits on tau
29174 C...0) due to definition
29175         TAUMN0=0D0
29176         TAUMX0=1D0
29177 C...1) due to limits on subsystem mass
29178         TAUMN1=CKIN(1)**2/VINT(2)
29179         TAUMX1=1D0
29180         IF(CKIN(2).GE.0D0) TAUMX1=CKIN(2)**2/VINT(2)
29181 C...2) due to limits on pT-hat (and non-overlapping rapidity intervals)
29182         TM3=SQRT(SQM3+PTHMIN**2)
29183         TM4=SQRT(SQM4+PTHMIN**2)
29184         YDCOSH=1D0
29185         IF(CKIN09.GT.CKIN12) YDCOSH=COSH(CKIN09-CKIN12)
29186         TAUMN2=(TM3**2+2D0*TM3*TM4*YDCOSH+TM4**2)/VINT(2)
29187         TAUMX2=1D0
29188 C...3) due to limits on pT-hat and cos(theta-hat)
29189         CTH2MN=MIN(CKIN(27)**2,CKIN(28)**2)
29190         CTH2MX=MAX(CKIN(27)**2,CKIN(28)**2)
29191         TAUMN3=0D0
29192         IF(CKIN(27)*CKIN(28).GT.0D0) TAUMN3=
29193      &  (SQRT(SQM3+PTHMIN**2/(1D0-CTH2MN))+
29194      &  SQRT(SQM4+PTHMIN**2/(1D0-CTH2MN)))**2/VINT(2)
29195         TAUMX3=1D0
29196         IF(CKIN(4).GE.0D0.AND.CTH2MX.LT.1D0) TAUMX3=
29197      &  (SQRT(SQM3+CKIN(4)**2/(1D0-CTH2MX))+
29198      &  SQRT(SQM4+CKIN(4)**2/(1D0-CTH2MX)))**2/VINT(2)
29199 C...4) due to limits on x1 and x2
29200         TAUMN4=CKIN(21)*CKIN(23)
29201         TAUMX4=CKIN(22)*CKIN(24)
29202 C...5) due to limits on xF
29203         TAUMN5=0D0
29204         TAUMX5=MAX(1D0-CKIN(25),1D0+CKIN(26))
29205 C...6) due to limits on that and uhat
29206         TAUMN6=(SQM3+SQM4+CKIN(35)+CKIN(37))/VINT(2)
29207         TAUMX6=1D0
29208         IF(CKIN(36).GT.0D0.AND.CKIN(38).GT.0D0) TAUMX6=
29209      &  (SQM3+SQM4+CKIN(36)+CKIN(38))/VINT(2)
29210  
29211 C...Net effect of all separate limits.
29212         VINT(11)=MAX(TAUMN0,TAUMN1,TAUMN2,TAUMN3,TAUMN4,TAUMN5,TAUMN6)
29213         VINT(31)=MIN(TAUMX0,TAUMX1,TAUMX2,TAUMX3,TAUMX4,TAUMX5,TAUMX6)
29214         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
29215           VINT(11)=1D0-1D-9
29216           VINT(31)=1D0+1D-9
29217         ELSEIF(MINT(47).EQ.5) THEN
29218           VINT(31)=MIN(VINT(31),1D0-2D-10)
29219         ELSEIF(MINT(47).GE.6) THEN
29220           VINT(31)=MIN(VINT(31),1D0-1D-10)
29221         ENDIF
29222         IF(VINT(31).LE.VINT(11)) MINT(51)=1
29223  
29224       ELSEIF(ILIM.EQ.2) THEN
29225 C...Calculate limits on y*
29226         TAUE=TAU
29227         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
29228         TAURT=SQRT(TAUE)
29229 C...0) due to kinematics
29230         YSTMN0=LOG(TAURT)
29231         YSTMX0=-YSTMN0
29232 C...1) due to explicit limits
29233         YSTMN1=CKIN(7)
29234         YSTMX1=CKIN(8)
29235 C...2) due to limits on x1
29236         YSTMN2=LOG(MAX(TAUE,CKIN(21))/TAURT)
29237         YSTMX2=LOG(MAX(TAUE,CKIN(22))/TAURT)
29238 C...3) due to limits on x2
29239         YSTMN3=-LOG(MAX(TAUE,CKIN(24))/TAURT)
29240         YSTMX3=-LOG(MAX(TAUE,CKIN(23))/TAURT)
29241 C...4) due to limits on xF
29242         YEPMN4=0.5D0*ABS(CKIN(25))/TAURT
29243         YSTMN4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMN4**2)+YEPMN4)),CKIN(25))
29244         YEPMX4=0.5D0*ABS(CKIN(26))/TAURT
29245         YSTMX4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMX4**2)+YEPMX4)),CKIN(26))
29246 C...5) due to simultaneous limits on y-large and y-small
29247         YEPSMN=(RM3-RM4)*SINH(CKIN09-CKIN11)
29248         YEPSMX=(RM3-RM4)*SINH(CKIN10-CKIN12)
29249         YDIFMN=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMN**2)-YEPSMN)))
29250         YDIFMX=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMX**2)-YEPSMX)))
29251         YSTMN5=0.5D0*(CKIN09+CKIN11-YDIFMN)
29252         YSTMX5=0.5D0*(CKIN10+CKIN12+YDIFMX)
29253 C...6) due to simultaneous limits on cos(theta-hat) and y-large or
29254 C...   y-small
29255         CTHLIM=SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAUE*VINT(2))))
29256         RZMN=BE34*MAX(CKIN(27),-CTHLIM)
29257         RZMX=BE34*MIN(CKIN(28),CTHLIM)
29258         YEX3MX=(1D0+RM3-RM4+RZMX)/MAX(1D-10,1D0+RM3-RM4-RZMX)
29259         YEX4MX=(1D0+RM4-RM3-RZMN)/MAX(1D-10,1D0+RM4-RM3+RZMN)
29260         YEX3MN=MAX(1D-10,1D0+RM3-RM4+RZMN)/(1D0+RM3-RM4-RZMN)
29261         YEX4MN=MAX(1D-10,1D0+RM4-RM3-RZMX)/(1D0+RM4-RM3+RZMX)
29262         YSTMN6=CKIN09-0.5D0*LOG(MAX(YEX3MX,YEX4MX))
29263         YSTMX6=CKIN12-0.5D0*LOG(MIN(YEX3MN,YEX4MN))
29264  
29265 C...Net effect of all separate limits.
29266         VINT(12)=MAX(YSTMN0,YSTMN1,YSTMN2,YSTMN3,YSTMN4,YSTMN5,YSTMN6)
29267         VINT(32)=MIN(YSTMX0,YSTMX1,YSTMX2,YSTMX3,YSTMX4,YSTMX5,YSTMX6)
29268         IF(MINT(47).EQ.1) THEN
29269           VINT(12)=-1D-9
29270           VINT(32)=1D-9
29271         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
29272           VINT(12)=(1D0-1D-9)*YSTMX0
29273           VINT(32)=(1D0+1D-9)*YSTMX0
29274         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
29275           VINT(12)=-(1D0+1D-9)*YSTMX0
29276           VINT(32)=-(1D0-1D-9)*YSTMX0
29277         ELSEIF(MINT(47).EQ.5) THEN
29278           YSTEE=LOG((1D0-1D-10)/TAURT)
29279           VINT(12)=MAX(VINT(12),-YSTEE)
29280           VINT(32)=MIN(VINT(32),YSTEE)
29281         ENDIF
29282         IF(VINT(32).LE.VINT(12)) MINT(51)=1
29283  
29284       ELSEIF(ILIM.EQ.3) THEN
29285 C...Calculate limits on cos(theta-hat)
29286         YST=VINT(22)
29287 C...0) due to definition
29288         CTNMN0=-1D0
29289         CTNMX0=0D0
29290         CTPMN0=0D0
29291         CTPMX0=1D0
29292 C...1) due to explicit limits
29293         CTNMN1=MIN(0D0,CKIN(27))
29294         CTNMX1=MIN(0D0,CKIN(28))
29295         CTPMN1=MAX(0D0,CKIN(27))
29296         CTPMX1=MAX(0D0,CKIN(28))
29297 C...2) due to limits on pT-hat
29298         CTNMN2=-SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAU*VINT(2))))
29299         CTPMX2=-CTNMN2
29300         CTNMX2=0D0
29301         CTPMN2=0D0
29302         IF(CKIN(4).GE.0D0) THEN
29303           CTNMX2=-SQRT(MAX(0D0,1D0-4D0*CKIN(4)**2/
29304      &    (BE34**2*TAU*VINT(2))))
29305           CTPMN2=-CTNMX2
29306         ENDIF
29307 C...3) due to limits on y-large and y-small
29308         CTNMN3=MIN(0D0,MAX((1D0+RM3-RM4)/BE34*TANH(CKIN11-YST),
29309      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN10-YST)))
29310         CTNMX3=MIN(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN12-YST),
29311      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN09-YST))
29312         CTPMN3=MAX(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN09-YST),
29313      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN12-YST))
29314         CTPMX3=MAX(0D0,MIN((1D0+RM3-RM4)/BE34*TANH(CKIN10-YST),
29315      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN11-YST)))
29316 C...4) due to limits on that
29317         CTNMN4=-1D0
29318         CTNMX4=0D0
29319         CTPMN4=0D0
29320         CTPMX4=1D0
29321         SH=TAU*VINT(2)
29322         IF(CKIN(35).GT.0D0) THEN
29323           CTLIM=(1D0-RM3-RM4-2D0*CKIN(35)/SH)/BE34
29324           IF(CTLIM.GT.0D0) THEN
29325             CTPMX4=CTLIM
29326           ELSE
29327             CTPMX4=0D0
29328             CTNMX4=CTLIM
29329           ENDIF
29330         ENDIF
29331         IF(CKIN(36).GT.0D0) THEN
29332           CTLIM=(1D0-RM3-RM4-2D0*CKIN(36)/SH)/BE34
29333           IF(CTLIM.LT.0D0) THEN
29334             CTNMN4=CTLIM
29335           ELSE
29336             CTNMN4=0D0
29337             CTPMN4=CTLIM
29338           ENDIF
29339         ENDIF
29340 C...5) due to limits on uhat
29341         CTNMN5=-1D0
29342         CTNMX5=0D0
29343         CTPMN5=0D0
29344         CTPMX5=1D0
29345         IF(CKIN(37).GT.0D0) THEN
29346           CTLIM=(2D0*CKIN(37)/SH-(1D0-RM3-RM4))/BE34
29347           IF(CTLIM.LT.0D0) THEN
29348             CTNMN5=CTLIM
29349           ELSE
29350             CTNMN5=0D0
29351             CTPMN5=CTLIM
29352           ENDIF
29353         ENDIF
29354         IF(CKIN(38).GT.0D0) THEN
29355           CTLIM=(2D0*CKIN(38)/SH-(1D0-RM3-RM4))/BE34
29356           IF(CTLIM.GT.0D0) THEN
29357             CTPMX5=CTLIM
29358           ELSE
29359             CTPMX5=0D0
29360             CTNMX5=CTLIM
29361           ENDIF
29362         ENDIF
29363  
29364 C...Net effect of all separate limits.
29365         VINT(13)=MAX(CTNMN0,CTNMN1,CTNMN2,CTNMN3,CTNMN4,CTNMN5)
29366         VINT(33)=MIN(CTNMX0,CTNMX1,CTNMX2,CTNMX3,CTNMX4,CTNMX5)
29367         VINT(14)=MAX(CTPMN0,CTPMN1,CTPMN2,CTPMN3,CTPMN4,CTPMN5)
29368         VINT(34)=MIN(CTPMX0,CTPMX1,CTPMX2,CTPMX3,CTPMX4,CTPMX5)
29369         IF(VINT(33).LE.VINT(13).AND.VINT(34).LE.VINT(14)) MINT(51)=1
29370 
29371         IF(VINT(14).GT.VINT(34)) VINT(34)=VINT(14)
29372         IF(VINT(13).GT.VINT(33)) VINT(33)=VINT(13)
29373 
29374       ELSEIF(ILIM.EQ.4) THEN
29375 C...Calculate limits on tau'
29376 C...0) due to kinematics
29377         TAPMN0=TAU
29378         IF(ISTSB.EQ.5.AND.VINT(201).GT.0D0) THEN
29379           PQRAT=(VINT(201)+VINT(206))/VINT(1)
29380           TAPMN0=(SQRT(TAU)+PQRAT)**2
29381         ENDIF
29382         TAPMX0=1D0
29383 C...1) due to explicit limits
29384         TAPMN1=CKIN(31)**2/VINT(2)
29385         TAPMX1=1D0
29386         IF(CKIN(32).GE.0D0) TAPMX1=CKIN(32)**2/VINT(2)
29387  
29388 C...Net effect of all separate limits.
29389         VINT(16)=MAX(TAPMN0,TAPMN1)
29390         VINT(36)=MIN(TAPMX0,TAPMX1)
29391         IF(MINT(47).EQ.1) THEN
29392           VINT(16)=1D0-1D-9
29393           VINT(36)=1D0+1D-9
29394         ELSEIF(MINT(47).EQ.5) THEN
29395           VINT(36)=MIN(VINT(36),1D0-2D-10)
29396         ELSEIF(MINT(47).EQ.6.OR.MINT(47).EQ.7) THEN
29397           VINT(36)=MIN(VINT(36),1D0-1D-10)
29398         ENDIF
29399         IF(VINT(36).LE.VINT(16)) MINT(51)=1
29400  
29401       ENDIF
29402       RETURN
29403  
29404 C...Special case for low-pT and multiple interactions:
29405 C...effective kinematical limits for tau, y*, cos(theta-hat).
29406   100 IF(ILIM.EQ.0) THEN
29407       ELSEIF(ILIM.EQ.1) THEN
29408         IF(MSTP(82).LE.1) THEN
29409           VINT(11)=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
29410      &    VINT(2)
29411         ELSE
29412           VINT(11)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/VINT(2)
29413         ENDIF
29414         VINT(31)=1D0
29415       ELSEIF(ILIM.EQ.2) THEN
29416         VINT(12)=0.5D0*LOG(VINT(21))
29417         VINT(32)=-VINT(12)
29418       ELSEIF(ILIM.EQ.3) THEN
29419         IF(MSTP(82).LE.1) THEN
29420           ST2EFF=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
29421      &    (VINT(21)*VINT(2))
29422         ELSE
29423           ST2EFF=0.01D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
29424      &    (VINT(21)*VINT(2))
29425         ENDIF
29426         VINT(13)=-SQRT(MAX(0D0,1D0-ST2EFF))
29427         VINT(33)=0D0
29428         VINT(14)=0D0
29429         VINT(34)=-VINT(13)
29430       ENDIF
29431  
29432       RETURN
29433       END
29434  
29435 C*********************************************************************
29436  
29437 C...PYKMAP
29438 C...Maps a uniform distribution into a distribution of a kinematical
29439 C...variable according to one of the possibilities allowed. It is
29440 C...assumed that kinematical limits have been set by a PYKLIM call.
29441  
29442       SUBROUTINE PYKMAP(IVAR,MVAR,VVAR)
29443  
29444 C...Double precision and integer declarations.
29445       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29446       IMPLICIT INTEGER(I-N)
29447       INTEGER PYK,PYCHGE,PYCOMP
29448 C...Commonblocks.
29449       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29450       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29451       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
29452       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29453       COMMON/PYINT1/MINT(400),VINT(400)
29454       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
29455       SAVE /PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
29456  
29457 C...Convert VVAR to tau variable.
29458       ISUB=MINT(1)
29459       ISTSB=ISET(ISUB)
29460       IF(IVAR.EQ.1) THEN
29461         TAUMIN=VINT(11)
29462         TAUMAX=VINT(31)
29463         IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
29464           TAURE=VINT(73)
29465           GAMRE=VINT(74)
29466         ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
29467           TAURE=VINT(75)
29468           GAMRE=VINT(76)
29469         ELSEIF(MVAR.EQ.8.OR.MVAR.EQ.9) THEN
29470           TAURE=VINT(77)
29471           GAMRE=VINT(78)
29472         ENDIF
29473         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
29474           TAU=1D0
29475         ELSEIF(MVAR.EQ.1) THEN
29476           TAU=TAUMIN*(TAUMAX/TAUMIN)**VVAR
29477         ELSEIF(MVAR.EQ.2) THEN
29478           TAU=TAUMAX*TAUMIN/(TAUMIN+(TAUMAX-TAUMIN)*VVAR)
29479         ELSEIF(MVAR.EQ.3.OR.MVAR.EQ.5.OR.MVAR.EQ.8) THEN
29480           RATGEN=(TAURE+TAUMAX)/(TAURE+TAUMIN)*TAUMIN/TAUMAX
29481           TAU=TAURE*TAUMIN/((TAURE+TAUMIN)*RATGEN**VVAR-TAUMIN)
29482         ELSEIF(MVAR.EQ.4.OR.MVAR.EQ.6.OR.MVAR.EQ.9) THEN
29483           AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
29484           ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
29485           TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
29486         ELSEIF(MINT(47).EQ.5) THEN
29487           AUPP=LOG(MAX(2D-10,1D0-TAUMAX))
29488           ALOW=LOG(MAX(2D-10,1D0-TAUMIN))
29489           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
29490         ELSE
29491           AUPP=LOG(MAX(1D-10,1D0-TAUMAX))
29492           ALOW=LOG(MAX(1D-10,1D0-TAUMIN))
29493           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
29494         ENDIF
29495         VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
29496  
29497 C...Convert VVAR to y* variable.
29498       ELSEIF(IVAR.EQ.2) THEN
29499         YSTMIN=VINT(12)
29500         YSTMAX=VINT(32)
29501         TAUE=VINT(21)
29502         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
29503         IF(MINT(47).EQ.1) THEN
29504           YST=0D0
29505         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
29506           YST=-0.5D0*LOG(TAUE)
29507         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
29508           YST=0.5D0*LOG(TAUE)
29509         ELSEIF(MVAR.EQ.1) THEN
29510           YST=YSTMIN+(YSTMAX-YSTMIN)*SQRT(VVAR)
29511         ELSEIF(MVAR.EQ.2) THEN
29512           YST=YSTMAX-(YSTMAX-YSTMIN)*SQRT(1D0-VVAR)
29513         ELSEIF(MVAR.EQ.3) THEN
29514           AUPP=ATAN(EXP(YSTMAX))
29515           ALOW=ATAN(EXP(YSTMIN))
29516           YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
29517         ELSEIF(MVAR.EQ.4) THEN
29518           YST0=-0.5D0*LOG(TAUE)
29519           AUPP=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0))
29520           ALOW=LOG(MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
29521           YST=YST0-LOG(1D0+EXP(ALOW+VVAR*(AUPP-ALOW)))
29522         ELSE
29523           YST0=-0.5D0*LOG(TAUE)
29524           AUPP=LOG(MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
29525           ALOW=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0))
29526           YST=LOG(1D0+EXP(AUPP+VVAR*(ALOW-AUPP)))-YST0
29527         ENDIF
29528         VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
29529  
29530 C...Convert VVAR to cos(theta-hat) variable.
29531       ELSEIF(IVAR.EQ.3) THEN
29532         RM34=MAX(1D-20,2D0*VINT(63)*VINT(64)/(VINT(21)*VINT(2))**2)
29533         RSQM=1D0+RM34
29534         IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
29535      &  RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
29536         CTNMIN=VINT(13)
29537         CTNMAX=VINT(33)
29538         CTPMIN=VINT(14)
29539         CTPMAX=VINT(34)
29540         IF(MVAR.EQ.1) THEN
29541           ANEG=CTNMAX-CTNMIN
29542           APOS=CTPMAX-CTPMIN
29543           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
29544             VCTN=VVAR*(ANEG+APOS)/ANEG
29545             CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
29546           ELSE
29547             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
29548             CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
29549           ENDIF
29550         ELSEIF(MVAR.EQ.2) THEN
29551           RMNMIN=MAX(RM34,RSQM-CTNMIN)
29552           RMNMAX=MAX(RM34,RSQM-CTNMAX)
29553           RMPMIN=MAX(RM34,RSQM-CTPMIN)
29554           RMPMAX=MAX(RM34,RSQM-CTPMAX)
29555           ANEG=LOG(RMNMIN/RMNMAX)
29556           APOS=LOG(RMPMIN/RMPMAX)
29557           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
29558             VCTN=VVAR*(ANEG+APOS)/ANEG
29559             CTH=RSQM-RMNMIN*(RMNMAX/RMNMIN)**VCTN
29560           ELSE
29561             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
29562             CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
29563           ENDIF
29564         ELSEIF(MVAR.EQ.3) THEN
29565           RMNMIN=MAX(RM34,RSQM+CTNMIN)
29566           RMNMAX=MAX(RM34,RSQM+CTNMAX)
29567           RMPMIN=MAX(RM34,RSQM+CTPMIN)
29568           RMPMAX=MAX(RM34,RSQM+CTPMAX)
29569           ANEG=LOG(RMNMAX/RMNMIN)
29570           APOS=LOG(RMPMAX/RMPMIN)
29571           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
29572             VCTN=VVAR*(ANEG+APOS)/ANEG
29573             CTH=RMNMIN*(RMNMAX/RMNMIN)**VCTN-RSQM
29574           ELSE
29575             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
29576             CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
29577           ENDIF
29578         ELSEIF(MVAR.EQ.4) THEN
29579           RMNMIN=MAX(RM34,RSQM-CTNMIN)
29580           RMNMAX=MAX(RM34,RSQM-CTNMAX)
29581           RMPMIN=MAX(RM34,RSQM-CTPMIN)
29582           RMPMAX=MAX(RM34,RSQM-CTPMAX)
29583           ANEG=1D0/RMNMAX-1D0/RMNMIN
29584           APOS=1D0/RMPMAX-1D0/RMPMIN
29585           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
29586             VCTN=VVAR*(ANEG+APOS)/ANEG
29587             CTH=RSQM-1D0/(1D0/RMNMIN+ANEG*VCTN)
29588           ELSE
29589             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
29590             CTH=RSQM-1D0/(1D0/RMPMIN+APOS*VCTP)
29591           ENDIF
29592         ELSEIF(MVAR.EQ.5) THEN
29593           RMNMIN=MAX(RM34,RSQM+CTNMIN)
29594           RMNMAX=MAX(RM34,RSQM+CTNMAX)
29595           RMPMIN=MAX(RM34,RSQM+CTPMIN)
29596           RMPMAX=MAX(RM34,RSQM+CTPMAX)
29597           ANEG=1D0/RMNMIN-1D0/RMNMAX
29598           APOS=1D0/RMPMIN-1D0/RMPMAX
29599           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
29600             VCTN=VVAR*(ANEG+APOS)/ANEG
29601             CTH=1D0/(1D0/RMNMIN-ANEG*VCTN)-RSQM
29602           ELSE
29603             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
29604             CTH=1D0/(1D0/RMPMIN-APOS*VCTP)-RSQM
29605           ENDIF
29606         ENDIF
29607         IF(CTH.LT.0D0) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
29608         IF(CTH.GT.0D0) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
29609         VINT(23)=CTH
29610  
29611 C...Convert VVAR to tau' variable.
29612       ELSEIF(IVAR.EQ.4) THEN
29613         TAU=VINT(21)
29614         TAUPMN=VINT(16)
29615         TAUPMX=VINT(36)
29616         IF(MINT(47).EQ.1) THEN
29617           TAUP=1D0
29618         ELSEIF(MVAR.EQ.1) THEN
29619           TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
29620         ELSEIF(MVAR.EQ.2) THEN
29621           AUPP=(1D0-TAU/TAUPMX)**4
29622           ALOW=(1D0-TAU/TAUPMN)**4
29623           TAUP=TAU/MAX(1D-10,1D0-(ALOW+(AUPP-ALOW)*VVAR)**0.25D0)
29624         ELSEIF(MINT(47).EQ.5) THEN
29625           AUPP=LOG(MAX(2D-10,1D0-TAUPMX))
29626           ALOW=LOG(MAX(2D-10,1D0-TAUPMN))
29627           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
29628         ELSE
29629           AUPP=LOG(MAX(1D-10,1D0-TAUPMX))
29630           ALOW=LOG(MAX(1D-10,1D0-TAUPMN))
29631           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
29632         ENDIF
29633         VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))
29634  
29635 C...Selection of extra variables needed in 2 -> 3 process:
29636 C...pT1, pT2, phi1, phi2, y3 for three outgoing particles.
29637 C...Since no options are available, the functions of PYKLIM
29638 C...and PYKMAP are joint for these choices.
29639       ELSEIF(IVAR.EQ.5) THEN
29640  
29641 C...Read out total energy and particle masses.
29642         MINT(51)=0
29643         MPTPK=1
29644         IF(ISUB.EQ.123.OR.ISUB.EQ.124.OR.ISUB.EQ.173.OR.ISUB.EQ.174
29645      &  .OR.ISUB.EQ.178.OR.ISUB.EQ.179.OR.ISUB.EQ.351.OR.ISUB.EQ.352)
29646      &  MPTPK=2
29647         SHP=VINT(26)*VINT(2)
29648         SHPR=SQRT(SHP)
29649         PM1=VINT(201)
29650         PM2=VINT(206)
29651         PM3=SQRT(VINT(21))*VINT(1)
29652         IF(PM1+PM2+PM3.GT.0.9999D0*SHPR) THEN
29653           MINT(51)=1
29654           RETURN
29655         ENDIF
29656         PMRS1=VINT(204)**2
29657         PMRS2=VINT(209)**2
29658  
29659 C...Specify coefficients of pT choice; upper and lower limits.
29660         IF(MPTPK.EQ.1) THEN
29661           HWT1=0.4D0
29662           HWT2=0.4D0
29663         ELSE
29664           HWT1=0.05D0
29665           HWT2=0.05D0
29666         ENDIF
29667         HWT3=1D0-HWT1-HWT2
29668         PTSMX1=((SHP-PM1**2-(PM2+PM3)**2)**2-(2D0*PM1*(PM2+PM3))**2)/
29669      &  (4D0*SHP)
29670         IF(CKIN(52).GT.0D0) PTSMX1=MIN(PTSMX1,CKIN(52)**2)
29671         PTSMN1=CKIN(51)**2
29672         PTSMX2=((SHP-PM2**2-(PM1+PM3)**2)**2-(2D0*PM2*(PM1+PM3))**2)/
29673      &  (4D0*SHP)
29674         IF(CKIN(54).GT.0D0) PTSMX2=MIN(PTSMX2,CKIN(54)**2)
29675         PTSMN2=CKIN(53)**2
29676  
29677 C...Select transverse momenta according to
29678 C...dp_T^2 * (a + b/(M^2 + p_T^2) + c/(M^2 + p_T^2)^2).
29679         HMX=PMRS1+PTSMX1
29680         HMN=PMRS1+PTSMN1
29681         IF(HMX.LT.1.0001D0*HMN) THEN
29682           MINT(51)=1
29683           RETURN
29684         ENDIF
29685         HDE=PTSMX1-PTSMN1
29686         RPT=PYR(0)
29687         IF(RPT.LT.HWT1) THEN
29688           PTS1=PTSMN1+PYR(0)*HDE
29689         ELSEIF(RPT.LT.HWT1+HWT2) THEN
29690           PTS1=MAX(PTSMN1,HMN*(HMX/HMN)**PYR(0)-PMRS1)
29691         ELSE
29692           PTS1=MAX(PTSMN1,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS1)
29693         ENDIF
29694         WTPTS1=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS1+PTS1))+
29695      &  HWT3*HMN*HMX/(PMRS1+PTS1)**2)
29696         HMX=PMRS2+PTSMX2
29697         HMN=PMRS2+PTSMN2
29698         IF(HMX.LT.1.0001D0*HMN) THEN
29699           MINT(51)=1
29700           RETURN
29701         ENDIF
29702         HDE=PTSMX2-PTSMN2
29703         RPT=PYR(0)
29704         IF(RPT.LT.HWT1) THEN
29705           PTS2=PTSMN2+PYR(0)*HDE
29706         ELSEIF(RPT.LT.HWT1+HWT2) THEN
29707           PTS2=MAX(PTSMN2,HMN*(HMX/HMN)**PYR(0)-PMRS2)
29708         ELSE
29709           PTS2=MAX(PTSMN2,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS2)
29710         ENDIF
29711         WTPTS2=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS2+PTS2))+
29712      &  HWT3*HMN*HMX/(PMRS2+PTS2)**2)
29713  
29714 C...Select azimuthal angles and check pT choice.
29715         PHI1=PARU(2)*PYR(0)
29716         PHI2=PARU(2)*PYR(0)
29717         PHIR=PHI2-PHI1
29718         PTS3=MAX(0D0,PTS1+PTS2+2D0*SQRT(PTS1*PTS2)*COS(PHIR))
29719         IF(PTS3.LT.CKIN(55)**2.OR.(CKIN(56).GT.0D0.AND.PTS3.GT.
29720      &  CKIN(56)**2)) THEN
29721           MINT(51)=1
29722           RETURN
29723         ENDIF
29724  
29725 C...Calculate transverse masses and check phase space not closed.
29726         PMS1=PM1**2+PTS1
29727         PMS2=PM2**2+PTS2
29728         PMS3=PM3**2+PTS3
29729         PMT1=SQRT(PMS1)
29730         PMT2=SQRT(PMS2)
29731         PMT3=SQRT(PMS3)
29732         PM12=(PMT1+PMT2)**2
29733         IF(PMT1+PMT2+PMT3.GT.0.9999D0*SHPR) THEN
29734           MINT(51)=1
29735           RETURN
29736         ENDIF
29737  
29738 C...Select rapidity for particle 3 and check phase space not closed.
29739         Y3MAX=LOG((SHP+PMS3-PM12+SQRT(MAX(0D0,(SHP-PMS3-PM12)**2-
29740      &  4D0*PMS3*PM12)))/(2D0*SHPR*PMT3))
29741         IF(Y3MAX.LT.1D-6) THEN
29742           MINT(51)=1
29743           RETURN
29744         ENDIF
29745         Y3=(2D0*PYR(0)-1D0)*0.999999D0*Y3MAX
29746         PZ3=PMT3*SINH(Y3)
29747         PE3=PMT3*COSH(Y3)
29748  
29749 C...Find momentum transfers in two mirror solutions (in 1-2 frame).
29750         PZ12=-PZ3
29751         PE12=SHPR-PE3
29752         PMS12=PE12**2-PZ12**2
29753         SQL12=SQRT(MAX(0D0,(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2))
29754         IF(SQL12.LT.1D-6*SHP) THEN
29755           MINT(51)=1
29756           RETURN
29757         ENDIF
29758         PMM1=PMS12+PMS1-PMS2
29759         PMM2=PMS12+PMS2-PMS1
29760         TFAC=-SHPR/(2D0*PMS12)
29761         T1P=TFAC*(PE12-PZ12)*(PMM1-SQL12)
29762         T1N=TFAC*(PE12-PZ12)*(PMM1+SQL12)
29763         T2P=TFAC*(PE12+PZ12)*(PMM2-SQL12)
29764         T2N=TFAC*(PE12+PZ12)*(PMM2+SQL12)
29765  
29766 C...Construct relative mirror weights and make choice.
29767         IF(MPTPK.EQ.1.OR.ISUB.EQ.351.OR.ISUB.EQ.352) THEN
29768           WTPU=1D0
29769           WTNU=1D0
29770         ELSE
29771           WTPU=1D0/((T1P-PMRS1)*(T2P-PMRS2))**2
29772           WTNU=1D0/((T1N-PMRS1)*(T2N-PMRS2))**2
29773         ENDIF
29774         WTP=WTPU/(WTPU+WTNU)
29775         WTN=WTNU/(WTPU+WTNU)
29776         EPS=1D0
29777         IF(WTN.GT.PYR(0)) EPS=-1D0
29778  
29779 C...Store result of variable choice and associated weights.
29780         VINT(202)=PTS1
29781         VINT(207)=PTS2
29782         VINT(203)=PHI1
29783         VINT(208)=PHI2
29784         VINT(205)=WTPTS1
29785         VINT(210)=WTPTS2
29786         VINT(211)=Y3
29787         VINT(212)=Y3MAX
29788         VINT(213)=EPS
29789         IF(EPS.GT.0D0) THEN
29790           VINT(214)=1D0/WTP
29791           VINT(215)=T1P
29792           VINT(216)=T2P
29793         ELSE
29794           VINT(214)=1D0/WTN
29795           VINT(215)=T1N
29796           VINT(216)=T2N
29797         ENDIF
29798         VINT(217)=-0.5D0*TFAC*(PE12-PZ12)*(PMM2+EPS*SQL12)
29799         VINT(218)=-0.5D0*TFAC*(PE12+PZ12)*(PMM1+EPS*SQL12)
29800         VINT(219)=0.5D0*(PMS12-PTS3)
29801         VINT(220)=SQL12
29802       ENDIF
29803  
29804       RETURN
29805       END
29806  
29807 C***********************************************************************
29808  
29809 C...PYSIGH
29810 C...Differential matrix elements for all included subprocesses
29811 C...Note that what is coded is (disregarding the COMFAC factor)
29812 C...1) for 2 -> 1 processes: s-hat/pi*d(sigma-hat), where,
29813 C...when d(sigma-hat) is given in the zero-width limit, the delta
29814 C...function in tau is replaced by a (modified) Breit-Wigner:
29815 C...1/pi*s*H_res/((s*tau-m_res^2)^2+H_res^2),
29816 C...where H_res = s-hat/m_res*Gamma_res(s-hat);
29817 C...2) for 2 -> 2 processes: (s-hat)**2/pi*d(sigma-hat)/d(t-hat);
29818 C...i.e., dimensionless quantities
29819 C...3) for 2 -> 3 processes: abs(M)^2, where the total cross-section is
29820 C...Integral abs(M)^2/(2shat') * (prod_(i=1)^3 d^3p_i/((2pi)^3*2E_i)) *
29821 C...(2pi)^4 delta^4(P - sum p_i)
29822 C...COMFAC contains the factor pi/s (or equivalent) and
29823 C...the conversion factor from GeV^-2 to mb
29824  
29825       SUBROUTINE PYSIGH(NCHN,SIGS)
29826  
29827 C...Double precision and integer declarations
29828       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29829       IMPLICIT INTEGER(I-N)
29830       INTEGER PYK,PYCHGE,PYCOMP
29831 C...Parameter statement to help give large particle numbers.
29832       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
29833      &KEXCIT=4000000,KDIMEN=5000000)
29834 C...Commonblocks
29835       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
29836       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29837       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29838       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
29839       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
29840       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29841       COMMON/PYINT1/MINT(400),VINT(400)
29842       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
29843       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
29844       COMMON/PYINT4/MWID(500),WIDS(500,5)
29845       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
29846       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
29847       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
29848       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
29849      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
29850       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
29851       COMMON/PYPUED/IUED(0:99),RUED(0:99)
29852       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
29853      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
29854      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
29855      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
29856       COMMON/PYTCCO/COEFX(194:380,2)
29857       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
29858      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,
29859      &/PYMSSM/,/PYSSMT/,/PYTCSM/,/PYPUED/,/PYSGCM/,/PYTCCO/
29860 C...Local arrays and complex variables
29861       DIMENSION XPQ(-25:25)
29862  
29863 C...Map of processes onto which routine to call
29864 C...in order to evaluate cross section:
29865 C...0 = not implemented;
29866 C...1 = standard QCD (including photons);
29867 C...2 = heavy flavours;
29868 C...3 = W/Z;
29869 C...4 = Higgs (2 doublets; including longitudinal W/Z scattering);
29870 C...5 = SUSY;
29871 C...6 = Technicolor;
29872 C...7 = exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
29873 C...8 = Universal Extra Dimensions
29874       DIMENSION MAPPR(500)
29875       DATA (MAPPR(I),I=1,180)/
29876      &    3,  3,  4,  0,  4,  0,  0,  4,  0,  1,
29877      1    1,  1,  1,  1,  3,  3,  0,  1,  3,  3,
29878      2    0,  3,  3,  4,  3,  4,  0,  1,  1,  3,
29879      3    3,  4,  1,  1,  3,  3,  0,  0,  0,  0,
29880      4    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
29881      5    0,  0,  1,  1,  0,  0,  0,  1,  0,  0,
29882      6    0,  0,  0,  0,  0,  0,  0,  1,  3,  3,
29883      7    4,  4,  4,  0,  0,  4,  4,  0,  0,  1,
29884      8    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
29885      9    1,  1,  1,  1,  1,  1,  0,  0,  1,  0,
29886      &    0,  4,  4,  2,  2,  2,  2,  2,  0,  4,
29887      1    4,  4,  4,  1,  1,  0,  0,  0,  0,  0,
29888      2    4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
29889      3    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
29890      4    7,  7,  4,  7,  7,  7,  7,  7,  6,  0,
29891      5    4,  4,  4,  0,  0,  4,  4,  4,  0,  0,
29892      6    4,  7,  7,  7,  6,  6,  7,  7,  7,  0,
29893      7    4,  4,  4,  4,  0,  4,  4,  4,  4,  0/
29894       DATA (MAPPR(I),I=181,500)/
29895      8    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
29896      9    6,  6,  6,  6,  6,  0,  0,  0,  0,  0,
29897      &    100*5,
29898      &    5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
29899      &    8,  8,  8,  8,  8,  8,  8,  8,  8,  0,
29900      1    20*0,
29901      4    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
29902      5    7,  7,  7,  7,  0,  0,  0,  0,  0,  0,
29903      6    6,  6,  6,  6,  6,  6,  6,  6,  0,  6,
29904      7    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
29905      8    6,  6,  6,  6,  6,  6,  6,  6,  0,  0,
29906      9    7,  7,  7,  7,  7,  0,  0,  0,  0,  0,
29907      &    4,  4,  18*0,
29908      2    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
29909      3    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
29910      4     20*0,
29911      6    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
29912      7    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
29913      8    7,  7,  18*0/ 
29914  
29915 C...Reset number of channels and cross-section
29916       NCHN=0
29917       SIGS=0D0
29918  
29919 C...Read process to consider.
29920       ISUB=MINT(1)
29921       ISUBSV=ISUB
29922       MAP=MAPPR(ISUB)
29923  
29924 C...Read kinematical variables and limits
29925       ISTSB=ISET(ISUBSV)
29926       TAUMIN=VINT(11)
29927       YSTMIN=VINT(12)
29928       CTNMIN=VINT(13)
29929       CTPMIN=VINT(14)
29930       TAUPMN=VINT(16)
29931       TAU=VINT(21)
29932       YST=VINT(22)
29933       CTH=VINT(23)
29934       XT2=VINT(25)
29935       TAUP=VINT(26)
29936       TAUMAX=VINT(31)
29937       YSTMAX=VINT(32)
29938       CTNMAX=VINT(33)
29939       CTPMAX=VINT(34)
29940       TAUPMX=VINT(36)
29941  
29942 C...Derive kinematical quantities
29943       TAUE=TAU
29944       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
29945       X(1)=SQRT(TAUE)*EXP(YST)
29946       X(2)=SQRT(TAUE)*EXP(-YST)
29947       IF(MINT(45).EQ.2.AND.ISTSB.GE.1) THEN
29948         IF(X(1).GT.1D0-1D-7) RETURN
29949       ELSEIF(MINT(45).EQ.3) THEN
29950         X(1)=MIN(1D0-1.1D-10,X(1))
29951       ENDIF
29952       IF(MINT(46).EQ.2.AND.ISTSB.GE.1) THEN
29953         IF(X(2).GT.1D0-1D-7) RETURN
29954       ELSEIF(MINT(46).EQ.3) THEN
29955         X(2)=MIN(1D0-1.1D-10,X(2))
29956       ENDIF
29957       SH=MAX(1D0,TAU*VINT(2))
29958       SQM3=VINT(63)
29959       SQM4=VINT(64)
29960       RM3=SQM3/SH
29961       RM4=SQM4/SH
29962       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
29963       RPTS=4D0*VINT(71)**2/SH
29964       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
29965       RM34=MAX(1D-20,2D0*RM3*RM4)
29966       RSQM=1D0+RM34
29967       IF(2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)).LT.0.0001D0)
29968      &RM34=MAX(RM34,2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)))
29969       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
29970       IF(ISTSB.EQ.0) THEN
29971         TH=VINT(45)
29972         UH=-0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
29973         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*VINT(59)**2)
29974       ELSE
29975 C...Kinematics with incoming masses tricky: now depends on how
29976 C...subprocess has been set up w.r.t. order of incoming partons.
29977         RM1=0D0
29978         IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) RM1=-VINT(3)**2/SH
29979         RM2=0D0
29980         IF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) RM2=-VINT(4)**2/SH
29981         IF(ISUB.EQ.35) THEN
29982           RM2=MIN(RM1,RM2)
29983           RM1=0D0
29984         ENDIF
29985         BE12=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
29986         TUCOM=(1D0-RM1-RM2)*(1D0-RM3-RM4)
29987         TH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM4-2D0*RM2*RM3-
29988      &  BE12*BE34*CTH)
29989         UH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM3-2D0*RM2*RM4+
29990      &  BE12*BE34*CTH)
29991         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*(1D0-CTH**2))
29992       ENDIF
29993       SHR=SQRT(SH)
29994       SH2=SH**2
29995       TH2=TH**2
29996       UH2=UH**2
29997  
29998 C...Choice of Q2 scale for hard process (e.g. alpha_s).
29999       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
30000         Q2=SH
30001       ELSEIF(ISTSB.EQ.8) THEN
30002         IF(MINT(107).EQ.4) Q2=VINT(307)
30003         IF(MINT(108).EQ.4) Q2=VINT(308)
30004       ELSEIF(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9) THEN
30005         Q2IN1=0D0
30006         IF(MINT(11).EQ.22.AND.VINT(3).LT.0D0) Q2IN1=VINT(3)**2
30007         Q2IN2=0D0
30008         IF(MINT(12).EQ.22.AND.VINT(4).LT.0D0) Q2IN2=VINT(4)**2
30009         IF(MSTP(32).EQ.1) THEN
30010           Q2=2D0*SH*TH*UH/(SH**2+TH**2+UH**2)
30011         ELSEIF(MSTP(32).EQ.2) THEN
30012           Q2=SQPTH+0.5D0*(SQM3+SQM4)
30013         ELSEIF(MSTP(32).EQ.3) THEN
30014           Q2=MIN(-TH,-UH)
30015         ELSEIF(MSTP(32).EQ.4) THEN
30016           Q2=SH
30017         ELSEIF(MSTP(32).EQ.5) THEN
30018           Q2=-TH
30019         ELSEIF(MSTP(32).EQ.6) THEN
30020           XSF1=X(1)
30021           IF(ISTSB.EQ.9) XSF1=X(1)/VINT(143)
30022           XSF2=X(2)
30023           IF(ISTSB.EQ.9) XSF2=X(2)/VINT(144)
30024           Q2=(1D0+XSF1*Q2IN1/SH+XSF2*Q2IN2/SH)*
30025      &    (SQPTH+0.5D0*(SQM3+SQM4))
30026         ELSEIF(MSTP(32).EQ.7) THEN
30027           Q2=(1D0+Q2IN1/SH+Q2IN2/SH)*(SQPTH+0.5D0*(SQM3+SQM4))
30028         ELSEIF(MSTP(32).EQ.8) THEN
30029           Q2=SQPTH+0.5D0*(Q2IN1+Q2IN2+SQM3+SQM4)
30030         ELSEIF(MSTP(32).EQ.9) THEN
30031           Q2=SQPTH+Q2IN1+Q2IN2+SQM3+SQM4
30032         ELSEIF(MSTP(32).EQ.10) THEN
30033           Q2=VINT(2)
30034 C..Begin JA 040914
30035         ELSEIF(MSTP(32).EQ.11) THEN
30036           Q2=0.25*(SQM3+SQM4+2*SQRT(SQM3*SQM4))
30037         ELSEIF(MSTP(32).EQ.12) THEN
30038           Q2=PARP(193)
30039 C..End JA
30040         ELSEIF(MSTP(32).EQ.13) THEN
30041           Q2=SQPTH
30042         ENDIF
30043         IF(MINT(35).LE.2.AND.ISTSB.EQ.9) Q2=SQPTH
30044         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2=Q2+
30045      &  (PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
30046       ENDIF
30047  
30048 C...Choice of Q2 scale for parton densities.
30049       Q2SF=Q2
30050 C..Begin JA 040914
30051       IF(MSTP(32).EQ.12.AND.(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9)
30052      &     .OR.MSTP(39).EQ.8.AND.(ISTSB.GE.3.AND.ISTSB.LE.5))
30053      &     Q2=PARP(194)
30054 C..End JA
30055       IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
30056         Q2SF=PMAS(23,1)**2
30057         IF(ISUB.EQ.8.OR.ISUB.EQ.76.OR.ISUB.EQ.77.OR.ISUB.EQ.124.OR.
30058      &  ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351) Q2SF=PMAS(24,1)**2 
30059         IF(ISUB.EQ.352) Q2SF=PMAS(PYCOMP(9900024),1)**2
30060         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
30061      &  ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402) THEN
30062           Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,2)),1)**2
30063           IF(MSTP(39).EQ.2) Q2SF=
30064      &         MAX(VINT(201)**2+VINT(202),VINT(206)**2+VINT(207))
30065           IF(MSTP(39).EQ.3) Q2SF=SH
30066           IF(MSTP(39).EQ.4) Q2SF=VINT(26)*VINT(2)
30067           IF(MSTP(39).EQ.5) Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,1)),1)**2
30068 C..Begin JA 040914
30069           IF(MSTP(39).EQ.6) Q2SF=0.25*(VINT(201)+SQRT(SH))**2
30070           IF(MSTP(39).EQ.7) Q2SF=
30071      &         (VINT(201)**2+VINT(202)+VINT(206)**2+VINT(207))/2d0
30072           IF(MSTP(39).EQ.8) Q2SF=PARP(193)
30073 C..End JA
30074         ENDIF
30075       ENDIF
30076       IF(MINT(35).GE.3.AND.ISTSB.EQ.9) Q2SF=SQPTH
30077  
30078       Q2PS=Q2SF
30079       Q2SF=Q2SF*PARP(34)
30080       IF(MSTP(69).GE.1.AND.MINT(47).EQ.5) Q2SF=VINT(2)
30081       IF(MSTP(69).GE.2) Q2SF=VINT(2)
30082  
30083 C...Identify to which class(es) subprocess belongs
30084       ISMECR=0
30085       ISQCD=0
30086       ISJETS=0
30087       IF (ISUBSV.EQ.1.OR.ISUBSV.EQ.2.OR.ISUBSV.EQ.3.OR.
30088      &     ISUBSV.EQ.102.OR.ISUBSV.EQ.141.OR.ISUBSV.EQ.142.OR.
30089      &     ISUBSV.EQ.144.OR.ISUBSV.EQ.151.OR.ISUBSV.EQ.152.OR.
30090      &     ISUBSV.EQ.156.OR.ISUBSV.EQ.157) ISMECR=1
30091       IF (ISUBSV.EQ.11.OR.ISUBSV.EQ.12.OR.ISUBSV.EQ.13.OR.
30092      &     ISUBSV.EQ.28.OR.ISUBSV.EQ.53.OR.ISUBSV.EQ.68) ISQCD=1
30093       IF ((ISUBSV.EQ.81.OR.ISUBSV.EQ.82).AND.MINT(55).LE.5) ISQCD=1
30094       IF (ISUBSV.GE.381.AND.ISUBSV.LE.386) ISQCD=1
30095       IF ((ISUBSV.EQ.387.OR.ISUBSV.EQ.388).AND.MINT(55).LE.5) ISQCD=1
30096       IF (ISTSB.EQ.9) ISQCD=1
30097       IF ((ISUBSV.GE.86.AND.ISUBSV.LE.89).OR.ISUBSV.EQ.107.OR.
30098      &     (ISUBSV.GE.14.AND.ISUBSV.LE.16).OR.(ISUBSV.GE.29.AND.
30099      &     ISUBSV.LE.32).OR.(ISUBSV.GE.111.AND.ISUBSV.LE.113).OR.
30100      &     ISUBSV.EQ.115.OR.(ISUBSV.GE.183.AND.ISUBSV.LE.185).OR.
30101      &     (ISUBSV.GE.188.AND.ISUBSV.LE.190).OR.ISUBSV.EQ.161.OR.
30102      &     ISUBSV.EQ.167.OR.ISUBSV.EQ.168.OR.(ISUBSV.GE.393.AND.
30103      &     ISUBSV.LE.395).OR.(ISUBSV.GE.421.AND.ISUBSV.LE.439).OR.
30104      &     (ISUBSV.GE.461.AND.ISUBSV.LE.479)) ISJETS=1
30105 C...WBF is special case of ISJETS
30106       IF (ISUBSV.EQ.5.OR.ISUBSV.EQ.8.OR.
30107      &    (ISUBSV.GE.71.AND.ISUBSV.LE.73).OR.
30108      &    ISUBSV.EQ.76.OR.ISUBSV.EQ.77.OR.
30109      &    (ISUBSV.GE.121.AND.ISUBSV.LE.124).OR.
30110      &    ISUBSV.EQ.173.OR.ISUBSV.EQ.174.OR.
30111      &    ISUBSV.EQ.178.OR.ISUBSV.EQ.179.OR.
30112      &    ISUBSV.EQ.181.OR.ISUBSV.EQ.182.OR.
30113      &    ISUBSV.EQ.186.OR.ISUBSV.EQ.187.OR.
30114      &    ISUBSV.EQ.351.OR.ISUBSV.EQ.352) ISJETS=2
30115 C...Some processes with photons also belong here.
30116       IF (ISUBSV.EQ.10.OR.(ISUBSV.GE.18.AND.ISUBSV.LE.20).OR.
30117      &     (ISUBSV.GE.33.AND.ISUBSV.LE.36).OR.ISUBSV.EQ.54.OR.
30118      &     ISUBSV.EQ.58.OR.ISUBSV.EQ.69.OR.ISUBSV.EQ.70.OR.
30119      &     ISUBSV.EQ.80.OR.(ISUBSV.GE.83.AND.ISUBSV.LE.85).OR.
30120      &     (ISUBSV.GE.106.AND.ISUBSV.LE.110).OR.ISUBSV.EQ.114.OR.
30121      &     (ISUBSV.GE.131.AND.ISUBSV.LE.140)) ISJETS=3
30122 
30123 C...Choice of Q2 scale for parton-shower activity.
30124       IF(MSTP(22).GE.1.AND.(ISUB.EQ.10.OR.ISUB.EQ.83).AND.
30125      &(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
30126         XBJ=X(2)
30127         IF(MINT(43).EQ.3) XBJ=X(1)
30128         IF(MSTP(22).EQ.1) THEN
30129           Q2PS=-TH
30130         ELSEIF(MSTP(22).EQ.2) THEN
30131           Q2PS=((1D0-XBJ)/XBJ)*(-TH)
30132         ELSEIF(MSTP(22).EQ.3) THEN
30133           Q2PS=SQRT((1D0-XBJ)/XBJ)*(-TH)
30134         ELSE
30135           Q2PS=(1D0-XBJ)*MAX(1D0,-LOG(XBJ))*(-TH)
30136         ENDIF
30137       ENDIF
30138 C...For multiple interactions, start from scale defined above
30139 C...For all other QCD or "+jets"-type events, start shower from pThard.
30140       IF (ISJETS.EQ.1.OR.ISQCD.EQ.1.AND.ISTSB.NE.9) Q2PS=SQPTH
30141       IF((MSTP(68).EQ.1.OR.MSTP(68).EQ.3).AND.ISMECR.EQ.1) THEN
30142 C...Max shower scale = s for ME corrected processes.
30143 C...(pT-ordering: max pT2 is s/4)
30144         Q2PS=VINT(2)
30145         IF (MINT(35).GE.3) Q2PS=Q2PS*0.25D0
30146       ELSEIF(MSTP(68).GE.2.AND.ISQCD.EQ.0.AND.ISJETS.EQ.0) THEN
30147 C...Max shower scale = s for all non-QCD, non-"+ jet" type processes.
30148 C...(pT-ordering: max pT2 is s/4)
30149         Q2PS=VINT(2)
30150         IF (MINT(35).GE.3) Q2PS=Q2PS*0.25D0
30151       ENDIF
30152       IF(MINT(35).EQ.2.AND.ISTSB.EQ.9) Q2PS=SQPTH
30153 
30154 C...Elastic and diffractive events not associated with scales so set 0.
30155       IF(ISUBSV.GE.91.AND.ISUBSV.LE.94) THEN
30156         Q2SF=0D0
30157         Q2PS=0D0
30158       ENDIF
30159  
30160 C...Store derived kinematical quantities
30161       VINT(41)=X(1)
30162       VINT(42)=X(2)
30163       VINT(44)=SH
30164       VINT(43)=SQRT(SH)
30165       VINT(45)=TH
30166       VINT(46)=UH
30167       IF(ISTSB.NE.8) VINT(48)=SQPTH
30168       IF(ISTSB.NE.8) VINT(47)=SQRT(SQPTH)
30169       VINT(50)=TAUP*VINT(2)
30170       VINT(49)=SQRT(MAX(0D0,VINT(50)))
30171       VINT(52)=Q2
30172       VINT(51)=SQRT(Q2)
30173       VINT(54)=Q2SF
30174       VINT(53)=SQRT(Q2SF)
30175       VINT(56)=Q2PS
30176       VINT(55)=SQRT(Q2PS)
30177  
30178 C...Set starting scale for multiple interactions
30179       IF (ISUBSV.EQ.95) THEN
30180         XT2GMX=0D0
30181       ELSEIF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
30182      &      ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
30183      &      ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
30184      &      ISUBSV.NE.96)) THEN
30185 C...All accessible phase space allowed.
30186         XT2GMX=(1D0-VINT(41))*(1D0-VINT(42))
30187       ELSE
30188 C...Scale of hard process sets limit.
30189 C...2 -> 1. Limit is tau = x1*x2.
30190 C...2 -> 2. Limit is XT2 for hard process + FS masses.
30191 C...2 -> n > 2. Limit is tau' = tau of outer process.
30192         XT2GMX=VINT(25)
30193         IF(ISTSB.EQ.1) XT2GMX=VINT(21)
30194         IF(ISTSB.EQ.2)
30195      &      XT2GMX=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
30196         IF(ISTSB.GE.3.AND.ISTSB.LE.5) XT2GMX=VINT(26)
30197       ENDIF
30198       VINT(62)=0.25D0*XT2GMX*VINT(2)
30199       VINT(61)=SQRT(MAX(0D0,VINT(62)))
30200  
30201 C...Calculate parton distributions
30202       IF(ISTSB.LE.0) GOTO 160
30203       IF(MINT(47).GE.2) THEN
30204         DO 110 I=3-MIN(2,MINT(45)),MIN(2,MINT(46))
30205           XSF=X(I)
30206           IF(ISTSB.EQ.9) XSF=X(I)/VINT(142+I)
30207           IF(ISUB.EQ.99) THEN
30208             IF(MINT(140+I).EQ.0) THEN
30209               XSF=VINT(309-I)/(VINT(2)+VINT(309-I)-VINT(I+2)**2)
30210             ELSE
30211               XSF=VINT(309-I)/(VINT(2)+VINT(307)+VINT(308))
30212             ENDIF
30213             VINT(40+I)=XSF
30214             Q2SF=VINT(309-I)
30215           ENDIF
30216           MINT(105)=MINT(102+I)
30217           MINT(109)=MINT(106+I)
30218           VINT(120)=VINT(2+I)
30219 C...Default is to use standard PDFs, but for interactions after the first
30220 C...in the new multiple-parton-interactions framework, set which side to
30221 C...evaluate the MPI-modified PDFs on.
30222           MINT(30)=0
30223           IF (MINT(31).GE.1) MINT(30)=I
30224           IF(MSTP(57).LE.1) THEN
30225             CALL PYPDFU(MINT(10+I),XSF,Q2SF,XPQ)
30226           ELSE
30227             CALL PYPDFL(MINT(10+I),XSF,Q2SF,XPQ)
30228           ENDIF
30229 C...Safety margin against heavy flavour very close to threshold,
30230 C...e.g. caused by mismatch in c and b masses.
30231           IF(Q2SF.LT.1.1*PMAS(4,1)**2) THEN
30232             XPQ(4)=0D0
30233             XPQ(-4)=0D0
30234           ENDIF
30235           IF(Q2SF.LT.1.1*PMAS(5,1)**2) THEN
30236             XPQ(5)=0D0
30237             XPQ(-5)=0D0
30238           ENDIF
30239           DO 100 KFL=-25,25
30240             XSFX(I,KFL)=XPQ(KFL)
30241   100     CONTINUE
30242   110   CONTINUE
30243       ENDIF
30244  
30245 C...Calculate alpha_em, alpha_strong and K-factor
30246       XW=PARU(102)
30247       XWV=XW
30248       IF(MSTP(8).GE.2.OR.(ISUB.GE.71.AND.ISUB.LE.77)) XW=
30249      &1D0-(PMAS(24,1)/PMAS(23,1))**2
30250       XW1=1D0-XW
30251       XWC=1D0/(16D0*XW*XW1)
30252       AEM=PYALEM(Q2)
30253       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
30254       IF(MSTP(33).NE.3) AS=PYALPS(PARP(34)*Q2)
30255       FACK=1D0
30256       FACA=1D0
30257       IF(MSTP(33).EQ.1) THEN
30258         FACK=PARP(31)
30259       ELSEIF(MSTP(33).EQ.2) THEN
30260         FACK=PARP(31)
30261         FACA=PARP(32)/PARP(31)
30262       ELSEIF(MSTP(33).EQ.3) THEN
30263         Q2AS=PARP(33)*Q2
30264         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2AS=Q2AS+
30265      &  PARU(112)*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
30266         AS=PYALPS(Q2AS)
30267 C...PS (12 Feb 2010)
30268 C...New options MSTP(33) = 10 and 11
30269 C...  10: use K-factor = PARP(32) only for process 96 (MPI)
30270 C...  11: as for 10, but also use K-factor = PARP(31) for other procs
30271       ELSEIF(MSTP(33).GE.10) THEN
30272         IF (ISUB.EQ.96) THEN
30273           FACK = PARP(32)
30274         ELSEIF (ISUB.NE.96.AND.MSTP(33).EQ.11) THEN
30275           FACK = PARP(31)
30276         ENDIF
30277       ENDIF
30278       VINT(138)=1D0
30279       VINT(57)=AEM
30280       VINT(58)=AS
30281  
30282 C...Set flags for allowed reacting partons/leptons
30283       DO 140 I=1,2
30284         DO 120 J=-25,25
30285           KFAC(I,J)=0
30286   120   CONTINUE
30287         IF(MINT(44+I).EQ.1) THEN
30288           KFAC(I,MINT(10+I))=1
30289         ELSEIF(MINT(40+I).EQ.1.AND.MSTP(12).EQ.0) THEN
30290           KFAC(I,MINT(10+I))=1
30291           KFAC(I,22)=1
30292           KFAC(I,24)=1
30293           KFAC(I,-24)=1
30294         ELSE
30295           DO 130 J=-25,25
30296             KFAC(I,J)=KFIN(I,J)
30297             IF(IABS(J).GT.MSTP(58).AND.IABS(J).LE.10) KFAC(I,J)=0
30298             IF(XSFX(I,J).LT.1D-10) KFAC(I,J)=0
30299   130     CONTINUE
30300         ENDIF
30301   140 CONTINUE
30302  
30303 C...Lower and upper limit for fermion flavour loops
30304       MMIN1=0
30305       MMAX1=0
30306       MMIN2=0
30307       MMAX2=0
30308       DO 150 J=-20,20
30309         IF(KFAC(1,-J).EQ.1) MMIN1=-J
30310         IF(KFAC(1,J).EQ.1) MMAX1=J
30311         IF(KFAC(2,-J).EQ.1) MMIN2=-J
30312         IF(KFAC(2,J).EQ.1) MMAX2=J
30313   150 CONTINUE
30314       MMINA=MIN(MMIN1,MMIN2)
30315       MMAXA=MAX(MMAX1,MMAX2)
30316  
30317 C...Common resonance mass and width combinations
30318       SQMZ=PMAS(23,1)**2
30319       SQMW=PMAS(24,1)**2
30320       GMMZ=PMAS(23,1)*PMAS(23,2)
30321       GMMW=PMAS(24,1)*PMAS(24,2)
30322  
30323 C...Polarization factors...implemented so far for W+W-(25)
30324       POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
30325       POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
30326       POLRR=(1D0+PARJ(132))*(1D0+PARJ(131))
30327       POLLL=(1D0-PARJ(132))*(1D0-PARJ(131))
30328  
30329 C...Phase space integral in tau
30330       COMFAC=PARU(1)*PARU(5)/VINT(2)
30331       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) COMFAC=COMFAC*FACK
30332       IF((MINT(47).GE.2.OR.(ISTSB.GE.3.AND.ISTSB.LE.5)).AND.
30333      &ISTSB.NE.8.AND.ISTSB.NE.9) THEN
30334         ATAU1=LOG(TAUMAX/TAUMIN)
30335         ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
30336         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/TAU
30337         IF(MINT(72).GE.1) THEN
30338           TAUR1=VINT(73)
30339           GAMR1=VINT(74)
30340           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))
30341           ATAU3=ATAUD/TAUR1
30342           IF(ATAUD.GT.1D-10) H1=H1+
30343      &    (ATAU1/ATAU3)*COEF(ISUBSV,3)/(TAU+TAUR1)
30344           ATAUD=ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1)
30345           ATAU4=ATAUD/GAMR1
30346           IF(ATAUD.GT.1D-10) H1=H1+
30347      &    (ATAU1/ATAU4)*COEF(ISUBSV,4)*TAU/((TAU-TAUR1)**2+GAMR1**2)
30348         ENDIF
30349         IF(MINT(72).GE.2) THEN
30350           TAUR2=VINT(75)
30351           GAMR2=VINT(76)
30352           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))
30353           ATAU5=ATAUD/TAUR2
30354           IF(ATAUD.GT.1D-10) H1=H1+
30355      &    (ATAU1/ATAU5)*COEF(ISUBSV,5)/(TAU+TAUR2)
30356           ATAUD=ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2)
30357           ATAU6=ATAUD/GAMR2
30358           IF(ATAUD.GT.1D-10) H1=H1+
30359      &    (ATAU1/ATAU6)*COEF(ISUBSV,6)*TAU/((TAU-TAUR2)**2+GAMR2**2)
30360         ENDIF
30361         IF(MINT(72).EQ.3) THEN
30362           TAUR3=VINT(77)
30363           GAMR3=VINT(78)
30364           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR3)/(TAUMAX+TAUR3))
30365           ATAU50=ATAUD/TAUR3
30366           IF(ATAUD.GT.1D-10) H1=H1+
30367      &    (ATAU1/ATAU50)*COEFX(ISUBSV,1)/(TAU+TAUR3)
30368           ATAUD=ATAN((TAUMAX-TAUR3)/GAMR3)-ATAN((TAUMIN-TAUR3)/GAMR3)
30369           ATAU60=ATAUD/GAMR3
30370           IF(ATAUD.GT.1D-10) H1=H1+
30371      &    (ATAU1/ATAU60)*COEFX(ISUBSV,2)*TAU/((TAU-TAUR3)**2+GAMR3**2)
30372         ENDIF
30373         IF(MINT(47).EQ.5.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
30374           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
30375           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
30376      &    MAX(2D-10,1D0-TAU)
30377         ELSEIF(MINT(47).GE.6.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
30378           ATAU7=LOG(MAX(1D-10,1D0-TAUMIN)/MAX(1D-10,1D0-TAUMAX))
30379           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
30380      &    MAX(1D-10,1D0-TAU)
30381         ENDIF
30382         COMFAC=COMFAC*ATAU1/(TAU*H1)
30383       ENDIF
30384  
30385 C...Phase space integral in y*
30386       IF((MINT(47).EQ.4.OR.MINT(47).EQ.5).AND.ISTSB.NE.8.AND.ISTSB.NE.9)
30387      &THEN
30388         AYST0=YSTMAX-YSTMIN
30389         IF(AYST0.LT.1D-10) THEN
30390           COMFAC=0D0
30391         ELSE
30392           AYST1=0.5D0*(YSTMAX-YSTMIN)**2
30393           AYST2=AYST1
30394           AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
30395           H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
30396      &    (AYST0/AYST2)*COEF(ISUBSV,9)*(YSTMAX-YST)+
30397      &    (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
30398           IF(MINT(45).EQ.3) THEN
30399             YST0=-0.5D0*LOG(TAUE)
30400             AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
30401      &      MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
30402             IF(AYST4.GT.1D-10) H2=H2+(AYST0/AYST4)*COEF(ISUBSV,11)/
30403      &      MAX(1D-10,1D0-EXP(YST-YST0))
30404           ENDIF
30405           IF(MINT(46).EQ.3) THEN
30406             YST0=-0.5D0*LOG(TAUE)
30407             AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
30408      &      MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
30409             IF(AYST5.GT.1D-10) H2=H2+(AYST0/AYST5)*COEF(ISUBSV,12)/
30410      &      MAX(1D-10,1D0-EXP(-YST-YST0))
30411           ENDIF
30412           COMFAC=COMFAC*AYST0/H2
30413         ENDIF
30414       ENDIF
30415  
30416 C...2 -> 1 processes: reduction in angular part of phase space integral
30417 C...for case of decaying resonance
30418       ACTH0=CTNMAX-CTNMIN+CTPMAX-CTPMIN
30419       IF((ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5)) THEN
30420         IF(MDCY(PYCOMP(KFPR(ISUBSV,1)),1).EQ.1) THEN
30421           IF(KFPR(ISUB,1).EQ.25.OR.KFPR(ISUB,1).EQ.37.OR.
30422      &    KFPR(ISUB,1).EQ.39) THEN
30423             COMFAC=COMFAC*0.5D0*ACTH0
30424           ELSE
30425             COMFAC=COMFAC*0.125D0*(3D0*ACTH0+CTNMAX**3-CTNMIN**3+
30426      &      CTPMAX**3-CTPMIN**3)
30427           ENDIF
30428         ENDIF
30429  
30430 C...2 -> 2 processes: angular part of phase space integral
30431       ELSEIF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
30432         ACTH1=LOG((MAX(RM34,RSQM-CTNMIN)*MAX(RM34,RSQM-CTPMIN))/
30433      &  (MAX(RM34,RSQM-CTNMAX)*MAX(RM34,RSQM-CTPMAX)))
30434         ACTH2=LOG((MAX(RM34,RSQM+CTNMAX)*MAX(RM34,RSQM+CTPMAX))/
30435      &  (MAX(RM34,RSQM+CTNMIN)*MAX(RM34,RSQM+CTPMIN)))
30436         ACTH3=1D0/MAX(RM34,RSQM-CTNMAX)-1D0/MAX(RM34,RSQM-CTNMIN)+
30437      &  1D0/MAX(RM34,RSQM-CTPMAX)-1D0/MAX(RM34,RSQM-CTPMIN)
30438         ACTH4=1D0/MAX(RM34,RSQM+CTNMIN)-1D0/MAX(RM34,RSQM+CTNMAX)+
30439      &  1D0/MAX(RM34,RSQM+CTPMIN)-1D0/MAX(RM34,RSQM+CTPMAX)
30440         H3=COEF(ISUBSV,13)+
30441      &  (ACTH0/ACTH1)*COEF(ISUBSV,14)/MAX(RM34,RSQM-CTH)+
30442      &  (ACTH0/ACTH2)*COEF(ISUBSV,15)/MAX(RM34,RSQM+CTH)+
30443      &  (ACTH0/ACTH3)*COEF(ISUBSV,16)/MAX(RM34,RSQM-CTH)**2+
30444      &  (ACTH0/ACTH4)*COEF(ISUBSV,17)/MAX(RM34,RSQM+CTH)**2
30445         COMFAC=COMFAC*ACTH0*0.5D0*BE34/H3
30446  
30447 C...2 -> 2 processes: take into account final state Breit-Wigners
30448         COMFAC=COMFAC*VINT(80)
30449       ENDIF
30450  
30451 C...2 -> 3, 4 processes: phace space integral in tau'
30452       IF(MINT(47).GE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5) THEN
30453         ATAUP1=LOG(TAUPMX/TAUPMN)
30454         ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
30455         H4=COEF(ISUBSV,18)+
30456      &  (ATAUP1/ATAUP2)*COEF(ISUBSV,19)*(1D0-TAU/TAUP)**3/TAUP
30457         IF(MINT(47).EQ.5) THEN
30458           ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
30459           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(2D-10,1D0-TAUP)
30460         ELSEIF(MINT(47).GE.6) THEN
30461           ATAUP3=LOG(MAX(1D-10,1D0-TAUPMN)/MAX(1D-10,1D0-TAUPMX))
30462           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(1D-10,1D0-TAUP)
30463         ENDIF
30464         COMFAC=COMFAC*ATAUP1/H4
30465       ENDIF
30466  
30467 C...2 -> 3, 4 processes: effective W/Z parton distributions
30468       IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) THEN
30469         IF(1D0-TAU/TAUP.GT.1D-4) THEN
30470           FZW=(1D0+TAU/TAUP)*LOG(TAUP/TAU)-2D0*(1D0-TAU/TAUP)
30471         ELSE
30472           FZW=1D0/6D0*(1D0-TAU/TAUP)**3*TAU/TAUP
30473         ENDIF
30474         COMFAC=COMFAC*FZW
30475       ENDIF
30476  
30477 C...2 -> 3 processes: phase space integrals for pT1, pT2, y3, mirror
30478       IF(ISTSB.EQ.5) THEN
30479         COMFAC=COMFAC*VINT(205)*VINT(210)*VINT(212)*VINT(214)/
30480      &  (128D0*PARU(1)**4*VINT(220))*(TAU**2/TAUP)
30481       ENDIF
30482  
30483 C...Phase space integral for low-pT and multiple interactions
30484       IF(ISTSB.EQ.9) THEN
30485         COMFAC=PARU(1)*PARU(5)*FACK*0.5D0*VINT(2)/SH2
30486         ATAU1=LOG(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)
30487         ATAU2=2D0*ATAN(1D0/XT2-1D0)/SQRT(XT2)
30488         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/SQRT(TAU)
30489         COMFAC=COMFAC*ATAU1/H1
30490         AYST0=YSTMAX-YSTMIN
30491         AYST1=0.5D0*(YSTMAX-YSTMIN)**2
30492         AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
30493         H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
30494      &  (AYST0/AYST1)*COEF(ISUBSV,9)*(YSTMAX-YST)+
30495      &  (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
30496         COMFAC=COMFAC*AYST0/H2
30497         IF(MSTP(82).LE.1) COMFAC=COMFAC*XT2**2*(1D0/VINT(149)-1D0)
30498 C...For MSTP(82)>=2 an additional factor (xT2/(xT2+VINT(149))**2 is
30499 C...introduced to make cross-section finite for xT2 -> 0
30500         IF(MSTP(82).GE.2) COMFAC=COMFAC*XT2**2/(VINT(149)*
30501      &  (1D0+VINT(149)))
30502       ENDIF
30503  
30504 C...Real gamma + gamma: include factor 2 when different nature
30505   160 IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
30506      &MSTP(14).LE.10) COMFAC=2D0*COMFAC
30507  
30508 C...Extra factors to include the effects of
30509 C...longitudinal resolved photons (but not direct or DIS ones).
30510       DO 170 ISDE=1,2
30511         IF(MINT(10+ISDE).EQ.22.AND.MINT(106+ISDE).GE.1.AND.
30512      &  MINT(106+ISDE).LE.3) THEN
30513           VINT(314+ISDE)=1D0
30514           XY=PARP(166+ISDE)
30515           IF(MSTP(16).EQ.0) THEN
30516             IF(VINT(304+ISDE).GT.0D0.AND.VINT(304+ISDE).LT.1D0)
30517      &      XY=VINT(304+ISDE)
30518           ELSE
30519             IF(VINT(308+ISDE).GT.0D0.AND.VINT(308+ISDE).LT.1D0)
30520      &      XY=VINT(308+ISDE)
30521           ENDIF
30522           Q2GA=VINT(306+ISDE)
30523           IF(MSTP(17).GT.0.AND.XY.GT.0D0.AND.XY.LT.1D0.AND.
30524      &    Q2GA.GT.0D0) THEN
30525             REDUCE=0D0
30526             IF(MSTP(17).EQ.1) THEN
30527               REDUCE=4D0*Q2*Q2GA/(Q2+Q2GA)**2
30528             ELSEIF(MSTP(17).EQ.2) THEN
30529               REDUCE=4D0*Q2GA/(Q2+Q2GA)
30530             ELSEIF(MSTP(17).EQ.3) THEN
30531               PMVIRT=PMAS(PYCOMP(113),1)
30532               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
30533             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.1) THEN
30534               PMVIRT=PMAS(PYCOMP(113),1)
30535               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
30536             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.2) THEN
30537               PMVIRT=PMAS(PYCOMP(113),1)
30538               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
30539             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.3) THEN
30540               PMVSMN=4D0*PARP(15)**2
30541               PMVSMX=4D0*VINT(154)**2
30542               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
30543               REDLON=(3D0*PMVSMN+Q2GA)/(PMVSMN+Q2GA)**3-
30544      &        (3D0*PMVSMX+Q2GA)/(PMVSMX+Q2GA)**3
30545               REDUCE=4D0*(Q2GA/6D0)*REDLON/REDTRA
30546             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.1) THEN
30547               PMVIRT=PMAS(PYCOMP(113),1)
30548               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
30549             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.2) THEN
30550               PMVIRT=PMAS(PYCOMP(113),1)
30551               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
30552             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.3) THEN
30553               PMVSMN=4D0*PARP(15)**2
30554               PMVSMX=4D0*VINT(154)**2
30555               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
30556               REDLON=1D0/(PMVSMN+Q2GA)**2-1D0/(PMVSMX+Q2GA)**2
30557               REDUCE=4D0*(Q2GA/2D0)*REDLON/REDTRA
30558             ENDIF
30559             BEAMAS=PYMASS(11)
30560             IF(VINT(302+ISDE).GT.0D0) BEAMAS=VINT(302+ISDE)
30561             FRACLT=1D0/(1D0+XY**2/2D0/(1D0-XY)*
30562      &      (1D0-2D0*BEAMAS**2/Q2GA))
30563             VINT(314+ISDE)=1D0+PARP(165)*REDUCE*FRACLT
30564           ENDIF
30565         ELSE
30566           VINT(314+ISDE)=1D0
30567         ENDIF
30568         COMFAC=COMFAC*VINT(314+ISDE)
30569   170 CONTINUE
30570  
30571 C...Evaluate cross sections - done in separate routines by kind
30572 C...of physics, to keep PYSIGH of sensible size.
30573       IF(MAP.EQ.1) THEN
30574 C...Standard QCD (including photons).
30575         CALL PYSGQC(NCHN,SIGS)
30576       ELSEIF(MAP.EQ.2) THEN
30577 C...Heavy flavours.
30578         CALL PYSGHF(NCHN,SIGS)
30579       ELSEIF(MAP.EQ.3) THEN
30580 C...W/Z.
30581         CALL PYSGWZ(NCHN,SIGS)
30582       ELSEIF(MAP.EQ.4) THEN
30583 C...Higgs (2 doublets; including longitudinal W/Z scattering).
30584         CALL PYSGHG(NCHN,SIGS)
30585       ELSEIF(MAP.EQ.5) THEN
30586 C...SUSY.
30587         CALL PYSGSU(NCHN,SIGS)
30588       ELSEIF(MAP.EQ.6) THEN
30589 C...Technicolor.
30590         CALL PYSGTC(NCHN,SIGS)
30591       ELSEIF(MAP.EQ.7) THEN
30592 C...Exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
30593         CALL PYSGEX(NCHN,SIGS)
30594       ELSEIF(MAP.EQ.8) THEN
30595 C... Universal Extra Dimensions
30596         CALL PYXUED(NCHN,SIGS)
30597       ENDIF
30598  
30599 C...Multiply with parton distributions
30600       IF(ISUB.LE.90.OR.ISUB.GE.96) THEN
30601         DO 180 ICHN=1,NCHN
30602           IF(MINT(45).GE.2) THEN
30603             KFL1=ISIG(ICHN,1)
30604             SIGH(ICHN)=SIGH(ICHN)*XSFX(1,KFL1)
30605           ENDIF
30606           IF(MINT(46).GE.2) THEN
30607             KFL2=ISIG(ICHN,2)
30608             SIGH(ICHN)=SIGH(ICHN)*XSFX(2,KFL2)
30609           ENDIF
30610           SIGS=SIGS+SIGH(ICHN)
30611   180   CONTINUE
30612       ENDIF
30613  
30614       RETURN
30615       END
30616  
30617 C*********************************************************************
30618  
30619 C...PYSGQC
30620 C...Subprocess cross sections for QCD processes,
30621 C...including photons.
30622 C...Auxiliary to PYSIGH.
30623  
30624       SUBROUTINE PYSGQC(NCHN,SIGS)
30625  
30626 C...Double precision and integer declarations
30627       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30628       IMPLICIT INTEGER(I-N)
30629       INTEGER PYK,PYCHGE,PYCOMP
30630 C...Parameter statement to help give large particle numbers.
30631       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
30632      &KEXCIT=4000000,KDIMEN=5000000)
30633 C...Commonblocks
30634       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
30635       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
30636       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
30637       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
30638       COMMON/PYINT1/MINT(400),VINT(400)
30639       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
30640       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
30641       COMMON/PYINT4/MWID(500),WIDS(500,5)
30642       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
30643       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
30644      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
30645      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
30646      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
30647       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
30648      &/PYINT3/,/PYINT4/,/PYINT7/,/PYSGCM/
30649 C...Local arrays
30650       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
30651  
30652 C...Differential cross section expressions.
30653  
30654       IF(ISUB.LE.20) THEN
30655         IF(ISUB.EQ.10) THEN
30656 C...f + f' -> f + f' (gamma/Z/W exchange)
30657           FACGGF=COMFAC*AEM**2*2D0*(SH2+UH2)/TH2
30658           FACGZF=COMFAC*AEM**2*XWC*4D0*SH2/(TH*(TH-SQMZ))
30659           FACZZF=COMFAC*(AEM*XWC)**2*2D0*SH2/(TH-SQMZ)**2
30660           FACWWF=COMFAC*(0.5D0*AEM/XW)**2*SH2/(TH-SQMW)**2
30661           DO 110 I=MMIN1,MMAX1
30662             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 110
30663             IA=IABS(I)
30664             DO 100 J=MMIN2,MMAX2
30665               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 100
30666               JA=IABS(J)
30667 C...Electroweak couplings
30668               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
30669               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
30670               VI=AI-4D0*EI*XWV
30671               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
30672               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
30673               VJ=AJ-4D0*EJ*XWV
30674               EPSIJ=ISIGN(1,I*J)
30675 C...gamma/Z exchange, only gamma exchange, or only Z exchange
30676               IF(MSTP(21).GE.1.AND.MSTP(21).LE.4) THEN
30677                 IF(MSTP(21).EQ.1.OR.MSTP(21).EQ.4) THEN
30678                   FACNCF=FACGGF*EI**2*EJ**2+FACGZF*EI*EJ*
30679      &            (VI*VJ*(1D0+UH2/SH2)+AI*AJ*EPSIJ*(1D0-UH2/SH2))+
30680      &            FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*(1D0+UH2/SH2)+
30681      &            4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
30682                 ELSEIF(MSTP(21).EQ.2) THEN
30683                   FACNCF=FACGGF*EI**2*EJ**2
30684                 ELSE
30685                   FACNCF=FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*
30686      &            (1D0+UH2/SH2)+4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
30687                 ENDIF
30688 C...Extrafactor 2 for only one incoming neutrino spin state.
30689                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACNCF=2D0*FACNCF
30690                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACNCF=2D0*FACNCF
30691                 NCHN=NCHN+1
30692                 ISIG(NCHN,1)=I
30693                 ISIG(NCHN,2)=J
30694                 ISIG(NCHN,3)=1
30695                 SIGH(NCHN)=FACNCF
30696               ENDIF
30697 C...W exchange
30698               IF((MSTP(21).EQ.1.OR.MSTP(21).EQ.5).AND.AI*AJ.LT.0D0) THEN
30699                 FACCCF=FACWWF*VINT(180+I)*VINT(180+J)
30700                 IF(EPSIJ.LT.0D0) FACCCF=FACCCF*UH2/SH2
30701                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACCCF=2D0*FACCCF
30702                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACCCF=2D0*FACCCF
30703                 NCHN=NCHN+1
30704                 ISIG(NCHN,1)=I
30705                 ISIG(NCHN,2)=J
30706                 ISIG(NCHN,3)=2
30707                 SIGH(NCHN)=FACCCF
30708               ENDIF
30709   100       CONTINUE
30710   110     CONTINUE
30711  
30712         ELSEIF(ISUB.EQ.11) THEN
30713 C...f + f' -> f + f' (g exchange)
30714           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
30715           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
30716      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
30717           FACQQ2=COMFAC*AS**2*4D0/9D0*((SH2+TH2)/UH2-
30718      &    MSTP(34)*2D0/3D0*SH2/(TH*UH))
30719           DO 130 I=MMIN1,MMAX1
30720             IA=IABS(I)
30721             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 130
30722             DO 120 J=MMIN2,MMAX2
30723               JA=IABS(J)
30724               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 120
30725               NCHN=NCHN+1
30726               ISIG(NCHN,1)=I
30727               ISIG(NCHN,2)=J
30728               ISIG(NCHN,3)=1
30729               SIGH(NCHN)=FACQQ1
30730               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
30731               IF(I.EQ.J) THEN
30732                 SIGH(NCHN)=0.5D0*SIGH(NCHN)
30733                 NCHN=NCHN+1
30734                 ISIG(NCHN,1)=I
30735                 ISIG(NCHN,2)=J
30736                 ISIG(NCHN,3)=2
30737                 SIGH(NCHN)=0.5D0*FACQQ2
30738               ENDIF
30739   120       CONTINUE
30740   130     CONTINUE
30741  
30742         ELSEIF(ISUB.EQ.12) THEN
30743 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
30744           CALL PYWIDT(21,SH,WDTP,WDTE)
30745           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
30746      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
30747           DO 140 I=MMINA,MMAXA
30748             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30749      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
30750             NCHN=NCHN+1
30751             ISIG(NCHN,1)=I
30752             ISIG(NCHN,2)=-I
30753             ISIG(NCHN,3)=1
30754             SIGH(NCHN)=FACQQB
30755   140     CONTINUE
30756  
30757         ELSEIF(ISUB.EQ.13) THEN
30758 C...f + fbar -> g + g (q + qbar -> g + g only)
30759           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
30760      &    UH2/SH2)
30761           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
30762      &    TH2/SH2)
30763           DO 150 I=MMINA,MMAXA
30764             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30765      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
30766             NCHN=NCHN+1
30767             ISIG(NCHN,1)=I
30768             ISIG(NCHN,2)=-I
30769             ISIG(NCHN,3)=1
30770             SIGH(NCHN)=0.5D0*FACGG1
30771             NCHN=NCHN+1
30772             ISIG(NCHN,1)=I
30773             ISIG(NCHN,2)=-I
30774             ISIG(NCHN,3)=2
30775             SIGH(NCHN)=0.5D0*FACGG2
30776   150     CONTINUE
30777  
30778         ELSEIF(ISUB.EQ.14) THEN
30779 C...f + fbar -> g + gamma (q + qbar -> g + gamma only)
30780           FACGG=COMFAC*AS*AEM*8D0/9D0*(TH2+UH2)/(TH*UH)
30781           DO 160 I=MMINA,MMAXA
30782             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30783      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
30784             EI=KCHG(IABS(I),1)/3D0
30785             NCHN=NCHN+1
30786             ISIG(NCHN,1)=I
30787             ISIG(NCHN,2)=-I
30788             ISIG(NCHN,3)=1
30789             SIGH(NCHN)=FACGG*EI**2
30790   160     CONTINUE
30791  
30792         ELSEIF(ISUB.EQ.18) THEN
30793 C...f + fbar -> gamma + gamma
30794           FACGG=COMFAC*AEM**2*2D0*(TH2+UH2)/(TH*UH)
30795           DO 170 I=MMINA,MMAXA
30796             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 170
30797             EI=KCHG(IABS(I),1)/3D0
30798             FCOI=1D0
30799             IF(IABS(I).LE.10) FCOI=FACA/3D0
30800             NCHN=NCHN+1
30801             ISIG(NCHN,1)=I
30802             ISIG(NCHN,2)=-I
30803             ISIG(NCHN,3)=1
30804             SIGH(NCHN)=0.5D0*FACGG*FCOI*EI**4
30805   170     CONTINUE
30806         ENDIF
30807  
30808       ELSEIF(ISUB.LE.40) THEN
30809         IF(ISUB.EQ.28) THEN
30810 C...f + g -> f + g (q + g -> q + g only)
30811           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
30812      &    UH/SH)*FACA
30813           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
30814      &    SH/UH)
30815           DO 190 I=MMINA,MMAXA
30816             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 190
30817             DO 180 ISDE=1,2
30818               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
30819               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
30820               NCHN=NCHN+1
30821               ISIG(NCHN,ISDE)=I
30822               ISIG(NCHN,3-ISDE)=21
30823               ISIG(NCHN,3)=1
30824               SIGH(NCHN)=FACQG1
30825               NCHN=NCHN+1
30826               ISIG(NCHN,ISDE)=I
30827               ISIG(NCHN,3-ISDE)=21
30828               ISIG(NCHN,3)=2
30829               SIGH(NCHN)=FACQG2
30830   180       CONTINUE
30831   190     CONTINUE
30832  
30833         ELSEIF(ISUB.EQ.29) THEN
30834 C...f + g -> f + gamma (q + g -> q + gamma only)
30835           FGQ=COMFAC*FACA*AS*AEM*1D0/3D0*(SH2+UH2)/(-SH*UH)
30836           DO 210 I=MMINA,MMAXA
30837             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 210
30838             EI=KCHG(IABS(I),1)/3D0
30839             FACGQ=FGQ*EI**2
30840             DO 200 ISDE=1,2
30841               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 200
30842               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 200
30843               NCHN=NCHN+1
30844               ISIG(NCHN,ISDE)=I
30845               ISIG(NCHN,3-ISDE)=21
30846               ISIG(NCHN,3)=1
30847               SIGH(NCHN)=FACGQ
30848   200       CONTINUE
30849   210     CONTINUE
30850  
30851         ELSEIF(ISUB.EQ.33) THEN
30852 C...f + gamma -> f + g (q + gamma -> q + g only)
30853           FGQ=COMFAC*AS*AEM*8D0/3D0*(SH2+UH2)/(-SH*UH)
30854           DO 230 I=MMINA,MMAXA
30855             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 230
30856             EI=KCHG(IABS(I),1)/3D0
30857             FACGQ=FGQ*EI**2
30858             DO 220 ISDE=1,2
30859               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 220
30860               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 220
30861               NCHN=NCHN+1
30862               ISIG(NCHN,ISDE)=I
30863               ISIG(NCHN,3-ISDE)=22
30864               ISIG(NCHN,3)=1
30865               SIGH(NCHN)=FACGQ
30866   220       CONTINUE
30867   230     CONTINUE
30868  
30869         ELSEIF(ISUB.EQ.34) THEN
30870 C...f + gamma -> f + gamma
30871           FGQ=COMFAC*AEM**2*2D0*(SH2+UH2)/(-SH*UH)
30872           DO 250 I=MMINA,MMAXA
30873             IF(I.EQ.0) GOTO 250
30874             EI=KCHG(IABS(I),1)/3D0
30875             FACGQ=FGQ*EI**4
30876             DO 240 ISDE=1,2
30877               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 240
30878               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 240
30879               NCHN=NCHN+1
30880               ISIG(NCHN,ISDE)=I
30881               ISIG(NCHN,3-ISDE)=22
30882               ISIG(NCHN,3)=1
30883               SIGH(NCHN)=FACGQ
30884   240       CONTINUE
30885   250     CONTINUE
30886         ENDIF
30887  
30888       ELSEIF(ISUB.LE.80) THEN
30889         IF(ISUB.EQ.53) THEN
30890 C...g + g -> f + fbar (g + g -> q + qbar only)
30891           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 270
30892           IDC0=MDCY(21,2)-1
30893 C...Begin by d, u, s flavours.
30894           FLAVWT=0D0
30895           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
30896      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
30897           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
30898      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
30899           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
30900      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
30901           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
30902      &    UH2/SH2)*FLAVWT*FACA
30903           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
30904      &    TH2/SH2)*FLAVWT*FACA
30905           NCHN=NCHN+1
30906           ISIG(NCHN,1)=21
30907           ISIG(NCHN,2)=21
30908           ISIG(NCHN,3)=1
30909           SIGH(NCHN)=FACQQ1
30910           NCHN=NCHN+1
30911           ISIG(NCHN,1)=21
30912           ISIG(NCHN,2)=21
30913           ISIG(NCHN,3)=2
30914           SIGH(NCHN)=FACQQ2
30915 C...Next c and b flavours: modified that and uhat for fixed
30916 C...cos(theta-hat).
30917           DO 260 IFL=4,5
30918           SQMAVG=PMAS(IFL,1)**2
30919           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
30920             BE34=SQRT(1D0-4D0*SQMAVG/SH)
30921             THQ=-0.5D0*SH*(1D0-BE34*CTH)
30922             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30923             THUHQ=THQ*UHQ-SQMAVG*SH
30924             IF(MSTP(34).EQ.0) THEN
30925               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
30926               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
30927             ELSE
30928               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30929      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
30930               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30931      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
30932             ENDIF
30933             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
30934             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
30935             NCHN=NCHN+1
30936             ISIG(NCHN,1)=21
30937             ISIG(NCHN,2)=21
30938             ISIG(NCHN,3)=1+2*(IFL-3)
30939             SIGH(NCHN)=FACQQ1
30940             NCHN=NCHN+1
30941             ISIG(NCHN,1)=21
30942             ISIG(NCHN,2)=21
30943             ISIG(NCHN,3)=2+2*(IFL-3)
30944             SIGH(NCHN)=FACQQ2
30945           ENDIF
30946   260     CONTINUE
30947   270     CONTINUE
30948  
30949         ELSEIF(ISUB.EQ.54) THEN
30950 C...g + gamma -> f + fbar (g + gamma -> q + qbar only)
30951           CALL PYWIDT(21,SH,WDTP,WDTE)
30952           WDTESU=0D0
30953           DO 280 I=1,MIN(8,MDCY(21,3))
30954             EF=KCHG(I,1)/3D0
30955             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
30956      &      WDTE(I,4))
30957   280     CONTINUE
30958           FACQQ=COMFAC*AEM*AS*WDTESU*(TH2+UH2)/(TH*UH)
30959           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30960             NCHN=NCHN+1
30961             ISIG(NCHN,1)=21
30962             ISIG(NCHN,2)=22
30963             ISIG(NCHN,3)=1
30964             SIGH(NCHN)=FACQQ
30965           ENDIF
30966           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
30967             NCHN=NCHN+1
30968             ISIG(NCHN,1)=22
30969             ISIG(NCHN,2)=21
30970             ISIG(NCHN,3)=1
30971             SIGH(NCHN)=FACQQ
30972           ENDIF
30973  
30974         ELSEIF(ISUB.EQ.58) THEN
30975 C...gamma + gamma -> f + fbar
30976           CALL PYWIDT(22,SH,WDTP,WDTE)
30977           WDTESU=0D0
30978           DO 290 I=1,MIN(12,MDCY(22,3))
30979             IF(I.LE.8) EF= KCHG(I,1)/3D0
30980             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
30981             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
30982      &      WDTE(I,4))
30983   290     CONTINUE
30984           FACFF=COMFAC*AEM**2*WDTESU*2D0*(TH2+UH2)/(TH*UH)
30985           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
30986             NCHN=NCHN+1
30987             ISIG(NCHN,1)=22
30988             ISIG(NCHN,2)=22
30989             ISIG(NCHN,3)=1
30990             SIGH(NCHN)=FACFF
30991           ENDIF
30992  
30993         ELSEIF(ISUB.EQ.68) THEN
30994 C...g + g -> g + g
30995           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 300
30996           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+2D0*TH/SH+
30997      &    TH2/SH2)*FACA
30998           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+2D0*SH/UH+
30999      &    SH2/UH2)*FACA
31000           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+2D0*UH/TH+
31001      &    UH2/TH2)
31002           NCHN=NCHN+1
31003           ISIG(NCHN,1)=21
31004           ISIG(NCHN,2)=21
31005           ISIG(NCHN,3)=1
31006           SIGH(NCHN)=0.5D0*FACGG1
31007           NCHN=NCHN+1
31008           ISIG(NCHN,1)=21
31009           ISIG(NCHN,2)=21
31010           ISIG(NCHN,3)=2
31011           SIGH(NCHN)=0.5D0*FACGG2
31012           NCHN=NCHN+1
31013           ISIG(NCHN,1)=21
31014           ISIG(NCHN,2)=21
31015           ISIG(NCHN,3)=3
31016           SIGH(NCHN)=0.5D0*FACGG3
31017   300     CONTINUE
31018  
31019         ELSEIF(ISUB.EQ.80) THEN
31020 C...q + gamma -> q' + pi+/-
31021           FQPI=COMFAC*(2D0*AEM/9D0)*(-SH/TH)*(1D0/SH2+1D0/TH2)
31022           ASSH=PYALPS(MAX(0.5D0,0.5D0*SH))
31023           Q2FPSH=0.55D0/LOG(MAX(2D0,2D0*SH))
31024           DELSH=UH*SQRT(ASSH*Q2FPSH)
31025           ASUH=PYALPS(MAX(0.5D0,-0.5D0*UH))
31026           Q2FPUH=0.55D0/LOG(MAX(2D0,-2D0*UH))
31027           DELUH=SH*SQRT(ASUH*Q2FPUH)
31028           DO 320 I=MAX(-2,MMINA),MIN(2,MMAXA)
31029             IF(I.EQ.0) GOTO 320
31030             EI=KCHG(IABS(I),1)/3D0
31031             EJ=SIGN(1D0-ABS(EI),EI)
31032             DO 310 ISDE=1,2
31033               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 310
31034               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 310
31035               NCHN=NCHN+1
31036               ISIG(NCHN,ISDE)=I
31037               ISIG(NCHN,3-ISDE)=22
31038               ISIG(NCHN,3)=1
31039               SIGH(NCHN)=FQPI*(EI*DELSH+EJ*DELUH)**2
31040   310       CONTINUE
31041   320     CONTINUE
31042         ENDIF
31043  
31044       ELSEIF(ISUB.LE.100) THEN
31045         IF(ISUB.EQ.91) THEN
31046 C...Elastic scattering
31047           SIGS=VINT(315)*VINT(316)*SIGT(0,0,1)
31048  
31049         ELSEIF(ISUB.EQ.92) THEN
31050 C...Single diffractive scattering (first side, i.e. XB)
31051           SIGS=VINT(315)*VINT(316)*SIGT(0,0,2)
31052  
31053         ELSEIF(ISUB.EQ.93) THEN
31054 C...Single diffractive scattering (second side, i.e. AX)
31055           SIGS=VINT(315)*VINT(316)*SIGT(0,0,3)
31056  
31057         ELSEIF(ISUB.EQ.94) THEN
31058 C...Double diffractive scattering
31059           SIGS=VINT(315)*VINT(316)*SIGT(0,0,4)
31060  
31061         ELSEIF(ISUB.EQ.95) THEN
31062 C...Low-pT scattering
31063           SIGS=VINT(315)*VINT(316)*SIGT(0,0,5)
31064  
31065         ELSEIF(ISUB.EQ.96) THEN
31066 C...Multiple interactions: sum of QCD processes
31067           CALL PYWIDT(21,SH,WDTP,WDTE)
31068  
31069 C...q + q' -> q + q'
31070           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
31071           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
31072      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
31073           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)/UH2
31074           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
31075           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
31076           DO 340 I=-5,5
31077             IF(I.EQ.0) GOTO 340
31078             DO 330 J=-5,5
31079               IF(J.EQ.0) GOTO 330
31080               NCHN=NCHN+1
31081               ISIG(NCHN,1)=I
31082               ISIG(NCHN,2)=J
31083               ISIG(NCHN,3)=111
31084               SIGH(NCHN)=FACQQ1
31085               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
31086               IF(I.EQ.J) THEN
31087                 SIGH(NCHN)=0.5D0*FACQQ1*RATQQI
31088                 NCHN=NCHN+1
31089                 ISIG(NCHN,1)=I
31090                 ISIG(NCHN,2)=J
31091                 ISIG(NCHN,3)=112
31092                 SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
31093               ENDIF
31094   330       CONTINUE
31095   340     CONTINUE
31096  
31097 C...q + qbar -> q' + qbar' or g + g
31098           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
31099      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))
31100           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
31101      &    UH2/SH2)
31102           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
31103      &    TH2/SH2)
31104           DO 350 I=-5,5
31105             IF(I.EQ.0) GOTO 350
31106             NCHN=NCHN+1
31107             ISIG(NCHN,1)=I
31108             ISIG(NCHN,2)=-I
31109             ISIG(NCHN,3)=121
31110             SIGH(NCHN)=FACQQB
31111             NCHN=NCHN+1
31112             ISIG(NCHN,1)=I
31113             ISIG(NCHN,2)=-I
31114             ISIG(NCHN,3)=131
31115             SIGH(NCHN)=0.5D0*FACGG1
31116             NCHN=NCHN+1
31117             ISIG(NCHN,1)=I
31118             ISIG(NCHN,2)=-I
31119             ISIG(NCHN,3)=132
31120             SIGH(NCHN)=0.5D0*FACGG2
31121   350     CONTINUE
31122  
31123 C...q + g -> q + g
31124           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
31125      &    UH/SH)*FACA
31126           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
31127      &    SH/UH)
31128           DO 370 I=-5,5
31129             IF(I.EQ.0) GOTO 370
31130             DO 360 ISDE=1,2
31131               NCHN=NCHN+1
31132               ISIG(NCHN,ISDE)=I
31133               ISIG(NCHN,3-ISDE)=21
31134               ISIG(NCHN,3)=281
31135               SIGH(NCHN)=FACQG1
31136               NCHN=NCHN+1
31137               ISIG(NCHN,ISDE)=I
31138               ISIG(NCHN,3-ISDE)=21
31139               ISIG(NCHN,3)=282
31140               SIGH(NCHN)=FACQG2
31141   360       CONTINUE
31142   370     CONTINUE
31143  
31144 C...g + g -> q + qbar (only d, u, s)
31145           IDC0=MDCY(21,2)-1
31146           FLAVWT=0D0
31147           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
31148      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
31149           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
31150      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
31151           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
31152      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
31153           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
31154      &    UH2/SH2)*FLAVWT*FACA
31155           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
31156      &    TH2/SH2)*FLAVWT*FACA
31157           NCHN=NCHN+1
31158           ISIG(NCHN,1)=21
31159           ISIG(NCHN,2)=21
31160           ISIG(NCHN,3)=531
31161           SIGH(NCHN)=FACQQ1
31162           NCHN=NCHN+1
31163           ISIG(NCHN,1)=21
31164           ISIG(NCHN,2)=21
31165           ISIG(NCHN,3)=532
31166           SIGH(NCHN)=FACQQ2
31167  
31168 C...g + g -> c + cbar, b + bbar: modified that/uhat for fixed
31169 C...cos(theta-hat)
31170           DO 380 IFL=4,5
31171           SQMAVG=PMAS(IFL,1)**2
31172           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
31173             BE34=SQRT(1D0-4D0*SQMAVG/SH)
31174             THQ=-0.5D0*SH*(1D0-BE34*CTH)
31175             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
31176             THUHQ=THQ*UHQ-SQMAVG*SH
31177             IF(MSTP(34).EQ.0) THEN
31178               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
31179               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
31180             ELSE
31181               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
31182      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
31183               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
31184      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
31185             ENDIF
31186             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
31187             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
31188             NCHN=NCHN+1
31189             ISIG(NCHN,1)=21
31190             ISIG(NCHN,2)=21
31191             ISIG(NCHN,3)=531+2*(IFL-3)
31192             SIGH(NCHN)=FACQQ1
31193             NCHN=NCHN+1
31194             ISIG(NCHN,1)=21
31195             ISIG(NCHN,2)=21
31196             ISIG(NCHN,3)=532+2*(IFL-3)
31197             SIGH(NCHN)=FACQQ2
31198           ENDIF
31199   380     CONTINUE
31200  
31201 C...g + g -> g + g
31202           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
31203      &    2D0*TH/SH+TH2/SH2)*FACA
31204           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
31205      &    2D0*SH/UH+SH2/UH2)*FACA
31206           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3+
31207      &    2D0*UH/TH+UH2/TH2)
31208           NCHN=NCHN+1
31209           ISIG(NCHN,1)=21
31210           ISIG(NCHN,2)=21
31211           ISIG(NCHN,3)=681
31212           SIGH(NCHN)=0.5D0*FACGG1
31213           NCHN=NCHN+1
31214           ISIG(NCHN,1)=21
31215           ISIG(NCHN,2)=21
31216           ISIG(NCHN,3)=682
31217           SIGH(NCHN)=0.5D0*FACGG2
31218           NCHN=NCHN+1
31219           ISIG(NCHN,1)=21
31220           ISIG(NCHN,2)=21
31221           ISIG(NCHN,3)=683
31222           SIGH(NCHN)=0.5D0*FACGG3
31223  
31224         ELSEIF(ISUB.EQ.99) THEN
31225 C...f + gamma* -> f.
31226           IF(MINT(107).EQ.4) THEN
31227             Q2GA=VINT(307)
31228             P2GA=VINT(308)
31229             ISDE=2
31230           ELSE
31231             Q2GA=VINT(308)
31232             P2GA=VINT(307)
31233             ISDE=1
31234           ENDIF
31235           COMFAC=PARU(5)*4D0*PARU(1)**2*PARU(101)*VINT(315)*VINT(316)
31236           PM2RHO=PMAS(PYCOMP(113),1)**2
31237           IF(MSTP(19).EQ.0) THEN
31238             COMFAC=COMFAC/Q2GA
31239           ELSEIF(MSTP(19).EQ.1) THEN
31240             COMFAC=COMFAC/(Q2GA+PM2RHO)
31241           ELSEIF(MSTP(19).EQ.2) THEN
31242             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
31243           ELSE
31244             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
31245             W2GA=VINT(2)
31246             IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
31247               RDRDS=4.1D-3*W2GA**2.167D0/((Q2GA+0.15D0*W2GA)**2*
31248      &        Q2GA**0.75D0)*(1D0+0.11D0*Q2GA*P2GA/(1D0+0.02D0*P2GA**2))
31249               XGA=Q2GA/(W2GA+VINT(307)+VINT(308))
31250             ELSE
31251               RDRDS=1.5D-4*W2GA**2.167D0/((Q2GA+0.041D0*W2GA)**2*
31252      &        Q2GA**0.57D0)
31253               XGA=Q2GA/(W2GA+Q2GA-PMAS(PYCOMP(MINT(10+ISDE)),1)**2)
31254             ENDIF
31255             COMFAC=COMFAC*EXP(-MAX(1D-10,RDRDS))
31256             IF(MSTP(19).EQ.4) COMFAC=COMFAC/MAX(1D-2,1D0-XGA)
31257           ENDIF
31258           DO 390 I=MMINA,MMAXA
31259             IF(I.EQ.0.OR.KFAC(ISDE,I).EQ.0) GOTO 390
31260             IF(IABS(I).LT.10.AND.IABS(I).GT.MSTP(58)) GOTO 390
31261             EI=KCHG(IABS(I),1)/3D0
31262             NCHN=NCHN+1
31263             ISIG(NCHN,ISDE)=I
31264             ISIG(NCHN,3-ISDE)=22
31265             ISIG(NCHN,3)=1
31266             SIGH(NCHN)=COMFAC*EI**2
31267   390     CONTINUE
31268         ENDIF
31269  
31270       ELSE
31271         IF(ISUB.EQ.114.OR.ISUB.EQ.115) THEN
31272 C...g + g -> gamma + gamma or g + g -> g + gamma
31273           A0STUR=0D0
31274           A0STUI=0D0
31275           A0TSUR=0D0
31276           A0TSUI=0D0
31277           A0UTSR=0D0
31278           A0UTSI=0D0
31279           A1STUR=0D0
31280           A1STUI=0D0
31281           A2STUR=0D0
31282           A2STUI=0D0
31283           ALST=LOG(-SH/TH)
31284           ALSU=LOG(-SH/UH)
31285           ALTU=LOG(TH/UH)
31286           IMAX=2*MSTP(1)
31287           IF(MSTP(38).GE.1.AND.MSTP(38).LE.8) IMAX=MSTP(38)
31288           DO 400 I=1,IMAX
31289             EI=KCHG(IABS(I),1)/3D0
31290             EIWT=EI**2
31291             IF(ISUB.EQ.115) EIWT=EI
31292             SQMQ=PMAS(I,1)**2
31293             EPSS=4D0*SQMQ/SH
31294             EPST=4D0*SQMQ/TH
31295             EPSU=4D0*SQMQ/UH
31296             IF((MSTP(38).GE.1.AND.MSTP(38).LE.8).OR.EPSS.LT.1D-4) THEN
31297               B0STUR=1D0+(TH-UH)/SH*ALTU+0.5D0*(TH2+UH2)/SH2*(ALTU**2+
31298      &        PARU(1)**2)
31299               B0STUI=0D0
31300               B0TSUR=1D0+(SH-UH)/TH*ALSU+0.5D0*(SH2+UH2)/TH2*ALSU**2
31301               B0TSUI=-PARU(1)*((SH-UH)/TH+(SH2+UH2)/TH2*ALSU)
31302               B0UTSR=1D0+(SH-TH)/UH*ALST+0.5D0*(SH2+TH2)/UH2*ALST**2
31303               B0UTSI=-PARU(1)*((SH-TH)/UH+(SH2+TH2)/UH2*ALST)
31304               B1STUR=-1D0
31305               B1STUI=0D0
31306               B2STUR=-1D0
31307               B2STUI=0D0
31308             ELSE
31309               CALL PYWAUX(1,EPSS,W1SR,W1SI)
31310               CALL PYWAUX(1,EPST,W1TR,W1TI)
31311               CALL PYWAUX(1,EPSU,W1UR,W1UI)
31312               CALL PYWAUX(2,EPSS,W2SR,W2SI)
31313               CALL PYWAUX(2,EPST,W2TR,W2TI)
31314               CALL PYWAUX(2,EPSU,W2UR,W2UI)
31315               CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
31316               CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
31317               CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
31318               CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
31319               CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
31320               CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
31321               B0STUR=1D0+(1D0+2D0*TH/SH)*W1TR+(1D0+2D0*UH/SH)*W1UR+
31322      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TR+W2UR)-
31323      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTR+Y3TUSR)-
31324      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUR+Y3UTSR)+
31325      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
31326      &        0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
31327               B0STUI=(1D0+2D0*TH/SH)*W1TI+(1D0+2D0*UH/SH)*W1UI+
31328      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TI+W2UI)-
31329      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTI+Y3TUSI)-
31330      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUI+Y3UTSI)+
31331      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
31332      &        0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
31333               B0TSUR=1D0+(1D0+2D0*SH/TH)*W1SR+(1D0+2D0*UH/TH)*W1UR+
31334      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SR+W2UR)-
31335      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSR+Y3SUTR)-
31336      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUR+Y3USTR)+
31337      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
31338      &        0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)
31339               B0TSUI=(1D0+2D0*SH/TH)*W1SI+(1D0+2D0*UH/TH)*W1UI+
31340      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SI+W2UI)-
31341      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSI+Y3SUTI)-
31342      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUI+Y3USTI)+
31343      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
31344      &        0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)
31345               B0UTSR=1D0+(1D0+2D0*TH/UH)*W1TR+(1D0+2D0*SH/UH)*W1SR+
31346      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TR+W2SR)-
31347      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTR+Y3TSUR)-
31348      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSR+Y3STUR)+
31349      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
31350      &        0.5D0*EPST*EPSS)*(Y3TUSR+Y3SUTR)
31351               B0UTSI=(1D0+2D0*TH/UH)*W1TI+(1D0+2D0*SH/UH)*W1SI+
31352      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TI+W2SI)-
31353      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTI+Y3TSUI)-
31354      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSI+Y3STUI)+
31355      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
31356      &        0.5D0*EPST*EPSS)*(Y3TUSI+Y3SUTI)
31357               B1STUR=-1D0-0.25D0*(EPSS+EPST+EPSU)*(W2SR+W2TR+W2UR)+
31358      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTR+Y3TUSR)+
31359      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)+
31360      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
31361               B1STUI=-0.25D0*(EPSS+EPST+EPSU)*(W2SI+W2TI+W2UI)+
31362      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTI+Y3TUSI)+
31363      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)+
31364      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
31365               B2STUR=-1D0+0.125D0*EPSS*EPST*(Y3SUTR+Y3TUSR)+
31366      &        0.125D0*EPSS*EPSU*(Y3STUR+Y3UTSR)+
31367      &        0.125D0*EPST*EPSU*(Y3TSUR+Y3USTR)
31368               B2STUI=0.125D0*EPSS*EPST*(Y3SUTI+Y3TUSI)+
31369      &        0.125D0*EPSS*EPSU*(Y3STUI+Y3UTSI)+
31370      &        0.125D0*EPST*EPSU*(Y3TSUI+Y3USTI)
31371             ENDIF
31372             A0STUR=A0STUR+EIWT*B0STUR
31373             A0STUI=A0STUI+EIWT*B0STUI
31374             A0TSUR=A0TSUR+EIWT*B0TSUR
31375             A0TSUI=A0TSUI+EIWT*B0TSUI
31376             A0UTSR=A0UTSR+EIWT*B0UTSR
31377             A0UTSI=A0UTSI+EIWT*B0UTSI
31378             A1STUR=A1STUR+EIWT*B1STUR
31379             A1STUI=A1STUI+EIWT*B1STUI
31380             A2STUR=A2STUR+EIWT*B2STUR
31381             A2STUI=A2STUI+EIWT*B2STUI
31382   400     CONTINUE
31383           ASQSUM=A0STUR**2+A0STUI**2+A0TSUR**2+A0TSUI**2+A0UTSR**2+
31384      &    A0UTSI**2+4D0*A1STUR**2+4D0*A1STUI**2+A2STUR**2+A2STUI**2
31385           FACGG=COMFAC*FACA/(16D0*PARU(1)**2)*AS**2*AEM**2*ASQSUM
31386           FACGP=COMFAC*FACA*5D0/(192D0*PARU(1)**2)*AS**3*AEM*ASQSUM
31387           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
31388           NCHN=NCHN+1
31389           ISIG(NCHN,1)=21
31390           ISIG(NCHN,2)=21
31391           ISIG(NCHN,3)=1
31392           IF(ISUB.EQ.114) SIGH(NCHN)=0.5D0*FACGG
31393           IF(ISUB.EQ.115) SIGH(NCHN)=FACGP
31394   410     CONTINUE
31395  
31396         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
31397 C...f + gamma*_(T,L) -> f + g (q + gamma*_(T,L) -> q + g only)
31398           PH=0D0
31399           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
31400      &    PH=VINT(3)**2
31401           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
31402      &    PH=VINT(4)**2
31403           IF(ISUB.EQ.131) THEN
31404             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**2*
31405      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
31406           ELSE
31407             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
31408           ENDIF
31409           DO 430 I=MMINA,MMAXA
31410             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
31411             EI=KCHG(IABS(I),1)/3D0
31412             FACGQ=FGQ*EI**2
31413             DO 420 ISDE=1,2
31414               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 420
31415               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 420
31416               NCHN=NCHN+1
31417               ISIG(NCHN,ISDE)=I
31418               ISIG(NCHN,3-ISDE)=22
31419               ISIG(NCHN,3)=1
31420               SIGH(NCHN)=FACGQ
31421   420       CONTINUE
31422   430     CONTINUE
31423  
31424         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
31425 C...f + gamma*_(T,L) -> f + gamma
31426           PH=0D0
31427           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
31428      &    PH=VINT(3)**2
31429           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
31430      &    PH=VINT(4)**2
31431           IF(ISUB.EQ.133) THEN
31432             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**2*
31433      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
31434           ELSE
31435             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
31436           ENDIF
31437           DO 450 I=MMINA,MMAXA
31438             IF(I.EQ.0) GOTO 450
31439             EI=KCHG(IABS(I),1)/3D0
31440             FACGQ=FGQ*EI**4
31441             DO 440 ISDE=1,2
31442               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 440
31443               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 440
31444               NCHN=NCHN+1
31445               ISIG(NCHN,ISDE)=I
31446               ISIG(NCHN,3-ISDE)=22
31447               ISIG(NCHN,3)=1
31448               SIGH(NCHN)=FACGQ
31449   440       CONTINUE
31450   450     CONTINUE
31451  
31452         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
31453 C...g + gamma*_(T,L) -> f + fbar (g + gamma*_(T,L) -> q + qbar only)
31454           PH=0D0
31455           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
31456      &    PH=VINT(3)**2
31457           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
31458      &    PH=VINT(4)**2
31459           CALL PYWIDT(21,SH,WDTP,WDTE)
31460           WDTESU=0D0
31461           DO 460 I=1,MIN(8,MDCY(21,3))
31462             EF=KCHG(I,1)/3D0
31463             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
31464      &      WDTE(I,4))
31465   460     CONTINUE
31466           IF(ISUB.EQ.135) THEN
31467             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**2*
31468      &      ((TH2+UH2-2D0*PH*SH)/(TH*UH)+4D0*PH*SH/(SH+PH)**2)
31469           ELSE
31470             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**4*8D0*PH*SH
31471           ENDIF
31472           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
31473             NCHN=NCHN+1
31474             ISIG(NCHN,1)=21
31475             ISIG(NCHN,2)=22
31476             ISIG(NCHN,3)=1
31477             SIGH(NCHN)=FACQQ
31478           ENDIF
31479           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
31480             NCHN=NCHN+1
31481             ISIG(NCHN,1)=22
31482             ISIG(NCHN,2)=21
31483             ISIG(NCHN,3)=1
31484             SIGH(NCHN)=FACQQ
31485           ENDIF
31486  
31487         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
31488 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar
31489           PH1=0D0
31490           IF(VINT(3).LT.0D0) PH1=VINT(3)**2
31491           PH2=0D0
31492           IF(VINT(4).LT.0D0) PH2=VINT(4)**2
31493           CALL PYWIDT(22,SH,WDTP,WDTE)
31494           WDTESU=0D0
31495           DO 470 I=1,MIN(12,MDCY(22,3))
31496             IF(I.LE.8) EF= KCHG(I,1)/3D0
31497             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
31498             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
31499      &      WDTE(I,4))
31500   470     CONTINUE
31501           DLAMB2=(TH+UH)**2-4D0*PH1*PH2
31502           IF(ISUB.EQ.137) THEN
31503             FPARAM=-SH*(TH+UH)/DLAMB2
31504             FACFF=COMFAC*AEM**2*WDTESU*2D0*SH2/(DLAMB2*TH2*UH2)*
31505      &      (TH*UH-PH1*PH2)*((TH2+UH2)*(1D0-2D0*FPARAM*(1D0-FPARAM))-
31506      &      2D0*PH1*PH2*FPARAM**2)
31507           ELSEIF(ISUB.EQ.138) THEN
31508             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
31509      &      PH2*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH1*SH*(TH-UH)**2/DLAMB2)+
31510      &      2D0*PH1**2*(TH-UH)**2)
31511           ELSEIF(ISUB.EQ.139) THEN
31512             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
31513      &      PH1*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH2*SH*(TH-UH)**2/DLAMB2)+
31514      &      2D0*PH2**2*(TH-UH)**2)
31515           ELSE
31516             FACFF=COMFAC*AEM**2*WDTESU*32D0*SH2**2/(DLAMB2**3*TH2*UH2)*
31517      &      PH1*PH2*(TH*UH-PH1*PH2)*(TH-UH)**2
31518           ENDIF
31519           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
31520             NCHN=NCHN+1
31521             ISIG(NCHN,1)=22
31522             ISIG(NCHN,2)=22
31523             ISIG(NCHN,3)=1
31524             SIGH(NCHN)=FACFF
31525           ENDIF
31526  
31527         ENDIF
31528       ENDIF
31529  
31530       RETURN
31531       END
31532  
31533 C*********************************************************************
31534  
31535 C...PYSGHF
31536 C...Subprocess cross sections for heavy flavour production,
31537 C...open and closed.
31538 C...Auxiliary to PYSIGH.
31539  
31540       SUBROUTINE PYSGHF(NCHN,SIGS)
31541  
31542 C...Double precision and integer declarations
31543       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
31544       IMPLICIT INTEGER(I-N)
31545       INTEGER PYK,PYCHGE,PYCOMP
31546 C...Parameter statement to help give large particle numbers.
31547       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
31548      &KEXCIT=4000000,KDIMEN=5000000)
31549 C...Commonblocks
31550       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
31551       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
31552       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
31553       COMMON/PYINT1/MINT(400),VINT(400)
31554       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
31555       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
31556       COMMON/PYINT4/MWID(500),WIDS(500,5)
31557       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
31558      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
31559      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
31560      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
31561       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
31562      &/PYINT4/,/PYSGCM/
31563 C...Local arrays
31564       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
31565  
31566 C...Determine where are charmonium/bottomonium wave function parameters.
31567       IONIUM=140
31568       IF(ISUB.GE.461.AND.ISUB.LE.479) IONIUM=145
31569  
31570 C...Convert bottomonium process into equivalent charmonium ones.
31571       IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40
31572  
31573 C...Differential cross section expressions.
31574  
31575       IF(ISUB.LE.100) THEN
31576         IF(ISUB.EQ.81) THEN
31577 C...q + qbar -> Q + Qbar
31578           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
31579           THQ=-0.5D0*SH*(1D0-BE34*CTH)
31580           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
31581           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
31582      &    2D0*SQMAVG/SH)
31583           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
31584           WID2=1D0
31585           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
31586           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
31587           FACQQB=FACQQB*WID2
31588           DO 100 I=MMINA,MMAXA
31589             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31590      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
31591             NCHN=NCHN+1
31592             ISIG(NCHN,1)=I
31593             ISIG(NCHN,2)=-I
31594             ISIG(NCHN,3)=1
31595             SIGH(NCHN)=FACQQB
31596   100     CONTINUE
31597  
31598         ELSEIF(ISUB.EQ.82) THEN
31599 C...g + g -> Q + Qbar
31600           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
31601           THQ=-0.5D0*SH*(1D0-BE34*CTH)
31602           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
31603           THUHQ=THQ*UHQ-SQMAVG*SH
31604           IF(MSTP(34).EQ.0) THEN
31605             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
31606             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
31607           ELSE
31608             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
31609      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
31610             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
31611      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
31612           ENDIF
31613           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
31614           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
31615           IF(MSTP(35).GE.1) THEN
31616             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
31617             FACQQ1=FACQQ1*FATRE
31618             FACQQ2=FACQQ2*FATRE
31619           ENDIF
31620           WID2=1D0
31621           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
31622           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
31623           FACQQ1=FACQQ1*WID2
31624           FACQQ2=FACQQ2*WID2
31625           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 110
31626           NCHN=NCHN+1
31627           ISIG(NCHN,1)=21
31628           ISIG(NCHN,2)=21
31629           ISIG(NCHN,3)=1
31630           SIGH(NCHN)=FACQQ1
31631           NCHN=NCHN+1
31632           ISIG(NCHN,1)=21
31633           ISIG(NCHN,2)=21
31634           ISIG(NCHN,3)=2
31635           SIGH(NCHN)=FACQQ2
31636   110     CONTINUE
31637  
31638         ELSEIF(ISUB.EQ.83) THEN
31639 C...f + q -> f' + Q
31640           FACQQS=COMFAC*(0.5D0*AEM/XW)**2*SH*(SH-SQM3)/(SQMW-TH)**2
31641           FACQQU=COMFAC*(0.5D0*AEM/XW)**2*UH*(UH-SQM3)/(SQMW-TH)**2
31642           DO 130 I=MMIN1,MMAX1
31643             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 130
31644             DO 120 J=MMIN2,MMAX2
31645               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 120
31646               IF(I*J.GT.0.AND.MOD(IABS(I+J),2).EQ.0) GOTO 120
31647               IF(I*J.LT.0.AND.MOD(IABS(I+J),2).EQ.1) GOTO 120
31648               IF(IABS(I).LT.MINT(55).AND.MOD(IABS(I+MINT(55)),2).EQ.1)
31649      &        THEN
31650                 NCHN=NCHN+1
31651                 ISIG(NCHN,1)=I
31652                 ISIG(NCHN,2)=J
31653                 ISIG(NCHN,3)=1
31654                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
31655      &          (IABS(I)+1)/2)*VINT(180+J)
31656                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(I)/2,
31657      &          (MINT(55)+1)/2)*VINT(180+J)
31658                 WID2=1D0
31659                 IF(I.GT.0) THEN
31660                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
31661                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
31662      &            WIDS(MINT(55),2)
31663                 ELSE
31664                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
31665                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
31666      &            WIDS(MINT(55),3)
31667                 ENDIF
31668                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
31669                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
31670               ENDIF
31671               IF(IABS(J).LT.MINT(55).AND.MOD(IABS(J+MINT(55)),2).EQ.1)
31672      &        THEN
31673                 NCHN=NCHN+1
31674                 ISIG(NCHN,1)=I
31675                 ISIG(NCHN,2)=J
31676                 ISIG(NCHN,3)=2
31677                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
31678      &          (IABS(J)+1)/2)*VINT(180+I)
31679                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(J)/2,
31680      &          (MINT(55)+1)/2)*VINT(180+I)
31681                 WID2=1D0
31682                 IF(J.GT.0) THEN
31683                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
31684                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
31685      &            WIDS(MINT(55),2)
31686                 ELSE
31687                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
31688                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
31689      &            WIDS(MINT(55),3)
31690                 ENDIF
31691                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
31692                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
31693               ENDIF
31694   120       CONTINUE
31695   130     CONTINUE
31696  
31697         ELSEIF(ISUB.EQ.84) THEN
31698 C...g + gamma -> Q + Qbar
31699           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
31700           THQ=-0.5D0*SH*(1D0-BE34*CTH)
31701           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
31702           FACQQ=COMFAC*AS*AEM*(KCHG(IABS(MINT(55)),1)/3D0)**2*
31703      &    (THQ**2+UHQ**2+4D0*SQMAVG*SH*(1D0-SQMAVG*SH/(THQ*UHQ)))/
31704      &    (THQ*UHQ)
31705           IF(MSTP(35).GE.1) FACQQ=FACQQ*PYHFTH(SH,SQMAVG,0D0)
31706           WID2=1D0
31707           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
31708           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
31709           FACQQ=FACQQ*WID2
31710           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
31711             NCHN=NCHN+1
31712             ISIG(NCHN,1)=21
31713             ISIG(NCHN,2)=22
31714             ISIG(NCHN,3)=1
31715             SIGH(NCHN)=FACQQ
31716           ENDIF
31717           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
31718             NCHN=NCHN+1
31719             ISIG(NCHN,1)=22
31720             ISIG(NCHN,2)=21
31721             ISIG(NCHN,3)=1
31722             SIGH(NCHN)=FACQQ
31723           ENDIF
31724  
31725         ELSEIF(ISUB.EQ.85) THEN
31726 C...gamma + gamma -> F + Fbar (heavy fermion, quark or lepton)
31727           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
31728           THQ=-0.5D0*SH*(1D0-BE34*CTH)
31729           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
31730           FACFF=COMFAC*AEM**2*(KCHG(IABS(MINT(56)),1)/3D0)**4*2D0*
31731      &    ((1D0-PARJ(131)*PARJ(132))*(THQ*UHQ-SQMAVG*SH)*
31732      &    (UHQ**2+THQ**2+2D0*SQMAVG*SH)+(1D0+PARJ(131)*PARJ(132))*
31733      &    SQMAVG*SH**2*(SH-2D0*SQMAVG))/(THQ*UHQ)**2
31734           IF(IABS(MINT(56)).LT.10) FACFF=3D0*FACFF
31735           IF(IABS(MINT(56)).LT.10.AND.MSTP(35).GE.1)
31736      &    FACFF=FACFF*PYHFTH(SH,SQMAVG,1D0)
31737           WID2=1D0
31738           IF(MINT(56).EQ.6) WID2=WIDS(6,1)
31739           IF(MINT(56).EQ.7.OR.MINT(56).EQ.8) WID2=WIDS(MINT(56),1)
31740           IF(MINT(56).EQ.17) WID2=WIDS(17,1)
31741           FACFF=FACFF*WID2
31742           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
31743             NCHN=NCHN+1
31744             ISIG(NCHN,1)=22
31745             ISIG(NCHN,2)=22
31746             ISIG(NCHN,3)=1
31747             SIGH(NCHN)=FACFF
31748           ENDIF
31749  
31750         ELSEIF(ISUB.EQ.86) THEN
31751 C...g + g -> J/Psi + g
31752           FACQQG=COMFAC*AS**3*(5D0/9D0)*PARP(38)*SQRT(SQM3)*
31753      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
31754      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
31755           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31756             NCHN=NCHN+1
31757             ISIG(NCHN,1)=21
31758             ISIG(NCHN,2)=21
31759             ISIG(NCHN,3)=1
31760             SIGH(NCHN)=FACQQG
31761           ENDIF
31762  
31763         ELSEIF(ISUB.EQ.87) THEN
31764 C...g + g -> chi_0c + g
31765           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31766           QGTW=(SH*TH*UH)/SH**3
31767           RGTW=SQM3/SH
31768           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
31769      &    (9D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
31770      &    6D0*RGTW*PGTW**3*QGTW*(2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)-
31771      &    PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)+
31772      &    2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)+6D0*RGTW**2*QGTW**4)/
31773      &    (QGTW*(QGTW-RGTW*PGTW)**4)
31774           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31775             NCHN=NCHN+1
31776             ISIG(NCHN,1)=21
31777             ISIG(NCHN,2)=21
31778             ISIG(NCHN,3)=1
31779             SIGH(NCHN)=FACQQG
31780           ENDIF
31781  
31782         ELSEIF(ISUB.EQ.88) THEN
31783 C...g + g -> chi_1c + g
31784           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31785           QGTW=(SH*TH*UH)/SH**3
31786           RGTW=SQM3/SH
31787           FACQQG=COMFAC*AS**3*12D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
31788      &    PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)+2D0*QGTW*(-RGTW**4+
31789      &    5D0*RGTW**2*PGTW+PGTW**2)-15D0*RGTW*QGTW**2)/
31790      &    (QGTW-RGTW*PGTW)**4
31791           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31792             NCHN=NCHN+1
31793             ISIG(NCHN,1)=21
31794             ISIG(NCHN,2)=21
31795             ISIG(NCHN,3)=1
31796             SIGH(NCHN)=FACQQG
31797           ENDIF
31798  
31799         ELSEIF(ISUB.EQ.89) THEN
31800 C...g + g -> chi_2c + g
31801           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31802           QGTW=(SH*TH*UH)/SH**3
31803           RGTW=SQM3/SH
31804           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
31805      &    (12D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
31806      &    3D0*RGTW*PGTW**3*QGTW*(8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)+
31807      &    2D0*PGTW**2*QGTW**2*(-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)+
31808      &    RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)+12D0*RGTW**2*
31809      &    QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31810           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31811             NCHN=NCHN+1
31812             ISIG(NCHN,1)=21
31813             ISIG(NCHN,2)=21
31814             ISIG(NCHN,3)=1
31815             SIGH(NCHN)=FACQQG
31816           ENDIF
31817         ENDIF
31818  
31819       ELSEIF(ISUB.LE.200) THEN
31820         IF(ISUB.EQ.104) THEN
31821 C...g + g -> chi_c0.
31822           KC=PYCOMP(10441)
31823           FACBW=COMFAC*12D0*AS**2*PARP(39)*PMAS(KC,2)/
31824      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
31825           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
31826           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31827             NCHN=NCHN+1
31828             ISIG(NCHN,1)=21
31829             ISIG(NCHN,2)=21
31830             ISIG(NCHN,3)=1
31831             SIGH(NCHN)=FACBW
31832           ENDIF
31833  
31834         ELSEIF(ISUB.EQ.105) THEN
31835 C...g + g -> chi_c2.
31836           KC=PYCOMP(445)
31837           FACBW=COMFAC*16D0*AS**2*PARP(39)*PMAS(KC,2)/
31838      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
31839           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
31840           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31841             NCHN=NCHN+1
31842             ISIG(NCHN,1)=21
31843             ISIG(NCHN,2)=21
31844             ISIG(NCHN,3)=1
31845             SIGH(NCHN)=FACBW
31846           ENDIF
31847  
31848         ELSEIF(ISUB.EQ.106) THEN
31849 C...g + g -> J/Psi + gamma.
31850           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
31851           FACQQG=COMFAC*AEM*EQ**2*AS**2*(4D0/3D0)*PARP(38)*SQRT(SQM3)*
31852      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
31853      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
31854           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31855             NCHN=NCHN+1
31856             ISIG(NCHN,1)=21
31857             ISIG(NCHN,2)=21
31858             ISIG(NCHN,3)=1
31859             SIGH(NCHN)=FACQQG
31860           ENDIF
31861  
31862         ELSEIF(ISUB.EQ.107) THEN
31863 C...g + gamma -> J/Psi + g.
31864           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
31865           FACQQG=COMFAC*AEM*EQ**2*AS**2*(32D0/3D0)*PARP(38)*SQRT(SQM3)*
31866      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
31867      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
31868           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
31869             NCHN=NCHN+1
31870             ISIG(NCHN,1)=21
31871             ISIG(NCHN,2)=22
31872             ISIG(NCHN,3)=1
31873             SIGH(NCHN)=FACQQG
31874           ENDIF
31875           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
31876             NCHN=NCHN+1
31877             ISIG(NCHN,1)=22
31878             ISIG(NCHN,2)=21
31879             ISIG(NCHN,3)=1
31880             SIGH(NCHN)=FACQQG
31881           ENDIF
31882  
31883         ELSEIF(ISUB.EQ.108) THEN
31884 C...gamma + gamma -> J/Psi + gamma.
31885           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
31886           FACQQG=COMFAC*AEM**3*EQ**6*384D0*PARP(38)*SQRT(SQM3)*
31887      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
31888      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
31889           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
31890             NCHN=NCHN+1
31891             ISIG(NCHN,1)=22
31892             ISIG(NCHN,2)=22
31893             ISIG(NCHN,3)=1
31894             SIGH(NCHN)=FACQQG
31895           ENDIF
31896         ENDIF
31897  
31898 C...QUARKONIA+++
31899 C...Additional code by Stefan Wolf
31900       ELSE
31901  
31902 C...Common code for quarkonium production.
31903         SHTH=SH+TH
31904         THUH=TH+UH
31905         UHSH=UH+SH
31906         SHTH2=SHTH**2
31907         THUH2=THUH**2
31908         UHSH2=UHSH**2
31909         IF ( (ISUB.GE.421.AND.ISUB.LE.424).OR.
31910      &       (ISUB.GE.431.AND.ISUB.LE.433)) THEN
31911           SQMQQ=SQM3
31912         ELSEIF((ISUB.GE.425.AND.ISUB.LE.430).OR.
31913      &         (ISUB.GE.434.AND.ISUB.LE.439)) THEN
31914           SQMQQ=SQM4
31915         ENDIF
31916         SQMQQR=SQRT(SQMQQ)
31917         IF(MSTP(145).EQ.1) THEN
31918            IF ( (ISUB.GE.421.AND.ISUB.LE.427).OR.
31919      &          (ISUB.GE.431.AND.ISUB.LE.436)) THEN
31920               AQ=UHSH/(2D0*X(1)) + SHTH/(2D0*X(2))
31921               BQ=UHSH/(2D0*X(1)) - SHTH/(2D0*X(2))
31922               ATILK1=X(1)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*AQ
31923               ATILK2=X(2)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*AQ
31924               BTILK1=-X(1)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*BQ
31925               BTILK2=X(2)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*BQ
31926            ELSEIF( (ISUB.GE.428.AND.ISUB.LE.430).OR.
31927      &             ISUB.GE.437) THEN
31928               AQ=SHTH/(2D0*X(1)) + UHSH/(2D0*X(2))
31929               BQ=SHTH/(2D0*X(1)) - UHSH/(2D0*X(2))
31930               ATILK1=X(1)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*AQ
31931               ATILK2=X(2)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*AQ
31932               BTILK1=-X(1)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*BQ
31933               BTILK2=X(2)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*BQ
31934            ENDIF
31935            AQ2=AQ**2
31936            BQ2=BQ**2
31937            SMQQ2=SQMQQ*VINT(2)
31938 C...Polarisation frames
31939            IF(MSTP(146).EQ.1) THEN
31940 C...Recoil frame
31941               POLH1=SQRT(AQ2-SMQQ2)
31942               POLH2=SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
31943               AZ=-SQMQQR/POLH1
31944               BZ=0D0
31945               AX=AQ*BQ/(POLH1*POLH2)
31946               BX=-POLH1/POLH2
31947            ELSEIF(MSTP(146).EQ.2) THEN
31948 C...Gottfried Jackson frame
31949               POLH1=AQ+BQ
31950               POLH2=POLH1*SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
31951               AZ=SQMQQR/POLH1
31952               BZ=AZ
31953               AX=-(BQ2+AQ*BQ+SMQQ2)/POLH2
31954               BX=(AQ2+AQ*BQ-SMQQ2)/POLH2
31955            ELSEIF(MSTP(146).EQ.3) THEN
31956 C...Target frame
31957               POLH1=AQ-BQ
31958               POLH2=POLH1*SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
31959               AZ=-SQMQQR/POLH1
31960               BZ=-AZ
31961               AX=-(BQ2-AQ*BQ+SMQQ2)/POLH2
31962               BX=-(AQ2-AQ*BQ-SMQQ2)/POLH2
31963            ELSEIF(MSTP(146).EQ.4) THEN
31964 C...Collins Soper frame
31965               POLH1=AQ2-BQ2
31966               POLH2=SQRT(VINT(2)*POLH1)
31967               AZ=-BQ/POLH2
31968               BZ=AQ/POLH2
31969               AX=-SQMQQR*AQ/SQRT(POLH1*(POLH1-SMQQ2))
31970               BX=SQMQQR*BQ/SQRT(POLH1*(POLH1-SMQQ2))
31971            ENDIF
31972 C...Contract EL1(lam) EL2(lam') with K1 and K2 (initial parton momenta)
31973            EL1K10=AZ*ATILK1+BZ*BTILK1
31974            EL1K20=AZ*ATILK2+BZ*BTILK2
31975            EL2K10=EL1K10
31976            EL2K20=EL1K20
31977            EL1K11=1D0/SQRT(2D0)*(AX*ATILK1+BX*BTILK1)
31978            EL1K21=1D0/SQRT(2D0)*(AX*ATILK2+BX*BTILK2)
31979            EL2K11=EL1K11
31980            EL2K21=EL1K21
31981         ENDIF
31982  
31983         IF(ISUB.EQ.421) THEN
31984 C...g + g -> QQ~[3S11] + g
31985           IF(MSTP(145).EQ.0) THEN
31986 *            FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
31987 *     &            (SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/(SHTH2*THUH2*UHSH2)
31988             FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
31989      &            (SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/SHTH2/THUH2/UHSH2
31990 *            FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
31991 *     &           (SH2/(SHTH2*UHSH2)+TH2/(SHTH2*THUH2)+UH2/(THUH2*UHSH2))
31992           ELSE
31993             FF=-PARU(1)*AS**3*(10D0/81D0)*SQMQQR/THUH2/SHTH2/UHSH2
31994             AA=(SHTH2*UH2+UHSH2*TH2+THUH2*SH2)/2D0
31995             BB=2D0*(SH2+TH2)
31996             CC=2D0*(SH2+UH2)
31997             DD=2D0*SH2
31998             IF(MSTP(147).EQ.0) THEN
31999                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32000      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32001             ELSEIF(MSTP(147).EQ.1) THEN
32002                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32003      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
32004             ELSEIF(MSTP(147).EQ.3) THEN
32005                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32006      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32007             ELSEIF(MSTP(147).EQ.4) THEN
32008                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32009      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32010             ELSEIF(MSTP(147).EQ.5) THEN
32011                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
32012      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
32013             ELSEIF(MSTP(147).EQ.6) THEN
32014                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32015      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32016             ENDIF
32017             FACQQG=COMFAC*FF*FACQQG
32018           ENDIF
32019           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32020             NCHN=NCHN+1
32021             ISIG(NCHN,1)=21
32022             ISIG(NCHN,2)=21
32023             ISIG(NCHN,3)=1
32024             SIGH(NCHN)=FACQQG*PARP(IONIUM+1)
32025           ENDIF
32026  
32027         ELSEIF(ISUB.EQ.422) THEN
32028 C...g + g -> QQ~[3S18] + g
32029           IF(MSTP(145).EQ.0) THEN
32030             FACQQG=-COMFAC*PARU(1)*AS**3*(1D0/72D0)*
32031      &            (16D0*SQMQQ**2-27D0*(SHTH2+THUH2+UHSH2))/
32032      &            (SQMQQ*SQMQQR)*
32033      &            ((SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/SHTH2/THUH2/UHSH2)
32034           ELSE
32035             FF=PARU(1)*AS**3*(16D0*SQMQQ**2-27D0*(SHTH2+THUH2+UHSH2))/
32036      &            (72D0*SQMQQ*SQMQQR*SHTH2*THUH2*UHSH2)
32037             AA=(SHTH2*UH2+UHSH2*TH2+THUH2*SH2)/2D0
32038             BB=2D0*(SH2+TH2)
32039             CC=2D0*(SH2+UH2)
32040             DD=2D0*SH2
32041             IF(MSTP(147).EQ.0) THEN
32042                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32043      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32044             ELSEIF(MSTP(147).EQ.1) THEN
32045                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32046      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
32047             ELSEIF(MSTP(147).EQ.3) THEN
32048                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32049      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32050             ELSEIF(MSTP(147).EQ.4) THEN
32051                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32052      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32053             ELSEIF(MSTP(147).EQ.5) THEN
32054                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
32055      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
32056             ELSEIF(MSTP(147).EQ.6) THEN
32057                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32058      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32059             ENDIF
32060             FACQQG=COMFAC*FF*FACQQG
32061           ENDIF
32062 C...Split total contribution into different colour flows just like
32063 C...in g g -> g g (recalculate kinematics for massless partons).
32064           THP=-0.5D0*SH*(1D0-CTH)
32065           UHP=-0.5D0*SH*(1D0+CTH)
32066           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
32067           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
32068           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
32069           FACGGS=FACGG1+FACGG2+FACGG3
32070           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32071              NCHN=NCHN+1
32072              ISIG(NCHN,1)=21
32073              ISIG(NCHN,2)=21
32074              ISIG(NCHN,3)=1
32075              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG1/FACGGS
32076              NCHN=NCHN+1
32077              ISIG(NCHN,1)=21
32078              ISIG(NCHN,2)=21
32079              ISIG(NCHN,3)=2
32080              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG2/FACGGS
32081              NCHN=NCHN+1
32082              ISIG(NCHN,1)=21
32083              ISIG(NCHN,2)=21
32084              ISIG(NCHN,3)=3
32085              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG3/FACGGS
32086           ENDIF
32087  
32088         ELSEIF(ISUB.EQ.423) THEN
32089 C...g + g -> QQ~[1S08] + g
32090           IF(MSTP(145).EQ.0) THEN
32091 *            FACQQG=COMFAC*PARU(1)*AS**3*(5D0/16D0)*
32092 *     &           (SHTH2*UH2+THUH2*SH2+UHSH2*TH2)/(SQMQQR*SH*TH*UH)*
32093 *     &           (12D0*SQMQQ*SH*TH*UH+SHTH2**2+THUH2**2+UHSH2**2)/
32094 *     &           (SHTH2*THUH2*UHSH2)
32095             FACQQG=COMFAC*PARU(1)*AS**3*(5D0/16D0)*SQMQQR*
32096      &            (UH2/(THUH2*UHSH2)+SH2/(SHTH2*UHSH2)+
32097      &            TH2/(SHTH2*THUH2))*
32098      &            (12D0+(SHTH2**2+THUH2**2+UHSH2**2)/(SQMQQ*SH*TH*UH))
32099           ELSE
32100             FA=PARU(1)*AS**3*(5D0/48D0)*SQMQQR*
32101      &            (UH2/(THUH2*UHSH2)+SH2/(SHTH2*UHSH2)+
32102      &            TH2/(SHTH2*THUH2))*
32103      &            (12D0+(SHTH2**2+THUH2**2+UHSH2**2)/(SQMQQ*SH*TH*UH))
32104             IF(MSTP(147).EQ.0) THEN
32105                FACQQG=COMFAC*FA
32106             ELSEIF(MSTP(147).EQ.1) THEN
32107                FACQQG=COMFAC*2D0*FA
32108             ELSEIF(MSTP(147).EQ.3) THEN
32109                FACQQG=COMFAC*FA
32110             ELSEIF(MSTP(147).EQ.4) THEN
32111                FACQQG=COMFAC*FA
32112             ELSEIF(MSTP(147).EQ.5) THEN
32113                FACQQG=0D0
32114             ELSEIF(MSTP(147).EQ.6) THEN
32115                FACQQG=0D0
32116             ENDIF
32117           ENDIF
32118 C...Split total contribution into different colour flows just like
32119 C...in g g -> g g (recalculate kinematics for massless partons).
32120           THP=-0.5D0*SH*(1D0-CTH)
32121           UHP=-0.5D0*SH*(1D0+CTH)
32122           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
32123           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
32124           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
32125           FACGGS=FACGG1+FACGG2+FACGG3
32126           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32127              NCHN=NCHN+1
32128              ISIG(NCHN,1)=21
32129              ISIG(NCHN,2)=21
32130              ISIG(NCHN,3)=1
32131              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG1/FACGGS
32132              NCHN=NCHN+1
32133              ISIG(NCHN,1)=21
32134              ISIG(NCHN,2)=21
32135              ISIG(NCHN,3)=2
32136              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG2/FACGGS
32137              NCHN=NCHN+1
32138              ISIG(NCHN,1)=21
32139              ISIG(NCHN,2)=21
32140              ISIG(NCHN,3)=3
32141              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG3/FACGGS
32142           ENDIF
32143  
32144         ELSEIF(ISUB.EQ.424) THEN
32145 C...g + g -> QQ~[3PJ8] + g
32146           POLY=SH2+SH*TH+TH2
32147           IF(MSTP(145).EQ.0) THEN
32148             FACQQG=COMFAC*5D0*PARU(1)*AS**3*(3D0*SH*TH*SHTH*POLY**4
32149      &            -SQMQQ*POLY**2*(7D0*SH**6+36D0*SH**5*TH+45D0*SH**4*TH2
32150      &            +28D0*SH**3*TH**3+45D0*SH2*TH**4+36D0*SH*TH**5
32151      &            +7D0*TH**6)
32152      &            +SQMQQ**2*SHTH*(35D0*SH**8+169D0*SH**7*TH
32153      &            +299D0*SH**6*TH2+401D0*SH**5*TH**3+418D0*SH**4*TH**4
32154      &            +401D0*SH**3*TH**5+299D0*SH2*TH**6+169D0*SH*TH**7
32155      &            +35D0*TH**8)
32156      &            -SQMQQ**3*(84D0*SH**8+432D0*SH**7*TH+905D0*SH**6*TH2
32157      &            +1287D0*SH**5*TH**3+1436D0*SH**4*TH**4
32158      &            +1287D0*SH**3*TH**5+905D0*SH2*TH**6+432D0*SH*TH**7
32159      &            +84D0*TH**8)
32160      &            +SQMQQ**4*SHTH*(126D0*SH**6+451D0*SH**5*TH
32161      &            +677D0*SH**4*TH2+836D0*SH**3*TH**3+677D0*SH2*TH**4
32162      &            +451D0*SH*TH**5+126D0*TH**6)
32163      &            -3D0*SQMQQ**5*(42D0*SH**6+171D0*SH**5*TH
32164      &            +304D0*SH**4*TH2+362D0*SH**3*TH**3+304D0*SH2*TH**4
32165      &            +171D0*SH*TH**5+42D0*TH**6)
32166      &            +2D0*SQMQQ**6*SHTH*(42D0*SH**4+106D0*SH**3*TH
32167      &            +119D0*SH2*TH2+106D0*SH*TH**3+42D0*TH**4)
32168      &            -SQMQQ**7*(35D0*SH**4+99D0*SH**3*TH+120D0*SH2*TH2
32169      &            +99D0*SH*TH**3+35D0*TH**4)
32170      &            +7D0*SQMQQ**8*SHTH*POLY)/
32171      &            (SH*TH*UH*SQMQQR*SQMQQ*
32172      &            SHTH*SHTH2*THUH*THUH2*UHSH*UHSH2)
32173           ELSE
32174             FF=-5D0*PARU(1)*AS**3/(SH2*TH2*UH2
32175      &            *SQMQQR*SQMQQ*SHTH*SHTH2*THUH*THUH2*UHSH*UHSH2)
32176             AA=SH*TH*UH*(SH*TH*SHTH*POLY**4
32177      &           -SQMQQ*SHTH2*POLY**2*
32178      &           (SH**4+6D0*SH**3*TH-6D0*SH2*TH2+6D0*SH*TH**3+TH**4)
32179      &           +SQMQQ**2*SHTH*(5D0*SH**8+35D0*SH**7*TH+49D0*SH**6*TH2
32180      &           +57D0*SH**5*TH**3+46D0*SH**4*TH**4+57D0*SH**3*TH**5
32181      &           +49D0*SH2*TH**6+35D0*SH*TH**7+5D0*TH**8)
32182      &           -SQMQQ**3*(16D0*SH**8+104D0*SH**7*TH+215D0*SH**6*TH2
32183      &           +291D0*SH**5*TH**3+316D0*SH**4*TH**4+291D0*SH**3*TH**5
32184      &           +215D0*SH2*TH**6+104D0*SH*TH**7+16D0*TH**8)
32185      &           +SQMQQ**4*SHTH*(34D0*SH**6+145D0*SH**5*TH
32186      &           +211D0*SH**4*TH2+262D0*SH**3*TH**3+211D0*SH2*TH**4
32187      &           +145D0*SH*TH**5+34D0*TH**6)
32188      &           -SQMQQ**5*(44D0*SH**6+193D0*SH**5*TH+346D0*SH**4*TH2
32189      &           +410D0*SH**3*TH**3+346D0*SH2*TH**4+193D0*SH*TH**5
32190      &           +44D0*TH**6)
32191      &           +2D0*SQMQQ**6*SHTH*(17D0*SH**4+45D0*SH**3*TH
32192      &           +49D0*SH2*TH2+45D0*SH*TH**3+17D0*TH**4)
32193      &           -SQMQQ**7*(3D0*SH2+2D0*SH*TH+3D0*TH2)
32194      &           *(5D0*SH2+11D0*SH*TH+5D0*TH2)
32195      &           +3D0*SQMQQ**8*SHTH*POLY)
32196             BB=4D0*SHTH2*POLY**3
32197      &           *(SH**4+SH**3*TH-SH2*TH2+SH*TH**3+TH**4)
32198      &           -SQMQQ*SHTH*(20D0*SH**10+84D0*SH**9*TH+166D0*SH**8*TH2
32199      &           +231D0*SH**7*TH**3+250D0*SH**6*TH**4+250D0*SH**5*TH**5
32200      &           +250D0*SH**4*TH**6+231D0*SH**3*TH**7+166D0*SH2*TH**8
32201      &           +84D0*SH*TH**9+20D0*TH**10)
32202      &           +SQMQQ**2*SHTH2*(40D0*SH**8+86D0*SH**7*TH
32203      &           +66D0*SH**6*TH2+67D0*SH**5*TH**3+6D0*SH**4*TH**4
32204      &           +67D0*SH**3*TH**5+66D0*SH2*TH**6+86D0*SH*TH**7
32205      &           +40D0*TH**8)
32206      &           -SQMQQ**3*SHTH*(40D0*SH**8+57D0*SH**7*TH
32207      &           -110D0*SH**6*TH2-263D0*SH**5*TH**3-384D0*SH**4*TH**4
32208      &           -263D0*SH**3*TH**5-110D0*SH2*TH**6+57D0*SH*TH**7
32209      &           +40D0*TH**8)
32210      &           +SQMQQ**4*(20D0*SH**8-33D0*SH**7*TH-368D0*SH**6*TH2
32211      &           -751D0*SH**5*TH**3-920D0*SH**4*TH**4-751D0*SH**3*TH**5
32212      &           -368D0*SH2*TH**6-33D0*SH*TH**7+20D0*TH**8)
32213      &           -SQMQQ**5*SHTH*(4D0*SH**6-81D0*SH**5*TH-242D0*SH**4*TH2
32214      &           -250D0*SH**3*TH**3-242D0*SH2*TH**4-81D0*SH*TH**5
32215      &           +4D0*TH**6)
32216      &           -SQMQQ**6*SH*TH*(41D0*SH**4+120D0*SH**3*TH
32217      &           +142D0*SH2*TH2+120D0*SH*TH**3+41D0*TH**4)
32218      &           +8D0*SQMQQ**7*SH*TH*SHTH*POLY
32219             CC=4D0*TH2*POLY**3
32220      &           *(-SH**4-2D0*SH**3*TH+2D0*SH2*TH2+3D0*SH*TH**3+TH**4)
32221      &           -SQMQQ*TH2*(-20D0*SH**9-56D0*SH**8*TH-24D0*SH**7*TH2
32222      &           +147D0*SH**6*TH**3+409D0*SH**5*TH**4+599D0*SH**4*TH**5
32223      &           +571D0*SH**3*TH**6+370D0*SH2*TH**7+148D0*SH*TH**8
32224      &           +28D0*TH**9)
32225      &           +SQMQQ**2*(4D0*SH**10+20D0*SH**9*TH-16D0*SH**8*TH2
32226      &           -48D0*SH**7*TH**3+150D0*SH**6*TH**4+611D0*SH**5*TH**5
32227      &           +1060D0*SH**4*TH**6+1155D0*SH**3*TH**7+854D0*SH2*TH**8
32228      &           +394D0*SH*TH**9+84D0*TH**10)
32229      &           -SQMQQ**3*SHTH*(20D0*SH**8+68D0*SH**7*TH-20D0*SH**6*TH2
32230      &           +32D0*SH**5*TH**3+286D0*SH**4*TH**4+577D0*SH**3*TH**5
32231      &           +618D0*SH2*TH**6+443D0*SH*TH**7+140D0*TH**8)
32232      &           +SQMQQ**4*(40D0*SH**8+152D0*SH**7*TH+94D0*SH**6*TH2
32233      &           +38D0*SH**5*TH**3+290D0*SH**4*TH**4+631D0*SH**3*TH**5
32234      &           +738D0*SH2*TH**6+513D0*SH*TH**7+140D0*TH**8)
32235      &           -SQMQQ**5*(40D0*SH**7+129D0*SH**6*TH+53D0*SH**5*TH2
32236      &           +7D0*SH**4*TH**3+129D0*SH**3*TH**4+264D0*SH2*TH**5
32237      &           +266D0*SH*TH**6+84D0*TH**7)
32238      &           +SQMQQ**6*(20D0*SH**6+55D0*SH**5*TH+2D0*SH**4*TH2
32239      &           -15D0*SH**3*TH**3+30D0*SH2*TH**4+76D0*SH*TH**5
32240      &           +28D0*TH**6)
32241      &           -SQMQQ**7*SHTH*(4D0*SH**4+7D0*SH**3*TH-14D0*SH2*TH2
32242      &           +7D0*SH*TH**3+4*TH**4)
32243      &           +SQMQQ**8*SH*(SH-TH)**2*TH
32244             DD=2D0*TH2*SHTH2*POLY**3
32245      &           *(-SH2+2*SH*TH+2*TH2)
32246      &           +SQMQQ*(4D0*SH**11+22D0*SH**10*TH+70D0*SH**9*TH2
32247      &           +115D0*SH**8*TH**3+71D0*SH**7*TH**4-119D0*SH**6*TH**5
32248      &           -381D0*SH**5*TH**6-552D0*SH**4*TH**7-512D0*SH**3*TH**8
32249      &           -320D0*SH2*TH**9-126D0*SH*TH**10-24D0*TH**11)
32250      &           -SQMQQ**2*SHTH*(20D0*SH**9+84D0*SH**8*TH
32251      &           +212D0*SH**7*TH2+247D0*SH**6*TH**3+105D0*SH**5*TH**4
32252      &           -178D0*SH**4*TH**5-380D0*SH**3*TH**6-364D0*SH2*TH**7
32253      &           -210D0*SH*TH**8-60D0*TH**9)
32254      &           +SQMQQ**3*SHTH*(40D0*SH**8+159D0*SH**7*TH
32255      &           +374D0*SH**6*TH2+404D0*SH**5*TH**3+192D0*SH**4*TH**4
32256      &           -141D0*SH**3*TH**5-264D0*SH2*TH**6-216D0*SH*TH**7
32257      &           -80D0*TH**8)
32258      &           -SQMQQ**4*(40D0*SH**8+197D0*SH**7*TH+506D0*SH**6*TH2
32259      &           +672D0*SH**5*TH**3+460D0*SH**4*TH**4+79D0*SH**3*TH**5
32260      &           -138D0*SH2*TH**6-164D0*SH*TH**7-60D0*TH**8)
32261      &           +SQMQQ**5*(20D0*SH**7+107D0*SH**6*TH+267D0*SH**5*TH2
32262      &           +307D0*SH**4*TH**3+185D0*SH**3*TH**4+56D0*SH2*TH**5
32263      &           -30D0*SH*TH**6-24D0*TH**7)
32264      &           -SQMQQ**6*(4D0*SH**6+31D0*SH**5*TH+74D0*SH**4*TH2
32265      &           +71D0*SH**3*TH**3+46D0*SH2*TH**4+10D0*SH*TH**5
32266      &           -4D0*TH**6)
32267      &           +4D0*SQMQQ**7*SH*TH*SHTH*POLY
32268             IF(MSTP(147).EQ.0) THEN
32269                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32270      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32271             ELSEIF(MSTP(147).EQ.1) THEN
32272                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32273      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
32274             ELSEIF(MSTP(147).EQ.3) THEN
32275                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32276      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32277             ELSEIF(MSTP(147).EQ.4) THEN
32278                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32279      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32280             ELSEIF(MSTP(147).EQ.5) THEN
32281                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
32282      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
32283             ELSEIF(MSTP(147).EQ.6) THEN
32284                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32285      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32286             ENDIF
32287             FACQQG=COMFAC*FF*FACQQG
32288           ENDIF
32289 C...Split total contribution into different colour flows just like
32290 C...in g g -> g g (recalculate kinematics for massless partons).
32291           THP=-0.5D0*SH*(1D0-CTH)
32292           UHP=-0.5D0*SH*(1D0+CTH)
32293           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
32294           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
32295           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
32296           FACGGS=FACGG1+FACGG2+FACGG3
32297           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32298              NCHN=NCHN+1
32299              ISIG(NCHN,1)=21
32300              ISIG(NCHN,2)=21
32301              ISIG(NCHN,3)=1
32302              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG1/FACGGS
32303              NCHN=NCHN+1
32304              ISIG(NCHN,1)=21
32305              ISIG(NCHN,2)=21
32306              ISIG(NCHN,3)=2
32307              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG2/FACGGS
32308              NCHN=NCHN+1
32309              ISIG(NCHN,1)=21
32310              ISIG(NCHN,2)=21
32311              ISIG(NCHN,3)=3
32312              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG3/FACGGS
32313           ENDIF
32314  
32315         ELSEIF(ISUB.EQ.425) THEN
32316 C...q + g -> q + QQ~[3S18]
32317           IF(MSTP(145).EQ.0) THEN
32318             FACQQG=-COMFAC*PARU(1)*AS**3*(1D0/27D0)*
32319      &            (4D0*(SH2+UH2)-SH*UH)*(SHTH2+THUH2)/
32320      &            (SQMQQ*SQMQQR*SH*UH*UHSH2)
32321           ELSE
32322             FF=PARU(1)*AS**3*(4D0*(SH2+UH2)-SH*UH)/
32323      &            (54D0*SQMQQ*SQMQQR*SH*UH*UHSH2)
32324             AA=SHTH2+THUH2
32325             BB=4D0
32326             CC=8D0
32327             DD=4D0
32328             IF(MSTP(147).EQ.0) THEN
32329                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32330      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32331             ELSEIF(MSTP(147).EQ.1) THEN
32332                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32333      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
32334             ELSEIF(MSTP(147).EQ.3) THEN
32335                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32336      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32337             ELSEIF(MSTP(147).EQ.4) THEN
32338                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32339      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32340             ELSEIF(MSTP(147).EQ.5) THEN
32341                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
32342      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
32343             ELSEIF(MSTP(147).EQ.6) THEN
32344                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32345      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32346             ENDIF
32347             FACQQG=COMFAC*FF*FACQQG
32348           ENDIF
32349 C...Split total contribution into different colour flows just like
32350 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
32351 C...(recalculate kinematics for massless partons).
32352           THP=-0.5D0*SH*(1D0-CTH)
32353           UHP=-0.5D0*SH*(1D0+CTH)
32354           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
32355           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
32356           FACQGS=FACQG1+FACQG2
32357           DO 2442 I=MMINA,MMAXA
32358             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2442
32359             DO 2441 ISDE=1,2
32360               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2441
32361               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2441
32362               NCHN=NCHN+1
32363               ISIG(NCHN,ISDE)=I
32364               ISIG(NCHN,3-ISDE)=21
32365               ISIG(NCHN,3)=1
32366               SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACQG1/FACQGS
32367               NCHN=NCHN+1
32368               ISIG(NCHN,ISDE)=I
32369               ISIG(NCHN,3-ISDE)=21
32370               ISIG(NCHN,3)=2
32371               SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACQG2/FACQGS
32372  2441       CONTINUE
32373  2442     CONTINUE
32374  
32375         ELSEIF(ISUB.EQ.426) THEN
32376 C...q + g -> q + QQ~[1S08]
32377           IF(MSTP(145).EQ.0) THEN
32378             FACQQG=-COMFAC*PARU(1)*AS**3*(5D0/18D0)*
32379      &            (SH2+UH2)/(SQMQQR*TH*UHSH2)
32380           ELSE
32381             FA=-PARU(1)*AS**3*(5D0/54D0)*(SH2+UH2)/(SQMQQR*TH*UHSH2)
32382             IF(MSTP(147).EQ.0) THEN
32383                FACQQG=COMFAC*FA
32384             ELSEIF(MSTP(147).EQ.1) THEN
32385                FACQQG=COMFAC*2D0*FA
32386             ELSEIF(MSTP(147).EQ.3) THEN
32387                FACQQG=COMFAC*FA
32388             ELSEIF(MSTP(147).EQ.4) THEN
32389                FACQQG=COMFAC*FA
32390             ELSEIF(MSTP(147).EQ.5) THEN
32391                FACQQG=0D0
32392             ELSEIF(MSTP(147).EQ.6) THEN
32393                FACQQG=0D0
32394             ENDIF
32395           ENDIF
32396 C...Split total contribution into different colour flows just like
32397 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
32398 C...(recalculate kinematics for massless partons).
32399           THP=-0.5D0*SH*(1D0-CTH)
32400           UHP=-0.5D0*SH*(1D0+CTH)
32401           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
32402           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
32403           FACQGS=FACQG1+FACQG2
32404           DO 2444 I=MMINA,MMAXA
32405             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2444
32406             DO 2443 ISDE=1,2
32407               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2443
32408               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2443
32409               NCHN=NCHN+1
32410               ISIG(NCHN,ISDE)=I
32411               ISIG(NCHN,3-ISDE)=21
32412               ISIG(NCHN,3)=1
32413               SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACQG1/FACQGS
32414               NCHN=NCHN+1
32415               ISIG(NCHN,ISDE)=I
32416               ISIG(NCHN,3-ISDE)=21
32417               ISIG(NCHN,3)=2
32418               SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACQG2/FACQGS
32419  2443       CONTINUE
32420  2444     CONTINUE
32421  
32422         ELSEIF(ISUB.EQ.427) THEN
32423 C...q + g -> q + QQ~[3PJ8]
32424           IF(MSTP(145).EQ.0) THEN
32425             FACQQG=-COMFAC*PARU(1)*AS**3*(10D0/9D0)*
32426      &            ((7D0*UHSH+8D0*TH)*(SH2+UH2)
32427      &            +4D0*TH*(2D0*SQMQQ**2-SHTH2-THUH2))/
32428      &            (SQMQQ*SQMQQR*TH*UHSH2*UHSH)
32429           ELSE
32430             FF=10D0*PARU(1)*AS**3/
32431      &            (9D0*SQMQQ*SQMQQR*TH2*UHSH2*UHSH)
32432             AA=TH*UHSH*(2D0*SQMQQ**2+SHTH2+THUH2)
32433             BB=8D0*(SHTH2+TH*UH)
32434             CC=8D0*UHSH*(SHTH+THUH)
32435             DD=4D0*(2D0*SQMQQ*SH+TH*UHSH)
32436             IF(MSTP(147).EQ.0) THEN
32437                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32438      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32439             ELSEIF(MSTP(147).EQ.1) THEN
32440                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32441      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
32442             ELSEIF(MSTP(147).EQ.3) THEN
32443                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32444      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32445             ELSEIF(MSTP(147).EQ.4) THEN
32446                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32447      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32448             ELSEIF(MSTP(147).EQ.5) THEN
32449                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
32450      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
32451             ELSEIF(MSTP(147).EQ.6) THEN
32452                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32453      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32454             ENDIF
32455             FACQQG=COMFAC*FF*FACQQG
32456           ENDIF
32457 C...Split total contribution into different colour flows just like
32458 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
32459 C...(recalculate kinematics for massless partons).
32460           THP=-0.5D0*SH*(1D0-CTH)
32461           UHP=-0.5D0*SH*(1D0+CTH)
32462           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
32463           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
32464           FACQGS=FACQG1+FACQG2
32465           DO 2446 I=MMINA,MMAXA
32466             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2446
32467             DO 2445 ISDE=1,2
32468               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2445
32469               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2445
32470               NCHN=NCHN+1
32471               ISIG(NCHN,ISDE)=I
32472               ISIG(NCHN,3-ISDE)=21
32473               ISIG(NCHN,3)=1
32474               SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACQG1/FACQGS
32475               NCHN=NCHN+1
32476               ISIG(NCHN,ISDE)=I
32477               ISIG(NCHN,3-ISDE)=21
32478               ISIG(NCHN,3)=2
32479               SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACQG2/FACQGS
32480  2445       CONTINUE
32481  2446     CONTINUE
32482  
32483         ELSEIF(ISUB.EQ.428) THEN
32484 C...q + q~ -> g + QQ~[3S18]
32485           IF(MSTP(145).EQ.0) THEN
32486             FACQQG=COMFAC*PARU(1)*AS**3*(8D0/81D0)*
32487      &            (4D0*(TH2+UH2)-TH*UH)*(SHTH2+UHSH2)/
32488      &            (SQMQQ*SQMQQR*TH*UH*THUH2)
32489           ELSE
32490             FF=-4D0*PARU(1)*AS**3*(4D0*(TH2+UH2)-TH*UH)/
32491      &            (81D0*SQMQQ*SQMQQR*TH*UH*THUH2)
32492             AA=SHTH2+UHSH2
32493             BB=4D0
32494             CC=4D0
32495             DD=0D0
32496             IF(MSTP(147).EQ.0) THEN
32497                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32498      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32499             ELSEIF(MSTP(147).EQ.1) THEN
32500                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32501      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
32502             ELSEIF(MSTP(147).EQ.3) THEN
32503                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32504      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32505             ELSEIF(MSTP(147).EQ.4) THEN
32506                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32507      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32508             ELSEIF(MSTP(147).EQ.5) THEN
32509                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
32510      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
32511             ELSEIF(MSTP(147).EQ.6) THEN
32512                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32513      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32514             ENDIF
32515             FACQQG=COMFAC*FF*FACQQG
32516           ENDIF
32517 C...Split total contribution into different colour flows just like
32518 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
32519 C...(recalculate kinematics for massless partons).
32520           THP=-0.5D0*SH*(1D0-CTH)
32521           UHP=-0.5D0*SH*(1D0+CTH)
32522           FACGG1=UH/TH-9D0/4D0*UH2/SH2
32523           FACGG2=TH/UH-9D0/4D0*TH2/SH2
32524           FACGGS=FACGG1+FACGG2
32525           DO 2447 I=MMINA,MMAXA
32526             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
32527      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2447
32528             NCHN=NCHN+1
32529             ISIG(NCHN,1)=I
32530             ISIG(NCHN,2)=-I
32531             ISIG(NCHN,3)=1
32532             SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG1/FACGGS
32533             NCHN=NCHN+1
32534             ISIG(NCHN,1)=I
32535             ISIG(NCHN,2)=-I
32536             ISIG(NCHN,3)=2
32537             SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG2/FACGGS
32538  2447     CONTINUE
32539  
32540         ELSEIF(ISUB.EQ.429) THEN
32541 C...q + q~ -> g + QQ~[1S08]
32542           IF(MSTP(145).EQ.0) THEN
32543             FACQQG=COMFAC*PARU(1)*AS**3*(20D0/27D0)*
32544      &            (TH2+UH2)/(SQMQQR*SH*THUH2)
32545           ELSE
32546             FA=PARU(1)*AS**3*(20D0/81D0)*(TH2+UH2)/(SQMQQR*SH*THUH2)
32547             IF(MSTP(147).EQ.0) THEN
32548                FACQQG=COMFAC*FA
32549             ELSEIF(MSTP(147).EQ.1) THEN
32550                FACQQG=COMFAC*2D0*FA
32551             ELSEIF(MSTP(147).EQ.3) THEN
32552                FACQQG=COMFAC*FA
32553             ELSEIF(MSTP(147).EQ.4) THEN
32554                FACQQG=COMFAC*FA
32555             ELSEIF(MSTP(147).EQ.5) THEN
32556                FACQQG=0D0
32557             ELSEIF(MSTP(147).EQ.6) THEN
32558                FACQQG=0D0
32559             ENDIF
32560           ENDIF
32561 C...Split total contribution into different colour flows just like
32562 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
32563 C...(recalculate kinematics for massless partons).
32564           THP=-0.5D0*SH*(1D0-CTH)
32565           UHP=-0.5D0*SH*(1D0+CTH)
32566           FACGG1=UH/TH-9D0/4D0*UH2/SH2
32567           FACGG2=TH/UH-9D0/4D0*TH2/SH2
32568           FACGGS=FACGG1+FACGG2
32569           DO 2448 I=MMINA,MMAXA
32570             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
32571      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2448
32572             NCHN=NCHN+1
32573             ISIG(NCHN,1)=I
32574             ISIG(NCHN,2)=-I
32575             ISIG(NCHN,3)=1
32576             SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG1/FACGGS
32577             NCHN=NCHN+1
32578             ISIG(NCHN,1)=I
32579             ISIG(NCHN,2)=-I
32580             ISIG(NCHN,3)=2
32581             SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG2/FACGGS
32582  2448     CONTINUE
32583  
32584         ELSEIF(ISUB.EQ.430) THEN
32585 C...q + q~ -> g + QQ~[3PJ8]
32586           IF(MSTP(145).EQ.0) THEN
32587             FACQQG=COMFAC*PARU(1)*AS**3*(80D0/27D0)*
32588      &            ((7D0*THUH+8D0*SH)*(TH2+UH2)
32589      &            +4D0*SH*(2D0*SQMQQ**2-SHTH2-UHSH2))/
32590      &            (SQMQQ*SQMQQR*SH*THUH2*THUH)
32591           ELSE
32592             FF=-80D0*PARU(1)*AS**3/(27D0*SQMQQ*SQMQQR*SH2*THUH2*THUH)
32593             AA=SH*THUH*(2D0*SQMQQ**2+SHTH2+UHSH2)
32594             BB=8D0*(UHSH2+SH*TH)
32595             CC=8D0*(SHTH2+SH*UH)
32596             DD=4D0*(SHTH2+UHSH2+SH*SQMQQ-SQMQQ**2)
32597             IF(MSTP(147).EQ.0) THEN
32598                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32599      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32600             ELSEIF(MSTP(147).EQ.1) THEN
32601                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32602      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
32603             ELSEIF(MSTP(147).EQ.3) THEN
32604                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
32605      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
32606             ELSEIF(MSTP(147).EQ.4) THEN
32607                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32608      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32609             ELSEIF(MSTP(147).EQ.5) THEN
32610                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
32611      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
32612             ELSEIF(MSTP(147).EQ.6) THEN
32613                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
32614      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
32615             ENDIF
32616             FACQQG=COMFAC*FF*FACQQG
32617           ENDIF
32618 C...Split total contribution into different colour flows just like
32619 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
32620 C...(recalculate kinematics for massless partons).
32621           THP=-0.5D0*SH*(1D0-CTH)
32622           UHP=-0.5D0*SH*(1D0+CTH)
32623           FACGG1=UH/TH-9D0/4D0*UH2/SH2
32624           FACGG2=TH/UH-9D0/4D0*TH2/SH2
32625           FACGGS=FACGG1+FACGG2
32626           DO 2449 I=MMINA,MMAXA
32627             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
32628      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2449
32629             NCHN=NCHN+1
32630             ISIG(NCHN,1)=I
32631             ISIG(NCHN,2)=-I
32632             ISIG(NCHN,3)=1
32633             SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG1/FACGGS
32634             NCHN=NCHN+1
32635             ISIG(NCHN,1)=I
32636             ISIG(NCHN,2)=-I
32637             ISIG(NCHN,3)=2
32638             SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG2/FACGGS
32639  2449     CONTINUE
32640  
32641         ELSEIF(ISUB.EQ.431) THEN
32642 C...g + g -> QQ~[3P01] + g
32643           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
32644           QGTW=(SH*TH*UH)/SH**3
32645           RGTW=SQMQQ/SH
32646           IF(MSTP(145).EQ.0) THEN
32647             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(9D0*SQMQQR*SH)*
32648      &            (9D0*RGTW**2*PGTW**4*
32649      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
32650      &            -6D0*RGTW*PGTW**3*QGTW*
32651      &            (2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)
32652      &            -PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)
32653      &            +2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)
32654      &            +6D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
32655           ELSE
32656             FC1=PARU(1)*AS**3*8D0/(27D0*SQMQQR*SH)*
32657      &            (9D0*RGTW**2*PGTW**4*
32658      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
32659      &            -6D0*RGTW*PGTW**3*QGTW*
32660      &            (2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)
32661      &            -PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)
32662      &            +2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)
32663      &            +6D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
32664             IF(MSTP(147).EQ.0) THEN
32665                FACQQG=COMFAC*FC1
32666             ELSEIF(MSTP(147).EQ.1) THEN
32667                FACQQG=COMFAC*2D0*FC1
32668             ELSEIF(MSTP(147).EQ.3) THEN
32669                FACQQG=COMFAC*FC1
32670             ELSEIF(MSTP(147).EQ.4) THEN
32671                FACQQG=COMFAC*FC1
32672             ELSEIF(MSTP(147).EQ.5) THEN
32673                FACQQG=0D0
32674             ELSEIF(MSTP(147).EQ.6) THEN
32675                FACQQG=0D0
32676             ENDIF
32677           ENDIF
32678           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32679             NCHN=NCHN+1
32680             ISIG(NCHN,1)=21
32681             ISIG(NCHN,2)=21
32682             ISIG(NCHN,3)=1
32683             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32684           ENDIF
32685  
32686         ELSEIF(ISUB.EQ.432) THEN
32687 C...g + g -> QQ~[3P11] + g
32688           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
32689           QGTW=(SH*TH*UH)/SH**3
32690           RGTW=SQMQQ/SH
32691           IF(MSTP(145).EQ.0) THEN
32692             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(3D0*SQMQQR*SH)*
32693      &            PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)
32694      &            +2D0*QGTW*(-RGTW**4+5D0*RGTW**2*PGTW+PGTW**2)
32695      &            -15D0*RGTW*QGTW**2)/(QGTW-RGTW*PGTW)**4
32696           ELSE
32697             FF=4D0/3D0*PARU(1)*AS**3*SQMQQR/SHTH2**2/THUH2**2/UHSH2**2
32698             C1=(4D0*PGTW**5+23D0*PGTW**2*QGTW**2
32699      &            +(-14D0*PGTW**3*QGTW+3D0*QGTW**3)*RGTW
32700      &            -(PGTW**4+2D0*PGTW*QGTW**2)*RGTW**2
32701      &            +3D0*PGTW**2*QGTW*RGTW**3)*SH2**5
32702             C2=2D0*SHTH2*(SH2*THUH*(SH*THUH*(SH-TH)*(SH-UH)
32703      &            -TH*UH*(TH-UH)**2)+SH2**2*(TH-UH)*(TH2+UH2-SH*THUH)
32704      &            *(PGTW**2-QGTW*(SH+2D0*UH)/SH))
32705             C3=2D0*UHSH2*(SH2*THUH*(SH*THUH*(SH-TH)*(SH-UH)
32706      &            -TH*UH*(TH-UH)**2)-SH2**2*(TH-UH)*(TH2+UH2-SH*THUH)
32707      &            *(PGTW**2-QGTW*(SH+2D0*TH)/SH))
32708             C4=-4D0*THUH*(TH-UH)**2*
32709      &            (TH**3*UH**3+SH2**2*(2D0*TH+UH)*(TH+2D0*UH)
32710      &            -SH2*TH*UH*(TH2+UH2))
32711      &            +4D0*THUH2*(SH**3*(SH2**2+TH2**2+UH2**2)
32712      &            -SH*TH*UH*(SH2**2+TH*UH*(TH2-3D0*TH*UH+UH2)
32713      &            +SH2*(5D0*THUH2-17D0*TH*UH)))
32714             IF(MSTP(147).EQ.0) THEN
32715                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32716      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32717             ELSEIF(MSTP(147).EQ.1) THEN
32718                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32719      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
32720             ELSEIF(MSTP(147).EQ.3) THEN
32721                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32722      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32723             ELSEIF(MSTP(147).EQ.4) THEN
32724                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32725      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32726             ELSEIF(MSTP(147).EQ.5) THEN
32727                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
32728      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
32729             ELSEIF(MSTP(147).EQ.6) THEN
32730                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32731      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32732             ENDIF
32733             FACQQG=COMFAC*FF*FACQQG
32734           ENDIF
32735           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32736             NCHN=NCHN+1
32737             ISIG(NCHN,1)=21
32738             ISIG(NCHN,2)=21
32739             ISIG(NCHN,3)=1
32740             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32741           ENDIF
32742  
32743         ELSEIF(ISUB.EQ.433) THEN
32744 C...g + g -> QQ~[3P21] + g
32745           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
32746           QGTW=(SH*TH*UH)/SH**3
32747           RGTW=SQMQQ/SH
32748           IF(MSTP(145).EQ.0) THEN
32749             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(9D0*SQMQQR*SH)*
32750      &            (12D0*RGTW**2*PGTW**4*
32751      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
32752      &            -3D0*RGTW*PGTW**3*QGTW*
32753      &            (8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)
32754      &            +2D0*PGTW**2*QGTW**2*
32755      &            (-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)
32756      &            +RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)
32757      &            +12D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
32758           ELSE
32759             FF=(16D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/
32760      &            (3D0*SH2*TH2*UH2*SHTH2**2*THUH2**2*UHSH2**2)
32761             C1=PGTW**2*QGTW*(PGTW*RGTW-QGTW)**2*(RGTW**2-2D0*PGTW)
32762      &            *SH*SH2**7
32763             C2=2D0*SHTH2*(-SH2**3*TH2**3-SH**5*TH**5*UH*SHTH
32764      &            +SH2**2*TH2**2*UH2*(8D0*SHTH2-5D0*SH*TH)
32765      &            +SH**3*TH**3*UH**3*SHTH*(17D0*SHTH2-2D0*SH*TH)
32766      &            +SH2*TH2*UH2**2*(105D0*SH2*TH2+64D0*SH*TH*(SH2+TH2)
32767      &            +10D0*(SH2**2+TH2**2))
32768      &            +SH2*TH2*UH**5*SHTH*(32D0*SHTH2+7D0*SH*TH)
32769      &            -UH2**3*(SH2**3-87D0*SH**3*TH**3+TH2**3
32770      &            -45D0*SH2*TH2*(SH2+TH2)-5D0*SH*TH*(SH2**2+TH2**2))
32771      &            +SH*TH*UH**7*SHTH*(7D0*SHTH2+12D0*SH*TH)
32772      &            +4D0*SH*TH*UH2**4*SHTH2)
32773             C3=2D0*UHSH2*(-SH2**3*UH2**3-SH**5*UH**5*TH*UHSH
32774      &            +SH2**2*UH2**2*TH2*(8D0*UHSH2-5D0*SH*UH)
32775      &            +SH**3*UH**3*TH**3*UHSH*(17D0*UHSH2-2D0*SH*UH)
32776      &            +SH2*UH2*TH2**2*(105D0*SH2*UH2+64D0*SH*UH*(SH2+UH2)
32777      &            +10D0*(SH2**2+UH2**2))
32778      &            +SH2*UH2*TH**5*UHSH*(32D0*UHSH2+7D0*SH*UH)
32779      &            -TH2**3*(SH2**3-87D0*SH**3*UH**3+UH2**3
32780      &            -45D0*SH2*UH2*(SH2+UH2)-5D0*SH*UH*(SH2**2+UH2**2))
32781      &            +SH*UH*TH**7*UHSH*(7D0*UHSH2+12D0*SH*UH)
32782      &            +4D0*SH*UH*TH2**4*UHSH2)
32783             C4=-2D0*SHTH*UHSH*(-2D0*TH2**3*UH2**3
32784      &            -SH**5*TH2*UH2*THUH*(5D0*TH+3D0*UH)*(3D0*TH+5D0*UH)
32785      &            +SH2**3*(2D0*TH+UH)*(TH+2D0*UH)*(TH2-UH2)**2
32786      &            -SH*TH2**2*UH2**2*THUH*(5D0*THUH2-4D0*TH*UH)
32787      &            -SH2*TH**3*UH**3*THUH2*(13D0*THUH2-16D0*TH*UH)
32788      &            -SH**3*TH2*UH2*(92D0*TH2*UH2*THUH
32789      &            +53D0*TH*UH*(TH**3+UH**3)+11D0*(TH**5+UH**5))
32790      &            -SH2**2*TH*UH*(114D0*TH**3*UH**3
32791      &            +83D0*TH2*UH2*(TH2+UH2)+28D0*TH*UH*(TH2**2+UH2**2)
32792      &            +3D0*(TH2**3+UH2**3)))
32793             C5=4D0*SH*TH*UH2*SHTH2*(2D0*SH*TH+SH*UH+TH*UH)**2
32794      &            *(2D0*UH*SQMQQ**2+SHTH*(SH*TH-UH2))
32795             C6=4D0*SH*UH*TH2*UHSH2*(2D0*SH*UH+SH*TH+TH*UH)**2
32796      &            *(2D0*TH*SQMQQ**2+UHSH*(SH*UH-TH2))
32797             C7=4D0*SH*TH*UH2*SHTH*(SH2**2*TH**3*(11D0*SH+16D0*TH)
32798      &            +SH**3*TH2*UH*(31D0*SH2+83D0*SH*TH+61D0*TH2)
32799      &            +SH2*TH*UH2*(19D0*SH**3+110D0*SH2*TH+156D0*SH*TH2+
32800      &            82D0*TH**3)
32801      &            +SH*TH*UH**3*(43D0*SH**3+132D0*SH2*TH+124D0*SH*TH2
32802      &            +45D0*TH**3)
32803      &            +TH*UH2**2*(37D0*SH**3+68D0*SH2*TH+43D0*SH*TH2+
32804      &            8D0*TH**3)
32805      &            +TH*UH**5*(11D0*SH2+13D0*SH*TH+5D0*TH2)
32806      &            +SH**3*UH**3*(3D0*UHSH2-2D0*SH*UH)
32807      &            +TH**5*UHSH*(5D0*UHSH2+2D0*SH*UH))
32808             C8=4D0*SH*UH*TH2*UHSH*(SH2**2*UH**3*(11D0*SH+16D0*UH)
32809      &            +SH**3*UH2*TH*(31D0*SH2+83D0*SH*UH+61D0*UH2)
32810      &            +SH2*UH*TH2*(19D0*SH**3+110D0*SH2*UH+156D0*SH*UH2+
32811      &            82D0*UH**3)
32812      &            +SH*UH*TH**3*(43D0*SH**3+132D0*SH2*UH+124D0*SH*UH2
32813      &            +45D0*UH**3)
32814      &            +UH*TH2**2*(37D0*SH**3+68D0*SH2*UH+43D0*SH*UH2+
32815      &            8D0*UH**3)
32816      &            +UH*TH**5*(11D0*SH2+13D0*SH*UH+5D0*UH2)
32817      &            +SH**3*TH**3*(3D0*SHTH2-2D0*SH*TH)
32818      &            +UH**5*SHTH*(5D0*SHTH2+2D0*SH*TH))
32819             C9=4D0*SHTH*UHSH*(2D0*TH**5*UH**5*THUH
32820      &            +4D0*SH*TH2**2*UH2**2*THUH2
32821      &            -SH2*TH**3*UH**3*THUH*(TH2+UH2)
32822      &            -2D0*SH**3*TH2*UH2*(THUH2**2+2D0*TH*UH*THUH2-TH2*UH2)
32823      &            +SH2**2*TH*UH*THUH*(-TH*UH*THUH2+3D0*(TH2**2+UH2**2))
32824      &            +SH**5*(4D0*TH2*UH2*(THUH2-TH*UH)
32825      &            +5D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3)))
32826             C0=-4D0*(2D0*TH2**3*UH2**3*SQMQQ
32827      &            -SH2*TH2**2*UH2**2*THUH*(19D0*THUH2-4D0*TH*UH)
32828      &            -SH**3*TH**3*UH**3*THUH2*(32D0*THUH2+29D0*TH*UH)
32829      &            -SH2**2*TH2*UH2*THUH*(264D0*TH2*UH2
32830      &            +136D0*TH*UH*(TH2+UH2)+15D0*(TH2**2+UH2**2))
32831      &            +SH**5*TH*UH*(-428D0*TH**3*UH**3
32832      &            -256D0*TH2*UH2*(TH2+UH2)-43D0*TH*UH*(TH2**2+UH2**2)
32833      &            +2D0*(TH2**3+UH2**3))
32834      &            +SH**7*(-46D0*TH**3*UH**3-21D0*TH2*UH2*(TH2+UH2)
32835      &            +2D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3))
32836      &            +SH2**3*THUH*(-134*TH**3*UH**3-53D0*TH2*UH2*(TH2+UH2)
32837      &            +4D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3)))
32838             IF(MSTP(147).EQ.0) THEN
32839                FACQQG=1D0/3D0*(C1*3D0
32840      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
32841      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
32842      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
32843      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
32844      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
32845      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32846      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32847      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
32848      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32849      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32850      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
32851      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
32852             ELSEIF(MSTP(147).EQ.1) THEN
32853                FACQQG=C1*2D0
32854      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
32855      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
32856      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
32857      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
32858      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
32859      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
32860      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
32861      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
32862      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
32863      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
32864      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
32865      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
32866      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
32867             ELSEIF(MSTP(147).EQ.2) THEN
32868                FACQQG=2D0*(C1
32869      &              -C2*EL1K11*EL2K11
32870      &              -C3*EL1K21*EL2K21
32871      &              -C4*EL1K11*EL2K21
32872      &              +C5*(EL1K11*EL2K11)**2
32873      &              +C6*(EL1K21*EL2K21)**2
32874      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
32875      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
32876      &              +(C9+C0)*(EL1K11*EL2K21)**2)
32877             ENDIF
32878             FACQQG=COMFAC*FF*FACQQG
32879           ENDIF
32880           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32881             NCHN=NCHN+1
32882             ISIG(NCHN,1)=21
32883             ISIG(NCHN,2)=21
32884             ISIG(NCHN,3)=1
32885             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32886           ENDIF
32887  
32888         ELSEIF(ISUB.EQ.434) THEN
32889 C...q + g -> q + QQ~[3P01]
32890           IF(MSTP(145).EQ.0) THEN
32891             FACQQG=-COMFAC*PARU(1)*AS**3*(16D0/81D0)*
32892      &            (TH-3D0*SQMQQ)**2*(SH2+UH2)/(SQMQQR*TH*UHSH2**2)
32893           ELSE
32894             FA=-PARU(1)*AS**3*(16D0/243D0)*
32895      &            (TH-3D0*SQMQQ)**2*(SH2+UH2)/(SQMQQR*TH*UHSH2**2)
32896             IF(MSTP(147).EQ.0) THEN
32897                FACQQG=COMFAC*FA
32898             ELSEIF(MSTP(147).EQ.1) THEN
32899                FACQQG=COMFAC*2D0*FA
32900             ELSEIF(MSTP(147).EQ.3) THEN
32901                FACQQG=COMFAC*FA
32902             ELSEIF(MSTP(147).EQ.4) THEN
32903                FACQQG=COMFAC*FA
32904             ELSEIF(MSTP(147).EQ.5) THEN
32905                FACQQG=0D0
32906             ELSEIF(MSTP(147).EQ.6) THEN
32907                FACQQG=0D0
32908             ENDIF
32909           ENDIF
32910           DO 2452 I=MMINA,MMAXA
32911             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2452
32912             DO 2451 ISDE=1,2
32913               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2451
32914               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2451
32915               NCHN=NCHN+1
32916               ISIG(NCHN,ISDE)=I
32917               ISIG(NCHN,3-ISDE)=21
32918               ISIG(NCHN,3)=1
32919               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32920  2451       CONTINUE
32921  2452     CONTINUE
32922  
32923         ELSEIF(ISUB.EQ.435) THEN
32924 C...q + g -> q + QQ~[3P11]
32925           IF(MSTP(145).EQ.0) THEN
32926             FACQQG=-COMFAC*PARU(1)*AS**3*(32D0/27D0)*
32927      &            (4D0*SQMQQ*SH*UH+TH*(SH2+UH2))/(SQMQQR*UHSH2**2)
32928           ELSE
32929             FF=(64D0*PARU(1)*AS**3*SQMQQR)/(27D0*UHSH2**2)
32930             C1=SH*UH
32931             C2=2D0*SH
32932             C3=0D0
32933             C4=2D0*(SH-UH)
32934             IF(MSTP(147).EQ.0) THEN
32935                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32936      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32937             ELSEIF(MSTP(147).EQ.1) THEN
32938                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32939      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
32940             ELSEIF(MSTP(147).EQ.3) THEN
32941                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32942      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32943             ELSEIF(MSTP(147).EQ.4) THEN
32944                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32945      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32946             ELSEIF(MSTP(147).EQ.5) THEN
32947                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
32948      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
32949             ELSEIF(MSTP(147).EQ.6) THEN
32950                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32951      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32952             ENDIF
32953             FACQQG=COMFAC*FF*FACQQG
32954           ENDIF
32955           DO 2454 I=MMINA,MMAXA
32956             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2454
32957             DO 2453 ISDE=1,2
32958               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2453
32959               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2453
32960               NCHN=NCHN+1
32961               ISIG(NCHN,ISDE)=I
32962               ISIG(NCHN,3-ISDE)=21
32963               ISIG(NCHN,3)=1
32964               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32965  2453       CONTINUE
32966  2454     CONTINUE
32967  
32968         ELSEIF(ISUB.EQ.436) THEN
32969 C...q + g -> q + QQ~[3P21]
32970           IF(MSTP(145).EQ.0) THEN
32971             FACQQG=-COMFAC*PARU(1)*AS**3*(32D0/81D0)*
32972      &            ((6D0*SQMQQ**2+TH2)*UHSH2
32973      &            -2D0*SH*UH*(TH2+6D0*SQMQQ*UHSH))/
32974      &            (SQMQQR*TH*UHSH2**2)
32975           ELSE
32976             FF=-(32D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/(27D0*TH2*UHSH2**2)
32977             C1=TH*UHSH2
32978             C2=4D0*(SH2+TH2+2D0*TH*UHSH)
32979             C3=4D0*UHSH2
32980             C4=8D0*SH*UHSH
32981             C5=8D0*TH
32982             C6=0D0
32983             C7=16D0*TH
32984             C8=0D0
32985             C9=-16D0*UHSH
32986             C0=16D0*SQMQQ
32987             IF(MSTP(147).EQ.0) THEN
32988                FACQQG=1D0/3D0*(C1*3D0
32989      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
32990      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
32991      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
32992      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
32993      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
32994      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32995      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32996      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
32997      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32998      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32999      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
33000      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
33001             ELSEIF(MSTP(147).EQ.1) THEN
33002                FACQQG=C1*2D0
33003      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
33004      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
33005      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
33006      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
33007      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
33008      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
33009      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
33010      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
33011      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
33012      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
33013      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
33014      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
33015      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
33016             ELSEIF(MSTP(147).EQ.2) THEN
33017                FACQQG=2D0*(C1
33018      &              -C2*EL1K11*EL2K11
33019      &              -C3*EL1K21*EL2K21
33020      &              -C4*EL1K11*EL2K21
33021      &              +C5*(EL1K11*EL2K11)**2
33022      &              +C6*(EL1K21*EL2K21)**2
33023      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
33024      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
33025      &              +(C9+C0)*(EL1K11*EL2K21)**2)
33026             ENDIF
33027             FACQQG=COMFAC*FF*FACQQG
33028           ENDIF
33029           DO 2456 I=MMINA,MMAXA
33030             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2456
33031             DO 2455 ISDE=1,2
33032               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2455
33033               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2455
33034               NCHN=NCHN+1
33035               ISIG(NCHN,ISDE)=I
33036               ISIG(NCHN,3-ISDE)=21
33037               ISIG(NCHN,3)=1
33038               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
33039  2455       CONTINUE
33040  2456     CONTINUE
33041  
33042         ELSEIF(ISUB.EQ.437) THEN
33043 C...q + q~ -> g + QQ~[3P01]
33044           IF(MSTP(145).EQ.0) THEN
33045             FACQQG=COMFAC*PARU(1)*AS**3*(128D0/243D0)*
33046      &            (SH-3D0*SQMQQ)**2*(TH2+UH2)/(SQMQQR*SH*THUH2**2)
33047           ELSE
33048             FA=PARU(1)*AS**3*(128D0/729D0)*
33049      &            (SH-3D0*SQMQQ)**2*(TH2+UH2)/(SQMQQR*SH*THUH2**2)
33050             IF(MSTP(147).EQ.0) THEN
33051                FACQQG=COMFAC*FA
33052             ELSEIF(MSTP(147).EQ.1) THEN
33053                FACQQG=COMFAC*2D0*FA
33054             ELSEIF(MSTP(147).EQ.3) THEN
33055                FACQQG=COMFAC*FA
33056             ELSEIF(MSTP(147).EQ.4) THEN
33057                FACQQG=COMFAC*FA
33058             ELSEIF(MSTP(147).EQ.5) THEN
33059                FACQQG=0D0
33060             ELSEIF(MSTP(147).EQ.6) THEN
33061                FACQQG=0D0
33062             ENDIF
33063           ENDIF
33064           DO 2457 I=MMINA,MMAXA
33065             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33066      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2457
33067             NCHN=NCHN+1
33068             ISIG(NCHN,1)=I
33069             ISIG(NCHN,2)=-I
33070             ISIG(NCHN,3)=1
33071             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
33072  2457     CONTINUE
33073  
33074         ELSEIF(ISUB.EQ.438) THEN
33075 C...q + q~ -> g + QQ~[3P11]
33076           IF(MSTP(145).EQ.0) THEN
33077             FACQQG=COMFAC*PARU(1)*AS**3*256D0/81D0*
33078      &            (4D0*SQMQQ*TH*UH+SH*(TH2+UH2))/(SQMQQR*THUH2**2)
33079           ELSE
33080             FF=-(512D0*PARU(1)*AS**3*SQMQQR)/(81D0*THUH2**2)
33081             C1=TH*UH
33082             C2=2D0*UH
33083             C3=2D0*TH
33084             C4=2D0*THUH
33085             IF(MSTP(147).EQ.0) THEN
33086                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
33087      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
33088             ELSEIF(MSTP(147).EQ.1) THEN
33089                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
33090      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
33091             ELSEIF(MSTP(147).EQ.3) THEN
33092                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
33093      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
33094             ELSEIF(MSTP(147).EQ.4) THEN
33095                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
33096      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
33097             ELSEIF(MSTP(147).EQ.5) THEN
33098                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
33099      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
33100             ELSEIF(MSTP(147).EQ.6) THEN
33101                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
33102      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
33103             ENDIF
33104             FACQQG=COMFAC*FF*FACQQG
33105           ENDIF
33106           DO 2458 I=MMINA,MMAXA
33107             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33108      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2458
33109             NCHN=NCHN+1
33110             ISIG(NCHN,1)=I
33111             ISIG(NCHN,2)=-I
33112             ISIG(NCHN,3)=1
33113             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
33114  2458     CONTINUE
33115  
33116         ELSEIF(ISUB.EQ.439) THEN
33117 C...q + q~ -> g + QQ~[3P21]
33118           IF(MSTP(145).EQ.0) THEN
33119             FACQQG=COMFAC*PARU(1)*AS**3*(256D0/243D0)*
33120      &            ((6D0*SQMQQ**2+SH2)*THUH2
33121      &            -2D0*TH*UH*(SH2+6D0*SQMQQ*THUH))/
33122      &            (SQMQQR*SH*THUH2**2)
33123           ELSE
33124             FF=(256D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/(81D0*SH2*THUH2**2)
33125             C1=SH*THUH2
33126             C2=4D0*(SH2+UH2+2D0*SH*THUH)
33127             C3=4D0*(SH2+TH2+2D0*SH*THUH)
33128             C4=8D0*(SH2-TH*UH+2D0*SH*THUH)
33129             C5=8D0*SH
33130             C6=C5
33131             C7=16D0*SH
33132             C8=C7
33133             C9=-16D0*THUH
33134             C0=16D0*SQMQQ
33135             IF(MSTP(147).EQ.0) THEN
33136                FACQQG=1D0/3D0*(C1*3D0
33137      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
33138      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
33139      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
33140      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
33141      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
33142      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
33143      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
33144      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
33145      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
33146      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
33147      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
33148      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
33149             ELSEIF(MSTP(147).EQ.1) THEN
33150                FACQQG=C1*2D0
33151      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
33152      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
33153      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
33154      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
33155      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
33156      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
33157      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
33158      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
33159      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
33160      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
33161      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
33162      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
33163      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
33164             ELSEIF(MSTP(147).EQ.2) THEN
33165                FACQQG=2D0*(C1
33166      &              -C2*EL1K11*EL2K11
33167      &              -C3*EL1K21*EL2K21
33168      &              -C4*EL1K11*EL2K21
33169      &              +C5*(EL1K11*EL2K11)**2
33170      &              +C6*(EL1K21*EL2K21)**2
33171      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
33172      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
33173      &              +(C9+C0)*(EL1K11*EL2K21)**2)
33174             ENDIF
33175             FACQQG=COMFAC*FF*FACQQG
33176           ENDIF
33177           DO 2459 I=MMINA,MMAXA
33178             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33179      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2459
33180             NCHN=NCHN+1
33181             ISIG(NCHN,1)=I
33182             ISIG(NCHN,2)=-I
33183             ISIG(NCHN,3)=1
33184             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
33185  2459     CONTINUE
33186         ENDIF
33187 C...QUARKONIA---
33188  
33189       ENDIF
33190  
33191       RETURN
33192       END
33193  
33194 C*********************************************************************
33195  
33196 C...PYSGWZ
33197 C...Subprocess cross sections for W/Z processes,
33198 C...except that longitudinal WW scattering is in Higgs sector.
33199 C...Auxiliary to PYSIGH.
33200  
33201       SUBROUTINE PYSGWZ(NCHN,SIGS)
33202  
33203 C...Double precision and integer declarations
33204       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33205       IMPLICIT INTEGER(I-N)
33206       INTEGER PYK,PYCHGE,PYCOMP
33207 C...Parameter statement to help give large particle numbers.
33208       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33209      &KEXCIT=4000000,KDIMEN=5000000)
33210 C...Commonblocks
33211       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33212       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33213       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
33214       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
33215       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
33216       COMMON/PYINT1/MINT(400),VINT(400)
33217       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
33218       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
33219       COMMON/PYINT4/MWID(500),WIDS(500,5)
33220       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
33221       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
33222      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
33223      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
33224      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
33225       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
33226      &/PYINT2/,/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
33227 C...Local arrays and complex numbers
33228       DIMENSION WDTP(0:400),WDTE(0:400,0:5),HGZ(6,3),HL3(3),HR3(3),
33229      &HL4(3),HR4(3)
33230       COMPLEX*16 COULCK,COULCP,COULCD,COULCR,COULCS
33231  
33232 C...Differential cross section expressions.
33233  
33234       IF(ISUB.LE.20) THEN
33235         IF(ISUB.EQ.1) THEN
33236 C...f + fbar -> gamma*/Z0
33237           MINT(61)=2
33238           CALL PYWIDT(23,SH,WDTP,WDTE)
33239           HS=SHR*WDTP(0)
33240           FACZ=4D0*COMFAC*3D0
33241           HP0=AEM/3D0*SH
33242           HP1=AEM/3D0*XWC*SH
33243           DO 100 I=MMINA,MMAXA
33244             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
33245             EI=KCHG(IABS(I),1)/3D0
33246             AI=SIGN(1D0,EI)
33247             VI=AI-4D0*EI*XWV
33248             HI0=HP0
33249             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
33250             HI1=HP1
33251             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
33252             NCHN=NCHN+1
33253             ISIG(NCHN,1)=I
33254             ISIG(NCHN,2)=-I
33255             ISIG(NCHN,3)=1
33256             SIGH(NCHN)=FACZ*(EI**2/SH2*HI0*HP0*VINT(111)+
33257      &      EI*VI*(1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*
33258      &      (HI0*HP1+HI1*HP0)*VINT(112)+(VI**2+AI**2)/
33259      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114))
33260   100     CONTINUE
33261  
33262         ELSEIF(ISUB.EQ.2) THEN
33263 C...f + fbar' -> W+/-
33264           CALL PYWIDT(24,SH,WDTP,WDTE)
33265           HS=SHR*WDTP(0)
33266           FACBW=4D0*COMFAC/((SH-SQMW)**2+HS**2)*3D0
33267           HP=AEM/(24D0*XW)*SH
33268           DO 120 I=MMIN1,MMAX1
33269             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
33270             IA=IABS(I)
33271             DO 110 J=MMIN2,MMAX2
33272               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
33273               JA=IABS(J)
33274               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
33275               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
33276      &        GOTO 110
33277               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
33278               HI=HP*2D0
33279               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
33280               NCHN=NCHN+1
33281               ISIG(NCHN,1)=I
33282               ISIG(NCHN,2)=J
33283               ISIG(NCHN,3)=1
33284               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
33285               SIGH(NCHN)=HI*FACBW*HF
33286   110       CONTINUE
33287   120     CONTINUE
33288  
33289         ELSEIF(ISUB.EQ.15) THEN
33290 C...f + fbar -> g + (gamma*/Z0) (q + qbar -> g + (gamma*/Z0) only)
33291           FACZG=COMFAC*AS*AEM*(8D0/9D0)*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
33292 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
33293           HFGG=0D0
33294           HFGZ=0D0
33295           HFZZ=0D0
33296           RADC4=1D0+PYALPS(SQM4)/PARU(1)
33297           DO 130 I=1,MIN(16,MDCY(23,3))
33298             IDC=I+MDCY(23,2)-1
33299             IF(MDME(IDC,1).LT.0) GOTO 130
33300             IMDM=0
33301             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
33302      &      IMDM=1
33303             IF(I.LE.8) THEN
33304               EF=KCHG(I,1)/3D0
33305               AF=SIGN(1D0,EF+0.1D0)
33306               VF=AF-4D0*EF*XWV
33307             ELSEIF(I.LE.16) THEN
33308               EF=KCHG(I+2,1)/3D0
33309               AF=SIGN(1D0,EF+0.1D0)
33310               VF=AF-4D0*EF*XWV
33311             ENDIF
33312             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
33313             IF(4D0*RM1.LT.1D0) THEN
33314               FCOF=1D0
33315               IF(I.LE.8) FCOF=3D0*RADC4
33316               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
33317               IF(IMDM.EQ.1) THEN
33318                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
33319                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
33320                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
33321      &          AF**2*(1D0-4D0*RM1))*BE34
33322               ENDIF
33323             ENDIF
33324   130     CONTINUE
33325 C...Propagators: as simulated in PYOFSH and as desired
33326           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
33327           MINT15=MINT(15)
33328           MINT(15)=1
33329           MINT(61)=1
33330           CALL PYWIDT(23,SQM4,WDTP,WDTE)
33331           MINT(15)=MINT15
33332           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
33333           HFGG=HFGG*HFAEM*VINT(111)/SQM4
33334           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
33335           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
33336 C...Loop over flavours; consider full gamma/Z structure
33337           DO 140 I=MMINA,MMAXA
33338             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
33339      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
33340             EI=KCHG(IABS(I),1)/3D0
33341             AI=SIGN(1D0,EI)
33342             VI=AI-4D0*EI*XWV
33343             NCHN=NCHN+1
33344             ISIG(NCHN,1)=I
33345             ISIG(NCHN,2)=-I
33346             ISIG(NCHN,3)=1
33347             SIGH(NCHN)=FACZG*(EI**2*HFGG+EI*VI*HFGZ+
33348      &      (VI**2+AI**2)*HFZZ)/HBW4
33349   140     CONTINUE
33350  
33351         ELSEIF(ISUB.EQ.16) THEN
33352 C...f + fbar' -> g + W+/- (q + qbar' -> g + W+/- only)
33353           FACWG=COMFAC*AS*AEM/XW*2D0/9D0*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
33354 C...Propagators: as simulated in PYOFSH and as desired
33355           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
33356           CALL PYWIDT(24,SQM4,WDTP,WDTE)
33357           GMMWC=SQRT(SQM4)*WDTP(0)
33358           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
33359           FACWG=FACWG*HBW4C/HBW4
33360           DO 160 I=MMIN1,MMAX1
33361             IA=IABS(I)
33362             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 160
33363             DO 150 J=MMIN2,MMAX2
33364               JA=IABS(J)
33365               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 150
33366               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 150
33367               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
33368               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
33369               FCKM=VCKM((IA+1)/2,(JA+1)/2)
33370               NCHN=NCHN+1
33371               ISIG(NCHN,1)=I
33372               ISIG(NCHN,2)=J
33373               ISIG(NCHN,3)=1
33374               SIGH(NCHN)=FACWG*FCKM*WIDSC
33375   150       CONTINUE
33376   160     CONTINUE
33377  
33378         ELSEIF(ISUB.EQ.19) THEN
33379 C...f + fbar -> gamma + (gamma*/Z0)
33380           FACGZ=COMFAC*2D0*AEM**2*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
33381 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
33382           HFGG=0D0
33383           HFGZ=0D0
33384           HFZZ=0D0
33385           RADC4=1D0+PYALPS(SQM4)/PARU(1)
33386           DO 170 I=1,MIN(16,MDCY(23,3))
33387             IDC=I+MDCY(23,2)-1
33388             IF(MDME(IDC,1).LT.0) GOTO 170
33389             IMDM=0
33390             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
33391      &      IMDM=1
33392             IF(I.LE.8) THEN
33393               EF=KCHG(I,1)/3D0
33394               AF=SIGN(1D0,EF+0.1D0)
33395               VF=AF-4D0*EF*XWV
33396             ELSEIF(I.LE.16) THEN
33397               EF=KCHG(I+2,1)/3D0
33398               AF=SIGN(1D0,EF+0.1D0)
33399               VF=AF-4D0*EF*XWV
33400             ENDIF
33401             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
33402             IF(4D0*RM1.LT.1D0) THEN
33403               FCOF=1D0
33404               IF(I.LE.8) FCOF=3D0*RADC4
33405               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
33406               IF(IMDM.EQ.1) THEN
33407                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
33408                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
33409                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
33410      &          AF**2*(1D0-4D0*RM1))*BE34
33411               ENDIF
33412             ENDIF
33413   170     CONTINUE
33414 C...Propagators: as simulated in PYOFSH and as desired
33415           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
33416           MINT15=MINT(15)
33417           MINT(15)=1
33418           MINT(61)=1
33419           CALL PYWIDT(23,SQM4,WDTP,WDTE)
33420           MINT(15)=MINT15
33421           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
33422           HFGG=HFGG*HFAEM*VINT(111)/SQM4
33423           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
33424           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
33425 C...Loop over flavours; consider full gamma/Z structure
33426           DO 180 I=MMINA,MMAXA
33427             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 180
33428             EI=KCHG(IABS(I),1)/3D0
33429             AI=SIGN(1D0,EI)
33430             VI=AI-4D0*EI*XWV
33431             FCOI=1D0
33432             IF(IABS(I).LE.10) FCOI=FACA/3D0
33433             NCHN=NCHN+1
33434             ISIG(NCHN,1)=I
33435             ISIG(NCHN,2)=-I
33436             ISIG(NCHN,3)=1
33437             SIGH(NCHN)=FACGZ*FCOI*EI**2*(EI**2*HFGG+EI*VI*HFGZ+
33438      &      (VI**2+AI**2)*HFZZ)/HBW4
33439   180     CONTINUE
33440  
33441         ELSEIF(ISUB.EQ.20) THEN
33442 C...f + fbar' -> gamma + W+/-
33443           FACGW=COMFAC*0.5D0*AEM**2/XW
33444 C...Propagators: as simulated in PYOFSH and as desired
33445           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
33446           CALL PYWIDT(24,SQM4,WDTP,WDTE)
33447           GMMWC=SQRT(SQM4)*WDTP(0)
33448           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
33449           FACGW=FACGW*HBW4C/HBW4
33450 C...Anomalous couplings
33451           TERM1=(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
33452           TERM2=0D0
33453           TERM3=0D0
33454           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
33455             TERM2=RTCM(46)*(TH-UH)/(TH+UH)
33456             TERM3=0.5D0*RTCM(46)**2*(TH*UH+(TH2+UH2)*SH/
33457      &      (4D0*SQMW))/(TH+UH)**2
33458           ENDIF
33459           DO 200 I=MMIN1,MMAX1
33460             IA=IABS(I)
33461             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 200
33462             DO 190 J=MMIN2,MMAX2
33463               JA=IABS(J)
33464               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 190
33465               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 190
33466               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
33467      &        GOTO 190
33468               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
33469               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
33470               IF(IA.LE.10) THEN
33471                 FACWR=UH/(TH+UH)-1D0/3D0
33472                 FCKM=VCKM((IA+1)/2,(JA+1)/2)
33473                 FCOI=FACA/3D0
33474               ELSE
33475                 FACWR=-TH/(TH+UH)
33476                 FCKM=1D0
33477                 FCOI=1D0
33478               ENDIF
33479               FACWK=TERM1*FACWR**2+TERM2*FACWR+TERM3
33480               NCHN=NCHN+1
33481               ISIG(NCHN,1)=I
33482               ISIG(NCHN,2)=J
33483               ISIG(NCHN,3)=1
33484               SIGH(NCHN)=FACGW*FACWK*FCOI*FCKM*WIDSC
33485   190       CONTINUE
33486   200     CONTINUE
33487         ENDIF
33488  
33489       ELSEIF(ISUB.LE.40) THEN
33490         IF(ISUB.EQ.22) THEN
33491 C...f + fbar -> (gamma*/Z0) + (gamma*/Z0)
33492 C...Kinematics dependence
33493           FACZZ=COMFAC*AEM**2*((TH2+UH2+2D0*(SQM3+SQM4)*SH)/(TH*UH)-
33494      &    SQM3*SQM4*(1D0/TH2+1D0/UH2))
33495 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
33496           DO 220 I=1,6
33497             DO 210 J=1,3
33498               HGZ(I,J)=0D0
33499   210       CONTINUE
33500   220     CONTINUE
33501           RADC3=1D0+PYALPS(SQM3)/PARU(1)
33502           RADC4=1D0+PYALPS(SQM4)/PARU(1)
33503           DO 230 I=1,MIN(16,MDCY(23,3))
33504             IDC=I+MDCY(23,2)-1
33505             IF(MDME(IDC,1).LT.0) GOTO 230
33506             IMDM=0
33507             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2) IMDM=1
33508             IF(MDME(IDC,1).EQ.4.OR.MDME(IDC,1).EQ.5) IMDM=MDME(IDC,1)-2
33509             IF(I.LE.8) THEN
33510               EF=KCHG(I,1)/3D0
33511               AF=SIGN(1D0,EF+0.1D0)
33512               VF=AF-4D0*EF*XWV
33513             ELSEIF(I.LE.16) THEN
33514               EF=KCHG(I+2,1)/3D0
33515               AF=SIGN(1D0,EF+0.1D0)
33516               VF=AF-4D0*EF*XWV
33517             ENDIF
33518             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM3
33519             IF(4D0*RM1.LT.1D0) THEN
33520               FCOF=1D0
33521               IF(I.LE.8) FCOF=3D0*RADC3
33522               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
33523               IF(IMDM.GE.1) THEN
33524                 HGZ(1,IMDM)=HGZ(1,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
33525                 HGZ(2,IMDM)=HGZ(2,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
33526                 HGZ(3,IMDM)=HGZ(3,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
33527      &          AF**2*(1D0-4D0*RM1))*BE34
33528               ENDIF
33529             ENDIF
33530             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
33531             IF(4D0*RM1.LT.1D0) THEN
33532               FCOF=1D0
33533               IF(I.LE.8) FCOF=3D0*RADC4
33534               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
33535               IF(IMDM.GE.1) THEN
33536                 HGZ(4,IMDM)=HGZ(4,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
33537                 HGZ(5,IMDM)=HGZ(5,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
33538                 HGZ(6,IMDM)=HGZ(6,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
33539      &          AF**2*(1D0-4D0*RM1))*BE34
33540               ENDIF
33541             ENDIF
33542   230     CONTINUE
33543 C...Propagators: as simulated in PYOFSH and as desired
33544           HBW3=(1D0/PARU(1))*GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
33545           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
33546           MINT15=MINT(15)
33547           MINT(15)=1
33548           MINT(61)=1
33549           CALL PYWIDT(23,SQM3,WDTP,WDTE)
33550           MINT(15)=MINT15
33551           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
33552           DO 240 J=1,3
33553             HGZ(1,J)=HGZ(1,J)*HFAEM*VINT(111)/SQM3
33554             HGZ(2,J)=HGZ(2,J)*HFAEM*VINT(112)/SQM3
33555             HGZ(3,J)=HGZ(3,J)*HFAEM*VINT(114)/SQM3
33556   240     CONTINUE
33557           MINT15=MINT(15)
33558           MINT(15)=1
33559           MINT(61)=1
33560           CALL PYWIDT(23,SQM4,WDTP,WDTE)
33561           MINT(15)=MINT15
33562           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
33563           DO 250 J=1,3
33564             HGZ(4,J)=HGZ(4,J)*HFAEM*VINT(111)/SQM4
33565             HGZ(5,J)=HGZ(5,J)*HFAEM*VINT(112)/SQM4
33566             HGZ(6,J)=HGZ(6,J)*HFAEM*VINT(114)/SQM4
33567   250     CONTINUE
33568 C...Loop over flavours; separate left- and right-handed couplings
33569           DO 270 I=MMINA,MMAXA
33570             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 270
33571             EI=KCHG(IABS(I),1)/3D0
33572             AI=SIGN(1D0,EI)
33573             VI=AI-4D0*EI*XWV
33574             VALI=VI-AI
33575             VARI=VI+AI
33576             FCOI=1D0
33577             IF(IABS(I).LE.10) FCOI=FACA/3D0
33578             DO 260 J=1,3
33579               HL3(J)=EI**2*HGZ(1,J)+EI*VALI*HGZ(2,J)+VALI**2*HGZ(3,J)
33580               HR3(J)=EI**2*HGZ(1,J)+EI*VARI*HGZ(2,J)+VARI**2*HGZ(3,J)
33581               HL4(J)=EI**2*HGZ(4,J)+EI*VALI*HGZ(5,J)+VALI**2*HGZ(6,J)
33582               HR4(J)=EI**2*HGZ(4,J)+EI*VARI*HGZ(5,J)+VARI**2*HGZ(6,J)
33583   260       CONTINUE
33584             FACLR=HL3(1)*HL4(1)+HL3(1)*(HL4(2)+HL4(3))+
33585      &      HL4(1)*(HL3(2)+HL3(3))+HL3(2)*HL4(3)+HL4(2)*HL3(3)+
33586      &      HR3(1)*HR4(1)+HR3(1)*(HR4(2)+HR4(3))+
33587      &      HR4(1)*(HR3(2)+HR3(3))+HR3(2)*HR4(3)+HR4(2)*HR3(3)
33588             NCHN=NCHN+1
33589             ISIG(NCHN,1)=I
33590             ISIG(NCHN,2)=-I
33591             ISIG(NCHN,3)=1
33592             SIGH(NCHN)=0.5D0*FACZZ*FCOI*FACLR/(HBW3*HBW4)
33593   270     CONTINUE
33594  
33595         ELSEIF(ISUB.EQ.23) THEN
33596 C...f + fbar' -> Z0 + W+/- (Z0 only, i.e. no gamma* admixture.)
33597           FACZW=COMFAC*0.5D0*(AEM/XW)**2
33598           FACZW=FACZW*WIDS(23,2)
33599           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
33600           FACBW=1D0/((SH-SQMW)**2+GMMW**2)
33601           DO 290 I=MMIN1,MMAX1
33602             IA=IABS(I)
33603             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 290
33604             DO 280 J=MMIN2,MMAX2
33605               JA=IABS(J)
33606               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 280
33607               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 280
33608               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
33609      &        GOTO 280
33610               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
33611               EI=KCHG(IA,1)/3D0
33612               AI=SIGN(1D0,EI+0.1D0)
33613               VI=AI-4D0*EI*XWV
33614               EJ=KCHG(JA,1)/3D0
33615               AJ=SIGN(1D0,EJ+0.1D0)
33616               VJ=AJ-4D0*EJ*XWV
33617               IF(VI+AI.GT.0) THEN
33618                 VISAV=VI
33619                 AISAV=AI
33620                 VI=VJ
33621                 AI=AJ
33622                 VJ=VISAV
33623                 AJ=AISAV
33624               ENDIF
33625               FCKM=1D0
33626               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
33627               FCOI=1D0
33628               IF(IA.LE.10) FCOI=FACA/3D0
33629               NCHN=NCHN+1
33630               ISIG(NCHN,1)=I
33631               ISIG(NCHN,2)=J
33632               ISIG(NCHN,3)=1
33633               SIGH(NCHN)=FACZW*FCOI*FCKM*(FACBW*((9D0-8D0*XW)/4D0*THUH+
33634      &        (8D0*XW-6D0)/4D0*SH*(SQM3+SQM4))+(THUH-SH*(SQM3+SQM4))*
33635      &        (SH-SQMW)*FACBW*0.5D0*((VJ+AJ)/TH-(VI+AI)/UH)+
33636      &        THUH/(16D0*XW1)*((VJ+AJ)**2/TH2+(VI+AI)**2/UH2)+
33637      &        SH*(SQM3+SQM4)/(8D0*XW1)*(VI+AI)*(VJ+AJ)/(TH*UH))*
33638      &        WIDS(24,(5-KCHW)/2)
33639 C***Protect against slightly negative cross sections. (Reason yet to be
33640 C***sorted out. One possibility: addition of width to the W propagator.)
33641               SIGH(NCHN)=MAX(0D0,SIGH(NCHN))
33642   280       CONTINUE
33643   290     CONTINUE
33644  
33645         ELSEIF(ISUB.EQ.25) THEN
33646 C...f + fbar -> W+ + W-
33647 C...Propagators: Z0, W+- as simulated in PYOFSH and as desired
33648           GMMZC=GMMZ
33649           HBWZC=SH**2/((SH-SQMZ)**2+GMMZC**2)
33650           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
33651           CALL PYWIDT(24,SQM3,WDTP,WDTE)
33652           GMMW3=SQRT(SQM3)*WDTP(0)
33653           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
33654           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
33655           CALL PYWIDT(24,SQM4,WDTP,WDTE)
33656           GMMW4=SQRT(SQM4)*WDTP(0)
33657           HBW4C=GMMW4/((SQM4-SQMW)**2+GMMW4**2)
33658 C...Kinematical functions
33659           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
33660           THUH34=(2D0*SH*(SQM3+SQM4)+THUH)/(SQM3*SQM4)
33661           GS=(((SH-SQM3-SQM4)**2-4D0*SQM3*SQM4)*THUH34+12D0*THUH)/SH2
33662           GT=THUH34+4D0*THUH/TH2
33663           GST=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/TH)/SH
33664           GU=THUH34+4D0*THUH/UH2
33665           GSU=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/UH)/SH
33666 C...Common factors and couplings
33667           FACWW=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)
33668           FACWW=FACWW*WIDS(24,1)
33669           CGG=AEM**2/2D0
33670           CGZ=AEM**2/(4D0*XW)*HBWZC*(1D0-SQMZ/SH)
33671           CZZ=AEM**2/(32D0*XW**2)*HBWZC
33672           CNG=AEM**2/(4D0*XW)
33673           CNZ=AEM**2/(16D0*XW**2)*HBWZC*(1D0-SQMZ/SH)
33674           CNN=AEM**2/(16D0*XW**2)
33675 C...Coulomb factor for W+W- pair
33676           IF(MSTP(40).GE.1.AND.MSTP(40).LE.3) THEN
33677             COULE=(SH-4D0*SQMW)/(4D0*PMAS(24,1))
33678             COULP=MAX(1D-10,0.5D0*BE34*SQRT(SH))
33679             IF(COULE.LT.100D0*PMAS(24,2)) THEN
33680               COULP1=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
33681      &        PMAS(24,2)**2)-COULE))
33682             ELSE
33683               COULP1=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/COULE))
33684             ENDIF
33685             IF(COULE.GT.-100D0*PMAS(24,2)) THEN
33686               COULP2=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
33687      &        PMAS(24,2)**2)+COULE))
33688             ELSE
33689               COULP2=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/
33690      &        ABS(COULE)))
33691             ENDIF
33692             IF(MSTP(40).EQ.1) THEN
33693               COULDC=PARU(1)-2D0*ATAN((COULP1**2+COULP2**2-COULP**2)/
33694      &        MAX(1D-10,2D0*COULP*COULP1))
33695               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
33696             ELSEIF(MSTP(40).EQ.2) THEN
33697               COULCK=DCMPLX(DBLE(COULP1),DBLE(COULP2))
33698               COULCP=DCMPLX(0D0,DBLE(COULP))
33699               COULCD=(COULCK+COULCP)/(COULCK-COULCP)
33700               COULCR=1D0+DBLE(PARU(101)*SQRT(SH))/
33701      &        (4D0*COULCP)*LOG(COULCD)
33702               COULCS=DCMPLX(0D0,0D0)
33703               NSTP=100
33704               DO 300 ISTP=1,NSTP
33705                 COULXX=(ISTP-0.5)/NSTP
33706                 COULCS=COULCS+(1D0/COULXX)*LOG((1D0+COULXX*COULCD)/
33707      &          (1D0+COULXX/COULCD))
33708   300         CONTINUE
33709               COULCR=COULCR+DBLE(PARU(101)**2*SH)/(16D0*COULCP*COULCK)*
33710      &        (COULCS/NSTP)
33711               FACCOU=ABS(COULCR)**2
33712             ELSEIF(MSTP(40).EQ.3) THEN
33713               COULDC=PARU(1)-2D0*(1D0-BE34)**2*ATAN((COULP1**2+
33714      &        COULP2**2-COULP**2)/MAX(1D-10,2D0*COULP*COULP1))
33715               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
33716             ENDIF
33717           ELSEIF(MSTP(40).EQ.4) THEN
33718             FACCOU=1D0+0.5D0*PARU(101)*PARU(1)/MAX(1D-5,BE34)
33719           ELSE
33720             FACCOU=1D0
33721           ENDIF
33722           VINT(95)=FACCOU
33723           FACWW=FACWW*FACCOU
33724 C...Loop over allowed flavours
33725           DO 310 I=MMINA,MMAXA
33726             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
33727             EI=KCHG(IABS(I),1)/3D0
33728             AI=SIGN(1D0,EI+0.1D0)
33729             VI=AI-4D0*EI*XWV
33730             FCOI=1D0
33731             IF(IABS(I).LE.10) FCOI=FACA/3D0
33732             IF(MSTP(50).LE.0.OR.IABS(I).LE.10) THEN
33733               IF(AI.LT.0D0) THEN
33734                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS+
33735      &          (CNG*EI+CNZ*(VI+AI))*GST+CNN*GT
33736               ELSE
33737                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS-
33738      &          (CNG*EI+CNZ*(VI+AI))*GSU+CNN*GU
33739               ENDIF
33740             ELSE
33741               XMW02=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
33742               BET=SQRT(1D0-4D0*XMW02/SH)
33743               GAT=1D0/SQRT(1D0-BET**2)
33744               STHE2=1D0-CTH**2
33745               AMPZG=BET**3*(16D0+(4D0*BET**2*GAT**2+3D0/GAT**2)*STHE2)
33746               AMPNU=BET*(2D0+BET**2*GAT**2*STHE2/2D0+
33747      &        2D0*BET**2*(1D0-BET**2)*STHE2/(1D0-2D0*BET*CTH+BET**2)**2)
33748               AMPNG=BET*((1D0+BET**2)*(4D0+BET**2*GAT**2*STHE2)+
33749      &        2D0*(1D0-BET**2)*(BET**2*STHE2-2D0*(1D0-BET**2))/
33750      &        (1D0-2D0*BET*CTH+BET**2))
33751               PROPI1=(0.25D0*SQMZ/XMW02)*HBWZC*(1D0-SQMZ/SH)
33752               PROPI2=(0.25D0*SQMZ/XMW02)**2*HBWZC
33753               A0=(2D0*(XMW02/SQMZ)-(1D0-BET**2)*XW)*POLL
33754               A1=(2D0*(XMW02/SQMZ)**2-2*XMW02/SQMZ*(1D0-BET**2)*XW)*POLL
33755               A2=(1D0-BET**2)**2*XW**2*(POLR+POLL)/2D0
33756               ATOT=AMPNU*POLL+(A1+A2)*PROPI2*AMPZG-A0*PROPI1*AMPNG
33757               ATOT=ATOT*CNN/SQMW*SH/BET*2D0
33758               DSIGWW=ATOT
33759             ENDIF
33760             NCHN=NCHN+1
33761             ISIG(NCHN,1)=I
33762             ISIG(NCHN,2)=-I
33763             ISIG(NCHN,3)=1
33764             SIGH(NCHN)=FACWW*FCOI*DSIGWW
33765   310     CONTINUE
33766  
33767         ELSEIF(ISUB.EQ.30) THEN
33768 C...f + g -> f + (gamma*/Z0) (q + g -> q + (gamma*/Z0) only)
33769           FZQ=COMFAC*FACA*AS*AEM*(1D0/3D0)*(SH2+UH2+2D0*SQM4*TH)/
33770      &    (-SH*UH)
33771 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
33772           HFGG=0D0
33773           HFGZ=0D0
33774           HFZZ=0D0
33775           RADC4=1D0+PYALPS(SQM4)/PARU(1)
33776           DO 320 I=1,MIN(16,MDCY(23,3))
33777             IDC=I+MDCY(23,2)-1
33778             IF(MDME(IDC,1).LT.0) GOTO 320
33779             IMDM=0
33780             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
33781      &      IMDM=1
33782             IF(I.LE.8) THEN
33783               EF=KCHG(I,1)/3D0
33784               AF=SIGN(1D0,EF+0.1D0)
33785               VF=AF-4D0*EF*XWV
33786             ELSEIF(I.LE.16) THEN
33787               EF=KCHG(I+2,1)/3D0
33788               AF=SIGN(1D0,EF+0.1D0)
33789               VF=AF-4D0*EF*XWV
33790             ENDIF
33791             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
33792             IF(4D0*RM1.LT.1D0) THEN
33793               FCOF=1D0
33794               IF(I.LE.8) FCOF=3D0*RADC4
33795               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
33796               IF(IMDM.EQ.1) THEN
33797                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
33798                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
33799                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
33800      &          AF**2*(1D0-4D0*RM1))*BE34
33801               ENDIF
33802             ENDIF
33803   320     CONTINUE
33804 C...Propagators: as simulated in PYOFSH and as desired
33805           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
33806           MINT15=MINT(15)
33807           MINT(15)=1
33808           MINT(61)=1
33809           CALL PYWIDT(23,SQM4,WDTP,WDTE)
33810           MINT(15)=MINT15
33811           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
33812           HFGG=HFGG*HFAEM*VINT(111)/SQM4
33813           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
33814           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
33815 C...Loop over flavours; consider full gamma/Z structure
33816           DO 340 I=MMINA,MMAXA
33817             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
33818             EI=KCHG(IABS(I),1)/3D0
33819             AI=SIGN(1D0,EI)
33820             VI=AI-4D0*EI*XWV
33821             FACZQ=FZQ*(EI**2*HFGG+EI*VI*HFGZ+
33822      &      (VI**2+AI**2)*HFZZ)/HBW4
33823             DO 330 ISDE=1,2
33824               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
33825               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
33826               NCHN=NCHN+1
33827               ISIG(NCHN,ISDE)=I
33828               ISIG(NCHN,3-ISDE)=21
33829               ISIG(NCHN,3)=1
33830               SIGH(NCHN)=FACZQ
33831   330       CONTINUE
33832   340     CONTINUE
33833  
33834         ELSEIF(ISUB.EQ.31) THEN
33835 C...f + g -> f' + W+/- (q + g -> q' + W+/- only)
33836           FACWQ=COMFAC*FACA*AS*AEM/XW*1D0/12D0*
33837      &    (SH2+UH2+2D0*SQM4*TH)/(-SH*UH)
33838 C...Propagators: as simulated in PYOFSH and as desired
33839           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
33840           CALL PYWIDT(24,SQM4,WDTP,WDTE)
33841           GMMWC=SQRT(SQM4)*WDTP(0)
33842           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
33843           FACWQ=FACWQ*HBW4C/HBW4
33844           DO 360 I=MMINA,MMAXA
33845             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
33846             IA=IABS(I)
33847             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
33848             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
33849             DO 350 ISDE=1,2
33850               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
33851               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
33852               NCHN=NCHN+1
33853               ISIG(NCHN,ISDE)=I
33854               ISIG(NCHN,3-ISDE)=21
33855               ISIG(NCHN,3)=1
33856               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
33857   350       CONTINUE
33858   360     CONTINUE
33859  
33860         ELSEIF(ISUB.EQ.35) THEN
33861 C...f + gamma -> f + (gamma*/Z0)
33862           IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) THEN
33863             FZQN=SH2+UH2+2D0*(SQM4-VINT(3)**2)*TH
33864             FZQDTM=VINT(3)**2*SQM4-SH*(UH-VINT(4)**2)
33865           ELSEIF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) THEN
33866             FZQN=SH2+UH2+2D0*(SQM4-VINT(4)**2)*TH
33867             FZQDTM=VINT(4)**2*SQM4-SH*(UH-VINT(3)**2)
33868           ELSE
33869             FZQN=SH2+UH2+2D0*SQM4*TH
33870             FZQDTM=-SH*UH
33871           ENDIF
33872           FZQN=COMFAC*2D0*AEM**2*MAX(0D0,FZQN)
33873 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
33874           HFGG=0D0
33875           HFGZ=0D0
33876           HFZZ=0D0
33877           RADC4=1D0+PYALPS(SQM4)/PARU(1)
33878           DO 370 I=1,MIN(16,MDCY(23,3))
33879             IDC=I+MDCY(23,2)-1
33880             IF(MDME(IDC,1).LT.0) GOTO 370
33881             IMDM=0
33882             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
33883      &      IMDM=1
33884             IF(I.LE.8) THEN
33885               EF=KCHG(I,1)/3D0
33886               AF=SIGN(1D0,EF+0.1D0)
33887               VF=AF-4D0*EF*XWV
33888             ELSEIF(I.LE.16) THEN
33889               EF=KCHG(I+2,1)/3D0
33890               AF=SIGN(1D0,EF+0.1D0)
33891               VF=AF-4D0*EF*XWV
33892             ENDIF
33893             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
33894             IF(4D0*RM1.LT.1D0) THEN
33895               FCOF=1D0
33896               IF(I.LE.8) FCOF=3D0*RADC4
33897               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
33898               IF(IMDM.EQ.1) THEN
33899                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
33900                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
33901                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
33902      &          AF**2*(1D0-4D0*RM1))*BE34
33903               ENDIF
33904             ENDIF
33905   370     CONTINUE
33906 C...Propagators: as simulated in PYOFSH and as desired
33907           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
33908           MINT15=MINT(15)
33909           MINT(15)=1
33910           MINT(61)=1
33911           CALL PYWIDT(23,SQM4,WDTP,WDTE)
33912           MINT(15)=MINT15
33913           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
33914           HFGG=HFGG*HFAEM*VINT(111)/SQM4
33915           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
33916           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
33917 C...Loop over flavours; consider full gamma/Z structure
33918           DO 390 I=MMINA,MMAXA
33919             IF(I.EQ.0) GOTO 390
33920             EI=KCHG(IABS(I),1)/3D0
33921             AI=SIGN(1D0,EI)
33922             VI=AI-4D0*EI*XWV
33923             FACZQ=EI**2*(EI**2*HFGG+EI*VI*HFGZ+
33924      &      (VI**2+AI**2)*HFZZ)/HBW4
33925             FZQD=MAX(PMAS(IABS(I),1)**2*SQM4,FZQDTM)
33926             DO 380 ISDE=1,2
33927               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 380
33928               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 380
33929               NCHN=NCHN+1
33930               ISIG(NCHN,ISDE)=I
33931               ISIG(NCHN,3-ISDE)=22
33932               ISIG(NCHN,3)=1
33933               SIGH(NCHN)=FACZQ*FZQN/FZQD
33934   380       CONTINUE
33935   390     CONTINUE
33936  
33937         ELSEIF(ISUB.EQ.36) THEN
33938 C...f + gamma -> f' + W+/-
33939           FWQ=COMFAC*AEM**2/(2D0*XW)*
33940      &    (SH2+UH2+2D0*SQM4*TH)/(SQPTH*SQM4-SH*UH)
33941 C...Propagators: as simulated in PYOFSH and as desired
33942           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
33943           CALL PYWIDT(24,SQM4,WDTP,WDTE)
33944           GMMWC=SQRT(SQM4)*WDTP(0)
33945           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
33946           FWQ=FWQ*HBW4C/HBW4
33947           DO 410 I=MMINA,MMAXA
33948             IF(I.EQ.0) GOTO 410
33949             IA=IABS(I)
33950             EIA=ABS(KCHG(IABS(I),1)/3D0)
33951             FACWQ=FWQ*(EIA-SH/(SH+UH))**2
33952             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
33953             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
33954             DO 400 ISDE=1,2
33955               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 400
33956               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 400
33957               NCHN=NCHN+1
33958               ISIG(NCHN,ISDE)=I
33959               ISIG(NCHN,3-ISDE)=22
33960               ISIG(NCHN,3)=1
33961               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
33962   400       CONTINUE
33963   410     CONTINUE
33964         ENDIF
33965  
33966       ELSEIF(ISUB.LE.100) THEN
33967         IF(ISUB.EQ.69) THEN
33968 C...gamma + gamma -> W+ + W-
33969           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
33970           FPROP=SH2/((SQMWE-TH)*(SQMWE-UH))
33971           FACWW=COMFAC*6D0*AEM**2*(1D0-FPROP*(4D0/3D0+2D0*SQMWE/SH)+
33972      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/SH)**2))*WIDS(24,1)
33973           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 420
33974           NCHN=NCHN+1
33975           ISIG(NCHN,1)=22
33976           ISIG(NCHN,2)=22
33977           ISIG(NCHN,3)=1
33978           SIGH(NCHN)=FACWW
33979   420     CONTINUE
33980  
33981         ELSEIF(ISUB.EQ.70) THEN
33982 C...gamma + W+/- -> Z0 + W+/-
33983           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
33984           FPROP=(TH-SQMWE)**2/(-SH*(SQMWE-UH))
33985           FACZW=COMFAC*6D0*AEM**2*(XW1/XW)*
33986      &    (1D0-FPROP*(4D0/3D0+2D0*SQMWE/(TH-SQMWE))+
33987      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/(TH-SQMWE))**2))*WIDS(23,2)
33988           DO 440 KCHW=1,-1,-2
33989             DO 430 ISDE=1,2
33990               IF(KFAC(ISDE,22)*KFAC(3-ISDE,24*KCHW).EQ.0) GOTO 430
33991               NCHN=NCHN+1
33992               ISIG(NCHN,ISDE)=22
33993               ISIG(NCHN,3-ISDE)=24*KCHW
33994               ISIG(NCHN,3)=1
33995               SIGH(NCHN)=FACZW*WIDS(24,(5-KCHW)/2)
33996   430       CONTINUE
33997   440     CONTINUE
33998         ENDIF
33999       ENDIF
34000  
34001       RETURN
34002       END
34003  
34004 C*********************************************************************
34005  
34006 C...PYSGHG
34007 C...Subprocess cross sections for Higgs processes,
34008 C...except Higgs pairs in PYSGSU, but including WW scattering.
34009 C...Auxiliary to PYSIGH.
34010  
34011       SUBROUTINE PYSGHG(NCHN,SIGS)
34012  
34013 C...Double precision and integer declarations
34014       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34015       IMPLICIT INTEGER(I-N)
34016       INTEGER PYK,PYCHGE,PYCOMP
34017 C...Parameter statement to help give large particle numbers.
34018       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
34019      &KEXCIT=4000000,KDIMEN=5000000)
34020 C...Commonblocks
34021       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
34022       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
34023       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
34024       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
34025       COMMON/PYINT1/MINT(400),VINT(400)
34026       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
34027       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
34028       COMMON/PYINT4/MWID(500),WIDS(500,5)
34029       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
34030       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
34031       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
34032      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
34033      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
34034      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
34035       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
34036      &/PYINT3/,/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/
34037 C...Local arrays and complex variables
34038       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
34039       COMPLEX*16 A004,A204,A114,A00U,A20U,A11U
34040       COMPLEX*16 CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF
34041  
34042 C...Convert H or A process into equivalent h one
34043       IHIGG=1
34044       KFHIGG=25
34045       IF(ISUB.EQ.401.OR.ISUB.EQ.402) THEN
34046          KFHIGG=KFPR(ISUB,1)
34047       END IF
34048       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
34049      &ISUB.LE.190)) THEN
34050         IHIGG=2
34051         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
34052         KFHIGG=33+IHIGG
34053         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
34054         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
34055         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
34056         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
34057         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
34058         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
34059         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
34060         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
34061         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
34062         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
34063         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
34064         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
34065       ENDIF
34066       SQMH=PMAS(KFHIGG,1)**2
34067       GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2)
34068  
34069 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
34070       IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ.
34071      &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN
34072 C...Calculate M_R and N_R functions for Higgs-like and QCD-like models
34073         IF(MSTP(46).LE.4) THEN
34074           HDTLH=LOG(PMAS(25,1)/PARP(44))
34075           HDTMR=(4.5D0*PARU(1)/SQRT(3D0)-74D0/9D0)/8D0+HDTLH/12D0
34076           HDTNR=-1D0/18D0+HDTLH/6D0
34077         ELSE
34078           HDTNM=0.125D0*(1D0/(288D0*PARU(1)**2)+(PARP(47)/PARP(45))**2)
34079           HDTLQ=LOG(PARP(45)/PARP(44))
34080           HDTMR=-(4D0*PARU(1))**2*0.5D0*HDTNM+HDTLQ/12D0
34081           HDTNR=(4D0*PARU(1))**2*HDTNM+HDTLQ/6D0
34082         ENDIF
34083  
34084 C...Calculate lowest and next-to-lowest order partial wave amplitudes
34085         HDTV=1D0/(16D0*PARU(1)*PARP(47)**2)
34086         A00L=DBLE(HDTV*SH)
34087         A20L=-0.5D0*A00L
34088         A11L=A00L/6D0
34089         HDTLS=LOG(SH/PARP(44)**2)
34090         A004=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
34091      &  CMPLX(DBLE((176D0*HDTMR+112D0*HDTNR)/3D0+11D0/27D0-
34092      &  (50D0/9D0)*HDTLS),DBLE(4D0*PARU(1)))
34093         A204=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
34094      &  CMPLX(DBLE(32D0*(HDTMR+2D0*HDTNR)/3D0+25D0/54D0-
34095      &  (20D0/9D0)*HDTLS),DBLE(PARU(1)))
34096         A114=DBLE((HDTV*SH)**2/(6D0*PARU(1)))*
34097      &  CMPLX(DBLE(4D0*(-2D0*HDTMR+HDTNR)-1D0/18D0),DBLE(PARU(1)/6D0))
34098  
34099 C...Unitarize partial wave amplitudes with Pade or K-matrix method
34100         IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN
34101           A00U=A00L/(1D0-A004/A00L)
34102           A20U=A20L/(1D0-A204/A20L)
34103           A11U=A11L/(1D0-A114/A11L)
34104         ELSE
34105           A00U=(A00L+DBLE(A004))/(1D0-DCMPLX(0.D0,A00L+DBLE(A004)))
34106           A20U=(A20L+DBLE(A204))/(1D0-DCMPLX(0.D0,A20L+DBLE(A204)))
34107           A11U=(A11L+DBLE(A114))/(1D0-DCMPLX(0.D0,A11L+DBLE(A114)))
34108         ENDIF
34109       ENDIF
34110  
34111 C...Differential cross section expressions.
34112  
34113       IF(ISUB.LE.60) THEN
34114         IF(ISUB.EQ.3) THEN
34115 C...f + fbar -> h0 (or H0, or A0)
34116           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34117           HS=SHR*WDTP(0)
34118           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
34119           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34120      &    FACBW=0D0
34121           HP=AEM/(8D0*XW)*SH/SQMW*SH
34122           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34123           DO 100 I=MMINA,MMAXA
34124             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
34125             IA=IABS(I)
34126             RMQ=PYMRUN(IA,SH)**2/SH
34127             HI=HP*RMQ
34128             IF(IA.LE.10) HI=HP*RMQ*FACA/3D0
34129             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
34130               IKFI=1
34131               IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
34132               IF(IA.GT.10) IKFI=3
34133               HI=HI*PARU(150+10*IHIGG+IKFI)**2
34134               IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
34135                 HI=HI/(1D0+RMSS(41))**2
34136                 IF(IHIGG.NE.3) THEN
34137                   HI=HI*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
34138      &            PARU(151+10*IHIGG))**2
34139                 ENDIF
34140               ENDIF
34141             ENDIF
34142             NCHN=NCHN+1
34143             ISIG(NCHN,1)=I
34144             ISIG(NCHN,2)=-I
34145             ISIG(NCHN,3)=1
34146             SIGH(NCHN)=HI*FACBW*HF
34147   100     CONTINUE
34148  
34149         ELSEIF(ISUB.EQ.5) THEN
34150 C...Z0 + Z0 -> h0
34151           CALL PYWIDT(25,SH,WDTP,WDTE)
34152           HS=SHR*WDTP(0)
34153           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
34154           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
34155           HP=AEM/(8D0*XW)*SH/SQMW*SH
34156           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34157           HI=HP/4D0
34158           FACI=8D0/(PARU(1)**2*XW1)*(AEM*XWC)**2
34159           DO 120 I=MMIN1,MMAX1
34160             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
34161             DO 110 J=MMIN2,MMAX2
34162               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
34163               EI=KCHG(IABS(I),1)/3D0
34164               AI=SIGN(1D0,EI)
34165               VI=AI-4D0*EI*XWV
34166               EJ=KCHG(IABS(J),1)/3D0
34167               AJ=SIGN(1D0,EJ)
34168               VJ=AJ-4D0*EJ*XWV
34169               NCHN=NCHN+1
34170               ISIG(NCHN,1)=I
34171               ISIG(NCHN,2)=J
34172               ISIG(NCHN,3)=1
34173               SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF
34174   110       CONTINUE
34175   120     CONTINUE
34176  
34177         ELSEIF(ISUB.EQ.8) THEN
34178 C...W+ + W- -> h0
34179           CALL PYWIDT(25,SH,WDTP,WDTE)
34180           HS=SHR*WDTP(0)
34181           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
34182           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
34183           HP=AEM/(8D0*XW)*SH/SQMW*SH
34184           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34185           HI=HP/2D0
34186           FACI=1D0/(4D0*PARU(1)**2)*(AEM/XW)**2
34187           DO 140 I=MMIN1,MMAX1
34188             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
34189             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
34190             DO 130 J=MMIN2,MMAX2
34191               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
34192               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
34193               IF(EI*EJ.GT.0D0) GOTO 130
34194               NCHN=NCHN+1
34195               ISIG(NCHN,1)=I
34196               ISIG(NCHN,2)=J
34197               ISIG(NCHN,3)=1
34198               SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF
34199   130       CONTINUE
34200   140     CONTINUE
34201  
34202         ELSEIF(ISUB.EQ.24) THEN
34203 C...f + fbar -> Z0 + h0 (or H0, or A0)
34204 C...Propagators: Z0, h0 as simulated in PYOFSH and as desired
34205           HBW3=GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
34206           CALL PYWIDT(23,SQM3,WDTP,WDTE)
34207           GMMZ3=SQRT(SQM3)*WDTP(0)
34208           HBW3C=GMMZ3/((SQM3-SQMZ)**2+GMMZ3**2)
34209           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
34210           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
34211           GMMH4=SQRT(SQM4)*WDTP(0)
34212           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
34213           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
34214           FACHZ=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*8D0*(AEM*XWC)**2*
34215      &    (THUH+2D0*SH*SQM3)/((SH-SQMZ)**2+GMMZ**2)
34216           FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2)
34217           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ*
34218      &    PARU(154+10*IHIGG)**2
34219           DO 150 I=MMINA,MMAXA
34220             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
34221             EI=KCHG(IABS(I),1)/3D0
34222             AI=SIGN(1D0,EI)
34223             VI=AI-4D0*EI*XWV
34224             FCOI=1D0
34225             IF(IABS(I).LE.10) FCOI=FACA/3D0
34226             NCHN=NCHN+1
34227             ISIG(NCHN,1)=I
34228             ISIG(NCHN,2)=-I
34229             ISIG(NCHN,3)=1
34230             SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2)
34231   150     CONTINUE
34232  
34233         ELSEIF(ISUB.EQ.26) THEN
34234 C...f + fbar' -> W+/- + h0 (or H0, or A0)
34235 C...Propagators: W+-, h0 as simulated in PYOFSH and as desired
34236           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
34237           CALL PYWIDT(24,SQM3,WDTP,WDTE)
34238           GMMW3=SQRT(SQM3)*WDTP(0)
34239           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
34240           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
34241           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
34242           GMMH4=SQRT(SQM4)*WDTP(0)
34243           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
34244           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
34245           FACHW=COMFAC*0.125D0*(AEM/XW)**2*(THUH+2D0*SH*SQM3)/
34246      &    ((SH-SQMW)**2+GMMW**2)*(HBW3C/HBW3)*(HBW4C/HBW4)
34247           FACHW=FACHW*WIDS(KFHIGG,2)
34248           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW*
34249      &    PARU(155+10*IHIGG)**2
34250           DO 170 I=MMIN1,MMAX1
34251             IA=IABS(I)
34252             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 170
34253             DO 160 J=MMIN2,MMAX2
34254               JA=IABS(J)
34255               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 160
34256               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 160
34257               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
34258      &        GOTO 160
34259               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
34260               FCKM=1D0
34261               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
34262               FCOI=1D0
34263               IF(IA.LE.10) FCOI=FACA/3D0
34264               NCHN=NCHN+1
34265               ISIG(NCHN,1)=I
34266               ISIG(NCHN,2)=J
34267               ISIG(NCHN,3)=1
34268               SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2)
34269   160       CONTINUE
34270   170     CONTINUE
34271  
34272         ELSEIF(ISUB.EQ.32) THEN
34273 C...f + g -> f + h0 (q + g -> q + h0 only)
34274           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24D0
34275 C...H propagator: as simulated in PYOFSH and as desired
34276           SQMHC=PMAS(25,1)**2
34277           GMMHC=PMAS(25,1)*PMAS(25,2)
34278           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
34279           CALL PYWIDT(25,SQM4,WDTP,WDTE)
34280           GMMHCC=SQRT(SQM4)*WDTP(0)
34281           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
34282           FHCQ=FHCQ*HBW4C/HBW4
34283           DO 190 I=MMINA,MMAXA
34284             IA=IABS(I)
34285             IF(IA.NE.5) GOTO 190
34286             SQML=PYMRUN(IA,SH)**2
34287             SQMQ=PMAS(IA,1)**2
34288             FACHCQ=FHCQ*SQML/SQMW*
34289      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQM4-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH-
34290      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQM4-UH)/(SQMQ-UH)*
34291      &      (SQM4-SQMQ-SH)/SH)
34292             DO 180 ISDE=1,2
34293               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
34294               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
34295               NCHN=NCHN+1
34296               ISIG(NCHN,ISDE)=I
34297               ISIG(NCHN,3-ISDE)=21
34298               ISIG(NCHN,3)=1
34299               SIGH(NCHN)=FACHCQ*WIDS(25,2)
34300   180       CONTINUE
34301   190     CONTINUE
34302         ENDIF
34303  
34304       ELSEIF(ISUB.LE.80) THEN
34305         IF(ISUB.EQ.71) THEN
34306 C...Z0 + Z0 -> Z0 + Z0
34307           IF(SH.LE.4.01D0*SQMZ) GOTO 220
34308  
34309           IF(MSTP(46).LE.2) THEN
34310 C...Exact scattering ME:s for on-mass-shell gauge bosons
34311             BE2=1D0-4D0*SQMZ/SH
34312             TH=-0.5D0*SH*BE2*(1D0-CTH)
34313             UH=-0.5D0*SH*BE2*(1D0+CTH)
34314             IF(MAX(TH,UH).GT.-1D0) GOTO 220
34315             SHANG=1D0/XW1*SQMW/SQMZ*(1D0+BE2)**2
34316             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
34317             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
34318             THANG=1D0/XW1*SQMW/SQMZ*(BE2-CTH)**2
34319             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
34320             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
34321             UHANG=1D0/XW1*SQMW/SQMZ*(BE2+CTH)**2
34322             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
34323             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
34324             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
34325      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
34326             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
34327             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+
34328      &      (ASHIM+ATHIM+AUHIM)**2)
34329             IF(MSTP(46).EQ.2) FACZZ=0D0
34330  
34331           ELSE
34332 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
34333             FACZZ=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
34334      &      ABS(A00U+2D0*A20U)**2
34335           ENDIF
34336           FACZZ=FACZZ*WIDS(23,1)
34337  
34338           DO 210 I=MMIN1,MMAX1
34339             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 210
34340             EI=KCHG(IABS(I),1)/3D0
34341             AI=SIGN(1D0,EI)
34342             VI=AI-4D0*EI*XWV
34343             AVI=AI**2+VI**2
34344             DO 200 J=MMIN2,MMAX2
34345               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 200
34346               EJ=KCHG(IABS(J),1)/3D0
34347               AJ=SIGN(1D0,EJ)
34348               VJ=AJ-4D0*EJ*XWV
34349               AVJ=AJ**2+VJ**2
34350               NCHN=NCHN+1
34351               ISIG(NCHN,1)=I
34352               ISIG(NCHN,2)=J
34353               ISIG(NCHN,3)=1
34354               SIGH(NCHN)=0.5D0*FACZZ*AVI*AVJ
34355   200       CONTINUE
34356   210     CONTINUE
34357   220     CONTINUE
34358  
34359         ELSEIF(ISUB.EQ.72) THEN
34360 C...Z0 + Z0 -> W+ + W-
34361           IF(SH.LE.4.01D0*SQMZ) GOTO 250
34362  
34363           IF(MSTP(46).LE.2) THEN
34364 C...Exact scattering ME:s for on-mass-shell gauge bosons
34365             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
34366             CTH2=CTH**2
34367             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
34368             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
34369             IF(MAX(TH,UH).GT.-1D0) GOTO 250
34370             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
34371      &      (1D0-2D0*SQMZ/SH)
34372             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
34373             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
34374             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
34375      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
34376      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
34377      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
34378      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
34379             ATWIM=0D0
34380             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
34381      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
34382      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
34383      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
34384      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
34385             AUWIM=0D0
34386             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
34387             A4IM=0D0
34388             FACWW=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
34389      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
34390             IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2)
34391             IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+
34392      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
34393             IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+
34394      &      (ATWIM+AUWIM+A4IM)**2)
34395  
34396           ELSE
34397 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
34398             FACWW=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
34399      &      ABS(A00U-A20U)**2
34400           ENDIF
34401           FACWW=FACWW*WIDS(24,1)
34402  
34403           DO 240 I=MMIN1,MMAX1
34404             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240
34405             EI=KCHG(IABS(I),1)/3D0
34406             AI=SIGN(1D0,EI)
34407             VI=AI-4D0*EI*XWV
34408             AVI=AI**2+VI**2
34409             DO 230 J=MMIN2,MMAX2
34410               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230
34411               EJ=KCHG(IABS(J),1)/3D0
34412               AJ=SIGN(1D0,EJ)
34413               VJ=AJ-4D0*EJ*XWV
34414               AVJ=AJ**2+VJ**2
34415               NCHN=NCHN+1
34416               ISIG(NCHN,1)=I
34417               ISIG(NCHN,2)=J
34418               ISIG(NCHN,3)=1
34419               SIGH(NCHN)=FACWW*AVI*AVJ
34420   230       CONTINUE
34421   240     CONTINUE
34422   250     CONTINUE
34423  
34424         ELSEIF(ISUB.EQ.73) THEN
34425 C...Z0 + W+/- -> Z0 + W+/-
34426           IF(SH.LE.2D0*SQMZ+2D0*SQMW) GOTO 280
34427  
34428           IF(MSTP(46).LE.2) THEN
34429 C...Exact scattering ME:s for on-mass-shell gauge bosons
34430             BE2=1D0-2D0*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2
34431             EP1=1D0-(SQMZ-SQMW)/SH
34432             EP2=1D0+(SQMZ-SQMW)/SH
34433             TH=-0.5D0*SH*BE2*(1D0-CTH)
34434             UH=(SQMZ-SQMW)**2/SH-0.5D0*SH*BE2*(1D0+CTH)
34435             IF(MAX(TH,UH).GT.-1D0) GOTO 280
34436             THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH)
34437             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
34438             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
34439             ASWRE=-XW1/SQMZ*SH/(SH-SQMW)*(-BE2*(EP1+EP2)**4*CTH+
34440      &      1D0/4D0*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4D0*BE2*CTH)+
34441      &      2D0*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH-
34442      &      1D0/16D0*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)
34443             ASWIM=0D0
34444             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-BE2*(EP2+EP1*CTH)*
34445      &      (EP1+EP2*CTH)*(BE2+EP1*EP2)+BE2*(EP2+EP1*CTH)*
34446      &      (BE2+EP1*EP2*CTH)*(2D0*EP2-EP2*CTH+EP1)-
34447      &      BE2*(EP2+EP1*CTH)**2*(BE2-EP2**2*CTH)-1D0/8D0*
34448      &      (BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+
34449      &      1D0/32D0*SH/SQMW*(BE2+EP1*EP2*CTH)**2*
34450      &      (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)*
34451      &      (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)*
34452      &      (2D0*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2*
34453      &      (BE2-EP1**2*CTH)-1D0/8D0*(BE2+EP1*EP2*CTH)**2*
34454      &      ((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+1D0/32D0*SH/SQMW*
34455      &      (BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2)
34456             AUWIM=0D0
34457             A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1D0)-
34458      &      2D0*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2D0*BE2*EP1*EP2)
34459             A4IM=0D0
34460             FACZW=COMFAC*1D0/(4096D0*PARU(1)**2*4D0*XW1)*(AEM/XW)**4*
34461      &      (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2
34462             IF(MSTP(46).LE.0) FACZW=0D0
34463             IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+
34464      &      (ATHIM+ASWIM+AUWIM+A4IM)**2)
34465             IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+
34466      &      (ASWIM+AUWIM+A4IM)**2)
34467  
34468           ELSE
34469 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
34470             FACZW=COMFAC*AEM**2/(64D0*PARU(1)**2*XW**2*XW1)*16D0*
34471      &      ABS(A20U+3D0*A11U*DBLE(CTH))**2
34472           ENDIF
34473           FACZW=FACZW*WIDS(23,2)
34474  
34475           DO 270 I=MMIN1,MMAX1
34476             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 270
34477             EI=KCHG(IABS(I),1)/3D0
34478             AI=SIGN(1D0,EI)
34479             VI=AI-4D0*EI*XWV
34480             AVI=AI**2+VI**2
34481             KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I))
34482             DO 260 J=MMIN2,MMAX2
34483               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 260
34484               EJ=KCHG(IABS(J),1)/3D0
34485               AJ=SIGN(1D0,EJ)
34486               VJ=AI-4D0*EJ*XWV
34487               AVJ=AJ**2+VJ**2
34488               KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J))
34489               NCHN=NCHN+1
34490               ISIG(NCHN,1)=I
34491               ISIG(NCHN,2)=J
34492               ISIG(NCHN,3)=1
34493               SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2)
34494               NCHN=NCHN+1
34495               ISIG(NCHN,1)=I
34496               ISIG(NCHN,2)=J
34497               ISIG(NCHN,3)=2
34498               SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ
34499   260       CONTINUE
34500   270     CONTINUE
34501   280     CONTINUE
34502  
34503         ELSEIF(ISUB.EQ.75) THEN
34504 C...W+ + W- -> gamma + gamma
34505  
34506         ELSEIF(ISUB.EQ.76) THEN
34507 C...W+ + W- -> Z0 + Z0
34508           IF(SH.LE.4.01D0*SQMZ) GOTO 310
34509  
34510           IF(MSTP(46).LE.2) THEN
34511 C...Exact scattering ME:s for on-mass-shell gauge bosons
34512             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
34513             CTH2=CTH**2
34514             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
34515             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
34516             IF(MAX(TH,UH).GT.-1D0) GOTO 310
34517             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
34518      &      (1D0-2D0*SQMZ/SH)
34519             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
34520             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
34521             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
34522      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
34523      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
34524      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
34525      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
34526             ATWIM=0D0
34527             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
34528      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
34529      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
34530      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
34531      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
34532             AUWIM=0D0
34533             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
34534             A4IM=0D0
34535             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
34536      &      (SH/SQMW)**2*SH2
34537             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
34538             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+
34539      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
34540             IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+
34541      &      (ATWIM+AUWIM+A4IM)**2)
34542  
34543           ELSE
34544 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
34545             FACZZ=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
34546      &      ABS(A00U-A20U)**2
34547           ENDIF
34548           FACZZ=FACZZ*WIDS(23,1)
34549  
34550           DO 300 I=MMIN1,MMAX1
34551             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 300
34552             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
34553             DO 290 J=MMIN2,MMAX2
34554               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 290
34555               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
34556               IF(EI*EJ.GT.0D0) GOTO 290
34557               NCHN=NCHN+1
34558               ISIG(NCHN,1)=I
34559               ISIG(NCHN,2)=J
34560               ISIG(NCHN,3)=1
34561               SIGH(NCHN)=0.5D0*FACZZ*VINT(180+I)*VINT(180+J)
34562   290       CONTINUE
34563   300     CONTINUE
34564   310     CONTINUE
34565  
34566         ELSEIF(ISUB.EQ.77) THEN
34567 C...W+/- + W+/- -> W+/- + W+/-
34568           IF(SH.LE.4.01D0*SQMW) GOTO 340
34569  
34570           IF(MSTP(46).LE.2) THEN
34571 C...Exact scattering ME:s for on-mass-shell gauge bosons
34572             BE2=1D0-4D0*SQMW/SH
34573             BE4=BE2**2
34574             CTH2=CTH**2
34575             CTH3=CTH**3
34576             TH=-0.5D0*SH*BE2*(1D0-CTH)
34577             UH=-0.5D0*SH*BE2*(1D0+CTH)
34578             IF(MAX(TH,UH).GT.-1D0) GOTO 340
34579             SHANG=(1D0+BE2)**2
34580             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
34581             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
34582             THANG=(BE2-CTH)**2
34583             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
34584             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
34585             UHANG=(BE2+CTH)**2
34586             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
34587             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
34588             SGZANG=1D0/SQMW*BE2*(3D0-BE2)**2*CTH
34589             ASGRE=XW*SGZANG
34590             ASGIM=0D0
34591             ASZRE=XW1*SH/(SH-SQMZ)*SGZANG
34592             ASZIM=0D0
34593             TGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)+BE2*(4D0-10D0*BE2+
34594      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2+BE2*CTH3)
34595             ATGRE=0.5D0*XW*SH/TH*TGZANG
34596             ATGIM=0D0
34597             ATZRE=0.5D0*XW1*SH/(TH-SQMZ)*TGZANG
34598             ATZIM=0D0
34599             UGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)-BE2*(4D0-10D0*BE2+
34600      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2-BE2*CTH3)
34601             AUGRE=0.5D0*XW*SH/UH*UGZANG
34602             AUGIM=0D0
34603             AUZRE=0.5D0*XW1*SH/(UH-SQMZ)*UGZANG
34604             AUZIM=0D0
34605             A4ARE=1D0/SQMW*(1D0+2D0*BE2-6D0*BE2*CTH-CTH2)
34606             A4AIM=0D0
34607             A4SRE=2D0/SQMW*(1D0+2D0*BE2-CTH2)
34608             A4SIM=0D0
34609             FWW=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
34610      &      (SH/SQMW)**2*SH2
34611             IF(MSTP(46).LE.0) THEN
34612               AWWARE=ASHRE
34613               AWWAIM=ASHIM
34614               AWWSRE=0D0
34615               AWWSIM=0D0
34616             ELSEIF(MSTP(46).EQ.1) THEN
34617               AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
34618               AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
34619               AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
34620               AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
34621             ELSE
34622               AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
34623               AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
34624               AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
34625               AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
34626             ENDIF
34627             AWWA2=AWWARE**2+AWWAIM**2
34628             AWWS2=AWWSRE**2+AWWSIM**2
34629  
34630           ELSE
34631 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
34632             FWWA=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
34633      &      ABS(A00U+0.5D0*A20U+4.5D0*A11U*DBLE(CTH))**2
34634             FWWS=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*64D0*ABS(A20U)**2
34635           ENDIF
34636  
34637           DO 330 I=MMIN1,MMAX1
34638             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 330
34639             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
34640             DO 320 J=MMIN2,MMAX2
34641               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 320
34642               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
34643               IF(EI*EJ.LT.0D0) THEN
34644 C...W+W-
34645                 IF(MSTP(45).EQ.1) GOTO 320
34646                 IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1)
34647                 IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1)
34648               ELSE
34649 C...W+W+/W-W-
34650                 IF(MSTP(45).EQ.2) GOTO 320
34651                 IF(MSTP(46).LE.2) FACWW=FWW*AWWS2
34652                 IF(MSTP(46).GE.3) FACWW=FWWS
34653                 IF(EI.GT.0D0) FACWW=FACWW*WIDS(24,4)
34654                 IF(EI.LT.0D0) FACWW=FACWW*WIDS(24,5)
34655               ENDIF
34656               NCHN=NCHN+1
34657               ISIG(NCHN,1)=I
34658               ISIG(NCHN,2)=J
34659               ISIG(NCHN,3)=1
34660               SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J)
34661               IF(EI*EJ.GT.0D0) SIGH(NCHN)=0.5D0*SIGH(NCHN)
34662   320       CONTINUE
34663   330     CONTINUE
34664   340     CONTINUE
34665         ENDIF
34666  
34667       ELSEIF(ISUB.LE.120) THEN
34668         IF(ISUB.EQ.102) THEN
34669 C...g + g -> h0 (or H0, or A0)
34670           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34671           HS=SHR*WDTP(0)
34672           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34673           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
34674           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34675      &    FACBW=0D0
34676 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
34677           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
34678             WDTP13=0D0
34679             DO 345 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
34680               IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
34681      &            KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
34682  345        CONTINUE
34683             IF(WDTP13.EQ.0D0) CALL PYERRM(26,
34684      &          '(PYSGHG:) did not find Higgs -> g g channel')  
34685             HI=SHR*WDTP13/32D0
34686           ELSE
34687             HI=SHR*WDTP(13)/32D0 
34688           ENDIF
34689           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 350
34690           NCHN=NCHN+1
34691           ISIG(NCHN,1)=21
34692           ISIG(NCHN,2)=21
34693           ISIG(NCHN,3)=1
34694           SIGH(NCHN)=HI*FACBW*HF
34695   350     CONTINUE
34696  
34697         ELSEIF(ISUB.EQ.103) THEN
34698 C...gamma + gamma -> h0 (or H0, or A0)
34699           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34700           HS=SHR*WDTP(0)
34701           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34702           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
34703           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34704      &    FACBW=0D0
34705 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
34706           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
34707             WDTP14=0D0
34708             DO 355 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
34709               IF(KFDP(IDC,1).EQ.22.AND.KFDP(IDC,2).EQ.22.AND.
34710      &            KFDP(IDC,3).EQ.0) WDTP14=PMAS(KFHIGG,2)*BRAT(IDC)
34711  355        CONTINUE
34712             IF(WDTP14.EQ.0D0) CALL PYERRM(26,
34713      &          '(PYSGHG:) did not find Higgs -> gamma gamma channel') 
34714             HI=SHR*WDTP14*2D0
34715           ELSE
34716             HI=SHR*WDTP(14)*2D0
34717           ENDIF
34718           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 360
34719           NCHN=NCHN+1
34720           ISIG(NCHN,1)=22
34721           ISIG(NCHN,2)=22
34722           ISIG(NCHN,3)=1
34723           SIGH(NCHN)=HI*FACBW*HF
34724   360     CONTINUE
34725  
34726         ELSEIF(ISUB.EQ.110) THEN
34727 C...f + fbar -> gamma + h0
34728           THUH=MAX(TH*UH,SH*CKIN(3)**2)
34729           FACHG=COMFAC*(3D0*AEM**4)/(2D0*PARU(1)**2*XW*SQMW)*SH*THUH
34730           FACHG=FACHG*WIDS(KFHIGG,2)
34731 C...Calculate loop contributions for intermediate gamma* and Z0
34732           CIGTOT=DCMPLX(0D0,0D0)
34733           CIZTOT=DCMPLX(0D0,0D0)
34734           JMAX=3*MSTP(1)+1
34735           DO 370 J=1,JMAX
34736             IF(J.LE.2*MSTP(1)) THEN
34737               FNC=1D0
34738               EJ=KCHG(J,1)/3D0
34739               AJ=SIGN(1D0,EJ+0.1D0)
34740               VJ=AJ-4D0*EJ*XWV
34741               BALP=SQM4/(2D0*PMAS(J,1))**2
34742               BBET=SH/(2D0*PMAS(J,1))**2
34743             ELSEIF(J.LE.3*MSTP(1)) THEN
34744               FNC=3D0
34745               JL=2*(J-2*MSTP(1))-1
34746               EJ=KCHG(10+JL,1)/3D0
34747               AJ=SIGN(1D0,EJ+0.1D0)
34748               VJ=AJ-4D0*EJ*XWV
34749               BALP=SQM4/(2D0*PMAS(10+JL,1))**2
34750               BBET=SH/(2D0*PMAS(10+JL,1))**2
34751             ELSE
34752               BALP=SQM4/(2D0*PMAS(24,1))**2
34753               BBET=SH/(2D0*PMAS(24,1))**2
34754             ENDIF
34755             BABI=1D0/(BALP-BBET)
34756             IF(BALP.LT.1D0) THEN
34757               F0ALP=DCMPLX(DBLE(ASIN(SQRT(BALP))),0D0)
34758               F1ALP=F0ALP**2
34759             ELSE
34760               F0ALP=DCMPLX(DBLE(LOG(SQRT(BALP)+SQRT(BALP-1D0))),
34761      &        -DBLE(0.5D0*PARU(1)))
34762               F1ALP=-F0ALP**2
34763             ENDIF
34764             F2ALP=DBLE(SQRT(ABS(BALP-1D0)/BALP))*F0ALP
34765             IF(BBET.LT.1D0) THEN
34766               F0BET=DCMPLX(DBLE(ASIN(SQRT(BBET))),0D0)
34767               F1BET=F0BET**2
34768             ELSE
34769               F0BET=DCMPLX(DBLE(LOG(SQRT(BBET)+SQRT(BBET-1D0))),
34770      &        -DBLE(0.5D0*PARU(1)))
34771               F1BET=-F0BET**2
34772             ENDIF
34773             F2BET=DBLE(SQRT(ABS(BBET-1D0)/BBET))*F0BET
34774             IF(J.LE.3*MSTP(1)) THEN
34775               FIF=DBLE(0.5D0*BABI)+DBLE(BABI**2)*(DBLE(0.5D0*(1D0-BALP+
34776      &        BBET))*(F1BET-F1ALP)+DBLE(BBET)*(F2BET-F2ALP))
34777               CIGTOT=CIGTOT+DBLE(FNC*EJ**2)*FIF
34778               CIZTOT=CIZTOT+DBLE(FNC*EJ*VJ)*FIF
34779             ELSE
34780               TXW=XW/XW1
34781               CIGTOT=CIGTOT-0.5*(DBLE(BABI*(1.5D0+BALP))+DBLE(BABI**2)*
34782      &        (DBLE(1.5D0-3D0*BALP+4D0*BBET)*(F1BET-F1ALP)+
34783      &        DBLE(BBET*(2D0*BALP+3D0))*(F2BET-F2ALP)))
34784               CIZTOT=CIZTOT-DBLE(0.5D0*BABI*XW1)*(DBLE(5D0-TXW+2D0*BALP*
34785      &        (1D0-TXW))*(1D0+DBLE(2D0*BABI*BBET)*(F2BET-F2ALP))+
34786      &        DBLE(BABI*(4D0*BBET*(3D0-TXW)-(2D0*BALP-1D0)*(5D0-TXW)))*
34787      &        (F1BET-F1ALP))
34788             ENDIF
34789   370     CONTINUE
34790           CIGTOT=CIGTOT/DBLE(SH)
34791           CIZTOT=CIZTOT*DBLE(XWC)/DCMPLX(DBLE(SH-SQMZ),DBLE(GMMZ))
34792 C...Loop over initial flavours
34793           DO 380 I=MMINA,MMAXA
34794             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
34795             EI=KCHG(IABS(I),1)/3D0
34796             AI=SIGN(1D0,EI)
34797             VI=AI-4D0*EI*XWV
34798             FCOI=1D0
34799             IF(IABS(I).LE.10) FCOI=FACA/3D0
34800             NCHN=NCHN+1
34801             ISIG(NCHN,1)=I
34802             ISIG(NCHN,2)=-I
34803             ISIG(NCHN,3)=1
34804             SIGH(NCHN)=FACHG*FCOI*(ABS(DBLE(EI)*CIGTOT+DBLE(VI)*
34805      &      CIZTOT)**2+AI**2*ABS(CIZTOT)**2)
34806   380     CONTINUE
34807  
34808         ELSEIF(ISUB.EQ.111) THEN
34809 C...f + fbar -> g + h0 (q + qbar -> g + h0 only)
34810           IF(MSTP(38).NE.0) THEN
34811 C...Simple case: only do gg <-> h exactly.
34812           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
34813 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
34814           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
34815             WDTP13=0D0
34816             DO 385 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
34817               IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
34818      &            KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
34819  385        CONTINUE
34820             IF(WDTP13.EQ.0D0) CALL PYERRM(26,
34821      &          '(PYSGHG:) did not find Higgs -> g g channel')  
34822             FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP13/SQRT(SQM4))*
34823      &          (TH**2+UH**2)/(SH*SQM4)
34824           ELSE
34825             FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP(13)/SQRT(SQM4))*
34826      &          (TH**2+UH**2)/(SH*SQM4)
34827           ENDIF
34828 C...Propagators: as simulated in PYOFSH and as desired
34829           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
34830           GMMHC=SQRT(SQM4)*WDTP(0)
34831           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
34832      &    ((SQM4-SQMH)**2+GMMHC**2)
34833           FACGH=FACGH*HBW4C/HBW4
34834           ELSE
34835 C...Messy case: do full loop integrals
34836           A5STUR=0D0
34837           A5STUI=0D0
34838           DO 390 I=1,2*MSTP(1)
34839             SQMQ=PMAS(I,1)**2
34840             EPSS=4D0*SQMQ/SH
34841             EPSH=4D0*SQMQ/SQMH
34842             CALL PYWAUX(1,EPSS,W1SR,W1SI)
34843             CALL PYWAUX(1,EPSH,W1HR,W1HI)
34844             CALL PYWAUX(2,EPSS,W2SR,W2SI)
34845             CALL PYWAUX(2,EPSH,W2HR,W2HI)
34846             A5STUR=A5STUR+EPSH*(1D0+SH/(TH+UH)*(W1SR-W1HR)+
34847      &      (0.25D0-SQMQ/(TH+UH))*(W2SR-W2HR))
34848             A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+
34849      &      (0.25D0-SQMQ/(TH+UH))*(W2SI-W2HI))
34850   390     CONTINUE
34851           FACGH=COMFAC*FACA/(144D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
34852      &    SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2)
34853           FACGH=FACGH*WIDS(25,2)
34854           ENDIF
34855           DO 400 I=MMINA,MMAXA
34856             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
34857      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
34858             NCHN=NCHN+1
34859             ISIG(NCHN,1)=I
34860             ISIG(NCHN,2)=-I
34861             ISIG(NCHN,3)=1
34862             SIGH(NCHN)=FACGH
34863   400     CONTINUE
34864  
34865         ELSEIF(ISUB.EQ.112) THEN
34866 C...f + g -> f + h0 (q + g -> q + h0 only)
34867           IF(MSTP(38).NE.0) THEN
34868 C...Simple case: only do gg <-> h exactly.
34869           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
34870 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
34871           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
34872             WDTP13=0D0
34873             DO 405 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
34874               IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
34875      &            KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
34876  405        CONTINUE
34877             IF(WDTP13.EQ.0D0) CALL PYERRM(26,
34878      &          '(PYSGHG:) did not find Higgs -> g g channel')  
34879             FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP13/SQRT(SQM4))*
34880      &          (SH**2+UH**2)/(-TH*SQM4)
34881           ELSE
34882             FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP(13)/SQRT(SQM4))*
34883      &          (SH**2+UH**2)/(-TH*SQM4)
34884           ENDIF
34885 C...Propagators: as simulated in PYOFSH and as desired
34886           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
34887           GMMHC=SQRT(SQM4)*WDTP(0)
34888           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
34889      &    ((SQM4-SQMH)**2+GMMHC**2)
34890           FACQH=FACQH*HBW4C/HBW4
34891           ELSE
34892 C...Messy case: do full loop integrals
34893           A5TSUR=0D0
34894           A5TSUI=0D0
34895           DO 410 I=1,2*MSTP(1)
34896             SQMQ=PMAS(I,1)**2
34897             EPST=4D0*SQMQ/TH
34898             EPSH=4D0*SQMQ/SQMH
34899             CALL PYWAUX(1,EPST,W1TR,W1TI)
34900             CALL PYWAUX(1,EPSH,W1HR,W1HI)
34901             CALL PYWAUX(2,EPST,W2TR,W2TI)
34902             CALL PYWAUX(2,EPSH,W2HR,W2HI)
34903             A5TSUR=A5TSUR+EPSH*(1D0+TH/(SH+UH)*(W1TR-W1HR)+
34904      &      (0.25D0-SQMQ/(SH+UH))*(W2TR-W2HR))
34905             A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+
34906      &      (0.25D0-SQMQ/(SH+UH))*(W2TI-W2HI))
34907   410     CONTINUE
34908           FACQH=COMFAC*FACA/(384D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
34909      &    SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2)
34910           FACQH=FACQH*WIDS(25,2)
34911           ENDIF
34912           DO 430 I=MMINA,MMAXA
34913             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
34914             DO 420 ISDE=1,2
34915               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 420
34916               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 420
34917               NCHN=NCHN+1
34918               ISIG(NCHN,ISDE)=I
34919               ISIG(NCHN,3-ISDE)=21
34920               ISIG(NCHN,3)=1
34921               SIGH(NCHN)=FACQH
34922   420       CONTINUE
34923   430     CONTINUE
34924  
34925         ELSEIF(ISUB.EQ.113) THEN
34926 C...g + g -> g + h0
34927           IF(MSTP(38).NE.0) THEN
34928 C...Simple case: only do gg <-> h exactly.
34929           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
34930 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
34931           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
34932             WDTP13=0D0
34933             DO 435 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
34934               IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
34935      &            KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
34936  435        CONTINUE
34937             IF(WDTP13.EQ.0D0) CALL PYERRM(26,
34938      &          '(PYSGHG:) did not find Higgs -> g g channel')  
34939             FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP13/SQRT(SQM4))*
34940      &          (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4)
34941           ELSE
34942             FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP(13)/SQRT(SQM4))*
34943      &          (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4)
34944           ENDIF
34945 C...Propagators: as simulated in PYOFSH and as desired
34946           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
34947           GMMHC=SQRT(SQM4)*WDTP(0)
34948           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
34949      &    ((SQM4-SQMH)**2+GMMHC**2)
34950           FACGH=FACGH*HBW4C/HBW4
34951           ELSE
34952 C...Messy case: do full loop integrals
34953           A2STUR=0D0
34954           A2STUI=0D0
34955           A2USTR=0D0
34956           A2USTI=0D0
34957           A2TUSR=0D0
34958           A2TUSI=0D0
34959           A4STUR=0D0
34960           A4STUI=0D0
34961           DO 440 I=1,2*MSTP(1)
34962             SQMQ=PMAS(I,1)**2
34963             EPSS=4D0*SQMQ/SH
34964             EPST=4D0*SQMQ/TH
34965             EPSU=4D0*SQMQ/UH
34966             EPSH=4D0*SQMQ/SQMH
34967             IF(EPSH.LT.1D-6) GOTO 440
34968             CALL PYWAUX(1,EPSS,W1SR,W1SI)
34969             CALL PYWAUX(1,EPST,W1TR,W1TI)
34970             CALL PYWAUX(1,EPSU,W1UR,W1UI)
34971             CALL PYWAUX(1,EPSH,W1HR,W1HI)
34972             CALL PYWAUX(2,EPSS,W2SR,W2SI)
34973             CALL PYWAUX(2,EPST,W2TR,W2TI)
34974             CALL PYWAUX(2,EPSU,W2UR,W2UI)
34975             CALL PYWAUX(2,EPSH,W2HR,W2HI)
34976             CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
34977             CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
34978             CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
34979             CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
34980             CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
34981             CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
34982             CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI)
34983             CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI)
34984             CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI)
34985             CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI)
34986             CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI)
34987             CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI)
34988             W3STUR=YHSTUR-Y3STUR-Y3UTSR
34989             W3STUI=YHSTUI-Y3STUI-Y3UTSI
34990             W3SUTR=YHSUTR-Y3SUTR-Y3TUSR
34991             W3SUTI=YHSUTI-Y3SUTI-Y3TUSI
34992             W3TSUR=YHTSUR-Y3TSUR-Y3USTR
34993             W3TSUI=YHTSUI-Y3TSUI-Y3USTI
34994             W3TUSR=YHTUSR-Y3TUSR-Y3SUTR
34995             W3TUSI=YHTUSI-Y3TUSI-Y3SUTI
34996             W3USTR=YHUSTR-Y3USTR-Y3TSUR
34997             W3USTI=YHUSTI-Y3USTI-Y3TSUI
34998             W3UTSR=YHUTSR-Y3UTSR-Y3STUR
34999             W3UTSI=YHUTSI-Y3UTSI-Y3STUI
35000             B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2D0*TH*UH*
35001      &      (UH+2D0*SH)/(SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4D0)*
35002      &      (0.5D0*W2SR+0.5D0*W2HR-W2TR+W3STUR)+SH2*(2D0*SQMQ/
35003      &      (SH+UH)**2-0.5D0/(SH+UH))*(W2TR-W2HR)+0.5D0*TH*UH/SH*
35004      &      (W2HR-2D0*W2TR)+0.125D0*(SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUR)
35005             B2STUI=SQMQ/SQMH**2*(2D0*TH*UH*(UH+2D0*SH)/(SH+UH)**2*
35006      &      (W1TI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2TI+
35007      &      W3STUI)+SH2*(2D0*SQMQ/(SH+UH)**2-0.5D0/(SH+UH))*
35008      &      (W2TI-W2HI)+0.5D0*TH*UH/SH*(W2HI-2D0*W2TI)+0.125D0*
35009      &      (SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUI)
35010             B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2D0*UH*TH*
35011      &      (TH+2D0*SH)/(SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4D0)*
35012      &      (0.5D0*W2SR+0.5D0*W2HR-W2UR+W3SUTR)+SH2*(2D0*SQMQ/
35013      &      (SH+TH)**2-0.5D0/(SH+TH))*(W2UR-W2HR)+0.5D0*UH*TH/SH*
35014      &      (W2HR-2D0*W2UR)+0.125D0*(SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTR)
35015             B2SUTI=SQMQ/SQMH**2*(2D0*UH*TH*(TH+2D0*SH)/(SH+TH)**2*
35016      &      (W1UI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2UI+
35017      &      W3SUTI)+SH2*(2D0*SQMQ/(SH+TH)**2-0.5D0/(SH+TH))*
35018      &      (W2UI-W2HI)+0.5D0*UH*TH/SH*(W2HI-2D0*W2UI)+0.125D0*
35019      &      (SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTI)
35020             B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2D0*SH*UH*
35021      &      (UH+2D0*TH)/(TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4D0)*
35022      &      (0.5D0*W2TR+0.5D0*W2HR-W2SR+W3TSUR)+TH2*(2D0*SQMQ/
35023      &      (TH+UH)**2-0.5D0/(TH+UH))*(W2SR-W2HR)+0.5D0*SH*UH/TH*
35024      &      (W2HR-2D0*W2SR)+0.125D0*(TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUR)
35025             B2TSUI=SQMQ/SQMH**2*(2D0*SH*UH*(UH+2D0*TH)/(TH+UH)**2*
35026      &      (W1SI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2SI+
35027      &      W3TSUI)+TH2*(2D0*SQMQ/(TH+UH)**2-0.5D0/(TH+UH))*
35028      &      (W2SI-W2HI)+0.5D0*SH*UH/TH*(W2HI-2D0*W2SI)+0.125D0*
35029      &      (TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUI)
35030             B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2D0*UH*SH*
35031      &      (SH+2D0*TH)/(TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4D0)*
35032      &      (0.5D0*W2TR+0.5D0*W2HR-W2UR+W3TUSR)+TH2*(2D0*SQMQ/
35033      &      (TH+SH)**2-0.5D0/(TH+SH))*(W2UR-W2HR)+0.5D0*UH*SH/TH*
35034      &      (W2HR-2D0*W2UR)+0.125D0*(TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSR)
35035             B2TUSI=SQMQ/SQMH**2*(2D0*UH*SH*(SH+2D0*TH)/(TH+SH)**2*
35036      &      (W1UI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2UI+
35037      &      W3TUSI)+TH2*(2D0*SQMQ/(TH+SH)**2-0.5D0/(TH+SH))*
35038      &      (W2UI-W2HI)+0.5D0*UH*SH/TH*(W2HI-2D0*W2UI)+0.125D0*
35039      &      (TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSI)
35040             B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2D0*SH*TH*
35041      &      (TH+2D0*UH)/(UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4D0)*
35042      &      (0.5D0*W2UR+0.5D0*W2HR-W2SR+W3USTR)+UH2*(2D0*SQMQ/
35043      &      (UH+TH)**2-0.5D0/(UH+TH))*(W2SR-W2HR)+0.5D0*SH*TH/UH*
35044      &      (W2HR-2D0*W2SR)+0.125D0*(UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTR)
35045             B2USTI=SQMQ/SQMH**2*(2D0*SH*TH*(TH+2D0*UH)/(UH+TH)**2*
35046      &      (W1SI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2SI+
35047      &      W3USTI)+UH2*(2D0*SQMQ/(UH+TH)**2-0.5D0/(UH+TH))*
35048      &      (W2SI-W2HI)+0.5D0*SH*TH/UH*(W2HI-2D0*W2SI)+0.125D0*
35049      &      (UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTI)
35050             B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2D0*TH*SH*
35051      &      (SH+2D0*UH)/(UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4D0)*
35052      &      (0.5D0*W2UR+0.5D0*W2HR-W2TR+W3UTSR)+UH2*(2D0*SQMQ/
35053      &      (UH+SH)**2-0.5D0/(UH+SH))*(W2TR-W2HR)+0.5D0*TH*SH/UH*
35054      &      (W2HR-2D0*W2TR)+0.125D0*(UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSR)
35055             B2UTSI=SQMQ/SQMH**2*(2D0*TH*SH*(SH+2D0*UH)/(UH+SH)**2*
35056      &      (W1TI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2TI+
35057      &      W3UTSI)+UH2*(2D0*SQMQ/(UH+SH)**2-0.5D0/(UH+SH))*
35058      &      (W2TI-W2HI)+0.5D0*TH*SH/UH*(W2HI-2D0*W2TI)+0.125D0*
35059      &      (UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSI)
35060             B4STUR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
35061      &      (W2SR-W2HR+W3STUR))
35062             B4STUI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2SI-W2HI+W3STUI)
35063             B4TUSR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
35064      &      (W2TR-W2HR+W3TUSR))
35065             B4TUSI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2TI-W2HI+W3TUSI)
35066             B4USTR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
35067      &      (W2UR-W2HR+W3USTR))
35068             B4USTI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2UI-W2HI+W3USTI)
35069             A2STUR=A2STUR+B2STUR+B2SUTR
35070             A2STUI=A2STUI+B2STUI+B2SUTI
35071             A2USTR=A2USTR+B2USTR+B2UTSR
35072             A2USTI=A2USTI+B2USTI+B2UTSI
35073             A2TUSR=A2TUSR+B2TUSR+B2TSUR
35074             A2TUSI=A2TUSI+B2TUSI+B2TSUI
35075             A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR
35076             A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI
35077   440     CONTINUE
35078           FACGH=COMFAC*FACA*3D0/(128D0*PARU(1)**2)*AEM/XW*AS**3*
35079      &    SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+
35080      &    A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2)
35081           FACGH=FACGH*WIDS(25,2)
35082           ENDIF
35083           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 450
35084           NCHN=NCHN+1
35085           ISIG(NCHN,1)=21
35086           ISIG(NCHN,2)=21
35087           ISIG(NCHN,3)=1
35088           SIGH(NCHN)=FACGH
35089   450     CONTINUE
35090         ENDIF
35091  
35092       ELSEIF(ISUB.LE.170) THEN
35093         IF(ISUB.EQ.121) THEN
35094 C...g + g -> Q + Qbar + h0
35095           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 460
35096           IA=KFPR(ISUBSV,2)
35097           PMF=PYMRUN(IA,SH)
35098           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
35099      &    (0.5D0*PMF/PMAS(24,1))**2
35100           WID2=1D0
35101           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
35102           FACQQH=FACQQH*WID2
35103           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
35104             IKFI=1
35105             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
35106             IF(IA.GT.10) IKFI=3
35107             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
35108             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
35109               FACQQH=FACQQH/(1D0+RMSS(41))**2
35110               IF(IHIGG.NE.3) THEN
35111                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
35112      &          PARU(151+10*IHIGG))**2
35113               ENDIF
35114             ENDIF
35115           ENDIF
35116           CALL PYQQBH(WTQQBH)
35117           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
35118           HS=SHR*WDTP(0)
35119           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35120           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
35121           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
35122      &    FACBW=0D0
35123           NCHN=NCHN+1
35124           ISIG(NCHN,1)=21
35125           ISIG(NCHN,2)=21
35126           ISIG(NCHN,3)=1
35127           SIGH(NCHN)=FACQQH*WTQQBH*FACBW
35128   460     CONTINUE
35129  
35130         ELSEIF(ISUB.EQ.122) THEN
35131 C...q + qbar -> Q + Qbar + h0
35132           IA=KFPR(ISUBSV,2)
35133           PMF=PYMRUN(IA,SH)
35134           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
35135      &    (0.5D0*PMF/PMAS(24,1))**2
35136           WID2=1D0
35137           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
35138           FACQQH=FACQQH*WID2
35139           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
35140             IKFI=1
35141             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
35142             IF(IA.GT.10) IKFI=3
35143             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
35144             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
35145               FACQQH=FACQQH/(1D0+RMSS(41))**2
35146               IF(IHIGG.NE.3) THEN
35147                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
35148      &          PARU(151+10*IHIGG))**2
35149               ENDIF
35150             ENDIF
35151           ENDIF
35152           CALL PYQQBH(WTQQBH)
35153           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
35154           HS=SHR*WDTP(0)
35155           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35156           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
35157           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
35158      &    FACBW=0D0
35159           DO 470 I=MMINA,MMAXA
35160             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
35161      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 470
35162             NCHN=NCHN+1
35163             ISIG(NCHN,1)=I
35164             ISIG(NCHN,2)=-I
35165             ISIG(NCHN,3)=1
35166             SIGH(NCHN)=FACQQH*WTQQBH*FACBW
35167   470     CONTINUE
35168  
35169         ELSEIF(ISUB.EQ.123) THEN
35170 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
35171 C...inner process)
35172           FACNOR=COMFAC*(4D0*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32D0
35173           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
35174      &    PARU(154+10*IHIGG)**2
35175           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
35176      &    (VINT(216)-VINT(209)**2))**2
35177           FACZZ1=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
35178           FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218)
35179           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
35180           HS=SHR*WDTP(0)
35181           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35182           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
35183           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
35184      &    FACBW=0D0
35185           DO 490 I=MMIN1,MMAX1
35186             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 490
35187             IA=IABS(I)
35188             DO 480 J=MMIN2,MMAX2
35189               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 480
35190               JA=IABS(J)
35191               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
35192               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
35193               VI=AI-4D0*EI*XWV
35194               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
35195               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
35196               VJ=AJ-4D0*EJ*XWV
35197               FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4D0*VI*AI*VJ*AJ
35198               FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4D0*VI*AI*VJ*AJ
35199               NCHN=NCHN+1
35200               ISIG(NCHN,1)=I
35201               ISIG(NCHN,2)=J
35202               ISIG(NCHN,3)=1
35203               SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW
35204   480       CONTINUE
35205   490     CONTINUE
35206  
35207         ELSEIF(ISUB.EQ.124) THEN
35208 C...f + f' -> f" + f"' + h0 (or H0, or A0) (W+ + W- -> h0 as
35209 C...inner process)
35210           FACNOR=COMFAC*(4D0*PARU(1)*AEM/XW)**3*SQMW
35211           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
35212      &    PARU(155+10*IHIGG)**2
35213           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
35214      &    (VINT(216)-VINT(209)**2))**2
35215           FACWW=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
35216           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
35217           HS=SHR*WDTP(0)
35218           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
35219           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
35220           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
35221      &    FACBW=0D0
35222           DO 510 I=MMIN1,MMAX1
35223             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 510
35224             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
35225             DO 500 J=MMIN2,MMAX2
35226               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 500
35227               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
35228               IF(EI*EJ.GT.0D0) GOTO 500
35229               FACLR=VINT(180+I)*VINT(180+J)
35230               NCHN=NCHN+1
35231               ISIG(NCHN,1)=I
35232               ISIG(NCHN,2)=J
35233               ISIG(NCHN,3)=1
35234               SIGH(NCHN)=FACLR*FACWW*FACBW
35235   500       CONTINUE
35236   510     CONTINUE
35237  
35238         ELSEIF(ISUB.EQ.143) THEN
35239 C...f + fbar' -> H+/-
35240           SQMHC=PMAS(37,1)**2
35241           CALL PYWIDT(37,SH,WDTP,WDTE)
35242           HS=SHR*WDTP(0)
35243           FACBW=4D0*COMFAC/((SH-SQMHC)**2+HS**2)
35244           HP=AEM/(8D0*XW)*SH/SQMW*SH
35245           DO 530 I=MMIN1,MMAX1
35246             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 530
35247             IA=IABS(I)
35248             IM=(MOD(IA,10)+1)/2
35249             DO 520 J=MMIN2,MMAX2
35250               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 520
35251               JA=IABS(J)
35252               JM=(MOD(JA,10)+1)/2
35253               IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 520
35254               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
35255      &        GOTO 520
35256               IF(MOD(IA,2).EQ.0) THEN
35257                 IU=IA
35258                 IL=JA
35259               ELSE
35260                 IU=JA
35261                 IL=IA
35262               ENDIF
35263               RML=PYMRUN(IL,SH)**2/SH
35264               RMU=PYMRUN(IU,SH)**2/SH
35265               HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2)
35266               IF(IA.LE.10) HI=HI*FACA/3D0
35267               KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
35268               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4))
35269               NCHN=NCHN+1
35270               ISIG(NCHN,1)=I
35271               ISIG(NCHN,2)=J
35272               ISIG(NCHN,3)=1
35273               SIGH(NCHN)=HI*FACBW*HF
35274   520       CONTINUE
35275   530     CONTINUE
35276  
35277         ELSEIF(ISUB.EQ.161) THEN
35278 C...f + g -> f' + H+/- (b + g -> t + H+/- only)
35279 C...(choice of only b and t to avoid kinematics problems)
35280           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24
35281 C...H propagator: as simulated in PYOFSH and as desired
35282           SQMHC=PMAS(37,1)**2
35283           GMMHC=PMAS(37,1)*PMAS(37,2)
35284           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
35285           CALL PYWIDT(37,SQM4,WDTP,WDTE)
35286           GMMHCC=SQRT(SQM4)*WDTP(0)
35287           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
35288           FHCQ=FHCQ*HBW4C/HBW4
35289           Q2RM=SH
35290           IF(MSTP(32).EQ.12) Q2RM=PARP(194)
35291           DO 550 I=MMINA,MMAXA
35292             IA=IABS(I)
35293             IF(IA.NE.5) GOTO 550
35294             SQML=PYMRUN(IA,Q2RM)**2
35295             IUA=IA+MOD(IA,2)
35296             SQMQ=PYMRUN(IUA,Q2RM)**2
35297             FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW*
35298      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH-
35299      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)*
35300      &      (SQMHC-SQMQ-SH)/SH)
35301             KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
35302             DO 540 ISDE=1,2
35303               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 540
35304               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 540
35305               NCHN=NCHN+1
35306               ISIG(NCHN,ISDE)=I
35307               ISIG(NCHN,3-ISDE)=21
35308               ISIG(NCHN,3)=1
35309               SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
35310               IF(IUA.EQ.6) SIGH(NCHN)=SIGH(NCHN)*WIDS(6,(5+KCHHC)/2)
35311   540       CONTINUE
35312   550     CONTINUE
35313         ENDIF
35314  
35315       ELSEIF(ISUB.LE.402) THEN
35316         IF(ISUB.EQ.401) THEN
35317 C...  g + g -> t + bbar + H-
35318           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 560
35319           IA=KFPR(ISUBSV,2)
35320           CALL PYSTBH(WTTBH)
35321           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
35322           HS=SHR*WDTP(0)
35323           FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2)
35324           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
35325      &       FACBW=0D0
35326           NCHN=NCHN+1
35327           ISIG(NCHN,1)=21
35328           ISIG(NCHN,2)=21
35329           ISIG(NCHN,3)=1
35330           SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW
35331 c     Since we don't know yet if H+ or H-, assume H+
35332 c     when calculating suppression due to closed channels.
35333           SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3)
35334           IF(ABS(WIDS(37,2)-WIDS(37,3))
35335      &       .GE.1D-6*(WIDS(37,2)+WIDS(37,3)).OR.
35336      &       ABS(WIDS(6,2)-WIDS(6,3))
35337      &       .GE.1D-6*(WIDS(6,2)+WIDS(6,3))) THEN
35338             WRITE(*,*)'Error: Process 401 cannot handle different'
35339             WRITE(*,*)'decays for H+ and H- or t and tbar.'
35340             WRITE(*,*)'Execution stopped.'
35341             CALL PYSTOP(108)
35342           END IF
35343  560      CONTINUE
35344  
35345         ELSEIF(ISUB.EQ.402) THEN
35346 C...  q + qbar -> t + bbar + H-
35347           IA=KFPR(ISUBSV,2)
35348           CALL PYSTBH(WTTBH)
35349           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
35350           HS=SHR*WDTP(0)
35351           FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2)
35352           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
35353      &       FACBW=0D0
35354           DO 570 I=MMINA,MMAXA
35355             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
35356      &         KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 570
35357             NCHN=NCHN+1
35358             ISIG(NCHN,1)=I
35359             ISIG(NCHN,2)=-I
35360             ISIG(NCHN,3)=1
35361             SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW
35362 c     Since we don't know yet if H+ or H-, assume H+
35363 c     when calculating suppression due to closed channels.
35364             SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3)
35365             IF(ABS(WIDS(37,2)-WIDS(37,3))/(WIDS(37,2)+WIDS(37,3))
35366      &         .GE.1D-6.OR.
35367      &         ABS(WIDS(6,2)-WIDS(6,3))/(WIDS(6,2)+WIDS(6,3))
35368      &         .GE.1D-6) THEN
35369               WRITE(*,*)'Error: Process 402 cannot handle different'
35370               WRITE(*,*)'decays for H+ and H- or t and tbar.'
35371               WRITE(*,*)'Execution stopped.'
35372               CALL PYSTOP(108)
35373             END IF
35374  570      CONTINUE
35375         ENDIF
35376       ENDIF
35377  
35378       RETURN
35379       END
35380  
35381 C*********************************************************************
35382  
35383 C...PYSGSU
35384 C...Subprocess cross sections for SUSY processes,
35385 C...including Higgs pair production.
35386 C...Auxiliary to PYSIGH.
35387  
35388       SUBROUTINE PYSGSU(NCHN,SIGS)
35389  
35390 C...Double precision and integer declarations
35391       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35392       IMPLICIT INTEGER(I-N)
35393       INTEGER PYK,PYCHGE,PYCOMP
35394 C...Parameter statement to help give large particle numbers.
35395       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
35396      &KEXCIT=4000000,KDIMEN=5000000)
35397 C...Commonblocks
35398       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35399       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
35400       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
35401       COMMON/PYINT1/MINT(400),VINT(400)
35402       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
35403       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
35404       COMMON/PYINT4/MWID(500),WIDS(500,5)
35405       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
35406       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
35407      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
35408       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
35409      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
35410      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
35411      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
35412       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
35413      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYSGCM/
35414 C...Local arrays and complex variables
35415       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
35416       COMPLEX*16 OLPP,ORPP,OLP,ORP,OL,OR,QLL,QLR
35417       COMPLEX*16 QRR,QRL,GLIJ,GRIJ,PROPW,PROPZ
35418       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
35419  
35420 CMRENNA++
35421 C...Z and W width, combinations of weak mixing angle
35422       ZWID=PMAS(23,2)
35423       WWID=PMAS(24,2)
35424       TANW=SQRT(XW/XW1)
35425       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
35426  
35427 C...Convert almost equivalent SUSY processes into each other
35428 C...Extract differences in flavours and couplings
35429  
35430 C...Sleptons and sneutrinos
35431       IF(ISUB.EQ.201.OR.ISUB.EQ.204.OR.ISUB.EQ.207) THEN
35432         KFID=MOD(KFPR(ISUB,1),KSUSY1)
35433         ISUB=201
35434         ILR=0
35435       ELSEIF(ISUB.EQ.202.OR.ISUB.EQ.205.OR.ISUB.EQ.208) THEN
35436         KFID=MOD(KFPR(ISUB,1),KSUSY1)
35437         ISUB=201
35438         ILR=1
35439       ELSEIF(ISUB.EQ.203.OR.ISUB.EQ.206.OR.ISUB.EQ.209) THEN
35440         KFID=MOD(KFPR(ISUB,1),KSUSY1)
35441         ISUB=203
35442       ELSEIF(ISUB.GE.210.AND.ISUB.LE.212) THEN
35443         IF(ISUB.EQ.210) THEN
35444           RKF=2.0D0
35445         ELSEIF(ISUB.EQ.211) THEN
35446           RKF=SFMIX(15,1)**2
35447         ELSEIF(ISUB.EQ.212) THEN
35448           RKF=SFMIX(15,2)**2
35449         ENDIF
35450           ISUB=210
35451       ELSEIF(ISUB.EQ.213.OR.ISUB.EQ.214) THEN
35452         IF(ISUB.EQ.213) THEN
35453           KFID=MOD(KFPR(ISUB,1),KSUSY1)
35454           RKF=2.0D0
35455         ELSEIF(ISUB.EQ.214) THEN
35456           KFID=16
35457           RKF=1.0D0
35458         ENDIF
35459         ISUB=213
35460  
35461 C...Neutralinos
35462       ELSEIF(ISUB.GE.216.AND.ISUB.LE.225) THEN
35463         IF(ISUB.EQ.216) THEN
35464           IZID1=1
35465           IZID2=1
35466         ELSEIF(ISUB.EQ.217) THEN
35467           IZID1=2
35468           IZID2=2
35469         ELSEIF(ISUB.EQ.218) THEN
35470           IZID1=3
35471           IZID2=3
35472         ELSEIF(ISUB.EQ.219) THEN
35473           IZID1=4
35474           IZID2=4
35475         ELSEIF(ISUB.EQ.220) THEN
35476           IZID1=1
35477           IZID2=2
35478         ELSEIF(ISUB.EQ.221) THEN
35479           IZID1=1
35480           IZID2=3
35481         ELSEIF(ISUB.EQ.222) THEN
35482           IZID1=1
35483           IZID2=4
35484         ELSEIF(ISUB.EQ.223) THEN
35485           IZID1=2
35486           IZID2=3
35487         ELSEIF(ISUB.EQ.224) THEN
35488           IZID1=2
35489           IZID2=4
35490         ELSEIF(ISUB.EQ.225) THEN
35491           IZID1=3
35492           IZID2=4
35493         ENDIF
35494         ISUB=216
35495  
35496 C...Charginos
35497       ELSEIF(ISUB.GE.226.AND.ISUB.LE.228) THEN
35498         IF(ISUB.EQ.226) THEN
35499           IZID1=1
35500           IZID2=1
35501         ELSEIF(ISUB.EQ.227) THEN
35502           IZID1=2
35503           IZID2=2
35504         ELSEIF(ISUB.EQ.228) THEN
35505           IZID1=1
35506           IZID2=2
35507         ENDIF
35508         ISUB=226
35509  
35510 C...Neutralino + chargino
35511       ELSEIF(ISUB.GE.229.AND.ISUB.LE.236) THEN
35512         IF(ISUB.EQ.229) THEN
35513           IZID1=1
35514           IZID2=1
35515         ELSEIF(ISUB.EQ.230) THEN
35516           IZID1=1
35517           IZID2=2
35518         ELSEIF(ISUB.EQ.231) THEN
35519           IZID1=1
35520           IZID2=3
35521         ELSEIF(ISUB.EQ.232) THEN
35522           IZID1=1
35523           IZID2=4
35524         ELSEIF(ISUB.EQ.233) THEN
35525           IZID1=2
35526           IZID2=1
35527         ELSEIF(ISUB.EQ.234) THEN
35528           IZID1=2
35529           IZID2=2
35530         ELSEIF(ISUB.EQ.235) THEN
35531           IZID1=2
35532           IZID2=3
35533         ELSEIF(ISUB.EQ.236) THEN
35534           IZID1=2
35535           IZID2=4
35536         ENDIF
35537         ISUB=229
35538  
35539 C...Gluino + neutralino
35540       ELSEIF(ISUB.GE.237.AND.ISUB.LE.240) THEN
35541         IF(ISUB.EQ.237) THEN
35542           IZID=1
35543         ELSEIF(ISUB.EQ.238) THEN
35544           IZID=2
35545         ELSEIF(ISUB.EQ.239) THEN
35546           IZID=3
35547         ELSEIF(ISUB.EQ.240) THEN
35548           IZID=4
35549         ENDIF
35550         ISUB=237
35551  
35552 C...Gluino + chargino
35553       ELSEIF(ISUB.GE.241.AND.ISUB.LE.242) THEN
35554         IF(ISUB.EQ.241) THEN
35555           IZID=1
35556         ELSEIF(ISUB.EQ.242) THEN
35557           IZID=2
35558         ENDIF
35559         ISUB=241
35560  
35561 C...Squark + neutralino
35562       ELSEIF(ISUB.GE.246.AND.ISUB.LE.253) THEN
35563         ILR=0
35564         IF(MOD(ISUB,2).NE.0) ILR=1
35565         IF(ISUB.LE.247) THEN
35566           IZID=1
35567         ELSEIF(ISUB.LE.249) THEN
35568           IZID=2
35569         ELSEIF(ISUB.LE.251) THEN
35570           IZID=3
35571         ELSEIF(ISUB.LE.253) THEN
35572           IZID=4
35573         ENDIF
35574         ISUB=246
35575         RKF=5D0
35576  
35577 C...Squark + chargino
35578       ELSEIF(ISUB.GE.254.AND.ISUB.LE.257) THEN
35579         IF(ISUB.LE.255) THEN
35580           IZID=1
35581         ELSEIF(ISUB.LE.257) THEN
35582           IZID=2
35583         ENDIF
35584         IF(MOD(ISUB,2).EQ.0) THEN
35585           ILR=0
35586         ELSE
35587           ILR=1
35588         ENDIF
35589         ISUB=254
35590         RKF=5D0
35591  
35592 C...Squark + gluino
35593       ELSEIF(ISUB.EQ.258.OR.ISUB.EQ.259) THEN
35594         ISUB=258
35595         RKF=4D0
35596  
35597 C...Stops
35598       ELSEIF(ISUB.EQ.261.OR.ISUB.EQ.262) THEN
35599         ILR=0
35600         IF(ISUB.EQ.262) ILR=1
35601         ISUB=261
35602       ELSEIF(ISUB.EQ.265) THEN
35603         ISUB=264
35604  
35605 C...Squarks
35606       ELSEIF(ISUB.GE.271.AND.ISUB.LE.280) THEN
35607         ILR=0
35608         IF(ISUB.LE.273) THEN
35609           IF(ISUB.EQ.273) ILR=1
35610           ISUB=271
35611           RKF=16D0
35612         ELSEIF(ISUB.LE.276) THEN
35613           IF(ISUB.EQ.276) ILR=1
35614           ISUB=274
35615           RKF=16D0
35616         ELSEIF(ISUB.LE.278) THEN
35617           IF(ISUB.EQ.278) ILR=1
35618           ISUB=277
35619           RKF=4D0
35620         ELSE
35621           IF(ISUB.EQ.280) ILR=1
35622           ISUB=279
35623           RKF=4D0
35624         ENDIF
35625 C...Sbottoms
35626       ELSEIF(ISUB.GE.281.AND.ISUB.LE.296) THEN
35627         ILR=0
35628         IF(ISUB.LE.283) THEN
35629           IF(ISUB.EQ.283) ILR=1
35630           ISUB=271
35631           RKF=4D0
35632         ELSEIF(ISUB.LE.286) THEN
35633           IF(ISUB.EQ.286) ILR=1
35634           ISUB=274
35635           RKF=4D0
35636         ELSEIF(ISUB.LE.288) THEN
35637           IF(ISUB.EQ.288) ILR=1
35638           ISUB=277
35639           RKF=1D0
35640         ELSEIF(ISUB.LE.290) THEN
35641           IF(ISUB.EQ.290) ILR=1
35642           ISUB=279
35643           RKF=1D0
35644         ELSEIF(ISUB.LE.293) THEN
35645           IF(ISUB.EQ.293) ILR=1
35646           ISUB=271
35647           RKF=1D0
35648         ELSEIF(ISUB.EQ.296) THEN
35649           ILR=1
35650           ISUB=274
35651           RKF=1D0
35652 C...Squark + gluino
35653         ELSEIF(ISUB.EQ.294.OR.ISUB.EQ.295) THEN
35654           ISUB=258
35655           RKF=1D0
35656         ENDIF
35657 C...H+/- + H0
35658       ELSEIF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
35659         IF(ISUB.EQ.297) THEN
35660           RKF=.5D0*PARU(195)**2
35661         ELSEIF(ISUB.EQ.298) THEN
35662           RKF=.5D0*(1D0-PARU(195)**2)
35663         ENDIF
35664         ISUB=210
35665 C...A0 + H0
35666       ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
35667         IF(ISUB.EQ.299) THEN
35668           RKF=PARU(186)**2
35669           KFID=25
35670         ELSEIF(ISUB.EQ.300) THEN
35671           RKF=PARU(187)**2
35672           KFID=35
35673         ENDIF
35674         ISUB=213
35675 C...H+ + H-
35676       ELSEIF(ISUB.EQ.301) THEN
35677         KFID=37
35678         RKF=1D0
35679         ISUB=201
35680       ENDIF
35681  
35682 C...Supersymmetric processes - all of type 2 -> 2 :
35683 C...correct final-state Breit-Wigners from fixed to running width.
35684       IF(MSTP(42).GT.0) THEN
35685         DO 100 I=1,2
35686         KFLW=KFPR(ISUBSV,I)
35687         KCW=PYCOMP(KFLW)
35688         IF(PMAS(KCW,2).LT.PARP(41)) GOTO 100
35689         IF(I.EQ.1) SQMI=SQM3
35690         IF(I.EQ.2) SQMI=SQM4
35691         SQMS=PMAS(KCW,1)**2
35692         GMMS=PMAS(KCW,1)*PMAS(KCW,2)
35693         HBWS=GMMS/((SQMI-SQMS)**2+GMMS**2)
35694         CALL PYWIDT(KFLW,SQMI,WDTP,WDTE)
35695         GMMI=SQRT(SQMI)*WDTP(0)
35696         HBWI=GMMI/((SQMI-SQMS)**2+GMMI**2)
35697         COMFAC=COMFAC*(HBWI/HBWS)
35698   100   CONTINUE
35699       ENDIF
35700  
35701 C...Differential cross section expressions.
35702  
35703       IF(ISUB.LE.210) THEN
35704         IF(ISUB.EQ.201) THEN
35705 C...f + fbar -> e_L + e_Lbar
35706           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35707           DO 130 I=MMIN1,MMAX1
35708             IA=IABS(I)
35709             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 130
35710             EI=KCHG(IA,1)/3D0
35711             TT3I=SIGN(1D0,EI+1D-6)/2D0
35712             EJ=-1D0
35713             TT3J=-1D0/2D0
35714             FCOL=1D0
35715 C...Color factor for e+ e-
35716             IF(IA.GE.11) FCOL=3D0
35717             IF(ISUBSV.EQ.301) THEN
35718               A1=1D0
35719               A2=0D0
35720             ELSEIF(ILR.EQ.1) THEN
35721               A1=SFMIX(KFID,3)**2
35722               A2=SFMIX(KFID,4)**2
35723             ELSEIF(ILR.EQ.0) THEN
35724               A1=SFMIX(KFID,1)**2
35725               A2=SFMIX(KFID,2)**2
35726             ENDIF
35727             XLQ=(TT3J-EJ*XW)*A1
35728             XRQ=(-EJ*XW)*A2
35729             XLF=(TT3I-EI*XW)
35730             XRF=(-EI*XW)
35731             TAA=(EI*EJ)**2*(POLL+POLR)
35732             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ+XRQ)**2/XW**2/XW1**2
35733             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*ZWID/SH**2)
35734             TAZ=2D0*EI*EJ*(XLQ+XRQ)*(XLF*POLL+XRF*POLR)/XW/XW1
35735             TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
35736             TNN=0.0D0
35737             TAN=0.0D0
35738             TZN=0.0D0
35739             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
35740               FAC2=SQRT(2D0)
35741               TNN1=0D0
35742               TNN2=0D0
35743               TNN3=0D0
35744               DO 120 II=1,4
35745                 DK=1D0/(TH-SMZ(II)**2)
35746                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
35747      &          ZMIX(II,1))
35748                 FREK=FAC2*TANW*EI*ZMIX(II,1)
35749                 TNN1=TNN1+FLEK**2*DK
35750                 TNN2=TNN2+FREK**2*DK
35751                 DO 110 JJ=1,4
35752                   DL=1D0/(TH-SMZ(JJ)**2)
35753                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
35754      &            ZMIX(JJ,1))
35755                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
35756                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
35757   110           CONTINUE
35758   120         CONTINUE
35759               TNN=(UH*TH-SQM3*SQM4)*(A1**2*TNN1**2*POLL+
35760      &        A2**2*TNN2**2*POLR)
35761               TNN=(TNN+SH*A1*A2*TNN3*((1D0-PARJ(131))*(1D0-PARJ(132))+
35762      &        (1D0+PARJ(131))*(1D0+PARJ(132))))/4D0/XW**2
35763               TZN=(UH*TH-SQM3*SQM4)*(XLQ+XRQ)*
35764      &        (TNN1*XLF*A1*POLL+TNN2*XRF*A2*POLR)
35765               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
35766      &        (1D0-SQMZ/SH)/SH
35767               TZN=TZN/XW**2/XW1
35768               TAN=EI*EJ*(UH*TH-SQM3*SQM4)/SH*(A1*TNN1*POLL+
35769      &        A2*TNN2*POLR)/XW
35770             ENDIF
35771             FACQQ1=COMFAC*AEM**2*(TAA+TZZ+TAZ)*FCOL/3D0
35772             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH**2
35773             FACQQ2=COMFAC*AEM**2*(TNN+TZN+TAN)*FCOL/3D0
35774             NCHN=NCHN+1
35775             ISIG(NCHN,1)=I
35776             ISIG(NCHN,2)=-I
35777             ISIG(NCHN,3)=1
35778             SIGH(NCHN)=FACQQ1+FACQQ2
35779   130     CONTINUE
35780  
35781         ELSEIF(ISUB.EQ.203) THEN
35782 C...f + fbar -> e_L + e_Rbar
35783           DO 160 I=MMIN1,MMAX1
35784             IA=IABS(I)
35785             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
35786             EI=KCHG(IABS(I),1)/3D0
35787             TT3I=SIGN(1D0,EI)/2D0
35788             EJ=-1
35789             TT3J=-1D0/2D0
35790             FCOL=1D0
35791 C...Color factor for e+ e-
35792             IF(IA.GE.11) FCOL=3D0
35793             A1=SFMIX(KFID,1)**2
35794             A2=SFMIX(KFID,2)**2
35795             XLQ=(TT3J-EJ*XW)
35796             XRQ=(-EJ*XW)
35797             XLF=(TT3I-EI*XW)
35798             XRF=(-EI*XW)
35799             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ-XRQ)**2
35800      &      /XW**2/XW1**2*A1*A2
35801             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
35802             TNN=0.0D0
35803             TZN=0.0D0
35804             TNNA=0D0
35805             TNNB=0D0
35806             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
35807               FAC2=SQRT(2D0)
35808               TNN1=0D0
35809               TNN2=0D0
35810               TNN3=0D0
35811               DO 150 II=1,4
35812                 DK=1D0/(TH-SMZ(II)**2)
35813                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
35814      &          ZMIX(II,1))
35815                 FREK=FAC2*TANW*EI*ZMIX(II,1)
35816                 TNN1=TNN1+FLEK**2*DK
35817                 TNN2=TNN2+FREK**2*DK
35818                 DO 140 JJ=1,4
35819                   DL=1D0/(TH-SMZ(JJ)**2)
35820                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
35821      &            ZMIX(JJ,1))
35822                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
35823                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
35824   140           CONTINUE
35825   150         CONTINUE
35826               TNN=(UH*TH-SQM3*SQM4)*A1*A2*(TNN2**2*POLR+TNN1**2*POLL)
35827               TNNA=(TNN+SH*(A1**2*POLLL+A2**2*POLRR)*TNN3)/4D0
35828               TNNB=(TNN+SH*(A1**2*POLRR+A2**2*POLLL)*TNN3)/4D0
35829               TZN=(UH*TH-SQM3*SQM4)*A1*A2
35830               TZN=TZN*(XLQ-XRQ)*(XLF*TNN1*POLL-XRF*TNN2*POLR)/XW1
35831               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
35832      &        (1D0-SQMZ/SH)/SH
35833             ENDIF
35834             FACQQ0=COMFAC*AEM**2*TZZ*FCOL/3D0*(UH*TH-SQM3*SQM4)/SH2
35835             FACQQ2=COMFAC*AEM**2/XW**2*(TNNA+TZN)*FCOL/3D0
35836             FACQQ1=COMFAC*AEM**2/XW**2*(TNNB+TZN)*FCOL/3D0
35837 C%%%%%%%%%%%
35838             NCHN=NCHN+1
35839             ISIG(NCHN,1)=I
35840             ISIG(NCHN,2)=-I
35841             ISIG(NCHN,3)=1
35842             SIGH(NCHN)=(FACQQ0+FACQQ1)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35843      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
35844             NCHN=NCHN+1
35845             ISIG(NCHN,1)=I
35846             ISIG(NCHN,2)=-I
35847             ISIG(NCHN,3)=2
35848             SIGH(NCHN)=(FACQQ0+FACQQ2)*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
35849      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35850   160     CONTINUE
35851  
35852         ELSEIF(ISUB.EQ.210) THEN
35853 C...q + qbar' -> W*- > ~l_L + ~nu_L
35854           FAC0=RKF*COMFAC*AEM**2/XW**2/12D0
35855           FAC1=(TH*UH-SQM3*SQM4)/((SH-SQMW)**2+WWID**2*SQMW)
35856           DO 180 I=MMIN1,MMAX1
35857             IA=IABS(I)
35858             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 180
35859             DO 170 J=MMIN2,MMAX2
35860               JA=IABS(J)
35861               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 170
35862               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 170
35863               FCKM=3D0
35864               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
35865               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
35866               KCHW=2
35867               IF(KCHSUM.LT.0) KCHW=3
35868               NCHN=NCHN+1
35869               ISIG(NCHN,1)=I
35870               ISIG(NCHN,2)=J
35871               ISIG(NCHN,3)=1
35872               IF(ISUBSV.EQ.297.OR.ISUBSV.EQ.298) THEN
35873                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
35874      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35875               ELSE
35876                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
35877      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
35878               ENDIF
35879               SIGH(NCHN)=FAC0*FAC1*FCKM*FACR
35880   170       CONTINUE
35881   180     CONTINUE
35882         ENDIF
35883  
35884       ELSEIF(ISUB.LE.220) THEN
35885         IF(ISUB.EQ.213) THEN
35886 C...f + fbar -> ~nu_L + ~nu_Lbar
35887           IF(ISUBSV.EQ.299.OR.ISUBSV.EQ.300) THEN
35888             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35889      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35890           ELSE
35891             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35892           ENDIF
35893           COMFAC=COMFAC*FACR
35894           PROPZ2=(SH-SQMZ)**2+ZWID**2*SQMZ
35895           XLL=0.5D0
35896           XLR=0.0D0
35897           DO 190 I=MMIN1,MMAX1
35898             IA=IABS(I)
35899             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 190
35900             EI=KCHG(IA,1)/3D0
35901             FCOL=1D0
35902 C...Color factor for e+ e-
35903             IF(IA.GE.11) FCOL=3D0
35904             XLQ=(SIGN(1D0,EI)-2D0*EI*XW)/2D0
35905             XRQ=-EI*XW
35906             TZC=0.0D0
35907             TCC=0.0D0
35908             IF(IA.GE.11.AND.KFID.EQ.IA+1) THEN
35909               TZC=VMIX(1,1)**2/(TH-SMW(1)**2)+VMIX(2,1)**2/
35910      &        (TH-SMW(2)**2)
35911               TCC=TZC**2
35912               TZC=TZC/XW1*(SH-SQMZ)/PROPZ2*XLQ*XLL
35913             ENDIF
35914             FACQQ1=(XLQ**2+XRQ**2)*(XLL+XLR)**2/XW1**2/PROPZ2
35915             FACQQ2=TZC+TCC/4D0
35916             NCHN=NCHN+1
35917             ISIG(NCHN,1)=I
35918             ISIG(NCHN,2)=-I
35919             ISIG(NCHN,3)=1
35920             SIGH(NCHN)=(FACQQ1+FACQQ2)*RKF*(UH*TH-SQM3*SQM4)*COMFAC
35921      &      *AEM**2*FCOL/3D0/XW**2
35922   190     CONTINUE
35923  
35924         ELSEIF(ISUB.EQ.216) THEN
35925 C...q + qbar -> ~chi0_1 + ~chi0_1
35926           IF(IZID1.EQ.IZID2) THEN
35927             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35928           ELSE
35929             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35930      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35931           ENDIF
35932           FACXX=COMFAC*AEM**2/3D0/XW**2
35933           IF(IZID1.EQ.IZID2) FACXX=FACXX/2D0
35934           ZM12=SQM3
35935           ZM22=SQM4
35936           WU2 = (UH-ZM12)*(UH-ZM22)
35937           WT2 = (TH-ZM12)*(TH-ZM22)
35938           WS2 = SMZ(IZID1)*SMZ(IZID2)*SH
35939           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
35940           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
35941           DO 200 I=1,4
35942             ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
35943             IF(IZID2.NE.IZID1) THEN
35944               ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
35945             ENDIF
35946   200     CONTINUE
35947           OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
35948      &    ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
35949           ORPP=DCONJG(OLPP)
35950           DO 210 I=MMINA,MMAXA
35951             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 210
35952             EI=KCHG(IABS(I),1)/3D0
35953             T3I=SIGN(1D0,EI+1D-6)/2D0
35954             XML2=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2
35955             XMR2=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2
35956             GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
35957      &      DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
35958             GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
35959             QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
35960             QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
35961      &      /DCMPLX(TH-XML2)
35962             QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
35963             QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
35964      &      -DCONJG(GRIJ)/DCMPLX(UH-XMR2)
35965             FCOL=1D0
35966             IF(IABS(I).GE.11) FCOL=3D0
35967             FACGG1=(ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
35968      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
35969      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
35970      &      QRL*DCONJG(QRR)*POLR)*WS2
35971             NCHN=NCHN+1
35972             ISIG(NCHN,1)=I
35973             ISIG(NCHN,2)=-I
35974             ISIG(NCHN,3)=1
35975             SIGH(NCHN)=FACXX*FACGG1*FCOL
35976   210     CONTINUE
35977         ENDIF
35978  
35979       ELSEIF(ISUB.LE.230) THEN
35980         IF(ISUB.EQ.226) THEN
35981 C...f + fbar -> ~chi+_1 + ~chi-_1
35982           FACXX=COMFAC*AEM**2/3D0
35983           ZM12=SQM3
35984           ZM22=SQM4
35985           WU2 = (UH-ZM12)*(UH-ZM22)
35986           WT2 = (TH-ZM12)*(TH-ZM22)
35987           WS2 = SMW(IZID1)*SMW(IZID2)*SH
35988           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
35989           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
35990           DIFF=0D0
35991           IF(IZID1.EQ.IZID2) DIFF=1D0
35992           DO 220 I=1,2
35993             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
35994             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
35995             IF(IZID2.NE.IZID1) THEN
35996               VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
35997               UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
35998             ENDIF
35999   220     CONTINUE
36000           OLP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
36001      &    VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0+DCMPLX(XW*DIFF)
36002           ORP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
36003      &    UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0+DCMPLX(XW*DIFF)
36004           DO 230 I=MMINA,MMAXA
36005             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 230
36006             EI=KCHG(IABS(I),1)/3D0
36007             T3I=SIGN(1D0,EI+1D-6)/2D0
36008             QRL=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*ORP
36009             QLL=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*PROPZ*ORP
36010             QRR=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*OLP
36011             IF(MOD(I,2).EQ.0) THEN
36012               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)-1),1)**2
36013               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
36014      &        PROPZ*OLP-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*
36015      &        DCMPLX(T3I/XW/(TH-XML2))
36016             ELSE
36017               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)+1),1)**2
36018               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
36019      &        PROPZ*OLP-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*
36020      &        DCMPLX(T3I/XW/(TH-XML2))
36021             ENDIF
36022             FCOL=1D0
36023             IF(IABS(I).GE.11) FCOL=3D0
36024             FACSUM=((ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
36025      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
36026      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
36027      &      QRL*DCONJG(QRR)*POLR)*WS2)*FACXX*FCOL
36028             NCHN=NCHN+1
36029             ISIG(NCHN,1)=I
36030             ISIG(NCHN,2)=-I
36031             ISIG(NCHN,3)=1
36032             IF(IZID1.EQ.IZID2) THEN
36033               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36034             ELSE
36035               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
36036      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
36037               NCHN=NCHN+1
36038               ISIG(NCHN,1)=I
36039               ISIG(NCHN,2)=-I
36040               ISIG(NCHN,3)=2
36041               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
36042      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
36043             ENDIF
36044   230     CONTINUE
36045  
36046         ELSEIF(ISUB.EQ.229) THEN
36047 C...q + qbar' -> ~chi0_1 + ~chi+-_1
36048           FACXX=COMFAC*AEM**2/6D0/XW**2
36049           ZM12=SQM3
36050           ZM22=SQM4
36051           WU2 = (UH-ZM12)*(UH-ZM22)
36052           WT2 = (TH-ZM12)*(TH-ZM22)
36053           WS2 = SMW(IZID1)*SMZ(IZID2)*SH
36054           RT2I = 1D0/SQRT(2D0)
36055           PROPW = DCMPLX(SH-SQMW,-WWID*PMAS(24,1))/
36056      &    DCMPLX((SH-SQMW)**2+WWID**2*SQMW,0D0)
36057           DO 240 I=1,2
36058             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
36059             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
36060   240     CONTINUE
36061           DO 250 I=1,4
36062             ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
36063   250     CONTINUE
36064           OL=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
36065      &    DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)*PROPW
36066           OR=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
36067      &    ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)*PROPW
36068  
36069           DO 270 I=MMIN1,MMAX1
36070             IA=IABS(I)
36071             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 270
36072             EI=KCHG(IA,1)/3D0
36073             T3I=SIGN(1D0,EI+1D-6)/2D0
36074             DO 260 J=MMIN2,MMAX2
36075               JA=IABS(J)
36076               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 260
36077               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 260
36078               EJ=KCHG(JA,1)/3D0
36079               T3J=SIGN(1D0,EJ+1D-6)/2D0
36080               FCKM=3D0
36081               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
36082               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
36083               KCHW=2
36084               IF(KCHSUM.LT.0) KCHW=3
36085               IF(MOD(IA,2).EQ.0) THEN
36086                 ZMI2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
36087                 ZMJ2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
36088                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
36089      &          TANW+ZMIXC(IZID2,2)*T3I)/DCMPLX(UH-ZMI2)
36090                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
36091      &          ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
36092      &          /DCMPLX(TH-ZMJ2)
36093               ELSE
36094                 ZMI2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
36095                 ZMJ2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
36096                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
36097      &          TANW+ZMIXC(IZID2,2)*T3J)/DCMPLX(UH-ZMJ2)
36098                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
36099      &          ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
36100      &          /DCMPLX(TH-ZMI2)
36101               ENDIF
36102               ZINTR=DBLE(QLR*DCONJG(QLL))
36103               FACGG1=FACXX*(ABS(QLL)**2*WU2+ABS(QLR)**2*WT2+
36104      &        2D0*ZINTR*WS2)
36105               NCHN=NCHN+1
36106               ISIG(NCHN,1)=I
36107               ISIG(NCHN,2)=J
36108               ISIG(NCHN,3)=1
36109               SIGH(NCHN)=FACGG1*FCKM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
36110      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
36111   260       CONTINUE
36112   270     CONTINUE
36113         ENDIF
36114  
36115       ELSEIF(ISUB.LE.240) THEN
36116         IF(ISUB.EQ.237) THEN
36117 C...q + qbar -> gluino + ~chi0_1
36118           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
36119      &    WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
36120           ASYUK=RMSS(42)*AS
36121           FAC0=COMFAC*ASYUK*AEM*4D0/9D0/XW
36122           GM2=SQM3
36123           ZM2=SQM4
36124           DO 280 I=MMINA,MMAXA
36125             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36126      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 280
36127             EI=KCHG(IABS(I),1)/3D0
36128             IA=IABS(I)
36129             XLQC = -TANW*EI*ZMIX(IZID,1)
36130             XRQC =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
36131      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
36132             XLQ2=XLQC**2
36133             XRQ2=XRQC**2
36134             XML2=PMAS(PYCOMP(KSUSY1+IA),1)**2
36135             XMR2=PMAS(PYCOMP(KSUSY2+IA),1)**2
36136             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XML2)**2
36137             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XML2)**2
36138             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XML2)/(UH-XML2)
36139             SGCHIL=XLQ2*(ATKIN+AUKIN-2D0*ATUKIN)
36140             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMR2)**2
36141             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMR2)**2
36142             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XMR2)/(UH-XMR2)
36143             SGCHIR=XRQ2*(ATKIN+AUKIN-2D0*ATUKIN)
36144             NCHN=NCHN+1
36145             ISIG(NCHN,1)=I
36146             ISIG(NCHN,2)=-I
36147             ISIG(NCHN,3)=1
36148             SIGH(NCHN)=FAC0*(SGCHIL+SGCHIR)
36149   280     CONTINUE
36150         ENDIF
36151  
36152       ELSEIF(ISUB.LE.250) THEN
36153         IF(ISUB.EQ.241) THEN
36154 C...q + qbar' -> ~chi+-_1 + gluino
36155           FACWG=COMFAC*AS*AEM/XW*2D0/9D0
36156           GM2=SQM3
36157           ZM2=SQM4
36158           FAC01=2D0*UMIX(IZID,1)*VMIX(IZID,1)
36159           FAC0=UMIX(IZID,1)**2
36160           FAC1=VMIX(IZID,1)**2
36161           DO 300 I=MMIN1,MMAX1
36162             IA=IABS(I)
36163             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 300
36164             DO 290 J=MMIN2,MMAX2
36165               JA=IABS(J)
36166               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 290
36167               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 290
36168               FCKM=1D0
36169               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
36170               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
36171               KCHW=2
36172               IF(KCHSUM.LT.0) KCHW=3
36173               XMU2=PMAS(PYCOMP(KSUSY1+2),1)**2
36174               XMD2=PMAS(PYCOMP(KSUSY1+1),1)**2
36175               ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2
36176               AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2
36177               ATUKIN=SMW(IZID)*SQRT(GM2)*SH/(TH-XMU2)/(UH-XMD2)
36178               XMU2=PMAS(PYCOMP(KSUSY2+2),1)**2
36179               XMD2=PMAS(PYCOMP(KSUSY2+1),1)**2
36180               ATKIN=(ATKIN+(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2)/2D0
36181               AUKIN=(AUKIN+(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2)/2D0
36182               ATUKIN=(ATUKIN+SMW(IZID)*SQRT(GM2)*
36183      &        SH/(TH-XMU2)/(UH-XMD2))/2D0
36184               NCHN=NCHN+1
36185               ISIG(NCHN,1)=I
36186               ISIG(NCHN,2)=J
36187               ISIG(NCHN,3)=1
36188               SIGH(NCHN)=FACWG*FCKM*(FAC0*ATKIN+FAC1*AUKIN-
36189      &        FAC01*ATUKIN)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
36190      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
36191   290       CONTINUE
36192   300     CONTINUE
36193  
36194         ELSEIF(ISUB.EQ.243) THEN
36195 C...q + qbar -> gluino + gluino
36196           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36197           XMT=SQM3-TH
36198           XMU=SQM3-UH
36199           DO 310 I=MMINA,MMAXA
36200             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36201      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
36202             NCHN=NCHN+1
36203             XSU=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-UH
36204             XST=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-TH
36205             FACGG1=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
36206      &      2D0*SQM3*SH)/SH2 + RMSS(42)**2*(4D0/9D0*(XMT**2/XST**2+
36207      &      XMU**2/XSU**2) + SQM3*SH/XST/XSU/9D0) - RMSS(42)*(
36208      &      (XMT**2+SH*SQM3)/SH/XST + (XMU**2+SH*SQM3)/SH/XSU ))
36209             XSU=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-UH
36210             XST=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-TH
36211             FACGG2=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
36212      &      2D0*SQM3*SH)/SH2 + RMSS(42)**2*(4D0/9D0*(XMT**2/XST**2+
36213      &      XMU**2/XSU**2) + SQM3*SH/XST/XSU/9D0) - RMSS(42)*(
36214      &      (XMT**2+SH*SQM3)/SH/XST + (XMU**2+SH*SQM3)/SH/XSU ))
36215             ISIG(NCHN,1)=I
36216             ISIG(NCHN,2)=-I
36217             ISIG(NCHN,3)=1
36218 C...1/2 for identical particles
36219             SIGH(NCHN)=0.25D0*(FACGG1+FACGG2)
36220   310     CONTINUE
36221  
36222         ELSEIF(ISUB.EQ.244) THEN
36223 C...g + g -> gluino + gluino
36224           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36225           XMT=SQM3-TH
36226           XMU=SQM3-UH
36227           FACQQ1=COMFAC*AS**2*9D0/4D0*(
36228      &    (XMT*XMU-2D0*SQM3*(TH+SQM3))/XMT**2 -
36229      &    (XMT*XMU+SQM3*(UH-TH))/SH/XMT )
36230           FACQQ2=COMFAC*AS**2*9D0/4D0*(
36231      &    (XMU*XMT-2D0*SQM3*(UH+SQM3))/XMU**2 -
36232      &    (XMU*XMT+SQM3*(TH-UH))/SH/XMU )
36233           FACQQ3=COMFAC*AS**2*9D0/4D0*(2D0*XMT*XMU/SH2 +
36234      &    SQM3*(SH-4D0*SQM3)/XMT/XMU)
36235           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 320
36236           NCHN=NCHN+1
36237           ISIG(NCHN,1)=21
36238           ISIG(NCHN,2)=21
36239           ISIG(NCHN,3)=1
36240           SIGH(NCHN)=FACQQ1/2D0
36241           NCHN=NCHN+1
36242           ISIG(NCHN,1)=21
36243           ISIG(NCHN,2)=21
36244           ISIG(NCHN,3)=2
36245           SIGH(NCHN)=FACQQ2/2D0
36246           NCHN=NCHN+1
36247           ISIG(NCHN,1)=21
36248           ISIG(NCHN,2)=21
36249           ISIG(NCHN,3)=3
36250           SIGH(NCHN)=FACQQ3/2D0
36251   320     CONTINUE
36252  
36253         ELSEIF(ISUB.EQ.246) THEN
36254 C...g + q_j -> ~chi0_1 + ~q_j
36255           FAC0=COMFAC*AS*AEM/6D0/XW
36256           ZM2=SQM4
36257           QM2=SQM3
36258           FACZQ0=FAC0*( (ZM2-TH)/SH +
36259      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
36260      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
36261           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
36262           DO 340 I=-KFNSQ,KFNSQ,2*KFNSQ
36263             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 340
36264             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
36265             EI=KCHG(IABS(I),1)/3D0
36266             IA=IABS(I)
36267             XRQZ = -TANW*EI*ZMIX(IZID,1)
36268             XLQZ =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
36269      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
36270             IF(ILR.EQ.0) THEN
36271               BS=XLQZ**2*SFMIX(IA,1)**2+XRQZ**2*SFMIX(IA,2)**2
36272             ELSE
36273               BS=XLQZ**2*SFMIX(IA,3)**2+XRQZ**2*SFMIX(IA,4)**2
36274             ENDIF
36275             FACZQ=FACZQ0*BS
36276             KCHQ=2
36277             IF(I.LT.0) KCHQ=3
36278             DO 330 ISDE=1,2
36279               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
36280               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
36281               NCHN=NCHN+1
36282               ISIG(NCHN,ISDE)=I
36283               ISIG(NCHN,3-ISDE)=21
36284               ISIG(NCHN,3)=1
36285               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
36286      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
36287   330       CONTINUE
36288   340     CONTINUE
36289         ENDIF
36290  
36291       ELSEIF(ISUB.LE.260) THEN
36292         IF(ISUB.EQ.254) THEN
36293 C...g + q_j -> ~chi1_1 + ~q_i
36294           FAC0=COMFAC*AS*AEM/12D0/XW
36295           ZM2=SQM4
36296           QM2=SQM3
36297           AU=UMIX(IZID,1)**2
36298           AD=VMIX(IZID,1)**2
36299           FACZQ0=FAC0*( (ZM2-TH)/SH +
36300      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
36301      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
36302           KFNSQ1=MOD(KFPR(ISUBSV,1),KSUSY1)
36303           IF(MOD(KFNSQ1,2).EQ.0) THEN
36304             KFNSQ=KFNSQ1-1
36305             KCHW=2
36306           ELSE
36307             KFNSQ=KFNSQ1+1
36308             KCHW=3
36309           ENDIF
36310           DO 360 I=-KFNSQ,KFNSQ,2*KFNSQ
36311             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 360
36312             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
36313             IA=IABS(I)
36314             IF(MOD(IA,2).EQ.0) THEN
36315               FACZQ=FACZQ0*AU
36316             ELSE
36317               FACZQ=FACZQ0*AD
36318             ENDIF
36319             FACZQ=FACZQ*SFMIX(KFNSQ1,1+2*ILR)**2
36320             KCHQ=2
36321             IF(I.LT.0) KCHQ=3
36322             KCHWQ=KCHW
36323             IF(I.LT.0) KCHWQ=5-KCHW
36324             DO 350 ISDE=1,2
36325               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
36326               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
36327               NCHN=NCHN+1
36328               ISIG(NCHN,ISDE)=I
36329               ISIG(NCHN,3-ISDE)=21
36330               ISIG(NCHN,3)=1
36331               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
36332      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHWQ)
36333   350       CONTINUE
36334   360     CONTINUE
36335  
36336         ELSEIF(ISUB.EQ.258) THEN
36337 C...g + q_j -> gluino + ~q_i
36338           XG2=SQM4
36339           XQ2=SQM3
36340           XMT=XG2-TH
36341           XMU=XG2-UH
36342           XST=XQ2-TH
36343           XSU=XQ2-UH
36344           FACQG1=0.5D0*4D0/9D0*XMT/SH + (XMT*SH+2D0*XG2*XST)/XMT**2 -
36345      &    ( (SH-XQ2+XG2)*(-XST)-SH*XG2 )/SH/(-XMT) +
36346      &    0.5D0*1D0/2D0*( XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST) +
36347      &    (-XMU)*(TH+XG2+2D0*XQ2) )/2D0/XMT/XSU
36348           FACQG2= 4D0/9D0*(-XMU)*(UH+XQ2)/XSU**2 + 1D0/18D0*
36349      &    (SH*(UH+XG2)
36350      &    +2D0*(XQ2-XG2)*XMU)/SH/(-XSU) + 0.5D0*4D0/9D0*XMT/SH +
36351      &    0.5D0*1D0/2D0*(XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST)+
36352      &    (-XMU)*(TH+XG2+2D0*XQ2))/2D0/XMT/XSU
36353           ASYUK=RMSS(42)*AS
36354           FACQG1=COMFAC*AS*ASYUK*FACQG1/2D0
36355           FACQG2=COMFAC*AS*ASYUK*FACQG2/2D0
36356           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
36357           DO 380 I=-KFNSQ,KFNSQ,2*KFNSQ
36358             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 380
36359             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 380
36360             KCHQ=2
36361             IF(I.LT.0) KCHQ=3
36362             FACSEL=RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
36363      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
36364             DO 370 ISDE=1,2
36365               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 370
36366               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 370
36367               NCHN=NCHN+1
36368               ISIG(NCHN,ISDE)=I
36369               ISIG(NCHN,3-ISDE)=21
36370               ISIG(NCHN,3)=1
36371               SIGH(NCHN)=FACQG1*FACSEL
36372               NCHN=NCHN+1
36373               ISIG(NCHN,ISDE)=I
36374               ISIG(NCHN,3-ISDE)=21
36375               ISIG(NCHN,3)=2
36376               SIGH(NCHN)=FACQG2*FACSEL
36377   370       CONTINUE
36378   380     CONTINUE
36379         ENDIF
36380  
36381       ELSEIF(ISUB.LE.270) THEN
36382         IF(ISUB.EQ.261) THEN
36383 C...q_i + q_ibar -> ~t_1 + ~t_1bar
36384           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )*
36385      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36386           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
36387           FAC0=AS**2*4D0/9D0
36388           DO 390 I=MMIN1,MMAX1
36389             IA=IABS(I)
36390             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 390
36391             IF(IA.GE.11.AND.IA.LE.18) THEN
36392               EI=KCHG(IA,1)/3D0
36393               EJ=KCHG(KFNSQ,1)/3D0
36394               T3I=SIGN(1D0,EI)/2D0
36395               T3J=SIGN(1D0,EJ)/2D0
36396               XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,2*ILR+1)**2
36397               XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2*ILR+2)**2
36398               XLF=2D0*(T3I-EI*XW)
36399               XRF=2D0*(-EI*XW)
36400               TAA=0.5D0*(EI*EJ)**2
36401               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
36402               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
36403               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
36404               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
36405               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
36406             ENDIF
36407             NCHN=NCHN+1
36408             ISIG(NCHN,1)=I
36409             ISIG(NCHN,2)=-I
36410             ISIG(NCHN,3)=1
36411             SIGH(NCHN)=FACQQ1*FAC0
36412   390     CONTINUE
36413  
36414         ELSEIF(ISUB.EQ.263) THEN
36415 C...f + fbar -> ~t1 + ~t2bar
36416           DO 400 I=MMIN1,MMAX1
36417             IA=IABS(I)
36418             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
36419             EI=KCHG(IABS(I),1)/3D0
36420             TT3I=SIGN(1D0,EI)/2D0
36421             EJ=2D0/3D0
36422             TT3J=1D0/2D0
36423             FCOL=1D0
36424 C...Color factor for e+ e-
36425             IF(IA.GE.11) FCOL=3D0
36426             XLQ=2D0*(TT3J-EJ*XW)
36427             XRQ=2D0*(-EJ*XW)
36428             XLF=2D0*(TT3I-EI*XW)
36429             XRF=2D0*(-EI*XW)
36430             TZZ=(XLF**2+XRF**2)*(XLQ-XRQ)**2/64D0/XW**2/XW1**2
36431             TZZ=TZZ*(SFMIX(6,1)*SFMIX(6,2))**2
36432             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
36433 C...Factor of 2 for t1 t2bar + t2 t1bar
36434 C...PS: bug fix 24 Aug 2010. Factor 2 accounted for by the 2 channels.
36435             FACQQ1=COMFAC*AEM**2*TZZ*FCOL*4D0
36436             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH2
36437             NCHN=NCHN+1
36438             ISIG(NCHN,1)=I
36439             ISIG(NCHN,2)=-I
36440             ISIG(NCHN,3)=1
36441             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
36442      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
36443             NCHN=NCHN+1
36444             ISIG(NCHN,1)=I
36445             ISIG(NCHN,2)=-I
36446             ISIG(NCHN,3)=2
36447             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
36448      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
36449   400     CONTINUE
36450  
36451         ELSEIF(ISUB.EQ.264) THEN
36452 C...g + g -> ~t_1 + ~t_1bar
36453           XSU=SQM3-UH
36454           XST=SQM3-TH
36455           FAC0=COMFAC*AS**2*(7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )*0.5D0*
36456      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36457           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
36458           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
36459           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
36460           NCHN=NCHN+1
36461           ISIG(NCHN,1)=21
36462           ISIG(NCHN,2)=21
36463           ISIG(NCHN,3)=1
36464           SIGH(NCHN)=FACQQ1
36465           NCHN=NCHN+1
36466           ISIG(NCHN,1)=21
36467           ISIG(NCHN,2)=21
36468           ISIG(NCHN,3)=2
36469           SIGH(NCHN)=FACQQ2
36470   410     CONTINUE
36471         ENDIF
36472  
36473       ELSEIF(ISUB.LE.280) THEN
36474         IF(ISUB.EQ.271) THEN
36475 C...q + q' -> ~q + ~q' (~g exchange)
36476           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
36477           XMT=XMG2-TH
36478           XMU=XMG2-UH
36479           XSU1=SQM3-UH
36480           XSU2=SQM4-UH
36481           XST1=SQM3-TH
36482           XST2=SQM4-TH
36483           ASYUK=RMSS(42)*AS
36484           IF(ILR.EQ.1) THEN
36485             FACQQ1=COMFAC*ASYUK**2*4D0/9D0*( -(XST1*XST2+SH*TH)/XMT**2 )
36486             FACQQ2=COMFAC*ASYUK**2*4D0/9D0*( -(XSU1*XSU2+SH*UH)/XMU**2 )
36487             FACQQB=0.0D0
36488           ELSE
36489             FACQQ1=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( SH*XMG2/XMT**2 )
36490             FACQQ2=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( SH*XMG2/XMU**2 )
36491             FACQQB=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( -2D0*SH*XMG2/3D0/
36492      &      XMT/XMU )
36493           ENDIF
36494           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
36495           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
36496           DO 430 I=-KFNSQI,KFNSQI,2*KFNSQI
36497             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 430
36498             IA=IABS(I)
36499             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
36500             KCHQ=2
36501             IF(I.LT.0) KCHQ=3
36502             DO 420 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
36503               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 420
36504               JA=IABS(J)
36505               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
36506               IF(I*J.LT.0) GOTO 420
36507               NCHN=NCHN+1
36508               ISIG(NCHN,1)=I
36509               ISIG(NCHN,2)=J
36510               ISIG(NCHN,3)=1
36511               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
36512      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
36513               IF(I.EQ.J) THEN
36514                 IF(ILR.EQ.0) THEN
36515                   SIGH(NCHN)=0.5D0*(FACQQ1+0.5D0*FACQQB)*RKF*
36516      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
36517                 ELSE
36518                   SIGH(NCHN)=0.5D0*FACQQ1*RKF*
36519      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
36520      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
36521                 ENDIF
36522                 NCHN=NCHN+1
36523                 ISIG(NCHN,1)=I
36524                 ISIG(NCHN,2)=J
36525                 ISIG(NCHN,3)=2
36526                 IF(ILR.EQ.0) THEN
36527                   SIGH(NCHN)=0.5D0*(FACQQ2+0.5D0*FACQQB)*RKF*
36528      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
36529                 ELSE
36530                   SIGH(NCHN)=0.5D0*FACQQ2*RKF*
36531      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
36532      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
36533                 ENDIF
36534               ENDIF
36535   420       CONTINUE
36536   430     CONTINUE
36537  
36538         ELSEIF(ISUB.EQ.274) THEN
36539 C...q + qbar' -> ~q + ~qbar'
36540           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
36541           XMT=XMG2-TH
36542           XMU=XMG2-UH
36543           IF(ILR.EQ.0) THEN
36544 C...Mrenna...Normalization.and.1/XMT
36545             FACQQ1=COMFAC*AS**2*2D0/9D0*(
36546      &      (UH*TH-SQM3*SQM4)/XMT**2 )*RMSS(42)**2
36547             FACQQB=COMFAC*AS**2*4D0/9D0*(
36548      &      (UH*TH-SQM3*SQM4)/SH2 )
36549             FACQQI=-COMFAC*AS**2*4D0/27D0*(
36550      &      (UH*TH-SQM3*SQM4)/SH/XMT )*RMSS(42)
36551             FACQQB=FACQQB+FACQQ1+FACQQI
36552           ELSE
36553             FACQQ1=COMFAC*AS**2*4D0/9D0*( XMG2*SH/XMT**2 )*RMSS(42)**2
36554             FACQQB=FACQQ1
36555           ENDIF
36556           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
36557           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
36558           DO 450 I=-KFNSQI,KFNSQI,2*KFNSQI
36559             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 450
36560             IA=IABS(I)
36561             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 450
36562             KCHQ=2
36563             IF(I.LT.0) KCHQ=3
36564             DO 440 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
36565               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 440
36566               JA=IABS(J)
36567               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 440
36568               IF(I*J.GT.0) GOTO 440
36569               NCHN=NCHN+1
36570               ISIG(NCHN,1)=I
36571               ISIG(NCHN,2)=J
36572               ISIG(NCHN,3)=1
36573               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
36574      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),5-KCHQ)
36575               IF(ILR.EQ.0.AND.I.EQ.-J) SIGH(NCHN)=FACQQB*RKF*
36576      &        WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36577   440       CONTINUE
36578   450     CONTINUE
36579  
36580         ELSEIF(ISUB.EQ.277) THEN
36581 C...q_i + q_ibar -> ~q_j + ~q_jbar ,i .ne. j
36582 C...if i .eq. j covered in 274
36583           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )
36584           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
36585           FAC0=0D0
36586           DO 460 I=MMIN1,MMAX1
36587             IA=IABS(I)
36588             IF(I.EQ.0.OR.(IA.GT.MSTP(58).AND.IA.LE.10).OR.
36589      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
36590             IF(IA.EQ.KFNSQ) GOTO 460
36591             IF(IA.EQ.11.OR.IA.EQ.13.OR.IA.EQ.15) THEN
36592               EI=KCHG(IA,1)/3D0
36593               EJ=KCHG(KFNSQ,1)/3D0
36594               T3J=SIGN(0.5D0,EJ)
36595               T3I=SIGN(1D0,EI)/2D0
36596               IF(ILR.EQ.0) THEN
36597                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,1)
36598                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2)
36599               ELSE
36600                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,3)
36601                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,4)
36602               ENDIF
36603               XLF=2D0*(T3I-EI*XW)
36604               XRF=2D0*(-EI*XW)
36605               IF(ILR.EQ.0) THEN
36606                 XRQ=0D0
36607               ELSE
36608                 XLQ=0D0
36609               ENDIF
36610               TAA=0.5D0*(EI*EJ)**2
36611               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
36612               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
36613               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
36614               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
36615               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
36616             ELSEIF(IA.LE.6) THEN
36617               FAC0=AS**2*8D0/9D0/2D0
36618             ENDIF
36619             NCHN=NCHN+1
36620             ISIG(NCHN,1)=I
36621             ISIG(NCHN,2)=-I
36622             ISIG(NCHN,3)=1
36623             SIGH(NCHN)=FACQQ1*FAC0*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36624   460     CONTINUE
36625  
36626         ELSEIF(ISUB.EQ.279) THEN
36627 C...g + g -> ~q_j + ~q_jbar
36628           XSU=SQM3-UH
36629           XST=SQM3-TH
36630 C...4=RKF because ~t ~tbar and ~b ~bbar treated separately
36631           FAC0=RKF*COMFAC*AS**2*( 7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )
36632           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
36633           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
36634           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 470
36635           NCHN=NCHN+1
36636           ISIG(NCHN,1)=21
36637           ISIG(NCHN,2)=21
36638           ISIG(NCHN,3)=1
36639           SIGH(NCHN)=FACQQ1/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36640           NCHN=NCHN+1
36641           ISIG(NCHN,1)=21
36642           ISIG(NCHN,2)=21
36643           ISIG(NCHN,3)=2
36644           SIGH(NCHN)=FACQQ2/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
36645   470     CONTINUE
36646  
36647         ENDIF
36648       ENDIF
36649 CMRENNA--
36650  
36651       RETURN
36652       END
36653  
36654 C*********************************************************************
36655  
36656 C...PYSGTC
36657 C...Subprocess cross sections for Technicolor processes.
36658 C...Auxiliary to PYSIGH.
36659  
36660       SUBROUTINE PYSGTC(NCHN,SIGS)
36661  
36662 C...Double precision and integer declarations
36663       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
36664       IMPLICIT INTEGER(I-N)
36665       INTEGER PYK,PYCHGE,PYCOMP
36666 C...Parameter statement to help give large particle numbers.
36667       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
36668      &KEXCIT=4000000,KDIMEN=5000000)
36669 C...Commonblocks
36670       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
36671       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
36672       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
36673       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
36674       COMMON/PYINT1/MINT(400),VINT(400)
36675       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
36676       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
36677       COMMON/PYINT4/MWID(500),WIDS(500,5)
36678       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
36679       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
36680      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
36681      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
36682      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
36683       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
36684      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
36685 C...Local arrays and complex variables
36686       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
36687       COMPLEX*16 SSMZ,SSMR,SSMO,DETD,F2L,F2R,DARHO,DZRHO,DAOME,DZOME
36688       COMPLEX*16 SSMX,DAAST,DZAST,DWAST
36689       COMPLEX*16 DAA,DZZ,DAZ,DWW,DWRHO
36690       COMPLEX*16 ZTC(6,6),YTC(6,6),DGGS,DGGT,DGGU,DGVS,DGVT,DGVU
36691       COMPLEX*16 DQQS,DQQT,DQQU,DQTS,DQGS,DTGS
36692       COMPLEX*16 DVVS,DVVT,DVVU
36693       INTEGER INDX(6)
36694  
36695 C...Combinations of weak mixing angle.
36696       TANW=SQRT(XW/XW1)
36697       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
36698  
36699 C...Convert almost equivalent technicolor processes into
36700 C...a few basic processes, and set distinguishing parameters.
36701       IF(ISUB.GE.361.AND.ISUB.LE.380) THEN
36702         SQTV=RTCM(12)**2
36703         SQTA=RTCM(13)**2
36704         SN2W=2D0*SQRT(XW*XW1)
36705         CS2W=1D0-2D0*XW
36706         CT2W=CS2W/SN2W
36707         CSXI=COS(ASIN(RTCM(3)))
36708         CSXIP=COS(ASIN(RTCM(4)))
36709         QUPD=2D0*RTCM(2)-1D0
36710         Q2UD=RTCM(2)**2+(RTCM(2)-1D0)**2
36711         CAB2=0D0
36712         VOGP=0D0
36713         VRGP=0D0
36714         AOGP=0D0
36715         ARGP=0D0
36716         VXGP=0D0
36717         AXGP=0D0
36718         VAGP=0D0
36719         VZGP=0D0
36720         VWGP=0D0
36721 C... rho_tc0, etc. -> W_L W_L, W_L W_T
36722         IF(ISUB.EQ.361) THEN
36723            KFA=24
36724            KFB=24
36725            CAB2=RTCM(3)**4
36726            AXGP=-RTCM(3)/(2D0*SQRT(XW))/RTCM(49)
36727            ARGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(13)
36728            VOGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(12)
36729 C...Multiply by sqrt(2) to account for W^+_T W^-_L + W^+_L W^-_T.
36730            AXGP = SQRT(2D0)*AXGP
36731            ARGP = SQRT(2D0)*ARGP
36732            VOGP = SQRT(2D0)*VOGP
36733 C... rho_tc0 -> W_L pi_tc-
36734         ELSEIF(ISUB.EQ.362) THEN
36735            KFA=24
36736            KFB=KTECHN+211
36737            ISUB=361
36738            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
36739 C... pi_tc pi_tc
36740         ELSEIF(ISUB.EQ.363) THEN
36741            KFA=KTECHN+211
36742            KFB=KTECHN+211
36743            ISUB=361
36744            CAB2=(1D0-RTCM(3)**2)**2
36745 C... rho_tc0/omega_tc -> gamma pi_tc
36746         ELSEIF(ISUB.EQ.364) THEN
36747            KFA=22
36748            KFB=KTECHN+111
36749            ISUB=361
36750            VOGP=CSXI/RTCM(12)
36751            VRGP=VOGP*QUPD
36752            VAGP=2D0*QUPD*CSXI
36753            VZGP=QUPD*CSXI*(1D0-4D0*XW)/SN2W
36754 C... gamma pi_tc'
36755         ELSEIF(ISUB.EQ.365) THEN
36756            KFA=22
36757            KFB=KTECHN+221
36758            ISUB=361
36759            VRGP=CSXIP/RTCM(12)
36760            VOGP=VRGP*QUPD
36761            VAGP=2D0*Q2UD*CSXIP
36762            VZGP=CSXIP/SN2W*(1D0-4D0*XW*Q2UD)
36763 C... Z pi_tc
36764         ELSEIF(ISUB.EQ.366) THEN
36765            KFA=23
36766            KFB=KTECHN+111
36767            ISUB=361
36768            VOGP=CSXI*CT2W/RTCM(12)
36769            VRGP=-QUPD*CSXI*TANW/RTCM(12)
36770            VAGP=QUPD*CSXI*(1D0-4D0*XW)/SN2W
36771            VZGP=-QUPD*CSXI*CS2W/XW1
36772 C... Z pi_tc'
36773         ELSEIF(ISUB.EQ.367) THEN
36774            KFA=23
36775            KFB=KTECHN+221
36776            ISUB=361
36777 C...RTCM(48) is the M_V for the techni-a
36778            VXGP=-CSXIP/SN2W/RTCM(48)
36779            VRGP=CSXIP*CT2W/RTCM(12)
36780            VOGP=-QUPD*CSXIP*TANW/RTCM(12)
36781            VAGP=CSXIP*(1D0-4D0*Q2UD*XW)/SN2W
36782            VZGP=2D0*CSXIP*(CS2W+4D0*Q2UD*XW**2)/SN2W**2
36783 C... W_T pi_tc
36784         ELSEIF(ISUB.EQ.368) THEN
36785            KFA=24
36786            KFB=KTECHN+211
36787            ISUB=361
36788 C...RTCM(49) is the M_A for the techni-a
36789            AXGP=-CSXI/(2D0*SQRT(XW))/RTCM(49)
36790            VOGP=CSXI/(2D0*SQRT(XW))/RTCM(12)
36791            ARGP=CSXI/(2D0*SQRT(XW))/RTCM(13)
36792            VAGP=QUPD*CSXI/(2D0*SQRT(XW))
36793            VZGP=-QUPD*CSXI/(2D0*SQRT(XW1))
36794 C... rho_tc+, a_T+ -> W_L Z_L, W_T Z_L
36795         ELSEIF(ISUB.EQ.370) THEN
36796            KFA=24
36797            KFB=23
36798            CAB2=RTCM(3)**4
36799            ARGP=-RTCM(3)/(2D0*SQRT(XW))/RTCM(13)
36800            AXGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(49)
36801 C... W_L pi_tc0
36802         ELSEIF(ISUB.EQ.371) THEN
36803            KFA=24
36804            KFB=KTECHN+111
36805            ISUB=370
36806            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
36807 C... Z_L pi_tc+
36808         ELSEIF(ISUB.EQ.372) THEN
36809            KFA=KTECHN+211
36810            KFB=23
36811            ISUB=370
36812            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
36813 C... pi_tc+ pi_tc0
36814         ELSEIF(ISUB.EQ.373) THEN
36815            KFA=KTECHN+211
36816            KFB=KTECHN+111
36817            ISUB=370
36818            CAB2=(1D0-RTCM(3)**2)**2
36819 C... gamma pi_tc+
36820         ELSEIF(ISUB.EQ.374) THEN
36821            KFA=KTECHN+211
36822            KFB=22
36823            ISUB=370
36824            VRGP=QUPD*CSXI/RTCM(12)
36825            VWGP=QUPD*CSXI/(2D0*SQRT(XW))
36826            AXGP=-CSXI/RTCM(49)
36827 C... Z_T pi_tc+
36828         ELSEIF(ISUB.EQ.375) THEN
36829            KFA=KTECHN+211
36830            KFB=23
36831            ISUB=370
36832            VRGP=-QUPD*CSXI*TANW/RTCM(12)
36833            ARGP=CSXI/(2D0*SQRT(XW*XW1))/RTCM(13)
36834            VWGP=-QUPD*CSXI/(2D0*SQRT(XW1))
36835            AXGP=-CSXI*CT2W/RTCM(49)
36836 C... W_T pi_tc0
36837         ELSEIF(ISUB.EQ.376) THEN
36838            KFA=24
36839            KFB=KTECHN+111
36840            ISUB=370
36841            VRGP=0D0
36842            ARGP=-CSXI/(2D0*SQRT(XW))/RTCM(13)
36843            AXGP=CSXI/(2D0*SQRT(XW))/RTCM(49)
36844 C... W_T pi_tc0'
36845         ELSEIF(ISUB.EQ.377) THEN
36846            KFA=24
36847            KFB=KTECHN+221
36848            ISUB=370
36849            VRGP=CSXIP/(2D0*SQRT(XW))/RTCM(12)
36850            VWGP=CSXIP/(2D0*XW)
36851            VXGP=-CSXIP/(2D0*SQRT(XW))/RTCM(48)
36852 C... gamma W+
36853         ELSEIF(ISUB.EQ.378) THEN
36854            KFA=24
36855            KFB=22
36856            ISUB=370
36857            VRGP=QUPD*RTCM(3)/RTCM(12)
36858            AXGP=-RTCM(3)/RTCM(49)
36859 C... gamma Z
36860         ELSEIF(ISUB.EQ.379) THEN
36861            KFA=23
36862            KFB=22
36863            ISUB=361
36864            VOGP=RTCM(3)/RTCM(12)
36865            VRGP=QUPD*RTCM(3)/RTCM(12)
36866         ELSEIF(ISUB.EQ.380) THEN
36867            KFA=23
36868            KFB=23
36869            ISUB=361
36870            VOGP=RTCM(3)*CT2W/RTCM(12)
36871            VRGP=-QUPD*RTCM(3)*TANW/RTCM(12)
36872         ENDIF
36873       ENDIF
36874  
36875 C...QCD 2 -> 2 processes: corrections from virtual technicolor exchange.
36876       IF(ISUB.GE.381.AND.ISUB.LE.388) THEN
36877         IF(ITCM(5).LE.4) THEN
36878           SQDQQS=1D0/SH2
36879           SQDQQT=1D0/TH2
36880           SQDQQU=1D0/UH2
36881           SQDGGS=SQDQQS
36882           SQDGGT=SQDQQT
36883           SQDGGU=SQDQQU
36884           REDGGS=1D0/SH
36885           REDGGT=1D0/TH
36886           REDGGU=1D0/UH
36887           REDGTU=1D0/UH/TH
36888           REDGSU=1D0/SH/UH
36889           REDGST=1D0/SH/TH
36890           REDQST=1D0/SH/TH
36891           REDQTU=1D0/UH/TH
36892           SQDLGS=0D0
36893           SQDLGT=0D0
36894           SQDQTS=SQDQQS
36895         ELSEIF(ITCM(5).EQ.5) THEN
36896           TANT3=RTCM(21)
36897           IF(ITCM(2).EQ.0) THEN
36898             IMDL=1
36899           ELSE
36900             IMDL=2
36901           ENDIF
36902           ALPRHT=2.16D0*(3D0/ITCM(1))
36903           SIN2T=2D0*TANT3/(TANT3**2+1D0)
36904           SINT3=TANT3/SQRT(TANT3**2+1D0)
36905           XIG=SQRT(PYALPS(SH)/ALPRHT)
36906           X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
36907      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)/SIN2T
36908           X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
36909      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)/SIN2T
36910           X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
36911      &    SINT3**2)*2D0/SIN2T
36912           X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
36913      &    SINT3**2)*2D0/SIN2T
36914  
36915           SM1122=.5D0*(2D0-RTCM(29)**2-RTCM(31)**2)*RTCM(28)**2
36916           SM1112=X12*RTCM(28)**2*SIN2T
36917           SM1121=-X21*RTCM(28)**2*SIN2T
36918           SM2212=-SM1112
36919           SM2221=-SM1121
36920           SM1221=-.5D0*((1D0-RTCM(29)**2)*SIN(2D0*RTCM(30))+
36921      &    (1D0-RTCM(31)**2)*SIN(2D0*RTCM(32)))*RTCM(28)**2
36922  
36923 C.........SH LOOP
36924           ZTC(1,1)=DCMPLX(SH,0D0)
36925           CALL PYWIDT(3100021,SH,WDTP,WDTE)
36926           IF(WDTP(0).GT.RTCM(33)*SHR) WDTP(0)=RTCM(33)*SHR
36927           ZTC(2,2)=DCMPLX(SH-PMAS(PYCOMP(3100021),1)**2,-SHR*WDTP(0))
36928           CALL PYWIDT(3100113,SH,WDTP,WDTE)
36929           ZTC(3,3)=DCMPLX(SH-PMAS(PYCOMP(3100113),1)**2,-SHR*WDTP(0))
36930           CALL PYWIDT(3400113,SH,WDTP,WDTE)
36931           ZTC(4,4)=DCMPLX(SH-PMAS(PYCOMP(3400113),1)**2,-SHR*WDTP(0))
36932           CALL PYWIDT(3200113,SH,WDTP,WDTE)
36933           ZTC(5,5)=DCMPLX(SH-PMAS(PYCOMP(3200113),1)**2,-SHR*WDTP(0))
36934           CALL PYWIDT(3300113,SH,WDTP,WDTE)
36935           ZTC(6,6)=DCMPLX(SH-PMAS(PYCOMP(3300113),1)**2,-SHR*WDTP(0))
36936           ZTC(1,2)=(0D0,0D0)
36937           ZTC(1,3)=DCMPLX(SH*XIG,0D0)
36938           ZTC(1,4)=ZTC(1,3)
36939           ZTC(1,5)=ZTC(1,2)
36940           ZTC(1,6)=ZTC(1,2)
36941           ZTC(2,3)=DCMPLX(SH*XIG*X11,0D0)
36942           ZTC(2,4)=DCMPLX(SH*XIG*X22,0D0)
36943           ZTC(2,5)=DCMPLX(SH*XIG*X12,0D0)
36944           ZTC(2,6)=DCMPLX(SH*XIG*X21,0D0)
36945           ZTC(3,4)=-SM1122
36946           ZTC(3,5)=-SM1112
36947           ZTC(3,6)=-SM1121
36948           ZTC(4,5)=-SM2212
36949           ZTC(4,6)=-SM2221
36950           ZTC(5,6)=-SM1221
36951  
36952           DO 110 I=1,5
36953             DO 100 J=I+1,6
36954                ZTC(J,I)=ZTC(I,J)
36955   100       CONTINUE
36956   110     CONTINUE
36957           CALL PYLDCM(ZTC,6,6,INDX,D)
36958           DO 130 I=1,6
36959             DO 120 J=1,6
36960              YTC(I,J)=(0D0,0D0)
36961               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
36962   120       CONTINUE
36963   130     CONTINUE
36964  
36965           DO 140 I=1,6
36966             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
36967   140     CONTINUE
36968           DGGS=YTC(1,1)
36969           DVVS=YTC(2,2)
36970           DGVS=YTC(1,2)
36971  
36972           XIG=SQRT(PYALPS(-TH)/ALPRHT)
36973 C.........TH LOOP
36974           ZTC(1,1)=DCMPLX(TH)
36975           ZTC(2,2)=DCMPLX(TH-PMAS(PYCOMP(3100021),1)**2)
36976           ZTC(3,3)=DCMPLX(TH-PMAS(PYCOMP(3100113),1)**2)
36977           ZTC(4,4)=DCMPLX(TH-PMAS(PYCOMP(3400113),1)**2)
36978           ZTC(5,5)=DCMPLX(TH-PMAS(PYCOMP(3200113),1)**2)
36979           ZTC(6,6)=DCMPLX(TH-PMAS(PYCOMP(3300113),1)**2)
36980           ZTC(1,2)=(0D0,0D0)
36981           ZTC(1,3)=DCMPLX(TH*XIG,0D0)
36982           ZTC(1,4)=ZTC(1,3)
36983           ZTC(1,5)=ZTC(1,2)
36984           ZTC(1,6)=ZTC(1,2)
36985           ZTC(2,3)=DCMPLX(TH*XIG*X11,0D0)
36986           ZTC(2,4)=DCMPLX(TH*XIG*X22,0D0)
36987           ZTC(2,5)=DCMPLX(TH*XIG*X12,0D0)
36988           ZTC(2,6)=DCMPLX(TH*XIG*X21,0D0)
36989           ZTC(3,4)=-SM1122
36990           ZTC(3,5)=-SM1112
36991           ZTC(3,6)=-SM1121
36992           ZTC(4,5)=-SM2212
36993           ZTC(4,6)=-SM2221
36994           ZTC(5,6)=-SM1221
36995           DO 160 I=1,5
36996             DO 150 J=I+1,6
36997                ZTC(J,I)=ZTC(I,J)
36998   150       CONTINUE
36999   160     CONTINUE
37000           CALL PYLDCM(ZTC,6,6,INDX,D)
37001           DO 180 I=1,6
37002             DO 170 J=1,6
37003               YTC(I,J)=(0D0,0D0)
37004               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
37005   170       CONTINUE
37006   180     CONTINUE
37007           DO 190 I=1,6
37008             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
37009   190     CONTINUE
37010           DGGT=YTC(1,1)
37011           DVVT=YTC(2,2)
37012           DGVT=YTC(1,2)
37013  
37014           XIG=SQRT(PYALPS(-UH)/ALPRHT)
37015 C.........UH LOOP
37016           ZTC(1,1)=DCMPLX(UH,0D0)
37017           ZTC(2,2)=DCMPLX(UH-PMAS(PYCOMP(3100021),1)**2)
37018           ZTC(3,3)=DCMPLX(UH-PMAS(PYCOMP(3100113),1)**2)
37019           ZTC(4,4)=DCMPLX(UH-PMAS(PYCOMP(3400113),1)**2)
37020           ZTC(5,5)=DCMPLX(UH-PMAS(PYCOMP(3200113),1)**2)
37021           ZTC(6,6)=DCMPLX(UH-PMAS(PYCOMP(3300113),1)**2)
37022           ZTC(1,2)=(0D0,0D0)
37023           ZTC(1,3)=DCMPLX(UH*XIG,0D0)
37024           ZTC(1,4)=ZTC(1,3)
37025           ZTC(1,5)=ZTC(1,2)
37026           ZTC(1,6)=ZTC(1,2)
37027           ZTC(2,3)=DCMPLX(UH*XIG*X11,0D0)
37028           ZTC(2,4)=DCMPLX(UH*XIG*X22,0D0)
37029           ZTC(2,5)=DCMPLX(UH*XIG*X12,0D0)
37030           ZTC(2,6)=DCMPLX(UH*XIG*X21,0D0)
37031           ZTC(3,4)=-SM1122
37032           ZTC(3,5)=-SM1112
37033           ZTC(3,6)=-SM1121
37034           ZTC(4,5)=-SM2212
37035           ZTC(4,6)=-SM2221
37036           ZTC(5,6)=-SM1221
37037           DO 210 I=1,5
37038             DO 200 J=I+1,6
37039                ZTC(J,I)=ZTC(I,J)
37040   200       CONTINUE
37041   210     CONTINUE
37042           CALL PYLDCM(ZTC,6,6,INDX,D)
37043           DO 230 I=1,6
37044             DO 220 J=1,6
37045               YTC(I,J)=(0D0,0D0)
37046               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
37047   220       CONTINUE
37048   230     CONTINUE
37049           DO 240 I=1,6
37050             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
37051   240     CONTINUE
37052           DGGU=YTC(1,1)
37053           DVVU=YTC(2,2)
37054           DGVU=YTC(1,2)
37055  
37056           IF(IMDL.EQ.1) THEN
37057             DQQS=DGGS+DVVS*DCMPLX(TANT3**2)-DGVS*DCMPLX(2D0*TANT3)
37058             DQQT=DGGT+DVVT*DCMPLX(TANT3**2)-DGVT*DCMPLX(2D0*TANT3)
37059             DQQU=DGGU+DVVU*DCMPLX(TANT3**2)-DGVU*DCMPLX(2D0*TANT3)
37060             DQTS=DGGS-DVVS-DGVS*DCMPLX(TANT3-1D0/TANT3)
37061             DQGS=DGGS-DGVS*DCMPLX(TANT3)
37062             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
37063           ELSE
37064             DQQS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
37065             DQQT=DGGT+DVVT*DCMPLX(1D0/TANT3**2)+DGVT*DCMPLX(2D0/TANT3)
37066             DQQU=DGGU+DVVU*DCMPLX(1D0/TANT3**2)+DGVU*DCMPLX(2D0/TANT3)
37067             DQTS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
37068             DQGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
37069             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
37070           ENDIF
37071  
37072           SQDQTS=ABS(DQTS)**2
37073           SQDQQS=ABS(DQQS)**2
37074           SQDQQT=ABS(DQQT)**2
37075           SQDQQU=ABS(DQQU)**2
37076           SQDLGS=ABS(DCMPLX(SH)*DQGS-DCMPLX(1D0))**2
37077           REDLGS=DBLE(DQGS)
37078           SQDHGS=ABS(DCMPLX(SH)*DTGS-DCMPLX(1D0))**2
37079           REDHGS=DBLE(DTGS)
37080           SQDLGT=ABS(DCMPLX(TH)*DGGT-DCMPLX(1D0))**2
37081  
37082           SQDGGS=ABS(DGGS)**2
37083           SQDGGT=ABS(DGGT)**2
37084           SQDGGU=ABS(DGGU)**2
37085           REDGGS=DBLE(DGGS)
37086           REDGGT=DBLE(DGGT)
37087           REDGGU=DBLE(DGGU)
37088           REDGTU=DBLE(DGGU*DCONJG(DGGT))
37089           REDGSU=DBLE(DGGU*DCONJG(DGGS))
37090           REDGST=DBLE(DGGS*DCONJG(DGGT))
37091           REDQST=DBLE(DQQS*DCONJG(DQQT))
37092           REDQTU=DBLE(DQQT*DCONJG(DQQU))
37093         ENDIF
37094       ENDIF
37095  
37096  
37097 C...Differential cross section expressions.
37098  
37099       IF(ISUB.LE.190) THEN
37100         IF(ISUB.EQ.149) THEN
37101 C...g + g -> eta_tc
37102           KCTC=PYCOMP(KTECHN+331)
37103           CALL PYWIDT(KTECHN+331,SH,WDTP,WDTE)
37104           HS=SHR*WDTP(0)
37105           FACBW=COMFAC*0.5D0/((SH-PMAS(KCTC,1)**2)**2+HS**2)
37106           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
37107           HP=SH
37108           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 250
37109           HI=HP*WDTP(3)
37110           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37111           NCHN=NCHN+1
37112           ISIG(NCHN,1)=21
37113           ISIG(NCHN,2)=21
37114           ISIG(NCHN,3)=1
37115           SIGH(NCHN)=HI*FACBW*HF
37116   250     CONTINUE
37117  
37118         ELSEIF(ISUB.EQ.165) THEN
37119 C...q + qbar -> l+ + l- (including contact term for compositeness)
37120           ZRATR=XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
37121           ZRATI=XWC*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
37122           KFF=IABS(KFPR(ISUB,1))
37123           EF=KCHG(KFF,1)/3D0
37124           AF=SIGN(1D0,EF+0.1D0)
37125           VF=AF-4D0*EF*XWV
37126           VALF=VF+AF
37127           VARF=VF-AF
37128           FCOF=1D0
37129           IF(KFF.LE.10) FCOF=3D0
37130           WID2=1D0
37131           IF(KFF.EQ.6) WID2=WIDS(6,1)
37132           IF(KFF.EQ.7.OR.KFF.EQ.8) WID2=WIDS(KFF,1)
37133           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
37134           DO 260 I=MMINA,MMAXA
37135             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 260
37136             EI=KCHG(IABS(I),1)/3D0
37137             AI=SIGN(1D0,EI+0.1D0)
37138             VI=AI-4D0*EI*XWV
37139             VALI=VI+AI
37140             VARI=VI-AI
37141             FCOI=1D0
37142             IF(IABS(I).LE.10) FCOI=FACA/3D0
37143             IF((ITCM(5).EQ.1.AND.IABS(I).LE.2).OR.ITCM(5).EQ.2) THEN
37144               FGZA=(EI*EF+VALI*VALF*ZRATR+RTCM(42)*SH/
37145      &        (AEM*RTCM(41)**2))**2+(VALI*VALF*ZRATI)**2+
37146      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
37147             ELSE
37148               FGZA=(EI*EF+VALI*VALF*ZRATR)**2+(VALI*VALF*ZRATI)**2+
37149      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
37150             ENDIF
37151             FGZB=(EI*EF+VALI*VARF*ZRATR)**2+(VALI*VARF*ZRATI)**2+
37152      &      (EI*EF+VARI*VALF*ZRATR)**2+(VARI*VALF*ZRATI)**2
37153             FGZAB=AEM**2*(FGZA*UH2/SH2+FGZB*TH2/SH2)
37154             IF((ITCM(5).EQ.3.AND.IABS(I).EQ.2).OR.(ITCM(5).EQ.4.AND.
37155      &      MOD(IABS(I),2).EQ.0)) FGZAB=FGZAB+SH2/(2D0*RTCM(41)**4)
37156             NCHN=NCHN+1
37157             ISIG(NCHN,1)=I
37158             ISIG(NCHN,2)=-I
37159             ISIG(NCHN,3)=1
37160             SIGH(NCHN)=COMFAC*FCOI*FCOF*FGZAB*WID2
37161   260     CONTINUE
37162  
37163         ELSEIF(ISUB.EQ.166) THEN
37164 C...q + q'bar -> l + nu_l (including contact term for compositeness)
37165           WFAC=(1D0/4D0)*(AEM/XW)**2*UH2/((SH-SQMW)**2+GMMW**2)
37166           WCIFAC=WFAC+SH2/(4D0*RTCM(41)**4)
37167           KFF=IABS(KFPR(ISUB,1))
37168           FCOF=1D0
37169           IF(KFF.LE.10) FCOF=3D0
37170           DO 280 I=MMIN1,MMAX1
37171             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 280
37172             IA=IABS(I)
37173             DO 270 J=MMIN2,MMAX2
37174               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 270
37175               JA=IABS(J)
37176               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 270
37177               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
37178      &        GOTO 270
37179               FCOI=1D0
37180               IF(IA.LE.10) FCOI=VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
37181               WID2=1D0
37182               IF((I.GT.0.AND.MOD(I,2).EQ.0).OR.(J.GT.0.AND.
37183      &        MOD(J,2).EQ.0)) THEN
37184                 IF(KFF.EQ.5) WID2=WIDS(6,2)
37185                 IF(KFF.EQ.7) WID2=WIDS(8,2)*WIDS(7,3)
37186                 IF(KFF.EQ.17) WID2=WIDS(18,2)*WIDS(17,3)
37187               ELSE
37188                 IF(KFF.EQ.5) WID2=WIDS(6,3)
37189                 IF(KFF.EQ.7) WID2=WIDS(8,3)*WIDS(7,2)
37190                 IF(KFF.EQ.17) WID2=WIDS(18,3)*WIDS(17,2)
37191               ENDIF
37192               NCHN=NCHN+1
37193               ISIG(NCHN,1)=I
37194               ISIG(NCHN,2)=J
37195               ISIG(NCHN,3)=1
37196               SIGH(NCHN)=COMFAC*FCOI*FCOF*WFAC*WID2
37197               IF((ITCM(5).EQ.3.AND.IA.LE.2.AND.JA.LE.2).OR.ITCM(5).EQ.4)
37198      &        SIGH(NCHN)=COMFAC*FCOI*FCOF*WCIFAC*WID2
37199   270       CONTINUE
37200   280     CONTINUE
37201         ENDIF
37202  
37203       ELSEIF(ISUB.LE.200) THEN
37204         IF(ISUB.EQ.191) THEN
37205 C...q + qbar -> rho_tc0.
37206           KCTC=PYCOMP(KTECHN+113)
37207           SQMRHT=PMAS(KCTC,1)**2
37208           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
37209           HS=SHR*WDTP(0)
37210           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
37211           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
37212           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37213           ALPRHT=2.16D0*(3D0/ITCM(1))
37214           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)
37215           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
37216           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
37217           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
37218           DO 290 I=MMINA,MMAXA
37219             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 290
37220             IA=IABS(I)
37221             EI=KCHG(IABS(I),1)/3D0
37222             AI=SIGN(1D0,EI+0.1D0)
37223             VI=AI-4D0*EI*XWV
37224             VALI=0.5D0*(VI+AI)
37225             VARI=0.5D0*(VI-AI)
37226             HI=HP*((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
37227      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)
37228             IF(IA.LE.10) HI=HI*FACA/3D0
37229             NCHN=NCHN+1
37230             ISIG(NCHN,1)=I
37231             ISIG(NCHN,2)=-I
37232             ISIG(NCHN,3)=1
37233             SIGH(NCHN)=HI*FACBW*HF
37234   290     CONTINUE
37235  
37236         ELSEIF(ISUB.EQ.192) THEN
37237 C...q + qbar' -> rho_tc+/-.
37238           KCTC=PYCOMP(KTECHN+213)
37239           SQMRHT=PMAS(KCTC,1)**2
37240           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
37241           HS=SHR*WDTP(0)
37242           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
37243           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
37244           ALPRHT=2.16D0*(3D0/ITCM(1))
37245           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)*
37246      &    (0.25D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
37247           DO 310 I=MMIN1,MMAX1
37248             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 310
37249             IA=IABS(I)
37250             DO 300 J=MMIN2,MMAX2
37251               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 300
37252               JA=IABS(J)
37253               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 300
37254               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
37255      &        GOTO 300
37256               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
37257               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHR)/2)+WDTE(0,4))
37258               HI=HP
37259               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
37260               NCHN=NCHN+1
37261               ISIG(NCHN,1)=I
37262               ISIG(NCHN,2)=J
37263               ISIG(NCHN,3)=1
37264               SIGH(NCHN)=HI*FACBW*HF
37265   300       CONTINUE
37266   310     CONTINUE
37267  
37268         ELSEIF(ISUB.EQ.193) THEN
37269 C...q + qbar -> omega_tc0.
37270           KCTC=PYCOMP(KTECHN+223)
37271           SQMOMT=PMAS(KCTC,1)**2
37272           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
37273           HS=SHR*WDTP(0)
37274           FACBW=12D0*COMFAC/((SH-SQMOMT)**2+HS**2)
37275           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
37276           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37277           ALPRHT=2.16D0*(3D0/ITCM(1))
37278           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMOMT**2/SH)*
37279      &    (2D0*RTCM(2)-1D0)**2
37280           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
37281           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
37282           DO 320 I=MMINA,MMAXA
37283             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
37284             IA=IABS(I)
37285             EI=KCHG(IABS(I),1)/3D0
37286             AI=SIGN(1D0,EI+0.1D0)
37287             VI=AI-4D0*EI*XWV
37288             VALI=0.5D0*(VI+AI)
37289             VARI=0.5D0*(VI-AI)
37290             HI=HP*((EI-VALI*BWZR)**2+(VALI*BWZI)**2+
37291      &      (EI-VARI*BWZR)**2+(VARI*BWZI)**2)
37292             IF(IA.LE.10) HI=HI*FACA/3D0
37293             NCHN=NCHN+1
37294             ISIG(NCHN,1)=I
37295             ISIG(NCHN,2)=-I
37296             ISIG(NCHN,3)=1
37297             SIGH(NCHN)=HI*FACBW*HF
37298   320     CONTINUE
37299  
37300         ELSEIF(ISUB.EQ.194) THEN
37301 C...f + fbar -> f' + fbar' via s-channel rho_tc, omega_tc a_T0.
37302 C...Default final state is e+e-
37303           KFA=KFPR(ISUBSV,1)
37304           ALPRHT=2.16D0*(3D0/ITCM(1))
37305           HP=AEM**2*COMFAC
37306 
37307           SN2W=2D0*SQRT(XW*XW1)
37308 C          TANW=SQRT(PARU(102)/(1D0-PARU(102)))
37309 C          CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
37310  
37311           QUPD=2D0*RTCM(2)-1D0
37312           FAR=SQRT(AEM/ALPRHT)
37313           FAO=FAR*QUPD
37314           FZR=FAR*CT2W
37315           FZO=-FAO*TANW
37316 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
37317           FZX=-FAR/SN2W*RTCM(47)
37318           SFAR=FAR**2
37319           SFAO=FAO**2
37320           SFZR=FZR**2
37321           SFZO=FZO**2
37322           SFZX=FZX**2
37323           CALL PYWIDT(23,SH,WDTP,WDTE)
37324           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
37325           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
37326           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
37327           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
37328           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
37329           CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
37330           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+115),1)**2/SH,WDTP(0)/SHR)
37331 C...Propagator including a_T^0
37332           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
37333      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
37334 C...Add in techni-a contribution
37335           DETD=SSMX*DETD-SFZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)
37336           DAA=(-SSMX*(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)-
37337      $     SFZX*SSMR*SSMO)/DETD/SH
37338           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH*SSMX
37339           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH*SSMX
37340  
37341           XWRHT=1D0/(4D0*XW*(1D0-XW))
37342           KFF=IABS(KFPR(ISUB,1))
37343           EF=KCHG(KFF,1)/3D0
37344           AF=SIGN(1D0,EF+0.1D0)
37345           VF=AF-4D0*EF*XWV
37346           VALF=0.5D0*(VF+AF)
37347           VARF=0.5D0*(VF-AF)
37348           FCOF=1D0
37349           IF(KFF.LE.10) FCOF=3D0
37350  
37351           WID2=1D0
37352           IF(KFF.GE.6.AND.KFF.LE.8) WID2=WIDS(KFF,1)
37353           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
37354           DZZ=DZZ*DCMPLX(XWRHT,0D0)
37355           DAZ=DAZ*DCMPLX(SQRT(XWRHT),0D0)
37356  
37357           DO 330 I=MMINA,MMAXA
37358             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 330
37359             EI=KCHG(IABS(I),1)/3D0
37360             AI=SIGN(1D0,EI+0.1D0)
37361             VI=AI-4D0*EI*XWV
37362             VALI=0.5D0*(VI+AI)
37363             VARI=0.5D0*(VI-AI)
37364             FCOI=FCOF
37365             IF(IABS(I).LE.10) FCOI=FCOI/3D0
37366             DIFLL=ABS(EI*EF*DAA+VALI*VALF*DZZ+DAZ*(EI*VALF+EF*VALI))**2
37367             DIFRR=ABS(EI*EF*DAA+VARI*VARF*DZZ+DAZ*(EI*VARF+EF*VARI))**2
37368             DIFLR=ABS(EI*EF*DAA+VALI*VARF*DZZ+DAZ*(EI*VARF+EF*VALI))**2
37369             DIFRL=ABS(EI*EF*DAA+VARI*VALF*DZZ+DAZ*(EI*VALF+EF*VARI))**2
37370             FACSIG=(DIFLL+DIFRR)*((UH-SQM4)**2+SH*SQM4)+
37371      &      (DIFLR+DIFRL)*((TH-SQM3)**2+SH*SQM3)
37372             NCHN=NCHN+1
37373             ISIG(NCHN,1)=I
37374             ISIG(NCHN,2)=-I
37375             ISIG(NCHN,3)=1
37376             SIGH(NCHN)=HP*FCOI*FACSIG*WID2
37377   330     CONTINUE
37378  
37379         ELSEIF(ISUB.EQ.195) THEN
37380 C...f + fbar' -> f'' + fbar''' via s-channel rho_tc+, a_T+
37381           KFA=KFPR(ISUBSV,1)
37382           KFB=KFA+1
37383           ALPRHT=2.16D0*(3D0/ITCM(1))
37384           FACTC=COMFAC*(AEM**2/12D0/XW**2)*(UH-SQM3)*(UH-SQM4)*3D0
37385  
37386           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
37387 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
37388 C
37389 C...Propagator including a_T^+
37390           FWX=-FWR*RTCM(47)
37391           CALL PYWIDT(24,SH,WDTP,WDTE)
37392           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
37393           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
37394           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
37395           CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
37396           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+215),1)**2/SH,WDTP(0)/SHR)
37397           DETD=SSMX*(SSMZ*SSMR-DCMPLX(FWR**2,0D0))-
37398      &     DCMPLX(FWX**2,0D0)*SSMR
37399           DWW=SSMR*SSMX/DETD/SH
37400           FCOF=1D0
37401           IF(KFA.LE.8) FCOF=3D0
37402           HP=FACTC*ABS(DWW)**2*FCOF
37403  
37404           DO 350 I=MMIN1,MMAX1
37405             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 350
37406             IA=IABS(I)
37407             DO 340 J=MMIN2,MMAX2
37408               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 340
37409               JA=IABS(J)
37410               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 340
37411               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
37412      &        GOTO 340
37413               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
37414               HI=HP
37415               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
37416               NCHN=NCHN+1
37417               ISIG(NCHN,1)=I
37418               ISIG(NCHN,2)=J
37419               ISIG(NCHN,3)=1
37420               SIGH(NCHN)=HI*WIDS(KFA,(5-KCHR)/2)*WIDS(KFB,(5+KCHR)/2)
37421   340       CONTINUE
37422   350     CONTINUE
37423         ENDIF
37424  
37425       ELSEIF(ISUB.LE.380) THEN
37426         ALPRHT=2.16D0*(3D0/ITCM(1))
37427         IF(ISUB.EQ.361) THEN
37428           FAR=SQRT(AEM/ALPRHT)
37429           FAO=FAR*QUPD
37430           FZR=FAR*CT2W
37431           FZO=-FAO*TANW
37432 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
37433           FZX=-FAR/SN2W*RTCM(47)
37434           SFAR=FAR**2
37435           SFAO=FAO**2
37436           SFZR=FZR**2
37437           SFZO=FZO**2
37438           SFZX=FZX**2
37439           CALL PYWIDT(23,SH,WDTP,WDTE)
37440           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
37441           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
37442           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
37443           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
37444           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
37445           CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
37446           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+115),1)**2/SH,WDTP(0)/SHR)
37447           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
37448      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
37449 C...Add in techni-a contribution
37450           DETD=SSMX*DETD-SFZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)
37451           DARHO=-(SSMX*(-FAR*SFZO+FAO*FZO*FZR+FAR*SSMO*SSMZ)-
37452      $     SFZX*FAR*SSMO)/DETD/SH
37453           DZRHO=-(-FZR*SFAO+FAO*FZO*FAR+FZR*SSMO)/DETD/SH*SSMX
37454           DAOME=-(SSMX*(-FAO*SFZR+FAR*FZO*FZR+FAO*SSMR*SSMZ)-
37455      $     SFZX*FAO*SSMR)/DETD/SH
37456           DZOME=-(-FZO*SFAR+FAR*FAO*FZR+FZO*SSMR)/DETD/SH*SSMX
37457           DAAST=-FZX*(FAO*FZO*SSMR+FAR*FZR*SSMO)/DETD/SH
37458           DZAST=-FZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)/DETD/SH
37459           DAA=(-SSMX*(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)-
37460      $     SFZX*SSMR*SSMO)/DETD/SH
37461           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH*SSMX
37462           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH*SSMX
37463  
37464 C...f + fbar -> gamma pi_tc, gamma pi_tc', Z pi_tc, Z pi_tc',
37465 C...W+W-, W pi_tc, pi_T pi_T, etc.
37466           FACA=(SH**2*BE34**2-(TH-UH)**2)
37467           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
37468           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
37469           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
37470           HP=(1D0/24D0)*AEM**2*COMFAC*3D0*SH 
37471           DO 370 I=MMINA,MMAXA
37472             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 370
37473             IA=IABS(I)
37474             EI=KCHG(IABS(I),1)/3D0
37475             AI=SIGN(1D0,EI+0.1D0)
37476             VI=AI-4D0*EI*XWV
37477             VALI=0.25D0*(VI+AI) ! = \zeta_{iL} in PRD67-115011
37478             VARI=0.25D0*(VI-AI) ! = \zeta_{iR} in PRD67-115011
37479 C...........Eqs. (5) and (6) in LSTC-rates.pdf
37480             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*VRGP
37481             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*VOGP
37482             F2L=F2L+(EI*DAAST+VALI*DZAST/SQRT(XW*XW1))*VXGP
37483             F2L=F2L+FANOM*(VAGP*(EI*DAA+VALI*DAZ/SQRT(XW*XW1))+
37484      $                    VZGP*(EI*DAZ+VALI*DZZ/SQRT(XW*XW1)))
37485             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*VRGP
37486             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*VOGP
37487             F2R=F2R+(EI*DAAST+VARI*DZAST/SQRT(XW*XW1))*VXGP
37488             F2R=F2R+FANOM*(VAGP*(EI*DAA+VARI*DAZ/SQRT(XW*XW1))+
37489      $                    VZGP*(EI*DAZ+VARI*DZZ/SQRT(XW*XW1)))
37490             HI=(ABS(F2L)**2+ABS(F2R)**2)*VFAC
37491 C...........Eqs. (5) and (7) in LSTC-rates.pdf
37492             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*ARGP
37493             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*AOGP
37494             F2L=F2L+(EI*DAAST+VALI*DZAST/SQRT(XW*XW1))*AXGP
37495             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*ARGP
37496             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*AOGP
37497             F2R=F2R+(EI*DAAST+VARI*DZAST/SQRT(XW*XW1))*AXGP
37498             HJ=(ABS(F2L)**2+ABS(F2R)**2)*AFAC
37499 C
37500 C...........Eqs. (24) in PRD67-115011 with DAA, etc.terms dropped.
37501 C
37502 c$$$            F2L=EI*(DARHO/FAR+(DAA+CT2W*DAZ))+
37503 c$$$     $      VALI*(CT2W*DZRHO/FZR+(CT2W*DZZ+DAZ))/SQRT(XW*XW1)
37504 c$$$            F2R=EI*(DARHO/FAR+(DAA+CT2W*DAZ))+
37505 c$$$     $      VARI*(CT2W*DZRHO/FZR+(CT2W*DZZ+DAZ))/SQRT(XW*XW1)
37506             F2L=EI*DARHO/FAR + VALI*CT2W*DZRHO/FZR/SQRT(XW*XW1)
37507             F2R=EI*DARHO/FAR + VARI*CT2W*DZRHO/FZR/SQRT(XW*XW1)
37508             HK=(ABS(F2L)**2+ABS(F2R)**2)*2D0*FACA*CAB2/SH
37509             HI=HI+HJ+HK
37510             IF(IA.LE.10) HI=HI/3D0
37511             NCHN=NCHN+1
37512             ISIG(NCHN,1)=I
37513             ISIG(NCHN,2)=-I
37514             ISIG(NCHN,3)=1
37515             IF(KFA.EQ.KFB) THEN
37516                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),1)
37517             ELSEIF(ISUBSV.EQ.362.OR.ISUBSV.EQ.368) THEN
37518                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),3)
37519                NCHN=NCHN+1
37520                ISIG(NCHN,1)=I
37521                ISIG(NCHN,2)=-I
37522                ISIG(NCHN,3)=2
37523                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),3)*WIDS(PYCOMP(KFB),2)
37524             ELSE 
37525                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),2)
37526             ENDIF
37527   370     CONTINUE
37528  
37529         ELSEIF(ISUB.EQ.370) THEN
37530 C...f + fbar' -> W_L Z_L, W_L Z_T, W_T, Z_L, W_L pi_tc, Z_L pi_tc, pi_tc pi_tc
37531 C...f + fbar' -> gamma pi_tc, etc.
37532           FACA=(SH**2*BE34**2-(TH-UH)**2)
37533           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
37534           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
37535           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
37536           ALPRHT=2.16D0*(3D0/ITCM(1))
37537           FACHP=(1D0/48D0)*AEM**2/XW*COMFAC*3D0*SH
37538           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
37539 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
37540           FWX=-FWR*RTCM(47)
37541           CALL PYWIDT(24,SH,WDTP,WDTE)
37542           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
37543           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
37544           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
37545           CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
37546           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+215),1)**2/SH,WDTP(0)/SHR)
37547           DETD=SSMX*(SSMZ*SSMR-DCMPLX(FWR**2,0D0))-
37548      &     DCMPLX(FWX**2,0D0)*SSMR
37549           DWW=SSMR*SSMX/DETD/SH
37550           DWRHO=-DCMPLX(FWR,0D0)*SSMX/DETD/SH
37551           DWAST=-DCMPLX(FWX,0D0)*SSMR/DETD/SH
37552           HP=FACHP*(AFAC*ABS(DWRHO*ARGP+DWAST*AXGP)**2+
37553      $    VFAC*ABS(FANOM*DWW*VWGP+DWRHO*VRGP+DWAST*VXGP)**2)
37554 C
37555 C...........Eq. (25) in PRD67-115011 with DWW term dropped.
37556 C
37557 c$$$          HP=HP+.5D0*FACHP*CAB2*FACA/XW/SH*ABS(DWW + DWRHO/FWR)**2
37558           HP=HP+.5D0*FACHP*CAB2*FACA/XW/SH*ABS(DWRHO/FWR)**2
37559 C...Add in W_L Z_T axial and vector contributions.
37560           IF(ISUBSV.EQ.370) HP=HP+FACHP*RTCM(3)**2*(
37561      $    (TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM4)*     !AFAC w/ switched masses.
37562      $    ABS(DWRHO/RTCM(13)-DWAST/RTCM(49)*CS2W)**2/SN2W**2+
37563      $    VFAC*QUPD**2*XW/XW1*ABS(DWRHO)**2/RTCM(12)**2)
37564           DO 410 I=MMIN1,MMAX1
37565             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 410
37566             IA=IABS(I)
37567             DO 400 J=MMIN2,MMAX2
37568               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 400
37569               JA=IABS(J)
37570               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 400
37571               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
37572      &        GOTO 400
37573               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
37574               HI=HP
37575               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
37576               NCHN=NCHN+1
37577               ISIG(NCHN,1)=I
37578               ISIG(NCHN,2)=J
37579               ISIG(NCHN,3)=1
37580               IF(ISUBSV.EQ.374.OR.ISUBSV.EQ.378) THEN
37581                 SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)
37582               ELSE
37583                 SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)*
37584      &          WIDS(PYCOMP(KFB),2)
37585               ENDIF
37586   400       CONTINUE
37587   410     CONTINUE
37588         ENDIF
37589  
37590       ELSEIF(ISUB.LE.390) THEN
37591         IF(ISUB.EQ.381) THEN
37592 C...f + f' -> f + f' (g exchange)
37593           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)*SQDQQT
37594           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)*SQDQQT*FACA-
37595      &    MSTP(34)*2D0/3D0*UH2*REDQST)
37596           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)*SQDQQU
37597           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
37598           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
37599           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
37600 C...Modifications from contact interactions (compositeness)
37601             FACCI1=FACQQ1+COMFAC*(SH2/RTCM(41)**4)
37602             FACCIB=FACQQB+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
37603      &      (UH2/TH+UH2/SH)+COMFAC*(5D0/3D0)*(UH2/RTCM(41)**4)
37604             FACCI2=FACQQ2+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
37605      &      (SH2/TH+SH2/UH)+COMFAC*(5D0/3D0)*(SH2/RTCM(41)**4)
37606             FACCI3=FACQQ1+COMFAC*(UH2/RTCM(41)**4)
37607             RATCII=(FACCI1+FACCI2+FACQQI)/(FACCI1+FACCI2)
37608           ELSEIF(ITCM(5).EQ.5) THEN
37609             FACCI1=FACQQ1
37610             FACCIB=FACQQB
37611             FACCI2=FACQQ2
37612             FACCI3=FACQQ1
37613 CSM.......Check this change from
37614 CSM            RATCII=1D0
37615             RATCII=RATQQI
37616           ENDIF
37617           DO 430 I=MMIN1,MMAX1
37618             IA=IABS(I)
37619             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
37620             DO 420 J=MMIN2,MMAX2
37621               JA=IABS(J)
37622               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
37623               NCHN=NCHN+1
37624               ISIG(NCHN,1)=I
37625               ISIG(NCHN,2)=J
37626               ISIG(NCHN,3)=1
37627               IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.(IA.GE.3.OR.
37628      &        JA.GE.3))) THEN
37629                 SIGH(NCHN)=FACQQ1
37630                 IF(I.EQ.-J) SIGH(NCHN)=FACQQB
37631               ELSE
37632                 SIGH(NCHN)=FACCI1
37633                 IF(I*J.LT.0) SIGH(NCHN)=FACCI3
37634                 IF(I.EQ.-J) SIGH(NCHN)=FACCIB
37635               ENDIF
37636               IF(I.EQ.J) THEN
37637                 NCHN=NCHN+1
37638                 ISIG(NCHN,1)=I
37639                 ISIG(NCHN,2)=J
37640                 ISIG(NCHN,3)=2
37641                 IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IA.GE.3)) THEN
37642                   SIGH(NCHN-1)=0.5D0*FACQQ1*RATQQI
37643                   SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
37644                 ELSE
37645                   SIGH(NCHN-1)=0.5D0*FACCI1*RATCII
37646                   SIGH(NCHN)=0.5D0*FACCI2*RATCII
37647                 ENDIF
37648               ENDIF
37649   420       CONTINUE
37650   430     CONTINUE
37651  
37652         ELSEIF(ISUB.EQ.382) THEN
37653 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
37654           CALL PYWIDT(21,SH,WDTP,WDTE)
37655           FACQQF=COMFAC*AS**2*4D0/9D0*(TH2+UH2)
37656           FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37657           IF(ITCM(5).EQ.1) THEN
37658 C...Modifications from contact interactions (compositeness)
37659             FACCIB=FACQQB
37660             DO 440 I=1,2
37661               FACCIB=FACCIB+COMFAC*(UH2/RTCM(41)**4)*(WDTE(I,1)+
37662      &        WDTE(I,2)+WDTE(I,4))
37663   440       CONTINUE
37664           ELSEIF(ITCM(5).GE.2.AND.ITCM(5).LE.4) THEN
37665             FACCIB=FACQQB+COMFAC*(UH2/RTCM(41)**4)*
37666      &      (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37667           ELSEIF(ITCM(5).EQ.5) THEN
37668             FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)-
37669      &      WDTE(5,1)-WDTE(5,2)-WDTE(5,4))
37670             FACCIB=FACQQF*SQDQTS*(WDTE(5,1)+WDTE(5,2)+WDTE(5,4))
37671           ENDIF
37672           DO 450 I=MMINA,MMAXA
37673             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
37674      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 450
37675             NCHN=NCHN+1
37676             ISIG(NCHN,1)=I
37677             ISIG(NCHN,2)=-I
37678             ISIG(NCHN,3)=1
37679             IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IABS(I).GE.3)) THEN
37680               SIGH(NCHN)=FACQQB
37681             ELSEIF(ITCM(5).EQ.5) THEN
37682               SIGH(NCHN)=FACQQB
37683               NCHN=NCHN+1
37684               ISIG(NCHN,1)=I
37685               ISIG(NCHN,2)=-I
37686               ISIG(NCHN,3)=2
37687               SIGH(NCHN)=FACCIB
37688             ELSE
37689               SIGH(NCHN)=FACCIB
37690             ENDIF
37691   450     CONTINUE
37692  
37693         ELSEIF(ISUB.EQ.383) THEN
37694 C...f + fbar -> g + g (q + qbar -> g + g only)
37695           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
37696      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
37697           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
37698      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
37699           IF(ITCM(5).EQ.5) THEN
37700             FACGG3=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
37701      &      UH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
37702             FACGG4=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
37703      &      TH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
37704           ENDIF
37705           DO 460 I=MMINA,MMAXA
37706             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
37707      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
37708             NCHN=NCHN+1
37709             ISIG(NCHN,1)=I
37710             ISIG(NCHN,2)=-I
37711             ISIG(NCHN,3)=1
37712             SIGH(NCHN)=0.5D0*FACGG1
37713             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG3
37714             NCHN=NCHN+1
37715             ISIG(NCHN,1)=I
37716             ISIG(NCHN,2)=-I
37717             ISIG(NCHN,3)=2
37718             SIGH(NCHN)=0.5D0*FACGG2
37719             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG4
37720   460     CONTINUE
37721  
37722         ELSEIF(ISUB.EQ.384) THEN
37723 C...f + g -> f + g (q + g -> q + g only)
37724           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
37725      &    UH/SH-9D0/4D0*SH*UH/TH2*SQDLGT)*FACA
37726           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
37727      &    SH/UH-9D0/4D0*SH*UH/TH2*SQDLGT)
37728           DO 480 I=MMINA,MMAXA
37729             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 480
37730             DO 470 ISDE=1,2
37731               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 470
37732               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 470
37733               NCHN=NCHN+1
37734               ISIG(NCHN,ISDE)=I
37735               ISIG(NCHN,3-ISDE)=21
37736               ISIG(NCHN,3)=1
37737               SIGH(NCHN)=FACQG1
37738               NCHN=NCHN+1
37739               ISIG(NCHN,ISDE)=I
37740               ISIG(NCHN,3-ISDE)=21
37741               ISIG(NCHN,3)=2
37742               SIGH(NCHN)=FACQG2
37743   470       CONTINUE
37744   480     CONTINUE
37745  
37746         ELSEIF(ISUB.EQ.385) THEN
37747 C...g + g -> f + fbar (g + g -> q + qbar only)
37748           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 500
37749           IDC0=MDCY(21,2)-1
37750 C...Begin by d, u, s flavours.
37751           FLAVWT=0D0
37752           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
37753      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
37754           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
37755      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
37756           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
37757      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
37758           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
37759      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
37760           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
37761      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
37762           NCHN=NCHN+1
37763           ISIG(NCHN,1)=21
37764           ISIG(NCHN,2)=21
37765           ISIG(NCHN,3)=1
37766           SIGH(NCHN)=FACQQ1
37767           NCHN=NCHN+1
37768           ISIG(NCHN,1)=21
37769           ISIG(NCHN,2)=21
37770           ISIG(NCHN,3)=2
37771           SIGH(NCHN)=FACQQ2
37772 C...Next c and b flavours: modified that and uhat for fixed
37773 C...cos(theta-hat).
37774           DO 490 IFL=4,5
37775           SQMAVG=PMAS(IFL,1)**2
37776           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
37777             BE34=SQRT(1D0-4D0*SQMAVG/SH)
37778             THQ=-0.5D0*SH*(1D0-BE34*CTH)
37779             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
37780             THUHQ=THQ*UHQ-SQMAVG*SH
37781             IF(MSTP(34).EQ.0) THEN
37782               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
37783               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
37784             ELSE
37785               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
37786      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
37787               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
37788      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
37789             ENDIF
37790             IF(ITCM(5).GE.5) THEN
37791               IF(IFL.EQ.4) THEN
37792                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
37793      &          2.25D0*THQ*UHQ/SH2*SQDLGS
37794                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
37795      &          2.25D0*THQ*UHQ/SH2*SQDLGS
37796               ELSE
37797                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
37798      &          2.25D0*THQ*UHQ/SH2*SQDHGS
37799                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
37800      &          2.25D0*THQ*UHQ/SH2*SQDHGS
37801               ENDIF
37802             ENDIF
37803             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
37804             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
37805             NCHN=NCHN+1
37806             ISIG(NCHN,1)=21
37807             ISIG(NCHN,2)=21
37808             ISIG(NCHN,3)=1+2*(IFL-3)
37809             SIGH(NCHN)=FACQQ1
37810             NCHN=NCHN+1
37811             ISIG(NCHN,1)=21
37812             ISIG(NCHN,2)=21
37813             ISIG(NCHN,3)=2+2*(IFL-3)
37814             SIGH(NCHN)=FACQQ2
37815           ENDIF
37816   490     CONTINUE
37817   500     CONTINUE
37818  
37819         ELSEIF(ISUB.EQ.386) THEN
37820 C...g + g -> g + g
37821           IF(ITCM(5).LE.4) THEN
37822             FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
37823      &      2D0*TH/SH+TH2/SH2)*FACA
37824             FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
37825      &      2D0*SH/UH+SH2/UH2)*FACA
37826             FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+
37827      &      2D0*UH/TH+UH2/TH2)
37828           ELSE
37829             GST=  (12D0 + 40D0*TH/SH + 56D0*TH2/SH2 + 32D0*TH**3/SH**3 +
37830      &      16D0*TH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*TH + 16D0*TH2)+
37831      &      4D0*REDGST*(SH + 2D0*TH)*
37832      &      (2D0*SH**3 - 3D0*SH2*TH - 2D0*SH*TH2 + 2D0*TH**3)/SH2 +
37833      &      2D0*REDGGS*(2D0*SH - 12D0*TH2/SH - 8D0*TH**3/SH2) +
37834      &      2D0*REDGGT*(4D0*SH - 22D0*TH - 68D0*TH2/SH - 60D0*TH**3/SH2-
37835      &      32D0*TH**4/SH**3 - 16D0*TH**5/SH**4) +
37836      &      SQDGGT*(16D0*SH2 + 16D0*SH*TH + 68D0*TH2 + 144D0*TH**3/SH +
37837      &      96D0*TH**4/SH2 + 32D0*TH**5/SH**3 + 16D0*TH**6/SH**4))/16D0
37838             GSU=  (12D0 + 40D0*UH/SH + 56D0*UH2/SH2 + 32D0*UH**3/SH**3 +
37839      &      16D0*UH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*UH + 16D0*UH2)+
37840      &      4D0*REDGSU*(SH + 2D0*UH)*
37841      &      (2D0*SH**3 - 3D0*SH2*UH - 2D0*SH*UH2 + 2D0*UH**3)/SH2 +
37842      &      2D0*REDGGS*(2D0*SH - 12D0*UH2/SH - 8D0*UH**3/SH2) +
37843      &      2D0*REDGGU*(4D0*SH - 22D0*UH - 68D0*UH2/SH - 60D0*UH**3/SH2-
37844      &      32D0*UH**4/SH**3 - 16D0*UH**5/SH**4) +
37845      &      SQDGGU*(16D0*SH2 + 16D0*SH*UH + 68D0*UH2 + 144D0*UH**3/SH +
37846      &      96D0*UH**4/SH2 + 32D0*UH**5/SH**3 + 16D0*UH**6/SH**4))/16D0
37847             GUT=  (12D0 - 16D0*TH*(TH - UH)**2*UH/SH**4 +
37848      &      4D0*REDGGU*(2D0*TH**5 - 15D0*TH**4*UH - 48D0*TH**3*UH2 -
37849      &      58D0*TH2*UH**3 - 10D0*TH*UH**4 + UH**5)/SH**4 +
37850      &      4D0*REDGGT*(TH**5 - 10D0*TH**4*UH - 58D0*TH**3*UH2 -
37851      &      48D0*TH2*UH**3 - 15D0*TH*UH**4 + 2D0*UH**5)/SH**4 +
37852      &      4D0*SQDGGU*(4D0*TH**6 + 20D0*TH**5*UH + 57D0*TH**4*UH2 +
37853      &      72D0*TH**3*UH**3+ 38D0*TH2*UH**4+4D0*TH*UH**5 +UH**6)/SH**4+
37854      &      4D0*SQDGGT*(4D0*UH**6 + 4D0*TH**5*UH + 38D0*TH**4*UH2 +
37855      &      72D0*TH**3*UH**3 +57D0*TH2*UH**4+20D0*TH*UH**5+TH**6)/SH**4+
37856      &      2D0*REDGTU*((TH - UH)**2* (TH**4 + 20D0*TH**3*UH +
37857      &      30D0*TH2*UH2 + 20D0*TH*UH**3 + UH**4) +
37858      &      SH2*(7D0*TH**4 + 52D0*TH**3*UH + 274D0*TH2*UH2 +
37859      &      52D0*TH*UH**3 + 7D0*UH**4))/(2D0*SH**4))/16D0
37860             FACGG1=COMFAC*AS**2*9D0/4D0*GST*FACA
37861             FACGG2=COMFAC*AS**2*9D0/4D0*GSU*FACA
37862             FACGG3=COMFAC*AS**2*9D0/4D0*GUT
37863           ENDIF
37864           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 510
37865           NCHN=NCHN+1
37866           ISIG(NCHN,1)=21
37867           ISIG(NCHN,2)=21
37868           ISIG(NCHN,3)=1
37869           SIGH(NCHN)=0.5D0*FACGG1
37870           NCHN=NCHN+1
37871           ISIG(NCHN,1)=21
37872           ISIG(NCHN,2)=21
37873           ISIG(NCHN,3)=2
37874           SIGH(NCHN)=0.5D0*FACGG2
37875           NCHN=NCHN+1
37876           ISIG(NCHN,1)=21
37877           ISIG(NCHN,2)=21
37878           ISIG(NCHN,3)=3
37879           SIGH(NCHN)=0.5D0*FACGG3
37880   510     CONTINUE
37881  
37882         ELSEIF(ISUB.EQ.387) THEN
37883 C...q + qbar -> Q + Qbar
37884           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
37885           THQ=-0.5D0*SH*(1D0-BE34*CTH)
37886           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
37887           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
37888      &    2D0*SQMAVG/SH)
37889           IF(ITCM(5).GE.5) THEN
37890             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
37891               FACQQB=FACQQB*SH2*SQDQTS
37892             ELSE
37893               FACQQB=FACQQB*SH2*SQDQQS
37894             ENDIF
37895           ENDIF
37896           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
37897           WID2=1D0
37898           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
37899           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
37900           FACQQB=FACQQB*WID2
37901           DO 520 I=MMINA,MMAXA
37902             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
37903      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 520
37904             NCHN=NCHN+1
37905             ISIG(NCHN,1)=I
37906             ISIG(NCHN,2)=-I
37907             ISIG(NCHN,3)=1
37908             SIGH(NCHN)=FACQQB
37909   520     CONTINUE
37910  
37911         ELSEIF(ISUB.EQ.388) THEN
37912 C...g + g -> Q + Qbar
37913           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
37914           THQ=-0.5D0*SH*(1D0-BE34*CTH)
37915           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
37916           THUHQ=THQ*UHQ-SQMAVG*SH
37917           IF(MSTP(34).EQ.0) THEN
37918             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
37919             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
37920           ELSE
37921             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
37922      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
37923             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
37924      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
37925           ENDIF
37926           IF(ITCM(5).GE.5) THEN
37927             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
37928               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
37929      &        2.25D0*THQ*UHQ/SH2*SQDHGS
37930               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
37931      &        2.25D0*THQ*UHQ/SH2*SQDHGS
37932             ELSE
37933               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
37934      &        2.25D0*THQ*UHQ/SH2*SQDLGS
37935               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
37936      &        2.25D0*THQ*UHQ/SH2*SQDLGS
37937             ENDIF
37938           ENDIF
37939           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
37940           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
37941           IF(MSTP(35).GE.1) THEN
37942             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
37943             FACQQ1=FACQQ1*FATRE
37944             FACQQ2=FACQQ2*FATRE
37945           ENDIF
37946           WID2=1D0
37947           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
37948           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
37949           FACQQ1=FACQQ1*WID2
37950           FACQQ2=FACQQ2*WID2
37951           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 530
37952           NCHN=NCHN+1
37953           ISIG(NCHN,1)=21
37954           ISIG(NCHN,2)=21
37955           ISIG(NCHN,3)=1
37956           SIGH(NCHN)=FACQQ1
37957           NCHN=NCHN+1
37958           ISIG(NCHN,1)=21
37959           ISIG(NCHN,2)=21
37960           ISIG(NCHN,3)=2
37961           SIGH(NCHN)=FACQQ2
37962   530     CONTINUE
37963         ENDIF
37964       ENDIF
37965  
37966 CMRENNA--
37967  
37968       RETURN
37969       END
37970  
37971 C*********************************************************************
37972  
37973 C...PYSGEX
37974 C...Subprocess cross sections for assorted exotic processes,
37975 C...including Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*.
37976 C...Auxiliary to PYSIGH.
37977  
37978       SUBROUTINE PYSGEX(NCHN,SIGS)
37979  
37980 C...Double precision and integer declarations
37981       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37982       IMPLICIT INTEGER(I-N)
37983       INTEGER PYK,PYCHGE,PYCOMP
37984 C...Parameter statement to help give large particle numbers.
37985       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
37986      &KEXCIT=4000000,KDIMEN=5000000)
37987 C...Commonblocks
37988       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37989       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37990       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
37991       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
37992       COMMON/PYINT1/MINT(400),VINT(400)
37993       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
37994       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
37995       COMMON/PYINT4/MWID(500),WIDS(500,5)
37996       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
37997       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
37998      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
37999      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
38000      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
38001       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
38002      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
38003 C...Local arrays
38004       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
38005  
38006 C...Differential cross section expressions.
38007  
38008       IF(ISUB.LE.160) THEN
38009         IF(ISUB.EQ.141) THEN
38010 C...f + fbar -> gamma*/Z0/Z'0
38011           SQMZP=PMAS(32,1)**2
38012           MINT(61)=2
38013           CALL PYWIDT(32,SH,WDTP,WDTE)
38014           HP0=AEM/3D0*SH
38015           HP1=AEM/3D0*XWC*SH
38016           HP2=HP1
38017           HS=SHR*VINT(117)
38018           HSP=SHR*WDTP(0)
38019           FACZP=4D0*COMFAC*3D0
38020           DO 100 I=MMINA,MMAXA
38021             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
38022             EI=KCHG(IABS(I),1)/3D0
38023             AI=SIGN(1D0,EI)
38024             VI=AI-4D0*EI*XWV
38025             IA=IABS(I)
38026             IF(IA.LT.10) THEN
38027               IF(IA.LE.2) THEN
38028                 VPI=PARU(123-2*MOD(IABS(I),2))
38029                 API=PARU(124-2*MOD(IABS(I),2))
38030               ELSEIF(IA.LE.4) THEN
38031                 VPI=PARJ(182-2*MOD(IABS(I),2))
38032                 API=PARJ(183-2*MOD(IABS(I),2))
38033               ELSE
38034                 VPI=PARJ(190-2*MOD(IABS(I),2))
38035                 API=PARJ(191-2*MOD(IABS(I),2))
38036               ENDIF
38037             ELSE
38038               IF(IA.LE.12) THEN
38039                 VPI=PARU(127-2*MOD(IABS(I),2))
38040                 API=PARU(128-2*MOD(IABS(I),2))
38041               ELSEIF(IA.LE.14) THEN
38042                 VPI=PARJ(186-2*MOD(IABS(I),2))
38043                 API=PARJ(187-2*MOD(IABS(I),2))
38044               ELSE
38045                 VPI=PARJ(194-2*MOD(IABS(I),2))
38046                 API=PARJ(195-2*MOD(IABS(I),2))
38047               ENDIF
38048             ENDIF
38049             HI0=HP0
38050             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
38051             HI1=HP1
38052             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
38053             HI2=HP2
38054             IF(IABS(I).LE.10) HI2=HI2*FACA/3D0
38055             NCHN=NCHN+1
38056             ISIG(NCHN,1)=I
38057             ISIG(NCHN,2)=-I
38058             ISIG(NCHN,3)=1
38059 C...Special case: if only branching ratios known then use them.
38060             IF(MWID(32).EQ.2.AND.MSTP(44).EQ.3) THEN
38061               HI=0D0
38062               IF(IA.LT.10) THEN
38063                 HI=SHR*WDTP(IA)*FACA/9D0
38064               ELSEIF(IA.LT.20) THEN
38065                 HI=SHR*WDTP(IA-2)
38066               ENDIF
38067               HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38068               SIGH(NCHN)=HI*FACZP*HF/((SH-SQMZP)**2+HSP**2)
38069             ELSE
38070 C...Normal cross section.
38071               SIGH(NCHN)=FACZP*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI*
38072      &        (1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)*
38073      &        VINT(112)+EI*VPI*(1D0-SQMZP/SH)/((SH-SQMZP)**2+HSP**2)*
38074      &        (HI0*HP2+HI2*HP0)*VINT(113)+(VI**2+AI**2)/
38075      &        ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)+(VI*VPI+AI*API)*
38076      &        ((SH-SQMZ)*(SH-SQMZP)+HS*HSP)/(((SH-SQMZ)**2+HS**2)*
38077      &        ((SH-SQMZP)**2+HSP**2))*(HI1*HP2+HI2*HP1)*VINT(115)+
38078      &        (VPI**2+API**2)/((SH-SQMZP)**2+HSP**2)*HI2*HP2*VINT(116))
38079             ENDIF
38080   100     CONTINUE
38081  
38082         ELSEIF(ISUB.EQ.142) THEN
38083 C...f + fbar' -> W'+/-
38084           SQMWP=PMAS(34,1)**2
38085           CALL PYWIDT(34,SH,WDTP,WDTE)
38086           HS=SHR*WDTP(0)
38087           FACBW=4D0*COMFAC/((SH-SQMWP)**2+HS**2)*3D0
38088           HP=AEM/(24D0*XW)*SH
38089           DO 120 I=MMIN1,MMAX1
38090             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
38091             IA=IABS(I)
38092             DO 110 J=MMIN2,MMAX2
38093               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
38094               JA=IABS(J)
38095               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
38096               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
38097      &        GOTO 110
38098               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
38099 C...Special case: if only branching ratios known then use them.
38100               IF(MWID(34).EQ.2) THEN
38101                 HI=0D0
38102                 DO 105 IDC=MDCY(34,2),MDCY(34,2)+MDCY(34,3)-1
38103                   IF((IA.EQ.IABS(KFDP(IDC,1)).AND.JA.EQ.
38104      &            IABS(KFDP(IDC,2))).OR.(IA.EQ.IABS(KFDP(IDC,2))
38105      &            .AND.JA.EQ.IABS(KFDP(IDC,1))))
38106      &             HI=SHR*WDTP(IDC+1-MDCY(34,2))
38107   105           CONTINUE
38108                 IF(IA.LT.10) HI=HI*FACA/9D0
38109               ELSE
38110 C...Normal cross section.
38111                 HI=HP*(PARU(133)**2+PARU(134)**2)
38112                 IF(IA.LE.10) HI=HP*(PARU(131)**2+PARU(132)**2)*
38113      &          VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
38114               ENDIF 
38115               NCHN=NCHN+1
38116               ISIG(NCHN,1)=I
38117               ISIG(NCHN,2)=J
38118               ISIG(NCHN,3)=1
38119               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
38120               SIGH(NCHN)=HI*FACBW*HF
38121   110       CONTINUE
38122   120     CONTINUE
38123  
38124         ELSEIF(ISUB.EQ.144) THEN
38125 C...f + fbar' -> R
38126           SQMR=PMAS(41,1)**2
38127           CALL PYWIDT(41,SH,WDTP,WDTE)
38128           HS=SHR*WDTP(0)
38129           FACBW=4D0*COMFAC/((SH-SQMR)**2+HS**2)*3D0
38130           HP=AEM/(12D0*XW)*SH
38131           DO 140 I=MMIN1,MMAX1
38132             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
38133             IA=IABS(I)
38134             DO 130 J=MMIN2,MMAX2
38135               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
38136               JA=IABS(J)
38137               IF(I*J.GT.0.OR.IABS(IA-JA).NE.2) GOTO 130
38138               HI=HP
38139               IF(IA.LE.10) HI=HI*FACA/3D0
38140               HF=SHR*(WDTE(0,1)+WDTE(0,(10-(I+J))/4)+WDTE(0,4))
38141               NCHN=NCHN+1
38142               ISIG(NCHN,1)=I
38143               ISIG(NCHN,2)=J
38144               ISIG(NCHN,3)=1
38145               SIGH(NCHN)=HI*FACBW*HF
38146   130       CONTINUE
38147   140     CONTINUE
38148  
38149         ELSEIF(ISUB.EQ.145) THEN
38150 C...q + l -> LQ (leptoquark)
38151           SQMLQ=PMAS(42,1)**2
38152           CALL PYWIDT(42,SH,WDTP,WDTE)
38153           HS=SHR*WDTP(0)
38154           FACBW=4D0*COMFAC/((SH-SQMLQ)**2+HS**2)
38155           IF(ABS(SHR-PMAS(42,1)).GT.PARP(48)*PMAS(42,2)) FACBW=0D0
38156           HP=AEM/4D0*SH
38157           KFLQQ=KFDP(MDCY(42,2),1)
38158           KFLQL=KFDP(MDCY(42,2),2)
38159           DO 160 I=MMIN1,MMAX1
38160             IF(KFAC(1,I).EQ.0) GOTO 160
38161             IA=IABS(I)
38162             IF(IA.NE.KFLQQ.AND.IA.NE.IABS(KFLQL)) GOTO 160
38163             DO 150 J=MMIN2,MMAX2
38164               IF(KFAC(2,J).EQ.0) GOTO 150
38165               JA=IABS(J)
38166               IF(JA.NE.KFLQQ.AND.JA.NE.IABS(KFLQL)) GOTO 150
38167               IF(I*J.NE.KFLQQ*KFLQL) GOTO 150
38168               IF(JA.EQ.IA) GOTO 150
38169               IF(IA.EQ.KFLQQ) KCHLQ=ISIGN(1,I)
38170               IF(JA.EQ.KFLQQ) KCHLQ=ISIGN(1,J)
38171               HI=HP*PARU(151)
38172               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHLQ)/2)+WDTE(0,4))
38173               NCHN=NCHN+1
38174               ISIG(NCHN,1)=I
38175               ISIG(NCHN,2)=J
38176               ISIG(NCHN,3)=1
38177               SIGH(NCHN)=HI*FACBW*HF
38178   150       CONTINUE
38179   160     CONTINUE
38180  
38181         ELSEIF(ISUB.EQ.146) THEN
38182 C...e + gamma* -> e* (excited lepton)
38183           KFQSTR=KFPR(ISUB,1)
38184           KCQSTR=PYCOMP(KFQSTR)
38185           KFQEXC=MOD(KFQSTR,KEXCIT)
38186           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
38187           HS=SHR*WDTP(0)
38188           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
38189           QF=-RTCM(43)/2D0-RTCM(44)/2D0
38190           FACBW=FACBW*AEM*QF**2*SH/RTCM(41)**2
38191           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
38192      &    FACBW=0D0
38193           HP=SH
38194           DO 180 I=-KFQEXC,KFQEXC,2*KFQEXC
38195             DO 170 ISDE=1,2
38196               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 170
38197               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 170
38198               HI=HP
38199               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38200               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
38201               NCHN=NCHN+1
38202               ISIG(NCHN,ISDE)=I
38203               ISIG(NCHN,3-ISDE)=22
38204               ISIG(NCHN,3)=1
38205               SIGH(NCHN)=HI*FACBW*HF
38206   170       CONTINUE
38207   180     CONTINUE
38208  
38209         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
38210 C...d + g -> d* and u + g -> u* (excited quarks)
38211           KFQSTR=KFPR(ISUB,1)
38212           KCQSTR=PYCOMP(KFQSTR)
38213           KFQEXC=MOD(KFQSTR,KEXCIT)
38214           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
38215           HS=SHR*WDTP(0)
38216           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
38217           FACBW=FACBW*AS*RTCM(45)**2*SH/(3D0*RTCM(41)**2)
38218           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
38219      &    FACBW=0D0
38220           HP=SH
38221           DO 200 I=-KFQEXC,KFQEXC,2*KFQEXC
38222             DO 190 ISDE=1,2
38223               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 190
38224               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 190
38225               HI=HP
38226               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38227               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
38228               NCHN=NCHN+1
38229               ISIG(NCHN,ISDE)=I
38230               ISIG(NCHN,3-ISDE)=21
38231               ISIG(NCHN,3)=1
38232               SIGH(NCHN)=HI*FACBW*HF
38233   190       CONTINUE
38234   200     CONTINUE
38235         ENDIF
38236  
38237       ELSEIF(ISUB.LE.190) THEN
38238         IF(ISUB.EQ.162) THEN
38239 C...q + g -> LQ + lbar; LQ=leptoquark
38240           SQMLQ=PMAS(42,1)**2
38241           FACLQ=COMFAC*FACA*PARU(151)*(AS*AEM/6D0)*(-TH/SH)*
38242      &    (UH2+SQMLQ**2)/(UH-SQMLQ)**2
38243           KFLQQ=KFDP(MDCY(42,2),1)
38244           DO 220 I=MMINA,MMAXA
38245             IF(IABS(I).NE.KFLQQ) GOTO 220
38246             KCHLQ=ISIGN(1,I)
38247             DO 210 ISDE=1,2
38248               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 210
38249               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 210
38250               NCHN=NCHN+1
38251               ISIG(NCHN,ISDE)=I
38252               ISIG(NCHN,3-ISDE)=21
38253               ISIG(NCHN,3)=1
38254               SIGH(NCHN)=FACLQ*WIDS(42,(5-KCHLQ)/2)
38255   210       CONTINUE
38256   220     CONTINUE
38257  
38258         ELSEIF(ISUB.EQ.163) THEN
38259 C...g + g -> LQ + LQbar; LQ=leptoquark
38260           SQMLQ=PMAS(42,1)**2
38261           FACLQ=COMFAC*FACA*WIDS(42,1)*(AS**2/2D0)*
38262      &    (7D0/48D0+3D0*(UH-TH)**2/(16D0*SH2))*(1D0+2D0*SQMLQ*TH/
38263      &    (TH-SQMLQ)**2+2D0*SQMLQ*UH/(UH-SQMLQ)**2+4D0*SQMLQ**2/
38264      &    ((TH-SQMLQ)*(UH-SQMLQ)))
38265           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 230
38266           NCHN=NCHN+1
38267           ISIG(NCHN,1)=21
38268           ISIG(NCHN,2)=21
38269 C...Since don't know proper colour flow, randomize between alternatives
38270           ISIG(NCHN,3)=INT(1.5D0+PYR(0))
38271           SIGH(NCHN)=FACLQ
38272   230     CONTINUE
38273  
38274         ELSEIF(ISUB.EQ.164) THEN
38275 C...q + qbar -> LQ + LQbar; LQ=leptoquark
38276           DELTA=0.25D0*(SQM3-SQM4)**2/SH
38277           SQMLQ=0.5D0*(SQM3+SQM4)-DELTA
38278           TH=TH-DELTA
38279           UH=UH-DELTA
38280 C          SQMLQ=PMAS(42,1)**2
38281           FACLQA=COMFAC*WIDS(42,1)*(AS**2/9D0)*
38282      &    (SH*(SH-4D0*SQMLQ)-(UH-TH)**2)/SH2
38283           FACLQS=COMFAC*WIDS(42,1)*((PARU(151)**2*AEM**2/8D0)*
38284      &    (-SH*TH-(SQMLQ-TH)**2)/TH2+(PARU(151)*AEM*AS/18D0)*
38285      &    ((SQMLQ-TH)*(UH-TH)+SH*(SQMLQ+TH))/(SH*TH))
38286           KFLQQ=KFDP(MDCY(42,2),1)
38287           DO 240 I=MMINA,MMAXA
38288             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
38289      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 240
38290             NCHN=NCHN+1
38291             ISIG(NCHN,1)=I
38292             ISIG(NCHN,2)=-I
38293             ISIG(NCHN,3)=1
38294             SIGH(NCHN)=FACLQA
38295             IF(IABS(I).EQ.KFLQQ) SIGH(NCHN)=FACLQA+FACLQS
38296   240     CONTINUE
38297  
38298         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
38299 C...q + q' -> q" + d* and q + q' -> q" + u* (excited quarks)
38300           KFQSTR=KFPR(ISUB,2)
38301           KCQSTR=PYCOMP(KFQSTR)
38302           KFQEXC=MOD(KFQSTR,KEXCIT)
38303           FACQSA=COMFAC*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)
38304           FACQSB=COMFAC*0.25D0*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
38305      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
38306 C...Propagators: as simulated in PYOFSH and as desired
38307           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
38308           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
38309           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
38310           GMMQC=SQRT(SQM4)*WDTP(0)
38311           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
38312           FACQSA=FACQSA*HBW4C/HBW4
38313           FACQSB=FACQSB*HBW4C/HBW4
38314 C...Branching ratios.
38315           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
38316           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
38317           DO 260 I=MMIN1,MMAX1
38318             IA=IABS(I)
38319             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 260
38320             DO 250 J=MMIN2,MMAX2
38321               JA=IABS(J)
38322               IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 250
38323               IF(IA.EQ.KFQEXC.AND.I.EQ.J) THEN
38324                 NCHN=NCHN+1
38325                 ISIG(NCHN,1)=I
38326                 ISIG(NCHN,2)=J
38327                 ISIG(NCHN,3)=1
38328                 IF(I.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
38329                 IF(I.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
38330                 NCHN=NCHN+1
38331                 ISIG(NCHN,1)=I
38332                 ISIG(NCHN,2)=J
38333                 ISIG(NCHN,3)=2
38334                 IF(J.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
38335                 IF(J.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
38336               ELSEIF((IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC).AND.I*J.GT.0) THEN
38337                 NCHN=NCHN+1
38338                 ISIG(NCHN,1)=I
38339                 ISIG(NCHN,2)=J
38340                 ISIG(NCHN,3)=1
38341                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
38342                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSA*BRPOS
38343                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSA*BRNEG
38344               ELSEIF(IA.EQ.KFQEXC.AND.I.EQ.-J) THEN
38345                 NCHN=NCHN+1
38346                 ISIG(NCHN,1)=I
38347                 ISIG(NCHN,2)=J
38348                 ISIG(NCHN,3)=1
38349                 IF(I.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
38350                 IF(I.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
38351                 NCHN=NCHN+1
38352                 ISIG(NCHN,1)=I
38353                 ISIG(NCHN,2)=J
38354                 ISIG(NCHN,3)=2
38355                 IF(J.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
38356                 IF(J.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
38357               ELSEIF(I.EQ.-J) THEN
38358                 NCHN=NCHN+1
38359                 ISIG(NCHN,1)=I
38360                 ISIG(NCHN,2)=J
38361                 ISIG(NCHN,3)=1
38362                 IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
38363                 IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
38364                 NCHN=NCHN+1
38365                 ISIG(NCHN,1)=I
38366                 ISIG(NCHN,2)=J
38367                 ISIG(NCHN,3)=2
38368                 IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
38369                 IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
38370               ELSEIF(IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC) THEN
38371                 NCHN=NCHN+1
38372                 ISIG(NCHN,1)=I
38373                 ISIG(NCHN,2)=J
38374                 ISIG(NCHN,3)=1
38375                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
38376                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSB*BRPOS
38377                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSB*BRNEG
38378               ENDIF
38379   250       CONTINUE
38380   260     CONTINUE
38381  
38382         ELSEIF(ISUB.EQ.169) THEN
38383 C...q + qbar -> e + e* (excited lepton)
38384           KFQSTR=KFPR(ISUB,2)
38385           KCQSTR=PYCOMP(KFQSTR)
38386           KFQEXC=MOD(KFQSTR,KEXCIT)
38387           FACQSB=(COMFAC/12D0)*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
38388      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
38389 C...Propagators: as simulated in PYOFSH and as desired
38390           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
38391           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
38392           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
38393           GMMQC=SQRT(SQM4)*WDTP(0)
38394           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
38395           FACQSB=FACQSB*HBW4C/HBW4
38396 C...Branching ratios.
38397           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
38398           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
38399           DO 270 I=MMIN1,MMAX1
38400             IA=IABS(I)
38401             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 270
38402             J=-I
38403             JA=IABS(J)
38404             IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 270
38405             NCHN=NCHN+1
38406             ISIG(NCHN,1)=I
38407             ISIG(NCHN,2)=J
38408             ISIG(NCHN,3)=1
38409             IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
38410             IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
38411             NCHN=NCHN+1
38412             ISIG(NCHN,1)=I
38413             ISIG(NCHN,2)=J
38414             ISIG(NCHN,3)=2
38415             IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
38416             IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
38417   270     CONTINUE
38418         ENDIF
38419  
38420       ELSEIF(ISUB.LE.360) THEN
38421         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
38422 C...l + l -> H_L++/-- or H_R++/--.
38423           KFRES=KFPR(ISUB,1)
38424           KFREC=PYCOMP(KFRES)
38425           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
38426           HS=SHR*WDTP(0)
38427           FACBW=8D0*COMFAC/((SH-PMAS(KFREC,1)**2)**2+HS**2)
38428           DO 290 I=MMIN1,MMAX1
38429             IA=IABS(I)
38430             IF((IA.NE.11.AND.IA.NE.13.AND.IA.NE.15).OR.KFAC(1,I).EQ.0)
38431      &      GOTO 290
38432             DO 280 J=MMIN2,MMAX2
38433               JA=IABS(J)
38434               IF((JA.NE.11.AND.JA.NE.13.AND.JA.NE.15).OR.KFAC(2,J).EQ.0)
38435      &        GOTO 280
38436               IF(I*J.LT.0) GOTO 280
38437               KCHH=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
38438               NCHN=NCHN+1
38439               ISIG(NCHN,1)=I
38440               ISIG(NCHN,2)=J
38441               ISIG(NCHN,3)=1
38442               HI=SH*PARP(181+3*((IA-11)/2)+(JA-11)/2)**2/(8D0*PARU(1))
38443               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
38444               SIGH(NCHN)=HI*FACBW*HF
38445   280       CONTINUE
38446   290     CONTINUE
38447  
38448         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
38449 C...l + gamma -> H_L++/-- l' or l + gamma -> H_R++/-- l'.
38450           KFRES=KFPR(ISUB,1)
38451           KFREC=PYCOMP(KFRES)
38452 C...Propagators: as simulated in PYOFSH and as desired
38453           HBW3=PMAS(KFREC,1)*PMAS(KFREC,2)/((SQM3-PMAS(KFREC,1)**2)**2+
38454      &    (PMAS(KFREC,1)*PMAS(KFREC,2))**2)
38455           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
38456           GMMC=SQRT(SQM3)*WDTP(0)
38457           HBW3C=GMMC/((SQM3-PMAS(KFREC,1)**2)**2+GMMC**2)
38458           FHCC=COMFAC*AEM*HBW3C/HBW3
38459           DO 310 I=MMINA,MMAXA
38460             IA=IABS(I)
38461             IF(IA.NE.11.AND.IA.NE.13.AND.IA.NE.15) GOTO 310
38462             SQML=PMAS(IA,1)**2
38463             J=ISIGN(KFPR(ISUB,2),-I)
38464             KCHH=ISIGN(2,KCHG(IA,1)*ISIGN(1,I))
38465             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))/WDTP(0)
38466             SMM1=8D0*(SH+TH-SQM3)*(SH+TH-2D0*SQM3-SQML-SQM4)/
38467      &      (UH-SQM3)**2
38468             SMM2=2D0*((2D0*SQM3-3D0*SQML)*SQM4+(SQML-2D0*SQM4)*TH-
38469      &      (TH-SQM4)*SH)/(TH-SQM4)**2
38470             SMM3=2D0*((2D0*SQM3-3D0*SQM4+TH)*SQML-(2D0*SQML-SQM4+TH)*
38471      &      SH)/(SH-SQML)**2
38472             SMM12=4D0*((2D0*SQML-SQM4-2D0*SQM3+TH)*SH+(TH-3D0*SQM3-
38473      &      3D0*SQM4)*TH+(2D0*SQM3-2D0*SQML+3D0*SQM4)*SQM3)/
38474      &      ((UH-SQM3)*(TH-SQM4))
38475             SMM13=-4D0*((TH+SQML-2D0*SQM4)*TH-(SQM3+3D0*SQML-2D0*SQM4)*
38476      &      SQM3+(SQM3+3D0*SQML+TH)*SH-(TH-SQM3+SH)**2)/
38477      &      ((UH-SQM3)*(SH-SQML))
38478             SMM23=-4D0*((SQML-SQM4+SQM3)*TH-SQM3**2+SQM3*(SQML+SQM4)-
38479      &      3D0*SQML*SQM4-(SQML-SQM4-SQM3+TH)*SH)/
38480      &      ((SH-SQML)*(TH-SQM4))
38481             SMM=(SH/(SH-SQML))**2*(SMM1+SMM2+SMM3+SMM12+SMM13+SMM23)*
38482      &      PARP(181+3*((IA-11)/2)+(IABS(J)-11)/2)**2/(4D0*PARU(1))
38483             DO 300 ISDE=1,2
38484               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 300
38485               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 300
38486               NCHN=NCHN+1
38487               ISIG(NCHN,ISDE)=I
38488               ISIG(NCHN,3-ISDE)=22
38489               ISIG(NCHN,3)=0
38490               SIGH(NCHN)=FHCC*SMM*WIDSC
38491   300       CONTINUE
38492   310     CONTINUE
38493  
38494         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
38495 C...f + fbar -> H_L++ + H_L-- or H_R++ + H_R--
38496           KFRES=KFPR(ISUB,1)
38497           KFREC=PYCOMP(KFRES)
38498           SQMH=PMAS(KFREC,1)**2
38499           GMMH=PMAS(KFREC,1)*PMAS(KFREC,2)
38500 C...Propagators: H++/-- as simulated in PYOFSH and as desired
38501           HBW3=GMMH/((SQM3-SQMH)**2+GMMH**2)
38502           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
38503           GMMH3=SQRT(SQM3)*WDTP(0)
38504           HBW3C=GMMH3/((SQM3-SQMH)**2+GMMH3**2)
38505           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
38506           CALL PYWIDT(KFRES,SQM4,WDTP,WDTE)
38507           GMMH4=SQRT(SQM4)*WDTP(0)
38508           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
38509 C...Kinematical and coupling functions
38510           FACHH=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*(TH*UH-SQM3*SQM4)
38511           XWHH=(1D0-2D0*XWV)/(8D0*XWV*(1D0-XWV))
38512 C...Loop over allowed flavours
38513           DO 320 I=MMINA,MMAXA
38514             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
38515             EI=KCHG(IABS(I),1)/3D0
38516             AI=SIGN(1D0,EI+0.1D0)
38517             VI=AI-4D0*EI*XWV
38518             FCOI=1D0
38519             IF(IABS(I).LE.10) FCOI=FACA/3D0
38520             IF(ISUB.EQ.349) THEN
38521               HBWZ=1D0/((SH-SQMZ)**2+GMMZ**2)
38522               IF(IABS(I).LT.10) THEN
38523                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
38524      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
38525      &          (VI**2+AI**2)*XWHH**2*HBWZ)
38526               ELSE
38527                 IAOFF=181+3*((IABS(I)-11)/2)
38528                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
38529      &          (4D0*PARU(1))
38530                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
38531      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
38532      &          (VI**2+AI**2)*XWHH**2*HBWZ)+
38533      &          8D0*AEM*(EI*HSUM/(SH*TH)+
38534      &          (VI+AI)*XWHH*HSUM*(SH-SQMZ)*HBWZ/TH)+
38535      &          4D0*HSUM**2/TH2
38536               ENDIF
38537             ELSE
38538               IF(IABS(I).LT.10) THEN
38539                 DSIGHH=8D0*AEM**2*EI**2/SH2
38540               ELSE
38541                 IAOFF=181+3*((IABS(I)-11)/2)
38542                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
38543      &          (4D0*PARU(1))
38544                 DSIGHH=8D0*AEM**2*EI**2/SH2+8D0*AEM*EI*HSUM/(SH*TH)+
38545      &          4D0*HSUM**2/TH2
38546               ENDIF
38547             ENDIF
38548             NCHN=NCHN+1
38549             ISIG(NCHN,1)=I
38550             ISIG(NCHN,2)=-I
38551             ISIG(NCHN,3)=1
38552             SIGH(NCHN)=FACHH*FCOI*DSIGHH
38553   320     CONTINUE
38554  
38555         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
38556 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/-- as inner process)
38557           KFRES=KFPR(ISUB,1)
38558           KFREC=PYCOMP(KFRES)
38559           SQMH=PMAS(KFREC,1)**2
38560           IF(ISUB.EQ.351) FACNOR=PARP(190)**8*PARP(192)**2
38561           IF(ISUB.EQ.352) FACNOR=PARP(191)**6*2D0*
38562      &    PMAS(PYCOMP(9900024),1)**2
38563           FACWW=COMFAC*FACNOR*TAUP*VINT(2)*VINT(219)
38564           FACPRT=1D0/((VINT(204)**2-VINT(215))*
38565      &    (VINT(209)**2-VINT(216)))
38566           FACPRU=1D0/((VINT(204)**2+2D0*VINT(217))*
38567      &    (VINT(209)**2+2D0*VINT(218)))
38568           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
38569           HS=SHR*WDTP(0)
38570           FACBW=(1D0/PARU(1))*VINT(2)/((SH-SQMH)**2+HS**2)
38571           IF(ABS(SHR-PMAS(KFREC,1)).GT.PARP(48)*PMAS(KFREC,2))
38572      &    FACBW=0D0
38573           DO 340 I=MMIN1,MMAX1
38574             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 340
38575             IF(ISUB.EQ.352.AND.IABS(I).GT.10) GOTO 340
38576             KCHWI=(1-2*MOD(IABS(I),2))*ISIGN(1,I)
38577             DO 330 J=MMIN2,MMAX2
38578               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 330
38579               IF(ISUB.EQ.352.AND.IABS(J).GT.10) GOTO 330
38580               KCHWJ=(1-2*MOD(IABS(J),2))*ISIGN(1,J)
38581               KCHH=KCHWI+KCHWJ
38582               IF(IABS(KCHH).NE.2) GOTO 330
38583               FACLR=VINT(180+I)*VINT(180+J)
38584               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
38585               IF(I.EQ.J.AND.IABS(I).GT.10) THEN
38586                 FACPRP=0.5D0*(FACPRT+FACPRU)**2
38587               ELSE
38588                 FACPRP=FACPRT**2
38589               ENDIF
38590               NCHN=NCHN+1
38591               ISIG(NCHN,1)=I
38592               ISIG(NCHN,2)=J
38593               ISIG(NCHN,3)=1
38594               SIGH(NCHN)=FACLR*FACWW*FACPRP*FACBW*HF
38595   330       CONTINUE
38596   340     CONTINUE
38597  
38598         ELSEIF(ISUB.EQ.353) THEN
38599 C...f + fbar -> Z_R0
38600           SQMZR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
38601           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
38602           HS=SHR*WDTP(0)
38603           FACBW=4D0*COMFAC/((SH-SQMZR)**2+HS**2)*3D0
38604           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38605           HP=(AEM/(3D0*(1D0-2D0*XW)))*XWC*SH
38606           DO 350 I=MMINA,MMAXA
38607             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 350
38608             IF(IABS(I).LE.8) THEN
38609               EI=KCHG(IABS(I),1)/3D0
38610               AI=SIGN(1D0,EI+0.1D0)*(1D0-2D0*XW)
38611               VI=SIGN(1D0,EI+0.1D0)-4D0*EI*XW
38612             ELSE
38613               AI=-(1D0-2D0*XW)
38614               VI=-1D0+4D0*XW
38615             ENDIF
38616             HI=HP*(VI**2+AI**2)
38617             IF(IABS(I).LE.10) HI=HI*FACA/3D0
38618             NCHN=NCHN+1
38619             ISIG(NCHN,1)=I
38620             ISIG(NCHN,2)=-I
38621             ISIG(NCHN,3)=1
38622             SIGH(NCHN)=HI*FACBW*HF
38623   350     CONTINUE
38624  
38625         ELSEIF(ISUB.EQ.354) THEN
38626 C...f + fbar' -> W_R+/-
38627           SQMWR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
38628           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
38629           HS=SHR*WDTP(0)
38630           FACBW=4D0*COMFAC/((SH-SQMWR)**2+HS**2)*3D0
38631           HP=AEM/(24D0*XW)*SH
38632           DO 370 I=MMIN1,MMAX1
38633             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 370
38634             IA=IABS(I)
38635             DO 360 J=MMIN2,MMAX2
38636               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 360
38637               JA=IABS(J)
38638               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 360
38639               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
38640      &        GOTO 360
38641               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
38642               HI=HP*2D0
38643               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
38644               NCHN=NCHN+1
38645               ISIG(NCHN,1)=I
38646               ISIG(NCHN,2)=J
38647               ISIG(NCHN,3)=1
38648               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
38649               SIGH(NCHN)=HI*FACBW*HF
38650   360       CONTINUE
38651   370     CONTINUE
38652         ENDIF
38653  
38654       ELSEIF(ISUB.LE.400) THEN
38655         IF(ISUB.EQ.391) THEN
38656 C...f + fbar -> G*.
38657           KFGSTR=KFPR(ISUB,1)
38658           KCGSTR=PYCOMP(KFGSTR)
38659           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
38660           HS=SHR*WDTP(0)
38661           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38662           FACG=COMFAC*PARP(50)**2/(16D0*PARU(1))*SH*HF/
38663      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
38664 C...Modify cross section in wings of peak.
38665           FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4
38666           DO 380 I=MMINA,MMAXA
38667             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
38668             HI=1D0
38669             IF(IABS(I).LE.10) HI=HI*FACA/3D0
38670             NCHN=NCHN+1
38671             ISIG(NCHN,1)=I
38672             ISIG(NCHN,2)=-I
38673             ISIG(NCHN,3)=1
38674             SIGH(NCHN)=FACG*HI
38675   380     CONTINUE
38676  
38677         ELSEIF(ISUB.EQ.392) THEN
38678 C...g + g -> G*.
38679           KFGSTR=KFPR(ISUB,1)
38680           KCGSTR=PYCOMP(KFGSTR)
38681           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
38682           HS=SHR*WDTP(0)
38683           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38684           FACG=COMFAC*PARP(50)**2/(32D0*PARU(1))*SH*HF/
38685      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
38686 C...Modify cross section in wings of peak.
38687           FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4
38688           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 390
38689           NCHN=NCHN+1
38690           ISIG(NCHN,1)=21
38691           ISIG(NCHN,2)=21
38692           ISIG(NCHN,3)=1
38693           SIGH(NCHN)=FACG
38694   390     CONTINUE
38695  
38696         ELSEIF(ISUB.EQ.393) THEN
38697 C...q + qbar -> g + G*.
38698           KFGSTR=KFPR(ISUB,2)
38699           KCGSTR=PYCOMP(KFGSTR)
38700           FACG=COMFAC*PARP(50)**2*AS*SH/(72D0*PARU(1)*SQM4)*
38701      &    (4D0*(TH2+UH2)/SH2+9D0*(TH+UH)/SH+(TH2/UH+UH2/TH)/SH+
38702      &    3D0*(4D0+TH/UH+UH/TH)+4D0*(SH/UH+SH/TH)+
38703      &    2D0*SH2/(TH*UH))
38704 C...Propagators: as simulated in PYOFSH and as desired
38705           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
38706           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
38707           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
38708           HS=SQRT(SQM4)*WDTP(0)
38709           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38710           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
38711           FACG=FACG*HBW4C/HBW4
38712           DO 400 I=MMINA,MMAXA
38713             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
38714      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
38715             NCHN=NCHN+1
38716             ISIG(NCHN,1)=I
38717             ISIG(NCHN,2)=-I
38718             ISIG(NCHN,3)=1
38719             SIGH(NCHN)=FACG
38720   400     CONTINUE
38721  
38722         ELSEIF(ISUB.EQ.394) THEN
38723 C...q + g -> q + G*.
38724           KFGSTR=KFPR(ISUB,2)
38725           KCGSTR=PYCOMP(KFGSTR)
38726           FACG=-COMFAC*PARP(50)**2*AS*SH/(192D0*PARU(1)*SQM4)*
38727      &    (4D0*(SH2+UH2)/(TH*SH)+9D0*(SH+UH)/SH+SH/UH+UH2/SH2+
38728      &    3D0*TH*(4D0+SH/UH+UH/SH)/SH+4D0*TH2*(1D0/UH+1D0/SH)/SH+
38729      &    2D0*TH2*TH/(UH*SH2))
38730 C...Propagators: as simulated in PYOFSH and as desired
38731           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
38732           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
38733           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
38734           HS=SQRT(SQM4)*WDTP(0)
38735           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38736           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
38737           FACG=FACG*HBW4C/HBW4
38738           DO 420 I=MMINA,MMAXA
38739             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 420
38740             DO 410 ISDE=1,2
38741               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 410
38742               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 410
38743               NCHN=NCHN+1
38744               ISIG(NCHN,ISDE)=I
38745               ISIG(NCHN,3-ISDE)=21
38746               ISIG(NCHN,3)=1
38747               SIGH(NCHN)=FACG
38748   410       CONTINUE
38749   420     CONTINUE
38750  
38751         ELSEIF(ISUB.EQ.395) THEN
38752 C...g + g -> g + G*.
38753           KFGSTR=KFPR(ISUB,2)
38754           KCGSTR=PYCOMP(KFGSTR)
38755           FACG=COMFAC*3D0*PARP(50)**2*AS*SH/(32D0*PARU(1)*SQM4)*
38756      &    ((TH2+TH*UH+UH2)**2/(SH2*TH*UH)+2D0*(TH2/UH+UH2/TH)/SH+
38757      &    3D0*(TH/UH+UH/TH)+2D0*(SH/UH+SH/TH)+SH2/(TH*UH))
38758 C...Propagators: as simulated in PYOFSH and as desired
38759           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
38760           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
38761           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
38762           HS=SQRT(SQM4)*WDTP(0)
38763           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38764           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
38765           FACG=FACG*HBW4C/HBW4
38766           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
38767             NCHN=NCHN+1
38768             ISIG(NCHN,1)=21
38769             ISIG(NCHN,2)=21
38770             ISIG(NCHN,3)=1
38771             SIGH(NCHN)=FACG
38772           ENDIF
38773         ENDIF
38774       ELSEIF(ISUB.LE.500) THEN
38775         IF(ISUBSV.EQ.481) ISUB=482
38776 c...  GENERIC 2->(1)->2
38777         IF(ISUB.EQ.482) THEN
38778           KFRES=9900001
38779           KCRES=PYCOMP(KFRES)
38780           IF(KCRES.EQ.0) RETURN
38781           IDCY=MDCY(KCRES,2)
38782           KCOL=KCHG(KCRES,2)
38783           KCEM=KCHG(KCRES,1)
38784           FACT=COMFAC
38785           KCF1=PYCOMP(KFPR(ISUB,1))
38786           KCF2=PYCOMP(KFPR(ISUB,2))
38787           IF(ISUBSV.EQ.481) THEN
38788             SQMZR=PMAS(KCRES,1)**2
38789             CALL PYWIDT(KFRES,SH,WDTP,WDTE)
38790             HS=SHR*WDTP(0)
38791             FACBW=SH2/((SH-SQMZR)**2+HS**2)
38792             FACT=FACT*FACBW
38793           ELSE
38794             SQMH=PMAS(KCF1,1)**2
38795             GMMH=PMAS(KCF1,1)*PMAS(KCF1,2)
38796 C...Propagators: as simulated in PYOFSH and as desired
38797             HBW3=GMMH/((SQM3-SQMH)**2+GMMH**2)
38798             CALL PYWIDT(KFPR(ISUB,1),SQM3,WDTP,WDTE)
38799             GMMH3=SQRT(SQM3)*WDTP(0)
38800             HBW3C=GMMH3/((SQM3-SQMH)**2+GMMH3**2)
38801             SQMH=PMAS(KCF2,1)**2
38802             GMMH=PMAS(KCF2,1)*PMAS(KCF2,2)
38803             HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
38804             CALL PYWIDT(KFPR(ISUB,2),SQM4,WDTP,WDTE)
38805             GMMH4=SQRT(SQM4)*WDTP(0)
38806             HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
38807             FACT=FACT*(HBW3C/HBW3)*(HBW4C/HBW4)
38808           ENDIF
38809 
38810           KCI1=ABS(PYCOMP(KFDP(IDCY,1)))
38811           KCI2=ABS(PYCOMP(KFDP(IDCY,2)))
38812           JCOL1=SIGN(KCHG(KCF1,2),KFPR(ISUB,1))
38813           JCOL2=SIGN(KCHG(KCF2,2),KFPR(ISUB,2))
38814           IF(KCOL.EQ.0) THEN
38815             NCOL=1
38816           ELSEIF(KCI1.EQ.21.AND.KCI2.EQ.21.AND.KCOL.EQ.2) THEN
38817             IF(JCOL1.EQ.2.AND.JCOL2.EQ.2) THEN
38818               NCOL=3
38819             ELSE
38820               NCOL=2
38821             ENDIF
38822           ELSEIF(KCOL.EQ.-1.OR.KCOL.EQ.1) THEN
38823             NCOL=2
38824           ELSEIF(KCI1.EQ.21.AND.KCI2.EQ.21.AND.JCOL1.EQ.0.AND.
38825      $      JCOL2.EQ.0) THEN
38826             NCOL=1
38827           ELSEIF(KCOL.EQ.2.AND.((JCOL1.EQ.0.AND.JCOL2.EQ.2).OR.
38828      $      (JCOL1.EQ.2.AND.JCOL2.EQ.0))) THEN
38829             NCOL=1
38830           ELSE
38831             NCOL=2
38832           ENDIF
38833           DO 440 I=MMIN1,MMAX1
38834             IF(KFAC(1,I).EQ.0) GOTO 440
38835             IP=I
38836             IF(IP.EQ.0) IP=21
38837             IA=ABS(IP)
38838             DO 430 J=MMIN2,MMAX2
38839               IF(KFAC(2,J).EQ.0) GOTO 430
38840               JP=J
38841               IF(JP.EQ.0) JP=21
38842               JA=ABS(JP)
38843               IF((IA.EQ.KCI1.AND.JA.EQ.KCI2).OR.
38844      $          (JA.EQ.KCI1.AND.IA.EQ.KCI2)) THEN
38845                 KCHW=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
38846                 IF(ABS(KCHW).EQ.ABS(KCEM)) THEN
38847                   DO II=1,NCOL
38848                     NCHN=NCHN+1
38849                     ISIG(NCHN,1)=IP
38850                     ISIG(NCHN,2)=JP
38851                     ISIG(NCHN,3)=II
38852                     SIGH(NCHN)=FACT/NCOL
38853                   ENDDO
38854                 ENDIF
38855               ENDIF
38856  430        CONTINUE
38857  440      CONTINUE
38858         ENDIF
38859       ENDIF
38860  
38861       RETURN
38862       END
38863  
38864 C*********************************************************************
38865  
38866 C...PYPDFU
38867 C...Gives electron, muon, tau, photon, pi+, neutron, proton and hyperon
38868 C...parton distributions according to a few different parametrizations.
38869 C...Note that what is coded is x times the probability distribution,
38870 C...i.e. xq(x,Q2) etc.
38871  
38872       SUBROUTINE PYPDFU(KF,X,Q2,XPQ)
38873  
38874 C...Double precision and integer declarations.
38875       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38876       IMPLICIT INTEGER(I-N)
38877       INTEGER PYK,PYCHGE,PYCOMP
38878 C...Commonblocks.
38879       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
38880       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38881       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
38882       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38883       COMMON/PYINT1/MINT(400),VINT(400)
38884       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
38885      &XPDIR(-6:6)
38886       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
38887       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
38888      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
38889      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
38890       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT8/,
38891      &/PYINT9/,/PYINTM/
38892 C...Local arrays.
38893       DIMENSION XPQ(-25:25),XPEL(-25:25),XPGA(-6:6),VXPGA(-6:6),
38894      &XPPI(-6:6),XPPR(-6:6),XPVAL(-6:6),PPAR(6,2)
38895       SAVE PPAR
38896  
38897 C...Interface to PDFLIB.
38898       COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
38899       SAVE /W50513/
38900       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
38901      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
38902       CHARACTER*20 PARM(20)
38903       DATA VALUE/20*0D0/,PARM/20*' '/
38904 C--use nuclear pdf?      
38905       COMMON/NPDF/MASS,NSET,EPS09,INITSTR
38906       INTEGER NSET
38907       DOUBLE PRECISION MASS
38908       LOGICAL EPS09
38909       CHARACTER*10 INITSTR
38910 
38911 C...Data related to Schuler-Sjostrand photon distributions.
38912       DATA ALAMGA/0.2D0/, PMCGA/1.3D0/, PMBGA/4.6D0/
38913  
38914 C...Valence PDF momentum integral parametrizations PER PARTON!
38915       DATA (PPAR(1,IPAR),IPAR=1,2) /0.385D0,1.60D0/
38916       DATA (PPAR(2,IPAR),IPAR=1,2) /0.480D0,1.56D0/
38917       PAVG(IFL,Q2)=PPAR(IFL,1)/(1D0+PPAR(IFL,2)*
38918      &LOG(LOG(MAX(Q2,1D0)/0.04D0)))
38919  
38920 C...Reset parton distributions.
38921       MINT(92)=0
38922       DO 100 KFL=-25,25
38923         XPQ(KFL)=0D0
38924   100 CONTINUE
38925       DO 110 KFL=-6,6
38926         XPVAL(KFL)=0D0
38927   110 CONTINUE
38928  
38929 C...Check x and particle species.
38930       IF(X.LE.0D0.OR.X.GE.1D0) THEN
38931         WRITE(MSTU(11),5000) X
38932         GOTO 9999
38933       ENDIF
38934       KFA=IABS(KF)
38935       IF(KFA.NE.11.AND.KFA.NE.13.AND.KFA.NE.15.AND.KFA.NE.22.AND.
38936      &KFA.NE.211.AND.KFA.NE.2112.AND.KFA.NE.2212.AND.KFA.NE.3122.AND.
38937      &KFA.NE.3112.AND.KFA.NE.3212.AND.KFA.NE.3222.AND.KFA.NE.3312.AND.
38938      &KFA.NE.3322.AND.KFA.NE.3334.AND.KFA.NE.111.AND.KFA.NE.321.AND.
38939      &KFA.NE.310.AND.KFA.NE.130) THEN
38940         WRITE(MSTU(11),5100) KF
38941         GOTO 9999
38942       ENDIF
38943  
38944 C...Electron (or muon or tau) parton distribution call.
38945       IF(KFA.EQ.11.OR.KFA.EQ.13.OR.KFA.EQ.15) THEN
38946         CALL PYPDEL(KFA,X,Q2,XPEL)
38947         DO 120 KFL=-25,25
38948           XPQ(KFL)=XPEL(KFL)
38949   120   CONTINUE
38950  
38951 C...Photon parton distribution call (VDM+anomalous).
38952       ELSEIF(KFA.EQ.22.AND.MINT(109).LE.1) THEN
38953         IF(MSTP(56).EQ.1.AND.MSTP(55).EQ.1) THEN
38954           CALL PYPDGA(X,Q2,XPGA)
38955           DO 130 KFL=-6,6
38956             XPQ(KFL)=XPGA(KFL)
38957   130     CONTINUE
38958           XPVU=4D0*(XPQ(2)-XPQ(1))/3D0
38959           XPVAL(1)=XPVU/4D0
38960           XPVAL(2)=XPVU
38961           XPVAL(3)=MIN(XPQ(3),XPVU/4D0)
38962           XPVAL(4)=MIN(XPQ(4),XPVU)
38963           XPVAL(5)=MIN(XPQ(5),XPVU/4D0)
38964           XPVAL(-1)=XPVAL(1)
38965           XPVAL(-2)=XPVAL(2)
38966           XPVAL(-3)=XPVAL(3)
38967           XPVAL(-4)=XPVAL(4)
38968           XPVAL(-5)=XPVAL(5)
38969         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
38970           Q2MX=Q2
38971           P2MX=0.36D0
38972           IF(MSTP(55).GE.7) P2MX=4.0D0
38973           IF(MSTP(57).EQ.0) Q2MX=P2MX
38974           P2=0D0
38975           IF(VINT(120).LT.0D0) P2=VINT(120)**2
38976           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38977           DO 140 KFL=-6,6
38978             XPQ(KFL)=XPGA(KFL)
38979             XPVAL(KFL)=VXPDGM(KFL)
38980   140     CONTINUE
38981           VINT(231)=P2MX
38982         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
38983           Q2MX=Q2
38984           P2MX=0.36D0
38985           IF(MSTP(55).GE.11) P2MX=4.0D0
38986           IF(MSTP(57).EQ.0) Q2MX=P2MX
38987           P2=0D0
38988           IF(VINT(120).LT.0D0) P2=VINT(120)**2
38989           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38990           DO 150 KFL=-6,6
38991             XPQ(KFL)=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
38992             XPVAL(KFL)=VXPVMD(KFL)+VXPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
38993   150     CONTINUE
38994           VINT(231)=P2MX
38995         ELSEIF(MSTP(56).EQ.2) THEN
38996 C...Call PDFLIB parton distributions.
38997           PARM(1)='NPTYPE'
38998           VALUE(1)=3
38999           PARM(2)='NGROUP'
39000           VALUE(2)=MSTP(55)/1000
39001           PARM(3)='NSET'
39002           VALUE(3)=MOD(MSTP(55),1000)
39003           IF(MINT(93).NE.3000000+MSTP(55)) THEN
39004             CALL PDFSET(PARM,VALUE)
39005             MINT(93)=3000000+MSTP(55)
39006           ENDIF
39007           XX=X
39008           QQ2=MAX(0D0,Q2MIN,Q2)
39009           IF(MSTP(57).EQ.0) QQ2=Q2MIN
39010           P2=0D0
39011           IF(VINT(120).LT.0D0) P2=VINT(120)**2
39012           IP2=MSTP(60)
39013           IF(MSTP(55).EQ.5004) THEN
39014             IF(5D0*P2.LT.QQ2.AND.
39015      &      QQ2.GT.0.6D0.AND.QQ2.LT.5D4.AND.
39016      &      P2.GE.0D0.AND.P2.LT.10D0.AND.
39017      &      XX.GT.1D-4.AND.XX.LT.1D0) THEN
39018               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
39019      &        BOT,TOP,GLU)
39020             ELSE
39021               UPV=0D0
39022               DNV=0D0
39023               USEA=0D0
39024               DSEA=0D0
39025               STR=0D0
39026               CHM=0D0
39027               BOT=0D0
39028               TOP=0D0
39029               GLU=0D0
39030             ENDIF
39031           ELSE
39032             IF(P2.LT.QQ2) THEN
39033               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
39034      &        BOT,TOP,GLU)
39035             ELSE
39036               UPV=0D0
39037               DNV=0D0
39038               USEA=0D0
39039               DSEA=0D0
39040               STR=0D0
39041               CHM=0D0
39042               BOT=0D0
39043               TOP=0D0
39044               GLU=0D0
39045             ENDIF
39046           ENDIF
39047           VINT(231)=Q2MIN
39048           XPQ(0)=GLU
39049           XPQ(1)=DNV
39050           XPQ(-1)=DNV
39051           XPQ(2)=UPV
39052           XPQ(-2)=UPV
39053           XPQ(3)=STR
39054           XPQ(-3)=STR
39055           XPQ(4)=CHM
39056           XPQ(-4)=CHM
39057           XPQ(5)=BOT
39058           XPQ(-5)=BOT
39059           XPQ(6)=TOP
39060           XPQ(-6)=TOP
39061           XPVU=4D0*(XPQ(2)-XPQ(1))/3D0
39062           XPVAL(1)=XPVU/4D0
39063           XPVAL(2)=XPVU
39064           XPVAL(3)=MIN(XPQ(3),XPVU/4D0)
39065           XPVAL(4)=MIN(XPQ(4),XPVU)
39066           XPVAL(5)=MIN(XPQ(5),XPVU/4D0)
39067           XPVAL(-1)=XPVAL(1)
39068           XPVAL(-2)=XPVAL(2)
39069           XPVAL(-3)=XPVAL(3)
39070           XPVAL(-4)=XPVAL(4)
39071           XPVAL(-5)=XPVAL(5)
39072         ELSE
39073           WRITE(MSTU(11),5200) KF,MSTP(56),MSTP(55)
39074         ENDIF
39075  
39076 C...Pion/gammaVDM parton distribution call.
39077       ELSEIF(KFA.EQ.211.OR.KFA.EQ.111.OR.KFA.EQ.321.OR.KFA.EQ.130.OR.
39078      &KFA.EQ.310.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
39079         IF(KFA.EQ.22.AND.MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.
39080      &  MSTP(55).LE.12) THEN
39081           ISET=1+MOD(MSTP(55)-1,4)
39082           Q2MX=Q2
39083           P2MX=0.36D0
39084           IF(ISET.GE.3) P2MX=4.0D0
39085           IF(MSTP(57).EQ.0) Q2MX=P2MX
39086           P2=0D0
39087           IF(VINT(120).LT.0D0) P2=VINT(120)**2
39088           CALL PYGGAM(ISET,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
39089           DO 160 KFL=-6,6
39090             XPQ(KFL)=XPVMD(KFL)
39091             XPVAL(KFL)=VXPVMD(KFL)
39092   160     CONTINUE
39093           VINT(231)=P2MX
39094         ELSEIF(MSTP(54).EQ.1.AND.MSTP(53).GE.1.AND.MSTP(53).LE.3) THEN
39095           CALL PYPDPI(X,Q2,XPPI)
39096           DO 170 KFL=-6,6
39097             XPQ(KFL)=XPPI(KFL)
39098   170     CONTINUE
39099           XPVAL(2)=XPQ(2)-XPQ(-2)
39100           XPVAL(-1)=XPQ(-1)-XPQ(1)
39101         ELSEIF(MSTP(54).EQ.2) THEN
39102 C...Call PDFLIB parton distributions.
39103           PARM(1)='NPTYPE'
39104           VALUE(1)=2
39105           PARM(2)='NGROUP'
39106           VALUE(2)=MSTP(53)/1000
39107           PARM(3)='NSET'
39108           VALUE(3)=MOD(MSTP(53),1000)
39109           IF(MINT(93).NE.2000000+MSTP(53)) THEN
39110             CALL PDFSET(PARM,VALUE)
39111             MINT(93)=2000000+MSTP(53)
39112           ENDIF
39113           XX=X
39114           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
39115           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
39116           CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
39117           VINT(231)=Q2MIN
39118           XPQ(0)=GLU
39119           XPQ(1)=DSEA
39120           XPQ(-1)=UPV+DSEA
39121           XPQ(2)=UPV+USEA
39122           XPQ(-2)=USEA
39123           XPQ(3)=STR
39124           XPQ(-3)=STR
39125           XPQ(4)=CHM
39126           XPQ(-4)=CHM
39127           XPQ(5)=BOT
39128           XPQ(-5)=BOT
39129           XPQ(6)=TOP
39130           XPQ(-6)=TOP
39131           XPVAL(2)=UPV
39132           XPVAL(-1)=UPV
39133         ELSE
39134           WRITE(MSTU(11),5200) KF,MSTP(54),MSTP(53)
39135         ENDIF
39136  
39137 C...Anomalous photon parton distribution call.
39138       ELSEIF(KFA.EQ.22.AND.MINT(109).EQ.3) THEN
39139         Q2MX=Q2
39140         P2MX=PARP(15)**2
39141         IF(MSTP(56).EQ.1.AND.MSTP(55).LE.8) THEN
39142           IF(MSTP(55).EQ.5.OR.MSTP(55).EQ.6) P2MX=0.36D0
39143           IF(MSTP(55).EQ.7.OR.MSTP(55).EQ.8) P2MX=4.0D0
39144           IF(MSTP(57).EQ.0) Q2MX=P2MX
39145           P2=0D0
39146           IF(VINT(120).LT.0D0) P2=VINT(120)**2
39147           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
39148           DO 180 KFL=-6,6
39149             XPQ(KFL)=XPANL(KFL)+XPANH(KFL)
39150             XPVAL(KFL)=VXPANL(KFL)+VXPANH(KFL)
39151   180     CONTINUE
39152           VINT(231)=P2MX
39153         ELSEIF(MSTP(56).EQ.1) THEN
39154           IF(MSTP(55).EQ.9.OR.MSTP(55).EQ.10) P2MX=0.36D0
39155           IF(MSTP(55).EQ.11.OR.MSTP(55).EQ.12) P2MX=4.0D0
39156           IF(MSTP(57).EQ.0) Q2MX=P2MX
39157           P2=0D0
39158           IF(VINT(120).LT.0D0) P2=VINT(120)**2
39159           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
39160           DO 190 KFL=-6,6
39161             XPQ(KFL)=MAX(0D0,XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
39162             XPVAL(KFL)=MAX(0D0,VXPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
39163   190     CONTINUE
39164           VINT(231)=P2MX
39165         ELSEIF(MSTP(56).EQ.2) THEN
39166           IF(MSTP(57).EQ.0) Q2MX=P2MX
39167           CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA,VXPGA)
39168           DO 200 KFL=-6,6
39169             XPQ(KFL)=XPGA(KFL)
39170             XPVAL(KFL)=VXPGA(KFL)
39171   200     CONTINUE
39172           VINT(231)=P2MX
39173         ELSEIF(MSTP(55).GE.1.AND.MSTP(55).LE.5) THEN
39174           IF(MSTP(57).EQ.0) Q2MX=P2MX
39175           CALL PYGVMD(0,MSTP(55),X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
39176           DO 210 KFL=-6,6
39177             XPQ(KFL)=XPGA(KFL)
39178             XPVAL(KFL)=VXPGA(KFL)
39179   210     CONTINUE
39180           VINT(231)=P2MX
39181         ELSE
39182   220     RKF=11D0*PYR(0)
39183           KFR=1
39184           IF(RKF.GT.1D0) KFR=2
39185           IF(RKF.GT.5D0) KFR=3
39186           IF(RKF.GT.6D0) KFR=4
39187           IF(RKF.GT.10D0) KFR=5
39188           IF(KFR.EQ.4.AND.Q2.LT.PMCGA**2) GOTO 220
39189           IF(KFR.EQ.5.AND.Q2.LT.PMBGA**2) GOTO 220
39190           IF(MSTP(57).EQ.0) Q2MX=P2MX
39191           CALL PYGVMD(0,KFR,X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
39192           DO 230 KFL=-6,6
39193             XPQ(KFL)=XPGA(KFL)
39194             XPVAL(KFL)=VXPGA(KFL)
39195   230     CONTINUE
39196           VINT(231)=P2MX
39197         ENDIF
39198  
39199 C...Proton parton distribution call.
39200       ELSE
39201         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
39202           CALL PYPDPR(X,Q2,XPPR)
39203           DO 240 KFL=-6,6
39204             XPQ(KFL)=XPPR(KFL)
39205   240     CONTINUE
39206 C...Force VAL > 0 (can be < 0 at very small Q2 and small x apparently)
39207           XPVAL(1)=MAX(0D0,XPQ(1)-XPQ(-1))
39208           XPVAL(2)=MAX(0D0,XPQ(2)-XPQ(-2))
39209         ELSEIF(MSTP(52).EQ.2) THEN
39210 C...Call PDFLIB parton distributions.
39211           PARM(1)='NPTYPE'
39212           VALUE(1)=1
39213           PARM(2)='NGROUP'
39214           VALUE(2)=MSTP(51)/1000
39215           PARM(3)='NSET'
39216           VALUE(3)=MOD(MSTP(51),1000)
39217           IF(MINT(93).NE.1000000+MSTP(51)) THEN
39218             call setlhaparm('SILENT')
39219             CALL PDFSET(PARM,VALUE)
39220             MINT(93)=1000000+MSTP(51)
39221           ENDIF
39222           XX=X
39223           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
39224           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
39225           IF(EPS09)THEN
39226            call setlhaparm(INITSTR)
39227            CALL STRUCTA(XX,QQ,MASS,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,
39228      &                                                                          GLU)
39229           ELSE
39230            CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
39231           ENDIF
39232           VINT(231)=Q2MIN
39233           XPQ(0)=GLU
39234           XPQ(1)=DNV+DSEA
39235           XPQ(-1)=DSEA
39236           XPQ(2)=UPV+USEA
39237           XPQ(-2)=USEA
39238           XPQ(3)=STR
39239           XPQ(-3)=STR
39240           XPQ(4)=CHM
39241           XPQ(-4)=CHM
39242           XPQ(5)=BOT
39243           XPQ(-5)=BOT
39244           XPQ(6)=TOP
39245           XPQ(-6)=TOP
39246           XPVAL(1)=DNV
39247           XPVAL(2)=UPV
39248         ELSE
39249           WRITE(MSTU(11),5200) KF,MSTP(52),MSTP(51)
39250         ENDIF
39251       ENDIF
39252  
39253 C...Isospin average for pi0/gammaVDM.
39254       IF(KFA.EQ.111.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
39255         IF(KFA.EQ.22.AND.MSTP(55).GE.5.AND.MSTP(55).LE.12) THEN
39256           XPV=XPQ(2)-XPQ(1)
39257           XPQ(2)=XPQ(1)
39258           XPQ(-2)=XPQ(-1)
39259         ELSE
39260           XPS=0.5D0*(XPQ(1)+XPQ(-2))
39261           XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
39262           XPQ(2)=XPS
39263           XPQ(-1)=XPS
39264         ENDIF
39265         XPVL=0.5D0*(XPVAL(1)+XPVAL(2)+XPVAL(-1)+XPVAL(-2))+
39266      &  XPVAL(3)+XPVAL(4)+XPVAL(5)
39267         DO 250 KFL=-6,6
39268           XPVAL(KFL)=0D0
39269   250   CONTINUE
39270         IF(KFA.EQ.22.AND.MINT(105).LE.223) THEN
39271           XPQ(1)=XPQ(1)+0.2D0*XPV
39272           XPQ(2)=XPQ(2)+0.8D0*XPV
39273           XPVAL(1)=0.2D0*XPVL
39274           XPVAL(2)=0.8D0*XPVL
39275         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.333) THEN
39276           XPQ(3)=XPQ(3)+XPV
39277           XPVAL(3)=XPVL
39278         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.443) THEN
39279           XPQ(4)=XPQ(4)+XPV
39280           XPVAL(4)=XPVL
39281           IF(MSTP(55).GE.9) THEN
39282             DO 260 KFL=-6,6
39283               XPQ(KFL)=0D0
39284   260       CONTINUE
39285           ENDIF
39286         ELSE
39287           XPQ(1)=XPQ(1)+0.5D0*XPV
39288           XPQ(2)=XPQ(2)+0.5D0*XPV
39289           XPVAL(1)=0.5D0*XPVL
39290           XPVAL(2)=0.5D0*XPVL
39291         ENDIF
39292         DO 270 KFL=1,6
39293           XPQ(-KFL)=XPQ(KFL)
39294           XPVAL(-KFL)=XPVAL(KFL)
39295   270   CONTINUE
39296  
39297 C...Rescale for gammaVDM by effective gamma -> rho coupling.
39298 C+++Do not rescale?
39299         IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND..NOT.(MSTP(56).EQ.1
39300      &  .AND.MSTP(55).GE.5.AND.MSTP(55).LE.12)) THEN
39301           DO 280 KFL=-6,6
39302             XPQ(KFL)=VINT(281)*XPQ(KFL)
39303             XPVAL(KFL)=VINT(281)*XPVAL(KFL)
39304   280     CONTINUE
39305           VINT(232)=VINT(281)*XPV
39306         ENDIF
39307  
39308 C...Simple recipes for kaons.
39309       ELSEIF(KFA.EQ.321) THEN
39310         XPQ(-3)=XPQ(-3)+XPQ(-1)-XPQ(1)
39311         XPQ(-1)=XPQ(1)
39312         XPVAL(-3)=XPVAL(-1)
39313         XPVAL(-1)=0D0
39314       ELSEIF(KFA.EQ.130.OR.KFA.EQ.310) THEN
39315         XPS=0.5D0*(XPQ(1)+XPQ(-2))
39316         XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
39317         XPQ(2)=XPS
39318         XPQ(-1)=XPS
39319         XPQ(1)=XPQ(1)+0.5D0*XPV
39320         XPQ(-1)=XPQ(-1)+0.5D0*XPV
39321         XPQ(3)=XPQ(3)+0.5D0*XPV
39322         XPQ(-3)=XPQ(-3)+0.5D0*XPV
39323         XPV=0.5D0*(XPVAL(2)+XPVAL(-1))
39324         XPVAL(2)=0D0
39325         XPVAL(-1)=0D0
39326         XPVAL(1)=0.5D0*XPV
39327         XPVAL(-1)=0.5D0*XPV
39328         XPVAL(3)=0.5D0*XPV
39329         XPVAL(-3)=0.5D0*XPV
39330  
39331 C...Isospin conjugation for neutron.
39332       ELSEIF(KFA.EQ.2112) THEN
39333         XPSV=XPQ(1)
39334         XPQ(1)=XPQ(2)
39335         XPQ(2)=XPSV
39336         XPSV=XPQ(-1)
39337         XPQ(-1)=XPQ(-2)
39338         XPQ(-2)=XPSV
39339         XPSV=XPVAL(1)
39340         XPVAL(1)=XPVAL(2)
39341         XPVAL(2)=XPSV
39342  
39343 C...Simple recipes for hyperon (average valence parton distribution).
39344       ELSEIF(KFA.EQ.3122.OR.KFA.EQ.3112.OR.KFA.EQ.3212.OR.KFA.EQ.3222
39345      &  .OR.KFA.EQ.3312.OR.KFA.EQ.3322.OR.KFA.EQ.3334) THEN
39346         XPV=(XPQ(1)+XPQ(2)-XPQ(-1)-XPQ(-2))/3D0
39347         XPS=0.5D0*(XPQ(-1)+XPQ(-2))
39348         XPQ(1)=XPS
39349         XPQ(2)=XPS
39350         XPQ(-1)=XPS
39351         XPQ(-2)=XPS
39352         XPQ(KFA/1000)=XPQ(KFA/1000)+XPV
39353         XPQ(MOD(KFA/100,10))=XPQ(MOD(KFA/100,10))+XPV
39354         XPQ(MOD(KFA/10,10))=XPQ(MOD(KFA/10,10))+XPV
39355         XPV=(XPVAL(1)+XPVAL(2))/3D0
39356         XPVAL(1)=0D0
39357         XPVAL(2)=0D0
39358         XPVAL(KFA/1000)=XPVAL(KFA/1000)+XPV
39359         XPVAL(MOD(KFA/100,10))=XPVAL(MOD(KFA/100,10))+XPV
39360         XPVAL(MOD(KFA/10,10))=XPVAL(MOD(KFA/10,10))+XPV
39361       ENDIF
39362  
39363 C...Charge conjugation for antiparticle.
39364       IF(KF.LT.0) THEN
39365         DO 290 KFL=1,25
39366           IF(KFL.EQ.21.OR.KFL.EQ.22.OR.KFL.EQ.23.OR.KFL.EQ.25) GOTO 290
39367           XPSV=XPQ(KFL)
39368           XPQ(KFL)=XPQ(-KFL)
39369           XPQ(-KFL)=XPSV
39370   290   CONTINUE
39371         DO 300 KFL=1,6
39372           XPSV=XPVAL(KFL)
39373           XPVAL(KFL)=XPVAL(-KFL)
39374           XPVAL(-KFL)=XPSV
39375   300  CONTINUE
39376       ENDIF
39377  
39378 C...MULTIPLE INTERACTIONS - PDF RESHAPING.
39379 C...Set side.
39380       JS=MINT(30)
39381 C...Only reshape PDFs for the non-first interactions;
39382 C...But need valence/sea separation already from first interaction.
39383       IF ((JS.EQ.1.OR.JS.EQ.2).AND.MINT(35).GE.2) THEN
39384         KFVSEL=KFIVAL(JS,1)
39385 C...If valence quark kicked out of pi0 or gamma then that decides
39386 C...whether we should consider state as d dbar, u ubar, s sbar, etc.
39387         IF(KFVSEL.NE.0.AND.(KFA.EQ.111.OR.KFA.EQ.22)) THEN
39388           XPVL=0D0
39389           DO 310 KFL=1,6
39390             XPVL=XPVL+XPVAL(KFL)
39391             XPQ(KFL)=MAX(0D0,XPQ(KFL)-XPVAL(KFL))
39392             XPVAL(KFL)=0D0
39393   310     CONTINUE
39394           XPQ(IABS(KFVSEL))=XPQ(IABS(KFVSEL))+XPVL
39395           XPVAL(IABS(KFVSEL))=XPVL
39396           DO 320 KFL=1,6
39397             XPQ(-KFL)=XPQ(KFL)
39398             XPVAL(-KFL)=XPVAL(KFL)
39399   320     CONTINUE
39400  
39401 C...If valence quark kicked out of K0S or K0S then that decides whether
39402 C...we should consider state as d sbar or s dbar.
39403         ELSEIF(KFVSEL.NE.0.AND.(KFA.EQ.130.OR.KFA.EQ.310)) THEN
39404           KFS=1
39405           IF(KFVSEL.EQ.-1.OR.KFVSEL.EQ.3) KFS=-1
39406           XPQ(KFS)=XPQ(KFS)+XPVAL(-KFS)
39407           XPVAL(KFS)=XPVAL(KFS)+XPVAL(-KFS)
39408           XPQ(-KFS)=MAX(0D0,XPQ(-KFS)-XPVAL(-KFS))
39409           XPVAL(-KFS)=0D0
39410           KFS=-3*KFS
39411           XPQ(KFS)=XPQ(KFS)+XPVAL(-KFS)
39412           XPVAL(KFS)=XPVAL(KFS)+XPVAL(-KFS)
39413           XPQ(-KFS)=MAX(0D0,XPQ(-KFS)-XPVAL(-KFS))
39414           XPVAL(-KFS)=0D0
39415         ENDIF
39416  
39417 C...XPQ distributions are nominal for a (signed) beam particle
39418 C...of KF type, with 1-Sum(x_prev) rescaled to 1.
39419         CMPFAC=1D0
39420         NRESC=0
39421  345    NRESC=NRESC+1
39422         PVCTOT(JS,-1)=0D0
39423         PVCTOT(JS, 0)=0D0
39424         PVCTOT(JS, 1)=0D0
39425         DO 350 IFL=-6,6
39426           IF(IFL.EQ.0) GOTO 350
39427  
39428 C...Count up number of original IFL valence quarks.
39429           IVORG=0
39430           IF(KFIVAL(JS,1).EQ.IFL) IVORG=IVORG+1
39431           IF(KFIVAL(JS,2).EQ.IFL) IVORG=IVORG+1
39432           IF(KFIVAL(JS,3).EQ.IFL) IVORG=IVORG+1
39433 C...For pi0/gamma/K0S/K0L without valence flavour decided yet, here
39434 C...bookkeep as if d dbar (for total momentum sum in valence sector).
39435           IF(KFIVAL(JS,1).EQ.0.AND.IABS(IFL).EQ.1) IVORG=1
39436 C...Count down number of remaining IFL valence quarks. Skip current
39437 C...interaction initiator.
39438           IVREM=IVORG
39439           DO 330 I1=1,NMI(JS)
39440             IF (I1.EQ.MINT(36)) GOTO 330
39441             IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
39442      &           IVREM=IVREM-1
39443   330     CONTINUE
39444  
39445 C...Separate out original VALENCE and SEA content.
39446           VAL=XPVAL(IFL)
39447           SEA=MAX(0D0,XPQ(IFL)-VAL)
39448           XPSVC(IFL,0)=VAL
39449           XPSVC(IFL,-1)=SEA
39450  
39451 C...Rescale valence content if changed.
39452           IF (IVORG.NE.0.AND.IVREM.NE.IVORG) XPSVC(IFL,0)=
39453      &    (VAL*IVREM)/IVORG
39454  
39455 C...Momentum integrals of original and removed valence quarks.
39456           IF(IVORG.NE.0) THEN
39457 C...For p/n/pbar/nbar beams can split into d_val and u_val.
39458 C...Isospin conjugation for neutrons
39459             IF(KFA.EQ.2212.OR.KFA.EQ.2112) THEN
39460               IAFLP=IABS(IFL)
39461               IF (KFA.EQ.2112) IAFLP=3-IAFLP
39462               VPAVG=PAVG(IAFLP,Q2)
39463 C...For other baryons average d_val and u_val, like for PDFs.
39464             ELSEIF(KFA.GT.1000) THEN
39465               VPAVG=(PAVG(1,Q2)+2D0*PAVG(2,Q2))/3D0
39466 C...For mesons and photon average d_val and u_val and scale by 3/2.
39467 C...Very crude, especially for photon.
39468             ELSE
39469               VPAVG=0.5D0*(PAVG(1,Q2)+2D0*PAVG(2,Q2))
39470             ENDIF
39471             PVCTOT(JS,-1)=PVCTOT(JS,-1)+IVORG*VPAVG
39472             PVCTOT(JS, 0)=PVCTOT(JS, 0)+(IVORG-IVREM)*VPAVG
39473           ENDIF
39474  
39475 C...Now add companions (at X with partner having been at Z=XASSOC).
39476 C...NOTE: due to the assumed simple x scaling, the partner was at what
39477 C...corresponds to a higher Z than XASSOC, if there were intermediate
39478 C...scatterings. Nothing done about that for the moment.
39479           DO 340 IVC=1,NVC(JS,IFL)
39480 C...Skip companions that have been kicked out
39481             IF (XASSOC(JS,IFL,IVC).LE.0D0) THEN
39482               XPSVC(IFL,IVC)=0D0
39483               GOTO 340
39484             ELSE
39485 C...Momentum fraction of the partner quark.
39486 C...Use rescaled YS = XS/(1-Sum_rest) where X and XS are not in "rest".
39487               XS=XASSOC(JS,IFL,IVC)
39488               XREM=VINT(142+JS)
39489               YS=XS/(XREM+XS)
39490 C...Momentum fraction of the companion quark.
39491 C...Rescale from X = x/XREM to Y = x/(1-Sum_rest) -> factor (1-YS).
39492               Y=X*(1D0-YS)
39493               XPSVC(IFL,IVC)=PYFCMP(Y/CMPFAC,YS/CMPFAC,MSTP(87))
39494 C...Add to momentum sum, with rescaling compensation factor.
39495               XCFAC=(XREM+XS)/XREM*CMPFAC
39496               PVCTOT(JS,1)=PVCTOT(JS,1)+XCFAC*PYPCMP(YS/CMPFAC,MSTP(87))
39497             ENDIF
39498   340     CONTINUE
39499   350   CONTINUE
39500  
39501 C...Wait until all flavours treated, then rescale seas and gluon.
39502         XPSVC(0,-1)=XPQ(0)
39503         XPSVC(0,0)=0D0
39504         RSFAC=1D0+(PVCTOT(JS,0)-PVCTOT(JS,1))/(1D0-PVCTOT(JS,-1))
39505         IF (RSFAC.LE.0D0) THEN
39506 C...First calculate factor needed to exactly restore pz cons.
39507           IF (NRESC.EQ.1) CMPFAC =
39508      &         (1D0-(PVCTOT(JS,-1)-PVCTOT(JS,0)))/PVCTOT(JS,1)
39509 C...Add a bit of headroom
39510           CMPFAC=0.99*CMPFAC
39511 C...Try a few times if more headroom is needed, then print error message.
39512           IF (NRESC.LE.10) GOTO 345
39513           CALL PYERRM(15,
39514      &         '(PYPDFU:) Negative reshaping factor persists!')
39515           WRITE(MSTU(11),5300) (PVCTOT(JS,ITMP),ITMP=-1,1), RSFAC
39516           RSFAC=0D0
39517         ENDIF
39518         DO 370 IFL=-6,6
39519           XPSVC(IFL,-1)=RSFAC*XPSVC(IFL,-1)
39520 C...Also store resulting distributions in XPQ
39521           XPQ(IFL)=0D0
39522           DO 360 ISVC=-1,NVC(JS,IFL)
39523             XPQ(IFL)=XPQ(IFL)+XPSVC(IFL,ISVC)
39524   360     CONTINUE
39525   370   CONTINUE
39526 C...Save companion reweighting factor for PYPTIS.
39527         VINT(140)=CMPFAC
39528       ENDIF
39529  
39530  
39531 C...Allow gluon also in position 21.
39532       XPQ(21)=XPQ(0)
39533  
39534 C...Check positivity and reset above maximum allowed flavour.
39535       DO 380 KFL=-25,25
39536         XPQ(KFL)=MAX(0D0,XPQ(KFL))
39537         IF(IABS(KFL).GT.MSTP(58).AND.IABS(KFL).LE.8) XPQ(KFL)=0D0
39538   380 CONTINUE
39539  
39540 C...Formats for error printouts.
39541  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
39542  5100 FORMAT(' Error: illegal particle code for parton distribution;',
39543      &' KF =',I5)
39544  5200 FORMAT(' Error: unknown parton distribution; KF, library, set =',
39545      &3I5)
39546  5300 FORMAT(' Original valence momentum fraction : ',F6.3/
39547      &       ' Removed valence momentum fraction  : ',F6.3/
39548      &       ' Added companion momentum fraction  : ',F6.3/
39549      &       ' Resulting rescale factor           : ',F6.3)
39550  
39551 C...Reset side pointer and return
39552  9999 MINT(30)=0
39553  
39554       RETURN
39555       END
39556  
39557 C*********************************************************************
39558  
39559 C...PYPDFL
39560 C...Gives proton parton distribution at small x and/or Q^2 according to
39561 C...correct limiting behaviour.
39562  
39563       SUBROUTINE PYPDFL(KF,X,Q2,XPQ)
39564  
39565 C...Double precision and integer declarations.
39566       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39567       IMPLICIT INTEGER(I-N)
39568       INTEGER PYK,PYCHGE,PYCOMP
39569 C...Commonblocks.
39570       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39571       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
39572       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39573       COMMON/PYINT1/MINT(400),VINT(400)
39574       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
39575 C...Local arrays.
39576       DIMENSION XPQ(-25:25),XPA(-25:25),XPB(-25:25),WTSB(-3:3)
39577       DATA RMR/0.92D0/,RMP/0.38D0/,WTSB/0.5D0,1D0,1D0,5D0,1D0,1D0,0.5D0/
39578  
39579 C...Send everything but protons/neutrons/VMD pions directly to PYPDFU.
39580       MINT(92)=0
39581       KFA=IABS(KF)
39582       IACC=0
39583       IF((KFA.EQ.2212.OR.KFA.EQ.2112).AND.MSTP(57).GE.2) IACC=1
39584       IF(KFA.EQ.211.AND.MSTP(57).GE.3) IACC=1
39585       IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND.MSTP(57).GE.3) IACC=1
39586       IF(IACC.EQ.0) THEN
39587         CALL PYPDFU(KF,X,Q2,XPQ)
39588         RETURN
39589       ENDIF
39590  
39591 C...Reset. Check x.
39592       DO 100 KFL=-25,25
39593         XPQ(KFL)=0D0
39594   100 CONTINUE
39595       IF(X.LE.0D0.OR.X.GE.1D0) THEN
39596         WRITE(MSTU(11),5000) X
39597         RETURN
39598       ENDIF
39599  
39600 C...Define valence content.
39601       KFC=KF
39602       NV1=2
39603       NV2=1
39604       IF(KF.EQ.2212) THEN
39605         KFV1=2
39606         KFV2=1
39607       ELSEIF(KF.EQ.-2212) THEN
39608         KFV1=-2
39609         KFV2=-1
39610       ELSEIF(KF.EQ.2112) THEN
39611         KFV1=1
39612         KFV2=2
39613       ELSEIF(KF.EQ.-2112) THEN
39614         KFV1=-1
39615         KFV2=-2
39616       ELSEIF(KF.EQ.211) THEN
39617         NV1=1
39618         KFV1=2
39619         KFV2=-1
39620       ELSEIF(KF.EQ.-211) THEN
39621         NV1=1
39622         KFV1=-2
39623         KFV2=1
39624       ELSEIF(MINT(105).LE.223) THEN
39625         KFV1=1
39626         WTV1=0.2D0
39627         KFV2=2
39628         WTV2=0.8D0
39629       ELSEIF(MINT(105).EQ.333) THEN
39630         KFV1=3
39631         WTV1=1.0D0
39632         KFV2=1
39633         WTV2=0.0D0
39634       ELSEIF(MINT(105).EQ.443) THEN
39635         KFV1=4
39636         WTV1=1.0D0
39637         KFV2=1
39638         WTV2=0.0D0
39639       ENDIF
39640  
39641 C...Do naive evaluation and find min Q^2, boundary Q^2 and x_0.
39642       MINT30=MINT(30)
39643       CALL PYPDFU(KFC,X,Q2,XPA)
39644       Q2MN=MAX(3D0,VINT(231))
39645       Q2B=2D0+0.052D0**2*EXP(3.56D0*SQRT(MAX(0D0,-LOG(3D0*X))))
39646       XMN=EXP(-(LOG((Q2MN-2D0)/0.052D0**2)/3.56D0)**2)/3D0
39647  
39648 C...Large Q2 and large x: naive call is enough.
39649       IF(Q2.GT.Q2MN.AND.Q2.GT.Q2B) THEN
39650         DO 110 KFL=-25,25
39651           XPQ(KFL)=XPA(KFL)
39652   110   CONTINUE
39653         MINT(92)=1
39654  
39655 C...Small Q2 and large x: dampen boundary value.
39656       ELSEIF(X.GT.XMN) THEN
39657  
39658 C...Evaluate at boundary and define dampening factors.
39659         MINT(30)=MINT30
39660         CALL PYPDFU(KFC,X,Q2MN,XPA)
39661         FV=(Q2*(Q2MN+RMR)/(Q2MN*(Q2+RMR)))**(0.55D0*(1D0-X)/(1D0-XMN))
39662         FS=(Q2*(Q2MN+RMP)/(Q2MN*(Q2+RMP)))**1.08D0
39663  
39664 C...Separate valence and sea parts of parton distribution.
39665         IF(KFA.NE.22) THEN
39666           XFV1=XPA(KFV1)-XPA(-KFV1)
39667           XPA(KFV1)=XPA(-KFV1)
39668           XFV2=XPA(KFV2)-XPA(-KFV2)
39669           XPA(KFV2)=XPA(-KFV2)
39670         ELSE
39671           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
39672           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
39673           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
39674           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
39675         ENDIF
39676  
39677 C...Dampen valence and sea separately. Put back together.
39678         DO 120 KFL=-25,25
39679           XPQ(KFL)=FS*XPA(KFL)
39680   120   CONTINUE
39681         IF(KFA.NE.22) THEN
39682           XPQ(KFV1)=XPQ(KFV1)+FV*XFV1
39683           XPQ(KFV2)=XPQ(KFV2)+FV*XFV2
39684         ELSE
39685           XPQ(KFV1)=XPQ(KFV1)+FV*WTV1*VINT(232)
39686           XPQ(-KFV1)=XPQ(-KFV1)+FV*WTV1*VINT(232)
39687           XPQ(KFV2)=XPQ(KFV2)+FV*WTV2*VINT(232)
39688           XPQ(-KFV2)=XPQ(-KFV2)+FV*WTV2*VINT(232)
39689         ENDIF
39690         MINT(92)=2
39691  
39692 C...Large Q2 and small x: interpolate behaviour.
39693       ELSEIF(Q2.GT.Q2MN) THEN
39694  
39695 C...Evaluate at extremes and define coefficients for interpolation.
39696         MINT(30)=MINT30
39697         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
39698         VI232A=VINT(232)
39699         MINT(30)=MINT30
39700         CALL PYPDFU(KFC,X,Q2B,XPB)
39701         VI232B=VINT(232)
39702         FLA=LOG(Q2B/Q2)/LOG(Q2B/Q2MN)
39703         FVA=(X/XMN)**0.45D0*FLA
39704         FSA=(X/XMN)**(-0.08D0)*FLA
39705         FB=1D0-FLA
39706  
39707 C...Separate valence and sea parts of parton distribution.
39708         IF(KFA.NE.22) THEN
39709           XFVA1=XPA(KFV1)-XPA(-KFV1)
39710           XPA(KFV1)=XPA(-KFV1)
39711           XFVA2=XPA(KFV2)-XPA(-KFV2)
39712           XPA(KFV2)=XPA(-KFV2)
39713           XFVB1=XPB(KFV1)-XPB(-KFV1)
39714           XPB(KFV1)=XPB(-KFV1)
39715           XFVB2=XPB(KFV2)-XPB(-KFV2)
39716           XPB(KFV2)=XPB(-KFV2)
39717         ELSE
39718           XPA(KFV1)=XPA(KFV1)-WTV1*VI232A
39719           XPA(-KFV1)=XPA(-KFV1)-WTV1*VI232A
39720           XPA(KFV2)=XPA(KFV2)-WTV2*VI232A
39721           XPA(-KFV2)=XPA(-KFV2)-WTV2*VI232A
39722           XPB(KFV1)=XPB(KFV1)-WTV1*VI232B
39723           XPB(-KFV1)=XPB(-KFV1)-WTV1*VI232B
39724           XPB(KFV2)=XPB(KFV2)-WTV2*VI232B
39725           XPB(-KFV2)=XPB(-KFV2)-WTV2*VI232B
39726         ENDIF
39727  
39728 C...Interpolate for valence and sea. Put back together.
39729         DO 130 KFL=-25,25
39730           XPQ(KFL)=FSA*XPA(KFL)+FB*XPB(KFL)
39731   130   CONTINUE
39732         IF(KFA.NE.22) THEN
39733           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFVA1+FB*XFVB1)
39734           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFVA2+FB*XFVB2)
39735         ELSE
39736           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
39737           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
39738           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
39739           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
39740         ENDIF
39741         MINT(92)=3
39742  
39743 C...Small Q2 and small x: dampen boundary value and add term.
39744       ELSE
39745  
39746 C...Evaluate at boundary and define dampening factors.
39747         MINT(30)=MINT30
39748         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
39749         FB=(XMN-X)*(Q2MN-Q2)/(XMN*Q2MN)
39750         FA=1D0-FB
39751         FVC=(X/XMN)**0.45D0*(Q2/(Q2+RMR))**0.55D0
39752         FVA=FVC*FA*((Q2MN+RMR)/Q2MN)**0.55D0
39753         FVB=FVC*FB*1.10D0*XMN**0.45D0*0.11D0
39754         FSC=(X/XMN)**(-0.08D0)*(Q2/(Q2+RMP))**1.08D0
39755         FSA=FSC*FA*((Q2MN+RMP)/Q2MN)**1.08D0
39756         FSB=FSC*FB*0.21D0*XMN**(-0.08D0)*0.21D0
39757  
39758 C...Separate valence and sea parts of parton distribution.
39759         IF(KFA.NE.22) THEN
39760           XFV1=XPA(KFV1)-XPA(-KFV1)
39761           XPA(KFV1)=XPA(-KFV1)
39762           XFV2=XPA(KFV2)-XPA(-KFV2)
39763           XPA(KFV2)=XPA(-KFV2)
39764         ELSE
39765           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
39766           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
39767           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
39768           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
39769         ENDIF
39770  
39771 C...Dampen valence and sea separately. Add constant terms.
39772 C...Put back together.
39773         DO 140 KFL=-25,25
39774           XPQ(KFL)=FSA*XPA(KFL)
39775   140   CONTINUE
39776         IF(KFA.NE.22) THEN
39777           DO 150 KFL=-3,3
39778             XPQ(KFL)=XPQ(KFL)+FSB*WTSB(KFL)
39779   150     CONTINUE
39780           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFV1+FVB*NV1)
39781           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFV2+FVB*NV2)
39782         ELSE
39783           DO 160 KFL=-3,3
39784             XPQ(KFL)=XPQ(KFL)+VINT(281)*FSB*WTSB(KFL)
39785   160     CONTINUE
39786           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
39787           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
39788           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
39789           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
39790         ENDIF
39791         XPQ(21)=XPQ(0)
39792         MINT(92)=4
39793       ENDIF
39794  
39795 C...Format for error printout.
39796  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
39797  
39798       RETURN
39799       END
39800  
39801 C*********************************************************************
39802  
39803 C...PYPDEL
39804 C...Gives electron (or muon, or tau) parton distribution.
39805  
39806       SUBROUTINE PYPDEL(KFA,X,Q2,XPEL)
39807  
39808 C...Double precision and integer declarations.
39809       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39810       IMPLICIT INTEGER(I-N)
39811       INTEGER PYK,PYCHGE,PYCOMP
39812 C...Commonblocks.
39813       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39814       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
39815       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39816       COMMON/PYINT1/MINT(400),VINT(400)
39817       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
39818 C...Local arrays.
39819       DIMENSION XPEL(-25:25),XPGA(-6:6),SXP(0:6)
39820  
39821 C...Interface to PDFLIB.
39822       COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
39823       SAVE /W50513/
39824       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
39825      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
39826       CHARACTER*20 PARM(20)
39827       DATA VALUE/20*0D0/,PARM/20*' '/
39828  
39829 C...Some common constants.
39830       DO 100 KFL=-25,25
39831         XPEL(KFL)=0D0
39832   100 CONTINUE
39833       AEM=PARU(101)
39834       PME=PMAS(11,1)
39835       IF(KFA.EQ.13) PME=PMAS(13,1)
39836       IF(KFA.EQ.15) PME=PMAS(15,1)
39837       XL=LOG(MAX(1D-10,X))
39838       X1L=LOG(MAX(1D-10,1D0-X))
39839       HLE=LOG(MAX(3D0,Q2/PME**2))
39840       HBE2=(AEM/PARU(1))*(HLE-1D0)
39841  
39842 C...Electron inside electron, see R. Kleiss et al., in Z physics at
39843 C...LEP 1, CERN 89-08, p. 34
39844       IF(MSTP(59).LE.1) THEN
39845         HDE=1D0+(AEM/PARU(1))*(1.5D0*HLE+1.289868D0)+(AEM/PARU(1))**2*
39846      &  (-2.164868D0*HLE**2+9.840808D0*HLE-10.130464D0)
39847         HEE=HBE2*(1D0-X)**(HBE2-1D0)*SQRT(MAX(0D0,HDE))-
39848      &  0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*(-4D0*X1L+3D0*XL)-
39849      &  4D0*XL/(1D0-X)-5D0-X)
39850       ELSE
39851         HEE=HBE2*(1D0-X)**(HBE2-1D0)*EXP(0.172784D0*HBE2)/
39852      &  PYGAMM(1D0+HBE2)-0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*
39853      &  (-4D0*X1L+3D0*XL)-4D0*XL/(1D0-X)-5D0-X)
39854       ENDIF
39855 C...Zero distribution for very large x and rescale it for intermediate.
39856       IF(X.GT.1D0-1D-10) THEN
39857         HEE=0D0
39858       ELSEIF(X.GT.1D0-1D-7) THEN
39859         HEE=HEE*1000D0**HBE2/(1000D0**HBE2-1D0)
39860       ENDIF
39861       XPEL(KFA)=X*HEE
39862  
39863 C...Photon and (transverse) W- inside electron.
39864       AEMP=PYALEM(PME*SQRT(MAX(0D0,Q2)))/PARU(2)
39865       IF(MSTP(13).LE.1) THEN
39866         HLG=HLE
39867       ELSE
39868         HLG=LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-X)/X**2))
39869       ENDIF
39870       XPEL(22)=AEMP*HLG*(1D0+(1D0-X)**2)
39871       HLW=LOG(1D0+Q2/PMAS(24,1)**2)/(4D0*PARU(102))
39872       XPEL(-24)=AEMP*HLW*(1D0+(1D0-X)**2)
39873  
39874 C...Electron or positron inside photon inside electron.
39875       IF(KFA.EQ.11.AND.MSTP(12).EQ.1) THEN
39876         XFSEA=0.5D0*(AEMP*(HLE-1D0))**2*(4D0/3D0+X-X**2-4D0*X**3/3D0+
39877      &  2D0*X*(1D0+X)*XL)
39878         XPEL(11)=XPEL(11)+XFSEA
39879         XPEL(-11)=XFSEA
39880  
39881 C...Initialize PDFLIB photon parton distributions.
39882         IF(MSTP(56).EQ.2) THEN
39883           PARM(1)='NPTYPE'
39884           VALUE(1)=3
39885           PARM(2)='NGROUP'
39886           VALUE(2)=MSTP(55)/1000
39887           PARM(3)='NSET'
39888           VALUE(3)=MOD(MSTP(55),1000)
39889           IF(MINT(93).NE.3000000+MSTP(55)) THEN
39890             CALL PDFSET(PARM,VALUE)
39891             MINT(93)=3000000+MSTP(55)
39892           ENDIF
39893         ENDIF
39894  
39895 C...Quarks and gluons inside photon inside electron:
39896 C...numerical convolution required.
39897         DO 110 KFL=0,6
39898           SXP(KFL)=0D0
39899   110   CONTINUE
39900         SUMXPP=0D0
39901         ITER=-1
39902   120   ITER=ITER+1
39903         SUMXP=SUMXPP
39904         NSTP=2**(ITER-1)
39905         IF(ITER.EQ.0) NSTP=2
39906         DO 130 KFL=0,6
39907           SXP(KFL)=0.5D0*SXP(KFL)
39908   130   CONTINUE
39909         WTSTP=0.5D0/NSTP
39910         IF(ITER.EQ.0) WTSTP=0.5D0
39911 C...Pick grid of x_{gamma} values logarithmically even.
39912         DO 150 ISTP=1,NSTP
39913           IF(ITER.EQ.0) THEN
39914             XLE=XL*(ISTP-1)
39915           ELSE
39916             XLE=XL*(ISTP-0.5D0)/NSTP
39917           ENDIF
39918           XE=MIN(1D0-1D-10,EXP(XLE))
39919           XG=MIN(1D0-1D-10,X/XE)
39920 C...Evaluate photon inside electron parton distribution for convolution.
39921           XPGP=1D0+(1D0-XE)**2
39922           IF(MSTP(13).LE.1) THEN
39923             XPGP=XPGP*HLE
39924           ELSE
39925             XPGP=XPGP*LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-XE)/XE**2))
39926           ENDIF
39927 C...Evaluate photon parton distributions for convolution.
39928           IF(MSTP(56).EQ.1) THEN
39929             IF(MSTP(55).EQ.1) THEN
39930               CALL PYPDGA(XG,Q2,XPGA)
39931             ELSEIF(MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
39932               Q2MX=Q2
39933               P2MX=0.36D0
39934               IF(MSTP(55).GE.7) P2MX=4.0D0
39935               IF(MSTP(57).EQ.0) Q2MX=P2MX
39936               P2=0D0
39937               IF(VINT(120).LT.0D0) P2=VINT(120)**2
39938               CALL PYGGAM(MSTP(55)-4,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
39939               VINT(231)=P2MX
39940             ELSEIF(MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
39941               Q2MX=Q2
39942               P2MX=0.36D0
39943               IF(MSTP(55).GE.11) P2MX=4.0D0
39944               IF(MSTP(57).EQ.0) Q2MX=P2MX
39945               P2=0D0
39946               IF(VINT(120).LT.0D0) P2=VINT(120)**2
39947               CALL PYGGAM(MSTP(55)-8,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
39948               VINT(231)=P2MX
39949             ENDIF
39950             DO 140 KFL=0,5
39951               SXP(KFL)=SXP(KFL)+WTSTP*XPGP*XPGA(KFL)
39952   140       CONTINUE
39953           ELSEIF(MSTP(56).EQ.2) THEN
39954 C...Call PDFLIB parton distributions.
39955             XX=XG
39956             QQ=SQRT(MAX(0D0,Q2MIN,Q2))
39957             IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
39958             CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
39959             SXP(0)=SXP(0)+WTSTP*XPGP*GLU
39960             SXP(1)=SXP(1)+WTSTP*XPGP*DNV
39961             SXP(2)=SXP(2)+WTSTP*XPGP*UPV
39962             SXP(3)=SXP(3)+WTSTP*XPGP*STR
39963             SXP(4)=SXP(4)+WTSTP*XPGP*CHM
39964             SXP(5)=SXP(5)+WTSTP*XPGP*BOT
39965             SXP(6)=SXP(6)+WTSTP*XPGP*TOP
39966           ENDIF
39967   150   CONTINUE
39968         SUMXPP=SXP(0)+2D0*SXP(1)+2D0*SXP(2)
39969         IF(ITER.LE.2.OR.(ITER.LE.7.AND.ABS(SUMXPP-SUMXP).GT.
39970      &  PARP(14)*(SUMXPP+SUMXP))) GOTO 120
39971  
39972 C...Put convolution into output arrays.
39973         FCONV=AEMP*(-XL)
39974         XPEL(0)=FCONV*SXP(0)
39975         DO 160 KFL=1,6
39976           XPEL(KFL)=FCONV*SXP(KFL)
39977           XPEL(-KFL)=XPEL(KFL)
39978   160   CONTINUE
39979       ENDIF
39980  
39981       RETURN
39982       END
39983  
39984 C*********************************************************************
39985  
39986 C...PYPDGA
39987 C...Gives photon parton distribution.
39988  
39989       SUBROUTINE PYPDGA(X,Q2,XPGA)
39990  
39991 C...Double precision and integer declarations.
39992       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39993       IMPLICIT INTEGER(I-N)
39994       INTEGER PYK,PYCHGE,PYCOMP
39995 C...Commonblocks.
39996       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39997       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39998       COMMON/PYINT1/MINT(400),VINT(400)
39999       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
40000 C...Local arrays.
40001       DIMENSION XPGA(-6:6),DGAG(4,3),DGBG(4,3),DGCG(4,3),DGAN(4,3),
40002      &DGBN(4,3),DGCN(4,3),DGDN(4,3),DGEN(4,3),DGAS(4,3),DGBS(4,3),
40003      &DGCS(4,3),DGDS(4,3),DGES(4,3)
40004  
40005 C...The following data lines are coefficients needed in the
40006 C...Drees and Grassie photon parton distribution parametrization.
40007       DATA DGAG/-.207D0,.6158D0,1.074D0,0.D0,.8926D-2,.6594D0,
40008      &.4766D0,.1975D-1,.03197D0,1.018D0,.2461D0,.2707D-1/
40009       DATA DGBG/-.1987D0,.6257D0,8.352D0,5.024D0,.5085D-1,.2774D0,
40010      &-.3906D0,-.3212D0,-.618D-2,.9476D0,-.6094D0,-.1067D-1/
40011       DATA DGCG/5.119D0,-.2752D0,-6.993D0,2.298D0,-.2313D0,.1382D0,
40012      &6.542D0,.5162D0,-.1216D0,.9047D0,2.653D0,.2003D-2/
40013       DATA DGAN/2.285D0,-.1526D-1,1330.D0,4.219D0,-.3711D0,1.061D0,
40014      &4.758D0,-.1503D-1,15.8D0,-.9464D0,-.5D0,-.2118D0/
40015       DATA DGBN/6.073D0,-.8132D0,-41.31D0,3.165D0,-.1717D0,.7815D0,
40016      &1.535D0,.7067D-2,2.742D0,-.7332D0,.7148D0,3.287D0/
40017       DATA DGCN/-.4202D0,.1778D-1,.9216D0,.18D0,.8766D-1,.2197D-1,
40018      &.1096D0,.204D0,.2917D-1,.4657D-1,.1785D0,.4811D-1/
40019       DATA DGDN/-.8083D-1,.6346D0,1.208D0,.203D0,-.8915D0,.2857D0,
40020      &2.973D0,.1185D0,-.342D-1,.7196D0,.7338D0,.8139D-1/
40021       DATA DGEN/.5526D-1,1.136D0,.9512D0,.1163D-1,-.1816D0,.5866D0,
40022      &2.421D0,.4059D0,-.2302D-1,.9229D0,.5873D0,-.79D-4/
40023       DATA DGAS/16.69D0,-.7916D0,1099.D0,4.428D0,-.1207D0,1.071D0,
40024      &1.977D0,-.8625D-2,6.734D0,-1.008D0,-.8594D-1,.7625D-1/
40025       DATA DGBS/.176D0,.4794D-1,1.047D0,.25D-1,25.D0,-1.648D0,
40026      &-.1563D-1,6.438D0,59.88D0,-2.983D0,4.48D0,.9686D0/
40027       DATA DGCS/-.208D-1,.3386D-2,4.853D0,.8404D0,-.123D-1,1.162D0,
40028      &.4824D0,-.11D-1,-.3226D-2,.8432D0,.3616D0,.1383D-2/
40029       DATA DGDS/-.1685D-1,1.353D0,1.426D0,1.239D0,-.9194D-1,.7912D0,
40030      &.6397D0,2.327D0,-.3321D-1,.9475D0,-.3198D0,.2132D-1/
40031       DATA DGES/-.1986D0,1.1D0,1.136D0,-.2779D0,.2015D-1,.9869D0,
40032      &-.7036D-1,.1694D-1,.1059D0,.6954D0,-.6663D0,.3683D0/
40033  
40034 C...Photon parton distribution from Drees and Grassie.
40035 C...Allowed variable range: 1 GeV^2 < Q^2 < 10000 GeV^2.
40036       DO 100 KFL=-6,6
40037         XPGA(KFL)=0D0
40038   100 CONTINUE
40039       VINT(231)=1D0
40040       IF(MSTP(57).LE.0) THEN
40041         T=LOG(1D0/0.16D0)
40042       ELSE
40043         T=LOG(MIN(1D4,MAX(1D0,Q2))/0.16D0)
40044       ENDIF
40045       X1=1D0-X
40046       NF=3
40047       IF(Q2.GT.25D0) NF=4
40048       IF(Q2.GT.300D0) NF=5
40049       NFE=NF-2
40050       AEM=PARU(101)
40051  
40052 C...Evaluate gluon content.
40053       DGA=DGAG(1,NFE)*T**DGAG(2,NFE)+DGAG(3,NFE)*T**(-DGAG(4,NFE))
40054       DGB=DGBG(1,NFE)*T**DGBG(2,NFE)+DGBG(3,NFE)*T**(-DGBG(4,NFE))
40055       DGC=DGCG(1,NFE)*T**DGCG(2,NFE)+DGCG(3,NFE)*T**(-DGCG(4,NFE))
40056       XPGL=DGA*X**DGB*X1**DGC
40057  
40058 C...Evaluate up- and down-type quark content.
40059       DGA=DGAN(1,NFE)*T**DGAN(2,NFE)+DGAN(3,NFE)*T**(-DGAN(4,NFE))
40060       DGB=DGBN(1,NFE)*T**DGBN(2,NFE)+DGBN(3,NFE)*T**(-DGBN(4,NFE))
40061       DGC=DGCN(1,NFE)*T**DGCN(2,NFE)+DGCN(3,NFE)*T**(-DGCN(4,NFE))
40062       DGD=DGDN(1,NFE)*T**DGDN(2,NFE)+DGDN(3,NFE)*T**(-DGDN(4,NFE))
40063       DGE=DGEN(1,NFE)*T**DGEN(2,NFE)+DGEN(3,NFE)*T**(-DGEN(4,NFE))
40064       XPQN=X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
40065       DGA=DGAS(1,NFE)*T**DGAS(2,NFE)+DGAS(3,NFE)*T**(-DGAS(4,NFE))
40066       DGB=DGBS(1,NFE)*T**DGBS(2,NFE)+DGBS(3,NFE)*T**(-DGBS(4,NFE))
40067       DGC=DGCS(1,NFE)*T**DGCS(2,NFE)+DGCS(3,NFE)*T**(-DGCS(4,NFE))
40068       DGD=DGDS(1,NFE)*T**DGDS(2,NFE)+DGDS(3,NFE)*T**(-DGDS(4,NFE))
40069       DGE=DGES(1,NFE)*T**DGES(2,NFE)+DGES(3,NFE)*T**(-DGES(4,NFE))
40070       DGF=9D0
40071       IF(NF.EQ.4) DGF=10D0
40072       IF(NF.EQ.5) DGF=55D0/6D0
40073       XPQS=DGF*X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
40074       IF(NF.LE.3) THEN
40075         XPQU=(XPQS+9D0*XPQN)/6D0
40076         XPQD=(XPQS-4.5D0*XPQN)/6D0
40077       ELSEIF(NF.EQ.4) THEN
40078         XPQU=(XPQS+6D0*XPQN)/8D0
40079         XPQD=(XPQS-6D0*XPQN)/8D0
40080       ELSE
40081         XPQU=(XPQS+7.5D0*XPQN)/10D0
40082         XPQD=(XPQS-5D0*XPQN)/10D0
40083       ENDIF
40084  
40085 C...Put into output arrays.
40086       XPGA(0)=AEM*XPGL
40087       XPGA(1)=AEM*XPQD
40088       XPGA(2)=AEM*XPQU
40089       XPGA(3)=AEM*XPQD
40090       IF(NF.GE.4) XPGA(4)=AEM*XPQU
40091       IF(NF.GE.5) XPGA(5)=AEM*XPQD
40092       DO 110 KFL=1,6
40093         XPGA(-KFL)=XPGA(KFL)
40094   110 CONTINUE
40095  
40096       RETURN
40097       END
40098  
40099 C*********************************************************************
40100  
40101 C...PYGGAM
40102 C...Constructs the F2 and parton distributions of the photon
40103 C...by summing homogeneous (VMD) and inhomogeneous (anomalous) terms.
40104 C...For F2, c and b are included by the Bethe-Heitler formula;
40105 C...in the 'MSbar' scheme additionally a Cgamma term is added.
40106 C...Contains the SaS sets 1D, 1M, 2D and 2M.
40107 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
40108  
40109       SUBROUTINE PYGGAM(ISET,X,Q2,P2,IP2,F2GM,XPDFGM)
40110  
40111 C...Double precision and integer declarations.
40112       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40113       IMPLICIT INTEGER(I-N)
40114       INTEGER PYK,PYCHGE,PYCOMP
40115 C...Commonblocks.
40116       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
40117      &XPDIR(-6:6)
40118       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
40119       SAVE /PYINT8/,/PYINT9/
40120 C...Local arrays.
40121       DIMENSION XPDFGM(-6:6),XPGA(-6:6), VXPGA(-6:6)
40122 C...Charm and bottom masses (low to compensate for J/psi etc.).
40123       DATA PMC/1.3D0/, PMB/4.6D0/
40124 C...alpha_em and alpha_em/(2*pi).
40125       DATA AEM/0.007297D0/, AEM2PI/0.0011614D0/
40126 C...Lambda value for 4 flavours.
40127       DATA ALAM/0.20D0/
40128 C...Mixture u/(u+d), = 0.5 for incoherent and = 0.8 for coherent sum.
40129       DATA FRACU/0.8D0/
40130 C...VMD couplings f_V**2/(4*pi).
40131       DATA FRHO/2.20D0/, FOMEGA/23.6D0/, FPHI/18.4D0/
40132 C...Masses for rho (=omega) and phi.
40133       DATA PMRHO/0.770D0/, PMPHI/1.020D0/
40134 C...Number of points in integration for IP2=1.
40135       DATA NSTEP/100/
40136  
40137 C...Reset output.
40138       F2GM=0D0
40139       DO 100 KFL=-6,6
40140         XPDFGM(KFL)=0D0
40141         XPVMD(KFL)=0D0
40142         XPANL(KFL)=0D0
40143         XPANH(KFL)=0D0
40144         XPBEH(KFL)=0D0
40145         XPDIR(KFL)=0D0
40146         VXPVMD(KFL)=0D0
40147         VXPANL(KFL)=0D0
40148         VXPANH(KFL)=0D0
40149         VXPDGM(KFL)=0D0
40150   100 CONTINUE
40151  
40152 C...Set Q0 cut-off parameter as function of set used.
40153       IF(ISET.LE.2) THEN
40154         Q0=0.6D0
40155       ELSE
40156         Q0=2D0
40157       ENDIF
40158       Q02=Q0**2
40159  
40160 C...Scale choice for off-shell photon; common factors.
40161       Q2A=Q2
40162       FACNOR=1D0
40163       IF(IP2.EQ.1) THEN
40164         P2MX=P2+Q02
40165         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
40166         FACNOR=LOG(Q2/Q02)/NSTEP
40167       ELSEIF(IP2.EQ.2) THEN
40168         P2MX=MAX(P2,Q02)
40169       ELSEIF(IP2.EQ.3) THEN
40170         P2MX=P2+Q02
40171         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
40172       ELSEIF(IP2.EQ.4) THEN
40173         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
40174      &  ((Q2+P2)*(Q02+P2)))
40175       ELSEIF(IP2.EQ.5) THEN
40176         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
40177      &  ((Q2+P2)*(Q02+P2)))
40178         P2MX=Q0*SQRT(P2MXA)
40179         FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MX)
40180       ELSEIF(IP2.EQ.6) THEN
40181         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
40182      &  ((Q2+P2)*(Q02+P2)))
40183         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
40184       ELSE
40185         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
40186      &  ((Q2+P2)*(Q02+P2)))
40187         P2MX=Q0*SQRT(P2MXA)
40188         P2MXB=P2MX
40189         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
40190         P2MXB=MAX(0D0,1D0-P2/Q2)*P2MXB+MIN(1D0,P2/Q2)*P2MXA
40191         IF(ABS(Q2-Q02).GT.1D-6) THEN
40192           FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MXB)
40193         ELSEIF(P2.LT.Q02) THEN
40194           FACNOR=Q02**3/(Q02+P2)/(Q02**2-P2**2/2D0)
40195         ELSE
40196           FACNOR=1D0
40197         ENDIF
40198       ENDIF
40199  
40200 C...Call VMD parametrization for d quark and use to give rho, omega,
40201 C...phi. Note dipole dampening for off-shell photon.
40202       CALL PYGVMD(ISET,1,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
40203       XFVAL=VXPGA(1)
40204       XPGA(1)=XPGA(2)
40205       XPGA(-1)=XPGA(-2)
40206       FACUD=AEM*(1D0/FRHO+1D0/FOMEGA)*(PMRHO**2/(PMRHO**2+P2))**2
40207       FACS=AEM*(1D0/FPHI)*(PMPHI**2/(PMPHI**2+P2))**2
40208       DO 110 KFL=-5,5
40209         XPVMD(KFL)=(FACUD+FACS)*XPGA(KFL)
40210   110 CONTINUE
40211       XPVMD(1)=XPVMD(1)+(1D0-FRACU)*FACUD*XFVAL
40212       XPVMD(2)=XPVMD(2)+FRACU*FACUD*XFVAL
40213       XPVMD(3)=XPVMD(3)+FACS*XFVAL
40214       XPVMD(-1)=XPVMD(-1)+(1D0-FRACU)*FACUD*XFVAL
40215       XPVMD(-2)=XPVMD(-2)+FRACU*FACUD*XFVAL
40216       XPVMD(-3)=XPVMD(-3)+FACS*XFVAL
40217       VXPVMD(1)=(1D0-FRACU)*FACUD*XFVAL
40218       VXPVMD(2)=FRACU*FACUD*XFVAL
40219       VXPVMD(3)=FACS*XFVAL
40220       VXPVMD(-1)=(1D0-FRACU)*FACUD*XFVAL
40221       VXPVMD(-2)=FRACU*FACUD*XFVAL
40222       VXPVMD(-3)=FACS*XFVAL
40223  
40224       IF(IP2.NE.1) THEN
40225 C...Anomalous parametrizations for different strategies
40226 C...for off-shell photons; except full integration.
40227  
40228 C...Call anomalous parametrization for d + u + s.
40229         CALL PYGANO(-3,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
40230         DO 120 KFL=-5,5
40231           XPANL(KFL)=FACNOR*XPGA(KFL)
40232           VXPANL(KFL)=FACNOR*VXPGA(KFL)
40233   120   CONTINUE
40234  
40235 C...Call anomalous parametrization for c and b.
40236         CALL PYGANO(4,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
40237         DO 130 KFL=-5,5
40238           XPANH(KFL)=FACNOR*XPGA(KFL)
40239           VXPANH(KFL)=FACNOR*VXPGA(KFL)
40240   130   CONTINUE
40241         CALL PYGANO(5,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
40242         DO 140 KFL=-5,5
40243           XPANH(KFL)=XPANH(KFL)+FACNOR*XPGA(KFL)
40244           VXPANH(KFL)=VXPANH(KFL)+FACNOR*VXPGA(KFL)
40245   140   CONTINUE
40246  
40247       ELSE
40248 C...Special option: loop over flavours and integrate over k2.
40249         DO 170 KF=1,5
40250           DO 160 ISTEP=1,NSTEP
40251             Q2STEP=Q02*(Q2/Q02)**((ISTEP-0.5D0)/NSTEP)
40252             IF((KF.EQ.4.AND.Q2STEP.LT.PMC**2).OR.
40253      &      (KF.EQ.5.AND.Q2STEP.LT.PMB**2)) GOTO 160
40254             CALL PYGVMD(0,KF,X,Q2,Q2STEP,ALAM,XPGA,VXPGA)
40255             FACQ=AEM2PI*(Q2STEP/(Q2STEP+P2))**2*FACNOR
40256             IF(MOD(KF,2).EQ.0) FACQ=FACQ*(8D0/9D0)
40257             IF(MOD(KF,2).EQ.1) FACQ=FACQ*(2D0/9D0)
40258             DO 150 KFL=-5,5
40259               IF(KF.LE.3) XPANL(KFL)=XPANL(KFL)+FACQ*XPGA(KFL)
40260               IF(KF.GE.4) XPANH(KFL)=XPANH(KFL)+FACQ*XPGA(KFL)
40261               IF(KF.LE.3) VXPANL(KFL)=VXPANL(KFL)+FACQ*VXPGA(KFL)
40262               IF(KF.GE.4) VXPANH(KFL)=VXPANH(KFL)+FACQ*VXPGA(KFL)
40263   150       CONTINUE
40264   160     CONTINUE
40265   170   CONTINUE
40266       ENDIF
40267  
40268 C...Call Bethe-Heitler term expression for charm and bottom.
40269       CALL PYGBEH(4,X,Q2,P2,PMC**2,XPBH)
40270       XPBEH(4)=XPBH
40271       XPBEH(-4)=XPBH
40272       CALL PYGBEH(5,X,Q2,P2,PMB**2,XPBH)
40273       XPBEH(5)=XPBH
40274       XPBEH(-5)=XPBH
40275  
40276 C...For MSbar subtraction call C^gamma term expression for d, u, s.
40277       IF(ISET.EQ.2.OR.ISET.EQ.4) THEN
40278         CALL PYGDIR(X,Q2,P2,Q02,XPGA)
40279         DO 180 KFL=-5,5
40280           XPDIR(KFL)=XPGA(KFL)
40281   180   CONTINUE
40282       ENDIF
40283  
40284 C...Store result in output array.
40285       DO 190 KFL=-5,5
40286         CHSQ=1D0/9D0
40287         IF(IABS(KFL).EQ.2.OR.IABS(KFL).EQ.4) CHSQ=4D0/9D0
40288         XPF2=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
40289         IF(KFL.NE.0) F2GM=F2GM+CHSQ*XPF2
40290         XPDFGM(KFL)=XPVMD(KFL)+XPANL(KFL)+XPANH(KFL)
40291         VXPDGM(KFL)=VXPVMD(KFL)+VXPANL(KFL)+VXPANH(KFL)
40292   190 CONTINUE
40293  
40294       RETURN
40295       END
40296  
40297 C*********************************************************************
40298  
40299 C...PYGVMD
40300 C...Evaluates the VMD parton distributions of a photon,
40301 C...evolved homogeneously from an initial scale P2 to Q2.
40302 C...Does not include dipole suppression factor.
40303 C...ISET is parton distribution set, see above;
40304 C...additionally ISET=0 is used for the evolution of an anomalous photon
40305 C...which branched at a scale P2 and then evolved homogeneously to Q2.
40306 C...ALAM is the 4-flavour Lambda, which is automatically converted
40307 C...to 3- and 5-flavour equivalents as needed.
40308 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
40309  
40310       SUBROUTINE PYGVMD(ISET,KF,X,Q2,P2,ALAM,XPGA,VXPGA)
40311  
40312 C...Double precision and integer declarations.
40313       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40314       IMPLICIT INTEGER(I-N)
40315       INTEGER PYK,PYCHGE,PYCOMP
40316 C...Local arrays and data.
40317       DIMENSION XPGA(-6:6), VXPGA(-6:6)
40318       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
40319  
40320 C...Reset output.
40321       DO 100 KFL=-6,6
40322         XPGA(KFL)=0D0
40323         VXPGA(KFL)=0D0
40324   100 CONTINUE
40325       KFA=IABS(KF)
40326  
40327 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
40328       ALAM3=ALAM*(PMC/ALAM)**(2D0/27D0)
40329       ALAM5=ALAM*(ALAM/PMB)**(2D0/23D0)
40330       P2EFF=MAX(P2,1.2D0*ALAM3**2)
40331       IF(KFA.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
40332       IF(KFA.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
40333       Q2EFF=MAX(Q2,P2EFF)
40334  
40335 C...Find number of flavours at lower and upper scale.
40336       NFP=4
40337       IF(P2EFF.LT.PMC**2) NFP=3
40338       IF(P2EFF.GT.PMB**2) NFP=5
40339       NFQ=4
40340       IF(Q2EFF.LT.PMC**2) NFQ=3
40341       IF(Q2EFF.GT.PMB**2) NFQ=5
40342  
40343 C...Find s as sum of 3-, 4- and 5-flavour parts.
40344       S=0D0
40345       IF(NFP.EQ.3) THEN
40346         Q2DIV=PMC**2
40347         IF(NFQ.EQ.3) Q2DIV=Q2EFF
40348         S=S+(6D0/27D0)*LOG(LOG(Q2DIV/ALAM3**2)/LOG(P2EFF/ALAM3**2))
40349       ENDIF
40350       IF(NFP.LE.4.AND.NFQ.GE.4) THEN
40351         P2DIV=P2EFF
40352         IF(NFP.EQ.3) P2DIV=PMC**2
40353         Q2DIV=Q2EFF
40354         IF(NFQ.EQ.5) Q2DIV=PMB**2
40355         S=S+(6D0/25D0)*LOG(LOG(Q2DIV/ALAM**2)/LOG(P2DIV/ALAM**2))
40356       ENDIF
40357       IF(NFQ.EQ.5) THEN
40358         P2DIV=PMB**2
40359         IF(NFP.EQ.5) P2DIV=P2EFF
40360         S=S+(6D0/23D0)*LOG(LOG(Q2EFF/ALAM5**2)/LOG(P2DIV/ALAM5**2))
40361       ENDIF
40362  
40363 C...Calculate frequent combinations of x and s.
40364       X1=1D0-X
40365       XL=-LOG(X)
40366       S2=S**2
40367       S3=S**3
40368       S4=S**4
40369  
40370 C...Evaluate homogeneous anomalous parton distributions below or
40371 C...above threshold.
40372       IF(ISET.EQ.0) THEN
40373         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
40374      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
40375           XVAL = X * 1.5D0 * (X**2+X1**2)
40376           XGLU = 0D0
40377           XSEA = 0D0
40378         ELSE
40379           XVAL = (1.5D0/(1D0-0.197D0*S+4.33D0*S2)*X**2 +
40380      &    (1.5D0+2.10D0*S)/(1D0+3.29D0*S)*X1**2 +
40381      &    5.23D0*S/(1D0+1.17D0*S+19.9D0*S3)*X*X1) *
40382      &    X**(1D0/(1D0+1.5D0*S)) * (1D0-X**2)**(2.667D0*S)
40383           XGLU = 4D0*S/(1D0+4.76D0*S+15.2D0*S2+29.3D0*S4) *
40384      &    X**(-2.03D0*S/(1D0+2.44D0*S)) * (X1*XL)**(1.333D0*S) *
40385      &    ((4D0*X**2+7D0*X+4D0)*X1/3D0 - 2D0*X*(1D0+X)*XL)
40386           XSEA = S2/(1D0+4.54D0*S+8.19D0*S2+8.05D0*S3) *
40387      &    X**(-1.54D0*S/(1D0+1.29D0*S)) * X1**(2.667D0*S) *
40388      &    ((8D0-73D0*X+62D0*X**2)*X1/9D0 + (3D0-8D0*X**2/3D0)*X*XL +
40389      &    (2D0*X-1D0)*X*XL**2)
40390         ENDIF
40391  
40392 C...Evaluate set 1D parton distributions below or above threshold.
40393       ELSEIF(ISET.EQ.1) THEN
40394         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
40395      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
40396           XVAL = 1.294D0 * X**0.80D0 * X1**0.76D0
40397           XGLU = 1.273D0 * X**0.40D0 * X1**1.76D0
40398           XSEA = 0.100D0 * X1**3.76D0
40399         ELSE
40400           XVAL = 1.294D0/(1D0+0.252D0*S+3.079D0*S2) *
40401      &    X**(0.80D0-0.13D0*S) * X1**(0.76D0+0.667D0*S) * XL**(2D0*S)
40402           XGLU = 7.90D0*S/(1D0+5.50D0*S) * EXP(-5.16D0*S) *
40403      &    X**(-1.90D0*S/(1D0+3.60D0*S)) * X1**1.30D0 *
40404      &    XL**(0.50D0+3D0*S) + 1.273D0 * EXP(-10D0*S) *
40405      &    X**0.40D0 * X1**(1.76D0+3D0*S)
40406           XSEA = (0.1D0-0.397D0*S2+1.121D0*S3)/
40407      &    (1D0+5.61D0*S2+5.26D0*S3) * X**(-7.32D0*S2/(1D0+10.3D0*S2)) *
40408      &    X1**((3.76D0+15D0*S+12D0*S2)/(1D0+4D0*S))
40409           XSEA0 = 0.100D0 * X1**3.76D0
40410         ENDIF
40411  
40412 C...Evaluate set 1M parton distributions below or above threshold.
40413       ELSEIF(ISET.EQ.2) THEN
40414         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
40415      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
40416           XVAL = 0.8477D0 * X**0.51D0 * X1**1.37D0
40417           XGLU = 3.42D0 * X**0.255D0 * X1**2.37D0
40418           XSEA = 0D0
40419         ELSE
40420           XVAL = 0.8477D0/(1D0+1.37D0*S+2.18D0*S2+3.73D0*S3) *
40421      &    X**(0.51D0+0.21D0*S) * X1**1.37D0 * XL**(2.667D0*S)
40422           XGLU = 24D0*S/(1D0+9.6D0*S+0.92D0*S2+14.34D0*S3) *
40423      &    EXP(-5.94D0*S) * X**((-0.013D0-1.80D0*S)/(1D0+3.14D0*S)) *
40424      &    X1**(2.37D0+0.4D0*S) * XL**(0.32D0+3.6D0*S) + 3.42D0 *
40425      &    EXP(-12D0*S) * X**0.255D0 * X1**(2.37D0+3D0*S)
40426           XSEA = 0.842D0*S/(1D0+21.3D0*S-33.2D0*S2+229D0*S3) *
40427      &    X**((0.13D0-2.90D0*S)/(1D0+5.44D0*S)) * X1**(3.45D0+0.5D0*S) *
40428      &    XL**(2.8D0*S)
40429           XSEA0 = 0D0
40430         ENDIF
40431  
40432 C...Evaluate set 2D parton distributions below or above threshold.
40433       ELSEIF(ISET.EQ.3) THEN
40434         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
40435      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
40436           XVAL = X**0.46D0 * X1**0.64D0 + 0.76D0 * X
40437           XGLU = 1.925D0 * X1**2
40438           XSEA = 0.242D0 * X1**4
40439         ELSE
40440           XVAL = (1D0+0.186D0*S)/(1D0-0.209D0*S+1.495D0*S2) *
40441      &    X**(0.46D0+0.25D0*S) *
40442      &    X1**((0.64D0+0.14D0*S+5D0*S2)/(1D0+S)) * XL**(1.9D0*S) +
40443      &    (0.76D0+0.4D0*S) * X * X1**(2.667D0*S)
40444           XGLU = (1.925D0+5.55D0*S+147D0*S2)/(1D0-3.59D0*S+3.32D0*S2) *
40445      &    EXP(-18.67D0*S) *
40446      &    X**((-5.81D0*S-5.34D0*S2)/(1D0+29D0*S-4.26D0*S2))
40447      &    * X1**((2D0-5.9D0*S)/(1D0+1.7D0*S)) *
40448      &    XL**(9.3D0*S/(1D0+1.7D0*S))
40449           XSEA = (0.242D0-0.252D0*S+1.19D0*S2)/
40450      &    (1D0-0.607D0*S+21.95D0*S2) *
40451      &    X**(-12.1D0*S2/(1D0+2.62D0*S+16.7D0*S2)) * X1**4 * XL**S
40452           XSEA0 = 0.242D0 * X1**4
40453         ENDIF
40454  
40455 C...Evaluate set 2M parton distributions below or above threshold.
40456       ELSEIF(ISET.EQ.4) THEN
40457         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
40458      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
40459           XVAL = 1.168D0 * X**0.50D0 * X1**2.60D0 + 0.965D0 * X
40460           XGLU = 1.808D0 * X1**2
40461           XSEA = 0.209D0 * X1**4
40462         ELSE
40463           XVAL = (1.168D0+1.771D0*S+29.35D0*S2) * EXP(-5.776D0*S) *
40464      &    X**((0.5D0+0.208D0*S)/(1D0-0.794D0*S+1.516D0*S2)) *
40465      &    X1**((2.6D0+7.6D0*S)/(1D0+5D0*S)) *
40466      &    XL**(5.15D0*S/(1D0+2D0*S)) +
40467      &    (0.965D0+22.35D0*S)/(1D0+18.4D0*S) * X * X1**(2.667D0*S)
40468           XGLU = (1.808D0+29.9D0*S)/(1D0+26.4D0*S) * EXP(-5.28D0*S) *
40469      &    X**((-5.35D0*S-10.11D0*S2)/(1D0+31.71D0*S)) *
40470      &    X1**((2D0-7.3D0*S+4D0*S2)/(1D0+2.5D0*S)) *
40471      &    XL**(10.9D0*S/(1D0+2.5D0*S))
40472           XSEA = (0.209D0+0.644D0*S2)/(1D0+0.319D0*S+17.6D0*S2) *
40473      &    X**((-0.373D0*S-7.71D0*S2)/(1D0+0.815D0*S+11.0D0*S2)) *
40474      &    X1**(4D0+S) * XL**(0.45D0*S)
40475           XSEA0 = 0.209D0 * X1**4
40476         ENDIF
40477       ENDIF
40478  
40479 C...Threshold factors for c and b sea.
40480       SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
40481       XCHM=0D0
40482       IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
40483         SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
40484         IF(ISET.EQ.0) THEN
40485           XCHM=XSEA*(1D0-(SCH/SLL)**2)
40486         ELSE
40487           XCHM=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SCH/SLL)
40488         ENDIF
40489       ENDIF
40490       XBOT=0D0
40491       IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
40492         SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
40493         IF(ISET.EQ.0) THEN
40494           XBOT=XSEA*(1D0-(SBT/SLL)**2)
40495         ELSE
40496           XBOT=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SBT/SLL)
40497         ENDIF
40498       ENDIF
40499  
40500 C...Fill parton distributions.
40501       XPGA(0)=XGLU
40502       XPGA(1)=XSEA
40503       XPGA(2)=XSEA
40504       XPGA(3)=XSEA
40505       XPGA(4)=XCHM
40506       XPGA(5)=XBOT
40507       XPGA(KFA)=XPGA(KFA)+XVAL
40508       DO 110 KFL=1,5
40509         XPGA(-KFL)=XPGA(KFL)
40510   110 CONTINUE
40511       VXPGA(KFA)=XVAL
40512       VXPGA(-KFA)=XVAL
40513  
40514       RETURN
40515       END
40516  
40517 C*********************************************************************
40518  
40519 C...PYGANO
40520 C...Evaluates the parton distributions of the anomalous photon,
40521 C...inhomogeneously evolved from a scale P2 (where it vanishes) to Q2.
40522 C...KF=0 gives the sum over (up to) 5 flavours,
40523 C...KF<0 limits to flavours up to abs(KF),
40524 C...KF>0 is for flavour KF only.
40525 C...ALAM is the 4-flavour Lambda, which is automatically converted
40526 C...to 3- and 5-flavour equivalents as needed.
40527 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
40528  
40529       SUBROUTINE PYGANO(KF,X,Q2,P2,ALAM,XPGA,VXPGA)
40530  
40531 C...Double precision and integer declarations.
40532       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40533       IMPLICIT INTEGER(I-N)
40534       INTEGER PYK,PYCHGE,PYCOMP
40535 C...Local arrays and data.
40536       DIMENSION XPGA(-6:6), VXPGA(-6:6), ALAMSQ(3:5)
40537       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
40538  
40539 C...Reset output.
40540       DO 100 KFL=-6,6
40541         XPGA(KFL)=0D0
40542         VXPGA(KFL)=0D0
40543   100 CONTINUE
40544       IF(Q2.LE.P2) RETURN
40545       KFA=IABS(KF)
40546  
40547 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
40548       ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2D0/27D0))**2
40549       ALAMSQ(4)=ALAM**2
40550       ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2D0/23D0))**2
40551       P2EFF=MAX(P2,1.2D0*ALAMSQ(3))
40552       IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
40553       IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
40554       Q2EFF=MAX(Q2,P2EFF)
40555       XL=-LOG(X)
40556  
40557 C...Find number of flavours at lower and upper scale.
40558       NFP=4
40559       IF(P2EFF.LT.PMC**2) NFP=3
40560       IF(P2EFF.GT.PMB**2) NFP=5
40561       NFQ=4
40562       IF(Q2EFF.LT.PMC**2) NFQ=3
40563       IF(Q2EFF.GT.PMB**2) NFQ=5
40564  
40565 C...Define range of flavour loop.
40566       IF(KF.EQ.0) THEN
40567         KFLMN=1
40568         KFLMX=5
40569       ELSEIF(KF.LT.0) THEN
40570         KFLMN=1
40571         KFLMX=KFA
40572       ELSE
40573         KFLMN=KFA
40574         KFLMX=KFA
40575       ENDIF
40576  
40577 C...Loop over flavours the photon can branch into.
40578       DO 110 KFL=KFLMN,KFLMX
40579  
40580 C...Light flavours: calculate t range and (approximate) s range.
40581         IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
40582           TDIFF=LOG(Q2EFF/P2EFF)
40583           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
40584      &    LOG(P2EFF/ALAMSQ(NFQ)))
40585           IF(NFQ.GT.NFP) THEN
40586             Q2DIV=PMB**2
40587             IF(NFQ.EQ.4) Q2DIV=PMC**2
40588             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
40589      &      LOG(P2EFF/ALAMSQ(NFQ)))
40590             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
40591      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
40592             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
40593           ENDIF
40594           IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
40595             Q2DIV=PMC**2
40596             SNF4=(6D0/(33D0-2D0*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
40597      &      LOG(P2EFF/ALAMSQ(4)))
40598             SNF3=(6D0/(33D0-2D0*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
40599      &      LOG(P2EFF/ALAMSQ(3)))
40600             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
40601           ENDIF
40602  
40603 C...u and s quark do not need a separate treatment when d has been done.
40604         ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
40605  
40606 C...Charm: as above, but only include range above c threshold.
40607         ELSEIF(KFL.EQ.4) THEN
40608           IF(Q2.LE.PMC**2) GOTO 110
40609           P2EFF=MAX(P2EFF,PMC**2)
40610           Q2EFF=MAX(Q2EFF,P2EFF)
40611           TDIFF=LOG(Q2EFF/P2EFF)
40612           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
40613      &    LOG(P2EFF/ALAMSQ(NFQ)))
40614           IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
40615             Q2DIV=PMB**2
40616             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
40617      &      LOG(P2EFF/ALAMSQ(NFQ)))
40618             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
40619      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
40620             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
40621           ENDIF
40622  
40623 C...Bottom: as above, but only include range above b threshold.
40624         ELSEIF(KFL.EQ.5) THEN
40625           IF(Q2.LE.PMB**2) GOTO 110
40626           P2EFF=MAX(P2EFF,PMB**2)
40627           Q2EFF=MAX(Q2,P2EFF)
40628           TDIFF=LOG(Q2EFF/P2EFF)
40629           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
40630      &    LOG(P2EFF/ALAMSQ(NFQ)))
40631         ENDIF
40632  
40633 C...Evaluate flavour-dependent prefactor (charge^2 etc.).
40634         CHSQ=1D0/9D0
40635         IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4D0/9D0
40636         FAC=AEM2PI*2D0*CHSQ*TDIFF
40637  
40638 C...Evaluate parton distributions (normalized to unit momentum sum).
40639         IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
40640           XVAL= ((1.5D0+2.49D0*S+26.9D0*S**2)/(1D0+32.3D0*S**2)*X**2 +
40641      &    (1.5D0-0.49D0*S+7.83D0*S**2)/(1D0+7.68D0*S**2)*(1D0-X)**2 +
40642      &    1.5D0*S/(1D0-3.2D0*S+7D0*S**2)*X*(1D0-X)) *
40643      &    X**(1D0/(1D0+0.58D0*S)) * (1D0-X**2)**(2.5D0*S/(1D0+10D0*S))
40644           XGLU= 2D0*S/(1D0+4D0*S+7D0*S**2) *
40645      &    X**(-1.67D0*S/(1D0+2D0*S)) * (1D0-X**2)**(1.2D0*S) *
40646      &    ((4D0*X**2+7D0*X+4D0)*(1D0-X)/3D0 - 2D0*X*(1D0+X)*XL)
40647           XSEA= 0.333D0*S**2/(1D0+4.90D0*S+4.69D0*S**2+21.4D0*S**3) *
40648      &    X**(-1.18D0*S/(1D0+1.22D0*S)) * (1D0-X)**(1.2D0*S) *
40649      &    ((8D0-73D0*X+62D0*X**2)*(1D0-X)/9D0 +
40650      &    (3D0-8D0*X**2/3D0)*X*XL + (2D0*X-1D0)*X*XL**2)
40651  
40652 C...Threshold factors for c and b sea.
40653           SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
40654           XCHM=0D0
40655           IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
40656             SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
40657             XCHM=XSEA*(1D0-(SCH/SLL)**3)
40658           ENDIF
40659           XBOT=0D0
40660           IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
40661             SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
40662             XBOT=XSEA*(1D0-(SBT/SLL)**3)
40663           ENDIF
40664         ENDIF
40665  
40666 C...Add contribution of each valence flavour.
40667         XPGA(0)=XPGA(0)+FAC*XGLU
40668         XPGA(1)=XPGA(1)+FAC*XSEA
40669         XPGA(2)=XPGA(2)+FAC*XSEA
40670         XPGA(3)=XPGA(3)+FAC*XSEA
40671         XPGA(4)=XPGA(4)+FAC*XCHM
40672         XPGA(5)=XPGA(5)+FAC*XBOT
40673         XPGA(KFL)=XPGA(KFL)+FAC*XVAL
40674         VXPGA(KFL)=VXPGA(KFL)+FAC*XVAL
40675   110 CONTINUE
40676       DO 120 KFL=1,5
40677         XPGA(-KFL)=XPGA(KFL)
40678         VXPGA(-KFL)=VXPGA(KFL)
40679   120 CONTINUE
40680  
40681       RETURN
40682       END
40683  
40684  
40685 C*********************************************************************
40686  
40687 C...PYGBEH
40688 C...Evaluates the Bethe-Heitler cross section for heavy flavour
40689 C...production.
40690 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
40691  
40692       SUBROUTINE PYGBEH(KF,X,Q2,P2,PM2,XPBH)
40693  
40694 C...Double precision and integer declarations.
40695       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40696       IMPLICIT INTEGER(I-N)
40697       INTEGER PYK,PYCHGE,PYCOMP
40698  
40699 C...Local data.
40700       DATA AEM2PI/0.0011614D0/
40701  
40702 C...Reset output.
40703       XPBH=0D0
40704       SIGBH=0D0
40705  
40706 C...Check kinematics limits.
40707       IF(X.GE.Q2/(4D0*PM2+Q2+P2)) RETURN
40708       W2=Q2*(1D0-X)/X-P2
40709       BETA2=1D0-4D0*PM2/W2
40710       IF(BETA2.LT.1D-10) RETURN
40711       BETA=SQRT(BETA2)
40712       RMQ=4D0*PM2/Q2
40713  
40714 C...Simple case: P2 = 0.
40715       IF(P2.LT.1D-4) THEN
40716         IF(BETA.LT.0.99D0) THEN
40717           XBL=LOG((1D0+BETA)/(1D0-BETA))
40718         ELSE
40719           XBL=LOG((1D0+BETA)**2*W2/(4D0*PM2))
40720         ENDIF
40721         SIGBH=BETA*(8D0*X*(1D0-X)-1D0-RMQ*X*(1D0-X))+
40722      &  XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)
40723  
40724 C...Complicated case: P2 > 0, based on approximation of
40725 C...C.T. Hill and G.G. Ross, Nucl. Phys. B148 (1979) 373
40726       ELSE
40727         RPQ=1D0-4D0*X**2*P2/Q2
40728         IF(RPQ.GT.1D-10) THEN
40729           RPBE=SQRT(RPQ*BETA2)
40730           IF(RPBE.LT.0.99D0) THEN
40731             XBL=LOG((1D0+RPBE)/(1D0-RPBE))
40732             XBI=2D0*RPBE/(1D0-RPBE**2)
40733           ELSE
40734             RPBESN=4D0*PM2/W2+(4D0*X**2*P2/Q2)*BETA2
40735             XBL=LOG((1D0+RPBE)**2/RPBESN)
40736             XBI=2D0*RPBE/RPBESN
40737           ENDIF
40738           SIGBH=BETA*(6D0*X*(1D0-X)-1D0)+
40739      &    XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)+
40740      &    XBI*(2D0*X/Q2)*(PM2*X*(2D0-RMQ)-P2*X)
40741         ENDIF
40742       ENDIF
40743  
40744 C...Multiply by charge-squared etc. to get parton distribution.
40745       CHSQ=1D0/9D0
40746       IF(IABS(KF).EQ.2.OR.IABS(KF).EQ.4) CHSQ=4D0/9D0
40747       XPBH=3D0*CHSQ*AEM2PI*X*SIGBH
40748  
40749       RETURN
40750       END
40751  
40752 C*********************************************************************
40753  
40754 C...PYGDIR
40755 C...Evaluates the direct contribution, i.e. the C^gamma term,
40756 C...as needed in MSbar parametrizations.
40757 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
40758  
40759       SUBROUTINE PYGDIR(X,Q2,P2,Q02,XPGA)
40760  
40761 C...Double precision and integer declarations.
40762       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40763       IMPLICIT INTEGER(I-N)
40764       INTEGER PYK,PYCHGE,PYCOMP
40765 C...Local array and data.
40766       DIMENSION XPGA(-6:6)
40767       DATA PMC/1.3D0/, PMB/4.6D0/, AEM2PI/0.0011614D0/
40768  
40769 C...Reset output.
40770       DO 100 KFL=-6,6
40771         XPGA(KFL)=0D0
40772   100 CONTINUE
40773  
40774 C...Evaluate common x-dependent expression.
40775       XTMP = (X**2+(1D0-X)**2) * (-LOG(X)) - 1D0
40776       CGAM = 3D0*AEM2PI*X * (XTMP*(1D0+P2/(P2+Q02)) + 6D0*X*(1D0-X))
40777  
40778 C...d, u, s part by simple charge factor.
40779       XPGA(1)=(1D0/9D0)*CGAM
40780       XPGA(2)=(4D0/9D0)*CGAM
40781       XPGA(3)=(1D0/9D0)*CGAM
40782  
40783 C...Also fill for antiquarks.
40784       DO 110 KF=1,5
40785         XPGA(-KF)=XPGA(KF)
40786   110 CONTINUE
40787  
40788       RETURN
40789       END
40790  
40791 C*********************************************************************
40792  
40793 C...PYPDPI
40794 C...Gives pi+ parton distribution according to two different
40795 C...parametrizations.
40796  
40797       SUBROUTINE PYPDPI(X,Q2,XPPI)
40798  
40799 C...Double precision and integer declarations.
40800       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40801       IMPLICIT INTEGER(I-N)
40802       INTEGER PYK,PYCHGE,PYCOMP
40803 C...Commonblocks.
40804       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
40805       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
40806       COMMON/PYINT1/MINT(400),VINT(400)
40807       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
40808 C...Local arrays.
40809       DIMENSION XPPI(-6:6),COW(3,5,4,2),XQ(9),TS(6)
40810  
40811 C...The following data lines are coefficients needed in the
40812 C...Owens pion parton distribution parametrizations, see below.
40813 C...Expansion coefficients for up and down valence quark distributions.
40814       DATA ((COW(IP,IS,1,1),IS=1,5),IP=1,3)/
40815      &4.0000D-01,  7.0000D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
40816      &-6.2120D-02,  6.4780D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
40817      &-7.1090D-03,  1.3350D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
40818       DATA ((COW(IP,IS,1,2),IS=1,5),IP=1,3)/
40819      &4.0000D-01,  6.2800D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
40820      &-5.9090D-02,  6.4360D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
40821      &-6.5240D-03,  1.4510D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
40822 C...Expansion coefficients for gluon distribution.
40823       DATA ((COW(IP,IS,2,1),IS=1,5),IP=1,3)/
40824      &8.8800D-01,  0.0000D+00,  3.1100D+00,  6.0000D+00,  0.0000D+00,
40825      &-1.8020D+00, -1.5760D+00, -1.3170D-01,  2.8010D+00, -1.7280D+01,
40826      &1.8120D+00,  1.2000D+00,  5.0680D-01, -1.2160D+01,  2.0490D+01/
40827       DATA ((COW(IP,IS,2,2),IS=1,5),IP=1,3)/
40828      &7.9400D-01,  0.0000D+00,  2.8900D+00,  6.0000D+00,  0.0000D+00,
40829      &-9.1440D-01, -1.2370D+00,  5.9660D-01, -3.6710D+00, -8.1910D+00,
40830      &5.9660D-01,  6.5820D-01, -2.5500D-01, -2.3040D+00,  7.7580D+00/
40831 C...Expansion coefficients for (up+down+strange) quark sea distribution.
40832       DATA ((COW(IP,IS,3,1),IS=1,5),IP=1,3)/
40833      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
40834      &-2.4280D-01, -2.1200D-01,  8.6730D-01,  1.2660D+00,  2.3820D+00,
40835      &1.3860D-01,  3.6710D-03,  4.7470D-02, -2.2150D+00,  3.4820D-01/
40836       DATA ((COW(IP,IS,3,2),IS=1,5),IP=1,3)/
40837      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
40838      &-1.4170D-01, -1.6970D-01, -2.4740D+00, -2.5340D+00,  5.6210D-01,
40839      &-1.7400D-01, -9.6230D-02,  1.5750D+00,  1.3780D+00, -2.7010D-01/
40840 C...Expansion coefficients for charm quark sea distribution.
40841       DATA ((COW(IP,IS,4,1),IS=1,5),IP=1,3)/
40842      &0.0000D+00, -2.2120D-02,  2.8940D+00,  0.0000D+00,  0.0000D+00,
40843      &7.9280D-02, -3.7850D-01,  9.4330D+00,  5.2480D+00,  8.3880D+00,
40844      &-6.1340D-02, -1.0880D-01, -1.0852D+01, -7.1870D+00, -1.1610D+01/
40845       DATA ((COW(IP,IS,4,2),IS=1,5),IP=1,3)/
40846      &0.0000D+00, -8.8200D-02,  1.9240D+00,  0.0000D+00,  0.0000D+00,
40847      &6.2290D-02, -2.8920D-01,  2.4240D-01, -4.4630D+00, -8.3670D-01,
40848      &-4.0990D-02, -1.0820D-01,  2.0360D+00,  5.2090D+00, -4.8400D-02/
40849  
40850 C...Euler's beta function, requires ordinary Gamma function
40851       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
40852  
40853 C...Reset output array.
40854       DO 100 KFL=-6,6
40855         XPPI(KFL)=0D0
40856   100 CONTINUE
40857  
40858       IF(MSTP(53).LE.2) THEN
40859 C...Pion parton distributions from Owens.
40860 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 2000 GeV^2.
40861  
40862 C...Determine set, Lambda and s expansion variable.
40863         NSET=MSTP(53)
40864         IF(NSET.EQ.1) ALAM=0.2D0
40865         IF(NSET.EQ.2) ALAM=0.4D0
40866         VINT(231)=4D0
40867         IF(MSTP(57).LE.0) THEN
40868           SD=0D0
40869         ELSE
40870           Q2IN=MIN(2D3,MAX(4D0,Q2))
40871           SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
40872         ENDIF
40873  
40874 C...Calculate parton distributions.
40875         DO 120 KFL=1,4
40876           DO 110 IS=1,5
40877             TS(IS)=COW(1,IS,KFL,NSET)+COW(2,IS,KFL,NSET)*SD+
40878      &      COW(3,IS,KFL,NSET)*SD**2
40879   110     CONTINUE
40880           IF(KFL.EQ.1) THEN
40881             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)/EULBET(TS(1),TS(2)+1D0)
40882           ELSE
40883             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
40884      &      TS(5)*X**2)
40885           ENDIF
40886   120   CONTINUE
40887  
40888 C...Put into output array.
40889         XPPI(0)=XQ(2)
40890         XPPI(1)=XQ(3)/6D0
40891         XPPI(2)=XQ(1)+XQ(3)/6D0
40892         XPPI(3)=XQ(3)/6D0
40893         XPPI(4)=XQ(4)
40894         XPPI(-1)=XQ(1)+XQ(3)/6D0
40895         XPPI(-2)=XQ(3)/6D0
40896         XPPI(-3)=XQ(3)/6D0
40897         XPPI(-4)=XQ(4)
40898  
40899 C...Leading order pion parton distributions from Glueck, Reya and Vogt.
40900 C...Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
40901 C...10^-5 < x < 1.
40902       ELSE
40903  
40904 C...Determine s expansion variable and some x expressions.
40905         VINT(231)=0.25D0
40906         IF(MSTP(57).LE.0) THEN
40907           SD=0D0
40908         ELSE
40909           Q2IN=MIN(1D8,MAX(0.25D0,Q2))
40910           SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
40911         ENDIF
40912         SD2=SD**2
40913         XL=-LOG(X)
40914         XS=SQRT(X)
40915  
40916 C...Evaluate valence, gluon and sea distributions.
40917         XFVAL=(0.519D0+0.180D0*SD-0.011D0*SD2)*X**(0.499D0-0.027D0*SD)*
40918      &  (1D0+(0.381D0-0.419D0*SD)*XS)*(1D0-X)**(0.367D0+0.563D0*SD)
40919         XFGLU=(X**(0.482D0+0.341D0*SQRT(SD))*((0.678D0+0.877D0*
40920      &  SD-0.175D0*SD2)+
40921      &  (0.338D0-1.597D0*SD)*XS+(-0.233D0*SD+0.406D0*SD2)*X)+
40922      &  SD**0.599D0*EXP(-(0.618D0+2.070D0*SD)+SQRT(3.676D0*SD**1.263D0*
40923      &  XL)))*
40924      &  (1D0-X)**(0.390D0+1.053D0*SD)
40925         XFSEA=SD**0.55D0*(1D0-0.748D0*XS+(0.313D0+0.935D0*SD)*X)*(1D0-
40926      &  X)**3.359D0*
40927      &  EXP(-(4.433D0+1.301D0*SD)+SQRT((9.30D0-0.887D0*SD)*SD**0.56D0*
40928      &  XL))/
40929      &  XL**(2.538D0-0.763D0*SD)
40930         IF(SD.LE.0.888D0) THEN
40931           XFCHM=0D0
40932         ELSE
40933           XFCHM=(SD-0.888D0)**1.02D0*(1D0+1.008D0*X)*(1D0-X)**(1.208D0+
40934      &    0.771D0*SD)*
40935      &    EXP(-(4.40D0+1.493D0*SD)+SQRT((2.032D0+1.901D0*SD)*SD**0.39D0*
40936      &    XL))
40937         ENDIF
40938         IF(SD.LE.1.351D0) THEN
40939           XFBOT=0D0
40940         ELSE
40941           XFBOT=(SD-1.351D0)**1.03D0*(1D0-X)**(0.697D0+0.855D0*SD)*
40942      &    EXP(-(4.51D0+1.490D0*SD)+SQRT((3.056D0+1.694D0*SD)*SD**0.39D0*
40943      &    XL))
40944         ENDIF
40945  
40946 C...Put into output array.
40947         XPPI(0)=XFGLU
40948         XPPI(1)=XFSEA
40949         XPPI(2)=XFSEA
40950         XPPI(3)=XFSEA
40951         XPPI(4)=XFCHM
40952         XPPI(5)=XFBOT
40953         DO 130 KFL=1,5
40954           XPPI(-KFL)=XPPI(KFL)
40955   130   CONTINUE
40956         XPPI(2)=XPPI(2)+XFVAL
40957         XPPI(-1)=XPPI(-1)+XFVAL
40958       ENDIF
40959  
40960       RETURN
40961       END
40962  
40963 C*********************************************************************
40964  
40965 C...PYPDPR
40966 C...Gives proton parton distributions according to a few different
40967 C...parametrizations.
40968  
40969       SUBROUTINE PYPDPR(X,Q2,XPPR)
40970  
40971 C...Double precision and integer declarations.
40972       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40973       IMPLICIT INTEGER(I-N)
40974       INTEGER PYK,PYCHGE,PYCOMP
40975 C...Commonblocks.
40976       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
40977       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
40978       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
40979       COMMON/PYINT1/MINT(400),VINT(400)
40980       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
40981 C...Arrays and data.
40982       DIMENSION XPPR(-6:6),Q2MIN(16)
40983       DATA Q2MIN/ 2.56D0, 2.56D0, 2.56D0, 0.4D0, 0.4D0, 0.4D0,
40984      &1.0D0, 1.0D0, 2*0D0, 0.25D0, 5D0, 5D0, 4D0, 4D0, 0D0/
40985  
40986 C...Reset output array.
40987       DO 100 KFL=-6,6
40988         XPPR(KFL)=0D0
40989   100 CONTINUE
40990  
40991 C...Common preliminaries.
40992       NSET=MAX(1,MIN(16,MSTP(51)))
40993       IF(NSET.EQ.9.OR.NSET.EQ.10) NSET=6
40994       VINT(231)=Q2MIN(NSET)
40995       IF(MSTP(57).EQ.0) THEN
40996         Q2L=Q2MIN(NSET)
40997       ELSE
40998         Q2L=MAX(Q2MIN(NSET),Q2)
40999       ENDIF
41000  
41001       IF(NSET.GE.1.AND.NSET.LE.3) THEN
41002 C...Interface to the CTEQ 3 parton distributions.
41003         QRT=SQRT(MAX(1D0,Q2L))
41004  
41005 C...Loop over flavours.
41006         DO 110 I=-6,6
41007           IF(I.LE.0) THEN
41008             XPPR(I)=PYCTEQ(NSET,I,X,QRT)
41009           ELSEIF(I.LE.2) THEN
41010             XPPR(I)=PYCTEQ(NSET,I,X,QRT)+XPPR(-I)
41011           ELSE
41012             XPPR(I)=XPPR(-I)
41013           ENDIF
41014   110   CONTINUE
41015  
41016       ELSEIF(NSET.GE.4.AND.NSET.LE.6) THEN
41017 C...Interface to the GRV 94 distributions.
41018         IF(NSET.EQ.4) THEN
41019           CALL PYGRVL (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
41020         ELSEIF(NSET.EQ.5) THEN
41021           CALL PYGRVM (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
41022         ELSE
41023           CALL PYGRVD (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
41024         ENDIF
41025  
41026 C...Put into output array.
41027         XPPR(0)=GL
41028         XPPR(-1)=0.5D0*(UDB+DEL)
41029         XPPR(-2)=0.5D0*(UDB-DEL)
41030         XPPR(-3)=SB
41031         XPPR(-4)=CHM
41032         XPPR(-5)=BOT
41033         XPPR(1)=DV+XPPR(-1)
41034         XPPR(2)=UV+XPPR(-2)
41035         XPPR(3)=SB
41036         XPPR(4)=CHM
41037         XPPR(5)=BOT
41038  
41039       ELSEIF(NSET.EQ.7) THEN
41040 C...Interface to the CTEQ 5L parton distributions.
41041 C...Range of validity 10^-6 < x < 1, 1 < Q < 10^4 extended by
41042 C...freezing x*f(x,Q2) at borders.
41043         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
41044         XIN=MAX(1D-6,MIN(1D0,X))
41045  
41046 C...Loop over flavours (with u <-> d notation mismatch).
41047         SUMUDB=PYCT5L(-1,XIN,QRT)
41048         RATUDB=PYCT5L(-2,XIN,QRT)
41049         DO 120 I=-5,2
41050           IF(I.EQ.1) THEN
41051             XPPR(I)=XIN*PYCT5L(2,XIN,QRT)
41052           ELSEIF(I.EQ.2) THEN
41053             XPPR(I)=XIN*PYCT5L(1,XIN,QRT)
41054           ELSEIF(I.EQ.-1) THEN
41055             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
41056           ELSEIF(I.EQ.-2) THEN
41057             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
41058           ELSE
41059             XPPR(I)=XIN*PYCT5L(I,XIN,QRT)
41060             IF(I.LT.0) XPPR(-I)=XPPR(I)
41061           ENDIF
41062   120   CONTINUE
41063  
41064       ELSEIF(NSET.EQ.8) THEN
41065 C...Interface to the CTEQ 5M1 parton distributions.
41066         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
41067         XIN=MAX(1D-6,MIN(1D0,X))
41068  
41069 C...Loop over flavours (with u <-> d notation mismatch).
41070         SUMUDB=PYCT5M(-1,XIN,QRT)
41071         RATUDB=PYCT5M(-2,XIN,QRT)
41072         DO 130 I=-5,2
41073           IF(I.EQ.1) THEN
41074             XPPR(I)=XIN*PYCT5M(2,XIN,QRT)
41075           ELSEIF(I.EQ.2) THEN
41076             XPPR(I)=XIN*PYCT5M(1,XIN,QRT)
41077           ELSEIF(I.EQ.-1) THEN
41078             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
41079           ELSEIF(I.EQ.-2) THEN
41080             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
41081           ELSE
41082             XPPR(I)=XIN*PYCT5M(I,XIN,QRT)
41083             IF(I.LT.0) XPPR(-I)=XPPR(I)
41084           ENDIF
41085   130   CONTINUE
41086  
41087       ELSEIF(NSET.GE.11.AND.NSET.LE.15) THEN
41088 C...GRV92LO, EHLQ1, EHLQ2, DO1 AND DO2 distributions:
41089 C...obsolete but offers backwards compatibility.
41090         CALL PYPDPO(X,Q2L,XPPR)
41091  
41092 C...Symmetric choice for debugging only
41093       ELSEIF(NSET.EQ.16) THEN
41094         XPPR(0)=.5D0/X
41095         XPPR(1)=.05D0/X
41096         XPPR(2)=.05D0/X
41097         XPPR(3)=.05D0/X
41098         XPPR(4)=.05D0/X
41099         XPPR(5)=.05D0/X
41100         XPPR(-1)=.05D0/X
41101         XPPR(-2)=.05D0/X
41102         XPPR(-3)=.05D0/X
41103         XPPR(-4)=.05D0/X
41104         XPPR(-5)=.05D0/X
41105  
41106       ENDIF
41107  
41108       RETURN
41109       END
41110  
41111 C*********************************************************************
41112  
41113 C...PYCTEQ
41114 C...Gives the CTEQ 3 parton distribution function sets in
41115 C...parametrized form, of October 24, 1994.
41116 C...Authors: H.L. Lai, J. Botts, J. Huston, J.G. Morfin, J.F. Owens,
41117 C...J. Qiu, W.K. Tung and H. Weerts.
41118  
41119       FUNCTION PYCTEQ (ISET, IPRT, X, Q)
41120  
41121 C...Double precision declaration.
41122       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41123       IMPLICIT INTEGER(I-N)
41124  
41125 C...Data on Lambda values of fits, minimum Q and quark masses.
41126       DIMENSION ALM(3), QMS(4:6)
41127       DATA ALM / 0.177D0, 0.239D0, 0.247D0 /
41128       DATA QMN / 1.60D0 /, (QMS(I), I=4,6) / 1.60D0, 5.00D0, 180.0D0 /
41129  
41130 C....Check flavour thresholds. Set up QI for SB.
41131       IP = IABS(IPRT)
41132       IF(IP .GE. 4) THEN
41133         IF(Q .LE. QMS(IP)) THEN
41134           PYCTEQ = 0D0
41135           RETURN
41136         ENDIF
41137         QI = QMS(IP)
41138       ELSE
41139         QI = QMN
41140       ENDIF
41141  
41142 C...Use "standard lambda" of parametrization program for expansion.
41143       ALAM = ALM (ISET)
41144       SBL = LOG(Q/ALAM) / LOG(QI/ALAM)
41145       SB = LOG (SBL)
41146       SB2 = SB*SB
41147       SB3 = SB2*SB
41148  
41149 C...Expansion for CTEQ3L.
41150       IF(ISET .EQ. 1) THEN
41151         IF(IPRT .EQ. 2) THEN
41152           A0=Exp( 0.1907D+00+0.4205D-01*SB +0.2752D+00*SB2-
41153      &    0.3171D+00*SB3)
41154           A1= 0.4611D+00+0.2331D-01*SB -0.3403D-01*SB2+0.3174D-01*SB3
41155           A2= 0.3504D+01+0.5739D+00*SB +0.2676D+00*SB2-0.1553D+00*SB3
41156           A3= 0.7452D+01-0.6742D+01*SB +0.2849D+01*SB2-0.1964D+00*SB3
41157           A4= 0.1116D+01-0.3435D+00*SB +0.2865D+00*SB2-0.1288D+00*SB3
41158           A5= 0.6659D-01+0.2714D+00*SB -0.2688D+00*SB2+0.2763D+00*SB3
41159         ELSEIF(IPRT .EQ. 1) THEN
41160           A0=Exp( 0.1141D+00+0.4764D+00*SB -0.1745D+01*SB2+
41161      &    0.7728D+00*SB3)
41162           A1= 0.4275D+00-0.1290D+00*SB +0.3609D+00*SB2-0.1689D+00*SB3
41163           A2= 0.3000D+01+0.2946D+01*SB -0.4117D+01*SB2+0.1989D+01*SB3
41164           A3=-0.1302D+01+0.2322D+01*SB -0.4258D+01*SB2+0.2109D+01*SB3
41165           A4= 0.2586D+01-0.1920D+00*SB -0.3754D+00*SB2+0.2731D+00*SB3
41166           A5=-0.2251D+00-0.5374D+00*SB +0.2245D+01*SB2-0.1034D+01*SB3
41167         ELSEIF(IPRT .EQ. 0) THEN
41168           A0=Exp(-0.7631D+00-0.7241D+00*SB -0.1170D+01*SB2+
41169      &    0.5343D+00*SB3)
41170           A1=-0.3573D+00+0.3469D+00*SB -0.3396D+00*SB2+0.9188D-01*SB3
41171           A2= 0.5604D+01+0.7458D+00*SB -0.5082D+00*SB2+0.1844D+00*SB3
41172           A3= 0.1549D+02-0.1809D+02*SB +0.1162D+02*SB2-0.3483D+01*SB3
41173           A4= 0.9881D+00+0.1364D+00*SB -0.4421D+00*SB2+0.2051D+00*SB3
41174           A5=-0.9505D-01+0.3259D+01*SB -0.1547D+01*SB2+0.2918D+00*SB3
41175         ELSEIF(IPRT .EQ. -1) THEN
41176           A0=Exp(-0.2449D+01-0.3513D+01*SB +0.4529D+01*SB2-
41177      &    0.2031D+01*SB3)
41178           A1=-0.4050D+00+0.3411D+00*SB -0.3669D+00*SB2+0.1109D+00*SB3
41179           A2= 0.7470D+01-0.2982D+01*SB +0.5503D+01*SB2-0.2419D+01*SB3
41180           A3= 0.1503D+02+0.1638D+01*SB -0.8772D+01*SB2+0.3852D+01*SB3
41181           A4= 0.1137D+01-0.1006D+01*SB +0.1485D+01*SB2-0.6389D+00*SB3
41182           A5=-0.5299D+00+0.3160D+01*SB -0.3104D+01*SB2+0.1219D+01*SB3
41183         ELSEIF(IPRT .EQ. -2) THEN
41184           A0=Exp(-0.2740D+01-0.7987D-01*SB -0.9015D+00*SB2-
41185      &    0.9872D-01*SB3)
41186           A1=-0.3909D+00+0.1244D+00*SB -0.4487D-01*SB2+0.1277D-01*SB3
41187           A2= 0.9163D+01+0.2823D+00*SB -0.7720D+00*SB2-0.9360D-02*SB3
41188           A3= 0.1080D+02-0.3915D+01*SB -0.1153D+01*SB2+0.2649D+01*SB3
41189           A4= 0.9894D+00-0.1647D+00*SB -0.9426D-02*SB2+0.2945D-02*SB3
41190           A5=-0.3395D+00+0.6998D+00*SB +0.7000D+00*SB2-0.6730D-01*SB3
41191         ELSEIF(IPRT .EQ. -3) THEN
41192           A0=Exp(-0.3640D+01+0.1250D+01*SB -0.2914D+01*SB2+
41193      &    0.8390D+00*SB3)
41194           A1=-0.3595D+00-0.5259D-01*SB +0.3122D+00*SB2-0.1642D+00*SB3
41195           A2= 0.7305D+01+0.9727D+00*SB -0.9788D+00*SB2-0.5193D-01*SB3
41196           A3= 0.1198D+02-0.1799D+02*SB +0.2614D+02*SB2-0.1091D+02*SB3
41197           A4= 0.9882D+00-0.6101D+00*SB +0.9737D+00*SB2-0.4935D+00*SB3
41198           A5=-0.1186D+00-0.3231D+00*SB +0.3074D+01*SB2-0.1274D+01*SB3
41199         ELSEIF(IPRT .EQ. -4) THEN
41200           A0=SB** 0.1122D+01*Exp(-0.3718D+01-0.1335D+01*SB +
41201      &    0.1651D-01*SB2)
41202           A1=-0.4719D+00+0.7509D+00*SB -0.8420D+00*SB2+0.2901D+00*SB3
41203           A2= 0.6194D+01-0.1641D+01*SB +0.4907D+01*SB2-0.2523D+01*SB3
41204           A3= 0.4426D+01-0.4270D+01*SB +0.6581D+01*SB2-0.3474D+01*SB3
41205           A4= 0.2683D+00+0.9876D+00*SB -0.7612D+00*SB2+0.1780D+00*SB3
41206           A5=-0.4547D+00+0.4410D+01*SB -0.3712D+01*SB2+0.1245D+01*SB3
41207         ELSEIF(IPRT .EQ. -5) THEN
41208           A0=SB** 0.9838D+00*Exp(-0.2548D+01-0.7660D+01*SB +
41209      &    0.3702D+01*SB2)
41210           A1=-0.3122D+00-0.2120D+00*SB +0.5716D+00*SB2-0.3773D+00*SB3
41211           A2= 0.6257D+01-0.8214D-01*SB -0.2537D+01*SB2+0.2981D+01*SB3
41212           A3=-0.6723D+00+0.2131D+01*SB +0.9599D+01*SB2-0.7910D+01*SB3
41213           A4= 0.9169D-01+0.4295D-01*SB -0.5017D+00*SB2+0.3811D+00*SB3
41214           A5= 0.2402D+00+0.2656D+01*SB -0.1586D+01*SB2+0.2880D+00*SB3
41215         ELSEIF(IPRT .EQ. -6) THEN
41216           A0=SB** 0.1001D+01*Exp(-0.6934D+01+0.3050D+01*SB -
41217      &    0.6943D+00*SB2)
41218           A1=-0.1713D+00-0.5167D+00*SB +0.1241D+01*SB2-0.1703D+01*SB3
41219           A2= 0.6169D+01+0.3023D+01*SB -0.1972D+02*SB2+0.1069D+02*SB3
41220           A3= 0.4439D+01-0.1746D+02*SB +0.1225D+02*SB2+0.8350D+00*SB3
41221           A4= 0.5458D+00-0.4586D+00*SB +0.9089D+00*SB2-0.4049D+00*SB3
41222           A5= 0.3207D+01-0.3362D+01*SB +0.5877D+01*SB2-0.7659D+01*SB3
41223         ENDIF
41224  
41225 C...Expansion for CTEQ3M.
41226       ELSEIF(ISET .EQ. 2) THEN
41227         IF(IPRT .EQ. 2) THEN
41228           A0=Exp( 0.2259D+00+0.1237D+00*SB +0.3035D+00*SB2-
41229      &    0.2935D+00*SB3)
41230           A1= 0.5085D+00+0.1651D-01*SB -0.3592D-01*SB2+0.2782D-01*SB3
41231           A2= 0.3732D+01+0.4901D+00*SB +0.2218D+00*SB2-0.1116D+00*SB3
41232           A3= 0.7011D+01-0.6620D+01*SB +0.2557D+01*SB2-0.1360D+00*SB3
41233           A4= 0.8969D+00-0.2429D+00*SB +0.1811D+00*SB2-0.6888D-01*SB3
41234           A5= 0.8636D-01+0.2558D+00*SB -0.3082D+00*SB2+0.2535D+00*SB3
41235         ELSEIF(IPRT .EQ. 1) THEN
41236           A0=Exp(-0.7266D+00-0.1584D+01*SB +0.1259D+01*SB2-
41237      &    0.4305D-01*SB3)
41238           A1= 0.5285D+00-0.3721D+00*SB +0.5150D+00*SB2-0.1697D+00*SB3
41239           A2= 0.4075D+01+0.8282D+00*SB -0.4496D+00*SB2+0.2107D+00*SB3
41240           A3= 0.3279D+01+0.5066D+01*SB -0.9134D+01*SB2+0.2897D+01*SB3
41241           A4= 0.4399D+00-0.5888D+00*SB +0.4802D+00*SB2-0.1664D+00*SB3
41242           A5= 0.3678D+00-0.8929D+00*SB +0.1592D+01*SB2-0.5713D+00*SB3
41243         ELSEIF(IPRT .EQ. 0) THEN
41244           A0=Exp(-0.2318D+00-0.9779D+00*SB -0.3783D+00*SB2+
41245      &    0.1037D-01*SB3)
41246           A1=-0.2916D+00+0.1754D+00*SB -0.1884D+00*SB2+0.6116D-01*SB3
41247           A2= 0.5349D+01+0.7460D+00*SB +0.2319D+00*SB2-0.2622D+00*SB3
41248           A3= 0.6920D+01-0.3454D+01*SB +0.2027D+01*SB2-0.7626D+00*SB3
41249           A4= 0.1013D+01+0.1423D+00*SB -0.1798D+00*SB2+0.1872D-01*SB3
41250           A5=-0.5465D-01+0.2303D+01*SB -0.9584D+00*SB2+0.3098D+00*SB3
41251         ELSEIF(IPRT .EQ. -1) THEN
41252           A0=Exp(-0.2328D+01-0.3061D+01*SB +0.3620D+01*SB2-
41253      &    0.1602D+01*SB3)
41254           A1=-0.3358D+00+0.3198D+00*SB -0.4210D+00*SB2+0.1571D+00*SB3
41255           A2= 0.8478D+01-0.3112D+01*SB +0.5243D+01*SB2-0.2255D+01*SB3
41256           A3= 0.1971D+02+0.3389D+00*SB -0.5268D+01*SB2+0.2099D+01*SB3
41257           A4= 0.1128D+01-0.4701D+00*SB +0.7779D+00*SB2-0.3506D+00*SB3
41258           A5=-0.4708D+00+0.3341D+01*SB -0.3375D+01*SB2+0.1353D+01*SB3
41259         ELSEIF(IPRT .EQ. -2) THEN
41260           A0=Exp(-0.2906D+01-0.1069D+00*SB -0.1055D+01*SB2+
41261      &    0.2496D+00*SB3)
41262           A1=-0.2875D+00+0.6571D-01*SB -0.1987D-01*SB2-0.1800D-02*SB3
41263           A2= 0.9854D+01-0.2715D+00*SB -0.7407D+00*SB2+0.2888D+00*SB3
41264           A3= 0.1583D+02-0.7687D+01*SB +0.3428D+01*SB2-0.3327D+00*SB3
41265           A4= 0.9763D+00+0.7599D-01*SB -0.2128D+00*SB2+0.6852D-01*SB3
41266           A5=-0.8444D-02+0.9434D+00*SB +0.4152D+00*SB2-0.1481D+00*SB3
41267         ELSEIF(IPRT .EQ. -3) THEN
41268           A0=Exp(-0.3780D+01+0.2499D+01*SB -0.4962D+01*SB2+
41269      &    0.1936D+01*SB3)
41270           A1=-0.2639D+00-0.1575D+00*SB +0.3584D+00*SB2-0.1646D+00*SB3
41271           A2= 0.8082D+01+0.2794D+01*SB -0.5438D+01*SB2+0.2321D+01*SB3
41272           A3= 0.1811D+02-0.2000D+02*SB +0.1951D+02*SB2-0.6904D+01*SB3
41273           A4= 0.9822D+00+0.4972D+00*SB -0.8690D+00*SB2+0.3415D+00*SB3
41274           A5= 0.1772D+00-0.6078D+00*SB +0.3341D+01*SB2-0.1473D+01*SB3
41275         ELSEIF(IPRT .EQ. -4) THEN
41276           A0=SB** 0.1122D+01*Exp(-0.4232D+01-0.1808D+01*SB +
41277      &    0.5348D+00*SB2)
41278           A1=-0.2824D+00+0.5846D+00*SB -0.7230D+00*SB2+0.2419D+00*SB3
41279           A2= 0.5683D+01-0.2948D+01*SB +0.5916D+01*SB2-0.2560D+01*SB3
41280           A3= 0.2051D+01+0.4795D+01*SB -0.4271D+01*SB2+0.4174D+00*SB3
41281           A4= 0.1737D+00+0.1717D+01*SB -0.1978D+01*SB2+0.6643D+00*SB3
41282           A5= 0.8689D+00+0.3500D+01*SB -0.3283D+01*SB2+0.1026D+01*SB3
41283         ELSEIF(IPRT .EQ. -5) THEN
41284           A0=SB** 0.9906D+00*Exp(-0.1496D+01-0.6576D+01*SB +
41285      &    0.1569D+01*SB2)
41286           A1=-0.2140D+00-0.6419D-01*SB -0.2741D-02*SB2+0.3185D-02*SB3
41287           A2= 0.5781D+01+0.1049D+00*SB -0.3930D+00*SB2+0.5174D+00*SB3
41288           A3=-0.9420D+00+0.5511D+00*SB +0.8817D+00*SB2+0.1903D+01*SB3
41289           A4= 0.2418D-01+0.4232D-01*SB -0.1244D-01*SB2-0.2365D-01*SB3
41290           A5= 0.7664D+00+0.1794D+01*SB -0.4917D+00*SB2-0.1284D+00*SB3
41291         ELSEIF(IPRT .EQ. -6) THEN
41292           A0=SB** 0.1000D+01*Exp(-0.8460D+01+0.1154D+01*SB +
41293      &    0.8838D+01*SB2)
41294           A1=-0.4316D-01-0.2976D+00*SB +0.3174D+00*SB2-0.1429D+01*SB3
41295           A2= 0.4910D+01+0.2273D+01*SB +0.5631D+01*SB2-0.1994D+02*SB3
41296           A3= 0.1190D+02-0.2000D+02*SB -0.2000D+02*SB2+0.1292D+02*SB3
41297           A4= 0.5771D+00-0.2552D+00*SB +0.7510D+00*SB2+0.6923D+00*SB3
41298           A5= 0.4402D+01-0.1627D+01*SB -0.2085D+01*SB2-0.6737D+01*SB3
41299         ENDIF
41300  
41301 C...Expansion for CTEQ3D.
41302       ELSEIF(ISET .EQ. 3) THEN
41303         IF(IPRT .EQ. 2) THEN
41304           A0=Exp( 0.2148D+00+0.5814D-01*SB +0.2734D+00*SB2-
41305      &    0.2902D+00*SB3)
41306           A1= 0.4810D+00+0.1657D-01*SB -0.3800D-01*SB2+0.3125D-01*SB3
41307           A2= 0.3509D+01+0.3923D+00*SB +0.4010D+00*SB2-0.1932D+00*SB3
41308           A3= 0.7055D+01-0.6552D+01*SB +0.3466D+01*SB2-0.5657D+00*SB3
41309           A4= 0.1061D+01-0.3453D+00*SB +0.4089D+00*SB2-0.1817D+00*SB3
41310           A5= 0.8687D-01+0.2548D+00*SB -0.2967D+00*SB2+0.2647D+00*SB3
41311         ELSEIF(IPRT .EQ. 1) THEN
41312           A0=Exp( 0.3961D+00+0.4914D+00*SB -0.1728D+01*SB2+
41313      &    0.7257D+00*SB3)
41314           A1= 0.4162D+00-0.1419D+00*SB +0.3680D+00*SB2-0.1618D+00*SB3
41315           A2= 0.3248D+01+0.3028D+01*SB -0.4307D+01*SB2+0.1920D+01*SB3
41316           A3=-0.1100D+01+0.2184D+01*SB -0.3820D+01*SB2+0.1717D+01*SB3
41317           A4= 0.2082D+01-0.2756D+00*SB +0.3043D+00*SB2-0.1260D+00*SB3
41318           A5=-0.4822D+00-0.5706D+00*SB +0.2243D+01*SB2-0.9760D+00*SB3
41319         ELSEIF(IPRT .EQ. 0) THEN
41320           A0=Exp(-0.4665D+00-0.7554D+00*SB -0.3323D+00*SB2-
41321      &    0.2734D-04*SB3)
41322           A1=-0.3359D+00+0.2395D+00*SB -0.2377D+00*SB2+0.7059D-01*SB3
41323           A2= 0.5451D+01+0.6086D+00*SB +0.8606D-01*SB2-0.1425D+00*SB3
41324           A3= 0.1026D+02-0.9352D+01*SB +0.4879D+01*SB2-0.1150D+01*SB3
41325           A4= 0.9935D+00-0.5017D-01*SB -0.1707D-01*SB2-0.1464D-02*SB3
41326           A5=-0.4160D-01+0.2305D+01*SB -0.1063D+01*SB2+0.3211D+00*SB3
41327         ELSEIF(IPRT .EQ. -1) THEN
41328           A0=Exp(-0.2714D+01-0.2868D+01*SB +0.3700D+01*SB2-
41329      &    0.1671D+01*SB3)
41330           A1=-0.3893D+00+0.3341D+00*SB -0.3897D+00*SB2+0.1420D+00*SB3
41331           A2= 0.8359D+01-0.3267D+01*SB +0.5327D+01*SB2-0.2245D+01*SB3
41332           A3= 0.2359D+02-0.5669D+01*SB -0.4602D+01*SB2+0.3153D+01*SB3
41333           A4= 0.1106D+01-0.4745D+00*SB +0.7739D+00*SB2-0.3417D+00*SB3
41334           A5=-0.5557D+00+0.3433D+01*SB -0.3390D+01*SB2+0.1354D+01*SB3
41335         ELSEIF(IPRT .EQ. -2) THEN
41336           A0=Exp(-0.3323D+01+0.2296D+00*SB -0.1109D+01*SB2+
41337      &    0.2223D+00*SB3)
41338           A1=-0.3410D+00+0.8847D-01*SB -0.1111D-01*SB2-0.5927D-02*SB3
41339           A2= 0.9753D+01-0.5182D+00*SB -0.4670D+00*SB2+0.1921D+00*SB3
41340           A3= 0.1977D+02-0.1600D+02*SB +0.9481D+01*SB2-0.1864D+01*SB3
41341           A4= 0.9818D+00+0.2839D-02*SB -0.1188D+00*SB2+0.3584D-01*SB3
41342           A5=-0.7934D-01+0.1004D+01*SB +0.3704D+00*SB2-0.1220D+00*SB3
41343         ELSEIF(IPRT .EQ. -3) THEN
41344           A0=Exp(-0.3985D+01+0.2855D+01*SB -0.5208D+01*SB2+
41345      &    0.1937D+01*SB3)
41346           A1=-0.3337D+00-0.1150D+00*SB +0.3691D+00*SB2-0.1709D+00*SB3
41347           A2= 0.7968D+01+0.3641D+01*SB -0.6599D+01*SB2+0.2642D+01*SB3
41348           A3= 0.1873D+02-0.1999D+02*SB +0.1734D+02*SB2-0.5813D+01*SB3
41349           A4= 0.9731D+00+0.5082D+00*SB -0.8780D+00*SB2+0.3231D+00*SB3
41350           A5=-0.5542D-01-0.4189D+00*SB +0.3309D+01*SB2-0.1439D+01*SB3
41351         ELSEIF(IPRT .EQ. -4) THEN
41352           A0=SB** 0.1105D+01*Exp(-0.3952D+01-0.1901D+01*SB +
41353      &    0.5137D+00*SB2)
41354           A1=-0.3543D+00+0.6055D+00*SB -0.6941D+00*SB2+0.2278D+00*SB3
41355           A2= 0.5955D+01-0.2629D+01*SB +0.5337D+01*SB2-0.2300D+01*SB3
41356           A3= 0.1933D+01+0.4882D+01*SB -0.3810D+01*SB2+0.2290D+00*SB3
41357           A4= 0.1806D+00+0.1655D+01*SB -0.1893D+01*SB2+0.6395D+00*SB3
41358           A5= 0.4790D+00+0.3612D+01*SB -0.3152D+01*SB2+0.9684D+00*SB3
41359         ELSEIF(IPRT .EQ. -5) THEN
41360           A0=SB** 0.9818D+00*Exp(-0.1825D+01-0.7464D+01*SB +
41361      &    0.2143D+01*SB2)
41362           A1=-0.2604D+00-0.1400D+00*SB +0.1702D+00*SB2-0.8476D-01*SB3
41363           A2= 0.6005D+01+0.6275D+00*SB -0.2535D+01*SB2+0.2219D+01*SB3
41364           A3=-0.9067D+00+0.1149D+01*SB +0.1974D+01*SB2+0.4716D+01*SB3
41365           A4= 0.3915D-01+0.5945D-01*SB -0.9844D-01*SB2+0.2783D-01*SB3
41366           A5= 0.5500D+00+0.1994D+01*SB -0.6727D+00*SB2-0.1510D+00*SB3
41367         ELSEIF(IPRT .EQ. -6) THEN
41368           A0=SB** 0.1002D+01*Exp(-0.8553D+01+0.3793D+00*SB +
41369      &    0.9998D+01*SB2)
41370           A1=-0.5870D-01-0.2792D+00*SB +0.6526D+00*SB2-0.1984D+01*SB3
41371           A2= 0.4716D+01+0.4473D+00*SB +0.1128D+02*SB2-0.1937D+02*SB3
41372           A3= 0.1289D+02-0.1742D+02*SB -0.1983D+02*SB2-0.9274D+00*SB3
41373           A4= 0.5647D+00-0.2732D+00*SB +0.1074D+01*SB2+0.5981D+00*SB3
41374           A5= 0.4390D+01-0.1262D+01*SB -0.9026D+00*SB2-0.9394D+01*SB3
41375         ENDIF
41376       ENDIF
41377  
41378 C...Calculation of x * f(x, Q).
41379       PYCTEQ = MAX(0D0, A0 *(X**A1) *((1D0-X)**A2) *(1D0+A3*(X**A4))
41380      &   *(LOG(1D0+1D0/X))**A5 )
41381  
41382       RETURN
41383       END
41384  
41385 C*********************************************************************
41386  
41387 C...PYGRVL
41388 C...Gives the GRV 94 L (leading order) parton distribution function set
41389 C...in parametrized form.
41390 C...Authors: M. Glueck, E. Reya and A. Vogt.
41391  
41392       SUBROUTINE PYGRVL (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
41393  
41394 C...Double precision declaration.
41395       IMPLICIT DOUBLE PRECISION (A - Z)
41396  
41397 C...Common expressions.
41398       MU2  = 0.23D0
41399       LAM2 = 0.2322D0 * 0.2322D0
41400       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
41401       DS = SQRT (S)
41402       S2 = S * S
41403       S3 = S2 * S
41404  
41405 C...uv :
41406       NU  =  2.284D0 + 0.802D0 * S + 0.055D0 * S2
41407       AKU =  0.590D0 - 0.024D0 * S
41408       BKU =  0.131D0 + 0.063D0 * S
41409       AU  = -0.449D0 - 0.138D0 * S - 0.076D0 * S2
41410       BU  =  0.213D0 + 2.669D0 * S - 0.728D0 * S2
41411       CU  =  8.854D0 - 9.135D0 * S + 1.979D0 * S2
41412       DU  =  2.997D0 + 0.753D0 * S - 0.076D0 * S2
41413       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
41414  
41415 C...dv :
41416       ND  =  0.371D0 + 0.083D0 * S + 0.039D0 * S2
41417       AKD =  0.376D0
41418       BKD =  0.486D0 + 0.062D0 * S
41419       AD  = -0.509D0 + 3.310D0 * S - 1.248D0 * S2
41420       BD  =  12.41D0 - 10.52D0 * S + 2.267D0 * S2
41421       CD  =  6.373D0 - 6.208D0 * S + 1.418D0 * S2
41422       DD  =  3.691D0 + 0.799D0 * S - 0.071D0 * S2
41423       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
41424  
41425 C...del :
41426       NE  =  0.082D0 + 0.014D0 * S + 0.008D0 * S2
41427       AKE =  0.409D0 - 0.005D0 * S
41428       BKE =  0.799D0 + 0.071D0 * S
41429       AE  = -38.07D0 + 36.13D0 * S - 0.656D0 * S2
41430       BE  =  90.31D0 - 74.15D0 * S + 7.645D0 * S2
41431       CE  =  0.0D0
41432       DE  =  7.486D0 + 1.217D0 * S - 0.159D0 * S2
41433       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
41434  
41435 C...udb :
41436       ALX =  1.451D0
41437       BEX =  0.271D0
41438       AKX =  0.410D0 - 0.232D0 * S
41439       BKX =  0.534D0 - 0.457D0 * S
41440       AGX =  0.890D0 - 0.140D0 * S
41441       BGX = -0.981D0
41442       CX  =  0.320D0 + 0.683D0 * S
41443       DX  =  4.752D0 + 1.164D0 * S + 0.286D0 * S2
41444       EX  =  4.119D0 + 1.713D0 * S
41445       ESX =  0.682D0 + 2.978D0 * S
41446       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
41447      & DX, EX, ESX)
41448  
41449 C...sb :
41450       STS =  0D0
41451       ALS =  0.914D0
41452       BES =  0.577D0
41453       AKS =  1.798D0 - 0.596D0 * S
41454       AS  = -5.548D0 + 3.669D0 * DS - 0.616D0 * S
41455       BS  =  18.92D0 - 16.73D0 * DS + 5.168D0 * S
41456       DST =  6.379D0 - 0.350D0 * S  + 0.142D0 * S2
41457       EST =  3.981D0 + 1.638D0 * S
41458       ESS =  6.402D0
41459       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
41460  
41461 C...cb :
41462       STC =  0.888D0
41463       ALC =  1.01D0
41464       BEC =  0.37D0
41465       AKC =  0D0
41466       AC  =  0D0
41467       BC  =  4.24D0  - 0.804D0 * S
41468       DCT =  3.46D0  - 1.076D0 * S
41469       ECT =  4.61D0  + 1.49D0  * S
41470       ESC =  2.555D0 + 1.961D0 * S
41471       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
41472  
41473 C...bb :
41474       STB =  1.351D0
41475       ALB =  1.00D0
41476       BEB =  0.51D0
41477       AKB =  0D0
41478       AB  =  0D0
41479       BB  =  1.848D0
41480       DBT =  2.929D0 + 1.396D0 * S
41481       EBT =  4.71D0  + 1.514D0 * S
41482       ESB =  4.02D0  + 1.239D0 * S
41483       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
41484  
41485 C...gl :
41486       ALG =  0.524D0
41487       BEG =  1.088D0
41488       AKG =  1.742D0 - 0.930D0 * S
41489       BKG =                         - 0.399D0 * S2
41490       AG  =  7.486D0 - 2.185D0 * S
41491       BG  =  16.69D0 - 22.74D0 * S  + 5.779D0 * S2
41492       CG  = -25.59D0 + 29.71D0 * S  - 7.296D0 * S2
41493       DG  =  2.792D0 + 2.215D0 * S  + 0.422D0 * S2 - 0.104D0 * S3
41494       EG  =  0.807D0 + 2.005D0 * S
41495       ESG =  3.841D0 + 0.316D0 * S
41496       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG,
41497      & DG, EG, ESG)
41498  
41499       RETURN
41500       END
41501  
41502 C*********************************************************************
41503  
41504 C...PYGRVM
41505 C...Gives the GRV 94 M (MSbar) parton distribution function set
41506 C...in parametrized form.
41507 C...Authors: M. Glueck, E. Reya and A. Vogt.
41508  
41509       SUBROUTINE PYGRVM (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
41510  
41511 C...Double precision declaration.
41512       IMPLICIT DOUBLE PRECISION (A - Z)
41513  
41514 C...Common expressions.
41515       MU2  = 0.34D0
41516       LAM2 = 0.248D0 * 0.248D0
41517       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
41518       DS = SQRT (S)
41519       S2 = S * S
41520       S3 = S2 * S
41521  
41522 C...uv :
41523       NU  =  1.304D0 + 0.863D0 * S
41524       AKU =  0.558D0 - 0.020D0 * S
41525       BKU =          0.183D0 * S
41526       AU  = -0.113D0 + 0.283D0 * S - 0.321D0 * S2
41527       BU  =  6.843D0 - 5.089D0 * S + 2.647D0 * S2 - 0.527D0 * S3
41528       CU  =  7.771D0 - 10.09D0 * S + 2.630D0 * S2
41529       DU  =  3.315D0 + 1.145D0 * S - 0.583D0 * S2 + 0.154D0 * S3
41530       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
41531  
41532 C...dv :
41533       ND  =  0.102D0 - 0.017D0 * S + 0.005D0 * S2
41534       AKD =  0.270D0 - 0.019D0 * S
41535       BKD =  0.260D0
41536       AD  =  2.393D0 + 6.228D0 * S - 0.881D0 * S2
41537       BD  =  46.06D0 + 4.673D0 * S - 14.98D0 * S2 + 1.331D0 * S3
41538       CD  =  17.83D0 - 53.47D0 * S + 21.24D0 * S2
41539       DD  =  4.081D0 + 0.976D0 * S - 0.485D0 * S2 + 0.152D0 * S3
41540       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
41541  
41542 C...del :
41543       NE  =  0.070D0 + 0.042D0 * S - 0.011D0 * S2 + 0.004D0 * S3
41544       AKE =  0.409D0 - 0.007D0 * S
41545       BKE =  0.782D0 + 0.082D0 * S
41546       AE  = -29.65D0 + 26.49D0 * S + 5.429D0 * S2
41547       BE  =  90.20D0 - 74.97D0 * S + 4.526D0 * S2
41548       CE  =  0.0D0
41549       DE  =  8.122D0 + 2.120D0 * S - 1.088D0 * S2 + 0.231D0 * S3
41550       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
41551  
41552 C...udb :
41553       ALX =  0.877D0
41554       BEX =  0.561D0
41555       AKX =  0.275D0
41556       BKX =  0.0D0
41557       AGX =  0.997D0
41558       BGX =  3.210D0 - 1.866D0 * S
41559       CX  =  7.300D0
41560       DX  =  9.010D0 + 0.896D0 * DS + 0.222D0 * S2
41561       EX  =  3.077D0 + 1.446D0 * S
41562       ESX =  3.173D0 - 2.445D0 * DS + 2.207D0 * S
41563       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
41564      & DX, EX, ESX)
41565  
41566 C...sb :
41567       STS =  0D0
41568       ALS =  0.756D0
41569       BES =  0.216D0
41570       AKS =  1.690D0 + 0.650D0 * DS - 0.922D0 * S
41571       AS  = -4.329D0 + 1.131D0 * S
41572       BS  =  9.568D0 - 1.744D0 * S
41573       DST =  9.377D0 + 1.088D0 * DS - 1.320D0 * S + 0.130D0 * S2
41574       EST =  3.031D0 + 1.639D0 * S
41575       ESS =  5.837D0 + 0.815D0 * S
41576       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
41577  
41578 C...cb :
41579       STC =  0.820D0
41580       ALC =  0.98D0
41581       BEC =  0D0
41582       AKC = -0.625D0 - 0.523D0 * S
41583       AC  =  0D0
41584       BC  =  1.896D0 + 1.616D0 * S
41585       DCT =  4.12D0  + 0.683D0 * S
41586       ECT =  4.36D0  + 1.328D0 * S
41587       ESC =  0.677D0 + 0.679D0 * S
41588       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
41589  
41590 C...bb :
41591       STB =  1.297D0
41592       ALB =  0.99D0
41593       BEB =  0D0
41594       AKB =          - 0.193D0 * S
41595       AB  =  0D0
41596       BB  =  0D0
41597       DBT =  3.447D0 + 0.927D0 * S
41598       EBT =  4.68D0  + 1.259D0 * S
41599       ESB =  1.892D0 + 2.199D0 * S
41600       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
41601  
41602 C...gl :
41603        ALG =  1.014D0
41604        BEG =  1.738D0
41605        AKG =  1.724D0 + 0.157D0 * S
41606        BKG =  0.800D0 + 1.016D0 * S
41607        AG  =  7.517D0 - 2.547D0 * S
41608        BG  =  34.09D0 - 52.21D0 * DS + 17.47D0 * S
41609        CG  =  4.039D0 + 1.491D0 * S
41610        DG  =  3.404D0 + 0.830D0 * S
41611        EG  = -1.112D0 + 3.438D0 * S  - 0.302D0 * S2
41612        ESG =  3.256D0 - 0.436D0 * S
41613        GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
41614  
41615        RETURN
41616        END
41617  
41618 C*********************************************************************
41619  
41620 C...PYGRVD
41621 C...Gives the GRV 94 D (DIS) parton distribution function set
41622 C...in parametrized form.
41623 C...Authors: M. Glueck, E. Reya and A. Vogt.
41624  
41625       SUBROUTINE PYGRVD (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
41626  
41627 C...Double precision declaration.
41628       IMPLICIT DOUBLE PRECISION (A - Z)
41629  
41630 C...Common expressions.
41631       MU2  = 0.34D0
41632       LAM2 = 0.248D0 * 0.248D0
41633       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
41634       DS = SQRT (S)
41635       S2 = S * S
41636       S3 = S2 * S
41637  
41638 C...uv :
41639       NU  =  2.484D0 + 0.116D0 * S + 0.093D0 * S2
41640       AKU =  0.563D0 - 0.025D0 * S
41641       BKU =  0.054D0 + 0.154D0 * S
41642       AU  = -0.326D0 - 0.058D0 * S - 0.135D0 * S2
41643       BU  = -3.322D0 + 8.259D0 * S - 3.119D0 * S2 + 0.291D0 * S3
41644       CU  =  11.52D0 - 12.99D0 * S + 3.161D0 * S2
41645       DU  =  2.808D0 + 1.400D0 * S - 0.557D0 * S2 + 0.119D0 * S3
41646       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
41647  
41648 C...dv :
41649       ND  =  0.156D0 - 0.017D0 * S
41650       AKD =  0.299D0 - 0.022D0 * S
41651       BKD =  0.259D0 - 0.015D0 * S
41652       AD  =  3.445D0 + 1.278D0 * S + 0.326D0 * S2
41653       BD  = -6.934D0 + 37.45D0 * S - 18.95D0 * S2 + 1.463D0 * S3
41654       CD  =  55.45D0 - 69.92D0 * S + 20.78D0 * S2
41655       DD  =  3.577D0 + 1.441D0 * S - 0.683D0 * S2 + 0.179D0 * S3
41656       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
41657  
41658 C...del :
41659       NE  =  0.099D0 + 0.019D0 * S + 0.002D0 * S2
41660       AKE =  0.419D0 - 0.013D0 * S
41661       BKE =  1.064D0 - 0.038D0 * S
41662       AE  = -44.00D0 + 98.70D0 * S - 14.79D0 * S2
41663       BE  =  28.59D0 - 40.94D0 * S - 13.66D0 * S2 + 2.523D0 * S3
41664       CE  =  84.57D0 - 108.8D0 * S + 31.52D0 * S2
41665       DE  =  7.469D0 + 2.480D0 * S - 0.866D0 * S2
41666       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
41667  
41668 C...udb :
41669       ALX =  1.215D0
41670       BEX =  0.466D0
41671       AKX =  0.326D0 + 0.150D0 * S
41672       BKX =  0.956D0 + 0.405D0 * S
41673       AGX =  0.272D0
41674       BGX =  3.794D0 - 2.359D0 * DS
41675       CX  =  2.014D0
41676       DX  =  7.941D0 + 0.534D0 * DS - 0.940D0 * S + 0.410D0 * S2
41677       EX  =  3.049D0 + 1.597D0 * S
41678       ESX =  4.396D0 - 4.594D0 * DS + 3.268D0 * S
41679       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
41680      & DX, EX, ESX)
41681  
41682 C...sb :
41683       STS =  0D0
41684       ALS =  0.175D0
41685       BES =  0.344D0
41686       AKS =  1.415D0 - 0.641D0 * DS
41687       AS  =  0.580D0 - 9.763D0 * DS + 6.795D0 * S  - 0.558D0 * S2
41688       BS  =  5.617D0 + 5.709D0 * DS - 3.972D0 * S
41689       DST =  13.78D0 - 9.581D0 * S  + 5.370D0 * S2 - 0.996D0 * S3
41690       EST =  4.546D0 + 0.372D0 * S2
41691       ESS =  5.053D0 - 1.070D0 * S  + 0.805D0 * S2
41692       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
41693  
41694 C...cb :
41695       STC =  0.820D0
41696       ALC =  0.98D0
41697       BEC =  0D0
41698       AKC = -0.625D0 - 0.523D0 * S
41699       AC  =  0D0
41700       BC  =  1.896D0 + 1.616D0 * S
41701       DCT =  4.12D0  + 0.683D0 * S
41702       ECT =  4.36D0  + 1.328D0 * S
41703       ESC =  0.677D0 + 0.679D0 * S
41704       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
41705  
41706 C...bb :
41707       STB =  1.297D0
41708       ALB =  0.99D0
41709       BEB =  0D0
41710       AKB =          - 0.193D0 * S
41711       AB  =  0D0
41712       BB  =  0D0
41713       DBT =  3.447D0 + 0.927D0 * S
41714       EBT =  4.68D0  + 1.259D0 * S
41715       ESB =  1.892D0 + 2.199D0 * S
41716       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
41717  
41718 C...gl :
41719       ALG =  1.258D0
41720       BEG =  1.846D0
41721       AKG =  2.423D0
41722       BKG =  2.427D0 + 1.311D0 * S  - 0.153D0 * S2
41723       AG  =  25.09D0 - 7.935D0 * S
41724       BG  = -14.84D0 - 124.3D0 * DS + 72.18D0 * S
41725       CG  =  590.3D0 - 173.8D0 * S
41726       DG  =  5.196D0 + 1.857D0 * S
41727       EG  = -1.648D0 + 3.988D0 * S  - 0.432D0 * S2
41728       ESG =  3.232D0 - 0.542D0 * S
41729       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
41730  
41731       RETURN
41732       END
41733  
41734 C*********************************************************************
41735  
41736 C...PYGRVV
41737 C...Auxiliary for the GRV 94 parton distribution functions
41738 C...for u and d valence and d-u sea.
41739 C...Authors: M. Glueck, E. Reya and A. Vogt.
41740  
41741       FUNCTION PYGRVV (X, N, AK, BK, A, B, C, D)
41742  
41743 C...Double precision declaration.
41744       IMPLICIT DOUBLE PRECISION (A - Z)
41745  
41746 C...Evaluation.
41747       DX = SQRT (X)
41748       PYGRVV = N * X**AK * (1D0+ A*X**BK + X * (B + C*DX)) *
41749      & (1D0- X)**D
41750  
41751       RETURN
41752       END
41753  
41754 C*********************************************************************
41755  
41756 C...PYGRVW
41757 C...Auxiliary for the GRV 94 parton distribution functions
41758 C...for d+u sea and gluon.
41759 C...Authors: M. Glueck, E. Reya and A. Vogt.
41760  
41761       FUNCTION PYGRVW (X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
41762  
41763 C...Double precision declaration.
41764       IMPLICIT DOUBLE PRECISION (A - Z)
41765  
41766 C...Evaluation.
41767       LX = LOG (1D0/X)
41768       PYGRVW = (X**AK * (A + X * (B + X*C)) * LX**BK + S**AL
41769      &     * EXP (-E + SQRT (ES * S**BE * LX))) * (1D0- X)**D
41770  
41771       RETURN
41772       END
41773  
41774 C*********************************************************************
41775  
41776 C...PYGRVS
41777 C...Auxiliary for the GRV 94 parton distribution functions
41778 C...for s, c and b sea.
41779 C...Authors: M. Glueck, E. Reya and A. Vogt.
41780  
41781       FUNCTION PYGRVS (X, S, STH, AL, BE, AK, AG, B, D, E, ES)
41782  
41783 C...Double precision declaration.
41784       IMPLICIT DOUBLE PRECISION (A - Z)
41785  
41786 C...Evaluation.
41787       IF(S.LE.STH) THEN
41788         PYGRVS = 0D0
41789       ELSE
41790         DX = SQRT (X)
41791         LX = LOG (1D0/X)
41792         PYGRVS = (S - STH)**AL / LX**AK * (1D0+ AG*DX + B*X) *
41793      &     (1D0- X)**D * EXP (-E + SQRT (ES * S**BE * LX))
41794       ENDIF
41795  
41796       RETURN
41797       END
41798  
41799 C*********************************************************************
41800  
41801 C...PYCT5L
41802 C...Auxiliary function for parametrization of CTEQ5L.
41803 C...Author: J. Pumplin 9/99.
41804  
41805 C...CTEQ5M1 and CTEQ5L Parton Distribution Functions
41806 C...in Parametrized Form
41807 C...            September 15, 1999
41808 C
41809 C...Ref: "GLOBAL QCD ANALYSIS OF PARTON STRUCTURE OF THE NUCLEON:
41810 C...      CTEQ5 PPARTON DISTRIBUTIONS"
41811 C...hep-ph/9903282
41812  
41813 C...The CTEQ5M1 set given here is an updated version of the original
41814 C...CTEQ5M set posted, in the table version, on the Web page of CTEQ.
41815 C...The differences between CTEQ5M and CTEQ5M1 are insignificant for
41816 C...almost all applications.
41817 C...The improvement is in the QCD evolution which is now more
41818 C...accurate, and which agrees completely with the benchmark work
41819 C...of the HERA 96/97 Workshop.
41820 C...The differences between the parametrized and the corresponding
41821 C...table versions (on which it is based) are of similar order as
41822 C...between the two version.
41823  
41824 C...!! Because accurate parametrizations over a wide range of (x,Q)
41825 C...is hard to obtain, only the most widely used sets CTEQ5M and
41826 C...CTEQ5L are available in parametrized form for now.
41827  
41828 C...These parametrizations were obtained by Jon Pumplin.
41829  
41830 C  Iset   PDF        Description              Alpha_s(Mz)  Lam4  Lam5
41831 C -------------------------------------------------------------------
41832 C   1    CTEQ5M1  Standard NLO MSbar scheme      0.118     326   226
41833 C   3    CTEQ5L   Leading Order                  0.127     192   146
41834 C -------------------------------------------------------------------
41835 C...Note the Qcd-lambda values given for CTEQ5L is for the leading
41836 C...order form of Alpha_s!!  Alpha_s(Mz) gives the absolute
41837 C...calibration.
41838  
41839 C...The two Iset value are adopted to agree with the standard table
41840 C...versions.
41841  
41842 C...Range of validity:
41843 C...The range of (x, Q) covered by this parametrization of the QCD
41844 C...evolved parton distributions is 1E-6 < x < 1 ;
41845 C...1.1 GeV < Q < 10 TeV.  Of course, the PDFs are constrained by
41846 C...data only in a subset of that region; and the assumed DGLAP
41847 C...evolution is unlikely to be valid for all of it either.
41848  
41849 C...The range of (x, Q) used in the CTEQ5 round of global analysis is
41850 C...approximately 0.01 < x < 0.75 ; and 4 GeV^2 < Q^2 < 400 GeV^2 for
41851 C...fixed target experiments; 0.0001 < x < 0.3 from HERA data; and
41852 C...Q^2 up to 40,000 GeV^2 from Tevatron inclusive Jet data.
41853  
41854       FUNCTION PYCT5L(IFL,X,Q)
41855  
41856 C...Double precision declaration.
41857       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41858       IMPLICIT INTEGER(I-N)
41859  
41860       PARAMETER (NEX=8, NLF=2)
41861       DIMENSION AM(0:NEX,0:NLF,-5:2)
41862       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
41863       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
41864       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
41865       DIMENSION AF(0:NEX)
41866  
41867       DATA MEXVEC( 2) / 8 /
41868       DATA MLFVEC( 2) / 2 /
41869       DATA UT1VEC( 2) /  0.4971265E+01 /
41870       DATA UT2VEC( 2) / -0.1105128E+01 /
41871       DATA ALFVEC( 2) /  0.2987216E+00 /
41872       DATA QMAVEC( 2) /  0.0000000E+00 /
41873       DATA (AM( 0,K, 2),K=0, 2)
41874      & /  0.5292616E+01, -0.2751910E+01, -0.2488990E+01 /
41875       DATA (AM( 1,K, 2),K=0, 2)
41876      & /  0.9714424E+00,  0.1011827E-01, -0.1023660E-01 /
41877       DATA (AM( 2,K, 2),K=0, 2)
41878      & / -0.1651006E+02,  0.7959721E+01,  0.8810563E+01 /
41879       DATA (AM( 3,K, 2),K=0, 2)
41880      & / -0.1643394E+02,  0.5892854E+01,  0.9348874E+01 /
41881       DATA (AM( 4,K, 2),K=0, 2)
41882      & /  0.3067422E+02,  0.4235796E+01, -0.5112136E+00 /
41883       DATA (AM( 5,K, 2),K=0, 2)
41884      & /  0.2352526E+02, -0.5305168E+01, -0.1169174E+02 /
41885       DATA (AM( 6,K, 2),K=0, 2)
41886      & / -0.1095451E+02,  0.3006577E+01,  0.5638136E+01 /
41887       DATA (AM( 7,K, 2),K=0, 2)
41888      & / -0.1172251E+02, -0.2183624E+01,  0.4955794E+01 /
41889       DATA (AM( 8,K, 2),K=0, 2)
41890      & /  0.1662533E-01,  0.7622870E-02, -0.4895887E-03 /
41891  
41892       DATA MEXVEC( 1) / 8 /
41893       DATA MLFVEC( 1) / 2 /
41894       DATA UT1VEC( 1) /  0.2612618E+01 /
41895       DATA UT2VEC( 1) / -0.1258304E+06 /
41896       DATA ALFVEC( 1) /  0.3407552E+00 /
41897       DATA QMAVEC( 1) /  0.0000000E+00 /
41898       DATA (AM( 0,K, 1),K=0, 2)
41899      & /  0.9905300E+00, -0.4502235E+00,  0.1624441E+00 /
41900       DATA (AM( 1,K, 1),K=0, 2)
41901      & /  0.8867534E+00,  0.1630829E-01, -0.4049085E-01 /
41902       DATA (AM( 2,K, 1),K=0, 2)
41903      & /  0.8547974E+00,  0.3336301E+00,  0.1371388E+00 /
41904       DATA (AM( 3,K, 1),K=0, 2)
41905      & /  0.2941113E+00, -0.1527905E+01,  0.2331879E+00 /
41906       DATA (AM( 4,K, 1),K=0, 2)
41907      & /  0.3384235E+02,  0.3715315E+01,  0.8276930E+00 /
41908       DATA (AM( 5,K, 1),K=0, 2)
41909      & /  0.6230115E+01,  0.3134639E+01, -0.1729099E+01 /
41910       DATA (AM( 6,K, 1),K=0, 2)
41911      & / -0.1186928E+01, -0.3282460E+00,  0.1052020E+00 /
41912       DATA (AM( 7,K, 1),K=0, 2)
41913      & / -0.8545702E+01, -0.6247947E+01,  0.3692561E+01 /
41914       DATA (AM( 8,K, 1),K=0, 2)
41915      & /  0.1724598E-01,  0.7120465E-02,  0.4003646E-04 /
41916  
41917       DATA MEXVEC( 0) / 8 /
41918       DATA MLFVEC( 0) / 2 /
41919       DATA UT1VEC( 0) / -0.4656819E+00 /
41920       DATA UT2VEC( 0) / -0.2742390E+03 /
41921       DATA ALFVEC( 0) /  0.4491863E+00 /
41922       DATA QMAVEC( 0) /  0.0000000E+00 /
41923       DATA (AM( 0,K, 0),K=0, 2)
41924      & /  0.1193572E+03, -0.3886845E+01, -0.1133965E+01 /
41925       DATA (AM( 1,K, 0),K=0, 2)
41926      & / -0.9421449E+02,  0.3995885E+01,  0.1607363E+01 /
41927       DATA (AM( 2,K, 0),K=0, 2)
41928      & /  0.4206383E+01,  0.2485954E+00,  0.2497468E+00 /
41929       DATA (AM( 3,K, 0),K=0, 2)
41930      & /  0.1210557E+03, -0.3015765E+01, -0.1423651E+01 /
41931       DATA (AM( 4,K, 0),K=0, 2)
41932      & / -0.1013897E+03, -0.7113478E+00,  0.2621865E+00 /
41933       DATA (AM( 5,K, 0),K=0, 2)
41934      & / -0.1312404E+01, -0.9297691E+00, -0.1562531E+00 /
41935       DATA (AM( 6,K, 0),K=0, 2)
41936      & /  0.1627137E+01,  0.4954111E+00, -0.6387009E+00 /
41937       DATA (AM( 7,K, 0),K=0, 2)
41938      & /  0.1537698E+00, -0.2487878E+00,  0.8305947E+00 /
41939       DATA (AM( 8,K, 0),K=0, 2)
41940      & /  0.2496448E-01,  0.2457823E-02,  0.8234276E-03 /
41941  
41942       DATA MEXVEC(-1) / 8 /
41943       DATA MLFVEC(-1) / 2 /
41944       DATA UT1VEC(-1) /  0.3862583E+01 /
41945       DATA UT2VEC(-1) / -0.1265969E+01 /
41946       DATA ALFVEC(-1) /  0.2457668E+00 /
41947       DATA QMAVEC(-1) /  0.0000000E+00 /
41948       DATA (AM( 0,K,-1),K=0, 2)
41949      & /  0.2647441E+02,  0.1059277E+02, -0.9176654E+00 /
41950       DATA (AM( 1,K,-1),K=0, 2)
41951      & /  0.1990636E+01,  0.8558918E-01,  0.4248667E-01 /
41952       DATA (AM( 2,K,-1),K=0, 2)
41953      & / -0.1476095E+02, -0.3276255E+02,  0.1558110E+01 /
41954       DATA (AM( 3,K,-1),K=0, 2)
41955      & / -0.2966889E+01, -0.3649037E+02,  0.1195914E+01 /
41956       DATA (AM( 4,K,-1),K=0, 2)
41957      & / -0.1000519E+03, -0.2464635E+01,  0.1964849E+00 /
41958       DATA (AM( 5,K,-1),K=0, 2)
41959      & /  0.3718331E+02,  0.4700389E+02, -0.2772142E+01 /
41960       DATA (AM( 6,K,-1),K=0, 2)
41961      & / -0.1872722E+02, -0.2291189E+02,  0.1089052E+01 /
41962       DATA (AM( 7,K,-1),K=0, 2)
41963      & / -0.1628146E+02, -0.1823993E+02,  0.2537369E+01 /
41964       DATA (AM( 8,K,-1),K=0, 2)
41965      & / -0.1156300E+01, -0.1280495E+00,  0.5153245E-01 /
41966  
41967       DATA MEXVEC(-2) / 7 /
41968       DATA MLFVEC(-2) / 2 /
41969       DATA UT1VEC(-2) /  0.1895615E+00 /
41970       DATA UT2VEC(-2) / -0.3069097E+01 /
41971       DATA ALFVEC(-2) /  0.5293999E+00 /
41972       DATA QMAVEC(-2) /  0.0000000E+00 /
41973       DATA (AM( 0,K,-2),K=0, 2)
41974      & / -0.6556775E+00,  0.2490190E+00,  0.3966485E-01 /
41975       DATA (AM( 1,K,-2),K=0, 2)
41976      & /  0.1305102E+01, -0.1188925E+00, -0.4600870E-02 /
41977       DATA (AM( 2,K,-2),K=0, 2)
41978      & / -0.2371436E+01,  0.3566814E+00, -0.2834683E+00 /
41979       DATA (AM( 3,K,-2),K=0, 2)
41980      & / -0.6152826E+01,  0.8339877E+00, -0.7233230E+00 /
41981       DATA (AM( 4,K,-2),K=0, 2)
41982      & / -0.8346558E+01,  0.2892168E+01,  0.2137099E+00 /
41983       DATA (AM( 5,K,-2),K=0, 2)
41984      & /  0.1279530E+02,  0.1021114E+00,  0.5787439E+00 /
41985       DATA (AM( 6,K,-2),K=0, 2)
41986      & /  0.5858816E+00, -0.1940375E+01, -0.4029269E+00 /
41987       DATA (AM( 7,K,-2),K=0, 2)
41988      & / -0.2795725E+02, -0.5263392E+00,  0.1290229E+01 /
41989  
41990       DATA MEXVEC(-3) / 7 /
41991       DATA MLFVEC(-3) / 2 /
41992       DATA UT1VEC(-3) /  0.3753257E+01 /
41993       DATA UT2VEC(-3) / -0.1113085E+01 /
41994       DATA ALFVEC(-3) /  0.3713141E+00 /
41995       DATA QMAVEC(-3) /  0.0000000E+00 /
41996       DATA (AM( 0,K,-3),K=0, 2)
41997      & /  0.1580931E+01, -0.2273826E+01, -0.1822245E+01 /
41998       DATA (AM( 1,K,-3),K=0, 2)
41999      & /  0.2702644E+01,  0.6763243E+00,  0.7231586E-02 /
42000       DATA (AM( 2,K,-3),K=0, 2)
42001      & / -0.1857924E+02,  0.3907500E+01,  0.5850109E+01 /
42002       DATA (AM( 3,K,-3),K=0, 2)
42003      & / -0.3044793E+02,  0.2639332E+01,  0.5566644E+01 /
42004       DATA (AM( 4,K,-3),K=0, 2)
42005      & / -0.4258011E+01, -0.5429244E+01,  0.4418946E+00 /
42006       DATA (AM( 5,K,-3),K=0, 2)
42007      & /  0.3465259E+02, -0.5532604E+01, -0.4904153E+01 /
42008       DATA (AM( 6,K,-3),K=0, 2)
42009      & / -0.1658858E+02,  0.2923275E+01,  0.2266286E+01 /
42010       DATA (AM( 7,K,-3),K=0, 2)
42011      & / -0.1149263E+02,  0.2877475E+01, -0.7999105E+00 /
42012  
42013       DATA MEXVEC(-4) / 7 /
42014       DATA MLFVEC(-4) / 2 /
42015       DATA UT1VEC(-4) /  0.4400772E+01 /
42016       DATA UT2VEC(-4) / -0.1356116E+01 /
42017       DATA ALFVEC(-4) /  0.3712017E-01 /
42018       DATA QMAVEC(-4) /  0.1300000E+01 /
42019       DATA (AM( 0,K,-4),K=0, 2)
42020      & / -0.8293661E+00, -0.3982375E+01, -0.6494283E-01 /
42021       DATA (AM( 1,K,-4),K=0, 2)
42022      & /  0.2754618E+01,  0.8338636E+00, -0.6885160E-01 /
42023       DATA (AM( 2,K,-4),K=0, 2)
42024      & / -0.1657987E+02,  0.1439143E+02, -0.6887240E+00 /
42025       DATA (AM( 3,K,-4),K=0, 2)
42026      & / -0.2800703E+02,  0.1535966E+02, -0.7377693E+00 /
42027       DATA (AM( 4,K,-4),K=0, 2)
42028      & / -0.6460216E+01, -0.4783019E+01,  0.4913297E+00 /
42029       DATA (AM( 5,K,-4),K=0, 2)
42030      & /  0.3141830E+02, -0.3178031E+02,  0.7136013E+01 /
42031       DATA (AM( 6,K,-4),K=0, 2)
42032      & / -0.1802509E+02,  0.1862163E+02, -0.4632843E+01 /
42033       DATA (AM( 7,K,-4),K=0, 2)
42034      & / -0.1240412E+02,  0.2565386E+02, -0.1066570E+02 /
42035  
42036       DATA MEXVEC(-5) / 6 /
42037       DATA MLFVEC(-5) / 2 /
42038       DATA UT1VEC(-5) /  0.5562568E+01 /
42039       DATA UT2VEC(-5) / -0.1801317E+01 /
42040       DATA ALFVEC(-5) /  0.4952010E-02 /
42041       DATA QMAVEC(-5) /  0.4500000E+01 /
42042       DATA (AM( 0,K,-5),K=0, 2)
42043      & / -0.6031237E+01,  0.1992727E+01, -0.1076331E+01 /
42044       DATA (AM( 1,K,-5),K=0, 2)
42045      & /  0.2933912E+01,  0.5839674E+00,  0.7509435E-01 /
42046       DATA (AM( 2,K,-5),K=0, 2)
42047      & / -0.8284919E+01,  0.1488593E+01, -0.8251678E+00 /
42048       DATA (AM( 3,K,-5),K=0, 2)
42049      & / -0.1925986E+02,  0.2805753E+01, -0.3015446E+01 /
42050       DATA (AM( 4,K,-5),K=0, 2)
42051      & / -0.9480483E+01, -0.9767837E+00, -0.1165544E+01 /
42052       DATA (AM( 5,K,-5),K=0, 2)
42053      & /  0.2193195E+02, -0.1788518E+02,  0.9460908E+01 /
42054       DATA (AM( 6,K,-5),K=0, 2)
42055      & / -0.1327377E+02,  0.1201754E+02, -0.6277844E+01 /
42056  
42057       IF(Q .LE. QMAVEC(IFL)) THEN
42058          PYCT5L = 0.D0
42059          RETURN
42060       ENDIF
42061  
42062       IF(X .GE. 1.D0) THEN
42063          PYCT5L = 0.D0
42064          RETURN
42065       ENDIF
42066  
42067       TMP = LOG(Q/ALFVEC(IFL))
42068       IF(TMP .LE. 0.D0) THEN
42069          PYCT5L = 0.D0
42070          RETURN
42071       ENDIF
42072  
42073       SB = LOG(TMP)
42074       SB1 = SB - 1.2D0
42075       SB2 = SB1*SB1
42076  
42077       DO 110 I = 0, NEX
42078          AF(I) = 0.D0
42079          SBX = 1.D0
42080          DO 100 K = 0, MLFVEC(IFL)
42081             AF(I) = AF(I) + SBX*AM(I,K,IFL)
42082             SBX = SB1*SBX
42083   100    CONTINUE
42084   110 CONTINUE
42085  
42086       Y = -LOG(X)
42087       U = LOG(X/0.00001D0)
42088  
42089       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
42090       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
42091       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
42092       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
42093      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
42094  
42095       PYCT5L = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
42096  
42097 C...Include threshold factor.
42098       PYCT5L = PYCT5L * (1.D0 - QMAVEC(IFL)/Q)
42099  
42100       RETURN
42101       END
42102  
42103 C*********************************************************************
42104  
42105 C...PYCT5M
42106 C...Auxiliary function for parametrization of CTEQ5M1.
42107 C...Author: J. Pumplin 9/99.
42108  
42109       FUNCTION PYCT5M(IFL,X,Q)
42110  
42111 C...Double precision declaration.
42112       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42113       IMPLICIT INTEGER(I-N)
42114  
42115       PARAMETER (NEX=8, NLF=2)
42116       DIMENSION AM(0:NEX,0:NLF,-5:2)
42117       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
42118       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
42119       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
42120       DIMENSION AF(0:NEX)
42121  
42122       DATA MEXVEC( 2) / 8 /
42123       DATA MLFVEC( 2) / 2 /
42124       DATA UT1VEC( 2) /  0.5141718E+01 /
42125       DATA UT2VEC( 2) / -0.1346944E+01 /
42126       DATA ALFVEC( 2) /  0.5260555E+00 /
42127       DATA QMAVEC( 2) /  0.0000000E+00 /
42128       DATA (AM( 0,K, 2),K=0, 2)
42129      & /  0.4289071E+01, -0.2536870E+01, -0.1259948E+01 /
42130       DATA (AM( 1,K, 2),K=0, 2)
42131      & /  0.9839410E+00,  0.4168426E-01, -0.5018952E-01 /
42132       DATA (AM( 2,K, 2),K=0, 2)
42133      & / -0.1651961E+02,  0.9246261E+01,  0.5996400E+01 /
42134       DATA (AM( 3,K, 2),K=0, 2)
42135      & / -0.2077936E+02,  0.9786469E+01,  0.7656465E+01 /
42136       DATA (AM( 4,K, 2),K=0, 2)
42137      & /  0.3054926E+02,  0.1889536E+01,  0.1380541E+01 /
42138       DATA (AM( 5,K, 2),K=0, 2)
42139      & /  0.3084695E+02, -0.1212303E+02, -0.1053551E+02 /
42140       DATA (AM( 6,K, 2),K=0, 2)
42141      & / -0.1426778E+02,  0.6239537E+01,  0.5254819E+01 /
42142       DATA (AM( 7,K, 2),K=0, 2)
42143      & / -0.1909811E+02,  0.3695678E+01,  0.5495729E+01 /
42144       DATA (AM( 8,K, 2),K=0, 2)
42145      & /  0.1889751E-01,  0.5027193E-02,  0.6624896E-03 /
42146  
42147       DATA MEXVEC( 1) / 8 /
42148       DATA MLFVEC( 1) / 2 /
42149       DATA UT1VEC( 1) /  0.4138426E+01 /
42150       DATA UT2VEC( 1) / -0.3221374E+01 /
42151       DATA ALFVEC( 1) /  0.4960962E+00 /
42152       DATA QMAVEC( 1) /  0.0000000E+00 /
42153       DATA (AM( 0,K, 1),K=0, 2)
42154      & /  0.1332497E+01, -0.3703718E+00,  0.1288638E+00 /
42155       DATA (AM( 1,K, 1),K=0, 2)
42156      & /  0.7544687E+00,  0.3255075E-01, -0.4706680E-01 /
42157       DATA (AM( 2,K, 1),K=0, 2)
42158      & / -0.7638814E+00,  0.5008313E+00, -0.9237374E-01 /
42159       DATA (AM( 3,K, 1),K=0, 2)
42160      & / -0.3689889E+00, -0.1055098E+01, -0.4645065E+00 /
42161       DATA (AM( 4,K, 1),K=0, 2)
42162      & /  0.3991610E+02,  0.1979881E+01,  0.1775814E+01 /
42163       DATA (AM( 5,K, 1),K=0, 2)
42164      & /  0.6201080E+01,  0.2046288E+01,  0.3804571E+00 /
42165       DATA (AM( 6,K, 1),K=0, 2)
42166      & / -0.8027900E+00, -0.7011688E+00, -0.8049612E+00 /
42167       DATA (AM( 7,K, 1),K=0, 2)
42168      & / -0.8631305E+01, -0.3981200E+01,  0.6970153E+00 /
42169       DATA (AM( 8,K, 1),K=0, 2)
42170      & /  0.2371230E-01,  0.5372683E-02,  0.1118701E-02 /
42171  
42172       DATA MEXVEC( 0) / 8 /
42173       DATA MLFVEC( 0) / 2 /
42174       DATA UT1VEC( 0) / -0.1026789E+01 /
42175       DATA UT2VEC( 0) / -0.9051707E+01 /
42176       DATA ALFVEC( 0) /  0.9462977E+00 /
42177       DATA QMAVEC( 0) /  0.0000000E+00 /
42178       DATA (AM( 0,K, 0),K=0, 2)
42179      & /  0.1191990E+03, -0.8548739E+00, -0.1963040E+01 /
42180       DATA (AM( 1,K, 0),K=0, 2)
42181      & / -0.9449972E+02,  0.1074771E+01,  0.2056055E+01 /
42182       DATA (AM( 2,K, 0),K=0, 2)
42183      & /  0.3701064E+01, -0.1167947E-02,  0.1933573E+00 /
42184       DATA (AM( 3,K, 0),K=0, 2)
42185      & /  0.1171345E+03, -0.1064540E+01, -0.1875312E+01 /
42186       DATA (AM( 4,K, 0),K=0, 2)
42187      & / -0.1014453E+03, -0.5707427E+00,  0.4511242E-01 /
42188       DATA (AM( 5,K, 0),K=0, 2)
42189      & /  0.6365168E+01,  0.1275354E+01, -0.4964081E+00 /
42190       DATA (AM( 6,K, 0),K=0, 2)
42191      & / -0.3370693E+01, -0.1122020E+01,  0.5947751E-01 /
42192       DATA (AM( 7,K, 0),K=0, 2)
42193      & / -0.5327270E+01, -0.9293556E+00,  0.6629940E+00 /
42194       DATA (AM( 8,K, 0),K=0, 2)
42195      & /  0.2437513E-01,  0.1600939E-02,  0.6855336E-03 /
42196  
42197       DATA MEXVEC(-1) / 8 /
42198       DATA MLFVEC(-1) / 2 /
42199       DATA UT1VEC(-1) /  0.5243571E+01 /
42200       DATA UT2VEC(-1) / -0.2870513E+01 /
42201       DATA ALFVEC(-1) /  0.6701448E+00 /
42202       DATA QMAVEC(-1) /  0.0000000E+00 /
42203       DATA (AM( 0,K,-1),K=0, 2)
42204      & /  0.2428863E+02,  0.1907035E+01, -0.4606457E+00 /
42205       DATA (AM( 1,K,-1),K=0, 2)
42206      & /  0.2006810E+01, -0.1265915E+00,  0.7153556E-02 /
42207       DATA (AM( 2,K,-1),K=0, 2)
42208      & / -0.1884546E+02, -0.2339471E+01,  0.5740679E+01 /
42209       DATA (AM( 3,K,-1),K=0, 2)
42210      & / -0.2527892E+02, -0.2044124E+01,  0.1280470E+02 /
42211       DATA (AM( 4,K,-1),K=0, 2)
42212      & / -0.1013824E+03, -0.1594199E+01,  0.2216401E+00 /
42213       DATA (AM( 5,K,-1),K=0, 2)
42214      & /  0.8070930E+02,  0.1792072E+01, -0.2164364E+02 /
42215       DATA (AM( 6,K,-1),K=0, 2)
42216      & / -0.4641050E+02,  0.1977338E+00,  0.1273014E+02 /
42217       DATA (AM( 7,K,-1),K=0, 2)
42218      & / -0.3910568E+02,  0.1719632E+01,  0.1086525E+02 /
42219       DATA (AM( 8,K,-1),K=0, 2)
42220      & / -0.1185496E+01, -0.1905847E+00, -0.8744118E-03 /
42221  
42222       DATA MEXVEC(-2) / 7 /
42223       DATA MLFVEC(-2) / 2 /
42224       DATA UT1VEC(-2) /  0.4782210E+01 /
42225       DATA UT2VEC(-2) / -0.1976856E+02 /
42226       DATA ALFVEC(-2) /  0.7558374E+00 /
42227       DATA QMAVEC(-2) /  0.0000000E+00 /
42228       DATA (AM( 0,K,-2),K=0, 2)
42229      & / -0.6216935E+00,  0.2369963E+00, -0.7909949E-02 /
42230       DATA (AM( 1,K,-2),K=0, 2)
42231      & /  0.1245440E+01, -0.1031510E+00,  0.4916523E-02 /
42232       DATA (AM( 2,K,-2),K=0, 2)
42233      & / -0.7060824E+01, -0.3875283E-01,  0.1784981E+00 /
42234       DATA (AM( 3,K,-2),K=0, 2)
42235      & / -0.7430595E+01,  0.1964572E+00, -0.1284999E+00 /
42236       DATA (AM( 4,K,-2),K=0, 2)
42237      & / -0.6897810E+01,  0.2620543E+01,  0.8012553E-02 /
42238       DATA (AM( 5,K,-2),K=0, 2)
42239      & /  0.1507713E+02,  0.2340307E-01,  0.2482535E+01 /
42240       DATA (AM( 6,K,-2),K=0, 2)
42241      & / -0.1815341E+01, -0.1538698E+01, -0.2014208E+01 /
42242       DATA (AM( 7,K,-2),K=0, 2)
42243      & / -0.2571932E+02,  0.2903941E+00, -0.2848206E+01 /
42244  
42245       DATA MEXVEC(-3) / 7 /
42246       DATA MLFVEC(-3) / 2 /
42247       DATA UT1VEC(-3) /  0.4518239E+01 /
42248       DATA UT2VEC(-3) / -0.2690590E+01 /
42249       DATA ALFVEC(-3) /  0.6124079E+00 /
42250       DATA QMAVEC(-3) /  0.0000000E+00 /
42251       DATA (AM( 0,K,-3),K=0, 2)
42252      & / -0.2734458E+01, -0.7245673E+00, -0.6351374E+00 /
42253       DATA (AM( 1,K,-3),K=0, 2)
42254      & /  0.2927174E+01,  0.4822709E+00, -0.1088787E-01 /
42255       DATA (AM( 2,K,-3),K=0, 2)
42256      & / -0.1771017E+02, -0.1416635E+01,  0.8467622E+01 /
42257       DATA (AM( 3,K,-3),K=0, 2)
42258      & / -0.4972782E+02, -0.3348547E+01,  0.1767061E+02 /
42259       DATA (AM( 4,K,-3),K=0, 2)
42260      & / -0.7102770E+01, -0.3205337E+01,  0.4101704E+00 /
42261       DATA (AM( 5,K,-3),K=0, 2)
42262      & /  0.7169698E+02, -0.2205985E+01, -0.2463931E+02 /
42263       DATA (AM( 6,K,-3),K=0, 2)
42264      & / -0.4090347E+02,  0.2103486E+01,  0.1416507E+02 /
42265       DATA (AM( 7,K,-3),K=0, 2)
42266      & / -0.2952639E+02,  0.5376136E+01,  0.7825585E+01 /
42267  
42268       DATA MEXVEC(-4) / 7 /
42269       DATA MLFVEC(-4) / 2 /
42270       DATA UT1VEC(-4) /  0.2783230E+01 /
42271       DATA UT2VEC(-4) / -0.1746328E+01 /
42272       DATA ALFVEC(-4) /  0.1115653E+01 /
42273       DATA QMAVEC(-4) /  0.1300000E+01 /
42274       DATA (AM( 0,K,-4),K=0, 2)
42275      & / -0.1743872E+01, -0.1128921E+01, -0.2841969E+00 /
42276       DATA (AM( 1,K,-4),K=0, 2)
42277      & /  0.3345755E+01,  0.3187765E+00,  0.1378124E+00 /
42278       DATA (AM( 2,K,-4),K=0, 2)
42279      & / -0.2037615E+02,  0.4121687E+01,  0.2236520E+00 /
42280       DATA (AM( 3,K,-4),K=0, 2)
42281      & / -0.4703104E+02,  0.5353087E+01, -0.1455347E+01 /
42282       DATA (AM( 4,K,-4),K=0, 2)
42283      & / -0.1060230E+02, -0.1551122E+01, -0.1078863E+01 /
42284       DATA (AM( 5,K,-4),K=0, 2)
42285      & /  0.5088892E+02, -0.8197304E+01,  0.8083451E+01 /
42286       DATA (AM( 6,K,-4),K=0, 2)
42287      & / -0.2819070E+02,  0.4554086E+01, -0.5890995E+01 /
42288       DATA (AM( 7,K,-4),K=0, 2)
42289      & / -0.1098238E+02,  0.2590096E+01, -0.8062879E+01 /
42290  
42291       DATA MEXVEC(-5) / 6 /
42292       DATA MLFVEC(-5) / 2 /
42293       DATA UT1VEC(-5) /  0.1619654E+02 /
42294       DATA UT2VEC(-5) / -0.3367346E+01 /
42295       DATA ALFVEC(-5) /  0.5109891E-02 /
42296       DATA QMAVEC(-5) /  0.4500000E+01 /
42297       DATA (AM( 0,K,-5),K=0, 2)
42298      & / -0.6800138E+01,  0.2493627E+01, -0.1075724E+01 /
42299       DATA (AM( 1,K,-5),K=0, 2)
42300      & /  0.3036555E+01,  0.3324733E+00,  0.2008298E+00 /
42301       DATA (AM( 2,K,-5),K=0, 2)
42302      & / -0.5203879E+01, -0.8493476E+01, -0.4523208E+01 /
42303       DATA (AM( 3,K,-5),K=0, 2)
42304      & / -0.1524239E+01, -0.3411912E+01, -0.1771867E+02 /
42305       DATA (AM( 4,K,-5),K=0, 2)
42306      & / -0.1099444E+02,  0.1320930E+01, -0.2353831E+01 /
42307       DATA (AM( 5,K,-5),K=0, 2)
42308      & /  0.1699299E+02, -0.3565802E+02,  0.3566872E+02 /
42309       DATA (AM( 6,K,-5),K=0, 2)
42310      & / -0.1465793E+02,  0.2703365E+02, -0.2176372E+02 /
42311  
42312       IF(Q .LE. QMAVEC(IFL)) THEN
42313          PYCT5M = 0.D0
42314          RETURN
42315       ENDIF
42316  
42317       IF(X .GE. 1.D0) THEN
42318          PYCT5M = 0.D0
42319          RETURN
42320       ENDIF
42321  
42322       TMP = LOG(Q/ALFVEC(IFL))
42323       IF(TMP .LE. 0.D0) THEN
42324          PYCT5M = 0.D0
42325          RETURN
42326       ENDIF
42327  
42328       SB = LOG(TMP)
42329       SB1 = SB - 1.2D0
42330       SB2 = SB1*SB1
42331  
42332       DO 110 I = 0, NEX
42333          AF(I) = 0.D0
42334          SBX = 1.D0
42335          DO 100 K = 0, MLFVEC(IFL)
42336             AF(I) = AF(I) + SBX*AM(I,K,IFL)
42337             SBX = SB1*SBX
42338   100    CONTINUE
42339   110 CONTINUE
42340  
42341       Y = -LOG(X)
42342       U = LOG(X/0.00001D0)
42343  
42344       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
42345       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
42346       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
42347       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
42348      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
42349  
42350       PYCT5M = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
42351  
42352 C...Include threshold factor.
42353       PYCT5M = PYCT5M * (1.D0 - QMAVEC(IFL)/Q)
42354  
42355       RETURN
42356       END
42357  
42358 C*********************************************************************
42359  
42360 C...PYPDPO
42361 C...Auxiliary to PYPDPR. Gives proton parton distributions according to
42362 C...a few older parametrizations, now obsolete but convenient for
42363 C...backwards checks.
42364  
42365       SUBROUTINE PYPDPO(X,Q2,XPPR)
42366  
42367 C...Double precision and integer declarations.
42368       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42369       IMPLICIT INTEGER(I-N)
42370       INTEGER PYK,PYCHGE,PYCOMP
42371 C...Commonblocks.
42372       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42373       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42374       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42375       COMMON/PYINT1/MINT(400),VINT(400)
42376       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
42377       DIMENSION XPPR(-6:6),XQ(9),TX(6),TT(6),TS(6),NEHLQ(8,2),
42378      &CEHLQ(6,6,2,8,2),CDO(3,6,5,2)
42379  
42380  
42381 C...The following data lines are coefficients needed in the
42382 C...Eichten, Hinchliffe, Lane, Quigg proton structure function
42383 C...parametrizations, see below.
42384 C...Powers of 1-x in different cases.
42385       DATA NEHLQ/3,4,7,5,7,7,7,7,3,4,7,6,7,7,7,7/
42386 C...Expansion coefficients for up valence quark distribution.
42387       DATA (((CEHLQ(IX,IT,NX,1,1),IX=1,6),IT=1,6),NX=1,2)/
42388      1 7.677D-01,-2.087D-01,-3.303D-01,-2.517D-02,-1.570D-02,-1.000D-04,
42389      2-5.326D-01,-2.661D-01, 3.201D-01, 1.192D-01, 2.434D-02, 7.620D-03,
42390      3 2.162D-01, 1.881D-01,-8.375D-02,-6.515D-02,-1.743D-02,-5.040D-03,
42391      4-9.211D-02,-9.952D-02, 1.373D-02, 2.506D-02, 8.770D-03, 2.550D-03,
42392      5 3.670D-02, 4.409D-02, 9.600D-04,-7.960D-03,-3.420D-03,-1.050D-03,
42393      6-1.549D-02,-2.026D-02,-3.060D-03, 2.220D-03, 1.240D-03, 4.100D-04,
42394      1 2.395D-01, 2.905D-01, 9.778D-02, 2.149D-02, 3.440D-03, 5.000D-04,
42395      2 1.751D-02,-6.090D-03,-2.687D-02,-1.916D-02,-7.970D-03,-2.750D-03,
42396      3-5.760D-03,-5.040D-03, 1.080D-03, 2.490D-03, 1.530D-03, 7.500D-04,
42397      4 1.740D-03, 1.960D-03, 3.000D-04,-3.400D-04,-2.900D-04,-1.800D-04,
42398      5-5.300D-04,-6.400D-04,-1.700D-04, 4.000D-05, 6.000D-05, 4.000D-05,
42399      6 1.700D-04, 2.200D-04, 8.000D-05, 1.000D-05,-1.000D-05,-1.000D-05/
42400       DATA (((CEHLQ(IX,IT,NX,1,2),IX=1,6),IT=1,6),NX=1,2)/
42401      1 7.237D-01,-2.189D-01,-2.995D-01,-1.909D-02,-1.477D-02, 2.500D-04,
42402      2-5.314D-01,-2.425D-01, 3.283D-01, 1.119D-01, 2.223D-02, 7.070D-03,
42403      3 2.289D-01, 1.890D-01,-9.859D-02,-6.900D-02,-1.747D-02,-5.080D-03,
42404      4-1.041D-01,-1.084D-01, 2.108D-02, 2.975D-02, 9.830D-03, 2.830D-03,
42405      5 4.394D-02, 5.116D-02,-1.410D-03,-1.055D-02,-4.230D-03,-1.270D-03,
42406      6-1.991D-02,-2.539D-02,-2.780D-03, 3.430D-03, 1.720D-03, 5.500D-04,
42407      1 2.410D-01, 2.884D-01, 9.369D-02, 1.900D-02, 2.530D-03, 2.400D-04,
42408      2 1.765D-02,-9.220D-03,-3.037D-02,-2.085D-02,-8.440D-03,-2.810D-03,
42409      3-6.450D-03,-5.260D-03, 1.720D-03, 3.110D-03, 1.830D-03, 8.700D-04,
42410      4 2.120D-03, 2.320D-03, 2.600D-04,-4.900D-04,-3.900D-04,-2.300D-04,
42411      5-6.900D-04,-8.200D-04,-2.000D-04, 7.000D-05, 9.000D-05, 6.000D-05,
42412      6 2.400D-04, 3.100D-04, 1.100D-04, 0.000D+00,-2.000D-05,-2.000D-05/
42413 C...Expansion coefficients for down valence quark distribution.
42414       DATA (((CEHLQ(IX,IT,NX,2,1),IX=1,6),IT=1,6),NX=1,2)/
42415      1 3.813D-01,-8.090D-02,-1.634D-01,-2.185D-02,-8.430D-03,-6.200D-04,
42416      2-2.948D-01,-1.435D-01, 1.665D-01, 6.638D-02, 1.473D-02, 4.080D-03,
42417      3 1.252D-01, 1.042D-01,-4.722D-02,-3.683D-02,-1.038D-02,-2.860D-03,
42418      4-5.478D-02,-5.678D-02, 8.900D-03, 1.484D-02, 5.340D-03, 1.520D-03,
42419      5 2.220D-02, 2.567D-02,-3.000D-05,-4.970D-03,-2.160D-03,-6.500D-04,
42420      6-9.530D-03,-1.204D-02,-1.510D-03, 1.510D-03, 8.300D-04, 2.700D-04,
42421      1 1.261D-01, 1.354D-01, 3.958D-02, 8.240D-03, 1.660D-03, 4.500D-04,
42422      2 3.890D-03,-1.159D-02,-1.625D-02,-9.610D-03,-3.710D-03,-1.260D-03,
42423      3-1.910D-03,-5.600D-04, 1.590D-03, 1.590D-03, 8.400D-04, 3.900D-04,
42424      4 6.400D-04, 4.900D-04,-1.500D-04,-2.900D-04,-1.800D-04,-1.000D-04,
42425      5-2.000D-04,-1.900D-04, 0.000D+00, 6.000D-05, 4.000D-05, 3.000D-05,
42426      6 7.000D-05, 8.000D-05, 2.000D-05,-1.000D-05,-1.000D-05,-1.000D-05/
42427       DATA (((CEHLQ(IX,IT,NX,2,2),IX=1,6),IT=1,6),NX=1,2)/
42428      1 3.578D-01,-8.622D-02,-1.480D-01,-1.840D-02,-7.820D-03,-4.500D-04,
42429      2-2.925D-01,-1.304D-01, 1.696D-01, 6.243D-02, 1.353D-02, 3.750D-03,
42430      3 1.318D-01, 1.041D-01,-5.486D-02,-3.872D-02,-1.038D-02,-2.850D-03,
42431      4-6.162D-02,-6.143D-02, 1.303D-02, 1.740D-02, 5.940D-03, 1.670D-03,
42432      5 2.643D-02, 2.957D-02,-1.490D-03,-6.450D-03,-2.630D-03,-7.700D-04,
42433      6-1.218D-02,-1.497D-02,-1.260D-03, 2.240D-03, 1.120D-03, 3.500D-04,
42434      1 1.263D-01, 1.334D-01, 3.732D-02, 7.070D-03, 1.260D-03, 3.400D-04,
42435      2 3.660D-03,-1.357D-02,-1.795D-02,-1.031D-02,-3.880D-03,-1.280D-03,
42436      3-2.100D-03,-3.600D-04, 2.050D-03, 1.920D-03, 9.800D-04, 4.400D-04,
42437      4 7.700D-04, 5.400D-04,-2.400D-04,-3.900D-04,-2.400D-04,-1.300D-04,
42438      5-2.600D-04,-2.300D-04, 2.000D-05, 9.000D-05, 6.000D-05, 4.000D-05,
42439      6 9.000D-05, 1.000D-04, 2.000D-05,-2.000D-05,-2.000D-05,-1.000D-05/
42440 C...Expansion coefficients for up and down sea quark distributions.
42441       DATA (((CEHLQ(IX,IT,NX,3,1),IX=1,6),IT=1,6),NX=1,2)/
42442      1 6.870D-02,-6.861D-02, 2.973D-02,-5.400D-03, 3.780D-03,-9.700D-04,
42443      2-1.802D-02, 1.400D-04, 6.490D-03,-8.540D-03, 1.220D-03,-1.750D-03,
42444      3-4.650D-03, 1.480D-03,-5.930D-03, 6.000D-04,-1.030D-03,-8.000D-05,
42445      4 6.440D-03, 2.570D-03, 2.830D-03, 1.150D-03, 7.100D-04, 3.300D-04,
42446      5-3.930D-03,-2.540D-03,-1.160D-03,-7.700D-04,-3.600D-04,-1.900D-04,
42447      6 2.340D-03, 1.930D-03, 5.300D-04, 3.700D-04, 1.600D-04, 9.000D-05,
42448      1 1.014D+00,-1.106D+00, 3.374D-01,-7.444D-02, 8.850D-03,-8.700D-04,
42449      2 9.233D-01,-1.285D+00, 4.475D-01,-9.786D-02, 1.419D-02,-1.120D-03,
42450      3 4.888D-02,-1.271D-01, 8.606D-02,-2.608D-02, 4.780D-03,-6.000D-04,
42451      4-2.691D-02, 4.887D-02,-1.771D-02, 1.620D-03, 2.500D-04,-6.000D-05,
42452      5 7.040D-03,-1.113D-02, 1.590D-03, 7.000D-04,-2.000D-04, 0.000D+00,
42453      6-1.710D-03, 2.290D-03, 3.800D-04,-3.500D-04, 4.000D-05, 1.000D-05/
42454       DATA (((CEHLQ(IX,IT,NX,3,2),IX=1,6),IT=1,6),NX=1,2)/
42455      1 1.008D-01,-7.100D-02, 1.973D-02,-5.710D-03, 2.930D-03,-9.900D-04,
42456      2-5.271D-02,-1.823D-02, 1.792D-02,-6.580D-03, 1.750D-03,-1.550D-03,
42457      3 1.220D-02, 1.763D-02,-8.690D-03,-8.800D-04,-1.160D-03,-2.100D-04,
42458      4-1.190D-03,-7.180D-03, 2.360D-03, 1.890D-03, 7.700D-04, 4.100D-04,
42459      5-9.100D-04, 2.040D-03,-3.100D-04,-1.050D-03,-4.000D-04,-2.400D-04,
42460      6 1.190D-03,-1.700D-04,-2.000D-04, 4.200D-04, 1.700D-04, 1.000D-04,
42461      1 1.081D+00,-1.189D+00, 3.868D-01,-8.617D-02, 1.115D-02,-1.180D-03,
42462      2 9.917D-01,-1.396D+00, 4.998D-01,-1.159D-01, 1.674D-02,-1.720D-03,
42463      3 5.099D-02,-1.338D-01, 9.173D-02,-2.885D-02, 5.890D-03,-6.500D-04,
42464      4-3.178D-02, 5.703D-02,-2.070D-02, 2.440D-03, 1.100D-04,-9.000D-05,
42465      5 8.970D-03,-1.392D-02, 2.050D-03, 6.500D-04,-2.300D-04, 2.000D-05,
42466      6-2.340D-03, 3.010D-03, 5.000D-04,-3.900D-04, 6.000D-05, 1.000D-05/
42467 C...Expansion coefficients for gluon distribution.
42468       DATA (((CEHLQ(IX,IT,NX,4,1),IX=1,6),IT=1,6),NX=1,2)/
42469      1 9.482D-01,-9.578D-01, 1.009D-01,-1.051D-01, 3.456D-02,-3.054D-02,
42470      2-9.627D-01, 5.379D-01, 3.368D-01,-9.525D-02, 1.488D-02,-2.051D-02,
42471      3 4.300D-01,-8.306D-02,-3.372D-01, 4.902D-02,-9.160D-03, 1.041D-02,
42472      4-1.925D-01,-1.790D-02, 2.183D-01, 7.490D-03, 4.140D-03,-1.860D-03,
42473      5 8.183D-02, 1.926D-02,-1.072D-01,-1.944D-02,-2.770D-03,-5.200D-04,
42474      6-3.884D-02,-1.234D-02, 5.410D-02, 1.879D-02, 3.350D-03, 1.040D-03,
42475      1 2.948D+01,-3.902D+01, 1.464D+01,-3.335D+00, 5.054D-01,-5.915D-02,
42476      2 2.559D+01,-3.955D+01, 1.661D+01,-4.299D+00, 6.904D-01,-8.243D-02,
42477      3-1.663D+00, 1.176D+00, 1.118D+00,-7.099D-01, 1.948D-01,-2.404D-02,
42478      4-2.168D-01, 8.170D-01,-7.169D-01, 1.851D-01,-1.924D-02,-3.250D-03,
42479      5 2.088D-01,-4.355D-01, 2.239D-01,-2.446D-02,-3.620D-03, 1.910D-03,
42480      6-9.097D-02, 1.601D-01,-5.681D-02,-2.500D-03, 2.580D-03,-4.700D-04/
42481       DATA (((CEHLQ(IX,IT,NX,4,2),IX=1,6),IT=1,6),NX=1,2)/
42482      1 2.367D+00, 4.453D-01, 3.660D-01, 9.467D-02, 1.341D-01, 1.661D-02,
42483      2-3.170D+00,-1.795D+00, 3.313D-02,-2.874D-01,-9.827D-02,-7.119D-02,
42484      3 1.823D+00, 1.457D+00,-2.465D-01, 3.739D-02, 6.090D-03, 1.814D-02,
42485      4-1.033D+00,-9.827D-01, 2.136D-01, 1.169D-01, 5.001D-02, 1.684D-02,
42486      5 5.133D-01, 5.259D-01,-1.173D-01,-1.139D-01,-4.988D-02,-2.021D-02,
42487      6-2.881D-01,-3.145D-01, 5.667D-02, 9.161D-02, 4.568D-02, 1.951D-02,
42488      1 3.036D+01,-4.062D+01, 1.578D+01,-3.699D+00, 6.020D-01,-7.031D-02,
42489      2 2.700D+01,-4.167D+01, 1.770D+01,-4.804D+00, 7.862D-01,-1.060D-01,
42490      3-1.909D+00, 1.357D+00, 1.127D+00,-7.181D-01, 2.232D-01,-2.481D-02,
42491      4-2.488D-01, 9.781D-01,-8.127D-01, 2.094D-01,-2.997D-02,-4.710D-03,
42492      5 2.506D-01,-5.427D-01, 2.672D-01,-3.103D-02,-1.800D-03, 2.870D-03,
42493      6-1.128D-01, 2.087D-01,-6.972D-02,-2.480D-03, 2.630D-03,-8.400D-04/
42494 C...Expansion coefficients for strange sea quark distribution.
42495       DATA (((CEHLQ(IX,IT,NX,5,1),IX=1,6),IT=1,6),NX=1,2)/
42496      1 4.968D-02,-4.173D-02, 2.102D-02,-3.270D-03, 3.240D-03,-6.700D-04,
42497      2-6.150D-03,-1.294D-02, 6.740D-03,-6.890D-03, 9.000D-04,-1.510D-03,
42498      3-8.580D-03, 5.050D-03,-4.900D-03,-1.600D-04,-9.400D-04,-1.500D-04,
42499      4 7.840D-03, 1.510D-03, 2.220D-03, 1.400D-03, 7.000D-04, 3.500D-04,
42500      5-4.410D-03,-2.220D-03,-8.900D-04,-8.500D-04,-3.600D-04,-2.000D-04,
42501      6 2.520D-03, 1.840D-03, 4.100D-04, 3.900D-04, 1.600D-04, 9.000D-05,
42502      1 9.235D-01,-1.085D+00, 3.464D-01,-7.210D-02, 9.140D-03,-9.100D-04,
42503      2 9.315D-01,-1.274D+00, 4.512D-01,-9.775D-02, 1.380D-02,-1.310D-03,
42504      3 4.739D-02,-1.296D-01, 8.482D-02,-2.642D-02, 4.760D-03,-5.700D-04,
42505      4-2.653D-02, 4.953D-02,-1.735D-02, 1.750D-03, 2.800D-04,-6.000D-05,
42506      5 6.940D-03,-1.132D-02, 1.480D-03, 6.500D-04,-2.100D-04, 0.000D+00,
42507      6-1.680D-03, 2.340D-03, 4.200D-04,-3.400D-04, 5.000D-05, 1.000D-05/
42508       DATA (((CEHLQ(IX,IT,NX,5,2),IX=1,6),IT=1,6),NX=1,2)/
42509      1 6.478D-02,-4.537D-02, 1.643D-02,-3.490D-03, 2.710D-03,-6.700D-04,
42510      2-2.223D-02,-2.126D-02, 1.247D-02,-6.290D-03, 1.120D-03,-1.440D-03,
42511      3-1.340D-03, 1.362D-02,-6.130D-03,-7.900D-04,-9.000D-04,-2.000D-04,
42512      4 5.080D-03,-3.610D-03, 1.700D-03, 1.830D-03, 6.800D-04, 4.000D-04,
42513      5-3.580D-03, 6.000D-05,-2.600D-04,-1.050D-03,-3.800D-04,-2.300D-04,
42514      6 2.420D-03, 9.300D-04,-1.000D-04, 4.500D-04, 1.700D-04, 1.100D-04,
42515      1 9.868D-01,-1.171D+00, 3.940D-01,-8.459D-02, 1.124D-02,-1.250D-03,
42516      2 1.001D+00,-1.383D+00, 5.044D-01,-1.152D-01, 1.658D-02,-1.830D-03,
42517      3 4.928D-02,-1.368D-01, 9.021D-02,-2.935D-02, 5.800D-03,-6.600D-04,
42518      4-3.133D-02, 5.785D-02,-2.023D-02, 2.630D-03, 1.600D-04,-8.000D-05,
42519      5 8.840D-03,-1.416D-02, 1.900D-03, 5.800D-04,-2.500D-04, 1.000D-05,
42520      6-2.300D-03, 3.080D-03, 5.500D-04,-3.700D-04, 7.000D-05, 1.000D-05/
42521 C...Expansion coefficients for charm sea quark distribution.
42522       DATA (((CEHLQ(IX,IT,NX,6,1),IX=1,6),IT=1,6),NX=1,2)/
42523      1 9.270D-03,-1.817D-02, 9.590D-03,-6.390D-03, 1.690D-03,-1.540D-03,
42524      2 5.710D-03,-1.188D-02, 6.090D-03,-4.650D-03, 1.240D-03,-1.310D-03,
42525      3-3.960D-03, 7.100D-03,-3.590D-03, 1.840D-03,-3.900D-04, 3.400D-04,
42526      4 1.120D-03,-1.960D-03, 1.120D-03,-4.800D-04, 1.000D-04,-4.000D-05,
42527      5 4.000D-05,-3.000D-05,-1.800D-04, 9.000D-05,-5.000D-05,-2.000D-05,
42528      6-4.200D-04, 7.300D-04,-1.600D-04, 5.000D-05, 5.000D-05, 5.000D-05,
42529      1 8.098D-01,-1.042D+00, 3.398D-01,-6.824D-02, 8.760D-03,-9.000D-04,
42530      2 8.961D-01,-1.217D+00, 4.339D-01,-9.287D-02, 1.304D-02,-1.290D-03,
42531      3 3.058D-02,-1.040D-01, 7.604D-02,-2.415D-02, 4.600D-03,-5.000D-04,
42532      4-2.451D-02, 4.432D-02,-1.651D-02, 1.430D-03, 1.200D-04,-1.000D-04,
42533      5 1.122D-02,-1.457D-02, 2.680D-03, 5.800D-04,-1.200D-04, 3.000D-05,
42534      6-7.730D-03, 7.330D-03,-7.600D-04,-2.400D-04, 1.000D-05, 0.000D+00/
42535       DATA (((CEHLQ(IX,IT,NX,6,2),IX=1,6),IT=1,6),NX=1,2)/
42536      1 9.980D-03,-1.945D-02, 1.055D-02,-6.870D-03, 1.860D-03,-1.560D-03,
42537      2 5.700D-03,-1.203D-02, 6.250D-03,-4.860D-03, 1.310D-03,-1.370D-03,
42538      3-4.490D-03, 7.990D-03,-4.170D-03, 2.050D-03,-4.400D-04, 3.300D-04,
42539      4 1.470D-03,-2.480D-03, 1.460D-03,-5.700D-04, 1.200D-04,-1.000D-05,
42540      5-9.000D-05, 1.500D-04,-3.200D-04, 1.200D-04,-6.000D-05,-4.000D-05,
42541      6-4.200D-04, 7.600D-04,-1.400D-04, 4.000D-05, 7.000D-05, 5.000D-05,
42542      1 8.698D-01,-1.131D+00, 3.836D-01,-8.111D-02, 1.048D-02,-1.300D-03,
42543      2 9.626D-01,-1.321D+00, 4.854D-01,-1.091D-01, 1.583D-02,-1.700D-03,
42544      3 3.057D-02,-1.088D-01, 8.022D-02,-2.676D-02, 5.590D-03,-5.600D-04,
42545      4-2.845D-02, 5.164D-02,-1.918D-02, 2.210D-03,-4.000D-05,-1.500D-04,
42546      5 1.311D-02,-1.751D-02, 3.310D-03, 5.100D-04,-1.200D-04, 5.000D-05,
42547      6-8.590D-03, 8.380D-03,-9.200D-04,-2.600D-04, 1.000D-05,-1.000D-05/
42548 C...Expansion coefficients for bottom sea quark distribution.
42549       DATA (((CEHLQ(IX,IT,NX,7,1),IX=1,6),IT=1,6),NX=1,2)/
42550      1 9.010D-03,-1.401D-02, 7.150D-03,-4.130D-03, 1.260D-03,-1.040D-03,
42551      2 6.280D-03,-9.320D-03, 4.780D-03,-2.890D-03, 9.100D-04,-8.200D-04,
42552      3-2.930D-03, 4.090D-03,-1.890D-03, 7.600D-04,-2.300D-04, 1.400D-04,
42553      4 3.900D-04,-1.200D-03, 4.400D-04,-2.500D-04, 2.000D-05,-2.000D-05,
42554      5 2.600D-04, 1.400D-04,-8.000D-05, 1.000D-04, 1.000D-05, 1.000D-05,
42555      6-2.600D-04, 3.200D-04, 1.000D-05,-1.000D-05, 1.000D-05,-1.000D-05,
42556      1 8.029D-01,-1.075D+00, 3.792D-01,-7.843D-02, 1.007D-02,-1.090D-03,
42557      2 7.903D-01,-1.099D+00, 4.153D-01,-9.301D-02, 1.317D-02,-1.410D-03,
42558      3-1.704D-02,-1.130D-02, 2.882D-02,-1.341D-02, 3.040D-03,-3.600D-04,
42559      4-7.200D-04, 7.230D-03,-5.160D-03, 1.080D-03,-5.000D-05,-4.000D-05,
42560      5 3.050D-03,-4.610D-03, 1.660D-03,-1.300D-04,-1.000D-05, 1.000D-05,
42561      6-4.360D-03, 5.230D-03,-1.610D-03, 2.000D-04,-2.000D-05, 0.000D+00/
42562       DATA (((CEHLQ(IX,IT,NX,7,2),IX=1,6),IT=1,6),NX=1,2)/
42563      1 8.980D-03,-1.459D-02, 7.510D-03,-4.410D-03, 1.310D-03,-1.070D-03,
42564      2 5.970D-03,-9.440D-03, 4.800D-03,-3.020D-03, 9.100D-04,-8.500D-04,
42565      3-3.050D-03, 4.440D-03,-2.100D-03, 8.500D-04,-2.400D-04, 1.400D-04,
42566      4 5.300D-04,-1.300D-03, 5.600D-04,-2.700D-04, 3.000D-05,-2.000D-05,
42567      5 2.000D-04, 1.400D-04,-1.100D-04, 1.000D-04, 0.000D+00, 0.000D+00,
42568      6-2.600D-04, 3.200D-04, 0.000D+00,-3.000D-05, 1.000D-05,-1.000D-05,
42569      1 8.672D-01,-1.174D+00, 4.265D-01,-9.252D-02, 1.244D-02,-1.460D-03,
42570      2 8.500D-01,-1.194D+00, 4.630D-01,-1.083D-01, 1.614D-02,-1.830D-03,
42571      3-2.241D-02,-5.630D-03, 2.815D-02,-1.425D-02, 3.520D-03,-4.300D-04,
42572      4-7.300D-04, 8.030D-03,-5.780D-03, 1.380D-03,-1.300D-04,-4.000D-05,
42573      5 3.460D-03,-5.380D-03, 1.960D-03,-2.100D-04, 1.000D-05, 1.000D-05,
42574      6-4.850D-03, 5.950D-03,-1.890D-03, 2.600D-04,-3.000D-05, 0.000D+00/
42575 C...Expansion coefficients for top sea quark distribution.
42576       DATA (((CEHLQ(IX,IT,NX,8,1),IX=1,6),IT=1,6),NX=1,2)/
42577      1 4.410D-03,-7.480D-03, 3.770D-03,-2.580D-03, 7.300D-04,-7.100D-04,
42578      2 3.840D-03,-6.050D-03, 3.030D-03,-2.030D-03, 5.800D-04,-5.900D-04,
42579      3-8.800D-04, 1.660D-03,-7.500D-04, 4.700D-04,-1.000D-04, 1.000D-04,
42580      4-8.000D-05,-1.500D-04, 1.200D-04,-9.000D-05, 3.000D-05, 0.000D+00,
42581      5 1.300D-04,-2.200D-04,-2.000D-05,-2.000D-05,-2.000D-05,-2.000D-05,
42582      6-7.000D-05, 1.900D-04,-4.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
42583      1 6.623D-01,-9.248D-01, 3.519D-01,-7.930D-02, 1.110D-02,-1.180D-03,
42584      2 6.380D-01,-9.062D-01, 3.582D-01,-8.479D-02, 1.265D-02,-1.390D-03,
42585      3-2.581D-02, 2.125D-02, 4.190D-03,-4.980D-03, 1.490D-03,-2.100D-04,
42586      4 7.100D-04, 5.300D-04,-1.270D-03, 3.900D-04,-5.000D-05,-1.000D-05,
42587      5 3.850D-03,-5.060D-03, 1.860D-03,-3.500D-04, 4.000D-05, 0.000D+00,
42588      6-3.530D-03, 4.460D-03,-1.500D-03, 2.700D-04,-3.000D-05, 0.000D+00/
42589       DATA (((CEHLQ(IX,IT,NX,8,2),IX=1,6),IT=1,6),NX=1,2)/
42590      1 4.260D-03,-7.530D-03, 3.830D-03,-2.680D-03, 7.600D-04,-7.300D-04,
42591      2 3.640D-03,-6.050D-03, 3.030D-03,-2.090D-03, 5.900D-04,-6.000D-04,
42592      3-9.200D-04, 1.710D-03,-8.200D-04, 5.000D-04,-1.200D-04, 1.000D-04,
42593      4-5.000D-05,-1.600D-04, 1.300D-04,-9.000D-05, 3.000D-05, 0.000D+00,
42594      5 1.300D-04,-2.100D-04,-1.000D-05,-2.000D-05,-2.000D-05,-1.000D-05,
42595      6-8.000D-05, 1.800D-04,-5.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
42596      1 7.146D-01,-1.007D+00, 3.932D-01,-9.246D-02, 1.366D-02,-1.540D-03,
42597      2 6.856D-01,-9.828D-01, 3.977D-01,-9.795D-02, 1.540D-02,-1.790D-03,
42598      3-3.053D-02, 2.758D-02, 2.150D-03,-4.880D-03, 1.640D-03,-2.500D-04,
42599      4 9.200D-04, 4.200D-04,-1.340D-03, 4.600D-04,-8.000D-05,-1.000D-05,
42600      5 4.230D-03,-5.660D-03, 2.140D-03,-4.300D-04, 6.000D-05, 0.000D+00,
42601      6-3.890D-03, 5.000D-03,-1.740D-03, 3.300D-04,-4.000D-05, 0.000D+00/
42602  
42603 C...The following data lines are coefficients needed in the
42604 C...Duke, Owens proton structure function parametrizations, see below.
42605 C...Expansion coefficients for (up+down) valence quark distribution.
42606       DATA ((CDO(IP,IS,1,1),IS=1,6),IP=1,3)/
42607      1 4.190D-01, 3.460D+00, 4.400D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42608      2 4.000D-03, 7.240D-01,-4.860D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42609      3-7.000D-03,-6.600D-02, 1.330D+00, 0.000D+00, 0.000D+00, 0.000D+00/
42610       DATA ((CDO(IP,IS,1,2),IS=1,6),IP=1,3)/
42611      1 3.740D-01, 3.330D+00, 6.030D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42612      2 1.400D-02, 7.530D-01,-6.220D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42613      3 0.000D+00,-7.600D-02, 1.560D+00, 0.000D+00, 0.000D+00, 0.000D+00/
42614 C...Expansion coefficients for down valence quark distribution.
42615       DATA ((CDO(IP,IS,2,1),IS=1,6),IP=1,3)/
42616      1 7.630D-01, 4.000D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42617      2-2.370D-01, 6.270D-01,-4.210D-01, 0.000D+00, 0.000D+00, 0.000D+00,
42618      3 2.600D-02,-1.900D-02, 3.300D-02, 0.000D+00, 0.000D+00, 0.000D+00/
42619       DATA ((CDO(IP,IS,2,2),IS=1,6),IP=1,3)/
42620      1 7.610D-01, 3.830D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42621      2-2.320D-01, 6.270D-01,-4.180D-01, 0.000D+00, 0.000D+00, 0.000D+00,
42622      3 2.300D-02,-1.900D-02, 3.600D-02, 0.000D+00, 0.000D+00, 0.000D+00/
42623 C...Expansion coefficients for (up+down+strange) sea quark distribution.
42624       DATA ((CDO(IP,IS,3,1),IS=1,6),IP=1,3)/
42625      1 1.265D+00, 0.000D+00, 8.050D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42626      2-1.132D+00,-3.720D-01, 1.590D+00, 6.310D+00,-1.050D+01, 1.470D+01,
42627      3 2.930D-01,-2.900D-02,-1.530D-01,-2.730D-01,-3.170D+00, 9.800D+00/
42628       DATA ((CDO(IP,IS,3,2),IS=1,6),IP=1,3)/
42629      1 1.670D+00, 0.000D+00, 9.150D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42630      2-1.920D+00,-2.730D-01, 5.300D-01, 1.570D+01,-1.010D+02, 2.230D+02,
42631      3 5.820D-01,-1.640D-01,-7.630D-01,-2.830D+00, 4.470D+01,-1.170D+02/
42632 C...Expansion coefficients for charm sea quark distribution.
42633       DATA ((CDO(IP,IS,4,1),IS=1,6),IP=1,3)/
42634      1 0.000D+00,-3.600D-02, 6.350D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42635      2 1.350D-01,-2.220D-01, 3.260D+00,-3.030D+00, 1.740D+01,-1.790D+01,
42636      3-7.500D-02,-5.800D-02,-9.090D-01, 1.500D+00,-1.130D+01, 1.560D+01/
42637        DATA ((CDO(IP,IS,4,2),IS=1,6),IP=1,3)/
42638      1 0.000D+00,-1.200D-01, 3.510D+00, 0.000D+00, 0.000D+00, 0.000D+00,
42639      2 6.700D-02,-2.330D-01, 3.660D+00,-4.740D-01, 9.500D+00,-1.660D+01,
42640      3-3.100D-02,-2.300D-02,-4.530D-01, 3.580D-01,-5.430D+00, 1.550D+01/
42641 C...Expansion coefficients for gluon distribution.
42642       DATA ((CDO(IP,IS,5,1),IS=1,6),IP=1,3)/
42643      1 1.560D+00, 0.000D+00, 6.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
42644      2-1.710D+00,-9.490D-01, 1.440D+00,-7.190D+00,-1.650D+01, 1.530D+01,
42645      3 6.380D-01, 3.250D-01,-1.050D+00, 2.550D-01, 1.090D+01,-1.010D+01/
42646       DATA ((CDO(IP,IS,5,2),IS=1,6),IP=1,3)/
42647      1 8.790D-01, 0.000D+00, 4.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
42648      2-9.710D-01,-1.160D+00, 1.230D+00,-5.640D+00,-7.540D+00,-5.960D-01,
42649      3 4.340D-01, 4.760D-01,-2.540D-01,-8.170D-01, 5.500D+00, 1.260D-01/
42650  
42651 C...Euler's beta function, requires ordinary Gamma function
42652       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
42653  
42654 C...Leading order proton parton distributions from Glueck, Reya and
42655 C...Vogt. Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
42656 C...10^-5 < x < 1.
42657       IF(MSTP(51).EQ.11) THEN
42658  
42659 C...Determine s expansion variable and some x expressions.
42660         Q2IN=MIN(1D8,MAX(0.25D0,Q2))
42661         SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
42662         SD2=SD**2
42663         XL=-LOG(X)
42664         XS=SQRT(X)
42665  
42666 C...Evaluate valence, gluon and sea distributions.
42667         XFVUD=(0.663D0+0.191D0*SD-0.041D0*SD2+0.031D0*SD**3)*
42668      &  X**0.326D0*(1D0+(-1.97D0+6.74D0*SD-1.96D0*SD2)*XS+
42669      &  (24.4D0-20.7D0*SD+4.08D0*SD2)*X)*
42670      &  (1D0-X)**(2.86D0+0.70D0*SD-0.02D0*SD2)
42671         XFVDD=(0.579D0+0.283D0*SD+0.047D0*SD2)*X**(0.523D0-0.015D0*SD)*
42672      &  (1D0+(2.22D0-0.59D0*SD-0.27D0*SD2)*XS+(5.95D0-6.19D0*SD+
42673      &  1.55D0*SD2)*X)*(1D0-X)**(3.57D0+0.94D0*SD-0.16D0*SD2)
42674         XFGLU=(X**(1.00D0-0.17D0*SD)*((4.879D0*SD-1.383D0*SD2)+
42675      &  (25.92D0-28.97D0*SD+5.596D0*SD2)*X+(-25.69D0+23.68D0*SD-
42676      &  1.975D0*SD2)*X**2)+SD**0.558D0*EXP(-(0.595D0+2.138D0*SD)+
42677      &  SQRT(4.066D0*SD**1.218D0*XL)))*
42678      &  (1D0-X)**(2.537D0+1.718D0*SD+0.353D0*SD2)
42679         XFSEA=(X**(0.412D0-0.171D0*SD)*(0.363D0-1.196D0*X+(1.029D0+
42680      &  1.785D0*SD-0.459D0*SD2)*X**2)*XL**(0.566D0-0.496D0*SD)+
42681      &  SD**1.396D0*EXP(-(3.838D0+1.944D0*SD)+SQRT(2.845D0*SD**1.331D0*
42682      &  XL)))*(1D0-X)**(4.696D0+2.109D0*SD)
42683         XFSTR=SD**0.803D0*(1D0+(-3.055D0+1.024D0*SD**0.67D0)*XS+
42684      &  (27.4D0-20.0D0*SD**0.154D0)*X)*(1D0-X)**6.22D0*
42685      &  EXP(-(4.33D0+1.408D0*SD)+SQRT((8.27D0-0.437D0*SD)*
42686      &  SD**0.563D0*XL))/XL**(2.082D0-0.577D0*SD)
42687         IF(SD.LE.0.888D0) THEN
42688           XFCHM=0D0
42689         ELSE
42690           XFCHM=(SD-0.888D0)**1.01D0*(1.+(4.24D0-0.804D0*SD)*X)*
42691      &    (1D0-X)**(3.46D0+1.076D0*SD)*EXP(-(4.61D0+1.49D0*SD)+
42692      &    SQRT((2.555D0+1.961D0*SD)*SD**0.37D0*XL))
42693         ENDIF
42694         IF(SD.LE.1.351D0) THEN
42695           XFBOT=0D0
42696         ELSE
42697           XFBOT=(SD-1.351D0)*(1D0+1.848D0*X)*(1D0-X)**(2.929D0+
42698      &    1.396D0*SD)*EXP(-(4.71D0+1.514D0*SD)+
42699      &    SQRT((4.02D0+1.239D0*SD)*SD**0.51D0*XL))
42700         ENDIF
42701  
42702 C...Put into output array.
42703         XPPR(0)=XFGLU
42704         XPPR(1)=XFVDD+XFSEA
42705         XPPR(2)=XFVUD-XFVDD+XFSEA
42706         XPPR(3)=XFSTR
42707         XPPR(4)=XFCHM
42708         XPPR(5)=XFBOT
42709         XPPR(-1)=XFSEA
42710         XPPR(-2)=XFSEA
42711         XPPR(-3)=XFSTR
42712         XPPR(-4)=XFCHM
42713         XPPR(-5)=XFBOT
42714  
42715 C...Proton parton distributions from Eichten, Hinchliffe, Lane, Quigg.
42716 C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1
42717       ELSEIF(MSTP(51).EQ.12.OR.MSTP(51).EQ.13) THEN
42718  
42719 C...Determine set, Lambda and x and t expansion variables.
42720         NSET=MSTP(51)-11
42721         IF(NSET.EQ.1) ALAM=0.2D0
42722         IF(NSET.EQ.2) ALAM=0.29D0
42723         TMIN=LOG(5D0/ALAM**2)
42724         TMAX=LOG(1D8/ALAM**2)
42725         T=LOG(MAX(1D0,Q2/ALAM**2))
42726         VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
42727         NX=1
42728         IF(X.LE.0.1D0) NX=2
42729         IF(NX.EQ.1) VX=(2D0*X-1.1D0)/0.9D0
42730         IF(NX.EQ.2) VX=MAX(-1D0,(2D0*LOG(X)+11.51293D0)/6.90776D0)
42731  
42732 C...Chebyshev polynomials for x and t expansion.
42733         TX(1)=1D0
42734         TX(2)=VX
42735         TX(3)=2D0*VX**2-1D0
42736         TX(4)=4D0*VX**3-3D0*VX
42737         TX(5)=8D0*VX**4-8D0*VX**2+1D0
42738         TX(6)=16D0*VX**5-20D0*VX**3+5D0*VX
42739         TT(1)=1D0
42740         TT(2)=VT
42741         TT(3)=2D0*VT**2-1D0
42742         TT(4)=4D0*VT**3-3D0*VT
42743         TT(5)=8D0*VT**4-8D0*VT**2+1D0
42744         TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
42745  
42746 C...Calculate structure functions.
42747         DO 120 KFL=1,6
42748           XQSUM=0D0
42749           DO 110 IT=1,6
42750             DO 100 IX=1,6
42751               XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL,NSET)*TX(IX)*TT(IT)
42752   100       CONTINUE
42753   110     CONTINUE
42754           XQ(KFL)=XQSUM*(1D0-X)**NEHLQ(KFL,NSET)
42755   120   CONTINUE
42756  
42757 C...Put into output array.
42758         XPPR(0)=XQ(4)
42759         XPPR(1)=XQ(2)+XQ(3)
42760         XPPR(2)=XQ(1)+XQ(3)
42761         XPPR(3)=XQ(5)
42762         XPPR(4)=XQ(6)
42763         XPPR(-1)=XQ(3)
42764         XPPR(-2)=XQ(3)
42765         XPPR(-3)=XQ(5)
42766         XPPR(-4)=XQ(6)
42767  
42768 C...Special expansion for bottom (threshold effects).
42769         IF(MSTP(58).GE.5) THEN
42770           IF(NSET.EQ.1) TMIN=8.1905D0
42771           IF(NSET.EQ.2) TMIN=7.4474D0
42772           IF(T.GT.TMIN) THEN
42773             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
42774             TT(1)=1D0
42775             TT(2)=VT
42776             TT(3)=2D0*VT**2-1D0
42777             TT(4)=4D0*VT**3-3D0*VT
42778             TT(5)=8D0*VT**4-8D0*VT**2+1D0
42779             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
42780             XQSUM=0D0
42781             DO 140 IT=1,6
42782               DO 130 IX=1,6
42783                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,7,NSET)*TX(IX)*TT(IT)
42784   130         CONTINUE
42785   140       CONTINUE
42786             XPPR(5)=XQSUM*(1D0-X)**NEHLQ(7,NSET)
42787             XPPR(-5)=XPPR(5)
42788           ENDIF
42789         ENDIF
42790  
42791 C...Special expansion for top (threshold effects).
42792         IF(MSTP(58).GE.6) THEN
42793           IF(NSET.EQ.1) TMIN=11.5528D0
42794           IF(NSET.EQ.2) TMIN=10.8097D0
42795           TMIN=TMIN+2D0*LOG(PMAS(6,1)/30D0)
42796           TMAX=TMAX+2D0*LOG(PMAS(6,1)/30D0)
42797           IF(T.GT.TMIN) THEN
42798             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
42799             TT(1)=1D0
42800             TT(2)=VT
42801             TT(3)=2D0*VT**2-1D0
42802             TT(4)=4D0*VT**3-3D0*VT
42803             TT(5)=8D0*VT**4-8D0*VT**2+1D0
42804             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
42805             XQSUM=0D0
42806             DO 160 IT=1,6
42807               DO 150 IX=1,6
42808                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,8,NSET)*TX(IX)*TT(IT)
42809   150         CONTINUE
42810   160       CONTINUE
42811             XPPR(6)=XQSUM*(1D0-X)**NEHLQ(8,NSET)
42812             XPPR(-6)=XPPR(6)
42813           ENDIF
42814         ENDIF
42815  
42816 C...Proton parton distributions from Duke, Owens.
42817 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 1E6 GeV^2.
42818       ELSEIF(MSTP(51).EQ.14.OR.MSTP(51).EQ.15) THEN
42819  
42820 C...Determine set, Lambda and s expansion parameter.
42821         NSET=MSTP(51)-13
42822         IF(NSET.EQ.1) ALAM=0.2D0
42823         IF(NSET.EQ.2) ALAM=0.4D0
42824         Q2IN=MIN(1D6,MAX(4D0,Q2))
42825         SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
42826  
42827 C...Calculate structure functions.
42828         DO 180 KFL=1,5
42829           DO 170 IS=1,6
42830             TS(IS)=CDO(1,IS,KFL,NSET)+CDO(2,IS,KFL,NSET)*SD+
42831      &      CDO(3,IS,KFL,NSET)*SD**2
42832   170     CONTINUE
42833           IF(KFL.LE.2) THEN
42834             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)*(1D0+TS(3)*X)/(EULBET(TS(1),
42835      &      TS(2)+1D0)*(1D0+TS(3)*TS(1)/(TS(1)+TS(2)+1D0)))
42836           ELSE
42837             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
42838      &      TS(5)*X**2+TS(6)*X**3)
42839           ENDIF
42840   180   CONTINUE
42841  
42842 C...Put into output arrays.
42843         XPPR(0)=XQ(5)
42844         XPPR(1)=XQ(2)+XQ(3)/6D0
42845         XPPR(2)=3D0*XQ(1)-XQ(2)+XQ(3)/6D0
42846         XPPR(3)=XQ(3)/6D0
42847         XPPR(4)=XQ(4)
42848         XPPR(-1)=XQ(3)/6D0
42849         XPPR(-2)=XQ(3)/6D0
42850         XPPR(-3)=XQ(3)/6D0
42851         XPPR(-4)=XQ(4)
42852  
42853       ENDIF
42854  
42855       RETURN
42856       END
42857  
42858 C*********************************************************************
42859  
42860 C...PYHFTH
42861 C...Gives threshold attractive/repulsive factor for heavy flavour
42862 C...production.
42863  
42864       FUNCTION PYHFTH(SH,SQM,FRATT)
42865  
42866 C...Double precision and integer declarations.
42867       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42868       IMPLICIT INTEGER(I-N)
42869       INTEGER PYK,PYCHGE,PYCOMP
42870 C...Commonblocks.
42871       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42872       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42873       COMMON/PYINT1/MINT(400),VINT(400)
42874       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
42875  
42876 C...Value for alpha_strong.
42877       IF(MSTP(35).LE.1) THEN
42878         ALSSG=PARP(35)
42879       ELSE
42880         MST115=MSTU(115)
42881         MSTU(115)=MSTP(36)
42882         Q2BN=SQRT(MAX(1D0,SQM*((SQRT(SH)-2D0*SQRT(SQM))**2+
42883      &  PARP(36)**2)))
42884         ALSSG=PYALPS(Q2BN)
42885         MSTU(115)=MST115
42886       ENDIF
42887  
42888 C...Evaluate attractive and repulsive factors.
42889       XATTR=4D0*PARU(1)*ALSSG/(3D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
42890       FATTR=XATTR/(1D0-EXP(-MIN(50D0,XATTR)))
42891       XREPU=PARU(1)*ALSSG/(6D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
42892       FREPU=XREPU/(EXP(MIN(50D0,XREPU))-1D0)
42893       PYHFTH=FRATT*FATTR+(1D0-FRATT)*FREPU
42894       VINT(138)=PYHFTH
42895  
42896       RETURN
42897       END
42898  
42899 C*********************************************************************
42900  
42901 C...PYSPLI
42902 C...Splits a hadron remnant into two (partons or hadron + parton)
42903 C...in case it is more complicated than just a quark or a diquark.
42904  
42905       SUBROUTINE PYSPLI(KF,KFLIN,KFLCH,KFLSP)
42906  
42907 C...Double precision and integer declarations.
42908       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42909       IMPLICIT INTEGER(I-N)
42910       INTEGER PYK,PYCHGE,PYCOMP
42911 C...Commonblocks. PYDAT1 temporary
42912       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42913       COMMON/PYINT1/MINT(400),VINT(400)
42914       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42915       SAVE /PYPARS/,/PYINT1/,/PYDAT1/
42916 C...Local array.
42917       DIMENSION KFL(3)
42918  
42919 C...Preliminaries. Parton composition.
42920       KFA=IABS(KF)
42921       KFS=ISIGN(1,KF)
42922       KFL(1)=MOD(KFA/1000,10)
42923       KFL(2)=MOD(KFA/100,10)
42924       KFL(3)=MOD(KFA/10,10)
42925       IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
42926         KFL(2)=INT(1.5D0+PYR(0))
42927         IF(MINT(105).EQ.333) KFL(2)=3
42928         IF(MINT(105).EQ.443) KFL(2)=4
42929         KFL(3)=KFL(2)
42930       ELSEIF((KFA.EQ.111.OR.KFA.EQ.113).AND.PYR(0).GT.0.5D0) THEN
42931         KFL(2)=2
42932         KFL(3)=2
42933       ELSEIF(KFA.EQ.223.AND.PYR(0).GT.0.5D0) THEN
42934         KFL(2)=1
42935         KFL(3)=1
42936       ELSEIF((KFA.EQ.130.OR.KFA.EQ.310).AND.PYR(0).GT.0.5D0) THEN
42937         KFL(2)=MOD(KFA/10,10)
42938         KFL(3)=MOD(KFA/100,10)
42939       ENDIF
42940       IF(KFLIN.NE.21.AND.KFLIN.NE.22.AND.KFLIN.NE.23) THEN
42941         KFLR=KFLIN*KFS
42942       ELSE
42943         KFLR=KFLIN
42944       ENDIF
42945       KFLCH=0
42946  
42947 C...Subdivide lepton.
42948       IF(KFA.GE.11.AND.KFA.LE.18) THEN
42949         IF(KFLR.EQ.KFA) THEN
42950           KFLSP=KFS*22
42951         ELSEIF(KFLR.EQ.22) THEN
42952           KFLSP=KFA
42953         ELSEIF(KFLR.EQ.-24.AND.MOD(KFA,2).EQ.1) THEN
42954           KFLSP=KFA+1
42955         ELSEIF(KFLR.EQ.24.AND.MOD(KFA,2).EQ.0) THEN
42956           KFLSP=KFA-1
42957         ELSEIF(KFLR.EQ.21) THEN
42958           KFLSP=KFA
42959           KFLCH=KFS*21
42960         ELSE
42961           KFLSP=KFA
42962           KFLCH=-KFLR
42963         ENDIF
42964  
42965 C...Subdivide photon.
42966       ELSEIF(KFA.EQ.22.AND.MINT(109).NE.2) THEN
42967         IF(KFLR.NE.21) THEN
42968           KFLSP=-KFLR
42969         ELSE
42970           RAGR=0.75D0*PYR(0)
42971           KFLSP=1
42972           IF(RAGR.GT.0.125D0) KFLSP=2
42973           IF(RAGR.GT.0.625D0) KFLSP=3
42974           IF(PYR(0).GT.0.5D0) KFLSP=-KFLSP
42975           KFLCH=-KFLSP
42976         ENDIF
42977  
42978 C...Subdivide Reggeon or Pomeron.
42979       ELSEIF(KFA.EQ.110.OR.KFA.EQ.990) THEN
42980         IF(KFLIN.EQ.21) THEN
42981           KFLSP=KFS*21
42982         ELSE
42983           KFLSP=-KFLIN
42984         ENDIF
42985  
42986 C...Subdivide meson.
42987       ELSEIF(KFL(1).EQ.0) THEN
42988         KFL(2)=KFL(2)*(-1)**KFL(2)
42989         KFL(3)=-KFL(3)*(-1)**IABS(KFL(2))
42990         IF(KFLR.EQ.KFL(2)) THEN
42991           KFLSP=KFL(3)
42992         ELSEIF(KFLR.EQ.KFL(3)) THEN
42993           KFLSP=KFL(2)
42994         ELSEIF(KFLR.EQ.21.AND.PYR(0).GT.0.5D0) THEN
42995           KFLSP=KFL(2)
42996           KFLCH=KFL(3)
42997         ELSEIF(KFLR.EQ.21) THEN
42998           KFLSP=KFL(3)
42999           KFLCH=KFL(2)
43000         ELSEIF(KFLR*KFL(2).GT.0) THEN
43001           NTRY=0
43002   100     NTRY=NTRY+1
43003           CALL PYKFDI(-KFLR,KFL(2),KFDUMP,KFLCH)
43004           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
43005             GOTO 100
43006           ELSEIF(KFLCH.EQ.0) THEN
43007             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
43008             MINT(51)=1
43009             RETURN
43010           ENDIF
43011           KFLSP=KFL(3)
43012         ELSE
43013           NTRY=0
43014   110     NTRY=NTRY+1
43015           CALL PYKFDI(-KFLR,KFL(3),KFDUMP,KFLCH)
43016           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
43017             GOTO 110
43018           ELSEIF(KFLCH.EQ.0) THEN
43019             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
43020             MINT(51)=1
43021             RETURN
43022           ENDIF
43023           KFLSP=KFL(2)
43024         ENDIF
43025 
43026 C...Special case for extracting photon from baryon without splitting
43027 C...the latter. (Currently only used by external programs.)
43028       ELSEIF(KFLIN.EQ.22.AND.MSTP(98).EQ.1) then
43029         KFLSP=KFA
43030         KFLCH=0
43031  
43032 C...Subdivide baryon.
43033       ELSE
43034         NAGR=0
43035         DO 120 J=1,3
43036           IF(KFLR.EQ.KFL(J)) NAGR=NAGR+1
43037   120   CONTINUE
43038         IF(NAGR.GE.1) THEN
43039           RAGR=0.00001D0+(NAGR-0.00002D0)*PYR(0)
43040           IAGR=0
43041           DO 130 J=1,3
43042             IF(KFLR.EQ.KFL(J)) RAGR=RAGR-1D0
43043             IF(IAGR.EQ.0.AND.RAGR.LE.0D0) IAGR=J
43044   130     CONTINUE
43045         ELSE
43046           IAGR=1.00001D0+2.99998D0*PYR(0)
43047         ENDIF
43048         ID1=1
43049         IF(IAGR.EQ.1) ID1=2
43050         IF(IAGR.EQ.1.AND.KFL(3).GT.KFL(2)) ID1=3
43051         ID2=6-IAGR-ID1
43052         KSP=3
43053         IF(MOD(KFA,10).EQ.2.AND.KFL(1).EQ.KFL(2)) THEN
43054           IF(IAGR.NE.3.AND.PYR(0).GT.0.25D0) KSP=1
43055         ELSEIF(MOD(KFA,10).EQ.2.AND.KFL(2).GE.KFL(3)) THEN
43056           IF(IAGR.NE.1.AND.PYR(0).GT.0.25D0) KSP=1
43057         ELSEIF(MOD(KFA,10).EQ.2) THEN
43058           IF(IAGR.EQ.1) KSP=1
43059           IF(IAGR.NE.1.AND.PYR(0).GT.0.75D0) KSP=1
43060         ENDIF
43061         KFLSP=1000*KFL(ID1)+100*KFL(ID2)+KSP
43062         IF(KFLR.EQ.21) THEN
43063           KFLCH=KFL(IAGR)
43064         ELSEIF(NAGR.EQ.0.AND.KFLR.GT.0) THEN
43065           NTRY=0
43066   140     NTRY=NTRY+1
43067           CALL PYKFDI(-KFLR,KFL(IAGR),KFDUMP,KFLCH)
43068           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
43069             GOTO 140
43070           ELSEIF(KFLCH.EQ.0) THEN
43071             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
43072             MINT(51)=1
43073             RETURN
43074           ENDIF
43075         ELSEIF(NAGR.EQ.0) THEN
43076           NTRY=0
43077   150     NTRY=NTRY+1
43078           CALL PYKFDI(10000*KFL(ID1)+KFLSP,-KFLR,KFDUMP,KFLCH)
43079           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
43080             GOTO 150
43081           ELSEIF(KFLCH.EQ.0) THEN
43082             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
43083             MINT(51)=1
43084             RETURN
43085           ENDIF
43086           KFLSP=KFL(IAGR)
43087         ENDIF
43088       ENDIF
43089  
43090 C...Add on correct sign for result.
43091       KFLCH=KFLCH*KFS
43092       KFLSP=KFLSP*KFS
43093  
43094       RETURN
43095       END
43096  
43097 C*********************************************************************
43098  
43099 C...PYGAMM
43100 C...Gives ordinary Gamma function Gamma(x) for positive, real arguments;
43101 C...see M. Abramowitz, I. A. Stegun: Handbook of Mathematical Functions
43102 C...(Dover, 1965) 6.1.36.
43103  
43104       FUNCTION PYGAMM(X)
43105  
43106 C...Double precision and integer declarations.
43107       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43108       IMPLICIT INTEGER(I-N)
43109       INTEGER PYK,PYCHGE,PYCOMP
43110 C...Local array and data.
43111       DIMENSION B(8)
43112       DATA B/-0.577191652D0,0.988205891D0,-0.897056937D0,0.918206857D0,
43113      &-0.756704078D0,0.482199394D0,-0.193527818D0,0.035868343D0/
43114  
43115       NX=INT(X)
43116       DX=X-NX
43117  
43118       PYGAMM=1D0
43119       DXP=1D0
43120       DO 100 I=1,8
43121         DXP=DXP*DX
43122         PYGAMM=PYGAMM+B(I)*DXP
43123   100 CONTINUE
43124       IF(X.LT.1D0) THEN
43125         PYGAMM=PYGAMM/X
43126       ELSE
43127         DO 110 IX=1,NX-1
43128           PYGAMM=(X-IX)*PYGAMM
43129   110   CONTINUE
43130       ENDIF
43131  
43132       RETURN
43133       END
43134  
43135 C***********************************************************************
43136  
43137 C...PYWAUX
43138 C...Calculates real and imaginary parts of the auxiliary functions W1
43139 C...and W2; see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van
43140 C...der Bij, Nucl. Phys. B297 (1988) 221.
43141  
43142       SUBROUTINE PYWAUX(IAUX,EPS,WRE,WIM)
43143  
43144 C...Double precision and integer declarations.
43145       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43146       IMPLICIT INTEGER(I-N)
43147       INTEGER PYK,PYCHGE,PYCOMP
43148 C...Commonblocks.
43149       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43150       SAVE /PYDAT1/
43151  
43152       ASINH(X)=LOG(X+SQRT(X**2+1D0))
43153       ACOSH(X)=LOG(X+SQRT(X**2-1D0))
43154  
43155       IF(EPS.LT.0D0) THEN
43156         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ASINH(SQRT(-1D0/EPS))
43157         IF(IAUX.EQ.2) WRE=4D0*(ASINH(SQRT(-1D0/EPS)))**2
43158         WIM=0D0
43159       ELSEIF(EPS.LT.1D0) THEN
43160         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ACOSH(SQRT(1D0/EPS))
43161         IF(IAUX.EQ.2) WRE=4D0*(ACOSH(SQRT(1D0/EPS)))**2-PARU(1)**2
43162         IF(IAUX.EQ.1) WIM=-PARU(1)*SQRT(1D0-EPS)
43163         IF(IAUX.EQ.2) WIM=-4D0*PARU(1)*ACOSH(SQRT(1D0/EPS))
43164       ELSE
43165         IF(IAUX.EQ.1) WRE=2D0*SQRT(EPS-1D0)*ASIN(SQRT(1D0/EPS))
43166         IF(IAUX.EQ.2) WRE=-4D0*(ASIN(SQRT(1D0/EPS)))**2
43167         WIM=0D0
43168       ENDIF
43169  
43170       RETURN
43171       END
43172  
43173 C***********************************************************************
43174  
43175 C...PYI3AU
43176 C...Calculates real and imaginary parts of the auxiliary function I3;
43177 C...see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van der Bij,
43178 C...Nucl. Phys. B297 (1988) 221.
43179  
43180       SUBROUTINE PYI3AU(EPS,RAT,Y3RE,Y3IM)
43181  
43182 C...Double precision and integer declarations.
43183       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43184       IMPLICIT INTEGER(I-N)
43185       INTEGER PYK,PYCHGE,PYCOMP
43186 C...Commonblocks.
43187       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43188       SAVE /PYDAT1/
43189  
43190       BE=0.5D0*(1D0+SQRT(1D0+RAT*EPS))
43191       IF(EPS.LT.1D0) GA=0.5D0*(1D0+SQRT(1D0-EPS))
43192  
43193       IF(EPS.LT.0D0) THEN
43194         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
43195           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
43196      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
43197      &    PYSPEN(0.25D0*(RAT+1D0)*EPS/(1D0+0.25D0*RAT*EPS),0D0,1)-
43198      &    PYSPEN((RAT+1D0)/RAT,0D0,1)+0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-
43199      &    LOG(0.25D0*RAT*EPS)**2)+LOG(1D0-0.25D0*EPS)*
43200      &    LOG((1D0+0.25D0*(RAT-1D0)*EPS)/(1D0+0.25D0*RAT*EPS))+
43201      &    LOG(-0.25D0*EPS)*LOG(0.25D0*RAT*EPS/(1D0+0.25D0*(RAT-1D0)*
43202      &    EPS))
43203         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
43204           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
43205      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
43206      &    PYSPEN((BE-1D0+0.25D0*EPS)/BE,0D0,1)-
43207      &    PYSPEN((BE-1D0+0.25D0*EPS)/(BE-1D0),0D0,1)+
43208      &    0.5D0*(LOG(BE)**2-LOG(BE-1D0)**2)+
43209      &    LOG(1D0-0.25D0*EPS)*LOG((BE-0.25D0*EPS)/BE)+
43210      &    LOG(-0.25D0*EPS)*LOG((BE-1D0)/(BE-0.25D0*EPS))
43211         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
43212           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
43213      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
43214      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(1D0+0.25D0*RAT*EPS),0D0,1)-
43215      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(0.25D0*RAT*EPS),0D0,1)+
43216      &    0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-LOG(0.25D0*RAT*EPS)**2)+
43217      &    LOG(GA)*LOG((GA+0.25D0*RAT*EPS)/(1D0+0.25D0*RAT*EPS))+
43218      &    LOG(GA-1D0)*LOG(0.25D0*RAT*EPS/(GA+0.25D0*RAT*EPS))
43219         ELSE
43220           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
43221      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN((BE-GA)/BE,0D0,1)-
43222      &    PYSPEN((BE-GA)/(BE-1D0),0D0,1)+0.5D0*(LOG(BE)**2-
43223      &    LOG(BE-1D0)**2)+LOG(GA)*LOG((GA+BE-1D0)/BE)+
43224      &    LOG(GA-1D0)*LOG((BE-1D0)/(GA+BE-1D0))
43225         ENDIF
43226         F3IM=0D0
43227       ELSEIF(EPS.LT.1D0) THEN
43228         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
43229           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
43230      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
43231      &    PYSPEN((1D0-0.25D0*EPS)/(-0.25D0*(RAT+1D0)*EPS),0D0,1)-
43232      &    PYSPEN(1D0/(RAT+1D0),0D0,1)+LOG((1D0-0.25D0*EPS)/
43233      &    (0.25D0*EPS))*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
43234      &    (0.25D0*(RAT+1D0)*EPS))
43235           F3IM=-PARU(1)*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
43236      &    (0.25D0*(RAT+1D0)*EPS))
43237         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
43238           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
43239      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
43240      &    PYSPEN((1D0-0.25D0*EPS)/(1D0-0.25D0*EPS-BE),0D0,1)-
43241      &    PYSPEN(-0.25D0*EPS/(1D0-0.25D0*EPS-BE),0D0,1)+
43242      &    LOG((1D0-0.25D0*EPS)/(0.25D0*EPS))*
43243      &    LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
43244           F3IM=-PARU(1)*LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
43245         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
43246           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
43247      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
43248      &    PYSPEN(GA/(GA-1D0-0.25D0*RAT*EPS),0D0,1)-
43249      &    PYSPEN((GA-1D0)/(GA-1D0-0.25D0*RAT*EPS),0D0,1)+
43250      &    LOG(GA/(1D0-GA))*LOG((GA+0.25D0*RAT*EPS)/
43251      &    (1D0+0.25D0*RAT*EPS-GA))
43252           F3IM=-PARU(1)*LOG((GA+0.25D0*RAT*EPS)/
43253      &    (1D0+0.25D0*RAT*EPS-GA))
43254         ELSE
43255           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
43256      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN(GA/(GA-BE),0D0,1)-
43257      &    PYSPEN((GA-1D0)/(GA-BE),0D0,1)+LOG(GA/(1D0-GA))*
43258      &    LOG((GA+BE-1D0)/(BE-GA))
43259           F3IM=-PARU(1)*LOG((GA+BE-1D0)/(BE-GA))
43260         ENDIF
43261       ELSE
43262         RSQ=EPS/(EPS-1D0+(2D0*BE-1D0)**2)
43263         RCTHE=RSQ*(1D0-2D0*BE/EPS)
43264         RSTHE=SQRT(MAX(0D0,RSQ-RCTHE**2))
43265         RCPHI=RSQ*(1D0+2D0*(BE-1D0)/EPS)
43266         RSPHI=SQRT(MAX(0D0,RSQ-RCPHI**2))
43267         R=SQRT(RSQ)
43268         THE=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCTHE/R)))
43269         PHI=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCPHI/R)))
43270         F3RE=PYSPEN(RCTHE,RSTHE,1)+PYSPEN(RCTHE,-RSTHE,1)-
43271      &  PYSPEN(RCPHI,RSPHI,1)-PYSPEN(RCPHI,-RSPHI,1)+
43272      &  (PHI-THE)*(PHI+THE-PARU(1))
43273         F3IM=PYSPEN(RCTHE,RSTHE,2)+PYSPEN(RCTHE,-RSTHE,2)-
43274      &  PYSPEN(RCPHI,RSPHI,2)-PYSPEN(RCPHI,-RSPHI,2)
43275       ENDIF
43276  
43277       Y3RE=2D0/(2D0*BE-1D0)*F3RE
43278       Y3IM=2D0/(2D0*BE-1D0)*F3IM
43279  
43280       RETURN
43281       END
43282  
43283 C***********************************************************************
43284  
43285 C...PYSPEN
43286 C...Calculates real and imaginary part of Spence function; see
43287 C...G. 't Hooft and M. Veltman, Nucl. Phys. B153 (1979) 365.
43288  
43289       FUNCTION PYSPEN(XREIN,XIMIN,IREIM)
43290  
43291 C...Double precision and integer declarations.
43292       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43293       IMPLICIT INTEGER(I-N)
43294       INTEGER PYK,PYCHGE,PYCOMP
43295 C...Commonblocks.
43296       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43297       SAVE /PYDAT1/
43298 C...Local array and data.
43299       DIMENSION B(0:14)
43300       DATA B/
43301      &1.000000D+00,        -5.000000D-01,         1.666667D-01,
43302      &0.000000D+00,        -3.333333D-02,         0.000000D+00,
43303      &2.380952D-02,         0.000000D+00,        -3.333333D-02,
43304      &0.000000D+00,         7.575757D-02,         0.000000D+00,
43305      &-2.531135D-01,         0.000000D+00,         1.166667D+00/
43306  
43307       XRE=XREIN
43308       XIM=XIMIN
43309       IF(ABS(1D0-XRE).LT.1D-6.AND.ABS(XIM).LT.1D-6) THEN
43310         IF(IREIM.EQ.1) PYSPEN=PARU(1)**2/6D0
43311         IF(IREIM.EQ.2) PYSPEN=0D0
43312         RETURN
43313       ENDIF
43314  
43315       XMOD=SQRT(XRE**2+XIM**2)
43316       IF(XMOD.LT.1D-6) THEN
43317         IF(IREIM.EQ.1) PYSPEN=0D0
43318         IF(IREIM.EQ.2) PYSPEN=0D0
43319         RETURN
43320       ENDIF
43321  
43322       XARG=SIGN(ACOS(XRE/XMOD),XIM)
43323       SP0RE=0D0
43324       SP0IM=0D0
43325       SGN=1D0
43326       IF(XMOD.GT.1D0) THEN
43327         ALGXRE=LOG(XMOD)
43328         ALGXIM=XARG-SIGN(PARU(1),XARG)
43329         SP0RE=-PARU(1)**2/6D0-(ALGXRE**2-ALGXIM**2)/2D0
43330         SP0IM=-ALGXRE*ALGXIM
43331         SGN=-1D0
43332         XMOD=1D0/XMOD
43333         XARG=-XARG
43334         XRE=XMOD*COS(XARG)
43335         XIM=XMOD*SIN(XARG)
43336       ENDIF
43337       IF(XRE.GT.0.5D0) THEN
43338         ALGXRE=LOG(XMOD)
43339         ALGXIM=XARG
43340         XRE=1D0-XRE
43341         XIM=-XIM
43342         XMOD=SQRT(XRE**2+XIM**2)
43343         XARG=SIGN(ACOS(XRE/XMOD),XIM)
43344         ALGYRE=LOG(XMOD)
43345         ALGYIM=XARG
43346         SP0RE=SP0RE+SGN*(PARU(1)**2/6D0-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))
43347         SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)
43348         SGN=-SGN
43349       ENDIF
43350  
43351       XRE=1D0-XRE
43352       XIM=-XIM
43353       XMOD=SQRT(XRE**2+XIM**2)
43354       XARG=SIGN(ACOS(XRE/XMOD),XIM)
43355       ZRE=-LOG(XMOD)
43356       ZIM=-XARG
43357  
43358       SPRE=0D0
43359       SPIM=0D0
43360       SAVERE=1D0
43361       SAVEIM=0D0
43362       DO 100 I=0,14
43363         IF(MAX(ABS(SAVERE),ABS(SAVEIM)).LT.1D-30) GOTO 110
43364         TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/DBLE(I+1)
43365         TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/DBLE(I+1)
43366         SAVERE=TERMRE
43367         SAVEIM=TERMIM
43368         SPRE=SPRE+B(I)*TERMRE
43369         SPIM=SPIM+B(I)*TERMIM
43370   100 CONTINUE
43371  
43372   110 IF(IREIM.EQ.1) PYSPEN=SP0RE+SGN*SPRE
43373       IF(IREIM.EQ.2) PYSPEN=SP0IM+SGN*SPIM
43374  
43375       RETURN
43376       END
43377  
43378 C***********************************************************************
43379  
43380 C...PYQQBH
43381 C...Calculates the matrix element for the processes
43382 C...g + g or q + qbar -> Q + Qbar + H (normally with Q = t).
43383 C...REDUCE output and part of the rest courtesy Z. Kunszt, see
43384 C...Z. Kunszt, Nucl. Phys. B247 (1984) 339.
43385  
43386       SUBROUTINE PYQQBH(WTQQBH)
43387  
43388 C...Double precision and integer declarations.
43389       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43390       IMPLICIT INTEGER(I-N)
43391       INTEGER PYK,PYCHGE,PYCOMP
43392 C...Commonblocks.
43393       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43394       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43395       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
43396       COMMON/PYINT1/MINT(400),VINT(400)
43397       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
43398       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/
43399 C...Local arrays and function.
43400       DIMENSION PP(15,4),CLR(8,8),FM(10,10),RM(8,8),DX(8)
43401       DOT(I,J)=PP(I,4)*PP(J,4)-PP(I,1)*PP(J,1)-PP(I,2)*PP(J,2)-
43402      &PP(I,3)*PP(J,3)
43403  
43404 C...Mass parameters.
43405       WTQQBH=0D0
43406       ISUB=MINT(1)
43407       SHPR=SQRT(VINT(26))*VINT(1)
43408       PQ=PMAS(PYCOMP(KFPR(ISUB,2)),1)
43409       PH=SQRT(VINT(21))*VINT(1)
43410       SPQ=PQ**2
43411       SPH=PH**2
43412  
43413 C...Set up outgoing kinematics: 1=t, 2=tbar, 3=H.
43414       DO 100 I=1,2
43415         PT=SQRT(MAX(0D0,VINT(197+5*I)))
43416         PP(I,1)=PT*COS(VINT(198+5*I))
43417         PP(I,2)=PT*SIN(VINT(198+5*I))
43418   100 CONTINUE
43419       PP(3,1)=-PP(1,1)-PP(2,1)
43420       PP(3,2)=-PP(1,2)-PP(2,2)
43421       PMS1=SPQ+PP(1,1)**2+PP(1,2)**2
43422       PMS2=SPQ+PP(2,1)**2+PP(2,2)**2
43423       PMS3=SPH+PP(3,1)**2+PP(3,2)**2
43424       PMT3=SQRT(PMS3)
43425       PP(3,3)=PMT3*SINH(VINT(211))
43426       PP(3,4)=PMT3*COSH(VINT(211))
43427       PMS12=(SHPR-PP(3,4))**2-PP(3,3)**2
43428       PP(1,3)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
43429      &VINT(213)*(SHPR-PP(3,4))*VINT(220))/(2D0*PMS12)
43430       PP(2,3)=-PP(1,3)-PP(3,3)
43431       PP(1,4)=SQRT(PMS1+PP(1,3)**2)
43432       PP(2,4)=SQRT(PMS2+PP(2,3)**2)
43433  
43434 C...Set up incoming kinematics and derived momentum combinations.
43435       DO 110 I=4,5
43436         PP(I,1)=0D0
43437         PP(I,2)=0D0
43438         PP(I,3)=-0.5D0*SHPR*(-1)**I
43439         PP(I,4)=-0.5D0*SHPR
43440   110 CONTINUE
43441       DO 120 J=1,4
43442         PP(6,J)=PP(1,J)+PP(2,J)
43443         PP(7,J)=PP(1,J)+PP(3,J)
43444         PP(8,J)=PP(1,J)+PP(4,J)
43445         PP(9,J)=PP(1,J)+PP(5,J)
43446         PP(10,J)=-PP(2,J)-PP(3,J)
43447         PP(11,J)=-PP(2,J)-PP(4,J)
43448         PP(12,J)=-PP(2,J)-PP(5,J)
43449         PP(13,J)=-PP(4,J)-PP(5,J)
43450   120 CONTINUE
43451  
43452 C...Derived kinematics invariants.
43453       X1=DOT(1,2)
43454       X2=DOT(1,3)
43455       X3=DOT(1,4)
43456       X4=DOT(1,5)
43457       X5=DOT(2,3)
43458       X6=DOT(2,4)
43459       X7=DOT(2,5)
43460       X8=DOT(3,4)
43461       X9=DOT(3,5)
43462       X10=DOT(4,5)
43463  
43464 C...Propagators.
43465       SS1=DOT(7,7)-SPQ
43466       SS2=DOT(8,8)-SPQ
43467       SS3=DOT(9,9)-SPQ
43468       SS4=DOT(10,10)-SPQ
43469       SS5=DOT(11,11)-SPQ
43470       SS6=DOT(12,12)-SPQ
43471       SS7=DOT(13,13)
43472       DX(1)=SS1*SS6
43473       DX(2)=SS2*SS6
43474       DX(3)=SS2*SS4
43475       DX(4)=SS1*SS5
43476       DX(5)=SS3*SS5
43477       DX(6)=SS3*SS4
43478       DX(7)=SS7*SS1
43479       DX(8)=SS7*SS4
43480  
43481 C...Define colour coefficients for g + g -> Q + Qbar + H.
43482       IF(ISUB.EQ.121.OR.ISUB.EQ.181.OR.ISUB.EQ.186) THEN
43483         DO 140 I=1,3
43484           DO 130 J=1,3
43485             CLR(I,J)=16D0/3D0
43486             CLR(I+3,J+3)=16D0/3D0
43487             CLR(I,J+3)=-2D0/3D0
43488             CLR(I+3,J)=-2D0/3D0
43489   130     CONTINUE
43490   140   CONTINUE
43491         DO 160 L=1,2
43492           DO 150 I=1,3
43493             CLR(I,6+L)=-6D0
43494             CLR(I+3,6+L)=6D0
43495             CLR(6+L,I)=-6D0
43496             CLR(6+L,I+3)=6D0
43497   150     CONTINUE
43498   160   CONTINUE
43499         DO 180 K1=1,2
43500           DO 170 K2=1,2
43501             CLR(6+K1,6+K2)=12D0
43502   170     CONTINUE
43503   180   CONTINUE
43504  
43505 C...Evaluate matrix elements for g + g -> Q + Qbar + H.
43506         FM(1,1)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X4+X9+2*
43507      &  X7+X5)+8*PQ**2*PH**2*(-X1-X4+2*X7)+16*PQ**2*(X2*X9+4*X2*
43508      &  X7+X2*X5-2*X4*X7-2*X9*X7)+8*PH**2*X4*X7-16*X2*X9*X7
43509         FM(1,2)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10+X9-X8+2
43510      &  *X7-4*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X4-2*X2*X10+X2*X7-2*
43511      &  X2*X6-2*X3*X7+2*X4*X7+4*X10*X7-X9*X7-X8*X7)+16*X2*X7*(X4+
43512      &  X10)
43513         FM(1,3)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-2*X3-4*
43514      &  X4-8*X10+X9+X8-2*X7-4*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X4+X10
43515      &  +X6)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
43516      &  -4*X2*X4-5*X2*X10+X2*X8-X2*X7-3*X2*X6+X2*X5+X3*X9+2*X3*X7
43517      &  -X3*X5+X4*X8+2*X4*X6-3*X4*X5-5*X10*X5+X9*X8+X9*X6+X9*X5+
43518      &  X8*X7-4*X6*X5+X5**2)-(16*X2*X5)*(X1+X4+X10+X6)
43519         FM(1,4)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1+X2-X3-X4+X10-
43520      &  X9-X8+2*X7+2*X6-X5)+4*PQ**2*PH**2*(X1+X3+X4+X10+2*X7+2*X6
43521      &  )+8*PQ**2*(4*X1*X10+4*X1*X7+4*X1*X6+2*X2*X10-X2*X9-X2*X8+
43522      &  4*X2*X7+4*X2*X6-X2*X5+4*X10*X5+4*X7*X5+4*X6*X5)-(8*PH**2*
43523      &  X1)*(X10+X7+X6)+16*X2*X5*(X10+X7+X6)
43524         FM(1,5)=8*PQ**4*(-2*X1-2*X4+X10-X9)+4*PQ**2*(4*X1**2-2*X1*
43525      &  X2+8*X1*X3+6*X1*X10-2*X1*X9+4*X1*X8+4*X1*X7+4*X1*X6+2*X1*
43526      &  X5+X2*X10+4*X3*X4-X3*X9+2*X3*X7+3*X4*X8-2*X4*X6+2*X4*X5-4
43527      &  *X10*X7+3*X10*X5-3*X9*X6+3*X8*X7-4*X7**2+4*X7*X5)+8*(X1**
43528      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5-X1*X4*
43529      &  X8-X1*X4*X5+X1*X10*X9+X1*X9*X7+X1*X9*X6-X1*X8*X7-X2*X3*X7
43530      &  +X2*X4*X6-X2*X10*X7-X2*X7**2+X3*X7*X5-X4*X10*X5-X4*X7*X5-
43531      &  X4*X6*X5)
43532         FM(1,6)=16*PQ**4*(-4*X1-X4+X9-X7)+4*PQ**2*PH**2*(-2*X1-X4-
43533      &  X7)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X4-3*X1*X9-2*X1*X7-3*
43534      &  X1*X5-2*X2*X4-2*X7*X5)-8*PH**2*X4*X7+8*(-X1*X2*X9-2*X1*X2
43535      &  *X5-X1*X9**2-X1*X9*X5+X2**2*X7-X2*X4*X5+X2*X9*X7-X2*X7*X5
43536      &  +X4*X9*X5+X4*X5**2)
43537         FM(1,7)=8*PQ**4*(2*X3+X4+3*X10+X9+2*X8+3*X7+6*X6)+2*PQ**2*
43538      &  PH**2*(-2*X3-X4+3*X10+3*X7+6*X6)+4*PQ**2*(4*X1*X10+4*X1*
43539      &  X7+8*X1*X6+6*X2*X10+X2*X9+2*X2*X8+6*X2*X7+12*X2*X6-8*X3*
43540      &  X7+4*X4*X7+4*X4*X6+4*X10*X5+4*X9*X7+4*X9*X6-8*X8*X7+4*X7*
43541      &  X5+8*X6*X5)+4*PH**2*(-X1*X10-X1*X7-2*X1*X6+2*X3*X7-X4*X7-
43542      &  X4*X6)+8*X2*(X10*X5+X9*X7+X9*X6-2*X8*X7+X7*X5+2*X6*X5)
43543         FM(1,8)=8*PQ**4*(2*X3+X4+3*X10+2*X9+X8+3*X7+6*X6)+2*PQ**2*
43544      &  PH**2*(-2*X3-X4+2*X10+X7+2*X6)+4*PQ**2*(4*X1*X10-2*X1*X9+
43545      &  2*X1*X8+4*X1*X7+8*X1*X6+5*X2*X10+2*X2*X9+X2*X8+4*X2*X7+8*
43546      &  X2*X6-X3*X9-8*X3*X7+2*X3*X5+2*X4*X9-X4*X8+4*X4*X7+4*X4*X6
43547      &  +4*X4*X5+5*X10*X5+X9**2-X9*X8+2*X9*X7+5*X9*X6+X9*X5-7*X8*
43548      &  X7+2*X8*X5+2*X7*X5+10*X6*X5)+2*PH**2*(-X1*X10+X3*X7-2*X4*
43549      &  X7+X4*X6)+4*(-X1*X9**2+X1*X9*X8-2*X1*X9*X5-X1*X8*X5+2*X2*
43550      &  X10*X5+X2*X9*X7+X2*X9*X6-2*X2*X8*X7+3*X2*X6*X5+X3*X9*X5+
43551      &  X3*X5**2+X4*X9*X5-2*X4*X8*X5+2*X4*X5**2)
43552         FM(2,2)=16*PQ**6+16*PQ**4*(-X1+X3-X4-X10+X7-X6)+16*PQ**2*(
43553      &  X3*X10+X3*X7+X3*X6+X4*X7+X10*X7)-16*X3*X10*X7
43554         FM(2,3)=16*PQ**6+8*PQ**4*(-2*X1+X2+2*X3-4*X4-4*X10-X9+X8-2
43555      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5+4*X3*X10-X3*X9-X3*X8-2*X3*
43556      &  X7+2*X3*X6+X3*X5-2*X4*X5-2*X10*X5-2*X6*X5)+16*X3*X5*(X10+
43557      &  X6)
43558         FM(2,4)=8*PQ**4*(-2*X1-2*X3+X10-X8)+4*PQ**2*(4*X1**2-2*X1*
43559      &  X2+8*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+4*X1*X7+4*X1*X6+2*X1*
43560      &  X5+X2*X10+4*X3*X4+3*X3*X9-2*X3*X7+2*X3*X5-X4*X8+2*X4*X6-4
43561      &  *X10*X6+3*X10*X5+3*X9*X6-3*X8*X7-4*X6**2+4*X6*X5)+8*(-X1
43562      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9-X1*X3*X5+X1*X4
43563      &  *X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X1*X8*X6+X2*X3*
43564      &  X7-X2*X4*X6-X2*X10*X6-X2*X6**2-X3*X10*X5-X3*X7*X5-X3*X6*
43565      &  X5+X4*X6*X5)
43566         FM(2,5)=16*PQ**4*X10+8*PQ**2*(2*X1**2+2*X1*X3+2*X1*X4+2*X1
43567      &  *X10+2*X1*X7+2*X1*X6+X3*X7+X4*X6)+8*(-2*X1**3-2*X1**2*X3-
43568      &  2*X1**2*X4-2*X1**2*X10-2*X1**2*X7-2*X1**2*X6-2*X1*X3*X4-
43569      &  X1*X3*X10-2*X1*X3*X6-X1*X4*X10-2*X1*X4*X7-X1*X10**2-X1*
43570      &  X10*X7-X1*X10*X6-2*X1*X7*X6+X3**2*X7-X3*X4*X7-X3*X4*X6+X3
43571      &  *X10*X7+X3*X7**2-X3*X7*X6+X4**2*X6+X4*X10*X6-X4*X7*X6+X4*
43572      &  X6**2)
43573         FM(2,6)=8*PQ**4*(-2*X1+X10-X9-2*X7)+4*PQ**2*(4*X1**2+2*X1*
43574      &  X2+4*X1*X3+4*X1*X4+6*X1*X10-2*X1*X9+4*X1*X8+8*X1*X6-2*X1*
43575      &  X5+4*X2*X4+3*X2*X10+2*X2*X7-3*X3*X9-2*X3*X7-4*X4**2-4*X4*
43576      &  X10+3*X4*X8+2*X4*X6+X10*X5-X9*X6+3*X8*X7+4*X7*X6)+8*(X1**
43577      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5+X1*X4*
43578      &  X9-X1*X4*X8-X1*X4*X5+X1*X10*X9+X1*X9*X6-X1*X8*X7-X2*X3*X7
43579      &  -X2*X4*X7+X2*X4*X6-X2*X10*X7+X3*X7*X5-X4**2*X5-X4*X10*X5-
43580      &  X4*X6*X5)
43581         FM(2,7)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
43582      &  2*X1*X4-2*X1*X10+X1*X9-X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
43583      &  X4+3*X2*X10+X2*X7+2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9-2*X3*
43584      &  X7-4*X3*X6-X3*X5-6*X4**2-6*X4*X10-3*X4*X9-X4*X8-4*X4*X7-2
43585      &  *X4*X6-2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+X10*X5
43586      &  +X9*X7-2*X8*X7-2*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
43587      &  -X1**2*X9+X1**2*X8-2*X1*X2*X10-3*X1*X2*X7-3*X1*X2*X6+X1*
43588      &  X3*X9-X1*X3*X5+X1*X4*X9+X1*X4*X8+X1*X4*X5+X1*X10*X9+X1*
43589      &  X10*X8-X1*X9*X6+X1*X8*X6+X2*X3*X7-3*X2*X4*X7-X2*X4*X6-3*
43590      &  X2*X10*X7-3*X2*X10*X6-3*X2*X7*X6-3*X2*X6**2-2*X3*X4*X5-X3
43591      &  *X10*X5-X3*X6*X5-X4**2*X5-X4*X10*X5+X4*X6*X5)
43592         FM(2,8)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
43593      &  2*X1*X4-2*X1*X10-X1*X9+X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
43594      &  X4+X2*X10-X2*X7-2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9+X3*X8-2*
43595      &  X3*X7-4*X3*X6+X3*X5-6*X4**2-6*X4*X10-2*X4*X9-4*X4*X7-2*X4
43596      &  *X6+2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+3*X10*X5-
43597      &  X9*X6-2*X8*X7-3*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
43598      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6-3*X1*X3*X5+X1*X4*X9-
43599      &  X1*X4*X8-3*X1*X4*X5+X1*X10*X9+X1*X10*X8-2*X1*X10*X5+X1*X9
43600      &  *X6+X1*X8*X7+X1*X8*X6-X2*X4*X7+X2*X4*X6-X2*X10*X7-X2*X10*
43601      &  X6-2*X2*X7*X6-X2*X6**2-3*X3*X4*X5-3*X3*X10*X5+X3*X7*X5-3*
43602      &  X3*X6*X5-3*X4**2*X5-3*X4*X10*X5-X4*X6*X5)
43603         FM(3,3)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X3+X8+X6
43604      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X3-X6)+16*PQ**2*(X2*X5-2*X3*
43605      &  X8-2*X3*X6+4*X3*X5+X8*X5)+8*PH**2*X3*X6-16*X3*X8*X5
43606         FM(3,4)=16*PQ**4*(-4*X1-X3+X8-X6)+4*PQ**2*PH**2*(-2*X1-X3-
43607      &  X6)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X3-3*X1*X8-2*X1*X6-3*
43608      &  X1*X5-2*X2*X3-2*X6*X5)-8*PH**2*X3*X6+8*(-X1*X2*X8-2*X1*X2
43609      &  *X5-X1*X8**2-X1*X8*X5+X2**2*X6-X2*X3*X5+X2*X8*X6-X2*X6*X5
43610      &  +X3*X8*X5+X3*X5**2)
43611         FM(3,5)=8*PQ**4*(-2*X1+X10-X8-2*X6)+4*PQ**2*(4*X1**2+2*X1*
43612      &  X2+4*X1*X3+4*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+8*X1*X7-2*X1*
43613      &  X5+4*X2*X3+3*X2*X10+2*X2*X6-4*X3**2-4*X3*X10+3*X3*X9+2*X3
43614      &  *X7-3*X4*X8-2*X4*X6+X10*X5+3*X9*X6-X8*X7+4*X7*X6)+8*(-X1
43615      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9+X1*X3*X8-X1*X3
43616      &  *X5+X1*X4*X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X2*X3*
43617      &  X7-X2*X3*X6-X2*X4*X6-X2*X10*X6-X3**2*X5-X3*X10*X5-X3*X7*
43618      &  X5+X4*X6*X5)
43619         FM(3,6)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1-X2+2*X3+2*X4+
43620      &  X10-X9-X8-X7-X6+X5)+4*PQ**2*PH**2*(X1+2*X3+2*X4+X10+X7+X6
43621      &  )+8*PQ**2*(4*X1*X3+4*X1*X4+4*X1*X10+4*X2*X3+4*X2*X4+4*X2*
43622      &  X10-X2*X5+4*X3*X5+4*X4*X5+2*X10*X5-X9*X5-X8*X5)-(8*PH**2*
43623      &  X1)*(X3+X4+X10)+16*X2*X5*(X3+X4+X10)
43624         FM(3,7)=8*PQ**4*(3*X3+6*X4+3*X10+X9+2*X8+2*X7+X6)+2*PQ**2*
43625      &  PH**2*(X3+2*X4+2*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+4*
43626      &  X1*X10+2*X1*X9-2*X1*X8+2*X2*X3+10*X2*X4+5*X2*X10+2*X2*X9+
43627      &  X2*X8+2*X2*X7+4*X2*X6-7*X3*X9+2*X3*X8-8*X3*X7+4*X3*X6+4*
43628      &  X3*X5+5*X4*X8+4*X4*X6+8*X4*X5+5*X10*X5-X9*X8-X9*X6+X9*X5+
43629      &  X8**2-X8*X7+2*X8*X6+2*X8*X5)+2*PH**2*(-X1*X10+X3*X7-2*X3*
43630      &  X6+X4*X6)+4*(-X1*X2*X9-2*X1*X2*X8+X1*X9*X8-X1*X8**2+X2**2
43631      &  *X7+2*X2**2*X6+3*X2*X4*X5+2*X2*X10*X5-2*X2*X9*X6+X2*X8*X7
43632      &  +X2*X8*X6-2*X3*X9*X5+X3*X8*X5+X4*X8*X5)
43633         FM(3,8)=8*PQ**4*(3*X3+6*X4+3*X10+2*X9+X8+2*X7+X6)+2*PQ**2*
43634      &  PH**2*(3*X3+6*X4+3*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+
43635      &  4*X1*X10+4*X2*X3+8*X2*X4+4*X2*X10-8*X3*X9+4*X3*X8-8*X3*X7
43636      &  +4*X3*X6+6*X3*X5+4*X4*X8+4*X4*X6+12*X4*X5+6*X10*X5+2*X9*
43637      &  X5+X8*X5)+4*PH**2*(-X1*X3-2*X1*X4-X1*X10+2*X3*X7-X3*X6-X4
43638      &  *X6)+8*X5*(X2*X3+2*X2*X4+X2*X10-2*X3*X9+X3*X8+X4*X8)
43639         FM(4,4)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X3+X8+2*
43640      &  X6+X5)+8*PQ**2*PH**2*(-X1-X3+2*X6)+16*PQ**2*(X2*X8+4*X2*
43641      &  X6+X2*X5-2*X3*X6-2*X8*X6)+8*PH**2*X3*X6-16*X2*X8*X6
43642         FM(4,5)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10-X9+X8-4
43643      &  *X7+2*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X3-2*X2*X10-2*X2*X7+
43644      &  X2*X6+2*X3*X6-2*X4*X6+4*X10*X6-X9*X6-X8*X6)+16*X2*X6*(X3+
43645      &  X10)
43646         FM(4,6)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-4*X3-2*
43647      &  X4-8*X10+X9+X8-4*X7-2*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X3+X10
43648      &  +X7)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
43649      &  -4*X2*X3-5*X2*X10+X2*X9-3*X2*X7-X2*X6+X2*X5+X3*X9+2*X3*X7
43650      &  -3*X3*X5+X4*X8+2*X4*X6-X4*X5-5*X10*X5+X9*X8+X9*X6+X8*X7+
43651      &  X8*X5-4*X7*X5+X5**2)-(16*X2*X5)*(X1+X3+X10+X7)
43652         FM(4,7)=8*PQ**4*(-X3-2*X4-3*X10-2*X9-X8-6*X7-3*X6)+2*PQ**2
43653      &  *PH**2*(X3+2*X4-3*X10-6*X7-3*X6)+4*PQ**2*(-4*X1*X10-8*X1*
43654      &  X7-4*X1*X6-6*X2*X10-2*X2*X9-X2*X8-12*X2*X7-6*X2*X6-4*X3*
43655      &  X7-4*X3*X6+8*X4*X6-4*X10*X5+8*X9*X6-4*X8*X7-4*X8*X6-8*X7*
43656      &  X5-4*X6*X5)+4*PH**2*(X1*X10+2*X1*X7+X1*X6+X3*X7+X3*X6-2*
43657      &  X4*X6)+8*X2*(-X10*X5+2*X9*X6-X8*X7-X8*X6-2*X7*X5-X6*X5)
43658         FM(4,8)=8*PQ**4*(-X3-2*X4-3*X10-X9-2*X8-6*X7-3*X6)+2*PQ**2
43659      &  *PH**2*(X3+2*X4-2*X10-2*X7-X6)+4*PQ**2*(-4*X1*X10-2*X1*X9
43660      &  +2*X1*X8-8*X1*X7-4*X1*X6-5*X2*X10-X2*X9-2*X2*X8-8*X2*X7-4
43661      &  *X2*X6+X3*X9-2*X3*X8-4*X3*X7-4*X3*X6-4*X3*X5+X4*X8+8*X4*
43662      &  X6-2*X4*X5-5*X10*X5+X9*X8+7*X9*X6-2*X9*X5-X8**2-5*X8*X7-2
43663      &  *X8*X6-X8*X5-10*X7*X5-2*X6*X5)+2*PH**2*(X1*X10-X3*X7+2*X3
43664      &  *X6-X4*X6)+4*(-X1*X9*X8+X1*X9*X5+X1*X8**2+2*X1*X8*X5-2*X2
43665      &  *X10*X5+2*X2*X9*X6-X2*X8*X7-X2*X8*X6-3*X2*X7*X5+2*X3*X9*
43666      &  X5-X3*X8*X5-2*X3*X5**2-X4*X8*X5-X4*X5**2)
43667         FM(5,5)=16*PQ**6+16*PQ**4*(-X1-X3+X4-X10-X7+X6)+16*PQ**2*(
43668      &  X3*X6+X4*X10+X4*X7+X4*X6+X10*X6)-16*X4*X10*X6
43669         FM(5,6)=16*PQ**6+8*PQ**4*(-2*X1+X2-4*X3+2*X4-4*X10+X9-X8-2
43670      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5-2*X3*X5+4*X4*X10-X4*X9-X4*
43671      &  X8+2*X4*X7-2*X4*X6+X4*X5-2*X10*X5-2*X7*X5)+16*X4*X5*(X10+
43672      &  X7)
43673         FM(5,7)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
43674      &  4*X1*X4+2*X1*X10+X1*X9-X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
43675      &  X4-3*X2*X10-2*X2*X7-X2*X6+6*X3**2+6*X3*X4+6*X3*X10+X3*X9+
43676      &  3*X3*X8+2*X3*X7+4*X3*X6+2*X3*X5+6*X4*X10+2*X4*X8+4*X4*X7+
43677      &  2*X4*X6+X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-X10*X5+
43678      &  2*X9*X7+2*X9*X6-X8*X6+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(-
43679      &  X1**2*X9+X1**2*X8+2*X1*X2*X10+3*X1*X2*X7+3*X1*X2*X6-X1*X3
43680      &  *X9-X1*X3*X8-X1*X3*X5-X1*X4*X8+X1*X4*X5-X1*X10*X9-X1*X10*
43681      &  X8-X1*X9*X7+X1*X8*X7+X2*X3*X7+3*X2*X3*X6-X2*X4*X6+3*X2*
43682      &  X10*X7+3*X2*X10*X6+3*X2*X7**2+3*X2*X7*X6+X3**2*X5+2*X3*X4
43683      &  *X5+X3*X10*X5-X3*X7*X5+X4*X10*X5+X4*X7*X5)
43684         FM(5,8)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
43685      &  4*X1*X4+2*X1*X10-X1*X9+X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
43686      &  X4-X2*X10+2*X2*X7+X2*X6+6*X3**2+6*X3*X4+6*X3*X10+2*X3*X8+
43687      &  2*X3*X7+4*X3*X6-2*X3*X5+6*X4*X10-X4*X9+2*X4*X8+4*X4*X7+2*
43688      &  X4*X6-X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-3*X10*X5+
43689      &  3*X9*X7+2*X9*X6+X8*X7+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(
43690      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9-X1*X3*X8+3*
43691      &  X1*X3*X5+3*X1*X4*X5-X1*X10*X9-X1*X10*X8+2*X1*X10*X5-X1*X9
43692      &  *X7-X1*X9*X6-X1*X8*X7-X2*X3*X7+X2*X3*X6+X2*X10*X7+X2*X10*
43693      &  X6+X2*X7**2+2*X2*X7*X6+3*X3**2*X5+3*X3*X4*X5+3*X3*X10*X5+
43694      &  X3*X7*X5+3*X4*X10*X5+3*X4*X7*X5-X4*X6*X5)
43695         FM(6,6)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X4+X9+X7
43696      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X4-X7)+16*PQ**2*(X2*X5-2*X4*
43697      &  X9-2*X4*X7+4*X4*X5+X9*X5)+8*PH**2*X4*X7-16*X4*X9*X5
43698         FM(6,7)=8*PQ**4*(-6*X3-3*X4-3*X10-2*X9-X8-X7-2*X6)+2*PQ**2
43699      &  *PH**2*(-2*X3-X4-2*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*X4
43700      &  -4*X1*X10+2*X1*X9-2*X1*X8-10*X2*X3-2*X2*X4-5*X2*X10-X2*X9
43701      &  -2*X2*X8-4*X2*X7-2*X2*X6-5*X3*X9-4*X3*X7-8*X3*X5-2*X4*X9+
43702      &  7*X4*X8-4*X4*X7+8*X4*X6-4*X4*X5-5*X10*X5-X9**2+X9*X8-2*X9
43703      &  *X7+X9*X6-2*X9*X5+X8*X7-X8*X5)+2*PH**2*(X1*X10-X3*X7+2*X4
43704      &  *X7-X4*X6)+4*(2*X1*X2*X9+X1*X2*X8+X1*X9**2-X1*X9*X8-2*X2
43705      &  **2*X7-X2**2*X6-3*X2*X3*X5-2*X2*X10*X5-X2*X9*X7-X2*X9*X6+
43706      &  2*X2*X8*X7-X3*X9*X5-X4*X9*X5+2*X4*X8*X5)
43707         FM(6,8)=8*PQ**4*(-6*X3-3*X4-3*X10-X9-2*X8-X7-2*X6)+2*PQ**2
43708      &  *PH**2*(-6*X3-3*X4-3*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*
43709      &  X4-4*X1*X10-8*X2*X3-4*X2*X4-4*X2*X10-4*X3*X9-4*X3*X7-12*
43710      &  X3*X5-4*X4*X9+8*X4*X8-4*X4*X7+8*X4*X6-6*X4*X5-6*X10*X5-X9
43711      &  *X5-2*X8*X5)+4*PH**2*(2*X1*X3+X1*X4+X1*X10+X3*X7+X4*X7-2*
43712      &  X4*X6)+8*X5*(-2*X2*X3-X2*X4-X2*X10-X3*X9-X4*X9+2*X4*X8)
43713         FM(7,7)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+9*
43714      &  X2*X10+7*X3*X7+2*X3*X6+2*X4*X7+7*X4*X6+X10*X5+2*X9*X7+7*
43715      &  X9*X6+7*X8*X7+2*X8*X6)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2
43716      &  *X4*X7-7*X4*X6)+4*X2*(X10*X5+2*X9*X7+7*X9*X6+7*X8*X7+2*X8
43717      &  *X6)
43718         FM(7,8)=72*PQ**4*X10+2*PQ**2*PH**2*X10+4*PQ**2*(2*X1*X10+
43719      &  10*X2*X10+7*X3*X9+2*X3*X8+14*X3*X7+4*X3*X6+2*X4*X9+7*X4*
43720      &  X8+4*X4*X7+14*X4*X6+10*X10*X5+X9**2+7*X9*X8+2*X9*X7+7*X9*
43721      &  X6+X8**2+7*X8*X7+2*X8*X6)+2*PH**2*(7*X1*X10-7*X3*X7-2*X3*
43722      &  X6-2*X4*X7-7*X4*X6)+2*(-2*X1*X9**2-14*X1*X9*X8-2*X1*X8**2
43723      &  +2*X2*X10*X5+2*X2*X9*X7+7*X2*X9*X6+7*X2*X8*X7+2*X2*X8*X6+
43724      &  7*X3*X9*X5+2*X3*X8*X5+2*X4*X9*X5+7*X4*X8*X5)
43725         FM(8,8)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+X2
43726      &  *X10+7*X3*X9+2*X3*X8+7*X3*X7+2*X3*X6+2*X4*X9+7*X4*X8+2*X4
43727      &  *X7+7*X4*X6+9*X10*X5)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2*
43728      &  X4*X7-7*X4*X6)+4*X5*(X2*X10+7*X3*X9+2*X3*X8+2*X4*X9+7*X4*
43729      &  X8)
43730         FM(9,9)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
43731      &  X3*X7+X4*X6-X10*X5+X9*X6+X8*X7)+PH**2*(X1*X10-X3*X7-X4*X6
43732      &  )+2*X2*(-X10*X5+X9*X6+X8*X7)
43733         FM(9,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
43734      &  X10+2*X3*X9+2*X3*X7+2*X4*X6-2*X10*X5+X9*X8+2*X8*X7)+PH**2
43735      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X8*X7+X3*
43736      &  X9*X5)
43737         FMXX=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
43738      &  X10+2*X4*X8+2*X4*X6+2*X3*X7-2*X10*X5+X9*X8+2*X9*X6)+PH**2
43739      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X9*X6+X4*
43740      &  X8*X5)
43741         FM(9,10)=0.5D0*(FMXX+FM(9,10))
43742         FM(10,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
43743      &  X3*X7+X4*X6-X10*X5+X9*X3+X8*X4)+PH**2*(X1*X10-X3*X7-X4*X6
43744      &  )+2*X5*(-X10*X2+X9*X3+X8*X4)
43745  
43746 C...Repackage matrix elements.
43747         DO 200 I=1,8
43748           DO 190 J=I,8
43749             RM(I,J)=FM(I,J)
43750   190     CONTINUE
43751   200   CONTINUE
43752         RM(7,7)=FM(7,7)-2D0*FM(9,9)
43753         RM(7,8)=FM(7,8)-2D0*FM(9,10)
43754         RM(8,8)=FM(8,8)-2D0*FM(10,10)
43755  
43756 C...Produce final result: matrix elements * colours * propagators.
43757         DO 220 I=1,8
43758           DO 210 J=I,8
43759             FAC=8D0
43760             IF(I.EQ.J)FAC=4D0
43761             WTQQBH=WTQQBH+RM(I,J)*FAC*CLR(I,J)/(DX(I)*DX(J))
43762   210     CONTINUE
43763   220   CONTINUE
43764         WTQQBH=-WTQQBH/256D0
43765  
43766       ELSE
43767 C...Evaluate matrix elements for q + qbar -> Q + Qbar + H.
43768         A11=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X2*X10+X3
43769      &  *X7+X4*X6+X9*X6+X8*X7)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X2)*(X9
43770      &  *X6+X8*X7)
43771         A12=-8D0*PQ**4*X10+4D0*PQ**2*(-X2*X10-X3*X9-2D0*X3*X7-X4*X8-
43772      &  2D0*X4*X6-X10*X5-X9*X8-X9*X6-X8*X7)+2D0*PH**2*(-X1*X10+X3*X7
43773      &  +X4*X6)+2D0*(2D0*X1*X9*X8-X2*X9*X6-X2*X8*X7-X3*X9*X5-X4*X8*
43774      &  X5)
43775         A22=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X3*X9+X3*
43776      &  X7+X4*X8+X4*X6+X10*X5)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X5)*(X3
43777      &  *X9+X4*X8)
43778  
43779 C...Produce final result: matrix elements * propagators.
43780         A11=A11/DX(7)**2
43781         A12=A12/(DX(7)*DX(8))
43782         A22=A22/DX(8)**2
43783         WTQQBH=-(A11+A22+2D0*A12)*8D0/9D0
43784       ENDIF
43785  
43786       RETURN
43787       END
43788  
43789 C*********************************************************************
43790  
43791 C...PYSTBH (and auxiliaries)
43792 C.. Evaluates the matrix elements for t + b + H production.
43793  
43794       SUBROUTINE PYSTBH(WTTBH)
43795  
43796 C...DOUBLE PRECISION AND INTEGER DECLARATIONS
43797       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43798       IMPLICIT INTEGER(I-N)
43799       INTEGER PYK,PYCHGE,PYCOMP
43800  
43801 C...COMMONBLOCKS
43802       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43803       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43804       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
43805       COMMON/PYINT1/MINT(400),VINT(400)
43806       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
43807       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
43808       COMMON/PYINT4/MWID(500),WIDS(500,5)
43809       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
43810       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
43811       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
43812      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
43813      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
43814      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
43815       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
43816       DOUBLE PRECISION MW2
43817       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
43818      &/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/,/PYCTBH/
43819  
43820 C...LOCAL ARRAYS AND COMPLEX VARIABLES
43821       DIMENSION QQ(4,2),PP(4,3)
43822       DATA QQ/8*0D0/
43823  
43824       WTTBH=0D0
43825  
43826 C...KINEMATIC PARAMETERS.
43827       SHPR=SQRT(VINT(26))*VINT(1)
43828       PH=SQRT(VINT(21))*VINT(1)
43829       SPH=PH**2
43830  
43831 C...SET UP OUTGOING KINEMATICS: 1=T, 2=TBAR, 3=H.
43832       DO 100 I=1,2
43833         PT=SQRT(MAX(0D0,VINT(197+5*I)))
43834         PP(1,I)=PT*COS(VINT(198+5*I))
43835         PP(2,I)=PT*SIN(VINT(198+5*I))
43836   100 CONTINUE
43837       PP(1,3)=-PP(1,1)-PP(1,2)
43838       PP(2,3)=-PP(2,1)-PP(2,2)
43839       PMS1=VINT(201)**2+PP(1,1)**2+PP(2,1)**2
43840       PMS2=VINT(206)**2+PP(1,2)**2+PP(2,2)**2
43841       PMS3=SPH+PP(1,3)**2+PP(2,3)**2
43842       PMT3=SQRT(PMS3)
43843       PP(3,3)=PMT3*SINH(VINT(211))
43844       PP(4,3)=PMT3*COSH(VINT(211))
43845       PMS12=(SHPR-PP(4,3))**2-PP(3,3)**2
43846       PP(3,1)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
43847      &VINT(213)*(SHPR-PP(4,3))*VINT(220))/(2D0*PMS12)
43848       PP(3,2)=-PP(3,1)-PP(3,3)
43849       PP(4,1)=SQRT(PMS1+PP(3,1)**2)
43850       PP(4,2)=SQRT(PMS2+PP(3,2)**2)
43851  
43852 C...CM SYSTEM, INGOING QUARKS/GLUONS
43853       QQ(3,1) = SHPR/2.D0
43854       QQ(4,1) = QQ(3,1)
43855       QQ(3,2) = -QQ(3,1)
43856       QQ(4,2) = QQ(4,1)
43857  
43858 C...PARAMETERS FOR AMPLITUDE METHOD
43859       ALPHA = AEM
43860       ALPHAS = AS
43861       SW2 = PARU(102)
43862       MW2 = PMAS(24,1)**2
43863       TANB = PARU(141)
43864       VTB = VCKM(3,3)
43865       RMB=PYMRUN(5,VINT(52))
43866  
43867       ISUB=MINT(1)
43868  
43869       IF (ISUB.EQ.401) THEN
43870         CALL PYTBHG(QQ(1,1),QQ(1,2),PP(1,1),PP(1,2),PP(1,3),
43871      &  VINT(201),VINT(206),RMB,VINT(43),WTTBH)
43872       ELSE IF (ISUB.EQ.402) THEN
43873         CALL PYTBHQ(QQ(1,1),QQ(1,2),PP(1,1),PP(1,2),PP(1,3),
43874      &  VINT(201),VINT(206),RMB,VINT(43),WTTBH)
43875       END IF
43876  
43877       RETURN
43878       END
43879 C------------------------------------------------------------------
43880       SUBROUTINE PYTBHB(MT,MB,MHP,BR,GAMT)
43881 C  WIDTH AND BRANCHING RATIO FOR (ON-SHELL) T-> B W+, T->B H+
43882       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43883       IMPLICIT INTEGER(I-N)
43884       DOUBLE PRECISION MW2,MT,MB,MHP,MW,KFUN
43885       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
43886       SAVE /PYCTBH/
43887  
43888 C   TOP WIDTH CALCULATION
43889 C       VTB  = 0.99
43890       MW=DSQRT(MW2)
43891       XB=(MB/MT)**2
43892       XW=(MW/MT)**2
43893       XH =(MHP/MT)**2
43894       GAMTBH = 0D0
43895       IF (MT .LT. (MHP+MB)) THEN
43896 C  T ->B W ONLY
43897          BETW = DSQRT(1.D0-2*(XB+XW)+(XW-XB)**2)
43898          GAMTBW = VTB**2*ALPHA/(16*SW2)*MT/XW*BETW*
43899      &        (2*(1.D0-XB-XW)-(1.D0+XB-XW)*(1.D0-XB -2*XW) )
43900          GAMT  = GAMTBW
43901       ELSE
43902 C T ->BW +T ->B H^+
43903          BETW = DSQRT(1.D0-2*(XB+XW)+(XW-XB)**2)
43904          GAMTBW = VTB**2*ALPHA/(16*SW2)*MT/XW*BETW*
43905      &        (2*(1.D0-XB-XW)-(1.D0+XB-XW)*(1.D0-XB -2*XW) )
43906 C
43907          KFUN = DSQRT( (1.D0-(MHP/MT)**2-(MB/MT)**2)**2
43908      &        -4.D0*(MHP*MB/MT**2)**2 )
43909          GAMTBH= ALPHA/SW2/8.D0*VTB**2*KFUN/MT *
43910      &        (V**2*((MT+MB)**2-MHP**2)+A**2*((MT-MB)**2-MHP**2))
43911          GAMT  = GAMTBW+GAMTBH
43912       ENDIF
43913 C THUS BR IS
43914       BR=GAMTBH/GAMT
43915       RETURN
43916       END
43917  
43918 C AMPLITUDE SQUARED (MATRIX ELEMENTS) FOR THE PROCESSES:
43919 C GG->TBH^+, QQBAR->TBH^+
43920 C AS A FUNCTION OF 4-MOMENTA FOR SUITABLE INTERFACE
43921 C (FOR INSTANCE WITH PYTHIA)
43922 C------------------------------------------------------------
43923 C BASED ON F. BORZUMATI, J.-L. KNEUR, N. POLONSKY  HEP-PH/9905443,
43924 C PHYS REV. D 60 (1999) 115011
43925 C (THESE FILES PREPARED BY J.-L. KNEUR)
43926 C------------------------------------------------------------
43927 C 1)  GG->TBH^+
43928        SUBROUTINE PYTBHG(Q1,Q2,P1,P2,P3,MT,MB,RMB,MHP,AMP2)
43929 C
43930 C CONVENTIONS AND INPUT/OUTPUT DEFINITIONS:
43931 C
43932 C INPUT: Q1,Q2 ARE ENTERING 4-MOMENTA OF INITIAL GLUONS OR QUARKS;
43933 C        P1, P2 ARE THE TOP AND BOTTOM OUTGOING 4-MOMENTA;
43934 C        P3 IS OUTGOING CHARGED HIGGS 4-MOMENTA.
43935 C  (NB FOR ALL 4-MOMENTA P(4) IS TIME-COMPONENT)
43936 C "PHYSICAL PARAMETERS" INPUT:
43937 C        MT,MB TOP AND BOTTOM MASSES;
43938 C        MHP CHARGED HIGGS MASS
43939 C   FURTHER PARAMETERS INPUT IS NEEDED FROM COMMON/PARAM/ (SEE BELOW)
43940 C
43941 C OUTPUT: AMP2  IS MATRIX ELEMENT (AMPLITUDE**2) FOR GG->TB H^+
43942 C (NB AMP2 IS TRULY AMPLITUDE SQUARRED, I.E. WITHOUT ANY
43943 C PHASE SPACE FACTORS INCLUDED. IT INCLUDES COLOUR AND COUPLING
43944 C FACTORS, AS EXPLICIT BELOW. ACCORDINGLY, FOR EXAMPLE THE TOTAL
43945 C CROSS-SECTION SHOULD BE (SYMBOLICALLY):
43946 C   SIGMA = INTEGRATE [PARTON DENSITY FUNCTIONS * 3-PARTICLE FINAL
43947 C           STATE PHASE-SPACE (STANDARDLY NORMALIZED) * AMP2 ]
43948 C
43949       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43950       IMPLICIT INTEGER(I-N)
43951       DOUBLE PRECISION MW2,MT,MB,MHP,MW
43952       DIMENSION Q1(4),Q2(4),P1(4),P2(4),P3(4)
43953       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43954       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43955       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
43956  
43957       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
43958       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYCTBH/
43959 C !THE RELEVANT INPUT PARAMETERS ABOVE ARE NEEDED FOR CALCULATION
43960 C BUT ARE NOT DEFINED HERE SO THAT ONE MAY CHOOSE/VARY THEIR VALUES:
43961 C ACCORDINGLY, WHEN CALLING THESE SUBROUTINES, PLEASE SUPPLY VIA
43962 C THIS COMMON/PARAM/ YOUR PREFERRED ALPHA, ALPHAS,..AND TANB
43963 C (TAN BETA) VALUES
43964 C
43965 C THE NORMALIZED V,A COUPLINGS ARE DEFINED BELOW AND USED BOTH
43966 C IN THIS ROUTINE AND IN THE TOP WIDTH CALCULATION PYTBHB(..).
43967  
43968       PI = 4*DATAN(1.D0)
43969       MW = DSQRT(MW2)
43970 C
43971 C COLLECTING THE RELEVANT OVERALL FACTORS:
43972 C 8X8 INITIAL GLUON COLOR AVERAGE, 2X2 GLUON SPIN AVERAGE
43973       PS=1.D0/(8.D0*8.D0 *2.D0*2.D0)
43974 C COUPLING CONSTANT (OVERALL NORMALIZATION)
43975       FACT=(4.D0*PI*ALPHA)*(4.D0*PI*ALPHAS)**2/SW2/2.D0
43976 C NB ALPHA IS E^2/4/PI, BUT BETTER DEFINED IN TERMS OF G_FERMI:
43977 C ALPHA= DSQRT(2.D0)*GF*SW2*MW**2/PI
43978 C ALPHAS IS ALPHA_STRONG;
43979 C SW2 IS SIN(THETA_W)**2.
43980 C
43981 C      VTB=.998D0
43982 C VTB IS TOP-BOTTOM CKM MATRIX ELEMENT (APPROXIMATE VALUE HERE)
43983 C
43984       V = ( MT/MW/TANB +RMB/MW*TANB)/2.D0
43985       A = (-MT/MW/TANB +RMB/MW*TANB)/2.D0
43986 C V AND A ARE (NORMALIZED) VECTOR AND AXIAL TBH^+ COUPLINGS
43987 C
43988 C REDEFINING P2 INGOING FROM OVERALL MOMENTUM CONSERVATION
43989 C (BECAUSE P2 INGOING WAS USED IN OUR GRAPH CALCULATION CONVENTIONS)
43990       DO 100 KK=1,4
43991       P2(KK)=P3(KK)-Q1(KK)-Q2(KK)+P1(KK)
43992   100 CONTINUE
43993 C DEFINING VARIOUS RELEVANT 4-SCALAR PRODUCTS:
43994       S = 2*PYTBHS(Q1,Q2)
43995       P1Q1=PYTBHS(Q1,P1)
43996       P1Q2=PYTBHS(P1,Q2)
43997       P2Q1=PYTBHS(P2,Q1)
43998       P2Q2=PYTBHS(P2,Q2)
43999       P1P2=PYTBHS(P1,P2)
44000 C
44001 C   TOP WIDTH CALCULATION
44002       CALL PYTBHB(MT,MB,MHP,BR,GAMT)
44003 C   GAMT IS THE TOP WIDTH: T->BH^+ AND/OR T->B W^+
44004 C THEN DEFINE TOP (RESONANT) PROPAGATOR:
44005       A1INV= S -2*P1Q1 -2*P1Q2
44006       A1 =A1INV/(A1INV**2+ (GAMT*MT)**2)
44007 C (I.E. INTRODUCE THE TOP WIDTH IN A1 TO REGULARISE THE POLE)
44008 C  NB:    A12 = A1*A1 BUT CORRECT EXPRESSION BELOW BECAUSE OF
44009 C  THE TOP WIDTH
44010       A12 = 1.D0/(A1INV**2+ (GAMT*MT)**2)
44011       A2 =1.D0/(S +2*P2Q1 +2*P2Q2)
44012 C NOTE A2 IS B PROPAGATOR, DOES NOT NEED A WIDTH
44013 C  NOW COMES THE AMP**2:
44014 C NB COLOR FACTOR (COMING FROM GRAPHS) ALREADY INCLUDED IN
44015 C THE EXPRESSIONS BELOW
44016       V18=0.D0
44017       A18=0.D0
44018       V18= 640*A1/3+640*A2/3+32*A1*A2*MB**2-368*A12*MB*MT-
44019      &512*A1*A2*MB*MT/3-
44020      &368*A2**2*MB*MT+32*A1*A2*MT**2+496*A12*P1P2/3+
44021      &320*A1*A2*P1P2+496*A2**2*P1P2/3+128*A1*MB*MT**3/(3*P1Q1**2)+
44022      &128*A1*MT**4/(3*P1Q1**2)-256*A12*MB*MT**5/(3*P1Q1**2)+
44023      &256*A1*MT**2*P1P2/(3*P1Q1**2)-256*A12*MT**4*P1P2/(3*P1Q1**2)+
44024      &8/(3*P1Q1)-32*A1*MB*MT/P1Q1-56*A2*MB*MT/(3*P1Q1)+
44025      &88*A1*MT**2/(3*P1Q1)+72*A2*MT**2/P1Q1+
44026      &704*A12*MB*MT**3/(3*P1Q1)-224*A1*A2*MB*MT**3/(3*P1Q1)+
44027      &104*A1*P1P2/(3*P1Q1)+48*A2*P1P2/P1Q1+
44028      &128*A1*A2*MB*MT*P1P2/(3*P1Q1)+512*A12*MT**2*P1P2/(3*P1Q1)-
44029      &448*A1*A2*MT**2*P1P2/(3*P1Q1)-32*A1*A2*P1P2**2/P1Q1-
44030      &656*A1*A2*P1Q1/3-224*A2**2*P1Q1+128*A1*MB*MT**3/(3*P1Q2**2)+
44031      &128*A1*MT**4/(3*P1Q2**2)-256*A12*MB*MT**5/(3*P1Q2**2)+
44032      &256*A1*MT**2*P1P2/(3*P1Q2**2)-256*A12*MT**4*P1P2/(3*P1Q2**2)+
44033      &256*A1*MT**2*P1Q1/(3*P1Q2**2)+256*A12*MB*MT**3*P1Q1/(3*P1Q2**2)+
44034      &8/(3*P1Q2)-32*A1*MB*MT/P1Q2-56*A2*MB*MT/(3*P1Q2)
44035       V18=V18+88*A1*MT**2/(3*P1Q2)+72*A2*MT**2/P1Q2+
44036      &704*A12*MB*MT**3/(3*P1Q2)-224*A1*A2*MB*MT**3/(3*P1Q2)+
44037      &104*A1*P1P2/(3*P1Q2)+48*A2*P1P2/P1Q2+
44038      &128*A1*A2*MB*MT*P1P2/(3*P1Q2)+512*A12*MT**2*P1P2/(3*P1Q2)-
44039      &448*A1*A2*MT**2*P1P2/(3*P1Q2)-32*A1*A2*P1P2**2/P1Q2-
44040      &32*A1*MB*MT**3/(3*P1Q1*P1Q2)-32*A1*MT**4/(3*P1Q1*P1Q2)+
44041      &64*A12*MB*MT**5/(3*P1Q1*P1Q2)+16*P1P2/(3*P1Q1*P1Q2)-
44042      &64*A1*MT**2*P1P2/(3*P1Q1*P1Q2)+64*A12*MT**4*P1P2/(3*P1Q1*P1Q2)+
44043      &112*A1*P1Q1/P1Q2+272*A2*P1Q1/(3*P1Q2)-
44044      &272*A1*A2*MB**2*P1Q1/(3*P1Q2)+208*A12*MB*MT*P1Q1/(3*P1Q2)-
44045      &400*A1*A2*MB*MT*P1Q1/(3*P1Q2)-80*A1*A2*MT**2*P1Q1/P1Q2+
44046      &96*A12*P1P2*P1Q1/P1Q2-320*A1*A2*P1P2*P1Q1/P1Q2-
44047      &544*A1*A2*P1Q1**2/(3*P1Q2)-656*A1*A2*P1Q2/3-224*A2**2*P1Q2+
44048      &256*A1*MT**2*P1Q2/(3*P1Q1**2)+256*A12*MB*MT**3*P1Q2/(3*P1Q1**2)+
44049      &112*A1*P1Q2/P1Q1+272*A2*P1Q2/(3*P1Q1)-
44050      &272*A1*A2*MB**2*P1Q2/(3*P1Q1)+208*A12*MB*MT*P1Q2/(3*P1Q1)-
44051      &400*A1*A2*MB*MT*P1Q2/(3*P1Q1)-80*A1*A2*MT**2*P1Q2/P1Q1
44052       V18=V18+96*A12*P1P2*P1Q2/P1Q1-320*A1*A2*P1P2*P1Q2/P1Q1-
44053      &544*A1*A2*P1Q2**2/(3*P1Q1)+128*A2*MB**4/(3*P2Q1**2)+
44054      &128*A2*MB**3*MT/(3*P2Q1**2)-256*A2**2*MB**5*MT/(3*P2Q1**2)+
44055      &256*A2*MB**2*P1P2/(3*P2Q1**2)-256*A2**2*MB**4*P1P2/(3*P2Q1**2)+
44056      &256*A2*MB**2*P1Q1/(3*P2Q1**2)-256*A2**2*MB**4*P1Q1/(3*P2Q1**2)-
44057      &64*MB**3*MT**3/(3*P1Q2**2*P2Q1**2)-
44058      &64*MB**2*MT**2*P1P2/(3*P1Q2**2*P2Q1**2)-
44059      &64*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1**2)+
44060      &64*MB**3*MT/(3*P1Q2*P2Q1**2)+
44061      &256*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1**2)+
44062      &256*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1**2)+
44063      &256*A2*MB**3*MT*P1Q1/(3*P1Q2*P2Q1**2)+
44064      &512*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1**2)+
44065      &256*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1**2)-
44066      &256*A2**2*MB**4*P1Q2/(3*P2Q1**2)-8/(3*P2Q1)-72*A1*MB**2/P2Q1-
44067      &88*A2*MB**2/(3*P2Q1)+56*A1*MB*MT/(3*P2Q1)+32*A2*MB*MT/P2Q1+
44068      &224*A1*A2*MB**3*MT/(3*P2Q1)-704*A2**2*MB**3*MT/(3*P2Q1)
44069       V18=V18-48*A1*P1P2/P2Q1-104*A2*P1P2/(3*P2Q1)+
44070      &448*A1*A2*MB**2*P1P2/(3*P2Q1)-512*A2**2*MB**2*P1P2/(3*P2Q1)-
44071      &128*A1*A2*MB*MT*P1P2/(3*P2Q1)+32*A1*A2*P1P2**2/P2Q1-
44072      &16*P1P2/(3*P1Q1*P2Q1)-32*A1*MB*MT*P1P2/(3*P1Q1*P2Q1)-
44073      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q1)-
44074      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q1)-
44075      &64*A1*A2*P1P2**3/(3*P1Q1*P2Q1)-256*A2*P1Q1/(3*P2Q1)+
44076      &448*A1*A2*MB**2*P1Q1/(3*P2Q1)-368*A2**2*MB**2*P1Q1/(3*P2Q1)+
44077      &224*A1*A2*MB*MT*P1Q1/(3*P2Q1)+304*A1*A2*P1P2*P1Q1/(3*P2Q1)-
44078      &64*MB*MT**3/(3*P1Q2**2*P2Q1)-
44079      &256*A1*MB*MT**3*P1P2/(3*P1Q2**2*P2Q1)-
44080      &256*A1*MT**2*P1P2**2/(3*P1Q2**2*P2Q1)+
44081      &64*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
44082      &128*A1*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
44083      &128*A1*MB*MT**3*P1Q1/(3*P1Q2**2*P2Q1)-
44084      &256*A1*MT**2*P1P2*P1Q1/(3*P1Q2**2*P2Q1)-4*MB**2/(3*P1Q2*P2Q1)+
44085      &64*MB*MT/(3*P1Q2*P2Q1)-128*A2*MB**3*MT/(3*P1Q2*P2Q1)
44086       V18=V18-4*MT**2/(3*P1Q2*P2Q1)-128*A1*MB**2*MT**2/(3*P1Q2*P2Q1)-
44087      &128*A2*MB**2*MT**2/(3*P1Q2*P2Q1)-128*A1*MB*MT**3/(3*P1Q2*P2Q1)-
44088      &112*A2*MB**2*P1P2/(3*P1Q2*P2Q1)-32*A1*MB*MT*P1P2/(3*P1Q2*P2Q1)-
44089      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q1)-112*A1*MT**2*P1P2/(3*P1Q2*P2Q1)-
44090      &48*A1*P1P2**2/(P1Q2*P2Q1)-48*A2*P1P2**2/(P1Q2*P2Q1)+
44091      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q1)+
44092      &512*A1*A2*P1P2**3/(3*P1Q2*P2Q1)-8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q1)-
44093      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q1)+
44094      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q1)-
44095      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+
44096      &32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+8*P1Q1/(3*P1Q2*P2Q1)-
44097      &160*A1*MB**2*P1Q1/(3*P1Q2*P2Q1)-272*A2*MB**2*P1Q1/(3*P1Q2*P2Q1)+
44098      &56*A1*MB*MT*P1Q1/(3*P1Q2*P2Q1)+200*A2*MB*MT*P1Q1/(3*P1Q2*P2Q1)-
44099      &48*A1*P1P2*P1Q1/(P1Q2*P2Q1)-256*A2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
44100      &256*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
44101      &256*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1)+
44102      &1024*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q1)
44103       V18=V18-272*A2*P1Q1**2/(3*P1Q2*P2Q1)+
44104      &256*A1*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1)+
44105      &256*A1*A2*MB*MT*P1Q1**2/(3*P1Q2*P2Q1)+
44106      &512*A1*A2*P1P2*P1Q1**2/(3*P1Q2*P2Q1)+16*A2*P1Q2/(3*P2Q1)+
44107      &64*A1*A2*MB**2*P1Q2/P2Q1+32*A2**2*MB**2*P1Q2/(3*P2Q1)+
44108      &112*A1*A2*MB*MT*P1Q2/(3*P2Q1)+368*A1*A2*P1P2*P1Q2/(3*P2Q1)+
44109      &32*A2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
44110      &32*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
44111      &32*A1*A2*MB*MT*P1P2*P1Q2/(3*P1Q1*P2Q1)-
44112      &64*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q1)+224*A12*P2Q1+
44113      &656*A1*A2*P2Q1/3-256*A1*MT**2*P2Q1/(3*P1Q1**2)+
44114      &256*A12*MT**4*P2Q1/(3*P1Q1**2)-256*A1*P2Q1/(3*P1Q1)+
44115      &224*A1*A2*MB*MT*P2Q1/(3*P1Q1)-368*A12*MT**2*P2Q1/(3*P1Q1)+
44116      &448*A1*A2*MT**2*P2Q1/(3*P1Q1)+304*A1*A2*P1P2*P2Q1/(3*P1Q1)+
44117      &256*A12*MT**4*P2Q1/(3*P1Q2**2)+
44118      &256*A12*MT**2*P1Q1*P2Q1/(3*P1Q2**2)+16*A1*P2Q1/(3*P1Q2)+
44119      &112*A1*A2*MB*MT*P2Q1/(3*P1Q2)+32*A12*MT**2*P2Q1/(3*P1Q2)
44120       V18=V18+64*A1*A2*MT**2*P2Q1/P1Q2+368*A1*A2*P1P2*P2Q1/(3*P1Q2)+
44121      &16*A1*MT**2*P2Q1/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q1/(3*P1Q1*P1Q2)+
44122      &640*A12*P1Q1*P2Q1/(3*P1Q2)+544*A1*A2*P1Q1*P2Q1/(3*P1Q2)+
44123      &32*A12*P1Q2*P2Q1/P1Q1+944*A1*A2*P1Q2*P2Q1/(3*P1Q1)+
44124      &128*A2*MB**4/(3*P2Q2**2)+128*A2*MB**3*MT/(3*P2Q2**2)-
44125      &256*A2**2*MB**5*MT/(3*P2Q2**2)+256*A2*MB**2*P1P2/(3*P2Q2**2)-
44126      &256*A2**2*MB**4*P1P2/(3*P2Q2**2)-
44127      &64*MB**3*MT**3/(3*P1Q1**2*P2Q2**2)-
44128      &64*MB**2*MT**2*P1P2/(3*P1Q1**2*P2Q2**2)+
44129      &64*MB**3*MT/(3*P1Q1*P2Q2**2)+
44130      &256*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q2**2)+
44131      &256*A2*MB**2*P1P2**2/(3*P1Q1*P2Q2**2)-
44132      &256*A2**2*MB**4*P1Q1/(3*P2Q2**2)+256*A2*MB**2*P1Q2/(3*P2Q2**2)-
44133      &256*A2**2*MB**4*P1Q2/(3*P2Q2**2)-
44134      &64*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2**2)+
44135      &256*A2*MB**3*MT*P1Q2/(3*P1Q1*P2Q2**2)+
44136      &512*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2**2)
44137       V18=V18+256*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2**2)-
44138      &256*A2*MB**2*P2Q1/(3*P2Q2**2)-256*A2**2*MB**3*MT*P2Q1/(3*P2Q2**2)+
44139      &64*MB**2*MT**2*P2Q1/(3*P1Q1**2*P2Q2**2)+
44140      &64*MB**2*P2Q1/(3*P1Q1*P2Q2**2)-
44141      &128*A2*MB**3*MT*P2Q1/(3*P1Q1*P2Q2**2)-
44142      &128*A2*MB**2*MT**2*P2Q1/(3*P1Q1*P2Q2**2)-
44143      &256*A2*MB**2*P1P2*P2Q1/(3*P1Q1*P2Q2**2)+
44144      &256*A2**2*MB**2*P1Q1*P2Q1/(3*P2Q2**2)-
44145      &256*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2**2)-8/(3*P2Q2)-
44146      &72*A1*MB**2/P2Q2-88*A2*MB**2/(3*P2Q2)+56*A1*MB*MT/(3*P2Q2)+
44147      &32*A2*MB*MT/P2Q2+224*A1*A2*MB**3*MT/(3*P2Q2)-
44148      &704*A2**2*MB**3*MT/(3*P2Q2)-48*A1*P1P2/P2Q2-
44149      &104*A2*P1P2/(3*P2Q2)+448*A1*A2*MB**2*P1P2/(3*P2Q2)-
44150      &512*A2**2*MB**2*P1P2/(3*P2Q2)-128*A1*A2*MB*MT*P1P2/(3*P2Q2)+
44151      &32*A1*A2*P1P2**2/P2Q2-64*MB*MT**3/(3*P1Q1**2*P2Q2)-
44152      &256*A1*MB*MT**3*P1P2/(3*P1Q1**2*P2Q2)-
44153      &256*A1*MT**2*P1P2**2/(3*P1Q1**2*P2Q2)-4*MB**2/(3*P1Q1*P2Q2)
44154       V18=V18+64*MB*MT/(3*P1Q1*P2Q2)-128*A2*MB**3*MT/(3*P1Q1*P2Q2)-
44155      &4*MT**2/(3*P1Q1*P2Q2)-128*A1*MB**2*MT**2/(3*P1Q1*P2Q2)-
44156      &128*A2*MB**2*MT**2/(3*P1Q1*P2Q2)-128*A1*MB*MT**3/(3*P1Q1*P2Q2)-
44157      &112*A2*MB**2*P1P2/(3*P1Q1*P2Q2)-32*A1*MB*MT*P1P2/(3*P1Q1*P2Q2)-
44158      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q2)-112*A1*MT**2*P1P2/(3*P1Q1*P2Q2)-
44159      &48*A1*P1P2**2/(P1Q1*P2Q2)-48*A2*P1P2**2/(P1Q1*P2Q2)+
44160      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q2)+
44161      &512*A1*A2*P1P2**3/(3*P1Q1*P2Q2)+16*A2*P1Q1/(3*P2Q2)+
44162      &64*A1*A2*MB**2*P1Q1/P2Q2+32*A2**2*MB**2*P1Q1/(3*P2Q2)+
44163      &112*A1*A2*MB*MT*P1Q1/(3*P2Q2)+368*A1*A2*P1P2*P1Q1/(3*P2Q2)-
44164      &16*P1P2/(3*P1Q2*P2Q2)-32*A1*MB*MT*P1P2/(3*P1Q2*P2Q2)-
44165      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q2)-
44166      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q2)-
44167      &64*A1*A2*P1P2**3/(3*P1Q2*P2Q2)-8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q2)-
44168      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q2)+
44169      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q2)-
44170      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q2)
44171       V18=V18+32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q2)+
44172      &32*A2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
44173      &32*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
44174      &32*A1*A2*MB*MT*P1P2*P1Q1/(3*P1Q2*P2Q2)-
44175      &64*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q2)-256*A2*P1Q2/(3*P2Q2)+
44176      &448*A1*A2*MB**2*P1Q2/(3*P2Q2)-368*A2**2*MB**2*P1Q2/(3*P2Q2)+
44177      &224*A1*A2*MB*MT*P1Q2/(3*P2Q2)+304*A1*A2*P1P2*P1Q2/(3*P2Q2)+
44178      &64*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
44179      &128*A1*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
44180      &128*A1*MB*MT**3*P1Q2/(3*P1Q1**2*P2Q2)-
44181      &256*A1*MT**2*P1P2*P1Q2/(3*P1Q1**2*P2Q2)+8*P1Q2/(3*P1Q1*P2Q2)-
44182      &160*A1*MB**2*P1Q2/(3*P1Q1*P2Q2)-272*A2*MB**2*P1Q2/(3*P1Q1*P2Q2)+
44183      &56*A1*MB*MT*P1Q2/(3*P1Q1*P2Q2)+200*A2*MB*MT*P1Q2/(3*P1Q1*P2Q2)-
44184      &48*A1*P1P2*P1Q2/(P1Q1*P2Q2)-256*A2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
44185      &256*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
44186      &256*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2)+
44187      &1024*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q2)
44188       V18=V18-272*A2*P1Q2**2/(3*P1Q1*P2Q2)+
44189      &256*A1*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2)+
44190      &256*A1*A2*MB*MT*P1Q2**2/(3*P1Q1*P2Q2)+
44191      &512*A1*A2*P1P2*P1Q2**2/(3*P1Q1*P2Q2)-32*A2*MB**4/(3*P2Q1*P2Q2)-
44192      &32*A2*MB**3*MT/(3*P2Q1*P2Q2)+64*A2**2*MB**5*MT/(3*P2Q1*P2Q2)+
44193      &16*P1P2/(3*P2Q1*P2Q2)-64*A2*MB**2*P1P2/(3*P2Q1*P2Q2)+
44194      &64*A2**2*MB**4*P1P2/(3*P2Q1*P2Q2)+8*MB**2*P1P2/(3*P1Q1*P2Q1*P2Q2)+
44195      &8*MB*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)-
44196      &32*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
44197      &16*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
44198      &32*A2*MB**2*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
44199      &16*A2*MB**2*P1Q1/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q1/(3*P2Q1*P2Q2)+
44200      &8*MB**2*P1P2/(3*P1Q2*P2Q1*P2Q2)+8*MB*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)-
44201      &32*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
44202      &16*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
44203      &32*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1*P2Q2)+
44204      &16*MB*MT*P1P2**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
44205       V18=V18+16*P1P2**3/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44206      &32*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1*P2Q2)-
44207      &16*A2*MB**2*P1Q2/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q2/(3*P2Q1*P2Q2)-
44208      &32*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1*P2Q2)+272*A1*P2Q1/(3*P2Q2)+
44209      &112*A2*P2Q1/P2Q2-80*A1*A2*MB**2*P2Q1/P2Q2-
44210      &400*A1*A2*MB*MT*P2Q1/(3*P2Q2)+208*A2**2*MB*MT*P2Q1/(3*P2Q2)-
44211      &272*A1*A2*MT**2*P2Q1/(3*P2Q2)-320*A1*A2*P1P2*P2Q1/P2Q2+
44212      &96*A2**2*P1P2*P2Q1/P2Q2+256*A1*MB*MT**3*P2Q1/(3*P1Q1**2*P2Q2)+
44213      &512*A1*MT**2*P1P2*P2Q1/(3*P1Q1**2*P2Q2)-8*P2Q1/(3*P1Q1*P2Q2)-
44214      &200*A1*MB*MT*P2Q1/(3*P1Q1*P2Q2)-56*A2*MB*MT*P2Q1/(3*P1Q1*P2Q2)+
44215      &272*A1*MT**2*P2Q1/(3*P1Q1*P2Q2)+160*A2*MT**2*P2Q1/(3*P1Q1*P2Q2)+
44216      &256*A1*P1P2*P2Q1/(3*P1Q1*P2Q2)+48*A2*P1P2*P2Q1/(P1Q1*P2Q2)-
44217      &256*A1*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2)-
44218      &256*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q1*P2Q2)-
44219      &1024*A1*A2*P1P2**2*P2Q1/(3*P1Q1*P2Q2)-
44220      &544*A1*A2*P1Q1*P2Q1/(3*P2Q2)-640*A2**2*P1Q1*P2Q1/(3*P2Q2)-
44221      &32*A1*P1P2*P2Q1/(3*P1Q2*P2Q2)
44222       V18=V18+32*A1*A2*MB*MT*P1P2*P2Q1/(3*P1Q2*P2Q2)+
44223      &32*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q2*P2Q2)+
44224      &64*A1*A2*P1P2**2*P2Q1/(3*P1Q2*P2Q2)-
44225      &32*A1*MT**2*P1P2*P2Q1/(3*P1Q1*P1Q2*P2Q2)+
44226      &64*A1*A2*P1P2*P1Q1*P2Q1/(3*P1Q2*P2Q2)-
44227      &944*A1*A2*P1Q2*P2Q1/(3*P2Q2)-32*A2**2*P1Q2*P2Q1/P2Q2+
44228      &256*A1*MT**2*P1Q2*P2Q1/(3*P1Q1**2*P2Q2)+
44229      &96*A1*P1Q2*P2Q1/(P1Q1*P2Q2)+96*A2*P1Q2*P2Q1/(P1Q1*P2Q2)-
44230      &128*A1*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
44231      &256*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2)-
44232      &128*A1*A2*MT**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
44233      &512*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2)-
44234      &512*A1*A2*P1Q2**2*P2Q1/(3*P1Q1*P2Q2)+544*A1*A2*P2Q1**2/(3*P2Q2)-
44235      &256*A1*MT**2*P2Q1**2/(3*P1Q1**2*P2Q2)-
44236      &272*A1*P2Q1**2/(3*P1Q1*P2Q2)+
44237      &256*A1*A2*MB*MT*P2Q1**2/(3*P1Q1*P2Q2)+
44238      &256*A1*A2*MT**2*P2Q1**2/(3*P1Q1*P2Q2)
44239       V18=V18+512*A1*A2*P1P2*P2Q1**2/(3*P1Q1*P2Q2)+
44240      &512*A1*A2*P1Q2*P2Q1**2/(3*P1Q1*P2Q2)+224*A12*P2Q2+
44241      &656*A1*A2*P2Q2/3+256*A12*MT**4*P2Q2/(3*P1Q1**2)+
44242      &16*A1*P2Q2/(3*P1Q1)+112*A1*A2*MB*MT*P2Q2/(3*P1Q1)+
44243      &32*A12*MT**2*P2Q2/(3*P1Q1)+64*A1*A2*MT**2*P2Q2/P1Q1+
44244      &368*A1*A2*P1P2*P2Q2/(3*P1Q1)-256*A1*MT**2*P2Q2/(3*P1Q2**2)+
44245      &256*A12*MT**4*P2Q2/(3*P1Q2**2)-256*A1*P2Q2/(3*P1Q2)+
44246      &224*A1*A2*MB*MT*P2Q2/(3*P1Q2)-368*A12*MT**2*P2Q2/(3*P1Q2)+
44247      &448*A1*A2*MT**2*P2Q2/(3*P1Q2)+304*A1*A2*P1P2*P2Q2/(3*P1Q2)+
44248      &16*A1*MT**2*P2Q2/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q2/(3*P1Q1*P1Q2)+
44249      &32*A12*P1Q1*P2Q2/P1Q2+944*A1*A2*P1Q1*P2Q2/(3*P1Q2)+
44250      &256*A12*MT**2*P1Q2*P2Q2/(3*P1Q1**2)+
44251      &640*A12*P1Q2*P2Q2/(3*P1Q1)+544*A1*A2*P1Q2*P2Q2/(3*P1Q1)-
44252      &256*A2*MB**2*P2Q2/(3*P2Q1**2)-256*A2**2*MB**3*MT*P2Q2/(3*P2Q1**2)+
44253      &64*MB**2*MT**2*P2Q2/(3*P1Q2**2*P2Q1**2)+
44254      &64*MB**2*P2Q2/(3*P1Q2*P2Q1**2)-
44255      &128*A2*MB**3*MT*P2Q2/(3*P1Q2*P2Q1**2)
44256       V18=V18-128*A2*MB**2*MT**2*P2Q2/(3*P1Q2*P2Q1**2)-
44257      &256*A2*MB**2*P1P2*P2Q2/(3*P1Q2*P2Q1**2)-
44258      &256*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1**2)+
44259      &256*A2**2*MB**2*P1Q2*P2Q2/(3*P2Q1**2)+272*A1*P2Q2/(3*P2Q1)+
44260      &112*A2*P2Q2/P2Q1-80*A1*A2*MB**2*P2Q2/P2Q1-
44261      &400*A1*A2*MB*MT*P2Q2/(3*P2Q1)+208*A2**2*MB*MT*P2Q2/(3*P2Q1)-
44262      &272*A1*A2*MT**2*P2Q2/(3*P2Q1)-320*A1*A2*P1P2*P2Q2/P2Q1+
44263      &96*A2**2*P1P2*P2Q2/P2Q1-32*A1*P1P2*P2Q2/(3*P1Q1*P2Q1)+
44264      &32*A1*A2*MB*MT*P1P2*P2Q2/(3*P1Q1*P2Q1)+
44265      &32*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q1*P2Q1)+
44266      &64*A1*A2*P1P2**2*P2Q2/(3*P1Q1*P2Q1)-944*A1*A2*P1Q1*P2Q2/(3*P2Q1)-
44267      &32*A2**2*P1Q1*P2Q2/P2Q1+256*A1*MB*MT**3*P2Q2/(3*P1Q2**2*P2Q1)+
44268      &512*A1*MT**2*P1P2*P2Q2/(3*P1Q2**2*P2Q1)+
44269      &256*A1*MT**2*P1Q1*P2Q2/(3*P1Q2**2*P2Q1)-8*P2Q2/(3*P1Q2*P2Q1)-
44270      &200*A1*MB*MT*P2Q2/(3*P1Q2*P2Q1)-56*A2*MB*MT*P2Q2/(3*P1Q2*P2Q1)+
44271      &272*A1*MT**2*P2Q2/(3*P1Q2*P2Q1)+160*A2*MT**2*P2Q2/(3*P1Q2*P2Q1)+
44272      &256*A1*P1P2*P2Q2/(3*P1Q2*P2Q1)+48*A2*P1P2*P2Q2/(P1Q2*P2Q1)
44273       V18=V18-256*A1*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1)-
44274      &256*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q2*P2Q1)-
44275      &1024*A1*A2*P1P2**2*P2Q2/(3*P1Q2*P2Q1)-
44276      &32*A1*MT**2*P1P2*P2Q2/(3*P1Q1*P1Q2*P2Q1)+
44277      &96*A1*P1Q1*P2Q2/(P1Q2*P2Q1)+96*A2*P1Q1*P2Q2/(P1Q2*P2Q1)-
44278      &128*A1*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
44279      &256*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1)-
44280      &128*A1*A2*MT**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
44281      &512*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1)-
44282      &512*A1*A2*P1Q1**2*P2Q2/(3*P1Q2*P2Q1)-544*A1*A2*P1Q2*P2Q2/(3*P2Q1)-
44283      &640*A2**2*P1Q2*P2Q2/(3*P2Q1)+
44284      &64*A1*A2*P1P2*P1Q2*P2Q2/(3*P1Q1*P2Q1)+544*A1*A2*P2Q2**2/(3*P2Q1)-
44285      &256*A1*MT**2*P2Q2**2/(3*P1Q2**2*P2Q1)-
44286      &272*A1*P2Q2**2/(3*P1Q2*P2Q1)+
44287      &256*A1*A2*MB*MT*P2Q2**2/(3*P1Q2*P2Q1)+
44288      &256*A1*A2*MT**2*P2Q2**2/(3*P1Q2*P2Q1)+
44289      &512*A1*A2*P1P2*P2Q2**2/(3*P1Q2*P2Q1)
44290       V18=V18+512*A1*A2*P1Q1*P2Q2**2/(3*P1Q2*P2Q1)+
44291      &384*A12*MB*MT*P1Q1**2/S**2+
44292      &384*A12*P1P2*P1Q1**2/S**2+2688*A12*MB*MT*P1Q1*P1Q2/S**2+
44293      &2688*A12*P1P2*P1Q1*P1Q2/S**2+384*A12*MB*MT*P1Q2**2/S**2+
44294      &384*A12*P1P2*P1Q2**2/S**2+768*A1*A2*MB*MT*P1Q1*P2Q1/S**2+
44295      &768*A1*A2*P1P2*P1Q1*P2Q1/S**2+2688*A1*A2*MB*MT*P1Q2*P2Q1/S**2+
44296      &2688*A1*A2*P1P2*P1Q2*P2Q1/S**2-960*A12*P1Q1*P1Q2*P2Q1/S**2-
44297      &960*A1*A2*P1Q1*P1Q2*P2Q1/S**2+960*A12*P1Q2**2*P2Q1/S**2+
44298      &960*A1*A2*P1Q2**2*P2Q1/S**2+384*A2**2*MB*MT*P2Q1**2/S**2+
44299      &384*A2**2*P1P2*P2Q1**2/S**2-960*A1*A2*P1Q2*P2Q1**2/S**2-
44300      &960*A2**2*P1Q2*P2Q1**2/S**2+2688*A1*A2*MB*MT*P1Q1*P2Q2/S**2+
44301      &2688*A1*A2*P1P2*P1Q1*P2Q2/S**2+960*A12*P1Q1**2*P2Q2/S**2+
44302      &960*A1*A2*P1Q1**2*P2Q2/S**2+768*A1*A2*MB*MT*P1Q2*P2Q2/S**2+
44303      &768*A1*A2*P1P2*P1Q2*P2Q2/S**2-960*A12*P1Q1*P1Q2*P2Q2/S**2-
44304      &960*A1*A2*P1Q1*P1Q2*P2Q2/S**2+2688*A2**2*MB*MT*P2Q1*P2Q2/S**2+
44305      &2688*A2**2*P1P2*P2Q1*P2Q2/S**2+960*A1*A2*P1Q1*P2Q1*P2Q2/S**2+
44306      &960*A2**2*P1Q1*P2Q1*P2Q2/S**2+960*A1*A2*P1Q2*P2Q1*P2Q2/S**2+
44307      &960*A2**2*P1Q2*P2Q1*P2Q2/S**2+384*A2**2*MB*MT*P2Q2**2/S**2
44308       V18=V18+384*A2**2*P1P2*P2Q2**2/S**2-960*A1*A2*P1Q1*P2Q2**2/S**2-
44309      &960*A2**2*P1Q1*P2Q2**2/S**2+96*A1*MB*MT/S+96*A2*MB*MT/S-
44310      &768*A2**2*MB**3*MT/S-768*A12*MB*MT**3/S-192*A1*P1P2/S-
44311      &192*A2*P1P2/S-768*A2**2*MB**2*P1P2/S-2304*A1*A2*MB*MT*P1P2/S-
44312      &768*A12*MT**2*P1P2/S-2304*A1*A2*P1P2**2/S-
44313      &96*A1*MB*MT**3/(P1Q1*S)-192*A2*MB*MT*P1P2/(P1Q1*S)-
44314      &96*A1*MT**2*P1P2/(P1Q1*S)-192*A2*P1P2**2/(P1Q1*S)-192*A1*P1Q1/S-
44315      &144*A2*P1Q1/S-384*A1*A2*MB**2*P1Q1/S-480*A2**2*MB**2*P1Q1/S-
44316      &480*A12*MB*MT*P1Q1/S+96*A1*A2*MB*MT*P1Q1/S-
44317      &864*A12*P1P2*P1Q1/S-672*A1*A2*P1P2*P1Q1/S-96*A1*A2*P1Q1**2/S-
44318      &96*A1*MB*MT**3/(P1Q2*S)-192*A2*MB*MT*P1P2/(P1Q2*S)-
44319      &96*A1*MT**2*P1P2/(P1Q2*S)-192*A2*P1P2**2/(P1Q2*S)-
44320      &48*A1*MB*MT*P1Q1/(P1Q2*S)+96*A2*MB*MT*P1Q1/(P1Q2*S)-
44321      &48*A1*MT**2*P1Q1/(P1Q2*S)-192*A1*P1P2*P1Q1/(P1Q2*S)-
44322      &192*A2*P1P2*P1Q1/(P1Q2*S)+192*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*S)+
44323      &192*A1*A2*P1P2**2*P1Q1/(P1Q2*S)-192*A1*P1Q1**2/(P1Q2*S)-
44324      &192*A2*P1Q1**2/(P1Q2*S)+192*A1*A2*MB**2*P1Q1**2/(P1Q2*S)
44325       V18=V18-192*A12*MB*MT*P1Q1**2/(P1Q2*S)+
44326      &96*A1*A2*MB*MT*P1Q1**2/(P1Q2*S)+
44327      &192*A1*A2*P1P2*P1Q1**2/(P1Q2*S)-192*A1*P1Q2/S-144*A2*P1Q2/S-
44328      &384*A1*A2*MB**2*P1Q2/S-480*A2**2*MB**2*P1Q2/S-
44329      &480*A12*MB*MT*P1Q2/S+96*A1*A2*MB*MT*P1Q2/S-
44330      &864*A12*P1P2*P1Q2/S-672*A1*A2*P1P2*P1Q2/S-
44331      &48*A1*MB*MT*P1Q2/(P1Q1*S)+96*A2*MB*MT*P1Q2/(P1Q1*S)-
44332      &48*A1*MT**2*P1Q2/(P1Q1*S)-192*A1*P1P2*P1Q2/(P1Q1*S)-
44333      &192*A2*P1P2*P1Q2/(P1Q1*S)+192*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*S)+
44334      &192*A1*A2*P1P2**2*P1Q2/(P1Q1*S)-576*A1*A2*P1Q1*P1Q2/S-
44335      &96*A1*A2*P1Q2**2/S-192*A1*P1Q2**2/(P1Q1*S)-
44336      &192*A2*P1Q2**2/(P1Q1*S)+192*A1*A2*MB**2*P1Q2**2/(P1Q1*S)-
44337      &192*A12*MB*MT*P1Q2**2/(P1Q1*S)+96*A1*A2*MB*MT*P1Q2**2/(P1Q1*S)+
44338      &192*A1*A2*P1P2*P1Q2**2/(P1Q1*S)+96*A2*MB**3*MT/(P2Q1*S)+
44339      &96*A2*MB**2*P1P2/(P2Q1*S)+192*A1*MB*MT*P1P2/(P2Q1*S)+
44340      &192*A1*P1P2**2/(P2Q1*S)+96*A1*MB**2*P1Q1/(P2Q1*S)+
44341      &192*A2*MB**2*P1Q1/(P2Q1*S)+96*A1*MB*MT*P1Q1/(P2Q1*S)+
44342      &192*A1*A2*MB**3*MT*P1Q1/(P2Q1*S)+192*A1*P1P2*P1Q1/(P2Q1*S)
44343       V18=V18+192*A1*A2*MB**2*P1P2*P1Q1/(P2Q1*S)+
44344      &96*A1*A2*MB**2*P1Q1**2/(P2Q1*S)+
44345      &192*A2*MB**3*MT*P1Q1/(P1Q2*P2Q1*S)+
44346      &192*A2*MB**2*P1P2*P1Q1/(P1Q2*P2Q1*S)+
44347      &96*A1*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1*S)+
44348      &96*A1*P1P2**2*P1Q1/(P1Q2*P2Q1*S)+
44349      &96*A1*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
44350      &192*A2*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
44351      &48*A1*MB*MT*P1Q1**2/(P1Q2*P2Q1*S)+
44352      &96*A1*P1P2*P1Q1**2/(P1Q2*P2Q1*S)+96*A1*MB**2*P1Q2/(P2Q1*S)+
44353      &48*A2*MB**2*P1Q2/(P2Q1*S)-192*A1*A2*MB**3*MT*P1Q2/(P2Q1*S)-
44354      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q1*S)-
44355      &96*A1*A2*MB**2*P1Q2**2/(P2Q1*S)+144*A1*P2Q1/S+192*A2*P2Q1/S-
44356      &96*A1*A2*MB*MT*P2Q1/S+480*A2**2*MB*MT*P2Q1/S+
44357      &480*A12*MT**2*P2Q1/S+384*A1*A2*MT**2*P2Q1/S+
44358      &672*A1*A2*P1P2*P2Q1/S+864*A2**2*P1P2*P2Q1/S+
44359      &96*A2*MB*MT*P2Q1/(P1Q1*S)+192*A1*MT**2*P2Q1/(P1Q1*S)
44360       V18=V18+96*A2*MT**2*P2Q1/(P1Q1*S)+
44361      &192*A1*A2*MB*MT**3*P2Q1/(P1Q1*S)+
44362      &192*A2*P1P2*P2Q1/(P1Q1*S)+192*A1*A2*MT**2*P1P2*P2Q1/(P1Q1*S)-
44363      &192*A12*P1Q1*P2Q1/S-192*A2**2*P1Q1*P2Q1/S+
44364      &48*A1*MT**2*P2Q1/(P1Q2*S)+96*A2*MT**2*P2Q1/(P1Q2*S)-
44365      &192*A1*A2*MB*MT**3*P2Q1/(P1Q2*S)-
44366      &192*A1*A2*MT**2*P1P2*P2Q1/(P1Q2*S)-
44367      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P1Q2*S)-
44368      &192*A12*MT**2*P1Q1*P2Q1/(P1Q2*S)-
44369      &96*A1*A2*MT**2*P1Q1*P2Q1/(P1Q2*S)-
44370      &384*A1*A2*P1P2*P1Q1*P2Q1/(P1Q2*S)-384*A12*P1Q1**2*P2Q1/(P1Q2*S)-
44371      &384*A1*A2*P1Q1**2*P2Q1/(P1Q2*S)-480*A12*P1Q2*P2Q1/S-
44372      &960*A1*A2*P1Q2*P2Q1/S-480*A2**2*P1Q2*P2Q1/S+
44373      &144*A1*P1Q2*P2Q1/(P1Q1*S)+96*A2*P1Q2*P2Q1/(P1Q1*S)-
44374      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*S)-
44375      &96*A12*MT**2*P1Q2*P2Q1/(P1Q1*S)+
44376      &96*A1*A2*MT**2*P1Q2*P2Q1/(P1Q1*S)-
44377      &576*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*S)-192*A12*P1Q2**2*P2Q1/(P1Q1*S)
44378       V18=V18-384*A1*A2*P1Q2**2*P2Q1/(P1Q1*S)-96*A1*A2*P2Q1**2/S-
44379      &96*A1*A2*MT**2*P2Q1**2/(P1Q1*S)+96*A1*A2*MT**2*P2Q1**2/(P1Q2*S)+
44380      &288*A1*A2*P1Q2*P2Q1**2/(P1Q1*S)+96*A2*MB**3*MT/(P2Q2*S)+
44381      &96*A2*MB**2*P1P2/(P2Q2*S)+192*A1*MB*MT*P1P2/(P2Q2*S)+
44382      &192*A1*P1P2**2/(P2Q2*S)+96*A1*MB**2*P1Q1/(P2Q2*S)+
44383      &48*A2*MB**2*P1Q1/(P2Q2*S)-192*A1*A2*MB**3*MT*P1Q1/(P2Q2*S)-
44384      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q2*S)-
44385      &96*A1*A2*MB**2*P1Q1**2/(P2Q2*S)+96*A1*MB**2*P1Q2/(P2Q2*S)+
44386      &192*A2*MB**2*P1Q2/(P2Q2*S)+96*A1*MB*MT*P1Q2/(P2Q2*S)+
44387      &192*A1*A2*MB**3*MT*P1Q2/(P2Q2*S)+192*A1*P1P2*P1Q2/(P2Q2*S)+
44388      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q2*S)+
44389      &192*A2*MB**3*MT*P1Q2/(P1Q1*P2Q2*S)+
44390      &192*A2*MB**2*P1P2*P1Q2/(P1Q1*P2Q2*S)+
44391      &96*A1*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2*S)+
44392      &96*A1*P1P2**2*P1Q2/(P1Q1*P2Q2*S)+96*A1*A2*MB**2*P1Q2**2/(P2Q2*S)+
44393      &96*A1*MB**2*P1Q2**2/(P1Q1*P2Q2*S)+
44394      &192*A2*MB**2*P1Q2**2/(P1Q1*P2Q2*S)
44395       V18=V18+48*A1*MB*MT*P1Q2**2/(P1Q1*P2Q2*S)+
44396      &96*A1*P1P2*P1Q2**2/(P1Q1*P2Q2*S)-48*A2*MB**2*P2Q1/(P2Q2*S)+
44397      &96*A1*MB*MT*P2Q1/(P2Q2*S)-48*A2*MB*MT*P2Q1/(P2Q2*S)-
44398      &192*A1*P1P2*P2Q1/(P2Q2*S)-192*A2*P1P2*P2Q1/(P2Q2*S)+
44399      &192*A1*A2*MB*MT*P1P2*P2Q1/(P2Q2*S)+
44400      &192*A1*A2*P1P2**2*P2Q1/(P2Q2*S)-
44401      &192*A1*MB*MT**3*P2Q1/(P1Q1*P2Q2*S)-
44402      &96*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2*S)-
44403      &192*A1*MT**2*P1P2*P2Q1/(P1Q1*P2Q2*S)-
44404      &96*A2*P1P2**2*P2Q1/(P1Q1*P2Q2*S)+
44405      &96*A1*A2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
44406      &192*A2**2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
44407      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P2Q2*S)+
44408      &384*A1*A2*P1P2*P1Q1*P2Q1/(P2Q2*S)-96*A1*P1Q2*P2Q1/(P2Q2*S)-
44409      &144*A2*P1Q2*P2Q1/(P2Q2*S)-96*A1*A2*MB**2*P1Q2*P2Q1/(P2Q2*S)+
44410      &96*A2**2*MB**2*P1Q2*P2Q1/(P2Q2*S)+
44411      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P2Q2*S)
44412       V18=V18+576*A1*A2*P1P2*P1Q2*P2Q1/(P2Q2*S)-
44413      &96*A2*MB**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
44414      &48*A1*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
44415      &48*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
44416      &96*A1*MT**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
44417      &96*A1*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
44418      &96*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
44419      &96*A1*A2*P1Q1*P1Q2*P2Q1/(P2Q2*S)+288*A1*A2*P1Q2**2*P2Q1/(P2Q2*S)-
44420      &96*A1*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)-96*A2*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)+
44421      &192*A1*P2Q1**2/(P2Q2*S)+192*A2*P2Q1**2/(P2Q2*S)-
44422      &96*A1*A2*MB*MT*P2Q1**2/(P2Q2*S)+192*A2**2*MB*MT*P2Q1**2/(P2Q2*S)-
44423      &192*A1*A2*MT**2*P2Q1**2/(P2Q2*S)-192*A1*A2*P1P2*P2Q1**2/(P2Q2*S)+
44424      &48*A2*MB*MT*P2Q1**2/(P1Q1*P2Q2*S)+
44425      &192*A1*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
44426      &96*A2*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
44427      &96*A2*P1P2*P2Q1**2/(P1Q1*P2Q2*S)-384*A1*A2*P1Q1*P2Q1**2/(P2Q2*S)-
44428      &384*A2**2*P1Q1*P2Q1**2/(P2Q2*S)-384*A1*A2*P1Q2*P2Q1**2/(P2Q2*S)
44429       V18=V18-192*A2**2*P1Q2*P2Q1**2/(P2Q2*S)+
44430      &96*A1*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+
44431      &96*A2*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+144*A1*P2Q2/S+192*A2*P2Q2/S-
44432      &96*A1*A2*MB*MT*P2Q2/S+480*A2**2*MB*MT*P2Q2/S+
44433      &480*A12*MT**2*P2Q2/S+384*A1*A2*MT**2*P2Q2/S+
44434      &672*A1*A2*P1P2*P2Q2/S+864*A2**2*P1P2*P2Q2/S+
44435      &48*A1*MT**2*P2Q2/(P1Q1*S)+96*A2*MT**2*P2Q2/(P1Q1*S)-
44436      &192*A1*A2*MB*MT**3*P2Q2/(P1Q1*S)-
44437      &192*A1*A2*MT**2*P1P2*P2Q2/(P1Q1*S)-480*A12*P1Q1*P2Q2/S-
44438      &960*A1*A2*P1Q1*P2Q2/S-480*A2**2*P1Q1*P2Q2/S+
44439      &96*A2*MB*MT*P2Q2/(P1Q2*S)+192*A1*MT**2*P2Q2/(P1Q2*S)+
44440      &96*A2*MT**2*P2Q2/(P1Q2*S)+192*A1*A2*MB*MT**3*P2Q2/(P1Q2*S)+
44441      &192*A2*P1P2*P2Q2/(P1Q2*S)+192*A1*A2*MT**2*P1P2*P2Q2/(P1Q2*S)+
44442      &144*A1*P1Q1*P2Q2/(P1Q2*S)+96*A2*P1Q1*P2Q2/(P1Q2*S)-
44443      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*S)-
44444      &96*A12*MT**2*P1Q1*P2Q2/(P1Q2*S)+
44445      &96*A1*A2*MT**2*P1Q1*P2Q2/(P1Q2*S)
44446       V18=V18-576*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*S)-
44447      &192*A12*P1Q1**2*P2Q2/(P1Q2*S)-
44448      &384*A1*A2*P1Q1**2*P2Q2/(P1Q2*S)-192*A12*P1Q2*P2Q2/S-
44449      &192*A2**2*P1Q2*P2Q2/S-96*A1*A2*MB*MT*P1Q2*P2Q2/(P1Q1*S)-
44450      &192*A12*MT**2*P1Q2*P2Q2/(P1Q1*S)-
44451      &96*A1*A2*MT**2*P1Q2*P2Q2/(P1Q1*S)-
44452      &384*A1*A2*P1P2*P1Q2*P2Q2/(P1Q1*S)-384*A12*P1Q2**2*P2Q2/(P1Q1*S)-
44453      &384*A1*A2*P1Q2**2*P2Q2/(P1Q1*S)-48*A2*MB**2*P2Q2/(P2Q1*S)+
44454      &96*A1*MB*MT*P2Q2/(P2Q1*S)-48*A2*MB*MT*P2Q2/(P2Q1*S)-
44455      &192*A1*P1P2*P2Q2/(P2Q1*S)-192*A2*P1P2*P2Q2/(P2Q1*S)+
44456      &192*A1*A2*MB*MT*P1P2*P2Q2/(P2Q1*S)+
44457      &192*A1*A2*P1P2**2*P2Q2/(P2Q1*S)-96*A1*P1Q1*P2Q2/(P2Q1*S)-
44458      &144*A2*P1Q1*P2Q2/(P2Q1*S)-96*A1*A2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
44459      &96*A2**2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
44460      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P2Q1*S)+
44461      &576*A1*A2*P1P2*P1Q1*P2Q2/(P2Q1*S)+288*A1*A2*P1Q1**2*P2Q2/(P2Q1*S)-
44462      &192*A1*MB*MT**3*P2Q2/(P1Q2*P2Q1*S)
44463       V18=V18-96*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1*S)-
44464      &192*A1*MT**2*P1P2*P2Q2/(P1Q2*P2Q1*S)-
44465      &96*A2*P1P2**2*P2Q2/(P1Q2*P2Q1*S)-
44466      &96*A2*MB**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)+
44467      &48*A1*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)
44468  
44469       V18BIS=
44470      &48*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44471      &96*A1*MT**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44472      &96*A1*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44473      &96*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44474      &96*A1*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)-96*A2*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)+
44475      &96*A1*A2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
44476      &192*A2**2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
44477      &96*A1*A2*MB*MT*P1Q2*P2Q2/(P2Q1*S)+
44478      &384*A1*A2*P1P2*P1Q2*P2Q2/(P2Q1*S)+
44479      &96*A1*A2*P1Q1*P1Q2*P2Q2/(P2Q1*S)-576*A1*A2*P2Q1*P2Q2/S+
44480      &96*A1*A2*P1Q1*P2Q1*P2Q2/(P1Q2*S)+96*A1*A2*P1Q2*P2Q1*P2Q2/(P1Q1*S)-
44481      &96*A1*A2*P2Q2**2/S+96*A1*A2*MT**2*P2Q2**2/(P1Q1*S)-
44482      &96*A1*A2*MT**2*P2Q2**2/(P1Q2*S)+288*A1*A2*P1Q1*P2Q2**2/(P1Q2*S)+
44483      &192*A1*P2Q2**2/(P2Q1*S)+192*A2*P2Q2**2/(P2Q1*S)-
44484      &96*A1*A2*MB*MT*P2Q2**2/(P2Q1*S)+192*A2**2*MB*MT*P2Q2**2/(P2Q1*S)-
44485      &192*A1*A2*MT**2*P2Q2**2/(P2Q1*S)-192*A1*A2*P1P2*P2Q2**2/(P2Q1*S)
44486       V18BIS=V18BIS-384*A1*A2*P1Q1*P2Q2**2/(P2Q1*S)-
44487      &192*A2**2*P1Q1*P2Q2**2/(P2Q1*S)+
44488      &48*A2*MB*MT*P2Q2**2/(P1Q2*P2Q1*S)+
44489      &192*A1*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
44490      &96*A2*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
44491      &96*A2*P1P2*P2Q2**2/(P1Q2*P2Q1*S)+96*A1*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)+
44492      &96*A2*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)-384*A1*A2*P1Q2*P2Q2**2/(P2Q1*S)-
44493      &384*A2**2*P1Q2*P2Q2**2/(P2Q1*S)+512*A1*A2*S/3-
44494      &128*A1*MT**2*S/(3*P1Q1**2)-128*A12*MB*MT**3*S/(3*P1Q1**2)-
44495      &152*A1*S/(3*P1Q1)+152*A12*MB*MT*S/(3*P1Q1)+
44496      &128*A1*A2*MB*MT*S/(3*P1Q1)+112*A1*A2*MT**2*S/(3*P1Q1)-
44497      &16*A12*P1P2*S/P1Q1+152*A1*A2*P1P2*S/(3*P1Q1)-
44498      &128*A1*MT**2*S/(3*P1Q2**2)-128*A12*MB*MT**3*S/(3*P1Q2**2)-
44499      &152*A1*S/(3*P1Q2)+152*A12*MB*MT*S/(3*P1Q2)+
44500      &128*A1*A2*MB*MT*S/(3*P1Q2)+112*A1*A2*MT**2*S/(3*P1Q2)-
44501      &16*A12*P1P2*S/P1Q2+152*A1*A2*P1P2*S/(3*P1Q2)-
44502      &16*A1*MB*MT*S/(3*P1Q1*P1Q2)+32*A12*MB*MT**3*S/(3*P1Q1*P1Q2)
44503       V18BIS=V18BIS-16*A1*P1P2*S/(3*P1Q1*P1Q2)+
44504      &272*A1*A2*P1Q1*S/(3*P1Q2)+
44505      &272*A1*A2*P1Q2*S/(3*P1Q1)-128*A2*MB**2*S/(3*P2Q1**2)-
44506      &128*A2**2*MB**3*MT*S/(3*P2Q1**2)+
44507      &32*MB**2*MT**2*S/(3*P1Q2**2*P2Q1**2)+32*MB**2*S/(3*P1Q2*P2Q1**2)-
44508      &64*A2*MB**3*MT*S/(3*P1Q2*P2Q1**2)-
44509      &64*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1**2)-
44510      &128*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1**2)-
44511      &128*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1**2)+
44512      &128*A2**2*MB**2*P1Q2*S/(3*P2Q1**2)+152*A2*S/(3*P2Q1)-
44513      &112*A1*A2*MB**2*S/(3*P2Q1)-128*A1*A2*MB*MT*S/(3*P2Q1)-
44514      &152*A2**2*MB*MT*S/(3*P2Q1)-152*A1*A2*P1P2*S/(3*P2Q1)+
44515      &16*A2**2*P1P2*S/P2Q1+8*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q1)+
44516      &16*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q1)+
44517      &8*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q1)-8*A1*P1P2*S/(3*P1Q1*P2Q1)-
44518      &8*A2*P1P2*S/(3*P1Q1*P2Q1)+8*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1)+
44519      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1)
44520       V18BIS=V18BIS+8*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q1)+
44521      &32*A1*A2*P1P2**2*S/(3*P1Q1*P2Q1)-32*A2**2*P1Q1*S/(3*P2Q1)-
44522      &32*MT**2*S/(3*P1Q2**2*P2Q1)+64*A1*MB**2*MT**2*S/(3*P1Q2**2*P2Q1)+
44523      &64*A1*MB*MT**3*S/(3*P1Q2**2*P2Q1)+
44524      &128*A1*MT**2*P1P2*S/(3*P1Q2**2*P2Q1)-12*S/(P1Q2*P2Q1)+
44525      &24*A1*MB**2*S/(P1Q2*P2Q1)-64*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q1)+
44526      &24*A2*MT**2*S/(P1Q2*P2Q1)-128*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1)-
44527      &64*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q1)+56*A1*P1P2*S/(3*P1Q2*P2Q1)+
44528      &56*A2*P1P2*S/(3*P1Q2*P2Q1)-64*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1)-
44529      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1)-
44530      &64*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q1)-
44531      &256*A1*A2*P1P2**2*S/(3*P1Q2*P2Q1)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+
44532      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
44533      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+136*A2*P1Q1*S/(3*P1Q2*P2Q1)-
44534      &128*A1*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1)-
44535      &128*A1*A2*MB*MT*P1Q1*S/(3*P1Q2*P2Q1)-
44536      &256*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1)-160*A2**2*P1Q2*S/(3*P2Q1)
44537       V18BIS=V18BIS+16*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1)-
44538      &32*A12*P2Q1*S/(3*P1Q1)-
44539      &128*A12*MT**2*P2Q1*S/(3*P1Q2**2)-160*A12*P2Q1*S/(3*P1Q2)-
44540      &128*A2*MB**2*S/(3*P2Q2**2)-128*A2**2*MB**3*MT*S/(3*P2Q2**2)+
44541      &32*MB**2*MT**2*S/(3*P1Q1**2*P2Q2**2)+32*MB**2*S/(3*P1Q1*P2Q2**2)-
44542      &64*A2*MB**3*MT*S/(3*P1Q1*P2Q2**2)-
44543      &64*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2**2)-
44544      &128*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2**2)+
44545      &128*A2**2*MB**2*P1Q1*S/(3*P2Q2**2)-
44546      &128*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2**2)+152*A2*S/(3*P2Q2)-
44547      &112*A1*A2*MB**2*S/(3*P2Q2)-128*A1*A2*MB*MT*S/(3*P2Q2)-
44548      &152*A2**2*MB*MT*S/(3*P2Q2)-152*A1*A2*P1P2*S/(3*P2Q2)+
44549      &16*A2**2*P1P2*S/P2Q2-32*MT**2*S/(3*P1Q1**2*P2Q2)+
44550      &64*A1*MB**2*MT**2*S/(3*P1Q1**2*P2Q2)+
44551      &64*A1*MB*MT**3*S/(3*P1Q1**2*P2Q2)+
44552      &128*A1*MT**2*P1P2*S/(3*P1Q1**2*P2Q2)-12*S/(P1Q1*P2Q2)+
44553      &24*A1*MB**2*S/(P1Q1*P2Q2)-64*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q2)
44554       V18BIS=V18BIS+24*A2*MT**2*S/(P1Q1*P2Q2)-
44555      &128*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2)-
44556      &64*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q2)+56*A1*P1P2*S/(3*P1Q1*P2Q2)+
44557      &56*A2*P1P2*S/(3*P1Q1*P2Q2)-64*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2)-
44558      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q2)-
44559      &64*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q2)-
44560      &256*A1*A2*P1P2**2*S/(3*P1Q1*P2Q2)-160*A2**2*P1Q1*S/(3*P2Q2)+
44561      &8*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q2)+
44562      &16*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q2)+
44563      &8*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q2)-8*A1*P1P2*S/(3*P1Q2*P2Q2)-
44564      &8*A2*P1P2*S/(3*P1Q2*P2Q2)+8*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q2)+
44565      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q2)+
44566      &8*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q2)+
44567      &32*A1*A2*P1P2**2*S/(3*P1Q2*P2Q2)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
44568      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
44569      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
44570      &16*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q2)-32*A2**2*P1Q2*S/(3*P2Q2)
44571       V18BIS=V18BIS+136*A2*P1Q2*S/(3*P1Q1*P2Q2)-
44572      &128*A1*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2)-
44573      &128*A1*A2*MB*MT*P1Q2*S/(3*P1Q1*P2Q2)-
44574      &256*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q2)-16*A2*MB*MT*S/(3*P2Q1*P2Q2)+
44575      &32*A2**2*MB**3*MT*S/(3*P2Q1*P2Q2)-16*A2*P1P2*S/(3*P2Q1*P2Q2)-
44576      &4*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+8*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-
44577      &8*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-4*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
44578      &8*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1*P2Q2)-
44579      &8*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
44580      &2*MB**3*MT*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
44581      &4*MB**2*MT**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
44582      &2*MB*MT**3*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44583      &2*MB**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44584      &4*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44585      &2*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44586      &8*P1P2**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
44587      &8*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1*P2Q2)
44588       V18BIS=V18BIS+8*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1*P2Q2)+
44589      &272*A1*A2*P2Q1*S/(3*P2Q2)-
44590      &128*A1*MT**2*P2Q1*S/(3*P1Q1**2*P2Q2)-136*A1*P2Q1*S/(3*P1Q1*P2Q2)+
44591      &128*A1*A2*MB*MT*P2Q1*S/(3*P1Q1*P2Q2)+
44592      &128*A1*A2*MT**2*P2Q1*S/(3*P1Q1*P2Q2)+
44593      &256*A1*A2*P1P2*P2Q1*S/(3*P1Q1*P2Q2)-
44594      &16*A1*A2*P1P2*P2Q1*S/(3*P1Q2*P2Q2)+
44595      &8*A1*P1P2*P2Q1*S/(3*P1Q1*P1Q2*P2Q2)+
44596      &256*A1*A2*P1Q2*P2Q1*S/(3*P1Q1*P2Q2)-
44597      &128*A12*MT**2*P2Q2*S/(3*P1Q1**2)-160*A12*P2Q2*S/(3*P1Q1)-
44598      &32*A12*P2Q2*S/(3*P1Q2)+272*A1*A2*P2Q2*S/(3*P2Q1)-
44599      &16*A1*A2*P1P2*P2Q2*S/(3*P1Q1*P2Q1)-
44600      &128*A1*MT**2*P2Q2*S/(3*P1Q2**2*P2Q1)-136*A1*P2Q2*S/(3*P1Q2*P2Q1)+
44601      &128*A1*A2*MB*MT*P2Q2*S/(3*P1Q2*P2Q1)+
44602      &128*A1*A2*MT**2*P2Q2*S/(3*P1Q2*P2Q1)+
44603      &256*A1*A2*P1P2*P2Q2*S/(3*P1Q2*P2Q1)+
44604      &8*A1*P1P2*P2Q2*S/(3*P1Q1*P1Q2*P2Q1)
44605       V18BIS=V18BIS+256*A1*A2*P1Q1*P2Q2*S/(3*P1Q2*P2Q1)+
44606      &8*A12*MB*MT*S**2/(3*P1Q1*P1Q2)+16*A12*P1P2*S**2/(3*P1Q1*P1Q2)-
44607      &8*A1*A2*P1P2*S**2/(3*P1Q1*P2Q1)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1)-
44608      &8*A1*A2*P1P2*S**2/(3*P1Q2*P2Q2)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q2)+
44609      &8*A2**2*MB*MT*S**2/(3*P2Q1*P2Q2)+16*A2**2*P1P2*S**2/(3*P2Q1*P2Q2)-
44610      &4*A2*P1P2*S**2/(3*P1Q1*P2Q1*P2Q2)-
44611      &4*A2*P1P2*S**2/(3*P1Q2*P2Q1*P2Q2)+
44612      &2*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
44613 C
44614  
44615       A18 = 640*A1/3+640*A2/3+32*A1*A2*MB**2+368*A12*MB*MT+
44616      &512*A1*A2*MB*MT/3+
44617      &368*A2**2*MB*MT+32*A1*A2*MT**2+496*A12*P1P2/3+
44618      &320*A1*A2*P1P2+496*A2**2*P1P2/3-128*A1*MB*MT**3/(3*P1Q1**2)+
44619      &128*A1*MT**4/(3*P1Q1**2)+256*A12*MB*MT**5/(3*P1Q1**2)+
44620      &256*A1*MT**2*P1P2/(3*P1Q1**2)-256*A12*MT**4*P1P2/(3*P1Q1**2)+
44621      &8/(3*P1Q1)+32*A1*MB*MT/P1Q1+56*A2*MB*MT/(3*P1Q1)+
44622      &88*A1*MT**2/(3*P1Q1)+72*A2*MT**2/P1Q1-
44623      &704*A12*MB*MT**3/(3*P1Q1)+224*A1*A2*MB*MT**3/(3*P1Q1)+
44624      &104*A1*P1P2/(3*P1Q1)+48*A2*P1P2/P1Q1-
44625      &128*A1*A2*MB*MT*P1P2/(3*P1Q1)+512*A12*MT**2*P1P2/(3*P1Q1)-
44626      &448*A1*A2*MT**2*P1P2/(3*P1Q1)-32*A1*A2*P1P2**2/P1Q1-
44627      &656*A1*A2*P1Q1/3-224*A2**2*P1Q1-128*A1*MB*MT**3/(3*P1Q2**2)+
44628      &128*A1*MT**4/(3*P1Q2**2)+256*A12*MB*MT**5/(3*P1Q2**2)+
44629      &256*A1*MT**2*P1P2/(3*P1Q2**2)-256*A12*MT**4*P1P2/(3*P1Q2**2)+
44630      &256*A1*MT**2*P1Q1/(3*P1Q2**2)-256*A12*MB*MT**3*P1Q1/(3*P1Q2**2)+
44631      &8/(3*P1Q2)+32*A1*MB*MT/P1Q2+56*A2*MB*MT/(3*P1Q2)
44632       A18=A18+88*A1*MT**2/(3*P1Q2)+72*A2*MT**2/P1Q2-
44633      &704*A12*MB*MT**3/(3*P1Q2)+224*A1*A2*MB*MT**3/(3*P1Q2)+
44634      &104*A1*P1P2/(3*P1Q2)+48*A2*P1P2/P1Q2-
44635      &128*A1*A2*MB*MT*P1P2/(3*P1Q2)+512*A12*MT**2*P1P2/(3*P1Q2)-
44636      &448*A1*A2*MT**2*P1P2/(3*P1Q2)-32*A1*A2*P1P2**2/P1Q2+
44637      &32*A1*MB*MT**3/(3*P1Q1*P1Q2)-32*A1*MT**4/(3*P1Q1*P1Q2)-
44638      &64*A12*MB*MT**5/(3*P1Q1*P1Q2)+16*P1P2/(3*P1Q1*P1Q2)-
44639      &64*A1*MT**2*P1P2/(3*P1Q1*P1Q2)+64*A12*MT**4*P1P2/(3*P1Q1*P1Q2)+
44640      &112*A1*P1Q1/P1Q2+272*A2*P1Q1/(3*P1Q2)-
44641      &272*A1*A2*MB**2*P1Q1/(3*P1Q2)-208*A12*MB*MT*P1Q1/(3*P1Q2)+
44642      &400*A1*A2*MB*MT*P1Q1/(3*P1Q2)-80*A1*A2*MT**2*P1Q1/P1Q2+
44643      &96*A12*P1P2*P1Q1/P1Q2-320*A1*A2*P1P2*P1Q1/P1Q2-
44644      &544*A1*A2*P1Q1**2/(3*P1Q2)-656*A1*A2*P1Q2/3-224*A2**2*P1Q2+
44645      &256*A1*MT**2*P1Q2/(3*P1Q1**2)-256*A12*MB*MT**3*P1Q2/(3*P1Q1**2)+
44646      &112*A1*P1Q2/P1Q1+272*A2*P1Q2/(3*P1Q1)-
44647      &272*A1*A2*MB**2*P1Q2/(3*P1Q1)-208*A12*MB*MT*P1Q2/(3*P1Q1)+
44648      &400*A1*A2*MB*MT*P1Q2/(3*P1Q1)-80*A1*A2*MT**2*P1Q2/P1Q1
44649       A18=A18+96*A12*P1P2*P1Q2/P1Q1-320*A1*A2*P1P2*P1Q2/P1Q1-
44650      &544*A1*A2*P1Q2**2/(3*P1Q1)+128*A2*MB**4/(3*P2Q1**2)-
44651      &128*A2*MB**3*MT/(3*P2Q1**2)+256*A2**2*MB**5*MT/(3*P2Q1**2)+
44652      &256*A2*MB**2*P1P2/(3*P2Q1**2)-256*A2**2*MB**4*P1P2/(3*P2Q1**2)+
44653      &256*A2*MB**2*P1Q1/(3*P2Q1**2)-256*A2**2*MB**4*P1Q1/(3*P2Q1**2)+
44654      &64*MB**3*MT**3/(3*P1Q2**2*P2Q1**2)-
44655      &64*MB**2*MT**2*P1P2/(3*P1Q2**2*P2Q1**2)-
44656      &64*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1**2)-
44657      &64*MB**3*MT/(3*P1Q2*P2Q1**2)-
44658      &256*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1**2)+
44659      &256*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1**2)-
44660      &256*A2*MB**3*MT*P1Q1/(3*P1Q2*P2Q1**2)+
44661      &512*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1**2)+
44662      &256*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1**2)-
44663      &256*A2**2*MB**4*P1Q2/(3*P2Q1**2)-8/(3*P2Q1)-72*A1*MB**2/P2Q1-
44664      &88*A2*MB**2/(3*P2Q1)-56*A1*MB*MT/(3*P2Q1)-32*A2*MB*MT/P2Q1-
44665      &224*A1*A2*MB**3*MT/(3*P2Q1)+704*A2**2*MB**3*MT/(3*P2Q1)
44666       A18=A18-48*A1*P1P2/P2Q1-104*A2*P1P2/(3*P2Q1)+
44667      &448*A1*A2*MB**2*P1P2/(3*P2Q1)-512*A2**2*MB**2*P1P2/(3*P2Q1)+
44668      &128*A1*A2*MB*MT*P1P2/(3*P2Q1)+32*A1*A2*P1P2**2/P2Q1-
44669      &16*P1P2/(3*P1Q1*P2Q1)+32*A1*MB*MT*P1P2/(3*P1Q1*P2Q1)+
44670      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q1)+
44671      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q1)-
44672      &64*A1*A2*P1P2**3/(3*P1Q1*P2Q1)-256*A2*P1Q1/(3*P2Q1)+
44673      &448*A1*A2*MB**2*P1Q1/(3*P2Q1)-368*A2**2*MB**2*P1Q1/(3*P2Q1)-
44674      &224*A1*A2*MB*MT*P1Q1/(3*P2Q1)+304*A1*A2*P1P2*P1Q1/(3*P2Q1)+
44675      &64*MB*MT**3/(3*P1Q2**2*P2Q1)+
44676      &256*A1*MB*MT**3*P1P2/(3*P1Q2**2*P2Q1)-
44677      &256*A1*MT**2*P1P2**2/(3*P1Q2**2*P2Q1)+
44678      &64*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
44679      &128*A1*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1)+
44680      &128*A1*MB*MT**3*P1Q1/(3*P1Q2**2*P2Q1)-
44681      &256*A1*MT**2*P1P2*P1Q1/(3*P1Q2**2*P2Q1)-4*MB**2/(3*P1Q2*P2Q1)-
44682      &64*MB*MT/(3*P1Q2*P2Q1)+128*A2*MB**3*MT/(3*P1Q2*P2Q1)
44683       A18=A18-4*MT**2/(3*P1Q2*P2Q1)-128*A1*MB**2*MT**2/(3*P1Q2*P2Q1)-
44684      &128*A2*MB**2*MT**2/(3*P1Q2*P2Q1)+128*A1*MB*MT**3/(3*P1Q2*P2Q1)-
44685      &112*A2*MB**2*P1P2/(3*P1Q2*P2Q1)+32*A1*MB*MT*P1P2/(3*P1Q2*P2Q1)+
44686      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q1)-112*A1*MT**2*P1P2/(3*P1Q2*P2Q1)-
44687      &48*A1*P1P2**2/(P1Q2*P2Q1)-48*A2*P1P2**2/(P1Q2*P2Q1)-
44688      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q1)+
44689      &512*A1*A2*P1P2**3/(3*P1Q2*P2Q1)+8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q1)-
44690      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q1)-
44691      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q1)-
44692      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+
44693      &32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+8*P1Q1/(3*P1Q2*P2Q1)-
44694      &160*A1*MB**2*P1Q1/(3*P1Q2*P2Q1)-272*A2*MB**2*P1Q1/(3*P1Q2*P2Q1)-
44695      &56*A1*MB*MT*P1Q1/(3*P1Q2*P2Q1)-200*A2*MB*MT*P1Q1/(3*P1Q2*P2Q1)-
44696      &48*A1*P1P2*P1Q1/(P1Q2*P2Q1)-256*A2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
44697      &256*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1)-
44698      &256*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1)+
44699      &1024*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q1)
44700       A18=A18-272*A2*P1Q1**2/(3*P1Q2*P2Q1)+
44701      &256*A1*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1)-
44702      &256*A1*A2*MB*MT*P1Q1**2/(3*P1Q2*P2Q1)+
44703      &512*A1*A2*P1P2*P1Q1**2/(3*P1Q2*P2Q1)+16*A2*P1Q2/(3*P2Q1)+
44704      &64*A1*A2*MB**2*P1Q2/P2Q1+32*A2**2*MB**2*P1Q2/(3*P2Q1)-
44705      &112*A1*A2*MB*MT*P1Q2/(3*P2Q1)+368*A1*A2*P1P2*P1Q2/(3*P2Q1)+
44706      &32*A2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
44707      &32*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1)+
44708      &32*A1*A2*MB*MT*P1P2*P1Q2/(3*P1Q1*P2Q1)-
44709      &64*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q1)+224*A12*P2Q1+
44710      &656*A1*A2*P2Q1/3-256*A1*MT**2*P2Q1/(3*P1Q1**2)+
44711      &256*A12*MT**4*P2Q1/(3*P1Q1**2)-256*A1*P2Q1/(3*P1Q1)-
44712      &224*A1*A2*MB*MT*P2Q1/(3*P1Q1)-368*A12*MT**2*P2Q1/(3*P1Q1)+
44713      &448*A1*A2*MT**2*P2Q1/(3*P1Q1)+304*A1*A2*P1P2*P2Q1/(3*P1Q1)+
44714      &256*A12*MT**4*P2Q1/(3*P1Q2**2)+
44715      &256*A12*MT**2*P1Q1*P2Q1/(3*P1Q2**2)+16*A1*P2Q1/(3*P1Q2)-
44716      &112*A1*A2*MB*MT*P2Q1/(3*P1Q2)+32*A12*MT**2*P2Q1/(3*P1Q2)
44717       A18=A18+64*A1*A2*MT**2*P2Q1/P1Q2+368*A1*A2*P1P2*P2Q1/(3*P1Q2)+
44718      &16*A1*MT**2*P2Q1/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q1/(3*P1Q1*P1Q2)+
44719      &640*A12*P1Q1*P2Q1/(3*P1Q2)+544*A1*A2*P1Q1*P2Q1/(3*P1Q2)+
44720      &32*A12*P1Q2*P2Q1/P1Q1+944*A1*A2*P1Q2*P2Q1/(3*P1Q1)+
44721      &128*A2*MB**4/(3*P2Q2**2)-128*A2*MB**3*MT/(3*P2Q2**2)+
44722      &256*A2**2*MB**5*MT/(3*P2Q2**2)+256*A2*MB**2*P1P2/(3*P2Q2**2)-
44723      &256*A2**2*MB**4*P1P2/(3*P2Q2**2)+
44724      &64*MB**3*MT**3/(3*P1Q1**2*P2Q2**2)-
44725      &64*MB**2*MT**2*P1P2/(3*P1Q1**2*P2Q2**2)-
44726      &64*MB**3*MT/(3*P1Q1*P2Q2**2)-
44727      &256*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q2**2)+
44728      &256*A2*MB**2*P1P2**2/(3*P1Q1*P2Q2**2)-
44729      &256*A2**2*MB**4*P1Q1/(3*P2Q2**2)+256*A2*MB**2*P1Q2/(3*P2Q2**2)-
44730      &256*A2**2*MB**4*P1Q2/(3*P2Q2**2)-
44731      &64*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2**2)-
44732      &256*A2*MB**3*MT*P1Q2/(3*P1Q1*P2Q2**2)+
44733      &512*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2**2)
44734       A18=A18+256*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2**2)-
44735      &256*A2*MB**2*P2Q1/(3*P2Q2**2)+256*A2**2*MB**3*MT*P2Q1/(3*P2Q2**2)+
44736      &64*MB**2*MT**2*P2Q1/(3*P1Q1**2*P2Q2**2)+
44737      &64*MB**2*P2Q1/(3*P1Q1*P2Q2**2)+
44738      &128*A2*MB**3*MT*P2Q1/(3*P1Q1*P2Q2**2)-
44739      &128*A2*MB**2*MT**2*P2Q1/(3*P1Q1*P2Q2**2)-
44740      &256*A2*MB**2*P1P2*P2Q1/(3*P1Q1*P2Q2**2)+
44741      &256*A2**2*MB**2*P1Q1*P2Q1/(3*P2Q2**2)-
44742      &256*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2**2)-8/(3*P2Q2)-
44743      &72*A1*MB**2/P2Q2-88*A2*MB**2/(3*P2Q2)-56*A1*MB*MT/(3*P2Q2)-
44744      &32*A2*MB*MT/P2Q2-224*A1*A2*MB**3*MT/(3*P2Q2)+
44745      &704*A2**2*MB**3*MT/(3*P2Q2)-48*A1*P1P2/P2Q2-
44746      &104*A2*P1P2/(3*P2Q2)+448*A1*A2*MB**2*P1P2/(3*P2Q2)-
44747      &512*A2**2*MB**2*P1P2/(3*P2Q2)+128*A1*A2*MB*MT*P1P2/(3*P2Q2)+
44748      &32*A1*A2*P1P2**2/P2Q2+64*MB*MT**3/(3*P1Q1**2*P2Q2)+
44749      &256*A1*MB*MT**3*P1P2/(3*P1Q1**2*P2Q2)-
44750      &256*A1*MT**2*P1P2**2/(3*P1Q1**2*P2Q2)-4*MB**2/(3*P1Q1*P2Q2)
44751       A18=A18-64*MB*MT/(3*P1Q1*P2Q2)+128*A2*MB**3*MT/(3*P1Q1*P2Q2)-
44752      &4*MT**2/(3*P1Q1*P2Q2)-128*A1*MB**2*MT**2/(3*P1Q1*P2Q2)-
44753      &128*A2*MB**2*MT**2/(3*P1Q1*P2Q2)+128*A1*MB*MT**3/(3*P1Q1*P2Q2)-
44754      &112*A2*MB**2*P1P2/(3*P1Q1*P2Q2)+32*A1*MB*MT*P1P2/(3*P1Q1*P2Q2)+
44755      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q2)-112*A1*MT**2*P1P2/(3*P1Q1*P2Q2)-
44756      &48*A1*P1P2**2/(P1Q1*P2Q2)-48*A2*P1P2**2/(P1Q1*P2Q2)-
44757      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q2)+
44758      &512*A1*A2*P1P2**3/(3*P1Q1*P2Q2)+16*A2*P1Q1/(3*P2Q2)+
44759      &64*A1*A2*MB**2*P1Q1/P2Q2+32*A2**2*MB**2*P1Q1/(3*P2Q2)-
44760      &112*A1*A2*MB*MT*P1Q1/(3*P2Q2)+368*A1*A2*P1P2*P1Q1/(3*P2Q2)-
44761      &16*P1P2/(3*P1Q2*P2Q2)+32*A1*MB*MT*P1P2/(3*P1Q2*P2Q2)+
44762      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q2)+
44763      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q2)-
44764      &64*A1*A2*P1P2**3/(3*P1Q2*P2Q2)+8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q2)-
44765      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q2)-
44766      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q2)-
44767      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q2)
44768       A18=A18+32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q2)+
44769      &32*A2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
44770      &32*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q2)+
44771      &32*A1*A2*MB*MT*P1P2*P1Q1/(3*P1Q2*P2Q2)-
44772      &64*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q2)-256*A2*P1Q2/(3*P2Q2)+
44773      &448*A1*A2*MB**2*P1Q2/(3*P2Q2)-368*A2**2*MB**2*P1Q2/(3*P2Q2)-
44774      &224*A1*A2*MB*MT*P1Q2/(3*P2Q2)+304*A1*A2*P1P2*P1Q2/(3*P2Q2)+
44775      &64*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
44776      &128*A1*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2)+
44777      &128*A1*MB*MT**3*P1Q2/(3*P1Q1**2*P2Q2)-
44778      &256*A1*MT**2*P1P2*P1Q2/(3*P1Q1**2*P2Q2)+8*P1Q2/(3*P1Q1*P2Q2)-
44779      &160*A1*MB**2*P1Q2/(3*P1Q1*P2Q2)-272*A2*MB**2*P1Q2/(3*P1Q1*P2Q2)-
44780      &56*A1*MB*MT*P1Q2/(3*P1Q1*P2Q2)-200*A2*MB*MT*P1Q2/(3*P1Q1*P2Q2)-
44781      &48*A1*P1P2*P1Q2/(P1Q1*P2Q2)-256*A2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
44782      &256*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2)-
44783      &256*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2)+
44784      &1024*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q2)
44785       A18=A18-272*A2*P1Q2**2/(3*P1Q1*P2Q2)+
44786      &256*A1*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2)-
44787      &256*A1*A2*MB*MT*P1Q2**2/(3*P1Q1*P2Q2)+
44788      &512*A1*A2*P1P2*P1Q2**2/(3*P1Q1*P2Q2)-32*A2*MB**4/(3*P2Q1*P2Q2)+
44789      &32*A2*MB**3*MT/(3*P2Q1*P2Q2)-64*A2**2*MB**5*MT/(3*P2Q1*P2Q2)+
44790      &16*P1P2/(3*P2Q1*P2Q2)-64*A2*MB**2*P1P2/(3*P2Q1*P2Q2)+
44791      &64*A2**2*MB**4*P1P2/(3*P2Q1*P2Q2)+8*MB**2*P1P2/(3*P1Q1*P2Q1*P2Q2)-
44792      &8*MB*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
44793      &32*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
44794      &16*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
44795      &32*A2*MB**2*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
44796      &16*A2*MB**2*P1Q1/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q1/(3*P2Q1*P2Q2)+
44797      &8*MB**2*P1P2/(3*P1Q2*P2Q1*P2Q2)-8*MB*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
44798      &32*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
44799      &16*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
44800      &32*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
44801      &16*MB*MT*P1P2**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
44802       A18=A18+16*P1P2**3/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44803      &32*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1*P2Q2)-
44804      &16*A2*MB**2*P1Q2/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q2/(3*P2Q1*P2Q2)-
44805      &32*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1*P2Q2)+272*A1*P2Q1/(3*P2Q2)+
44806      &112*A2*P2Q1/P2Q2-80*A1*A2*MB**2*P2Q1/P2Q2+
44807      &400*A1*A2*MB*MT*P2Q1/(3*P2Q2)-208*A2**2*MB*MT*P2Q1/(3*P2Q2)-
44808      &272*A1*A2*MT**2*P2Q1/(3*P2Q2)-320*A1*A2*P1P2*P2Q1/P2Q2+
44809      &96*A2**2*P1P2*P2Q1/P2Q2-256*A1*MB*MT**3*P2Q1/(3*P1Q1**2*P2Q2)+
44810      &512*A1*MT**2*P1P2*P2Q1/(3*P1Q1**2*P2Q2)-8*P2Q1/(3*P1Q1*P2Q2)+
44811      &200*A1*MB*MT*P2Q1/(3*P1Q1*P2Q2)+56*A2*MB*MT*P2Q1/(3*P1Q1*P2Q2)+
44812      &272*A1*MT**2*P2Q1/(3*P1Q1*P2Q2)+160*A2*MT**2*P2Q1/(3*P1Q1*P2Q2)+
44813      &256*A1*P1P2*P2Q1/(3*P1Q1*P2Q2)+48*A2*P1P2*P2Q1/(P1Q1*P2Q2)+
44814      &256*A1*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2)-
44815      &256*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q1*P2Q2)-
44816      &1024*A1*A2*P1P2**2*P2Q1/(3*P1Q1*P2Q2)-
44817      &544*A1*A2*P1Q1*P2Q1/(3*P2Q2)-640*A2**2*P1Q1*P2Q1/(3*P2Q2)-
44818      &32*A1*P1P2*P2Q1/(3*P1Q2*P2Q2)
44819       A18=A18-32*A1*A2*MB*MT*P1P2*P2Q1/(3*P1Q2*P2Q2)+
44820      &32*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q2*P2Q2)+
44821      &64*A1*A2*P1P2**2*P2Q1/(3*P1Q2*P2Q2)-
44822      &32*A1*MT**2*P1P2*P2Q1/(3*P1Q1*P1Q2*P2Q2)+
44823      &64*A1*A2*P1P2*P1Q1*P2Q1/(3*P1Q2*P2Q2)-
44824      &944*A1*A2*P1Q2*P2Q1/(3*P2Q2)-32*A2**2*P1Q2*P2Q1/P2Q2+
44825      &256*A1*MT**2*P1Q2*P2Q1/(3*P1Q1**2*P2Q2)+
44826      &96*A1*P1Q2*P2Q1/(P1Q1*P2Q2)+96*A2*P1Q2*P2Q1/(P1Q1*P2Q2)-
44827      &128*A1*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)+
44828      &256*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2)-
44829      &128*A1*A2*MT**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
44830      &512*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2)-
44831      &512*A1*A2*P1Q2**2*P2Q1/(3*P1Q1*P2Q2)+544*A1*A2*P2Q1**2/(3*P2Q2)-
44832      &256*A1*MT**2*P2Q1**2/(3*P1Q1**2*P2Q2)-
44833      &272*A1*P2Q1**2/(3*P1Q1*P2Q2)-
44834      &256*A1*A2*MB*MT*P2Q1**2/(3*P1Q1*P2Q2)+
44835      &256*A1*A2*MT**2*P2Q1**2/(3*P1Q1*P2Q2)
44836       A18=A18+512*A1*A2*P1P2*P2Q1**2/(3*P1Q1*P2Q2)+
44837      &512*A1*A2*P1Q2*P2Q1**2/(3*P1Q1*P2Q2)+224*A12*P2Q2+
44838      &656*A1*A2*P2Q2/3+256*A12*MT**4*P2Q2/(3*P1Q1**2)+
44839      &16*A1*P2Q2/(3*P1Q1)-112*A1*A2*MB*MT*P2Q2/(3*P1Q1)+
44840      &32*A12*MT**2*P2Q2/(3*P1Q1)+64*A1*A2*MT**2*P2Q2/P1Q1+
44841      &368*A1*A2*P1P2*P2Q2/(3*P1Q1)-256*A1*MT**2*P2Q2/(3*P1Q2**2)+
44842      &256*A12*MT**4*P2Q2/(3*P1Q2**2)-256*A1*P2Q2/(3*P1Q2)-
44843      &224*A1*A2*MB*MT*P2Q2/(3*P1Q2)-368*A12*MT**2*P2Q2/(3*P1Q2)+
44844      &448*A1*A2*MT**2*P2Q2/(3*P1Q2)+304*A1*A2*P1P2*P2Q2/(3*P1Q2)+
44845      &16*A1*MT**2*P2Q2/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q2/(3*P1Q1*P1Q2)+
44846      &32*A12*P1Q1*P2Q2/P1Q2+944*A1*A2*P1Q1*P2Q2/(3*P1Q2)+
44847      &256*A12*MT**2*P1Q2*P2Q2/(3*P1Q1**2)+
44848      &640*A12*P1Q2*P2Q2/(3*P1Q1)+544*A1*A2*P1Q2*P2Q2/(3*P1Q1)-
44849      &256*A2*MB**2*P2Q2/(3*P2Q1**2)+256*A2**2*MB**3*MT*P2Q2/(3*P2Q1**2)+
44850      &64*MB**2*MT**2*P2Q2/(3*P1Q2**2*P2Q1**2)+
44851      &64*MB**2*P2Q2/(3*P1Q2*P2Q1**2)+
44852      &128*A2*MB**3*MT*P2Q2/(3*P1Q2*P2Q1**2)
44853       A18=A18-128*A2*MB**2*MT**2*P2Q2/(3*P1Q2*P2Q1**2)-
44854      &256*A2*MB**2*P1P2*P2Q2/(3*P1Q2*P2Q1**2)-
44855      &256*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1**2)+
44856      &256*A2**2*MB**2*P1Q2*P2Q2/(3*P2Q1**2)+272*A1*P2Q2/(3*P2Q1)+
44857      &112*A2*P2Q2/P2Q1-80*A1*A2*MB**2*P2Q2/P2Q1+
44858      &400*A1*A2*MB*MT*P2Q2/(3*P2Q1)-208*A2**2*MB*MT*P2Q2/(3*P2Q1)-
44859      &272*A1*A2*MT**2*P2Q2/(3*P2Q1)-320*A1*A2*P1P2*P2Q2/P2Q1+
44860      &96*A2**2*P1P2*P2Q2/P2Q1-32*A1*P1P2*P2Q2/(3*P1Q1*P2Q1)-
44861      &32*A1*A2*MB*MT*P1P2*P2Q2/(3*P1Q1*P2Q1)+
44862      &32*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q1*P2Q1)+
44863      &64*A1*A2*P1P2**2*P2Q2/(3*P1Q1*P2Q1)-944*A1*A2*P1Q1*P2Q2/(3*P2Q1)-
44864      &32*A2**2*P1Q1*P2Q2/P2Q1-256*A1*MB*MT**3*P2Q2/(3*P1Q2**2*P2Q1)+
44865      &512*A1*MT**2*P1P2*P2Q2/(3*P1Q2**2*P2Q1)+
44866      &256*A1*MT**2*P1Q1*P2Q2/(3*P1Q2**2*P2Q1)-8*P2Q2/(3*P1Q2*P2Q1)+
44867      &200*A1*MB*MT*P2Q2/(3*P1Q2*P2Q1)+56*A2*MB*MT*P2Q2/(3*P1Q2*P2Q1)+
44868      &272*A1*MT**2*P2Q2/(3*P1Q2*P2Q1)+160*A2*MT**2*P2Q2/(3*P1Q2*P2Q1)+
44869      &256*A1*P1P2*P2Q2/(3*P1Q2*P2Q1)+48*A2*P1P2*P2Q2/(P1Q2*P2Q1)
44870       A18=A18+256*A1*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1)-
44871      &256*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q2*P2Q1)-
44872      &1024*A1*A2*P1P2**2*P2Q2/(3*P1Q2*P2Q1)-
44873      &32*A1*MT**2*P1P2*P2Q2/(3*P1Q1*P1Q2*P2Q1)+
44874      &96*A1*P1Q1*P2Q2/(P1Q2*P2Q1)+96*A2*P1Q1*P2Q2/(P1Q2*P2Q1)-
44875      &128*A1*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)+
44876      &256*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1)-
44877      &128*A1*A2*MT**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
44878      &512*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1)-
44879      &512*A1*A2*P1Q1**2*P2Q2/(3*P1Q2*P2Q1)-544*A1*A2*P1Q2*P2Q2/(3*P2Q1)-
44880      &640*A2**2*P1Q2*P2Q2/(3*P2Q1)+
44881      &64*A1*A2*P1P2*P1Q2*P2Q2/(3*P1Q1*P2Q1)+544*A1*A2*P2Q2**2/(3*P2Q1)-
44882      &256*A1*MT**2*P2Q2**2/(3*P1Q2**2*P2Q1)-
44883      &272*A1*P2Q2**2/(3*P1Q2*P2Q1)-
44884      &256*A1*A2*MB*MT*P2Q2**2/(3*P1Q2*P2Q1)+
44885      &256*A1*A2*MT**2*P2Q2**2/(3*P1Q2*P2Q1)+
44886      &512*A1*A2*P1P2*P2Q2**2/(3*P1Q2*P2Q1)
44887       A18=A18+512*A1*A2*P1Q1*P2Q2**2/(3*P1Q2*P2Q1)-
44888      &384*A12*MB*MT*P1Q1**2/S**2+
44889      &384*A12*P1P2*P1Q1**2/S**2-2688*A12*MB*MT*P1Q1*P1Q2/S**2+
44890      &2688*A12*P1P2*P1Q1*P1Q2/S**2-384*A12*MB*MT*P1Q2**2/S**2+
44891      &384*A12*P1P2*P1Q2**2/S**2-768*A1*A2*MB*MT*P1Q1*P2Q1/S**2+
44892      &768*A1*A2*P1P2*P1Q1*P2Q1/S**2-2688*A1*A2*MB*MT*P1Q2*P2Q1/S**2+
44893      &2688*A1*A2*P1P2*P1Q2*P2Q1/S**2-960*A12*P1Q1*P1Q2*P2Q1/S**2-
44894      &960*A1*A2*P1Q1*P1Q2*P2Q1/S**2+960*A12*P1Q2**2*P2Q1/S**2+
44895      &960*A1*A2*P1Q2**2*P2Q1/S**2-384*A2**2*MB*MT*P2Q1**2/S**2+
44896      &384*A2**2*P1P2*P2Q1**2/S**2-960*A1*A2*P1Q2*P2Q1**2/S**2-
44897      &960*A2**2*P1Q2*P2Q1**2/S**2-2688*A1*A2*MB*MT*P1Q1*P2Q2/S**2+
44898      &2688*A1*A2*P1P2*P1Q1*P2Q2/S**2+960*A12*P1Q1**2*P2Q2/S**2+
44899      &960*A1*A2*P1Q1**2*P2Q2/S**2-768*A1*A2*MB*MT*P1Q2*P2Q2/S**2+
44900      &768*A1*A2*P1P2*P1Q2*P2Q2/S**2-960*A12*P1Q1*P1Q2*P2Q2/S**2-
44901      &960*A1*A2*P1Q1*P1Q2*P2Q2/S**2-2688*A2**2*MB*MT*P2Q1*P2Q2/S**2+
44902      &2688*A2**2*P1P2*P2Q1*P2Q2/S**2+960*A1*A2*P1Q1*P2Q1*P2Q2/S**2+
44903      &960*A2**2*P1Q1*P2Q1*P2Q2/S**2+960*A1*A2*P1Q2*P2Q1*P2Q2/S**2
44904       A18=A18+960*A2**2*P1Q2*P2Q1*P2Q2/S**2-
44905      &384*A2**2*MB*MT*P2Q2**2/S**2+
44906      &384*A2**2*P1P2*P2Q2**2/S**2-960*A1*A2*P1Q1*P2Q2**2/S**2-
44907      &960*A2**2*P1Q1*P2Q2**2/S**2-96*A1*MB*MT/S-96*A2*MB*MT/S+
44908      &768*A2**2*MB**3*MT/S+768*A12*MB*MT**3/S-192*A1*P1P2/S-
44909      &192*A2*P1P2/S-768*A2**2*MB**2*P1P2/S+2304*A1*A2*MB*MT*P1P2/S-
44910      &768*A12*MT**2*P1P2/S-2304*A1*A2*P1P2**2/S+
44911      &96*A1*MB*MT**3/(P1Q1*S)+192*A2*MB*MT*P1P2/(P1Q1*S)-
44912      &96*A1*MT**2*P1P2/(P1Q1*S)-192*A2*P1P2**2/(P1Q1*S)-192*A1*P1Q1/S-
44913      &144*A2*P1Q1/S-384*A1*A2*MB**2*P1Q1/S-480*A2**2*MB**2*P1Q1/S+
44914      &480*A12*MB*MT*P1Q1/S-96*A1*A2*MB*MT*P1Q1/S-
44915      &864*A12*P1P2*P1Q1/S-672*A1*A2*P1P2*P1Q1/S-96*A1*A2*P1Q1**2/S+
44916      &96*A1*MB*MT**3/(P1Q2*S)+192*A2*MB*MT*P1P2/(P1Q2*S)-
44917      &96*A1*MT**2*P1P2/(P1Q2*S)-192*A2*P1P2**2/(P1Q2*S)+
44918      &48*A1*MB*MT*P1Q1/(P1Q2*S)-96*A2*MB*MT*P1Q1/(P1Q2*S)-
44919      &48*A1*MT**2*P1Q1/(P1Q2*S)-192*A1*P1P2*P1Q1/(P1Q2*S)-
44920      &192*A2*P1P2*P1Q1/(P1Q2*S)-192*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*S)
44921       A18=A18+192*A1*A2*P1P2**2*P1Q1/(P1Q2*S)-192*A1*P1Q1**2/(P1Q2*S)-
44922      &192*A2*P1Q1**2/(P1Q2*S)+192*A1*A2*MB**2*P1Q1**2/(P1Q2*S)+
44923      &192*A12*MB*MT*P1Q1**2/(P1Q2*S)-96*A1*A2*MB*MT*P1Q1**2/(P1Q2*S)+
44924      &192*A1*A2*P1P2*P1Q1**2/(P1Q2*S)-192*A1*P1Q2/S-144*A2*P1Q2/S-
44925      &384*A1*A2*MB**2*P1Q2/S-480*A2**2*MB**2*P1Q2/S+
44926      &480*A12*MB*MT*P1Q2/S-96*A1*A2*MB*MT*P1Q2/S-
44927      &864*A12*P1P2*P1Q2/S-672*A1*A2*P1P2*P1Q2/S+
44928      &48*A1*MB*MT*P1Q2/(P1Q1*S)-96*A2*MB*MT*P1Q2/(P1Q1*S)-
44929      &48*A1*MT**2*P1Q2/(P1Q1*S)-192*A1*P1P2*P1Q2/(P1Q1*S)-
44930      &192*A2*P1P2*P1Q2/(P1Q1*S)-192*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*S)+
44931      &192*A1*A2*P1P2**2*P1Q2/(P1Q1*S)-576*A1*A2*P1Q1*P1Q2/S-
44932      &96*A1*A2*P1Q2**2/S-192*A1*P1Q2**2/(P1Q1*S)-
44933      &192*A2*P1Q2**2/(P1Q1*S)+192*A1*A2*MB**2*P1Q2**2/(P1Q1*S)+
44934      &192*A12*MB*MT*P1Q2**2/(P1Q1*S)-96*A1*A2*MB*MT*P1Q2**2/(P1Q1*S)+
44935      &192*A1*A2*P1P2*P1Q2**2/(P1Q1*S)-96*A2*MB**3*MT/(P2Q1*S)+
44936      &96*A2*MB**2*P1P2/(P2Q1*S)-192*A1*MB*MT*P1P2/(P2Q1*S)+
44937      &192*A1*P1P2**2/(P2Q1*S)+96*A1*MB**2*P1Q1/(P2Q1*S)
44938       A18=A18+192*A2*MB**2*P1Q1/(P2Q1*S)-96*A1*MB*MT*P1Q1/(P2Q1*S)-
44939      &192*A1*A2*MB**3*MT*P1Q1/(P2Q1*S)+192*A1*P1P2*P1Q1/(P2Q1*S)+
44940      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q1*S)+
44941      &96*A1*A2*MB**2*P1Q1**2/(P2Q1*S)-
44942      &192*A2*MB**3*MT*P1Q1/(P1Q2*P2Q1*S)+
44943      &192*A2*MB**2*P1P2*P1Q1/(P1Q2*P2Q1*S)-
44944      &96*A1*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1*S)+
44945      &96*A1*P1P2**2*P1Q1/(P1Q2*P2Q1*S)+
44946      &96*A1*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
44947      &192*A2*MB**2*P1Q1**2/(P1Q2*P2Q1*S)-
44948      &48*A1*MB*MT*P1Q1**2/(P1Q2*P2Q1*S)+
44949      &96*A1*P1P2*P1Q1**2/(P1Q2*P2Q1*S)+96*A1*MB**2*P1Q2/(P2Q1*S)+
44950      &48*A2*MB**2*P1Q2/(P2Q1*S)+192*A1*A2*MB**3*MT*P1Q2/(P2Q1*S)-
44951      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q1*S)-
44952      &96*A1*A2*MB**2*P1Q2**2/(P2Q1*S)+144*A1*P2Q1/S+192*A2*P2Q1/S+
44953      &96*A1*A2*MB*MT*P2Q1/S-480*A2**2*MB*MT*P2Q1/S+
44954      &480*A12*MT**2*P2Q1/S+384*A1*A2*MT**2*P2Q1/S
44955       A18=A18+672*A1*A2*P1P2*P2Q1/S+864*A2**2*P1P2*P2Q1/S-
44956      &96*A2*MB*MT*P2Q1/(P1Q1*S)+192*A1*MT**2*P2Q1/(P1Q1*S)+
44957      &96*A2*MT**2*P2Q1/(P1Q1*S)-192*A1*A2*MB*MT**3*P2Q1/(P1Q1*S)+
44958      &192*A2*P1P2*P2Q1/(P1Q1*S)+192*A1*A2*MT**2*P1P2*P2Q1/(P1Q1*S)-
44959      &192*A12*P1Q1*P2Q1/S-192*A2**2*P1Q1*P2Q1/S+
44960      &48*A1*MT**2*P2Q1/(P1Q2*S)+96*A2*MT**2*P2Q1/(P1Q2*S)+
44961      &192*A1*A2*MB*MT**3*P2Q1/(P1Q2*S)-
44962      &192*A1*A2*MT**2*P1P2*P2Q1/(P1Q2*S)+
44963      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P1Q2*S)-
44964      &192*A12*MT**2*P1Q1*P2Q1/(P1Q2*S)-
44965      &96*A1*A2*MT**2*P1Q1*P2Q1/(P1Q2*S)-
44966      &384*A1*A2*P1P2*P1Q1*P2Q1/(P1Q2*S)-384*A12*P1Q1**2*P2Q1/(P1Q2*S)-
44967      &384*A1*A2*P1Q1**2*P2Q1/(P1Q2*S)-480*A12*P1Q2*P2Q1/S-
44968      &960*A1*A2*P1Q2*P2Q1/S-480*A2**2*P1Q2*P2Q1/S+
44969      &144*A1*P1Q2*P2Q1/(P1Q1*S)+96*A2*P1Q2*P2Q1/(P1Q1*S)+
44970      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*S)-
44971      &96*A12*MT**2*P1Q2*P2Q1/(P1Q1*S)
44972       A18=A18+96*A1*A2*MT**2*P1Q2*P2Q1/(P1Q1*S)-
44973      &576*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*S)-192*A12*P1Q2**2*P2Q1/(P1Q1*S)-
44974      &384*A1*A2*P1Q2**2*P2Q1/(P1Q1*S)-96*A1*A2*P2Q1**2/S-
44975      &96*A1*A2*MT**2*P2Q1**2/(P1Q1*S)+96*A1*A2*MT**2*P2Q1**2/(P1Q2*S)+
44976      &288*A1*A2*P1Q2*P2Q1**2/(P1Q1*S)-96*A2*MB**3*MT/(P2Q2*S)+
44977      &96*A2*MB**2*P1P2/(P2Q2*S)-192*A1*MB*MT*P1P2/(P2Q2*S)+
44978      &192*A1*P1P2**2/(P2Q2*S)+96*A1*MB**2*P1Q1/(P2Q2*S)+
44979      &48*A2*MB**2*P1Q1/(P2Q2*S)+192*A1*A2*MB**3*MT*P1Q1/(P2Q2*S)-
44980      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q2*S)-
44981      &96*A1*A2*MB**2*P1Q1**2/(P2Q2*S)+96*A1*MB**2*P1Q2/(P2Q2*S)+
44982      &192*A2*MB**2*P1Q2/(P2Q2*S)-96*A1*MB*MT*P1Q2/(P2Q2*S)-
44983      &192*A1*A2*MB**3*MT*P1Q2/(P2Q2*S)+192*A1*P1P2*P1Q2/(P2Q2*S)+
44984      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q2*S)-
44985      &192*A2*MB**3*MT*P1Q2/(P1Q1*P2Q2*S)+
44986      &192*A2*MB**2*P1P2*P1Q2/(P1Q1*P2Q2*S)-
44987      &96*A1*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2*S)+
44988      &96*A1*P1P2**2*P1Q2/(P1Q1*P2Q2*S)+96*A1*A2*MB**2*P1Q2**2/(P2Q2*S)
44989       A18=A18+96*A1*MB**2*P1Q2**2/(P1Q1*P2Q2*S)+
44990      &192*A2*MB**2*P1Q2**2/(P1Q1*P2Q2*S)-
44991      &48*A1*MB*MT*P1Q2**2/(P1Q1*P2Q2*S)+
44992      &96*A1*P1P2*P1Q2**2/(P1Q1*P2Q2*S)-48*A2*MB**2*P2Q1/(P2Q2*S)-
44993      &96*A1*MB*MT*P2Q1/(P2Q2*S)+48*A2*MB*MT*P2Q1/(P2Q2*S)-
44994      &192*A1*P1P2*P2Q1/(P2Q2*S)-192*A2*P1P2*P2Q1/(P2Q2*S)-
44995      &192*A1*A2*MB*MT*P1P2*P2Q1/(P2Q2*S)+
44996      &192*A1*A2*P1P2**2*P2Q1/(P2Q2*S)+
44997      &192*A1*MB*MT**3*P2Q1/(P1Q1*P2Q2*S)+
44998      &96*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2*S)-
44999      &192*A1*MT**2*P1P2*P2Q1/(P1Q1*P2Q2*S)-
45000      &96*A2*P1P2**2*P2Q1/(P1Q1*P2Q2*S)+
45001      &96*A1*A2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
45002      &192*A2**2*MB**2*P1Q1*P2Q1/(P2Q2*S)-
45003      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P2Q2*S)+
45004      &384*A1*A2*P1P2*P1Q1*P2Q1/(P2Q2*S)-96*A1*P1Q2*P2Q1/(P2Q2*S)-
45005      &144*A2*P1Q2*P2Q1/(P2Q2*S)-96*A1*A2*MB**2*P1Q2*P2Q1/(P2Q2*S)
45006       A18=A18+96*A2**2*MB**2*P1Q2*P2Q1/(P2Q2*S)-
45007      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P2Q2*S)+
45008      &576*A1*A2*P1P2*P1Q2*P2Q1/(P2Q2*S)-
45009      &96*A2*MB**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
45010      &48*A1*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
45011      &48*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
45012      &96*A1*MT**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
45013      &96*A1*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
45014      &96*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
45015      &96*A1*A2*P1Q1*P1Q2*P2Q1/(P2Q2*S)+288*A1*A2*P1Q2**2*P2Q1/(P2Q2*S)-
45016      &96*A1*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)-96*A2*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)+
45017      &192*A1*P2Q1**2/(P2Q2*S)+192*A2*P2Q1**2/(P2Q2*S)+
45018      &96*A1*A2*MB*MT*P2Q1**2/(P2Q2*S)-192*A2**2*MB*MT*P2Q1**2/(P2Q2*S)-
45019      &192*A1*A2*MT**2*P2Q1**2/(P2Q2*S)-192*A1*A2*P1P2*P2Q1**2/(P2Q2*S)-
45020      &48*A2*MB*MT*P2Q1**2/(P1Q1*P2Q2*S)+
45021      &192*A1*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
45022      &96*A2*MT**2*P2Q1**2/(P1Q1*P2Q2*S)
45023       A18=A18+96*A2*P1P2*P2Q1**2/(P1Q1*P2Q2*S)-
45024      &384*A1*A2*P1Q1*P2Q1**2/(P2Q2*S)-
45025      &384*A2**2*P1Q1*P2Q1**2/(P2Q2*S)-384*A1*A2*P1Q2*P2Q1**2/(P2Q2*S)-
45026      &192*A2**2*P1Q2*P2Q1**2/(P2Q2*S)+96*A1*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+
45027      &96*A2*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+144*A1*P2Q2/S+192*A2*P2Q2/S+
45028      &96*A1*A2*MB*MT*P2Q2/S-480*A2**2*MB*MT*P2Q2/S+
45029      &480*A12*MT**2*P2Q2/S+384*A1*A2*MT**2*P2Q2/S+
45030      &672*A1*A2*P1P2*P2Q2/S+864*A2**2*P1P2*P2Q2/S+
45031      &48*A1*MT**2*P2Q2/(P1Q1*S)+96*A2*MT**2*P2Q2/(P1Q1*S)+
45032      &192*A1*A2*MB*MT**3*P2Q2/(P1Q1*S)-
45033      &192*A1*A2*MT**2*P1P2*P2Q2/(P1Q1*S)-480*A12*P1Q1*P2Q2/S-
45034      &960*A1*A2*P1Q1*P2Q2/S-480*A2**2*P1Q1*P2Q2/S-
45035      &96*A2*MB*MT*P2Q2/(P1Q2*S)+192*A1*MT**2*P2Q2/(P1Q2*S)+
45036      &96*A2*MT**2*P2Q2/(P1Q2*S)-192*A1*A2*MB*MT**3*P2Q2/(P1Q2*S)+
45037      &192*A2*P1P2*P2Q2/(P1Q2*S)+192*A1*A2*MT**2*P1P2*P2Q2/(P1Q2*S)+
45038      &144*A1*P1Q1*P2Q2/(P1Q2*S)+96*A2*P1Q1*P2Q2/(P1Q2*S)+
45039      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*S)
45040       A18=A18-96*A12*MT**2*P1Q1*P2Q2/(P1Q2*S)+
45041      &96*A1*A2*MT**2*P1Q1*P2Q2/(P1Q2*S)-
45042      &576*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*S)-192*A12*P1Q1**2*P2Q2/(P1Q2*S)-
45043      &384*A1*A2*P1Q1**2*P2Q2/(P1Q2*S)-192*A12*P1Q2*P2Q2/S-
45044      &192*A2**2*P1Q2*P2Q2/S+96*A1*A2*MB*MT*P1Q2*P2Q2/(P1Q1*S)-
45045      &192*A12*MT**2*P1Q2*P2Q2/(P1Q1*S)-
45046      &96*A1*A2*MT**2*P1Q2*P2Q2/(P1Q1*S)-
45047      &384*A1*A2*P1P2*P1Q2*P2Q2/(P1Q1*S)-384*A12*P1Q2**2*P2Q2/(P1Q1*S)-
45048      &384*A1*A2*P1Q2**2*P2Q2/(P1Q1*S)-48*A2*MB**2*P2Q2/(P2Q1*S)-
45049      &96*A1*MB*MT*P2Q2/(P2Q1*S)+48*A2*MB*MT*P2Q2/(P2Q1*S)-
45050      &192*A1*P1P2*P2Q2/(P2Q1*S)-192*A2*P1P2*P2Q2/(P2Q1*S)-
45051      &192*A1*A2*MB*MT*P1P2*P2Q2/(P2Q1*S)+
45052      &192*A1*A2*P1P2**2*P2Q2/(P2Q1*S)-96*A1*P1Q1*P2Q2/(P2Q1*S)-
45053      &144*A2*P1Q1*P2Q2/(P2Q1*S)-96*A1*A2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
45054      &96*A2**2*MB**2*P1Q1*P2Q2/(P2Q1*S)-
45055      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P2Q1*S)+
45056      &576*A1*A2*P1P2*P1Q1*P2Q2/(P2Q1*S)+288*A1*A2*P1Q1**2*P2Q2/(P2Q1*S)
45057       A18=A18+192*A1*MB*MT**3*P2Q2/(P1Q2*P2Q1*S)+
45058      &96*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1*S)-
45059      &192*A1*MT**2*P1P2*P2Q2/(P1Q2*P2Q1*S)-
45060      &96*A2*P1P2**2*P2Q2/(P1Q2*P2Q1*S)-
45061      &96*A2*MB**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
45062      &48*A1*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
45063      &48*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
45064      &96*A1*MT**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
45065      &96*A1*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
45066      &96*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
45067      &96*A1*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)-96*A2*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)+
45068      &96*A1*A2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
45069      &192*A2**2*MB**2*P1Q2*P2Q2/(P2Q1*S)-
45070      &96*A1*A2*MB*MT*P1Q2*P2Q2/(P2Q1*S)+
45071      &384*A1*A2*P1P2*P1Q2*P2Q2/(P2Q1*S)+
45072      &96*A1*A2*P1Q1*P1Q2*P2Q2/(P2Q1*S)-576*A1*A2*P2Q1*P2Q2/S+
45073      &96*A1*A2*P1Q1*P2Q1*P2Q2/(P1Q2*S)+96*A1*A2*P1Q2*P2Q1*P2Q2/(P1Q1*S)
45074       A18=A18-96*A1*A2*P2Q2**2/S+96*A1*A2*MT**2*P2Q2**2/(P1Q1*S)-
45075      &96*A1*A2*MT**2*P2Q2**2/(P1Q2*S)+288*A1*A2*P1Q1*P2Q2**2/(P1Q2*S)+
45076      &192*A1*P2Q2**2/(P2Q1*S)+192*A2*P2Q2**2/(P2Q1*S)+
45077      &96*A1*A2*MB*MT*P2Q2**2/(P2Q1*S)-192*A2**2*MB*MT*P2Q2**2/(P2Q1*S)-
45078      &192*A1*A2*MT**2*P2Q2**2/(P2Q1*S)-192*A1*A2*P1P2*P2Q2**2/(P2Q1*S)-
45079      &384*A1*A2*P1Q1*P2Q2**2/(P2Q1*S)-192*A2**2*P1Q1*P2Q2**2/(P2Q1*S)-
45080      &48*A2*MB*MT*P2Q2**2/(P1Q2*P2Q1*S)+
45081      &192*A1*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
45082      &96*A2*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
45083      &96*A2*P1P2*P2Q2**2/(P1Q2*P2Q1*S)+96*A1*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)+
45084      &96*A2*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)-384*A1*A2*P1Q2*P2Q2**2/(P2Q1*S)-
45085      &384*A2**2*P1Q2*P2Q2**2/(P2Q1*S)+512*A1*A2*S/3-
45086      &128*A1*MT**2*S/(3*P1Q1**2)+128*A12*MB*MT**3*S/(3*P1Q1**2)-
45087      &152*A1*S/(3*P1Q1)-152*A12*MB*MT*S/(3*P1Q1)-
45088      &128*A1*A2*MB*MT*S/(3*P1Q1)+112*A1*A2*MT**2*S/(3*P1Q1)-
45089      &16*A12*P1P2*S/P1Q1+152*A1*A2*P1P2*S/(3*P1Q1)-
45090      &128*A1*MT**2*S/(3*P1Q2**2)+128*A12*MB*MT**3*S/(3*P1Q2**2)
45091       A18=A18-152*A1*S/(3*P1Q2)-152*A12*MB*MT*S/(3*P1Q2)-
45092      &128*A1*A2*MB*MT*S/(3*P1Q2)+112*A1*A2*MT**2*S/(3*P1Q2)-
45093      &16*A12*P1P2*S/P1Q2+152*A1*A2*P1P2*S/(3*P1Q2)+
45094      &16*A1*MB*MT*S/(3*P1Q1*P1Q2)-32*A12*MB*MT**3*S/(3*P1Q1*P1Q2)-
45095      &16*A1*P1P2*S/(3*P1Q1*P1Q2)+272*A1*A2*P1Q1*S/(3*P1Q2)+
45096      &272*A1*A2*P1Q2*S/(3*P1Q1)-128*A2*MB**2*S/(3*P2Q1**2)+
45097      &128*A2**2*MB**3*MT*S/(3*P2Q1**2)+
45098      &32*MB**2*MT**2*S/(3*P1Q2**2*P2Q1**2)+32*MB**2*S/(3*P1Q2*P2Q1**2)
45099  
45100       A18BIS=
45101      &64*A2*MB**3*MT*S/(3*P1Q2*P2Q1**2)-
45102      &64*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1**2)-
45103      &128*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1**2)-
45104      &128*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1**2)+
45105      &128*A2**2*MB**2*P1Q2*S/(3*P2Q1**2)+152*A2*S/(3*P2Q1)-
45106      &112*A1*A2*MB**2*S/(3*P2Q1)+128*A1*A2*MB*MT*S/(3*P2Q1)+
45107      &152*A2**2*MB*MT*S/(3*P2Q1)-152*A1*A2*P1P2*S/(3*P2Q1)+
45108      &16*A2**2*P1P2*S/P2Q1-8*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q1)+
45109      &16*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q1)-
45110      &8*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q1)-8*A1*P1P2*S/(3*P1Q1*P2Q1)-
45111      &8*A2*P1P2*S/(3*P1Q1*P2Q1)+8*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1)-
45112      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1)+
45113      &8*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q1)+
45114      &32*A1*A2*P1P2**2*S/(3*P1Q1*P2Q1)-32*A2**2*P1Q1*S/(3*P2Q1)-
45115      &32*MT**2*S/(3*P1Q2**2*P2Q1)+64*A1*MB**2*MT**2*S/(3*P1Q2**2*P2Q1)-
45116      &64*A1*MB*MT**3*S/(3*P1Q2**2*P2Q1)
45117       A18BIS=A18BIS+128*A1*MT**2*P1P2*S/(3*P1Q2**2*P2Q1)-
45118      &12*S/(P1Q2*P2Q1)+
45119      &24*A1*MB**2*S/(P1Q2*P2Q1)+64*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q1)+
45120      &24*A2*MT**2*S/(P1Q2*P2Q1)-128*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1)+
45121      &64*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q1)+56*A1*P1P2*S/(3*P1Q2*P2Q1)+
45122      &56*A2*P1P2*S/(3*P1Q2*P2Q1)-64*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1)+
45123      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1)-
45124      &64*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q1)-
45125      &256*A1*A2*P1P2**2*S/(3*P1Q2*P2Q1)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
45126      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
45127      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+136*A2*P1Q1*S/(3*P1Q2*P2Q1)-
45128      &128*A1*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1)+
45129      &128*A1*A2*MB*MT*P1Q1*S/(3*P1Q2*P2Q1)-
45130      &256*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1)-160*A2**2*P1Q2*S/(3*P2Q1)+
45131      &16*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1)-32*A12*P2Q1*S/(3*P1Q1)-
45132      &128*A12*MT**2*P2Q1*S/(3*P1Q2**2)-160*A12*P2Q1*S/(3*P1Q2)-
45133      &128*A2*MB**2*S/(3*P2Q2**2)+128*A2**2*MB**3*MT*S/(3*P2Q2**2)
45134       A18BIS=A18BIS+32*MB**2*MT**2*S/(3*P1Q1**2*P2Q2**2)+
45135      &32*MB**2*S/(3*P1Q1*P2Q2**2)+
45136      &64*A2*MB**3*MT*S/(3*P1Q1*P2Q2**2)-
45137      &64*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2**2)-
45138      &128*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2**2)+
45139      &128*A2**2*MB**2*P1Q1*S/(3*P2Q2**2)-
45140      &128*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2**2)+152*A2*S/(3*P2Q2)-
45141      &112*A1*A2*MB**2*S/(3*P2Q2)+128*A1*A2*MB*MT*S/(3*P2Q2)+
45142      &152*A2**2*MB*MT*S/(3*P2Q2)-152*A1*A2*P1P2*S/(3*P2Q2)+
45143      &16*A2**2*P1P2*S/P2Q2-32*MT**2*S/(3*P1Q1**2*P2Q2)+
45144      &64*A1*MB**2*MT**2*S/(3*P1Q1**2*P2Q2)-
45145      &64*A1*MB*MT**3*S/(3*P1Q1**2*P2Q2)+
45146      &128*A1*MT**2*P1P2*S/(3*P1Q1**2*P2Q2)-12*S/(P1Q1*P2Q2)+
45147      &24*A1*MB**2*S/(P1Q1*P2Q2)+64*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q2)+
45148      &24*A2*MT**2*S/(P1Q1*P2Q2)-128*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2)+
45149      &64*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q2)+56*A1*P1P2*S/(3*P1Q1*P2Q2)+
45150      &56*A2*P1P2*S/(3*P1Q1*P2Q2)-64*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2)
45151       A18BIS=A18BIS+128*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q2)-
45152      &64*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q2)-
45153      &256*A1*A2*P1P2**2*S/(3*P1Q1*P2Q2)-160*A2**2*P1Q1*S/(3*P2Q2)-
45154      &8*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q2)+
45155      &16*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q2)-
45156      &8*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q2)-8*A1*P1P2*S/(3*P1Q2*P2Q2)-
45157      &8*A2*P1P2*S/(3*P1Q2*P2Q2)+8*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q2)-
45158      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q2)+
45159      &8*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q2)+
45160      &32*A1*A2*P1P2**2*S/(3*P1Q2*P2Q2)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
45161      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
45162      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
45163      &16*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q2)-32*A2**2*P1Q2*S/(3*P2Q2)+
45164      &136*A2*P1Q2*S/(3*P1Q1*P2Q2)-128*A1*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2)+
45165      &128*A1*A2*MB*MT*P1Q2*S/(3*P1Q1*P2Q2)-
45166      &256*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q2)+16*A2*MB*MT*S/(3*P2Q1*P2Q2)-
45167      &32*A2**2*MB**3*MT*S/(3*P2Q1*P2Q2)-16*A2*P1P2*S/(3*P2Q1*P2Q2)
45168       A18BIS=A18BIS-4*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+
45169      &8*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+
45170      &8*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-4*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
45171      &8*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
45172      &8*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1*P2Q2)-
45173      &2*MB**3*MT*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
45174      &4*MB**2*MT**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
45175      &2*MB*MT**3*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
45176      &2*MB**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
45177      &4*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
45178      &2*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
45179      &8*P1P2**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
45180      &8*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1*P2Q2)+
45181      &8*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1*P2Q2)+272*A1*A2*P2Q1*S/(3*P2Q2)-
45182      &128*A1*MT**2*P2Q1*S/(3*P1Q1**2*P2Q2)-136*A1*P2Q1*S/(3*P1Q1*P2Q2)-
45183      &128*A1*A2*MB*MT*P2Q1*S/(3*P1Q1*P2Q2)+
45184      &128*A1*A2*MT**2*P2Q1*S/(3*P1Q1*P2Q2)
45185       A18BIS=A18BIS+256*A1*A2*P1P2*P2Q1*S/(3*P1Q1*P2Q2)-
45186      &16*A1*A2*P1P2*P2Q1*S/(3*P1Q2*P2Q2)+
45187      &8*A1*P1P2*P2Q1*S/(3*P1Q1*P1Q2*P2Q2)+
45188      &256*A1*A2*P1Q2*P2Q1*S/(3*P1Q1*P2Q2)-
45189      &128*A12*MT**2*P2Q2*S/(3*P1Q1**2)-160*A12*P2Q2*S/(3*P1Q1)-
45190      &32*A12*P2Q2*S/(3*P1Q2)+272*A1*A2*P2Q2*S/(3*P2Q1)-
45191      &16*A1*A2*P1P2*P2Q2*S/(3*P1Q1*P2Q1)-
45192      &128*A1*MT**2*P2Q2*S/(3*P1Q2**2*P2Q1)-136*A1*P2Q2*S/(3*P1Q2*P2Q1)-
45193      &128*A1*A2*MB*MT*P2Q2*S/(3*P1Q2*P2Q1)+
45194      &128*A1*A2*MT**2*P2Q2*S/(3*P1Q2*P2Q1)+
45195      &256*A1*A2*P1P2*P2Q2*S/(3*P1Q2*P2Q1)+
45196      &8*A1*P1P2*P2Q2*S/(3*P1Q1*P1Q2*P2Q1)+
45197      &256*A1*A2*P1Q1*P2Q2*S/(3*P1Q2*P2Q1)-
45198      &8*A12*MB*MT*S**2/(3*P1Q1*P1Q2)+16*A12*P1P2*S**2/(3*P1Q1*P1Q2)-
45199      &8*A1*A2*P1P2*S**2/(3*P1Q1*P2Q1)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1)-
45200      &8*A1*A2*P1P2*S**2/(3*P1Q2*P2Q2)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q2)-
45201      &8*A2**2*MB*MT*S**2/(3*P2Q1*P2Q2)+16*A2**2*P1P2*S**2/(3*P2Q1*P2Q2)
45202       A18BIS=A18BIS-4*A2*P1P2*S**2/(3*P1Q1*P2Q1*P2Q2)-
45203      &4*A2*P1P2*S**2/(3*P1Q2*P2Q1*P2Q2)+
45204      &2*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
45205 C
45206       V18=V18+V18BIS
45207       A18=A18+A18BIS
45208       V910 =-48*A12*MB*MT-48*A2**2*MB*MT-48*A12*P1P2-48*A2**2*P1P2-
45209      &384*A12*MB*MT*P1Q1*P1Q2/S**2-384*A12*P1P2*P1Q1*P1Q2/S**2-
45210      &384*A1*A2*MB*MT*P1Q2*P2Q1/S**2-384*A1*A2*P1P2*P1Q2*P2Q1/S**2+
45211      &192*A12*P1Q1*P1Q2*P2Q1/S**2+192*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
45212      &192*A12*P1Q2**2*P2Q1/S**2-192*A1*A2*P1Q2**2*P2Q1/S**2+
45213      &192*A1*A2*P1Q2*P2Q1**2/S**2+192*A2**2*P1Q2*P2Q1**2/S**2-
45214      &384*A1*A2*MB*MT*P1Q1*P2Q2/S**2-384*A1*A2*P1P2*P1Q1*P2Q2/S**2-
45215      &192*A12*P1Q1**2*P2Q2/S**2-192*A1*A2*P1Q1**2*P2Q2/S**2+
45216      &192*A12*P1Q1*P1Q2*P2Q2/S**2+192*A1*A2*P1Q1*P1Q2*P2Q2/S**2-
45217      &384*A2**2*MB*MT*P2Q1*P2Q2/S**2-384*A2**2*P1P2*P2Q1*P2Q2/S**2-
45218      &192*A1*A2*P1Q1*P2Q1*P2Q2/S**2-192*A2**2*P1Q1*P2Q1*P2Q2/S**2-
45219      &192*A1*A2*P1Q2*P2Q1*P2Q2/S**2-192*A2**2*P1Q2*P2Q1*P2Q2/S**2+
45220      &192*A1*A2*P1Q1*P2Q2**2/S**2+192*A2**2*P1Q1*P2Q2**2/S**2+
45221      &96*A12*MB*MT*P1Q1/S-96*A1*A2*MB*MT*P1Q1/S+
45222      &96*A12*P1P2*P1Q1/S-96*A1*A2*P1P2*P1Q1/S+96*A12*MB*MT*P1Q2/S-
45223      &96*A1*A2*MB*MT*P1Q2/S+96*A12*P1P2*P1Q2/S-96*A1*A2*P1P2*P1Q2/S+
45224      &96*A1*A2*MB*MT*P2Q1/S-96*A2**2*MB*MT*P2Q1/S
45225       V910=V910+96*A1*A2*P1P2*P2Q1/S-
45226      &96*A2**2*P1P2*P2Q1/S+96*A12*P1Q2*P2Q1/S+
45227      &192*A1*A2*P1Q2*P2Q1/S+96*A2**2*P1Q2*P2Q1/S+
45228      &96*A1*A2*MB*MT*P2Q2/S-96*A2**2*MB*MT*P2Q2/S+
45229      &96*A1*A2*P1P2*P2Q2/S-96*A2**2*P1P2*P2Q2/S+96*A12*P1Q1*P2Q2/S+
45230      &192*A1*A2*P1Q1*P2Q2/S+96*A2**2*P1Q1*P2Q2/S
45231 C
45232       A910 = 48*A12*MB*MT+48*A2**2*MB*MT-48*A12*P1P2-48*A2**2*P1P2+
45233      &384*A12*MB*MT*P1Q1*P1Q2/S**2-384*A12*P1P2*P1Q1*P1Q2/S**2+
45234      &384*A1*A2*MB*MT*P1Q2*P2Q1/S**2-384*A1*A2*P1P2*P1Q2*P2Q1/S**2+
45235      &192*A12*P1Q1*P1Q2*P2Q1/S**2+192*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
45236      &192*A12*P1Q2**2*P2Q1/S**2-192*A1*A2*P1Q2**2*P2Q1/S**2+
45237      &192*A1*A2*P1Q2*P2Q1**2/S**2+192*A2**2*P1Q2*P2Q1**2/S**2+
45238      &384*A1*A2*MB*MT*P1Q1*P2Q2/S**2-384*A1*A2*P1P2*P1Q1*P2Q2/S**2-
45239      &192*A12*P1Q1**2*P2Q2/S**2-192*A1*A2*P1Q1**2*P2Q2/S**2+
45240      &192*A12*P1Q1*P1Q2*P2Q2/S**2+192*A1*A2*P1Q1*P1Q2*P2Q2/S**2+
45241      &384*A2**2*MB*MT*P2Q1*P2Q2/S**2-384*A2**2*P1P2*P2Q1*P2Q2/S**2-
45242      &192*A1*A2*P1Q1*P2Q1*P2Q2/S**2-192*A2**2*P1Q1*P2Q1*P2Q2/S**2-
45243      &192*A1*A2*P1Q2*P2Q1*P2Q2/S**2-192*A2**2*P1Q2*P2Q1*P2Q2/S**2+
45244      &192*A1*A2*P1Q1*P2Q2**2/S**2+192*A2**2*P1Q1*P2Q2**2/S**2-
45245      &96*A12*MB*MT*P1Q1/S+96*A1*A2*MB*MT*P1Q1/S+
45246      &96*A12*P1P2*P1Q1/S-96*A1*A2*P1P2*P1Q1/S-96*A12*MB*MT*P1Q2/S+
45247      &96*A1*A2*MB*MT*P1Q2/S+96*A12*P1P2*P1Q2/S-96*A1*A2*P1P2*P1Q2/S-
45248      &96*A1*A2*MB*MT*P2Q1/S+96*A2**2*MB*MT*P2Q1/S
45249       A910=A910+96*A1*A2*P1P2*P2Q1/S-
45250      &96*A2**2*P1P2*P2Q1/S+96*A12*P1Q2*P2Q1/S+
45251      &192*A1*A2*P1Q2*P2Q1/S+96*A2**2*P1Q2*P2Q1/S-
45252      &96*A1*A2*MB*MT*P2Q2/S+96*A2**2*MB*MT*P2Q2/S+
45253      &96*A1*A2*P1P2*P2Q2/S-96*A2**2*P1P2*P2Q2/S+96*A12*P1Q1*P2Q2/S+
45254      &192*A1*A2*P1Q1*P2Q2/S+96*A2**2*P1Q1*P2Q2/S
45255 C
45256 C FINAL RESULT;
45257 C
45258       AMP2= FACT*PS*VTB**2*(V**2 *(V18 +V910)+A**2 *(A18+A910) )
45259  
45260       END
45261 C---------------------------------------------------------
45262 C 2)  Q QBAR ->TBH^+
45263        SUBROUTINE PYTBHQ(Q1,Q2,P1,P2,P3,MT,MB,RMB,MHP,AMP2)
45264 C
45265 C AMP2(OUTPUT) =MATRIX ELEMENT (AMPLITUDE**2) FOR Q QBAR->TB H^+
45266 C (NB SAME STRUCTURE AS FOR PYTBHG ROUTINE ABOVE)
45267       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45268       IMPLICIT INTEGER(I-N)
45269       DOUBLE PRECISION MW2,MT,MB,MHP,MW
45270       DIMENSION Q1(4),Q2(4),P1(4),P2(4),P3(4)
45271       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45272       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45273       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
45274       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
45275       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYCTBH/
45276 C !THE RELEVANT INPUT PARAMETERS ABOVE ARE NEEDED FOR CALCULATION
45277 C BUT ARE NOT DEFINED HERE SO THAT ONE MAY CHOOSE/VARY THEIR VALUES:
45278 C ACCORDINGLY, WHEN CALLING THESE SUBROUTINES, PLEASE SUPPLY VIA
45279 C THIS COMMON/PARAM/ YOUR PREFERRED ALPHA, ALPHAS,..AND TANB VALUES
45280 C
45281 C THE NORMALIZED V,A COUPLINGS ARE DEFINED BELOW AND USED BOTH
45282 C IN THIS ROUTINE AND IN THE TOP WIDTH CALCULATION PYTBHB(..).
45283 C
45284       DIMENSION YY(2,2)
45285  
45286       PI = 4*DATAN(1.D0)
45287       MW = DSQRT(MW2)
45288  
45289 C COLLECTING THE RELEVANT OVERALL FACTORS:
45290 C 3X3 INITIAL QUARK COLOR AVERAGE, 2X2 QUARK SPIN AVERAGE
45291       PS=1.D0/(3.D0*3.D0 *2.D0*2.D0)
45292 C COUPLING CONSTANT (OVERALL NORMALIZATION)
45293       FACT=(4.D0*PI*ALPHA)*(4.D0*PI*ALPHAS)**2/SW2/2.D0
45294 C NB ALPHA IS E^2/4/PI, BUT BETTER DEFINED IN TERMS OF G_FERMI:
45295 C ALPHA= DSQRT(2.D0)*GF*SW2*MW**2/PI
45296 C ALPHAS IS ALPHA_STRONG;
45297 C SW2 IS SIN(THETA_W)**2.
45298 C
45299 C      VTB=.998D0
45300 C VTB IS TOP-BOTTOM CKM MATRIX ELEMENT (APPROXIMATE VALUE HERE)
45301 C
45302       V = ( MT/MW/TANB +RMB/MW*TANB)/2.D0
45303       A = (-MT/MW/TANB +RMB/MW*TANB)/2.D0
45304 C V AND A ARE (NORMALIZED) VECTOR AND AXIAL TBH^+ COUPLINGS
45305 C
45306 C REDEFINING P2 INGOING FROM OVERALL MOMENTUM CONSERVATION
45307 C (BECAUSE P2 INGOING WAS USED IN OUR GRAPH CALCULATION CONVENTIONS)
45308       DO 100 KK=1,4
45309         P2(KK)=P3(KK)-Q1(KK)-Q2(KK)+P1(KK)
45310   100 CONTINUE
45311 C DEFINING VARIOUS RELEVANT 4-SCALAR PRODUCTS:
45312       S = 2*PYTBHS(Q1,Q2)
45313       P1Q1=PYTBHS(Q1,P1)
45314       P1Q2=PYTBHS(P1,Q2)
45315       P2Q1=PYTBHS(P2,Q1)
45316       P2Q2=PYTBHS(P2,Q2)
45317       P1P2=PYTBHS(P1,P2)
45318 C
45319 C   TOP WIDTH CALCULATION
45320       CALL PYTBHB(MT,MB,MHP,BR,GAMT)
45321 C   GAMT IS THE TOP WIDTH: T->BH^+ AND/OR T->B W^+
45322 C THEN DEFINE TOP (RESONANT) PROPAGATOR:
45323       A1INV= S -2*P1Q1 -2*P1Q2
45324       A1 =A1INV/(A1INV**2+ (GAMT*MT)**2)
45325 C (I.E. INTRODUCE THE TOP WIDTH IN A1 TO REGULARISE THE POLE)
45326 C  NB  A12 = A1*A1 BUT WITH CORRECT WIDTH TREATMENT
45327       A12 = 1.D0/(A1INV**2+ (GAMT*MT)**2)
45328       A2 =1.D0/(S +2*P2Q1 +2*P2Q2)
45329 C NOTE A2 IS B PROPAGATOR, DOES NOT NEED A WIDTH
45330 C  NOW COMES THE AMP**2:
45331 C NB COLOR FACTOR (COMING FORM GRAPHS) ALREADY INCLUDED IN
45332 C THE EXPRESSIONS BELOW
45333       YY(1, 1) = -16*A**2*A2**2*MB*MT+
45334      &64*A**2*A2**2*P1Q2*P2Q1**2/S**2+
45335      &128*A**2*A2**2*MB*MT*P2Q1*P2Q2/S**2-
45336      &128*A**2*A2**2*P1P2*P2Q1*P2Q2/S**2-
45337      &64*A**2*A2**2*P1Q1*P2Q1*P2Q2/S**2-
45338      &64*A**2*A2**2*P1Q2*P2Q1*P2Q2/S**2+
45339      &64*A**2*A2**2*P1Q1*P2Q2**2/S**2-
45340      &32*A**2*A2**2*MB**3*MT/S+32*A**2*A2**2*MB**2*P1P2/S+
45341      &32*A**2*A2**2*MB**2*P1Q1/S+32*A**2*A2**2*MB**2*P1Q2/S-
45342      &32*A**2*A2**2*P1P2*P2Q1/S-32*A**2*A2**2*P1Q1*P2Q1/S-
45343      &32*A**2*A2**2*P1P2*P2Q2/S-32*A**2*A2**2*P1Q2*P2Q2/S+
45344      &16*A2**2*MB*MT*V**2+64*A2**2*P1Q2*P2Q1**2*V**2/S**2-
45345      &128*A2**2*MB*MT*P2Q1*P2Q2*V**2/S**2-
45346      &128*A2**2*P1P2*P2Q1*P2Q2*V**2/S**2-
45347      &64*A2**2*P1Q1*P2Q1*P2Q2*V**2/S**2-
45348      &64*A2**2*P1Q2*P2Q1*P2Q2*V**2/S**2+
45349      &64*A2**2*P1Q1*P2Q2**2*V**2/S**2
45350       YY(1, 1)=YY(1, 1)+32*A2**2*MB**3*MT*V**2/S+
45351      &32*A2**2*MB**2*P1P2*V**2/S+
45352      &32*A2**2*MB**2*P1Q1*V**2/S+32*A2**2*MB**2*P1Q2*V**2/S-
45353      &32*A2**2*P1P2*P2Q1*V**2/S-32*A2**2*P1Q1*P2Q1*V**2/S-
45354      &32*A2**2*P1P2*P2Q2*V**2/S-32*A2**2*P1Q2*P2Q2*V**2/S
45355       YY(1, 1)=2*YY(1, 1)
45356  
45357       YY(1, 2) = -32*A**2*A1*A2*MB*MT+
45358      &128*A**2*A1*A2*MB*MT*P1Q2*P2Q1/S**2-
45359      &128*A**2*A1*A2*P1P2*P1Q2*P2Q1/S**2+
45360      &64*A**2*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
45361      &64*A**2*A1*A2*P1Q2**2*P2Q1/S**2+
45362      &64*A**2*A1*A2*P1Q2*P2Q1**2/S**2+
45363      &128*A**2*A1*A2*MB*MT*P1Q1*P2Q2/S**2-
45364      &128*A**2*A1*A2*P1P2*P1Q1*P2Q2/S**2-
45365      &64*A**2*A1*A2*P1Q1**2*P2Q2/S**2+
45366      &64*A**2*A1*A2*P1Q1*P1Q2*P2Q2/S**2-
45367      &64*A**2*A1*A2*P1Q1*P2Q1*P2Q2/S**2-
45368      &64*A**2*A1*A2*P1Q2*P2Q1*P2Q2/S**2+
45369      &64*A**2*A1*A2*P1Q1*P2Q2**2/S**2-
45370      &64*A**2*A1*A2*MB*MT*P1P2/S+
45371      &64*A**2*A1*A2*P1P2**2/S+32*A**2*A1*A2*MB**2*P1Q1/S+
45372      &32*A**2*A1*A2*P1P2*P1Q1/S+32*A**2*A1*A2*MB**2*P1Q2/S+
45373      &32*A**2*A1*A2*P1P2*P1Q2/S-32*A**2*A1*A2*MT**2*P2Q1/S
45374       YY(1, 2)=YY(1, 2)-32*A**2*A1*A2*P1P2*P2Q1/S-
45375      &64*A**2*A1*A2*P1Q1*P2Q1/S-
45376      &32*A**2*A1*A2*MT**2*P2Q2/S-32*A**2*A1*A2*P1P2*P2Q2/S-
45377      &64*A**2*A1*A2*P1Q2*P2Q2/S+32*A1*A2*MB*MT*V**2-
45378      &128*A1*A2*MB*MT*P1Q2*P2Q1*V**2/S**2 -
45379      &128*A1*A2*P1P2*P1Q2*P2Q1*V**2/S**2+
45380      &64*A1*A2*P1Q1*P1Q2*P2Q1*V**2/S**2-
45381      &64*A1*A2*P1Q2**2*P2Q1*V**2/S**2+
45382      &64*A1*A2*P1Q2*P2Q1**2*V**2/S**2-
45383      &128*A1*A2*MB*MT*P1Q1*P2Q2*V**2/S**2-
45384      &128*A1*A2*P1P2*P1Q1*P2Q2*V**2/S**2-
45385      &64*A1*A2*P1Q1**2*P2Q2*V**2/S**2+
45386      &64*A1*A2*P1Q1*P1Q2*P2Q2*V**2/S**2-
45387      &64*A1*A2*P1Q1*P2Q1*P2Q2*V**2/S**2-
45388      &64*A1*A2*P1Q2*P2Q1*P2Q2*V**2/S**2+
45389      &64*A1*A2*P1Q1*P2Q2**2*V**2/S**2+
45390      &64*A1*A2*MB*MT*P1P2*V**2/S+64*A1*A2*P1P2**2*V**2/S
45391       YY(1, 2)=YY(1, 2)+32*A1*A2*MB**2*P1Q1*V**2/S+
45392      &32*A1*A2*P1P2*P1Q1*V**2/S+
45393      &32*A1*A2*MB**2*P1Q2*V**2/S+32*A1*A2*P1P2*P1Q2*V**2/S-
45394      &32*A1*A2*MT**2*P2Q1*V**2/S-32*A1*A2*P1P2*P2Q1*V**2/S-
45395      &64*A1*A2*P1Q1*P2Q1*V**2/S-32*A1*A2*MT**2*P2Q2*V**2/S-
45396      &32*A1*A2*P1P2*P2Q2*V**2/S-64*A1*A2*P1Q2*P2Q2*V**2/S
45397  
45398  
45399       YY(2, 2) =-16*A**2*A12*MB*MT+
45400      &128*A**2*A12*MB*MT*P1Q1*P1Q2/S**2-
45401      &128*A**2*A12*P1P2*P1Q1*P1Q2/S**2+
45402      &64*A**2*A12*P1Q1*P1Q2*P2Q1/S**2-
45403      &64*A**2*A12*P1Q2**2*P2Q1/S**2-64*A**2*A12*P1Q1**2*P2Q2/S**2+
45404      &64*A**2*A12*P1Q1*P1Q2*P2Q2/S**2-32*A**2*A12*MB*MT**3/S+
45405      &32*A**2*A12*MT**2*P1P2/S+32*A**2*A12*P1P2*P1Q1/S+
45406      &32*A**2*A12*P1P2*P1Q2/S-32*A**2*A12*MT**2*P2Q1/S-
45407      &32*A**2*A12*P1Q1*P2Q1/S-32*A**2*A12*MT**2*P2Q2/S-
45408      &32*A**2*A12*P1Q2*P2Q2/S+16*A12*MB*MT*V**2-
45409      &128*A12*MB*MT*P1Q1*P1Q2*V**2/S**2-
45410      &128*A12*P1P2*P1Q1*P1Q2*V**2/S**2+
45411      &64*A12*P1Q1*P1Q2*P2Q1*V**2/S**2-
45412      &64*A12*P1Q2**2*P2Q1*V**2/S**2-64*A12*P1Q1**2*P2Q2*V**2/S**2+
45413      &64*A12*P1Q1*P1Q2*P2Q2*V**2/S**2+32*A12*MB*MT**3*V**2/S+
45414      &32*A12*MT**2*P1P2*V**2/S+32*A12*P1P2*P1Q1*V**2/S+
45415      &32*A12*P1P2*P1Q2*V**2/S-32*A12*MT**2*P2Q1*V**2/S
45416       YY(2, 2)=YY(2, 2)-32*A12*P1Q1*P2Q1*V**2/S-
45417      &32*A12*MT**2*P2Q2*V**2/S-
45418      &32*A12*P1Q2*P2Q2*V**2/S
45419       YY(2, 2)=2*YY(2, 2)
45420  
45421       RES=YY(1,1)+2*YY(1,2)+YY(2,2)
45422       AMP2=  FACT*PS*VTB**2*RES
45423  
45424       END
45425 C=====================================================================
45426 C     ************* FUNCTION SCALAR PRODUCTS *************************
45427       DOUBLE PRECISION FUNCTION PYTBHS(A,B)
45428       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45429       IMPLICIT INTEGER(I-N)
45430       DIMENSION A(4),B(4)
45431       DUM=A(4)*B(4)
45432       DO 100 ID=1,3
45433          DUM=DUM-A(ID)*B(ID)
45434   100 CONTINUE
45435       PYTBHS=DUM
45436       RETURN
45437       END
45438  
45439 C*********************************************************************
45440  
45441 C...PYMSIN
45442 C...Initializes supersymmetry: finds sparticle masses and
45443 C...branching ratios and stores this information.
45444 C...AUTHOR: STEPHEN MRENNA
45445 C...Author: P. Skands (SLHA + RPV + ISASUSY Interface, NMSSM)
45446  
45447       SUBROUTINE PYMSIN
45448  
45449 C...Double precision and integer declarations.
45450       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45451       IMPLICIT INTEGER(I-N)
45452       INTEGER PYK,PYCHGE,PYCOMP
45453 C...Parameter statement to help give large particle numbers.
45454       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
45455      &KEXCIT=4000000,KDIMEN=5000000)
45456 C...Commonblocks.
45457       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45458       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45459       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
45460       COMMON/PYDAT4/CHAF(500,2)
45461       CHARACTER CHAF*16
45462       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
45463       COMMON/PYINT4/MWID(500),WIDS(500,5)
45464       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
45465       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
45466       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
45467      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
45468       COMMON/PYHTRI/HHH(7)
45469       COMMON/PYQNUM/NQNUM,NQDUM,KQNUM(500,0:9)
45470       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYPARS/,/PYINT4/,
45471      &/PYMSSM/,/PYMSRV/,/PYSSMT/
45472  
45473 C...Local variables.
45474       DOUBLE PRECISION ALFA,BETA
45475       DOUBLE PRECISION TANB,AL,BE,COSA,COSB,SINA,SINB,XW
45476       INTEGER I,J,J1,I1,K1
45477       INTEGER KC,LKNT,IDLAM(400,3)
45478       DOUBLE PRECISION XLAM(0:400)
45479       DOUBLE PRECISION WDTP(0:400),WDTE(0:400,0:5)
45480       DOUBLE PRECISION XARG,COS2B,XMW2,XMZ2
45481       DOUBLE PRECISION DELM,XMDIF
45482       DOUBLE PRECISION DX,DY,DS,DMU2,DMA2,DQ2,DU2,DD2,DL2,DE2,DHU2,DHD2
45483       DOUBLE PRECISION ARG,SGNMU,R
45484       INTEGER IMSSM
45485       INTEGER IRPRTY
45486       INTEGER KFSUSY(50),MWIDSU(36),MDCYSU(36)
45487       SAVE MWIDSU,MDCYSU
45488       DATA KFSUSY/
45489      &1000001,2000001,1000002,2000002,1000003,2000003,
45490      &1000004,2000004,1000005,2000005,1000006,2000006,
45491      &1000011,2000011,1000012,2000012,1000013,2000013,
45492      &1000014,2000014,1000015,2000015,1000016,2000016,
45493      &1000021,1000022,1000023,1000025,1000035,1000024,
45494      &1000037,1000039,     25,     35,     36,     37,
45495      &      6,     24,     45,     46,1000045, 9*0/
45496       DATA INIT/0/
45497  
45498 C...Automatically read QNUMBERS, MASS, and DECAY tables      
45499       IF (IMSS(21).NE.0.OR.MSTP(161).NE.0) THEN
45500         NQNUM=0
45501         CALL PYSLHA(0,0,IFAIL)
45502         CALL PYSLHA(5,0,IFAIL)
45503       ENDIF
45504       IF (IMSS(22).NE.0.OR.MSTP(161).NE.0) CALL PYSLHA(2,0,IFAIL)
45505 
45506 C...Do nothing further if SUSY not requested
45507       IMSSM=IMSS(1)
45508       IF(IMSSM.EQ.0) RETURN
45509       
45510 C...Save copy of MWID(KC) and MDCY(KC,1) values before
45511 C...they are set to zero for the LSP.
45512       IF(INIT.EQ.0) THEN
45513         INIT=1
45514         DO 100 I=1,36
45515           KF=KFSUSY(I)
45516           KC=PYCOMP(KF)
45517           MWIDSU(I)=MWID(KC)
45518           MDCYSU(I)=MDCY(KC,1)
45519   100   CONTINUE
45520       ENDIF
45521  
45522 C...Restore MWID(KC) and MDCY(KC,1) values previously zeroed for LSP.
45523       DO 110 I=1,36
45524         KF=KFSUSY(I)
45525         KC=PYCOMP(KF)
45526         IF(MDCY(KC,1).EQ.0.AND.MDCYSU(I).NE.0) THEN
45527           MWID(KC)=MWIDSU(I)
45528           MDCY(KC,1)=MDCYSU(I)
45529         ENDIF
45530   110 CONTINUE
45531  
45532 C...First part of routine: set masses and couplings.
45533  
45534 C...Reset mixing values in sfermion sector to pure left/right.
45535       DO 120 I=1,16
45536         SFMIX(I,1)=1D0
45537         SFMIX(I,4)=1D0
45538         SFMIX(I,2)=0D0
45539         SFMIX(I,3)=0D0
45540   120 CONTINUE
45541  
45542 C...Add NMSSM states if NMSSM switched on, and change old names.
45543       IF (IMSS(13).NE.0.AND.PYCOMP(1000045).EQ.0) THEN
45544 C...  Switch on NMSSM
45545         WRITE(MSTU(11),*) '(PYMSIN:) switching on NMSSM'
45546  
45547         KFN=25
45548         KCN=KFN
45549         CHAF(KCN,1)='h_10'
45550         CHAF(KCN,2)=' '
45551  
45552         KFN=35
45553         KCN=KFN
45554         CHAF(KCN,1)='h_20'
45555         CHAF(KCN,2)=' '
45556  
45557         KFN=45
45558         KCN=KFN
45559         CHAF(KCN,1)='h_30'
45560         CHAF(KCN,2)=' '
45561  
45562         KFN=36
45563         KCN=KFN
45564         CHAF(KCN,1)='A_10'
45565         CHAF(KCN,2)=' '
45566  
45567         KFN=46
45568         KCN=KFN
45569         CHAF(KCN,1)='A_20'
45570         CHAF(KCN,2)=' '
45571  
45572         KFN=1000045
45573         KCN=PYCOMP(KFN)
45574         IF (KCN.EQ.0) THEN
45575           DO 123 KCT=100,MSTU(6)
45576             IF(KCHG(KCT,4).GT.100) KCN=KCT
45577  123      CONTINUE
45578           KCN=KCN+1
45579           KCHG(KCN,4)=KFN
45580           MSTU(20)=0
45581         ENDIF
45582 C...  Set stable for now
45583         PMAS(KCN,2)=1D-6
45584         MWID(KCN)=0
45585         MDCY(KCN,1)=0
45586         MDCY(KCN,2)=0
45587         MDCY(KCN,3)=0
45588         CHAF(KCN,1)='~chi_50'
45589         CHAF(KCN,2)=' '
45590       ENDIF
45591  
45592 C...Read spectrum from SLHA file.
45593       IF (IMSSM.EQ.11) THEN
45594         CALL PYSLHA(1,0,IFAIL)
45595       ENDIF
45596  
45597 C...Common couplings.
45598       TANB=RMSS(5)
45599       BETA=ATAN(TANB)
45600       COSB=COS(BETA)
45601       SINB=TANB*COSB
45602       COS2B=COS(2D0*BETA)
45603       ALFA=RMSS(18)
45604       XMW2=PMAS(24,1)**2
45605       XMZ2=PMAS(23,1)**2
45606       XW=PARU(102)
45607  
45608 C...Define sparticle masses for a general MSSM simulation.
45609       IF(IMSSM.EQ.1) THEN
45610         IF(IMSS(9).EQ.0) RMSS(22)=RMSS(9)
45611         DO 130 I=1,5,2
45612           KC=PYCOMP(KSUSY1+I)
45613           PMAS(KC,1)=SQRT(RMSS(8)**2-(2D0*XMW2+XMZ2)*COS2B/6D0)
45614           KC=PYCOMP(KSUSY2+I)
45615           PMAS(KC,1)=SQRT(RMSS(9)**2+(XMW2-XMZ2)*COS2B/3D0)
45616           KC=PYCOMP(KSUSY1+I+1)
45617           PMAS(KC,1)=SQRT(RMSS(8)**2+(4D0*XMW2-XMZ2)*COS2B/6D0)
45618           KC=PYCOMP(KSUSY2+I+1)
45619           PMAS(KC,1)=SQRT(RMSS(22)**2-(XMW2-XMZ2)*COS2B*2D0/3D0)
45620   130   CONTINUE
45621         XARG=RMSS(6)**2-PMAS(24,1)**2*ABS(COS(2D0*BETA))
45622         IF(XARG.LT.0D0) THEN
45623           WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
45624      &    ' FROM THE SUM RULE. '
45625           WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
45626           RETURN
45627         ELSE
45628           XARG=SQRT(XARG)
45629         ENDIF
45630         DO 140 I=11,15,2
45631           PMAS(PYCOMP(KSUSY1+I),1)=RMSS(6)
45632           PMAS(PYCOMP(KSUSY2+I),1)=RMSS(7)
45633           PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
45634           PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
45635   140   CONTINUE
45636         IF(IMSS(8).EQ.1) THEN
45637           RMSS(13)=RMSS(6)
45638           RMSS(14)=RMSS(7)
45639         ENDIF
45640  
45641 C...Alternatively derive masses from SUGRA relations.
45642       ELSEIF(IMSSM.EQ.2) THEN
45643         RMSS(36)=RMSS(16)
45644         CALL PYAPPS
45645 C...Or use ISASUSY
45646       ELSEIF(IMSSM.EQ.12.OR.IMSSM.EQ.13) THEN
45647         RMSS(36)=RMSS(16)
45648         CALL PYSUGI
45649         ALFA=RMSS(18)
45650         GOTO 170
45651       ELSE
45652         GOTO 170
45653       ENDIF
45654  
45655 C...Add in extra D-term contributions.
45656       IF(IMSS(7).EQ.1) THEN
45657         R=0.43D0
45658         DX=RMSS(23)
45659         DY=RMSS(24)
45660         DS=RMSS(25)
45661         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
45662         WRITE(MSTU(11),*) 'C  NEW DTERMS ADDED TO SCALAR MASSES   '
45663         WRITE(MSTU(11),*) 'C   IN A U(B-L) THEORY                 '
45664         WRITE(MSTU(11),*) 'C   DX = ',DX
45665         WRITE(MSTU(11),*) 'C   DY = ',DY
45666         WRITE(MSTU(11),*) 'C   DS = ',DS
45667         WRITE(MSTU(11),*) 'C                                      '
45668         DY=R*DY-4D0/33D0*(1D0-R)*DX+(1D0-R)/33D0*DS
45669         WRITE(MSTU(11),*) 'C   DY AT THE WEAK SCALE = ',DY
45670         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
45671         DQ2=DY/6D0-DX/3D0-DS/3D0
45672         DU2=-2D0*DY/3D0-DX/3D0-DS/3D0
45673         DD2=DY/3D0+DX-2D0*DS/3D0
45674         DL2=-DY/2D0+DX-2D0*DS/3D0
45675         DE2=DY-DX/3D0-DS/3D0
45676         DHU2=DY/2D0+2D0*DX/3D0+2D0*DS/3D0
45677         DHD2=-DY/2D0-2D0*DX/3D0+DS
45678         DMU2=(-DY/2D0-2D0/3D0*DX+(COSB**2-2D0*SINB**2/3D0)*DS)
45679      &  /ABS(COS2B)
45680         DMA2 = 2D0*DMU2+DHU2+DHD2
45681         DO 150 I=1,5,2
45682           KC=PYCOMP(KSUSY1+I)
45683           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
45684           KC=PYCOMP(KSUSY2+I)
45685           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DD2)
45686           KC=PYCOMP(KSUSY1+I+1)
45687           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
45688           KC=PYCOMP(KSUSY2+I+1)
45689           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DU2)
45690   150   CONTINUE
45691         DO 160 I=11,15,2
45692           KC=PYCOMP(KSUSY1+I)
45693           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
45694           KC=PYCOMP(KSUSY2+I)
45695           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DE2)
45696           KC=PYCOMP(KSUSY1+I+1)
45697           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
45698   160   CONTINUE
45699         IF(RMSS(4)**2+DMU2.LT.0D0) THEN
45700           WRITE(MSTU(11),*) ' MU2 DRIVEN NEGATIVE '
45701           CALL PYSTOP(104)
45702         ENDIF
45703         SGNMU=SIGN(1D0,RMSS(4))
45704         RMSS(4)=SGNMU*SQRT(RMSS(4)**2+DMU2)
45705         ARG=RMSS(10)**2*SIGN(1D0,RMSS(10))+DQ2
45706         RMSS(10)=SIGN(SQRT(ABS(ARG)),ARG)
45707         ARG=RMSS(11)**2*SIGN(1D0,RMSS(11))+DD2
45708         RMSS(11)=SIGN(SQRT(ABS(ARG)),ARG)
45709         ARG=RMSS(12)**2*SIGN(1D0,RMSS(12))+DU2
45710         RMSS(12)=SIGN(SQRT(ABS(ARG)),ARG)
45711         ARG=RMSS(13)**2*SIGN(1D0,RMSS(13))+DL2
45712         RMSS(13)=SIGN(SQRT(ABS(ARG)),ARG)
45713         ARG=RMSS(14)**2*SIGN(1D0,RMSS(14))+DE2
45714         RMSS(14)=SIGN(SQRT(ABS(ARG)),ARG)
45715         IF( RMSS(19)**2 + DMA2 .LE. 50D0 ) THEN
45716           WRITE(MSTU(11),*) ' MA DRIVEN TOO LOW '
45717           CALL PYSTOP(104)
45718         ENDIF
45719         RMSS(19)=SQRT(RMSS(19)**2+DMA2)
45720         RMSS(6)=SQRT(RMSS(6)**2+DL2)
45721         RMSS(7)=SQRT(RMSS(7)**2+DE2)
45722         WRITE(MSTU(11),*) ' MTL = ',RMSS(10)
45723         WRITE(MSTU(11),*) ' MBR = ',RMSS(11)
45724         WRITE(MSTU(11),*) ' MTR = ',RMSS(12)
45725         WRITE(MSTU(11),*) ' SEL = ',RMSS(6),RMSS(13)
45726         WRITE(MSTU(11),*) ' SER = ',RMSS(7),RMSS(14)
45727       ENDIF
45728  
45729 C...Fix the third generation sfermions.
45730       CALL PYTHRG
45731  
45732 C...Fix the neutralino--chargino--gluino sector.
45733       CALL PYINOM
45734  
45735 C...Fix the Higgs sector.
45736       CALL PYHGGM(ALFA)
45737  
45738 C...Choose the Gunion-Haber convention.
45739       ALFA=-ALFA
45740       RMSS(18)=ALFA
45741  
45742 C...Print information on mass parameters.
45743       IF(IMSSM.EQ.2.AND.MSTP(122).GT.0) THEN
45744         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
45745         WRITE(MSTU(11),*) ' USING APPROXIMATE SUGRA RELATIONS '
45746         WRITE(MSTU(11),*) ' M0 = ',RMSS(8)
45747         WRITE(MSTU(11),*) ' M1/2=',RMSS(1)
45748         WRITE(MSTU(11),*) ' TANB=',RMSS(5)
45749         WRITE(MSTU(11),*) ' MU = ',RMSS(4)
45750         WRITE(MSTU(11),*) ' AT = ',RMSS(16)
45751         WRITE(MSTU(11),*) ' MA = ',RMSS(19)
45752         WRITE(MSTU(11),*) ' MTOP=',PMAS(6,1)
45753         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
45754       ENDIF
45755       IF(IMSS(20).EQ.1) THEN
45756         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
45757         WRITE(MSTU(11),*) ' DEBUG MODE '
45758         WRITE(MSTU(11),*) ' UMIX = ',UMIX(1,1),UMIX(1,2),
45759      &  UMIX(2,1),UMIX(2,2)
45760         WRITE(MSTU(11),*) ' UMIXI = ',UMIXI(1,1),UMIXI(1,2),
45761      &  UMIXI(2,1),UMIXI(2,2)
45762         WRITE(MSTU(11),*) ' VMIX = ',VMIX(1,1),VMIX(1,2),
45763      &  VMIX(2,1),VMIX(2,2)
45764         WRITE(MSTU(11),*) ' VMIXI = ',VMIXI(1,1),VMIXI(1,2),
45765      &  VMIXI(2,1),VMIXI(2,2)
45766         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(1,I),I=1,4)
45767         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(1,I),I=1,4)
45768         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(2,I),I=1,4)
45769         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(2,I),I=1,4)
45770         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(3,I),I=1,4)
45771         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(3,I),I=1,4)
45772         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(4,I),I=1,4)
45773         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(4,I),I=1,4)
45774         WRITE(MSTU(11),*) ' ALFA = ',ALFA
45775         WRITE(MSTU(11),*) ' BETA = ',BETA
45776         WRITE(MSTU(11),*) ' STOP = ',(SFMIX(6,I),I=1,4)
45777         WRITE(MSTU(11),*) ' SBOT = ',(SFMIX(5,I),I=1,4)
45778         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
45779       ENDIF
45780  
45781 C...Set up the Higgs couplings - needed here since initialization
45782 C...in PYINRE did not yet occur when PYWIDT is called below.
45783   170 AL=ALFA
45784       BE=BETA
45785       SINA=SIN(AL)
45786       COSA=COS(AL)
45787       COSB=COS(BE)
45788       SINB=TANB*COSB
45789       SBMA=SIN(BE-AL)
45790       SAPB=SIN(AL+BE)
45791       CAPB=COS(AL+BE)
45792       CBMA=COS(BE-AL)
45793       C2A=COS(2D0*AL)
45794       C2B=COSB**2-SINB**2
45795 C...tanb (used for H+)
45796       PARU(141)=TANB
45797  
45798 C...Firstly: h
45799 C...Coupling to d-type quarks
45800       PARU(161)=SINA/COSB
45801 C...Coupling to u-type quarks
45802       PARU(162)=-COSA/SINB
45803 C...Coupling to leptons
45804       PARU(163)=PARU(161)
45805 C...Coupling to Z
45806       PARU(164)=SBMA
45807 C...Coupling to W
45808       PARU(165)=PARU(164)
45809  
45810 C...Secondly: H
45811 C...Coupling to d-type quarks
45812       PARU(171)=-COSA/COSB
45813 C...Coupling to u-type quarks
45814       PARU(172)=-SINA/SINB
45815 C...Coupling to leptons
45816       PARU(173)=PARU(171)
45817 C...Coupling to Z
45818       PARU(174)=CBMA
45819 C...Coupling to W
45820       PARU(175)=PARU(174)
45821 C...Coupling to h
45822       IF(IMSS(4).GE.2) THEN
45823         PARU(176)=COS(2D0*AL)*COS(BE+AL)-2D0*SIN(2D0*AL)*SIN(BE+AL)
45824       ELSE
45825         HHH(3)=HHH(3)+HHH(4)+HHH(5)
45826         PARU(176)=-3D0/HHH(1)*(HHH(1)*SINA**2*COSB*COSA+
45827      1  HHH(2)*COSA**2*SINB*SINA+HHH(3)*(SINA**3*SINB+COSA**3*COSB-
45828      2  2D0/3D0*CBMA)-HHH(6)*SINA*(COSB*C2A+COSA*CAPB)+
45829      3  HHH(7)*COSA*(SINB*C2A+SINA*CAPB))
45830       ENDIF
45831 C...Coupling to H+
45832 C...Define later
45833       IF(IMSS(4).GE.2) THEN
45834         PARU(168)=-SBMA-COS(2D0*BE)*SAPB/2D0/(1D0-XW)
45835       ELSE
45836         PARU(168)=1D0/HHH(1)*(HHH(1)*SINB**2*COSB*SINA-
45837      1 HHH(2)*COSB**2*SINB*COSA-HHH(3)*(SINB**3*COSA-COSB**3*SINA)+
45838      2 2D0*HHH(5)*SBMA-HHH(6)*SINB*(COSB*SAPB+SINA*C2B)-
45839      3 HHH(7)*COSB*(COSA*C2B-SINB*SAPB)-(HHH(5)-HHH(4))*SBMA)
45840       ENDIF
45841 C...Coupling to A
45842       IF(IMSS(4).GE.2) THEN
45843         PARU(177)=COS(2D0*BE)*COS(BE+AL)
45844       ELSE
45845         PARU(177)=-1D0/HHH(1)*(HHH(1)*SINB**2*COSB*COSA+
45846      1 HHH(2)*COSB**2*SINB*SINA+HHH(3)*(SINB**3*SINA+COSB**3*COSA)-
45847      2 2D0*HHH(5)*CBMA-HHH(6)*SINB*(COSB*CAPB+COSA*C2B)+
45848      3 HHH(7)*COSB*(SINB*CAPB+SINA*C2B))
45849       ENDIF
45850 C...Coupling to H+
45851       IF(IMSS(4).GE.2) THEN
45852         PARU(178)=PARU(177)
45853       ELSE
45854         PARU(178)=PARU(177)-(HHH(5)-HHH(4))/HHH(1)*CBMA
45855       ENDIF
45856 C...Thirdly, A
45857 C...Coupling to d-type quarks
45858       PARU(181)=TANB
45859 C...Coupling to u-type quarks
45860       PARU(182)=1D0/PARU(181)
45861 C...Coupling to leptons
45862       PARU(183)=PARU(181)
45863       PARU(184)=0D0
45864       PARU(185)=0D0
45865 C...Coupling to Z h
45866       PARU(186)=COS(BE-AL)
45867 C...Coupling to Z H
45868       PARU(187)=SIN(BE-AL)
45869       PARU(188)=0D0
45870       PARU(189)=0D0
45871       PARU(190)=0D0
45872  
45873 C...Finally: H+
45874 C...Coupling to W h
45875       PARU(195)=COS(BE-AL)
45876  
45877 C...Tell that all Higgs couplings have been set.
45878       MSTP(4)=1
45879  
45880 C...Set R-Violating couplings.
45881 C...Set lambda couplings to common value or "natural values".
45882       IF ((IMSS(51).NE.3).AND.(IMSS(51).NE.0)) THEN
45883         VIR3=1D0/(126D0)**3
45884         DO 200 IRK=1,3
45885           DO 190 IRI=1,3
45886             DO 180 IRJ=1,3
45887               IF (IRI.NE.IRJ) THEN
45888                 IF (IRI.LT.IRJ) THEN
45889                   RVLAM(IRI,IRJ,IRK)=RMSS(51)
45890                   IF (IMSS(51).EQ.2) RVLAM(IRI,IRJ,IRK)=RMSS(51)*
45891      &              SQRT(PMAS(9+2*IRI,1)*PMAS(9+2*IRJ,1)*
45892      &              PMAS(9+2*IRK,1)*VIR3)
45893                 ELSE
45894                   RVLAM(IRI,IRJ,IRK)=-RVLAM(IRJ,IRI,IRK)
45895                 ENDIF
45896               ELSE
45897                 RVLAM(IRI,IRJ,IRK)=0D0
45898               ENDIF
45899   180       CONTINUE
45900   190     CONTINUE
45901   200   CONTINUE
45902       ENDIF
45903 C...Set lambda' couplings to common value or "natural values".
45904       IF ((IMSS(52).NE.3).AND.(IMSS(52).NE.0)) THEN
45905         VIR3=1D0/(126D0)**3
45906         DO 230 IRI=1,3
45907           DO 220 IRJ=1,3
45908             DO 210 IRK=1,3
45909               RVLAMP(IRI,IRJ,IRK)=RMSS(52)
45910               IF (IMSS(52).EQ.2) RVLAMP(IRI,IRJ,IRK)=RMSS(52)*
45911      &          SQRT(PMAS(9+2*IRI,1)*0.5D0*(PMAS(2*IRJ,1)+
45912      &          PMAS(2*IRJ-1,1))*PMAS(2*IRK-1,1)*VIR3)
45913   210       CONTINUE
45914   220     CONTINUE
45915   230   CONTINUE
45916       ENDIF
45917 C...Set lambda'' couplings to common value or "natural values".
45918       IF ((IMSS(53).NE.3).AND.(IMSS(53).NE.0)) THEN
45919         VIR3=1D0/(126D0)**3
45920         DO 260 IRI=1,3
45921           DO 250 IRJ=1,3
45922             DO 240 IRK=1,3
45923               IF (IRJ.NE.IRK) THEN
45924                 IF (IRJ.LT.IRK) THEN
45925                   RVLAMB(IRI,IRJ,IRK)=RMSS(53)
45926                   IF (IMSS(53).EQ.2) RVLAMB(IRI,IRJ,IRK)=
45927      &              RMSS(53)*SQRT(PMAS(2*IRI,1)*PMAS(2*IRJ-1,1)*
45928      &              PMAS(2*IRK-1,1)*VIR3)
45929                 ELSE
45930                   RVLAMB(IRI,IRJ,IRK)=-RVLAMB(IRI,IRK,IRJ)
45931                 ENDIF
45932               ELSE
45933                 RVLAMB(IRI,IRJ,IRK) = 0D0
45934               ENDIF
45935   240       CONTINUE
45936   250     CONTINUE
45937   260   CONTINUE
45938       ENDIF
45939  
45940 C...Antisymmetrize couplings set by user
45941       IF (IMSS(51).EQ.3.OR.IMSS(53).EQ.3) THEN
45942         DO 290 IRI=1,3
45943           DO 280 IRJ=1,3
45944             DO 270 IRK=1,3
45945               IF (RVLAM(IRI,IRJ,IRK).NE.-RVLAM(IRJ,IRI,IRK)) THEN
45946                 RVLAM(IRJ,IRI,IRK)=-RVLAM(IRI,IRJ,IRK)
45947                 IF (IRI.EQ.IRJ) RVLAM(IRI,IRJ,IRK)=0D0
45948               ENDIF
45949               IF (RVLAMB(IRI,IRJ,IRK).NE.-RVLAMB(IRI,IRK,IRJ)) THEN
45950                 RVLAMB(IRI,IRK,IRJ)=-RVLAMB(IRI,IRJ,IRK)
45951                 IF (IRJ.EQ.IRK) RVLAMB(IRI,IRJ,IRK)=0D0
45952               ENDIF
45953   270       CONTINUE
45954   280     CONTINUE
45955   290   CONTINUE
45956       ENDIF
45957  
45958 C...Write spectrum to SLHA file
45959       IF (IMSS(23).NE.0) THEN
45960         IFAIL=0
45961         CALL PYSLHA(3,0,IFAIL)
45962       ENDIF
45963  
45964 C...Second part of routine: set decay modes and branching ratios.
45965  
45966 C...Allow chi10 -> gravitino + gamma or not.
45967       KC=PYCOMP(KSUSY1+39)
45968       IF( IMSS(11) .NE. 0 ) THEN
45969         PMAS(KC,1)=RMSS(21)/1D9
45970         PMAS(KC,2)=0D0
45971         IRPRTY=0
45972         WRITE(MSTU(11),*) ' ALLOWING DECAYS TO GRAVITINOS '
45973       ELSE IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
45974         IRPRTY=0
45975         IF (IMSS(51).GE.1) WRITE(MSTU(11),*)
45976      &       ' ALLOWING SUSY LLE DECAYS'
45977         IF (IMSS(52).GE.1) WRITE(MSTU(11),*)
45978      &       ' ALLOWING SUSY LQD DECAYS'
45979         IF (IMSS(53).GE.1) WRITE(MSTU(11),*)
45980      &       ' ALLOWING SUSY UDD DECAYS'
45981         IF (IMSS(53).GE.1.AND.IMSS(52).GE.1) WRITE(MSTU(11),*)
45982      &   ' --- Warning: R-Violating couplings possibly',
45983      &       ' incompatible with proton decay'
45984       ELSE
45985         PMAS(KC,1)=9999D0
45986         IRPRTY=1
45987       ENDIF
45988  
45989 C...Loop over sparticle and Higgs species.
45990       PMCHI1=PMAS(PYCOMP(KSUSY1+22),1)
45991 C...Find the LSP or NLSP for a gravitino LSP
45992       ILSP=0
45993       PMLSP=1D20
45994       DO 300 I=1,36
45995         KF=KFSUSY(I)
45996         IF(KF.EQ.1000039) GOTO 300
45997         KC=PYCOMP(KF)
45998         IF(PMAS(KC,1).LT.PMLSP) THEN
45999           ILSP=I
46000           PMLSP=PMAS(KC,1)
46001         ENDIF
46002   300 CONTINUE
46003       DO 370 I=1,50
46004         IF (I.GT.39.AND.IMSS(13).NE.1) GOTO 370
46005         KF=KFSUSY(I)
46006         IF (KF.EQ.0) GOTO 370
46007         KC=PYCOMP(KF)
46008         LKNT=0
46009  
46010 C...Check if there are any decays listed for this sparticle
46011 C...in a file
46012         IF (IMSS(22).NE.0.OR.MSTP(161).NE.0) THEN
46013           IFAIL=0
46014           CALL PYSLHA(2,KF,IFAIL)
46015           IF (IFAIL.EQ.0.OR.KF.EQ.6.OR.KF.EQ.24) GOTO 370
46016         ELSEIF (I.GE.37) THEN
46017           GOTO 370
46018         ENDIF
46019  
46020 C...Sfermion decays.
46021         IF(I.LE.24) THEN
46022 C...First check to see if sneutrino is lighter than chi10.
46023           IF((I.EQ.15.OR.I.EQ.19.OR.I.EQ.23).AND.
46024      &    PMAS(KC,1).LT.PMCHI1) THEN
46025           ELSE
46026             CALL PYSFDC(KF,XLAM,IDLAM,LKNT)
46027           ENDIF
46028  
46029 C...Gluino decays.
46030         ELSEIF(I.EQ.25) THEN
46031           CALL PYGLUI(KF,XLAM,IDLAM,LKNT)
46032           IF(I.EQ.ILSP.AND.IRPRTY.EQ.1) LKNT=0
46033  
46034 C...Neutralino decays.
46035         ELSEIF(I.GE.26.AND.I.LE.29) THEN
46036           CALL PYNJDC(KF,XLAM,IDLAM,LKNT)
46037 C...chi10 stable or chi10 -> gravitino + gamma.
46038           IF(I.EQ.26.AND.IRPRTY.EQ.1) THEN
46039             PMAS(KC,2)=1D-6
46040             MDCY(KC,1)=0
46041             MWID(KC)=0
46042           ENDIF
46043  
46044 C...Chargino decays.
46045         ELSEIF(I.GE.30.AND.I.LE.31) THEN
46046           CALL PYCJDC(KF,XLAM,IDLAM,LKNT)
46047  
46048 C...Gravitino is stable.
46049         ELSEIF(I.EQ.32) THEN
46050           MDCY(KC,1)=0
46051           MWID(KC)=0
46052  
46053 C...Higgs decays.
46054         ELSEIF(I.GE.33.AND.I.LE.36) THEN
46055 C...Calculate decays to non-SUSY particles.
46056           CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
46057           LKNT=0
46058           DO 310 I1=0,100
46059             XLAM(I1)=0D0
46060   310     CONTINUE
46061           DO 330 I1=1,MDCY(KC,3)
46062             K1=MDCY(KC,2)+I1-1
46063             IF(IABS(KFDP(K1,1)).GT.KSUSY1.OR.
46064      &      IABS(KFDP(K1,2)).GT.KSUSY1) GOTO 330
46065             XLAM(I1)=WDTP(I1)
46066             XLAM(0)=XLAM(0)+XLAM(I1)
46067             DO 320 J1=1,3
46068               IDLAM(I1,J1)=KFDP(K1,J1)
46069   320       CONTINUE
46070             LKNT=LKNT+1
46071   330     CONTINUE
46072 C...Add the decays to SUSY particles.
46073           CALL PYHEXT(KF,XLAM,IDLAM,LKNT)
46074         ENDIF
46075 C...Zero the branching ratios for use in loop mode
46076 C...thanks to K. Matchev (FNAL)
46077         DO 340 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
46078           BRAT(IDC)=0D0
46079   340   CONTINUE
46080  
46081 C...Set stable particles.
46082         IF(LKNT.EQ.0) THEN
46083           MDCY(KC,1)=0
46084           MWID(KC)=0
46085           PMAS(KC,2)=1D-6
46086           PMAS(KC,3)=1D-5
46087           PMAS(KC,4)=0D0
46088  
46089 C...Store branching ratios in the standard tables.
46090         ELSE
46091           IDC=MDCY(KC,2)+MDCY(KC,3)-1
46092           DELM=1D6
46093           DO 360 IL=1,LKNT
46094             IDCSV=IDC
46095   350       IDC=IDC+1
46096             BRAT(IDC)=0D0
46097             IF(IDC.EQ.MDCY(KC,2)+MDCY(KC,3)) IDC=MDCY(KC,2)
46098             IF(IDLAM(IL,1).EQ.KFDP(IDC,1).AND.IDLAM(IL,2).EQ.
46099      &      KFDP(IDC,2).AND.IDLAM(IL,3).EQ.KFDP(IDC,3)) THEN
46100               BRAT(IDC)=XLAM(IL)/XLAM(0)
46101               XMDIF=PMAS(KC,1)
46102               IF(MDME(IDC,1).GE.1) THEN
46103                 XMDIF=XMDIF-PMAS(PYCOMP(KFDP(IDC,1)),1)-
46104      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
46105                 IF(KFDP(IDC,3).NE.0) XMDIF=XMDIF-
46106      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
46107               ENDIF
46108               IF(I.LE.32) THEN
46109                 IF(XMDIF.GE.0D0) THEN
46110                   DELM=MIN(DELM,XMDIF)
46111                 ELSE
46112                   WRITE(MSTU(11),*) ' ERROR WITH DELM ',DELM,XMDIF
46113                   WRITE(MSTU(11),*) ' KF = ',KF
46114                   WRITE(MSTU(11),*) ' KF(decay) = ',(KFDP(IDC,J),J=1,3)
46115                 ENDIF
46116               ENDIF
46117               GOTO 360
46118             ELSEIF(IDC.EQ.IDCSV) THEN
46119               WRITE(MSTU(11),*) ' Error in PYMSIN: SUSY decay ',
46120      &        'channel not recognized:'
46121               WRITE(MSTU(11),*) KF,' -> ',(IDLAM(IL,J),J=1,3)
46122               GOTO 360
46123             ELSE
46124               GOTO 350
46125             ENDIF
46126   360     CONTINUE
46127  
46128 C...Store width, cutoff and lifetime.
46129           PMAS(KC,2)=XLAM(0)
46130           IF(PMAS(KC,2).LT.0.1D0*DELM) THEN
46131             PMAS(KC,3)=PMAS(KC,2)*10D0
46132           ELSE
46133             PMAS(KC,3)=0.95D0*DELM
46134           ENDIF
46135           IF(PMAS(KC,2).NE.0D0) THEN
46136             PMAS(KC,4)=PARU(3)/PMAS(KC,2)*1D-12
46137           ENDIF
46138 C...Write decays to SLHA file
46139           IF (IMSS(24).NE.0) THEN
46140             IFAIL=0
46141             CALL PYSLHA(4,KF,IFAIL)
46142           ENDIF
46143  
46144         ENDIF
46145   370 CONTINUE
46146  
46147       RETURN
46148       END
46149 C*********************************************************************
46150  
46151 C...PYSLHA
46152 C...Read/write spectrum or decay data from SLHA standard file(s).
46153 C...P. Skands
46154 C...DECAY TABLE writeout by Nils-Erik Bomark (2010)
46155 
46156 C...MUPDA=0 : READ QNUMBERS/PARTICLE ON LUN=IMSS(21)
46157 C...MUPDA=1 : READ SLHA SPECTRUM ON LUN=IMSS(21)
46158 C...MUPDA=2 : LOOK FOR DECAY TABLE FOR KF=KFORIG ON LUN=IMSS(22)
46159 C...          (KFORIG=0 : read all decay tables)
46160 C...MUPDA=3 : WRITE SPECTRUM ON LUN=IMSS(23)
46161 C...MUPDA=4 : WRITE DECAY TABLE FOR KF=KFORIG ON LUN=IMSS(24)
46162 C...MUPDA=5 : READ MASS FOR KF=KFORIG ONLY
46163 C...          (KFORIG=0 : read all MASS entries)
46164  
46165       SUBROUTINE PYSLHA(MUPDA,KFORIG,IRETRN)
46166  
46167 C...Double precision and integer declarations.
46168       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46169       IMPLICIT INTEGER(I-N)
46170       INTEGER PYK,PYCHGE,PYCOMP
46171       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
46172      &KEXCIT=4000000,KDIMEN=5000000)
46173 C...Commonblocks.
46174       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46175       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46176       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
46177       COMMON/PYDAT4/CHAF(500,2)
46178       CHARACTER CHAF*16
46179       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
46180       CHARACTER*40 ISAVER,VISAJE
46181       COMMON/PYINT4/MWID(500),WIDS(500,5)
46182       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYPARS/,/PYINT4/
46183 C...SUSY blocks
46184       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46185       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
46186      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
46187       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
46188       SAVE /PYMSSM/,/PYSSMT/,/PYMSRV/
46189  
46190 C...Local arrays, character variables and data.
46191       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
46192      &     AU(3,3),AD(3,3),AE(3,3)
46193       COMMON/PYLH3C/CPRO(2),CVER(2)
46194 C...The common block of new states (QNUMBERS / PARTICLE)
46195       COMMON/PYQNUM/NQNUM,NQDUM,KQNUM(500,0:9)
46196 C...- NQNUM : Number of QNUMBERS blocks that have been read in
46197 C...- KQNUM(I,0) : KF of new state
46198 C...- KQNUM(I,1) : 3 times electric charge
46199 C...- KQNUM(I,2) : Number of spin states: (2S + 1)
46200 C...- KQNUM(I,3) : Colour rep  (1: singlet, 3: triplet, 8: octet)
46201 C...- KQNUM(I,4) : Particle/Antiparticle distinction (0=own anti)
46202 C...- KQNUM(I,5:9) : space available for further quantum numbers
46203       DIMENSION MMOD(100),MSPC(100),KFDEC(100)
46204       SAVE /PYLH3P/,/PYLH3C/,/PYQNUM/,MMOD,MSPC,KFDEC
46205 C...MMOD: flags to set for each block read in.
46206 C... 1: MODSEL     2: MINPAR     3: EXTPAR     4: SMINPUTS
46207 C...MSPC: Flags to set for each block read in.
46208 C... 1: MASS       2: NMIX       3: UMIX       4: VMIX       5: SBOTMIX
46209 C... 6: STOPMIX    7: STAUMIX    8: HMIX       9: GAUGE     10: AU
46210 C...11: AD        12: AE        13: YU        14: YD        15: YE
46211 C...16: SPINFO    17: ALPHA     18: MSOFT     19: QNUMBERS
46212       CHARACTER CPRO*12,CVER*12,CHNLIN*6
46213       CHARACTER DOC*11, CHDUM*120, CHBLCK*60
46214       CHARACTER CHINL*120,CHKF*9,CHTMP*16
46215       INTEGER VERBOS
46216       SAVE VERBOS
46217 C...Date of last Change
46218       PARAMETER (DOC='10 Jun 2010')
46219 C...Local arrays and initial values
46220       DIMENSION IDC(5),KFSUSY(50)
46221       SAVE KFSUSY
46222       DATA NQNUM /0/
46223       DATA NDECAY /0/
46224       DATA VERBOS /1/
46225       DATA NHELLO /0/
46226       DATA MLHEF /0/
46227       DATA MLHEFD /0/
46228       DATA KFSUSY/
46229      &1000001,1000002,1000003,1000004,1000005,1000006,
46230      &2000001,2000002,2000003,2000004,2000005,2000006,
46231      &1000011,1000012,1000013,1000014,1000015,1000016,
46232      &2000011,2000012,2000013,2000014,2000015,2000016,
46233      &1000021,1000022,1000023,1000025,1000035,1000024,
46234      &1000037,1000039,     25,     35,     36,     37,
46235      &      6,     24,     45,     46,1000045, 9*0/
46236       DATA KFDEC/100*0/
46237       RMFUN(IP)=PMAS(PYCOMP(IP),1)
46238       
46239 C...Shorthand for spectrum and decay table unit numbers
46240       IMSS21=IMSS(21)
46241       IMSS22=IMSS(22)
46242  
46243 C...Default for LHEF input: read header information
46244       IF (IMSS21.EQ.0.AND.MSTP(161).NE.0) IMSS21=MSTP(161)
46245       IF (IMSS22.EQ.0.AND.MSTP(161).NE.0) IMSS22=MSTP(161)
46246       IF (IMSS21.EQ.MSTP(161).AND.IMSS21.NE.0) MLHEF=1
46247       IF (IMSS22.EQ.MSTP(161).AND.IMSS22.NE.0) MLHEFD=1
46248  
46249 C...Hello World
46250       IF (NHELLO.EQ.0) THEN
46251         IF ((MLHEF.NE.1.AND.MLHEFD.NE.1).OR.(IMSS(1).NE.0)) THEN
46252           WRITE(MSTU(11),5000) DOC
46253           NHELLO=1
46254         ENDIF
46255       ENDIF
46256  
46257 C...SLHA file assumed opened by user on unit LFN, stored in IMSS(20
46258 C...+MUPDA).
46259       LFN=IMSS21
46260       IF (MUPDA.EQ.2) LFN=IMSS22
46261       IF (MUPDA.EQ.3) LFN=IMSS(23)
46262       IF (MUPDA.EQ.4) LFN=IMSS(24)
46263 C...Flag that we have not yet found whatever we were asked to find.
46264       IRETRN=1
46265 C...Flag that we are skipping until <slha> tag found (if LHEF)
46266       ISKIP=0
46267       IF (MLHEF.EQ.1.OR.MLHEFD.EQ.1) ISKIP=1
46268  
46269 C...STOP IF LFN IS ZERO (i.e. if no LFN was given).
46270       IF (LFN.EQ.0) THEN
46271         WRITE(MSTU(11),*) '* (PYSLHA:) No valid unit given in IMSS'
46272         GOTO 9999
46273       ENDIF
46274  
46275 C...If reading LHEF header, start by rewinding file
46276       IF (MLHEF.EQ.1.OR.MLHEFD.EQ.1) REWIND(LFN)
46277  
46278 C...If told to read spectrum, first zero all previous information.
46279       IF (MUPDA.EQ.1) THEN
46280 C...Zero all block read flags
46281         DO 100 M=1,100
46282           MMOD(M)=0
46283           MSPC(M)=0
46284   100   CONTINUE
46285 C...Zero all (MSSM) masses, widths, and lifetimes in PYTHIA
46286         DO 110 ISUSY=1,36
46287           KC=PYCOMP(KFSUSY(ISUSY))
46288           PMAS(KC,1)=0D0
46289   110   CONTINUE
46290 C...Zero all (3rd gen sfermion + gaugino/higgsino) mixing matrices.
46291         DO 130 J=1,4
46292           SFMIX(5,J) =0D0
46293           SFMIX(6,J) =0D0
46294           SFMIX(15,J)=0D0
46295           DO 120 L=1,4
46296             ZMIX(L,J) =0D0
46297             ZMIXI(L,J)=0D0
46298             IF (J.LE.2.AND.L.LE.2) THEN
46299               UMIX(L,J) =0D0
46300               UMIXI(L,J)=0D0
46301               VMIX(L,J) =0D0
46302               VMIXI(L,J)=0D0
46303             ENDIF
46304   120     CONTINUE
46305 C...Zero signed masses.
46306           SMZ(J)=0D0
46307           IF (J.LE.2) SMW(J)=0D0
46308   130   CONTINUE
46309  
46310 C...If reading decays, reset PYTHIA decay counters.
46311       ELSEIF (MUPDA.EQ.2) THEN
46312 C...Check if DECAY for this KF already read
46313         IF (KFORIG.NE.0) THEN
46314           DO 140 IDEC=1,NDECAY
46315             IF (KFORIG.EQ.KFDEC(IDEC)) THEN
46316               IRETRN=0
46317               RETURN
46318             ENDIF
46319   140     CONTINUE
46320         ENDIF
46321         KCC=100
46322         NDC=0
46323         BRSUM=0D0
46324         DO 150 KC=1,MSTU(6)
46325           IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
46326           NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
46327   150   CONTINUE
46328       ELSEIF (MUPDA.EQ.5) THEN
46329 C...Zero block read flags
46330         DO 160 M=1,100
46331           MSPC(M)=0
46332   160   CONTINUE
46333       ENDIF
46334  
46335 C............READ
46336 C...(QNUMBERS, spectrum, or decays of KF=KFORIG or MASS of KF=KFORIG)
46337       IF(MUPDA.EQ.0.OR.MUPDA.EQ.1.OR.MUPDA.EQ.2.OR.MUPDA.EQ.5) THEN
46338 C...Initialize program and version strings
46339         IF(MUPDA.EQ.1.OR.MUPDA.EQ.2) THEN
46340         CPRO(MUPDA)=' '
46341         CVER(MUPDA)=' '
46342         ENDIF
46343  
46344 C...Initialize read loop
46345         MERR=0
46346         NLINE=0
46347         CHBLCK=' '
46348 C...READ NEW LINE INTO CHINL. GOTO 300 AT END-OF-FILE.
46349   170   CHINL=' '
46350         READ(LFN,'(A120)',END=400) CHINL
46351 C...Count which line number we're at.
46352         NLINE=NLINE+1
46353         WRITE(CHNLIN,'(I6)') NLINE
46354  
46355 C...Skip comment and empty lines without processing.
46356         IF (CHINL(1:1).EQ.'#'.OR.CHINL.EQ.' ') GOTO 170
46357  
46358 C...We assume all upper case below. Rewrite CHINL to all upper case.
46359         INL=0
46360         IGOOD=0
46361   180   INL=INL+1
46362         IF (CHINL(INL:INL).NE.'#') THEN
46363           DO 190 ICH=97,122
46364             IF (CHAR(ICH).EQ.CHINL(INL:INL)) CHINL(INL:INL)=CHAR(ICH-32)
46365   190     CONTINUE
46366 C...Extra safety. Chek for sensible input on line
46367           IF (IGOOD.EQ.0) THEN
46368             DO 200 ICH=48,90
46369               IF (CHAR(ICH).EQ.CHINL(INL:INL)) IGOOD=1
46370   200       CONTINUE
46371           ENDIF
46372           IF (INL.LT.120) GOTO 180
46373         ENDIF
46374         IF (IGOOD.EQ.0) GOTO 170
46375  
46376 C...If reading from LHEF file, skip until <slha> begin tag found
46377         IF (ISKIP.NE.0) THEN 
46378           DO 205 I1=1,10
46379             IF (CHINL(I1:I1+4).EQ.'<SLHA') ISKIP=0
46380  205      CONTINUE        
46381           IF (ISKIP.NE.0) GOTO 170
46382         ENDIF
46383 
46384 C...Exit when </slha>, <init>, or first <event> tag reached in LHEF file
46385         DO 210 I1=1,10          
46386           IF (CHINL(I1:I1+5).EQ.'</SLHA'
46387      &        .OR.CHINL(I1:I1+5).EQ.'<EVENT' 
46388      &        .OR.CHINL(I1:I1+4).EQ.'<INIT') THEN
46389             REWIND(LFN)
46390             GOTO 400
46391           ENDIF
46392   210   CONTINUE
46393  
46394 C...Check for BLOCK begin statement (spectrum).
46395         IF (CHINL(1:5).EQ.'BLOCK') THEN
46396           MERR=0
46397           READ(CHINL,'(A6,A)',ERR=580) CHDUM,CHBLCK
46398 C...Check if another of this type of block was already read.
46399 C...(logarithmic interpolation not yet implemented, so duplicates always
46400 C...give errors)
46401           IF (CHBLCK(1:6).EQ.'MODSEL'.AND.MMOD(1).NE.0) MERR=7
46402           IF (CHBLCK(1:6).EQ.'MINPAR'.AND.MMOD(2).NE.0) MERR=7
46403           IF (CHBLCK(1:6).EQ.'EXTPAR'.AND.MMOD(3).NE.0) MERR=7
46404           IF (CHBLCK(1:8).EQ.'SMINPUTS'.AND.MMOD(4).NE.0) MERR=7
46405           IF (CHBLCK(1:4).EQ.'MASS'.AND.MSPC(1).NE.0) MERR=7
46406           IF (CHBLCK(1:4).EQ.'NMIX'.AND.MSPC(2).NE.0) MERR=7
46407           IF (CHBLCK(1:4).EQ.'UMIX'.AND.MSPC(3).NE.0) MERR=7
46408           IF (CHBLCK(1:4).EQ.'VMIX'.AND.MSPC(4).NE.0) MERR=7
46409           IF (CHBLCK(1:7).EQ.'SBOTMIX'.AND.MSPC(5).NE.0) MERR=7
46410           IF (CHBLCK(1:7).EQ.'STOPMIX'.AND.MSPC(6).NE.0) MERR=7
46411           IF (CHBLCK(1:7).EQ.'STAUMIX'.AND.MSPC(7).NE.0) MERR=7
46412           IF (CHBLCK(1:4).EQ.'HMIX'.AND.MSPC(8).NE.0) MERR=7
46413           IF (CHBLCK(1:5).EQ.'ALPHA'.AND.MSPC(17).NE.0) MERR=7
46414           IF (CHBLCK(1:5).EQ.'AU'.AND.MSPC(10).NE.0) MERR=7
46415           IF (CHBLCK(1:5).EQ.'AD'.AND.MSPC(11).NE.0) MERR=7
46416           IF (CHBLCK(1:5).EQ.'AE'.AND.MSPC(12).NE.0) MERR=7
46417           IF (CHBLCK(1:5).EQ.'MSOFT'.AND.MSPC(18).NE.0) MERR=7
46418 C...Check for new particles
46419           IF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.CHBLCK(1:8).EQ.'PARTICLE')
46420      &        THEN
46421             MSPC(19)=MSPC(19)+1
46422 C...Read PDG code
46423             READ(CHBLCK(9:60),*) KFQ
46424  
46425             DO 220 MQ=1,NQNUM
46426               IF (KQNUM(MQ,0).EQ.KFQ) THEN
46427                 MERR=17
46428                 GOTO 380
46429               ENDIF
46430   220       CONTINUE
46431             IF (NHELLO.EQ.0) THEN
46432               WRITE(MSTU(11),5000) DOC
46433               NHELLO=1
46434             ENDIF
46435             WRITE(MSTU(11),'(A,I9,A,F12.3)')
46436      &           ' * (PYSLHA:) Reading  '//CHBLCK(1:8)//
46437      &           '    for KF =',KFQ
46438             NQNUM=NQNUM+1
46439             KQNUM(NQNUM,0)=KFQ
46440             MSPC(19)=MSPC(19)+1
46441             KCQ=PYCOMP(KFQ)
46442 C...Only read in new codes (also OK to overwrite if KF > 3000000)
46443             IF (KCQ.EQ.0.OR.IABS(KFQ).GE.3000000) THEN
46444               IF (KCQ.EQ.0) THEN
46445                 DO 230 KCT=100,MSTU(6)
46446                   IF(KCHG(KCT,4).GT.100) KCQ=KCT
46447   230           CONTINUE
46448                 KCQ=KCQ+1
46449               ENDIF
46450               KCC=KCQ
46451               KCHG(KCQ,4)=KFQ
46452 C...First write PDG code as name
46453               WRITE(CHTMP,*) KFQ
46454               WRITE(CHTMP,'(A)') CHTMP(2:10)
46455 C...Then look for real name
46456               IBEG=9
46457   240         IBEG=IBEG+1
46458               IF (CHBLCK(IBEG:IBEG).NE.'#'.AND.IBEG.LT.59) GOTO 240
46459   250         IBEG=IBEG+1
46460               IF (CHBLCK(IBEG:IBEG).EQ.' '.AND.IBEG.LT.59) GOTO 250
46461               IEND=IBEG-1
46462   260         IEND=IEND+1
46463               IF (CHBLCK(IEND+1:IEND+1).NE.' '.AND.IEND.LT.59) GOTO 260
46464               IF (IEND.LT.59) THEN
46465                 READ(CHBLCK(IBEG:IEND),'(A)',ERR=270) CHDUM
46466                 IF (CHDUM.NE.' ') CHTMP=CHDUM
46467               ENDIF
46468   270         READ(CHTMP,'(A)') CHAF(KCQ,1)
46469               MSTU(20)=0
46470 C...Set stable for now
46471               PMAS(KCQ,2)=1D-6
46472               MWID(KCQ)=0
46473               MDCY(KCQ,1)=0
46474               MDCY(KCQ,2)=0
46475               MDCY(KCQ,3)=0
46476             ELSE
46477               WRITE(MSTU(11),*)
46478      &           '* (PYSLHA:) KF =',KFQ,' already exists: ',
46479      &             CHAF(KCQ,1), '. Entry ignored.'
46480               MERR=7
46481             ENDIF
46482           ENDIF
46483 C...Finalize this line and read next.
46484           GOTO 380
46485 C...Check for DECAY begin statement (decays).
46486         ELSEIF (CHINL(1:3).EQ.'DEC') THEN
46487           MERR=0
46488           BRSUM=0D0
46489           CHBLCK='DECAY'
46490 C...Read KF code and WIDTH
46491           MPSIGN=1
46492           READ(CHINL(7:INL),*,ERR=590) KF, WIDTH
46493           IF (KF.LE.0) THEN
46494             KF=-KF
46495             MPSIGN=-1
46496           ENDIF
46497 C...If this is not the KF we're looking for...
46498           IF ((KFORIG.NE.0.AND.KF.NE.KFORIG).OR.MUPDA.NE.2) THEN
46499 C...Set block skip flag and read next line.
46500             MERR=16
46501             GOTO 380
46502           ELSE
46503 C...Check whether decay table for this particle already read in
46504             DO 280 IDECAY=1,NDECAY
46505               IF (KFDEC(IDECAY).EQ.KF) THEN
46506                 WRITE(MSTU(11),'(A,A,I9,A,A6,A)')
46507      &               ' * (PYSLHA:) Ignoring DECAY table ',
46508      &               'for KF =',KF,' on line ',CHNLIN,
46509      &               ' (duplicate)'
46510                 MERR=16
46511                 GOTO 380
46512               ENDIF
46513   280       CONTINUE
46514           ENDIF
46515  
46516 C...Determine PYTHIA KC code of particle
46517           KCREP=0
46518           IF(KF.LE.100) THEN
46519             KCREP=KF
46520           ELSE
46521             DO 290 KCR=101,KCC
46522               IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
46523   290       CONTINUE
46524           ENDIF
46525           KC=KCREP
46526           IF (KCREP.NE.0) THEN
46527 C...Particle is already known. Do not overwrite low-mass SM particles, 
46528 C...since this could give problems at hadronization / hadron decay stage.
46529             IF (IABS(KF).LT.1000000.AND.PMAS(KC,1).LT.20D0) THEN
46530 C...Set block skip flag and read next line
46531               WRITE(MSTU(11),'(A,I9,A,F12.3)')
46532      &             ' * (PYSLHA:) Ignoring DECAY table for KF =',
46533      &             KF, ' (SLHA read-in not allowed)'
46534               MERR=16
46535               GOTO 380
46536             ELSEIF (IABS(KF).EQ.6.OR.IABS(KF).EQ.23.OR.IABS(KF).EQ.24) 
46537      &        THEN
46538 C...Set block skip flag and read next line
46539               WRITE(MSTU(11),'(A,I9,A,F12.3)')
46540      &             ' * (PYSLHA:) Allowing DECAY table for KF =',
46541      &             KF, ' but this is NOT recommended.'
46542             ENDIF
46543           ELSE
46544 C...  Add new particle. Actually, this should not happen.
46545 C...  New particles should be added already when reading the spectrum
46546 C...  information, so go under previously stable category.
46547             KCC=KCC+1
46548             KC=KCC
46549           ENDIF
46550  
46551           IF (WIDTH.LE.0D0) THEN
46552 C...Stable (i.e. LSP)
46553             WRITE(MSTU(11),'(A,I9,A,A)')
46554      &           ' * (PYSLHA:) Reading  SLHA stable particle KF =',
46555      &              KF,', ',CHAF(KCREP,1)(1:16)
46556             IF (WIDTH.LT.0D0) THEN
46557               CALL PYERRM(19,'(PYSLHA:) Negative width forced to'//
46558      &             ' zero !')
46559               WIDTH=0D0
46560             ENDIF
46561             PMAS(KC,2)=1D-6
46562             MWID(KC)=0
46563             MDCY(KC,1)=0
46564 C...Ignore any decay lines that may be present for this KF
46565             MERR=16
46566             MDCY(KC,2)=0
46567             MDCY(KC,3)=0
46568 C...Return ok
46569             IRETRN=0
46570           ENDIF
46571 C...Finalize and start reading in decay modes.
46572           GOTO 380
46573         ELSEIF (MOD(MERR,10).GE.6) THEN
46574 C...If ignore block flag set, skip directly to next line.
46575           GOTO 170
46576         ENDIF
46577  
46578 C...READ SPECTRUM
46579         IF (MUPDA.EQ.0.AND.MERR.EQ.0) THEN
46580           IF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.CHBLCK(1:8).EQ.'PARTICLE')
46581      &        THEN
46582             READ(CHINL,*) INDX, IVAL
46583             IF (INDX.GE.1.AND.INDX.LE.9) KQNUM(NQNUM,INDX)=IVAL
46584             IF (INDX.EQ.1) KCHG(KCQ,1)=IVAL
46585             IF (INDX.EQ.3) KCHG(KCQ,2)=0
46586             IF (INDX.EQ.3.AND.IVAL.EQ.3) KCHG(KCQ,2)=1
46587             IF (INDX.EQ.3.AND.IVAL.EQ.-3) KCHG(KCQ,2)=-1
46588             IF (INDX.EQ.3.AND.IVAL.EQ.8) KCHG(KCQ,2)=2
46589             IF (INDX.EQ.4) THEN
46590               KCHG(KCQ,3)=IVAL
46591               IF (IVAL.EQ.1) THEN
46592                 CHTMP=CHAF(KCQ,1)
46593                 IF (CHTMP.EQ.' ') THEN
46594                   WRITE(CHAF(KCQ,1),*) KCHG(KCQ,4)
46595                   WRITE(CHAF(KCQ,2),*) -KCHG(KCQ,4)
46596                 ELSE
46597                   ILAST=17
46598   300             ILAST=ILAST-1
46599                   IF (CHTMP(ILAST:ILAST).EQ.' ') GOTO 300
46600                   IF (CHTMP(ILAST:ILAST).EQ.'+') THEN
46601                     CHTMP(ILAST:ILAST)='-'
46602                   ELSE
46603                     CHTMP(ILAST+1:MIN(16,ILAST+4))='bar'
46604                   ENDIF
46605                   CHAF(KCQ,2)=CHTMP
46606                 ENDIF
46607               ENDIF
46608             ENDIF
46609           ELSE
46610             MERR=8
46611           ENDIF
46612         ELSEIF ((MUPDA.EQ.1.OR.MUPDA.EQ.5).AND.MERR.EQ.0) THEN
46613 C...MASS: Mass spectrum
46614           IF (CHBLCK(1:4).EQ.'MASS') THEN
46615             READ(CHINL,*) KF, VAL
46616             MERR=1
46617             KC=0
46618             IF (MUPDA.EQ.1.OR.KF.EQ.KFORIG.OR.KFORIG.EQ.0) THEN
46619 C...Read in masses for almost anything
46620               MERR=0
46621               KC=PYCOMP(KF)
46622               IF (KC.NE.0) THEN
46623 C...Don't read in masses for special code particles
46624                 IF (IABS(KF).GE.80.AND.IABS(KF).LT.100) THEN
46625                   WRITE(MSTU(11),'(A,I9,A,F12.3)')
46626      &                 ' * (PYSLHA:) Ignoring MASS  entry for KF =',
46627      &                 KF, ' (KF reserved by PYTHIA)' 
46628                   GOTO 170
46629                 ENDIF
46630 C...Be careful with light SM particles / hadrons
46631                 IF (PMAS(KC,1).LE.20D0) THEN
46632                   IF (IABS(KF).LE.22) THEN
46633                     WRITE(MSTU(11),'(A,I9,A,F12.3)')
46634      &                   ' * (PYSLHA:) Ignoring MASS  entry for KF =',
46635      &                   KF, ' (SLHA read-in not allowed)'
46636 
46637                     GOTO 170
46638                   ELSEIF (IABS(KF).GE.100.AND.IABS(KF).LT.1000000) THEN
46639                     WRITE(MSTU(11),'(A,I9,A,F12.3)')
46640      &                   ' * (PYSLHA:) Ignoring MASS  entry for KF =',
46641      &                   KF, ' (SLHA read-in not allowed)'
46642                     GOTO 170
46643                   ENDIF
46644                 ENDIF
46645                 MSPC(1)=MSPC(1)+1
46646                 PMAS(KC,1) = ABS(VAL)
46647                 IF (MUPDA.EQ.5.AND.IMSS(1).EQ.0) THEN
46648                   WRITE(MSTU(11),'(A,I9,A,F12.3)')
46649      &                 ' * (PYSLHA:) Reading  MASS  entry for KF =',
46650      &                 KF, ', pole mass =', VAL
46651                   IRETRN=0
46652                 ENDIF
46653 C...Check Z, W and top masses
46654                 IF (KF.EQ.23.AND.ABS(PMAS(PYCOMP(23),1)-91.2D0).GT.1D0)
46655      &               THEN
46656                   WRITE(CHTMP,8500) PMAS(PYCOMP(23),1)
46657                   CALL PYERRM(9,'(PYSLHA:) Note Z boson mass, M ='
46658      &                 //CHTMP)
46659                 ENDIF
46660                 IF (KF.EQ.24.AND.ABS(PMAS(PYCOMP(24),1)-80.4D0).GT.1D0)
46661      &               THEN
46662                   WRITE(CHTMP,8500) PMAS(PYCOMP(24),1)
46663                   CALL PYERRM(9,'(PYSLHA:) Note W boson mass, M ='
46664      &                 //CHTMP)
46665                 ENDIF
46666                 IF (KF.EQ.6.AND.ABS(PMAS(PYCOMP(6),1)-175D0).GT.25D0)
46667      &               THEN
46668                   WRITE(CHTMP,8500) PMAS(PYCOMP(6),1)
46669                   CALL PYERRM(9,'(PYSLHA:) Note top quark mass, M ='
46670      &                 //CHTMP//'GeV')
46671                 ENDIF
46672 C...  Signed masses
46673                 IF (KF.EQ.1000021.AND.MSPC(18).EQ.0) RMSS(3)=VAL
46674                 IF (KF.EQ.1000022) SMZ(1)=VAL
46675                 IF (KF.EQ.1000023) SMZ(2)=VAL
46676                 IF (KF.EQ.1000025) SMZ(3)=VAL
46677                 IF (KF.EQ.1000035) SMZ(4)=VAL
46678                 IF (KF.EQ.1000024) SMW(1)=VAL
46679                 IF (KF.EQ.1000037) SMW(2)=VAL
46680               ENDIF
46681             ELSEIF (MUPDA.EQ.5) THEN
46682               MERR=0
46683             ENDIF
46684 C...  MODSEL: Model selection and global switches
46685           ELSEIF (CHBLCK(1:6).EQ.'MODSEL') THEN
46686             READ(CHINL,*) INDX, IVAL
46687             IF (INDX.LE.200.AND.INDX.GT.0) THEN
46688               IF (IMSS(1).EQ.0) IMSS(1)=11
46689               MODSEL(INDX)=IVAL
46690               MMOD(1)=MMOD(1)+1
46691               IF (INDX.EQ.3.AND.IVAL.EQ.1.AND.PYCOMP(1000045).EQ.0) THEN
46692 C...  Switch on NMSSM
46693                 WRITE(MSTU(11),*) '* (PYSLHA:) switching on NMSSM'
46694                 IMSS(13)=MAX(1,IMSS(13))
46695 C...  Add NMSSM states if not already done
46696  
46697                 KFN=25
46698                 KCN=KFN
46699                 CHAF(KCN,1)='h_10'
46700                 CHAF(KCN,2)=' '
46701  
46702                 KFN=35
46703                 KCN=KFN
46704                 CHAF(KCN,1)='h_20'
46705                 CHAF(KCN,2)=' '
46706  
46707                 KFN=45
46708                 KCN=KFN
46709                 CHAF(KCN,1)='h_30'
46710                 CHAF(KCN,2)=' '
46711  
46712                 KFN=36
46713                 KCN=KFN
46714                 CHAF(KCN,1)='A_10'
46715                 CHAF(KCN,2)=' '
46716  
46717                 KFN=46
46718                 KCN=KFN
46719                 CHAF(KCN,1)='A_20'
46720                 CHAF(KCN,2)=' '
46721  
46722                 KFN=1000045
46723                 KCN=PYCOMP(KFN)
46724                 IF (KCN.EQ.0) THEN
46725                   DO 310 KCT=100,MSTU(6)
46726                     IF(KCHG(KCT,4).GT.100) KCN=KCT
46727   310             CONTINUE
46728                   KCN=KCN+1
46729                   KCHG(KCN,4)=KFN
46730                   MSTU(20)=0
46731                 ENDIF
46732 C...  Set stable for now
46733                 PMAS(KCN,2)=1D-6
46734                 MWID(KCN)=0
46735                 MDCY(KCN,1)=0
46736                 MDCY(KCN,2)=0
46737                 MDCY(KCN,3)=0
46738                 CHAF(KCN,1)='~chi_50'
46739                 CHAF(KCN,2)=' '
46740               ENDIF
46741             ELSE
46742               MERR=1
46743             ENDIF
46744           ELSEIF (MUPDA.EQ.5) THEN
46745 C...If MUPDA = 5, skip all except MASS, return if MODSEL
46746             MERR=8
46747           ELSEIF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.
46748      &          CHBLCK(1:8).EQ.'PARTICLE') THEN
46749 C...Don't print a warning for QNUMBERS when reading spectrum
46750             MERR=8
46751 C...MINPAR: Minimal model parameters
46752           ELSEIF (CHBLCK(1:6).EQ.'MINPAR') THEN
46753             READ(CHINL,*) INDX, VAL
46754             IF (INDX.LE.100.AND.INDX.GT.0) THEN
46755               PARMIN(INDX)=VAL
46756               MMOD(2)=MMOD(2)+1
46757             ELSE
46758               MERR=1
46759             ENDIF
46760             IF (MMOD(3).NE.0) THEN
46761               WRITE(MSTU(11),*)
46762      &             '* (PYSLHA:) MINPAR should come before EXTPAR !'
46763               MERR=1
46764             ENDIF
46765 C...tan(beta)
46766             IF (INDX.EQ.3) RMSS(5)=VAL
46767 C...EXTPAR: non-minimal model parameters.
46768           ELSEIF (CHBLCK(1:6).EQ.'EXTPAR') THEN
46769             IF (MMOD(1).NE.0) THEN
46770               READ(CHINL,*) INDX, VAL
46771               IF (INDX.LE.200.AND.INDX.GT.0) THEN
46772                 PAREXT(INDX)=VAL
46773                 MMOD(3)=MMOD(3)+1
46774               ELSE
46775                 MERR=1
46776               ENDIF
46777             ELSE
46778               WRITE(MSTU(11),*)
46779      &             '* (PYSLHA:) Reading EXTPAR, but no MODSEL !'
46780               MERR=1
46781             ENDIF
46782 C...tan(beta)
46783             IF (INDX.EQ.25) RMSS(5)=VAL
46784           ELSEIF (CHBLCK(1:8).EQ.'SMINPUTS') THEN
46785             READ(CHINL,*) INDX, VAL
46786             IF (INDX.LE.3.OR.INDX.EQ.5.OR.INDX.GE.7) THEN
46787               MERR=1
46788             ELSEIF (INDX.EQ.4) THEN
46789               PMAS(PYCOMP(23),1)=VAL
46790             ELSEIF (INDX.EQ.6) THEN
46791               PMAS(PYCOMP(6),1)=VAL
46792             ENDIF
46793           ELSEIF (CHBLCK(1:4).EQ.'NMIX'.OR.CHBLCK(1:4).EQ.'VMIX'.OR
46794      $           .CHBLCK(1:4).EQ.'UMIX'.OR.CHBLCK(1:7).EQ.'STOPMIX'.OR
46795      $           .CHBLCK(1:7).EQ.'SBOTMIX'.OR.CHBLCK(1:7).EQ.'STAUMIX')
46796      $           THEN
46797 C...NMIX,UMIX,VMIX,STOPMIX,SBOTMIX, and STAUMIX. Mixing.
46798             IM=0
46799             IF (CHBLCK(5:6).EQ.'IM') IM=1
46800   320       READ(CHINL,*) INDX1, INDX2, VAL
46801             IF (CHBLCK(1:1).EQ.'N'.AND.INDX1.LE.4.AND.INDX2.LE.4) THEN
46802               IF (IM.EQ.0) ZMIX(INDX1,INDX2) = VAL
46803               IF (IM.EQ.1) ZMIXI(INDX1,INDX2)= VAL
46804               MSPC(2)=MSPC(2)+1
46805             ELSEIF (CHBLCK(1:1).EQ.'U') THEN
46806               IF (IM.EQ.0) UMIX(INDX1,INDX2) = VAL
46807               IF (IM.EQ.1) UMIXI(INDX1,INDX2)= VAL
46808               MSPC(3)=MSPC(3)+1
46809             ELSEIF (CHBLCK(1:1).EQ.'V') THEN
46810               IF (IM.EQ.0) VMIX(INDX1,INDX2) = VAL
46811               IF (IM.EQ.1) VMIXI(INDX1,INDX2)= VAL
46812               MSPC(4)=MSPC(4)+1
46813             ELSEIF (CHBLCK(1:4).EQ.'STOP'.OR.CHBLCK(1:4).EQ.'SBOT'.OR
46814      $             .CHBLCK(1:4).EQ.'STAU') THEN
46815               IF (CHBLCK(1:4).EQ.'STOP') THEN
46816                 KFSM=6
46817                 ISPC=6
46818               ELSEIF (CHBLCK(1:4).EQ.'SBOT') THEN
46819                 KFSM=5
46820                 ISPC=5
46821               ELSEIF (CHBLCK(1:4).EQ.'STAU') THEN
46822                 KFSM=15
46823                 ISPC=7
46824               ENDIF
46825 C...Set SFMIX element
46826               SFMIX(KFSM,2*(INDX1-1)+INDX2)=VAL
46827               MSPC(ISPC)=MSPC(ISPC)+1
46828             ENDIF
46829 C...Running parameters
46830           ELSEIF (CHBLCK(1:4).EQ.'HMIX') THEN
46831             READ(CHBLCK(8:25),*,ERR=620) Q
46832             READ(CHINL,*) INDX, VAL
46833             MSPC(8)=MSPC(8)+1
46834             IF (INDX.EQ.1) THEN
46835               RMSS(4) = VAL
46836             ELSE
46837               MERR=1
46838               MSPC(8)=MSPC(8)-1
46839             ENDIF
46840           ELSEIF (CHBLCK(1:5).EQ.'ALPHA') THEN
46841             READ(CHINL,*,ERR=630) VAL
46842             RMSS(18)= VAL
46843             MSPC(17)=MSPC(17)+1
46844 C...Higgs parameters set manually or with FeynHiggs.
46845             IMSS(4)=MAX(2,IMSS(4))
46846           ELSEIF (CHBLCK(1:2).EQ.'AU'.OR.CHBLCK(1:2).EQ.'AD'.OR
46847      &           .CHBLCK(1:2).EQ.'AE') THEN
46848             READ(CHBLCK(9:26),*,ERR=620) Q
46849             READ(CHINL,*) INDX1, INDX2, VAL
46850             IF (CHBLCK(2:2).EQ.'U') THEN
46851               AU(INDX1,INDX2)=VAL
46852               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(16)=VAL
46853               MSPC(11)=MSPC(11)+1
46854             ELSEIF (CHBLCK(2:2).EQ.'D') THEN
46855               AD(INDX1,INDX2)=VAL
46856               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(15)=VAL
46857               MSPC(10)=MSPC(10)+1
46858             ELSEIF (CHBLCK(2:2).EQ.'E') THEN
46859               AE(INDX1,INDX2)=VAL
46860               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(17)=VAL
46861               MSPC(12)=MSPC(12)+1
46862             ELSE
46863               MERR=1
46864             ENDIF
46865           ELSEIF (CHBLCK(1:5).EQ.'MSOFT') THEN
46866             IF (MSPC(18).EQ.0) THEN
46867               READ(CHBLCK(9:25),*,ERR=620) Q
46868               RMSOFT(0)=Q
46869             ENDIF
46870             READ(CHINL,*) INDX, VAL
46871             RMSOFT(INDX)=VAL
46872             MSPC(18)=MSPC(18)+1
46873           ELSEIF (CHBLCK(1:5).EQ.'GAUGE') THEN
46874             MERR=8
46875           ELSEIF (CHBLCK(1:2).EQ.'YU'.OR.CHBLCK(1:2).EQ.'YD'.OR
46876      &           .CHBLCK(1:2).EQ.'YE') THEN
46877             MERR=8
46878           ELSEIF (CHBLCK(1:6).EQ.'SPINFO') THEN
46879             READ(CHINL(1:6),*) INDX
46880             IT=0
46881             MIRD=0
46882   330       IT=IT+1
46883             IF (CHINL(IT:IT).EQ.' ') GOTO 330
46884 C...Don't read index
46885             IF (CHINL(IT:IT).EQ.CHAR(INDX+48).AND.MIRD.EQ.0) THEN
46886               MIRD=1
46887               GOTO 330
46888             ENDIF
46889             IF (INDX.EQ.1) CPRO(1)=CHINL(IT:IT+12)
46890             IF (INDX.EQ.2) CVER(1)=CHINL(IT:IT+12)
46891           ELSE
46892 C...  Set unrecognized block flag.
46893             MERR=6
46894           ENDIF
46895  
46896 C...DECAY TABLES
46897 C...Read in decay information
46898         ELSEIF (MUPDA.EQ.2.AND.MERR.EQ.0) THEN
46899 C...Read new decay chanel
46900           IF(CHINL(1:1).EQ.' '.AND.CHBLCK(1:5).EQ.'DECAY') THEN
46901             NDC=NDC+1
46902 C...Read in branching ratio and number of daughters for this mode.
46903             READ(CHINL(4:50),*,ERR=390) BRAT(NDC)
46904             READ(CHINL(4:50),*,ERR=600) DUM, NDA
46905             IF (NDA.LE.5) THEN
46906               IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
46907      &             '(PYSLHA:) Decay data arrays full by KF = '
46908      $             //CHAF(KC,1))
46909 C...If first decay channel, set decays start point in decay table
46910               IF(BRSUM.LE.0D0.AND.BRAT(NDC).NE.0D0) THEN
46911                 IF (KFORIG.EQ.0) WRITE(MSTU(11),'(1x,A,I9,A,A16)')
46912      &               '* (PYSLHA:) Reading  DECAY table for '//
46913      &               'KF =',KF,', ',CHAF(KCREP,1)(1:16)
46914 C...Set particle parameters (mass set when reading BLOCK MASS above)
46915                 PMAS(KC,2)=WIDTH
46916                 IF (KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) THEN
46917                   WRITE(MSTU(11),'(1x,A)')
46918      &                '*  Note: the Pythia gg->h/H/A cross section'//
46919      &                ' is proportional to the h/H/A->gg width'
46920                 ELSEIF (KF.EQ.23.OR.KF.EQ.24.OR.KF.EQ.6.OR.KF.EQ.32
46921      &                 .OR.KF.EQ.33.OR.KF.EQ.34) THEN
46922                   WRITE(MSTU(11),'(1x,A,A16)')
46923      &                 '* Warning: will use DECAY table (fixed-width,'//
46924      &                 ' flat PS) for ',CHAF(KC,1)(1:16)
46925                 ENDIF
46926                 PMAS(KC,3)=0D0
46927                 PMAS(KC,4)=PARU(3)*1D-12/WIDTH
46928                 MWID(KC)=2
46929                 MDCY(KC,1)=1
46930                 MDCY(KC,2)=NDC
46931                 MDCY(KC,3)=0
46932 C...Add to list of DECAY blocks currently read
46933                 NDECAY=NDECAY+1
46934                 KFDEC(NDECAY)=KF
46935 C...Return ok
46936                 IRETRN=0
46937               ENDIF
46938 C...  Count up number of decay modes for this particle
46939               MDCY(KC,3)=MDCY(KC,3)+1
46940 C...  Read in decay daughters.
46941               READ(CHINL(4:120),*,ERR=610) DUM,IDM, (IDC(IDA),IDA=1,NDA)
46942 C...  Flip sign if reading antiparticle decays (if antipartner exists)
46943               DO 340 IDA=1,NDA
46944                 IF (KCHG(PYCOMP(IDC(IDA)),3).NE.0)
46945      &               IDC(IDA)=MPSIGN*IDC(IDA)
46946   340         CONTINUE
46947 C...Switch on decay channel, with products ordered in decreasing ABS(KF)
46948               MDME(NDC,1)=1
46949               IF (BRAT(NDC).LE.0D0) MDME(NDC,1)=0
46950               BRSUM=BRSUM+ABS(BRAT(NDC))
46951               BRAT(NDC)=ABS(BRAT(NDC))
46952   350         IFLIP=0
46953               DO 360 IDA=1,NDA-1
46954                 IF (IABS(IDC(IDA+1)).GT.IABS(IDC(IDA))) THEN
46955                   ITMP=IDC(IDA)
46956                   IDC(IDA)=IDC(IDA+1)
46957                   IDC(IDA+1)=ITMP
46958                   IFLIP=IFLIP+1
46959                 ENDIF
46960   360         CONTINUE
46961               IF (IFLIP.GT.0) GOTO 350
46962 C...Treat as ordinary decay, no fancy stuff.
46963               MDME(NDC,2)=0
46964               DO 370 IDA=1,5
46965                 IF (IDA.LE.NDA) THEN
46966                   KFDP(NDC,IDA)=IDC(IDA)
46967                 ELSE
46968                   KFDP(NDC,IDA)=0
46969                 ENDIF
46970   370         CONTINUE
46971 C              WRITE(MSTU(11),7510) NDC, BRAT(NDC), NDA,
46972 C     &            (KFDP(NDC,J),J=1,NDA)
46973             ELSE
46974               CALL PYERRM(7,'(PYSLHA:) Too many daughters on line '//
46975      &             CHNLIN)
46976               MERR=11
46977               NDC=NDC-1
46978             ENDIF
46979           ELSEIF(CHINL(1:1).EQ.'+') THEN
46980             MERR=11
46981           ELSEIF(CHBLCK(1:6).EQ.'DCINFO') THEN
46982             MERR=16
46983           ELSE
46984             MERR=16
46985           ENDIF
46986         ENDIF
46987 C...  Error check.
46988   380   IF (MOD(MERR,10).EQ.1.AND.(MUPDA.EQ.1.OR.MUPDA.EQ.2)) THEN
46989           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring line '//CHNLIN//': '
46990      &         //CHINL(1:40)
46991           MERR=0
46992         ELSEIF (MERR.EQ.6.AND.MUPDA.EQ.1) THEN
46993           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring BLOCK '//
46994      &         CHBLCK(1:MIN(INL,40))//'... on line '//CHNLIN
46995         ELSEIF (MERR.EQ.8.AND.MUPDA.EQ.1) THEN
46996           WRITE(MSTU(11),*) '* (PYSLHA:) PYTHIA will not use BLOCK '
46997      &         //CHBLCK(1:INL)//'... on line'//CHNLIN
46998         ELSEIF (MERR.EQ.16.AND.MUPDA.EQ.2.AND.IMSS21.EQ.0.AND.
46999      &         CHBLCK(1:1).NE.'D'.AND.VERBOS.EQ.1) THEN
47000           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring BLOCK '//CHBLCK(1:INL)
47001      &         //'... on line'//CHNLIN
47002         ELSEIF (MERR.EQ.7.AND.MUPDA.EQ.1) THEN
47003           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring extra BLOCK '/
47004      &         /CHBLCK(1:INL)//'... on line'//CHNLIN
47005         ELSEIF (MERR.EQ.2.AND.MUPDA.EQ.1) THEN
47006           WRITE (CHTMP,*) KF
47007           WRITE(MSTU(11),*)
47008      &         '* (PYSLHA:) Ignoring extra MASS entry for KF='//
47009      &         CHTMP(1:9)//' on line'//CHNLIN
47010         ENDIF
47011 C...Iterate read loop
47012         GOTO 170
47013 C...Error catching
47014   390   WRITE(*,*) '* (PYSLHA:) read BR error on line',NLINE,
47015      &      ', ignoring subsequent lines.'
47016         WRITE(*,*) '* (PYSLHA:) Offending line:',CHINL(1:46)
47017         CHBLCK=' '
47018         GOTO 170
47019 C...End of read loop
47020   400   CONTINUE
47021 C...Set flag that KC codes have been rearranged.
47022         MSTU(20)=0
47023         VERBOS=0
47024  
47025 C...Perform possible tests that new information is consistent.
47026         IF (MUPDA.EQ.1) THEN
47027           MSTU23=MSTU(23)
47028           MSTU27=MSTU(27)
47029 C...Check masses
47030           DO 410 ISUSY=1,37
47031             KF=KFSUSY(ISUSY)
47032 C...Don't complain about right-handed neutrinos
47033             IF (KF.EQ.KSUSY2+12.OR.KF.EQ.KSUSY2+14.OR.KF.EQ.KSUSY2
47034      &           +16) GOTO 410
47035 C...Only check gravitino in GMSB scenarios
47036             IF (MODSEL(1).NE.2.AND.KF.EQ.KSUSY1+39) GOTO 410
47037             KC=PYCOMP(KF)
47038             IF (PMAS(KC,1).EQ.0D0) THEN
47039               WRITE(CHTMP,*) KF
47040               CALL PYERRM(9
47041      &             ,'(PYSLHA:) No mass information found for KF ='
47042      &             //CHTMP)
47043             ENDIF
47044   410     CONTINUE
47045 C...Check mixing matrices (MSSM only)
47046           IF (IMSS(13).EQ.0) THEN
47047             IF (MSPC(2).NE.16.AND.MSPC(2).NE.32) CALL PYERRM(9
47048      &           ,'(PYSLHA:) Inconsistent # of elements in NMIX')
47049             IF (MSPC(3).NE.4.AND.MSPC(3).NE.8) CALL PYERRM(9
47050      &           ,'(PYSLHA:) Inconsistent # of elements in UMIX')
47051             IF (MSPC(4).NE.4.AND.MSPC(4).NE.8) CALL PYERRM(9
47052      &           ,'(PYSLHA:) Inconsistent # of elements in VMIX')
47053             IF (MSPC(5).NE.4) CALL PYERRM(9
47054      &           ,'(PYSLHA:) Inconsistent # of elements in SBOTMIX')
47055             IF (MSPC(6).NE.4) CALL PYERRM(9
47056      &           ,'(PYSLHA:) Inconsistent # of elements in STOPMIX')
47057             IF (MSPC(7).NE.4) CALL PYERRM(9
47058      &           ,'(PYSLHA:) Inconsistent # of elements in STAUMIX')
47059             IF (MSPC(8).LT.1) CALL PYERRM(9
47060      &           ,'(PYSLHA:) Too few elements in HMIX')
47061             IF (MSPC(10).EQ.0) CALL PYERRM(9
47062      &           ,'(PYSLHA:) Missing A_b trilinear coupling')
47063             IF (MSPC(11).EQ.0) CALL PYERRM(9
47064      &           ,'(PYSLHA:) Missing A_t trilinear coupling')
47065             IF (MSPC(12).EQ.0) CALL PYERRM(9
47066      &           ,'(PYSLHA:) Missing A_tau trilinear coupling')
47067             IF (MSPC(17).LT.1) CALL PYERRM(9
47068      &           ,'(PYSLHA:) Missing Higgs mixing angle alpha')
47069           ENDIF
47070 C...Check wavefunction normalizations.
47071 C...Sfermions
47072           DO 420 ISPC=5,7
47073             IF (MSPC(ISPC).EQ.4) THEN
47074               KFSM=ISPC
47075               IF (ISPC.EQ.7) KFSM=15
47076               CHECK=ABS(SFMIX(KFSM,1)*SFMIX(KFSM,4)-SFMIX(KFSM,2)
47077      &             *SFMIX(KFSM,3))
47078               IF (ABS(1D0-CHECK).GT.1D-3) THEN
47079                 KCSM=PYCOMP(KFSM)
47080                 CALL PYERRM(17
47081      &               ,'(PYSLHA:) Non-orthonormal mixing matrix for ~'
47082      &               //CHAF(KCSM,1))
47083               ENDIF
47084 C...Bug fix 30/09 2008: PS
47085 C...Translate to Pythia's internal convention: (1,1) same sign as (2,2)
47086               IF (SFMIX(KFSM,1)*SFMIX(KFSM,4).LT.0D0) THEN
47087                 SFMIX(KFSM,3) = -SFMIX(KFSM,3)
47088                 SFMIX(KFSM,4) = -SFMIX(KFSM,4)
47089               ENDIF
47090             ENDIF
47091   420     CONTINUE
47092 C...Neutralinos + charginos
47093           DO 440 J=1,4
47094             CN1=0D0
47095             CN2=0D0
47096             CU1=0D0
47097             CU2=0D0
47098             CV1=0D0
47099             CV2=0D0
47100             DO 430 L=1,4
47101               CN1=CN1+ZMIX(J,L)**2
47102               CN2=CN2+ZMIX(L,J)**2
47103               IF (J.LE.2.AND.L.LE.2) THEN
47104                 CU1=CU1+UMIX(J,L)**2
47105                 CU2=CU2+UMIX(L,J)**2
47106                 CV1=CV1+VMIX(J,L)**2
47107                 CV2=CV2+VMIX(L,J)**2
47108               ENDIF
47109   430       CONTINUE
47110 C...NMIX normalization
47111             IF (MSPC(2).EQ.16.AND.(ABS(1D0-CN1).GT.1D-3.OR.ABS(1D0-CN2)
47112      &           .GT.1D-3).AND.IMSS(13).EQ.0) THEN
47113               CALL PYERRM(19,
47114      &             '(PYSLHA:) NMIX: Inconsistent normalization.')
47115               WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F7.4))') J, CN1, CN2
47116             ENDIF
47117 C...UMIX, VMIX normalizations
47118             IF (MSPC(3).EQ.4.OR.MSPC(4).EQ.4.AND.IMSS(13).EQ.0) THEN
47119               IF (J.LE.2) THEN
47120                 IF (ABS(1D0-CU1).GT.1D-3.OR.ABS(1D0-CU2).GT.1D-3) THEN
47121                   CALL PYERRM(19
47122      &                ,'(PYSLHA:) UMIX: Inconsistent normalization.')
47123                   WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F6.2))') J, CU1,
47124      &                 CU2
47125                 ENDIF
47126                 IF (ABS(1D0-CV1).GT.1D-3.OR.ABS(1D0-CV2).GT.1D-3) THEN
47127                   CALL PYERRM(19,
47128      &                '(PYSLHA:) VMIX: Inconsistent normalization.')
47129                   WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F6.2))') J, CV1,
47130      &                 CV2
47131                 ENDIF
47132               ENDIF
47133             ENDIF
47134   440     CONTINUE
47135           IF (MSTU(27).EQ.MSTU27.AND.MSTU(23).EQ.MSTU23) THEN
47136             WRITE(MSTU(11),'(1x,"*"/1x,A/1x,"*")')
47137      &           '* (PYSLHA:) No spectrum inconsistencies were found.'
47138           ELSE
47139             WRITE(MSTU(11),'(1x,"*"/1x,A/1x,"*",A/1x,"*",A/)')
47140      &           '* (PYSLHA:) INCONSISTENT SPECTRUM WARNING.'
47141      &           ,' Warning: one or more (serious)'//
47142      &           ' inconsistencies were found in the spectrum !'
47143      &           ,' Read the error messages above and check your'//
47144      &           ' input file.'
47145           ENDIF
47146 C...Increase precision in Higgs sector using FeynHiggs
47147           IF (IMSS(4).EQ.3) THEN
47148 C...FeynHiggs needs MSOFT.
47149             IERR=0
47150             IF (MSPC(18).EQ.0) THEN
47151               WRITE(MSTU(11),'(1x,"*"/1x,A/)')
47152      &             '* (PYSLHA:) BLOCK MSOFT not found in SLHA file.'//
47153      &              ' Cannot call FeynHiggs.'
47154               IERR=-1
47155             ELSE
47156               WRITE(MSTU(11),'(1x,/1x,A/)')
47157      &             '* (PYSLHA:) Now calling FeynHiggs.'
47158               CALL PYFEYN(IERR)
47159               IF (IERR.NE.0) IMSS(4)=2
47160             ENDIF
47161           ENDIF
47162         ELSEIF (MUPDA.EQ.2.AND.IRETRN.EQ.0.AND.MERR.NE.16) THEN
47163           IBEG=1
47164           IF (KFORIG.NE.0) IBEG=NDECAY
47165           DO 490 IDECAY=IBEG,NDECAY
47166             KF = KFDEC(IDECAY)
47167             KC = PYCOMP(KF)
47168             WRITE(CHKF,8300) KF
47169             IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3
47170      $          ),PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0.OR.(MDCY(KC,3)
47171      $          .EQ.0.AND.MDCY(KC,1).GE.1)) CALL PYERRM(17
47172      $          ,'(PYSLHA:) Mass/width/life/(# channels) wrong for KF='
47173      $          //CHKF)
47174             BRSUM=0D0
47175             BROPN=0D0
47176             DO 460 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
47177               IF(MDME(IDA,2).GT.80) GOTO 460
47178               KQ=KCHG(KC,1)
47179               PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
47180               MERR=0
47181               DO 450 J=1,5
47182                 KP=KFDP(IDA,J)
47183                 IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
47184                   IF(KP.EQ.81) KQ=0
47185                 ELSEIF(PYCOMP(KP).EQ.0) THEN
47186                   MERR=3
47187                 ELSE
47188                   KQ=KQ-PYCHGE(KP)
47189                   KPC=PYCOMP(KP)
47190                   PMS=PMS-PMAS(KPC,1)
47191                   IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
47192      &                PMAS(KPC,3))
47193                 ENDIF
47194   450         CONTINUE
47195               IF(KQ.NE.0) MERR=MAX(2,MERR)
47196               IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
47197      &            MERR=MAX(1,MERR)
47198               IF(MERR.EQ.3) CALL PYERRM(17,
47199      &            '(PYSLHA:) Unknown particle code in decay of KF ='
47200      $            //CHKF)
47201               IF(MERR.EQ.2) CALL PYERRM(17,
47202      &            '(PYSLHA:) Charge not conserved in decay of KF ='
47203      $            //CHKF)
47204               IF(MERR.EQ.1) CALL PYERRM(7,
47205      &            '(PYSLHA:) Kinematically unallowed decay of KF ='
47206      $            //CHKF)
47207               BRSUM=BRSUM+BRAT(IDA)
47208               IF (MDME(IDA,1).GT.0) BROPN=BROPN+BRAT(IDA)
47209   460       CONTINUE
47210 C...Check branching ratio sum.
47211             IF (BROPN.LE.0D0) THEN
47212 C...If zero, set stable.
47213               WRITE(CHTMP,8500) BROPN
47214               CALL PYERRM(7
47215      &            ,"(PYSLHA:) Effective BR sum for KF="//CHKF//' is '//
47216      &            CHTMP(9:16)//'. Changed to stable.')
47217               PMAS(KC,2)=1D-6
47218               MWID(KC)=0
47219 C...If BR's > 1, rescale.
47220             ELSEIF (BRSUM.GT.(1D0+1D-6)) THEN
47221               WRITE(CHTMP,8500) BRSUM
47222               IF (BRSUM.GT.(1D0+1D-3)) CALL PYERRM(7
47223      &            ,"(PYSLHA:) Forced rescaling of BR's for KF="//CHKF//
47224      &            ' ; sum was'//CHTMP(9:16)//'.')
47225               FAC=1D0/BRSUM
47226               DO 470 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
47227                 IF(MDME(IDA,2).GT.80) GOTO 470
47228                 BRAT(IDA)=FAC*BRAT(IDA)
47229   470         CONTINUE
47230             ELSEIF (BRSUM.LT.(1D0-1D-6)) THEN
47231 C...If BR's < 1, insert dummy mode for proper cross section rescaling.
47232               WRITE(CHTMP,8500) BRSUM
47233               IF (BRSUM.LT.(1D0-1D-3)) CALL PYERRM(7
47234      &            ,"(PYSLHA:) Sum of BR's for KF="//CHKF//' is '//
47235      &            CHTMP(9:16)//'. Dummy mode will be inserted.')
47236 C...Move table and insert dummy mode
47237               DO 480 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
47238                 NDC=NDC+1
47239                 BRAT(NDC)=BRAT(IDA)
47240                 KFDP(NDC,1)=KFDP(IDA,1)
47241                 KFDP(NDC,2)=KFDP(IDA,2)
47242                 KFDP(NDC,3)=KFDP(IDA,3)
47243                 KFDP(NDC,4)=KFDP(IDA,4)
47244                 KFDP(NDC,5)=KFDP(IDA,5)
47245                 MDME(NDC,1)=MDME(IDA,1)
47246   480         CONTINUE
47247               NDC=NDC+1
47248               BRAT(NDC)=1D0-BRSUM
47249               KFDP(NDC,1)=0
47250               KFDP(NDC,2)=0
47251               KFDP(NDC,3)=0
47252               KFDP(NDC,4)=0
47253               KFDP(NDC,5)=0
47254               MDME(NDC,1)=0
47255               BRSUM=1D0
47256 C...Update MDCY
47257               MDCY(KC,3)=MDCY(KC,3)+1
47258               MDCY(KC,2)=NDC-MDCY(KC,3)+1
47259             ENDIF
47260   490     CONTINUE
47261         ENDIF
47262  
47263  
47264 C...WRITE SPECTRUM ON SLHA FILE
47265       ELSEIF(MUPDA.EQ.3) THEN
47266 C...If SPYTHIA or ISASUSY runtime was called for SUGRA, update PARMIN.
47267         IF (IMSS(1).EQ.2.OR.IMSS(1).EQ.12) THEN
47268           MODSEL(1)=1
47269           PARMIN(1)=RMSS(8)
47270           PARMIN(2)=RMSS(1)
47271           PARMIN(3)=RMSS(5)
47272           PARMIN(4)=SIGN(1D0,RMSS(4))
47273           PARMIN(5)=RMSS(36)
47274         ENDIF
47275 C...Write spectrum
47276         WRITE(LFN,7000) 'SLHA MSSM spectrum'
47277         WRITE(LFN,7000) 'Pythia 6.4: T. Sjostrand, S. Mrenna,'
47278      &    // ' P. Skands.'
47279         WRITE(LFN,7010) 'MODSEL',  'Model selection'
47280         WRITE(LFN,7110) 1, MODSEL(1)
47281         WRITE(LFN,7010) 'MINPAR', 'Parameters for minimal model.'
47282         IF (MODSEL(1).EQ.1) THEN
47283           WRITE(LFN,7210) 1, PARMIN(1), 'm0'
47284           WRITE(LFN,7210) 2, PARMIN(2), 'm12'
47285           WRITE(LFN,7210) 3, PARMIN(3), 'tan(beta)'
47286           WRITE(LFN,7210) 4, PARMIN(4), 'sign(mu)'
47287           WRITE(LFN,7210) 5, PARMIN(5), 'a0'
47288         ELSEIF(MODSEL(2).EQ.2) THEN
47289           WRITE(LFN,7210) 1, PARMIN(1), 'Lambda'
47290           WRITE(LFN,7210) 2, PARMIN(2), 'M'
47291           WRITE(LFN,7210) 3, PARMIN(3), 'tan(beta)'
47292           WRITE(LFN,7210) 4, PARMIN(4), 'sign(mu)'
47293           WRITE(LFN,7210) 5, PARMIN(5), 'N5'
47294           WRITE(LFN,7210) 6, PARMIN(6), 'c_grav'
47295         ENDIF
47296         WRITE(LFN,7000) ' '
47297         WRITE(LFN,7010) 'MASS', 'Mass spectrum'
47298         DO 500 I=1,36
47299           KF=KFSUSY(I)
47300           KC=PYCOMP(KF)
47301           IF (KF.EQ.1000039.AND.MODSEL(1).NE.2) GOTO 500
47302           KFSM=KF-KSUSY1
47303           IF (KFSM.GE.22.AND.KFSM.LE.37) THEN
47304             IF (KFSM.EQ.22)  WRITE(LFN,7220) KF, SMZ(1), CHAF(KC,1)
47305             IF (KFSM.EQ.23)  WRITE(LFN,7220) KF, SMZ(2), CHAF(KC,1)
47306             IF (KFSM.EQ.25)  WRITE(LFN,7220) KF, SMZ(3), CHAF(KC,1)
47307             IF (KFSM.EQ.35)  WRITE(LFN,7220) KF, SMZ(4), CHAF(KC,1)
47308             IF (KFSM.EQ.24)  WRITE(LFN,7220) KF, SMW(1), CHAF(KC,1)
47309             IF (KFSM.EQ.37)  WRITE(LFN,7220) KF, SMW(2), CHAF(KC,1)
47310           ELSE
47311             WRITE(LFN,7220) KF, PMAS(KC,1), CHAF(KC,1)
47312           ENDIF
47313   500   CONTINUE
47314 C...SUSY scale
47315         RMSUSY=SQRT(PMAS(PYCOMP(KSUSY1+6),1)*PMAS(PYCOMP(KSUSY2+6),1))
47316         WRITE(LFN,7020) 'HMIX',RMSUSY,'Higgs parameters'
47317         WRITE(LFN,7210) 1, RMSS(4),'mu'
47318         WRITE(LFN,7010) 'ALPHA',' '
47319 C       WRITE(LFN,7210) 1, RMSS(18), 'alpha'
47320         WRITE(LFN,7200) RMSS(18), 'alpha'
47321         WRITE(LFN,7020) 'AU',RMSUSY
47322         WRITE(LFN,7410) 3, 3, RMSS(16), 'A_t'
47323         WRITE(LFN,7020) 'AD',RMSUSY
47324         WRITE(LFN,7410) 3, 3, RMSS(15), 'A_b'
47325         WRITE(LFN,7020) 'AE',RMSUSY
47326         WRITE(LFN,7410) 3, 3, RMSS(17), 'A_tau'
47327         WRITE(LFN,7010) 'STOPMIX','~t mixing matrix'
47328         WRITE(LFN,7410) 1, 1, SFMIX(6,1)
47329         WRITE(LFN,7410) 1, 2, SFMIX(6,2)
47330         WRITE(LFN,7410) 2, 1, SFMIX(6,3)
47331         WRITE(LFN,7410) 2, 2, SFMIX(6,4)
47332         WRITE(LFN,7010) 'SBOTMIX','~b mixing matrix'
47333         WRITE(LFN,7410) 1, 1, SFMIX(5,1)
47334         WRITE(LFN,7410) 1, 2, SFMIX(5,2)
47335         WRITE(LFN,7410) 2, 1, SFMIX(5,3)
47336         WRITE(LFN,7410) 2, 2, SFMIX(5,4)
47337         WRITE(LFN,7010) 'STAUMIX','~tau mixing matrix'
47338         WRITE(LFN,7410) 1, 1, SFMIX(15,1)
47339         WRITE(LFN,7410) 1, 2, SFMIX(15,2)
47340         WRITE(LFN,7410) 2, 1, SFMIX(15,3)
47341         WRITE(LFN,7410) 2, 2, SFMIX(15,4)
47342         WRITE(LFN,7010) 'NMIX','~chi0 mixing matrix'
47343         DO 520 I1=1,4
47344           DO 510 I2=1,4
47345             WRITE(LFN,7410) I1, I2, ZMIX(I1,I2)
47346   510     CONTINUE
47347   520   CONTINUE
47348         WRITE(LFN,7010) 'UMIX','~chi^+ U mixing matrix'
47349         DO 540 I1=1,2
47350           DO 530 I2=1,2
47351             WRITE(LFN,7410) I1, I2, UMIX(I1,I2)
47352   530     CONTINUE
47353   540   CONTINUE
47354         WRITE(LFN,7010) 'VMIX','~chi^+ V mixing matrix'
47355         DO 560 I1=1,2
47356           DO 550 I2=1,2
47357             WRITE(LFN,7410) I1, I2, VMIX(I1,I2)
47358   550     CONTINUE
47359   560   CONTINUE
47360         WRITE(LFN,7010) 'SPINFO'
47361         IF (IMSS(1).EQ.2) THEN
47362           CPRO(1)='PYTHIA'
47363           CVER(1)='6.4'
47364         ELSEIF (IMSS(1).EQ.12) THEN
47365           ISAVER=VISAJE()
47366           CPRO(1)='ISASUSY'
47367           CVER(1)=ISAVER(1:12)
47368         ENDIF
47369         WRITE(LFN,7310) 1, CPRO(1), 'Spectrum Calculator'
47370         WRITE(LFN,7310) 2, CVER(1), 'Version number'
47371       ENDIF
47372  
47373 C...Print user information about spectrum
47374       IF (MUPDA.EQ.1.OR.MUPDA.EQ.3) THEN
47375         IF (CPRO(MOD(MUPDA,2)).NE.' '.AND.CVER(MOD(MUPDA,2)).NE.' ')
47376      &       WRITE(MSTU(11),5030) CPRO(1), CVER(1)
47377         IF (IMSS(4).EQ.3) WRITE(MSTU(11),5040)
47378         IF (MUPDA.EQ.1) THEN
47379           WRITE(MSTU(11),5020) LFN
47380         ELSE
47381           WRITE(MSTU(11),5010) LFN
47382         ENDIF
47383  
47384         WRITE(MSTU(11),5400)
47385         WRITE(MSTU(11),5500) 'Pole masses'
47386         WRITE(MSTU(11),5700) (RMFUN(KSUSY1+IP),IP=1,6)
47387      $       ,(RMFUN(KSUSY2+IP),IP=1,6)
47388         WRITE(MSTU(11),5800) (RMFUN(KSUSY1+IP),IP=11,16)
47389      $       ,(RMFUN(KSUSY2+IP),IP=11,16)
47390         IF (IMSS(13).EQ.0) THEN
47391           WRITE(MSTU(11),5900) RMFUN(KSUSY1+21),RMFUN(KSUSY1+22)
47392      $         ,RMFUN(KSUSY1+23),RMFUN(KSUSY1+25),RMFUN(KSUSY1+35),
47393      $         RMFUN(KSUSY1+24),RMFUN(KSUSY1+37)
47394           WRITE(MSTU(11),6000) CHAF(25,1),CHAF(35,1),CHAF(36,1),
47395      &         CHAF(37,1), ' ', ' ',' ',' ',
47396      &         RMFUN(25), RMFUN(35), RMFUN(36), RMFUN(37)
47397         ELSEIF (IMSS(13).EQ.1) THEN
47398           KF1=KSUSY1+21
47399           KF2=KSUSY1+22
47400           KF3=KSUSY1+23
47401           KF4=KSUSY1+25
47402           KF5=KSUSY1+35
47403           KF6=KSUSY1+45
47404           KF7=KSUSY1+24
47405           KF8=KSUSY1+37
47406           WRITE(MSTU(11),6000) CHAF(PYCOMP(KF1),1),CHAF(PYCOMP(KF2),1),
47407      &         CHAF(PYCOMP(KF3),1),CHAF(PYCOMP(KF4),1),
47408      &         CHAF(PYCOMP(KF5),1),CHAF(PYCOMP(KF6),1),
47409      &         CHAF(PYCOMP(KF7),1),CHAF(PYCOMP(KF8),1),
47410      &         RMFUN(KF1),RMFUN(KF2),RMFUN(KF3),RMFUN(KF4),
47411      &         RMFUN(KF5),RMFUN(KF6),RMFUN(KF7),RMFUN(KF8)
47412           WRITE(MSTU(11),6000) CHAF(25,1), CHAF(35,1), CHAF(45,1),
47413      &         CHAF(36,1), CHAF(46,1), CHAF(37,1),' ',' ',
47414      &         RMFUN(25), RMFUN(35), RMFUN(45), RMFUN(36), RMFUN(46),
47415      &         RMFUN(37)
47416         ENDIF
47417         WRITE(MSTU(11),5400)
47418         WRITE(MSTU(11),5500) 'Mixing structure'
47419         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
47420         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
47421      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
47422         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
47423      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
47424      &       ),(SFMIX(15,J),J=3,4)
47425         WRITE(MSTU(11),5400)
47426         WRITE(MSTU(11),5500) 'Couplings'
47427         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17)
47428         WRITE(MSTU(11),6450) RMSS(18), RMSS(5), RMSS(4)
47429         WRITE(MSTU(11),5400)
47430         WRITE(MSTU(11),6500)
47431  
47432 C...DECAY TABLES writeout
47433 C...Write decay information by Nils-Erik Bomark 3/29/2010
47434       ELSEIF (MUPDA.EQ.4) THEN
47435         KF = KFORIG
47436         KC = PYCOMP(KF)
47437         IF (KC.NE.0) THEN
47438           WRITE(LFN,7000) ''
47439           WRITE(LFN,7000) '         PDG            Width'
47440           WRITE(LFN,7500) KF,PMAS(KC,2), CHAF(KC,1)
47441           WRITE(LFN,7000) 
47442      &   '          BR         NDA      ID1        ID2       ID3'
47443           DO 575 I=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
47444             NDA = 0
47445             DO 570 J=1,5
47446               IF (KFDP(I,J).NE.0) NDA = NDA+1
47447  570        CONTINUE
47448             IF (NDA.EQ.2) 
47449      &         WRITE(LFN,7512) BRAT(I),NDA,(KFDP(I,K),K=1,NDA),
47450      &           CHAF(KC,1),(CHAF(PYCOMP(KFDP(I,K)),
47451      &             (3-KFDP(I,K)/ABS(KFDP(I,K)))/2),K=1,NDA)
47452             IF (NDA.EQ.3) 
47453      &         WRITE(LFN,7513) BRAT(I),NDA,(KFDP(I,K),K=1,NDA),
47454      &           CHAF(KC,1),(CHAF(PYCOMP(KFDP(I,K)),
47455      &             (3-KFDP(I,K)/ABS(KFDP(I,K)))/2),K=1,NDA)
47456             IF (NDA.EQ.4) 
47457      &         WRITE(LFN,7514) BRAT(I),NDA,(KFDP(I,K),K=1,NDA),
47458      &           CHAF(KC,1),(CHAF(PYCOMP(KFDP(I,K)),
47459      &             (3-KFDP(I,K)/ABS(KFDP(I,K)))/2),K=1,NDA)
47460             IF (NDA.EQ.5) 
47461      &         WRITE(LFN,7515) BRAT(I),NDA,(KFDP(I,K),K=1,NDA),
47462      &           CHAF(KC,1),(CHAF(PYCOMP(KFDP(I,K)),
47463      &             (3-KFDP(I,K)/ABS(KFDP(I,K)))/2),K=1,NDA)
47464  575        CONTINUE
47465         ENDIF
47466 C....End of DECAY TABLES writeout
47467 
47468       ENDIF
47469   
47470 C...Only rewind when reading
47471       IF (MUPDA.LE.2.OR.MUPDA.EQ.5) REWIND(LFN)
47472  
47473  9999 RETURN
47474  
47475 C...Serious error catching
47476   580 write(*,*) '* (PYSLHA:) read BLOCK error on line',NLINE
47477       write(*,*) CHINL(1:80)
47478       CALL PYSTOP(106)
47479   590 WRITE(*,*) '* (PYSLHA:) read DECAY error on line',NLINE
47480       WRITE(*,*) CHINL(1:72)
47481       CALL PYSTOP(106)
47482   600 WRITE(*,*) '* (PYSLHA:) read NDA error on line',NLINE
47483       WRITE(*,*) CHINL(1:80)
47484       CALL PYSTOP(106)
47485   610 WRITE(*,*) '* (PYSLHA:) decay daughter read error on line',NLINE
47486       WRITE(*,*) CHINL(1:80)
47487   620 WRITE(*,*) '* (PYSLHA:) read Q error in BLOCK ',CHBLCK
47488       CALL PYSTOP(106)
47489   630 WRITE(*,*) '* (PYSLHA:) read error in line ',NLINE,':'
47490       WRITE(*,*) CHINL(1:80)
47491       CALL PYSTOP(106)
47492  
47493  8300 FORMAT(I9)
47494  8500 FORMAT(F16.5)
47495  
47496 C...Formats for user information printout.
47497  5000 FORMAT(1x,18('*'),1x,'PYSLHA v1.14: SUSY/BSM SPECTRUM '
47498      &     ,'INTERFACE',1x,17('*')/1x,'*',1x
47499      &     ,'(PYSLHA:) Last Change',1x,A,1x,'-',1x,'P.Z. Skands')
47500  5010 FORMAT(1x,'*',3x,'Wrote spectrum file on unit: ',I3)
47501  5020 FORMAT(1x,'*',3x,'Read spectrum file on unit: ',I3)
47502  5030 FORMAT(1x,'*',3x,'Spectrum Calculator was: ',A,' version ',A)
47503  5040 FORMAT(1x,'*',3x,'Higgs sector corrected with FeynHiggs')
47504  5100 FORMAT(1x,'*',1x,'Model parameters:'/1x,'*',1x,'----------------')
47505  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
47506      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
47507  5300 FORMAT(1x,'*'/1x,'*',1x,'Model spectrum :'/1x,'*',1x
47508      &     ,'----------------')
47509  5400 FORMAT(1x,'*',1x,A)
47510  5500 FORMAT(1x,'*',1x,A,':')
47511  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
47512      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
47513  5700 FORMAT(1x,'*',4x,1x,'~d',2x,1x,4x,'~u',2x,1x,4x,'~s',2x,1x,
47514      &     4x,'~c',2x,1x,4x,'~b(12)',1x,1x,1x,'~t(12)'/1x,'*',2x,'L',1x
47515      &     ,6(F8.2,1x)/1x,'*',2x,'R',1x,6(F8.2,1x))
47516  5800 FORMAT(1x,'*'/1x,'*',4x,1x,'~e',2x,1x,4x,'~nu_e',2x,1x,1x,'~mu',2x
47517      &     ,1x,3x,'~nu_mu',2x,1x,'~tau(12)',1x,'~nu_tau'/1x,'*',2x
47518      &     ,'L',1x,6(F8.2,1x)/1x,'*',2x,'R',1x,6(F8.2,1x))
47519  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
47520      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
47521      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
47522  6000 FORMAT(1x,'*'/1x,'*',3x,1x,8(1x,A7,1x)/1x,'*',3x,1x,8(F8.2,1x))
47523  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
47524      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
47525      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
47526      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
47527      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
47528      &     ,1x,F6.3,1x),'|')
47529  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
47530      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
47531      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
47532      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
47533      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
47534  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
47535      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
47536      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
47537      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
47538      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
47539      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
47540      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
47541  6400 FORMAT(1x,'*',3x,'  A_b = ',F8.2,4x,'      A_t = ',F8.2,4x
47542      &     ,'A_tau = ',F8.2)
47543  6450 FORMAT(1x,'*',3x,'alpha = ',F8.2,4x,'tan(beta) = ',F8.2,4x
47544      &     ,'   mu = ',F8.2)
47545  6500 FORMAT(1x,32('*'),1x,'END OF PYSLHA',1x,31('*'))
47546  
47547 C...Format to use for comments
47548  7000 FORMAT('# ',A)
47549 C...Format to use for block statements
47550  7010 FORMAT('Block',1x,A,3x,'#',1x,A)
47551  7020 FORMAT('Block',1x,A,1x,'Q=',1P,E16.8,0P,3x,'#',1x,A)
47552 C...Indexed Int
47553  7110 FORMAT(1x,I4,1x,I4,3x,'#')
47554 C...Non-Indexed Double
47555  7200 FORMAT(9x,1P,E16.8,0P,3x,'#',1x,A)
47556 C...Indexed Double
47557  7210 FORMAT(1x,I4,3x,1P,E16.8,0P,3x,'#',1x,A)
47558 C...Long Indexed Double (PDG + double)
47559  7220 FORMAT(1x,I9,3x,1P,E16.8,0P,3x,'#',1x,A)
47560 C...Indexed Char(12)
47561  7310 FORMAT(1x,I4,3x,A12,3x,'#',1x,A)
47562 C...Single matrix
47563  7410 FORMAT(1x,I2,1x,I2,3x,1P,E16.8,0P,3x,'#',1x,A)
47564 C...Double Matrix
47565  7420 FORMAT(1x,I2,1x,I2,3x,1P,E16.8,3x,E16.8,0P,3x,'#',1x,A)
47566 C...Write Decay Table
47567  7500 FORMAT('Decay',1x,I9,1x,1P,E16.8,0P,3x,'#',1x,A)
47568  7510 FORMAT(4x,1P,E16.8,0P,3x,I2,3x,'IDA=',1x,5(1x,I9),3x,'#',1x,A)
47569  7512 FORMAT(4x,1P,E16.8,0P,3x,I2,3x,1x,2(1x,I9),13x,
47570      &  '#',1x,'BR(',A10,1x,'->',2(1x,A10),')')
47571  7513 FORMAT(4x,1P,E16.8,0P,3x,I2,3x,1x,3(1x,I9),3x,
47572      &  '#',1x,'BR(',A10,1x,'->',3(1x,A10),')')
47573  7514 FORMAT(4x,1P,E16.8,0P,3x,I2,3x,1x,4(1x,I9),3x,
47574      &  '#',1x,'BR(',A10,1x,'->',4(1x,A10),')')
47575  7515 FORMAT(4x,1P,E16.8,0P,3x,I2,3x,1x,5(1x,I9),3x,
47576      &  '#',1x,'BR(',A10,1x,'->',5(1x,A10),')')
47577 
47578       END
47579 
47580  
47581 C*********************************************************************
47582  
47583 C...PYAPPS
47584 C...Uses approximate analytical formulae to determine the full set of
47585 C...MSSM parameters from SUGRA input.
47586 C...See M. Drees and S.P. Martin, hep-ph/9504124
47587  
47588       SUBROUTINE PYAPPS
47589  
47590 C...Double precision and integer declarations.
47591       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47592       IMPLICIT INTEGER(I-N)
47593       INTEGER PYK,PYCHGE,PYCOMP
47594 C...Parameter statement to help give large particle numbers.
47595       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
47596      &KEXCIT=4000000,KDIMEN=5000000)
47597 C...Commonblocks.
47598       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47599       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47600       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
47601       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/
47602 
47603       WRITE(MSTU(11),*) '(PYAPPS:) approximate mSUGRA relations'//
47604      &' not intended for serious physics studies'
47605       IMSS(5)=0
47606       IMSS(8)=0
47607       XMT=PMAS(6,1)
47608       XMZ2=PMAS(23,1)**2
47609       XMW2=PMAS(24,1)**2
47610       TANB=RMSS(5)
47611       BETA=ATAN(TANB)
47612       XW=PARU(102)
47613       XMG=RMSS(1)
47614       XMG2=XMG*XMG
47615       XM0=RMSS(8)
47616       XM02=XM0*XM0
47617 C...Temporary sign change for AT. Others unchanged.
47618       AT=-RMSS(16)
47619       RMSS(15)=RMSS(16)
47620       RMSS(17)=RMSS(16)
47621       SINB=TANB/SQRT(TANB**2+1D0)
47622       COSB=SINB/TANB
47623  
47624       DTERM=XMZ2*COS(2D0*BETA)
47625       XMER=SQRT(XM02+0.15D0*XMG2-XW*DTERM)
47626       XMEL=SQRT(XM02+0.52D0*XMG2-(0.5D0-XW)*DTERM)
47627       RMSS(6)=XMEL
47628       RMSS(7)=XMER
47629       XMUR=SQRT(PYRNMQ(2,2D0/3D0*XW*DTERM))
47630       XMDR=SQRT(PYRNMQ(3,-1D0/3D0*XW*DTERM))
47631       XMUL=SQRT(PYRNMQ(1,(0.5D0-2D0/3D0*XW)*DTERM))
47632       XMDL=SQRT(PYRNMQ(1,-(0.5D0-1D0/3D0*XW)*DTERM))
47633       DO 100 I=1,5,2
47634         PMAS(PYCOMP(KSUSY1+I),1)=XMDL
47635         PMAS(PYCOMP(KSUSY2+I),1)=XMDR
47636         PMAS(PYCOMP(KSUSY1+I+1),1)=XMUL
47637         PMAS(PYCOMP(KSUSY2+I+1),1)=XMUR
47638   100 CONTINUE
47639       XARG=XMEL**2-XMW2*ABS(COS(2D0*BETA))
47640       IF(XARG.LT.0D0) THEN
47641         WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
47642      &  ' FROM THE SUM RULE. '
47643         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
47644         RETURN
47645       ELSE
47646         XARG=SQRT(XARG)
47647       ENDIF
47648       DO 110 I=11,15,2
47649         PMAS(PYCOMP(KSUSY1+I),1)=XMEL
47650         PMAS(PYCOMP(KSUSY2+I),1)=XMER
47651         PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
47652         PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
47653   110 CONTINUE
47654       RMT=PYMRUN(6,PMAS(6,1)**2)
47655       XTOP=(RMT/150D0/SINB)**2*(.9D0*XM02+2.1D0*XMG2+
47656      &(1D0-(RMT/190D0/SINB)**3)*(.24D0*AT**2+AT*XMG))
47657       RMB=PYMRUN(5,PMAS(6,1)**2)
47658       XBOT=(RMB/150D0/COSB)**2*(.9D0*XM02+2.1D0*XMG2+
47659      &(1D0-(RMB/190D0/COSB)**3)*(.24D0*AT**2+AT*XMG))
47660       XTAU=1D-4/COSB**2*(XM02+0.15D0*XMG2+AT**2/3D0)
47661       ATP=AT*(1D0-(RMT/190D0/SINB)**2)+XMG*(3.47D0-1.9D0*(RMT/190D0/
47662      &SINB)**2)
47663       RMSS(16)=-ATP
47664       XMU2=-.5D0*XMZ2+(SINB**2*(XM02+.52D0*XMG2-XTOP)-
47665      &COSB**2*(XM02+.52D0*XMG2-XBOT-XTAU/3D0))/(COSB**2-SINB**2)
47666       XMA2=2D0*(XM02+.52D0*XMG2+XMU2)-XTOP-XBOT-XTAU/3D0
47667       XMU=SIGN(SQRT(XMU2),RMSS(4))
47668       RMSS(4)=XMU
47669       IF(XMA2.GT.0D0) THEN
47670         RMSS(19)=SQRT(XMA2)
47671       ELSE
47672         WRITE(MSTU(11),*) ' PYAPPS:: PSEUDOSCALAR MASS**2 < 0 '
47673         CALL PYSTOP(102)
47674       ENDIF
47675       ARG=XM02+0.15D0*XMG2-2D0*XTAU/3D0-XW*DTERM
47676       IF(ARG.GT.0D0) THEN
47677         RMSS(14)=SQRT(ARG)
47678       ELSE
47679         WRITE(MSTU(11),*) ' PYAPPS:: RIGHT STAU MASS**2 < 0 '
47680         CALL PYSTOP(102)
47681       ENDIF
47682       ARG=XM02+0.52D0*XMG2-XTAU/3D0-(0.5D0-XW)*DTERM
47683       IF(ARG.GT.0D0) THEN
47684         RMSS(13)=SQRT(ARG)
47685       ELSE
47686         WRITE(MSTU(11),*) ' PYAPPS::  LEFT STAU MASS**2 < 0 '
47687         CALL PYSTOP(102)
47688       ENDIF
47689       ARG=PYRNMQ(1,-(XBOT+XTOP)/3D0)
47690       IF(ARG.GT.0D0) THEN
47691         RMSS(10)=SQRT(ARG)
47692       ELSE
47693         RMSS(10)=-SQRT(-ARG)
47694       ENDIF
47695       ARG=PYRNMQ(2,-2D0*XTOP/3D0)
47696       IF(ARG.GT.0D0) THEN
47697         RMSS(12)=SQRT(ARG)
47698       ELSE
47699         RMSS(12)=-SQRT(-ARG)
47700       ENDIF
47701       ARG=PYRNMQ(3,-2D0*XBOT/3D0)
47702       IF(ARG.GT.0D0) THEN
47703         RMSS(11)=SQRT(ARG)
47704       ELSE
47705         RMSS(11)=-SQRT(-ARG)
47706       ENDIF
47707  
47708       RETURN
47709       END
47710  
47711 C*********************************************************************
47712  
47713 C...PYSUGI
47714 C...Interface to ISASUSY version 7.71.
47715 C...Warning: this interface should not be used with earlier versions
47716 C...of ISASUSY, since common block incompatibilities may then arise.
47717 C...Calls SUGRA (in ISAJET) to perform RGE evolution.
47718 C...Then converts to Gunion-Haber conventions.
47719  
47720       SUBROUTINE PYSUGI
47721       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47722  
47723       INTEGER PYK,PYCHGE,PYCOMP
47724       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
47725      &KEXCIT=4000000,KDIMEN=5000000)
47726  
47727 C...Date of Change
47728       CHARACTER DOC*11
47729       PARAMETER (DOC='01 May 2006')
47730  
47731 C...ISASUGRA Input:
47732       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
47733 C...XISAIN contains the MSSMi inputs in natural order.
47734       COMMON /SUGXIN/ XISAIN(24),XSUGIN(7),XGMIN(14),XNRIN(4),
47735      $XAMIN(7)
47736       REAL XISAIN,XSUGIN,XGMIN,XNRIN,XAMIN
47737       SAVE /SUGXIN/
47738 C...ISASUGRA Output
47739       CHARACTER*40 ISAVER,VISAJE
47740       REAL SUPER
47741       COMMON /SSPAR/ SUPER(72)
47742       COMMON /SUGMG/ MSS(32),GSS(31),MGUTSS,GGUTSS,AGUTSS,FTGUT,
47743      $FBGUT,FTAGUT,FNGUT
47744       REAL MSS,GSS,MGUTSS,GGUTSS,AGUTSS,FTGUT,FBGUT,FTAGUT,FNGUT
47745       COMMON /SUGPAS/ XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
47746      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
47747      $FNMZ,AMNRMJ,NOGOOD,IAL3UN,ITACHY,MHPNEG,ASM3,
47748      $VUMT,VDMT,ASMTP,ASMSS,M3Q
47749       REAL XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
47750      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
47751      $FNMZ,AMNRMJ,ASM3,VUMT,VDMT,ASMTP,ASMSS,M3Q
47752       INTEGER NOGOOD,IAL3UN,ITACHY,MHPNEG
47753       INTEGER IALLOW
47754       SAVE /SUGMG/,/SSPAR/
47755 C SUPER: Filled by ISASUGRA.
47756 C SUPER(1)        = mass of ~g
47757 C SUPER(2:17)     = mass of ~u_L,~u_R,~d_L,~d_R,~s_L,~s_R,~c_L,~c_R,~b_L
47758 C                          ,~b_R,~b_1,~b_2,~t_L,~t_R,~t_1,~t_2
47759 C SUPER(18:25)    = mass of ~e_L,~e_R,~mu_L,~mu_R,~tau_L,~tau_R,~tau_1
47760 C                          ,~tau_2
47761 C SUPER(26:28)    = mass of ~nu_e,~nu_mu,~nu_tau
47762 C SUPER(29)       = Higgsino mass = - mu
47763 C SUPER(30)       = ratio v2/v1 of vev's
47764 C SUPER(31:34)    = Signed neutralino masses
47765 C SUPER(35:50)    = Neutralino mixing matrix
47766 C SUPER(51:52)    = Signed chargino masses
47767 C SUPER(53:54)    = Chargino left, right mixing angles
47768 C SUPER(55:58)    = mass of h0, H0, A0, H+
47769 C SUPER(59)       = Higgs mixing angle alpha
47770 C SUPER(60:65)    = A_t, theta_t, A_b, theta_b, A_tau, theta_tau
47771 C SUPER(66)       = Gravitino mass
47772 C SUPER(67:69)    = Top,Bottom, and Tau masses at MSUSY (not used)
47773 C SUPER(70)       = b-Yukawa at mA scale (not used)
47774 C SUPER(71:72)    = H_u, H_d vev's at MSUSY (not used)
47775 C GSS: Filled by ISASUGRA
47776 C     GSS( 1) = g_1        GSS( 2) = g_2        GSS( 3) = g_3
47777 C     GSS( 4) = y_tau      GSS( 5) = y_b        GSS( 6) = y_t
47778 C     GSS( 7) = M_1        GSS( 8) = M_2        GSS( 9) = M_3
47779 C     GSS(10) = A_tau      GSS(11) = A_b        GSS(12) = A_t
47780 C     GSS(13) = M_h12     GSS(14) = M_h22     GSS(15) = M_er2
47781 C     GSS(16) = M_el2     GSS(17) = M_dnr2    GSS(18) = M_upr2
47782 C     GSS(19) = M_upl2    GSS(20) = M_taur2   GSS(21) = M_taul2
47783 C     GSS(22) = M_btr2    GSS(23) = M_tpr2    GSS(24) = M_tpl2
47784 C     GSS(25) = mu         GSS(26) = B          GSS(27) = Y_N
47785 C     GSS(28) = M_nr       GSS(29) = A_n        GSS(30) = log(vdq)
47786 C     GSS(31) = log(vuq)
47787 C MSS: Filled by ISASUGRA
47788 C     MSS( 1) = glss     MSS( 2) = upl      MSS( 3) = upr
47789 C     MSS( 4) = dnl      MSS( 5) = dnr      MSS( 6) = stl
47790 C     MSS( 7) = str      MSS( 8) = chl      MSS( 9) = chr
47791 C     MSS(10) = b1       MSS(11) = b2       MSS(12) = t1
47792 C     MSS(13) = t2       MSS(14) = nuel     MSS(15) = numl
47793 C     MSS(16) = nutl     MSS(17) = el-      MSS(18) = er-
47794 C     MSS(19) = mul-     MSS(20) = mur-     MSS(21) = tau1
47795 C     MSS(22) = tau2     MSS(23) = z1ss     MSS(24) = z2ss
47796 C     MSS(25) = z3ss     MSS(26) = z4ss     MSS(27) = w1ss
47797 C     MSS(28) = w2ss     MSS(29) = hl0      MSS(30) = hh0
47798 C     MSS(31) = ha0      MSS(32) = h+
47799 C Unification, filled by ISASUGRA if applicable.
47800 C     MGUTSS  = M_GUT    GGUTSS  = g_GUT    AGUTSS  = alpha_GUTC
47801  
47802 C...SPYTHIA Input/Output
47803       INTEGER IMSS
47804       DOUBLE PRECISION RMSS
47805       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
47806       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
47807      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
47808 C...SLHA Input/Output
47809       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
47810      &     AU(3,3),AD(3,3),AE(3,3)
47811 C...PYTHIA common blocks
47812       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47813       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
47814       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47815  
47816       SAVE  /PYMSSM/,/PYSSMT/,/PYLH3P/,/PYDAT1/,/PYPARS/,/PYDAT2/
47817 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
47818       INTEGER IMODEL
47819       REAL M0,MHF,A0,MT
47820       CHARACTER*20 CHMOD(5)
47821       CHARACTER*32 FNAME
47822  
47823       COMMON /SUGNU/ XNUSUG(18)
47824       REAL XNUSUG
47825       SAVE /SUGNU/
47826  
47827       DATA CHMOD/'mSUGRA','mGMSB','non-universal SUGRA',
47828      &     'truly unified SUGRA', 'non-minimal GMSB'/
47829  
47830 C...Start by checking for incompatibilities/inconsistencies:
47831       DO 100 ICHK=2,9
47832         IF (ICHK.NE.8.AND.ICHK.NE.4.AND.IMSS(ICHK).NE.0) THEN
47833           WRITE (MSTU(11),*) '(PYSUGI:) IMSS(',ICHK,')=',IMSS(ICHK)
47834      &         ,' option not used by PYSUGI'
47835         ENDIF
47836   100 CONTINUE
47837 C...ISAJET works with REAL numbers.
47838       MZERO=REAL(RMSS(8))
47839       MHLF=REAL(RMSS(1))
47840       AZERO=REAL(RMSS(16))
47841       TANB=REAL(RMSS(5))
47842       SGNMU=REAL(RMSS(4))
47843       MTOP=REAL(PMAS(6,1))
47844       IMODEL=0
47845       IF (IMSS(1).EQ.12) THEN
47846         IMODEL=1
47847         GOTO 130
47848       ELSEIF(IMSS(1).EQ.13) THEN
47849 C...Read from isajet par file in IMSS(20)
47850         LFN=IMSS(20)
47851 C...STOP IF LFN IS ZERO (i.e. if no LFN was given).
47852         IF (LFN.EQ.0) THEN
47853           WRITE(MSTU(11),*) '(PYSUGI:) No valid unit given in IMSS(20)'
47854           GOTO 9999
47855         ENDIF
47856         WRITE(MSTU(11),*) 'READING SUSY MODEL FROM FILE...'
47857 CMrenna change to allow any susy model
47858         WRITE(MSTU(11),*) 'ENTER 1 for mSUGRA:'
47859         WRITE(MSTU(11),*) 'ENTER 2 for mGMSB:'
47860         WRITE(MSTU(11),*) 'ENTER 3 for non-universal SUGRA:'
47861         WRITE(MSTU(11),*) 'ENTER 4 for SUGRA with truly unified'//
47862      &       ' gauge couplings:'
47863         WRITE(MSTU(11),*) 'ENTER 5 for non-minimal GMSB:'
47864         READ(LFN,*) IMODEL
47865         IF (IMODEL.EQ.4) THEN
47866           IAL3UN=1
47867           IMODEL=1
47868         ENDIF
47869         IF (IMODEL.EQ.1.OR.IMODEL.EQ.3) THEN
47870           WRITE(MSTU(11),*) 'ENTER M_0, M_(1/2), A_0, tan(beta),'
47871      &         //' sgn(mu), M_t:'
47872           READ(LFN,*) M0,MHF,A0,TANB,SGNMU,MT
47873           IF (IMODEL.EQ.3) THEN
47874             IMODEL=1
47875  110        WRITE(MSTU(11),*) ' ENTER 1,...,5 for NUSUGx keyword;'
47876      &           //' 0 to continue:'
47877             WRITE(MSTU(11),*) ' NUSUG1 = GUT scale gaugino masses'
47878             WRITE(MSTU(11),*) ' NUSUG2 = GUT scale A terms'
47879             WRITE(MSTU(11),*) ' NUSUG3 = GUT scale Higgs masses'
47880             WRITE(MSTU(11),*) ' NUSUG4 = GUT scale 1st/2nd'
47881      &           //' generation masses'
47882             WRITE(MSTU(11),*)
47883      &           ' NUSUG5 = GUT scale 3rd generation masses'
47884             READ(LFN,*) INUSUG
47885             IF (INUSUG.EQ.0) THEN
47886               GOTO 120
47887             ELSEIF (INUSUG.EQ.1) THEN
47888               WRITE(MSTU(11),*) 'Enter GUT scale M_1, M_2, M_3:'
47889               READ(LFN,*) XNUSUG(1),XNUSUG(2),XNUSUG(3)
47890               IF (XNUSUG(3).LE.0.) THEN
47891                 WRITE(MSTU(11),*) ' NEGATIVE M_3 IS NOT ALLOWED'
47892                 CALL PYSTOP(109)
47893               END IF
47894             ELSEIF (INUSUG.EQ.2) THEN
47895               WRITE(MSTU(11),*) 'Enter GUT scale A_t, A_b, A_tau:'
47896               READ(LFN,*) XNUSUG(6),XNUSUG(5),XNUSUG(4)
47897             ELSEIF (INUSUG.EQ.3) THEN
47898               WRITE(MSTU(11),*) 'Enter GUT scale m_Hd, m_Hu:'
47899               READ(LFN,*) XNUSUG(7),XNUSUG(8)
47900             ELSEIF (INUSUG.EQ.4) THEN
47901               WRITE(MSTU(11),*) 'Enter GUT scale M(ul), M(dr),'
47902      &             //' M(ur), M(el), M(er):'
47903               READ(LFN,*) XNUSUG(13),XNUSUG(11),XNUSUG(12),
47904      &             XNUSUG(10),XNUSUG(9)
47905             ELSEIF (INUSUG.EQ.5) THEN
47906               WRITE(MSTU(11),*) 'Enter GUT scale M(tl), M(br), M(tr),'
47907      &              //' M(Ll), M(Lr):'
47908               READ(LFN,*) XNUSUG(18),XNUSUG(16),XNUSUG(17),
47909      &             XNUSUG(15),XNUSUG(14)
47910             ENDIF
47911             GOTO 110
47912           ENDIF
47913         ELSEIF (IMODEL.EQ.2.OR.IMODEL.EQ.5) THEN
47914           IMSS(11)=1
47915           WRITE(MSTU(11),*) 'ENTER Lambda, M_mes, N_5, tan(beta),'
47916      &         ,' sgn(mu), M_t, C_gv:'
47917           READ(LFN,*) M0,MHF,A0,TANB,SGNMU,MT,XCMGV
47918           XGMIN(7)=XCMGV
47919           XGMIN(8)=1.
47920 C...Planck scale: AMPL = 2.4 E18 GeV = {8 pi G_newton}^{1/2}
47921           AMPL=2.4D18
47922           AMGVSS=M0*MHF*XCMGV/SQRT(3D0)/AMPL
47923           IF (IMODEL.EQ.5) THEN
47924             IMODEL=2
47925             WRITE(MSTU(11),*) 'Rsl = factor multiplying gaugino'
47926      &           ,' masses at M_mes'
47927             WRITE(MSTU(11),*) 'dmH_d2, dmH_u2 = Higgs mass**2'
47928      &           ,' shifts at M_mes'
47929             WRITE(MSTU(11),*) 'd_Y = mass**2 shifts proportional to',
47930      &           ' Y at M_mes'
47931             WRITE(MSTU(11),*) 'n5_1,n5_2,n5_3 = n5 values for U(1),'
47932      &           ,'SU(2),SU(3)'
47933             WRITE(MSTU(11),*) 'ENTER Rsl, dmH_d2, dmH_u2, d_Y, n5_1,'
47934      &           ,' n5_2, n5_3'
47935             READ(LFN,*) XGMIN(8),XGMIN(9),XGMIN(10),XGMIN(11),XGMIN(12),
47936      $           XGMIN(13),XGMIN(14)
47937           ENDIF
47938         ELSE
47939           WRITE(MSTU(11),*) 'Invalid model choice.'
47940           GOTO 9999
47941         ENDIF
47942       ENDIF
47943  
47944  120  MZERO=M0
47945       MHLF=MHF
47946       AZERO=A0
47947 C     TANB=REAL(RMSS(5))
47948 C     SGNMU=REAL(RMSS(4))
47949       MTOP=MT
47950  
47951 C...Initialize MSSM parameter array
47952  130  DO 140 IPAR=1,72
47953         SUPER(IPAR)=0.0
47954  140  CONTINUE
47955 C...Call ISASUGRA
47956       CALL SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODEL)
47957 C...Check whether ISASUSY thought the model was OK.
47958       IF (NOGOOD.NE.0) THEN
47959         IF (NOGOOD.EQ.1) CALL PYERRM(26
47960      &       ,'(PYSUGI:) SUSY parameters give tachyonic particles.')
47961         IF (NOGOOD.EQ.2) CALL PYERRM(26
47962      &       ,'(PYSUGI:) SUSY parameters give no EWSB.')
47963         IF (NOGOOD.EQ.3) CALL PYERRM(26
47964      &       ,'(PYSUGI:) SUSY parameters give m(A0) < 0.')
47965         IF (NOGOOD.EQ.4) CALL PYERRM(26
47966      &       ,'(PYSUGI:) SUSY parameters give Yukawa > 100.')
47967         IF (NOGOOD.EQ.7) CALL PYERRM(26
47968      &       ,'(PYSUGI:) SUSY parameters give x_T EWSB bad.')
47969         IF (NOGOOD.EQ.8) CALL PYERRM(26
47970      &       ,'(PYSUGI:) SUSY parameters give m(h0)2 < 0.')
47971 C...Give warning, but don't stop, if LSP not ~chi_10.
47972         IF (NOGOOD.EQ.5) CALL PYERRM(16
47973      &       ,'(PYSUGI:) SUSY parameters give ~chi_10 not LSP.')
47974       ENDIF
47975 C...Warn about possible GUT scale tachyons.
47976       IF (ITACHY.NE.0) CALL PYERRM(16,
47977      &       '(PYSUGI:) Tachyonic sleptons at GUT scale.')
47978 C...Finalize spectrum (last iteration)
47979 C...(Thanks to A. Raklev for pointing this out.)
47980 C...NB: SSMSSM also calculates decays, but these are not used by Pythia.
47981       CALL SSMSSM(XISAIN(1),XISAIN(2),XISAIN(3),
47982      $ XISAIN(4),XISAIN(5),XISAIN(6),XISAIN(7),XISAIN(8),XISAIN(9),
47983      $ XISAIN(10),XISAIN(11),XISAIN(12),XISAIN(13),XISAIN(14),
47984      $ XISAIN(15),XISAIN(16),XISAIN(17),XISAIN(18),XISAIN(19),
47985      $ XISAIN(20),XISAIN(21),XISAIN(22),XISAIN(23),XISAIN(24),
47986      $ MTOP,IALLOW,1)
47987  
47988 C...M1, M2, M3.
47989       RMSS(1)=dble(GSS(7))
47990       RMSS(2)=dble(GSS(8))
47991       RMSS(3)=dble(GSS(9))
47992       RMSOFT(1)=dble(GSS(7))
47993       RMSOFT(2)=dble(GSS(8))
47994       RMSOFT(3)=dble(GSS(9))
47995 C...Mu = - Higgsino mass.
47996       RMSS(4)=-SUPER(29)
47997       RMSS(5)=TANB
47998 C...Slepton and squark masses. 2 first generations.
47999       RMSS(6)=0.5*(SUPER(18)+SUPER(20))
48000       RMSS(7)=0.5*(SUPER(19)+SUPER(21))
48001       RMSS(8)=0.25*(SUPER(2)+SUPER(4)+SUPER(6)+SUPER(8))
48002       RMSS(9)=0.25*(SUPER(3)+SUPER(5)+SUPER(7)+SUPER(9))
48003 C...Third generation.
48004       RMSS(10)=0.5*(SUPER(14)+SUPER(10))
48005       RMSS(11)=SUPER(11)
48006       RMSS(12)=SUPER(15)
48007       RMSS(13)=SUPER(22)
48008       RMSS(14)=SUPER(23)
48009 C...SLHA: store exact soft spectrum in RMSOFT
48010       RMSOFT(31)=SUPER(18)
48011       RMSOFT(32)=SUPER(20)
48012       RMSOFT(33)=SUPER(22)
48013       RMSOFT(34)=SUPER(19)
48014       RMSOFT(35)=SUPER(21)
48015       RMSOFT(36)=SUPER(23)
48016       RMSOFT(41)=0.5D0*(SUPER(2)+SUPER(4))
48017       RMSOFT(42)=0.5D0*(SUPER(6)+SUPER(8))
48018       RMSOFT(43)=0.5D0*(SUPER(10)+SUPER(14))
48019       RMSOFT(44)=SUPER(3)
48020       RMSOFT(45)=SUPER(9)
48021       RMSOFT(46)=SUPER(15)
48022       RMSOFT(47)=SUPER(5)
48023       RMSOFT(48)=SUPER(7)
48024       RMSOFT(49)=SUPER(11)
48025  
48026 C...~b, ~t, and ~tau trilinear couplings and mixing angles.
48027       RMSS(15)=SUPER(62)
48028       RMSS(16)=SUPER(60)
48029       RMSS(17)=SUPER(64)
48030       RMSS(26)=SUPER(63)
48031       RMSS(27)=SUPER(61)
48032       RMSS(28)=SUPER(65)
48033 C...SLHA trilinears
48034       DO 142 K1=1,3
48035         DO 141 K2=1,3
48036           AE(K1,K2)=0D0
48037           AU(K1,K2)=0D0
48038           AD(K1,K2)=0D0
48039  141    CONTINUE
48040  142  CONTINUE
48041       AE(3,3)=SUPER(64)
48042       AU(3,3)=SUPER(60)
48043       AD(3,3)=SUPER(62)
48044 C...Higgs mixing angle alpha (Gunion-Haber convention).
48045       RMSS(18)=-SUPER(59)
48046 C...A0 mass.
48047       RMSS(19)=SUPER(57)
48048 C...GUT scale coupling
48049       RMSS(20)=AGUTSS
48050 C...Gravitino mass (for future compatibility)
48051       RMSS(21)=MAX(RMSS(21),DBLE(SUPER(66)))
48052  
48053 C...Now we're done with RMSS. Time to fill PMAS (m > 0 required).
48054 C...Higgs sector.
48055       PMAS(PYCOMP(25),1)=ABS(SUPER(55))
48056       PMAS(PYCOMP(35),1)=ABS(SUPER(56))
48057       PMAS(PYCOMP(36),1)=ABS(SUPER(57))
48058       PMAS(PYCOMP(37),1)=ABS(SUPER(58))
48059 C...Gluino.
48060       PMAS(PYCOMP(KSUSY1+21),1)=ABS(SUPER(1))
48061 C...Squarks and Sleptons.
48062       DO 150 ILR=1,2
48063         ILRM=ILR-1
48064         PMAS(PYCOMP(ILR*KSUSY1+1),1)=ABS(SUPER(4+ILRM))
48065         PMAS(PYCOMP(ILR*KSUSY1+2),1)=ABS(SUPER(2+ILRM))
48066         PMAS(PYCOMP(ILR*KSUSY1+3),1)=ABS(SUPER(6+ILRM))
48067         PMAS(PYCOMP(ILR*KSUSY1+4),1)=ABS(SUPER(8+ILRM))
48068         PMAS(PYCOMP(ILR*KSUSY1+5),1)=ABS(SUPER(12+ILRM))
48069         PMAS(PYCOMP(ILR*KSUSY1+6),1)=ABS(SUPER(16+ILRM))
48070         PMAS(PYCOMP(ILR*KSUSY1+11),1)=ABS(SUPER(18+ILRM))
48071         PMAS(PYCOMP(ILR*KSUSY1+13),1)=ABS(SUPER(20+ILRM))
48072         PMAS(PYCOMP(ILR*KSUSY1+15),1)=ABS(SUPER(24+ILRM))
48073   150 CONTINUE
48074       PMAS(PYCOMP(KSUSY1+12),1)=ABS(SUPER(26))
48075       PMAS(PYCOMP(KSUSY1+14),1)=ABS(SUPER(27))
48076       PMAS(PYCOMP(KSUSY1+16),1)=ABS(SUPER(28))
48077 C...Neutralinos.
48078       PMAS(PYCOMP(KSUSY1+22),1)=ABS(SUPER(31))
48079       PMAS(PYCOMP(KSUSY1+23),1)=ABS(SUPER(32))
48080       PMAS(PYCOMP(KSUSY1+25),1)=ABS(SUPER(33))
48081       PMAS(PYCOMP(KSUSY1+35),1)=ABS(SUPER(34))
48082 C...Signed masses (extra minus from going to G-H convention).
48083       SMZ(1)=-SUPER(31)
48084       SMZ(2)=-SUPER(32)
48085       SMZ(3)=-SUPER(33)
48086       SMZ(4)=-SUPER(34)
48087 C...Charginos
48088       PMAS(PYCOMP(KSUSY1+24),1)=ABS(SUPER(51))
48089       PMAS(PYCOMP(KSUSY1+37),1)=ABS(SUPER(52))
48090 C...Signed masses (extra minus from going to G-H convention).
48091       SMW(1)=-SUPER(51)
48092       SMW(2)=-SUPER(52)
48093  
48094 C... Neutralino Mixing.
48095       DO 160 IN=1,4
48096         ZMIX(IN,1)= SUPER(38+4*(IN-1))
48097         ZMIX(IN,2)= SUPER(37+4*(IN-1))
48098         ZMIX(IN,3)=-SUPER(36+4*(IN-1))
48099         ZMIX(IN,4)=-SUPER(35+4*(IN-1))
48100   160 CONTINUE
48101 C...Chargino Mixing (PYTHIA same angle as HERWIG).
48102       THX=1D0
48103       THY=1D0
48104       IF (SUPER(53).GT.0) THX=-1D0
48105       IF (SUPER(54).GT.0) THY=-1D0
48106       UMIX(1,1) = -SIN(SUPER(53))
48107       UMIX(1,2) = -COS(SUPER(53))
48108       UMIX(2,1) = -THX*COS(SUPER(53))
48109       UMIX(2,2) = THX*SIN(SUPER(53))
48110       VMIX(1,1) = -SIN(SUPER(54))
48111       VMIX(1,2) = -COS(SUPER(54))
48112       VMIX(2,1) = -THY*COS(SUPER(54))
48113       VMIX(2,2) = THY*SIN(SUPER(54))
48114 C...Sfermion mixing (PYTHIA same angle as ISAJET)
48115       SFMIX(5,1)=COS(SUPER(63))
48116       SFMIX(5,2)=SIN(SUPER(63))
48117       SFMIX(5,3)=-SIN(SUPER(63))
48118       SFMIX(5,4)=COS(SUPER(63))
48119       SFMIX(6,1)=COS(SUPER(61))
48120       SFMIX(6,2)=SIN(SUPER(61))
48121       SFMIX(6,3)=-SIN(SUPER(61))
48122       SFMIX(6,4)=COS(SUPER(61))
48123       SFMIX(15,1)=COS(SUPER(65))
48124       SFMIX(15,2)=SIN(SUPER(65))
48125       SFMIX(15,3)=-SIN(SUPER(65))
48126       SFMIX(15,4)=COS(SUPER(65))
48127  
48128       IF (MSTP(122).NE.0) THEN
48129 C...Print a few lines to make the user know what's happening
48130         ISAVER=VISAJE()
48131         WRITE(MSTU(11),5000) DOC, ISAVER
48132         WRITE(MSTU(11),5100)
48133         IF (IMODEL.EQ.1) THEN
48134           WRITE(MSTU(11),5200) MZERO, MHLF, AZERO, TANB, NINT(SGNMU),
48135      &         MTOP
48136           WRITE(MSTU(11),5300)
48137         ENDIF
48138         WRITE(MSTU(11),5500) 'Pole masses'
48139         WRITE(MSTU(11),5700) (SUPER(IP),IP=2,16,2),(SUPER(IP),IP=3,17,2)
48140         WRITE(MSTU(11),5800) (SUPER(IP),IP=18,24,2),(SUPER(IP),IP=26,28)
48141      &       ,(SUPER(IP),IP=19,25,2)
48142         WRITE(MSTU(11),5900) SUPER(1),(SMZ(IP),IP=1,4), (SMW(IP)
48143      &       ,IP=1,2)
48144         WRITE(MSTU(11),5400)
48145         WRITE(MSTU(11),6000) (SUPER(IP),IP=55,58)
48146         WRITE(MSTU(11),5400)
48147         WRITE(MSTU(11),5500) 'EW scale mixing structure'
48148         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
48149         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
48150      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
48151         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
48152      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
48153      &       ),(SFMIX(15,J),J=3,4)
48154         WRITE(MSTU(11),5400)
48155         WRITE(MSTU(11),6450) RMSS(18)
48156         WRITE(MSTU(11),5400)
48157         WRITE(MSTU(11),5500) 'Couplings'
48158         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17),RMSS(20)
48159         WRITE(MSTU(11),5400)
48160       ENDIF
48161  
48162 C...Call FeynHiggs to improve Higgs sector if requested
48163       IF (IMSS(4).EQ.3) THEN
48164         IF (MSTP(122).NE.0) WRITE(MSTU(11),'(1x,"*"/1x,"*",A)')
48165      &       ' (PYSUGI:) Now calling FeynHiggs.'
48166         CALL PYFEYN(IERR)
48167         IF (IERR.EQ.0) THEN
48168           IMSS(4)=2
48169           IF (MSTP(122).NE.0) THEN
48170             WRITE(MSTU(11),5400)
48171             WRITE(MSTU(11),5500)
48172      &           'Corrected Higgs masses and mixing'
48173             WRITE(MSTU(11),6000) PMAS(25,1),PMAS(35,1),PMAS(36,1),
48174      &           PMAS(37,1)
48175             WRITE(MSTU(11),6450) RMSS(18)
48176             WRITE(MSTU(11),5400)
48177           ENDIF
48178         ENDIF
48179       ENDIF
48180  
48181       IF (MSTP(122).NE.0) WRITE(MSTU(11),6500)
48182  
48183 C...Fix the higgs sector (in PYMSIN) using the masses and mixing angle
48184 C...output by ISASUSY.
48185       IMSS(4)=MAX(2,IMSS(4))
48186  
48187  5000 FORMAT(1x,19('*'),1x,'PYSUGI v1.52: PYTHIA/ISASUSY '
48188      &     ,'INTERFACE',1x,19('*')/1x,'*',3x,'PYSUGI: Last Change',1x,A
48189      &     ,1x,'-',1x,'P. Skands / S. Mrenna'/1x,'*',2x,A/1x,'*')
48190  5100 FORMAT(1x,'*',1x,'ISASUSY Input:'/1x,'*',1x,'----------------')
48191  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
48192      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
48193  5300 FORMAT(1x,'*'/1x,'*',1x,'ISASUSY Output:'/1x,'*',1x
48194      &     ,'----------------')
48195  5400 FORMAT(1x,'*',1x,A)
48196  5500 FORMAT(1x,'*',1x,A,':')
48197  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
48198      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
48199  5700 FORMAT(1x,'*',4x,4x,'~u',2x,1x,4x,'~d',2x,1x,4x,'~s',2x,1x,
48200      &     4x,'~c',2x,1x,4x,'~b',2x,1x,2x,'~b(12)',1x,4x,'~t',2x,1x, 2x,
48201      &     '~t(12)'/1x,'*',2x,'L',1x,8(F8.2,1x)/1x,'*',2x,'R',1x,8(F8.2
48202      &     ,1x))
48203  5800 FORMAT(1x,'*'/1x,'*',4x,4x,'~e',2x,1x,3x,'~mu',2x,1x,3x,'~tau',1x
48204      &     ,1x,'~tau(12)',1x,2x,'~nu_e',1x,1x,1x,'~nu_mu',1x,1x,1x
48205      &     ,'~nu_tau'/1x,'*',2x,'L',1x,7(F8.2,1x)/1x,'*',2x,'R',1x,4(F8
48206      &     .2,1x))
48207  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
48208      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
48209      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
48210  6000 FORMAT(1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
48211      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x))
48212  6050 FORMAT(1x,'*'/1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
48213      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x),3x,'(Before FeynHiggs)')
48214  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
48215      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
48216      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
48217      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
48218      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
48219      &     ,1x,F6.3,1x),'|')
48220  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
48221      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
48222      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
48223      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
48224      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
48225  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
48226      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
48227      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
48228      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
48229      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
48230      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
48231      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
48232  6400 FORMAT(1x,'*',3x,'A_b = ',F8.2,4x,'A_t = ',F8.2,4x,'A_tau = ',F8.2
48233      &     ,4x,'Alpha_GUT = ',F8.2)
48234  6450 FORMAT(1x,'*',3x,'Alpha_Higgs = ',F8.4)
48235  6500 FORMAT(1x,32('*'),1x,'END OF PYSUGI',1x,31('*'))
48236  
48237  9999 RETURN
48238       END
48239  
48240 C*********************************************************************
48241  
48242 C...PYFEYN
48243 C...Interface to FeynHiggs for MSSM Higgs sector.
48244 C...Pythia6.402: Updated to FeynHiggs v.2.3.0+ w/ DOUBLE COMPLEX
48245 C...P. Skands
48246  
48247       SUBROUTINE PYFEYN(IERR)
48248  
48249 C...Double precision and integer declarations.
48250       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48251       IMPLICIT INTEGER(I-N)
48252       INTEGER PYK,PYCHGE,PYCOMP
48253 C...Commonblocks.
48254       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48255       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48256 C...SUSY blocks
48257       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
48258 C...FeynHiggs variables
48259       DOUBLE PRECISION RMHIGG(4)
48260       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
48261       DOUBLE COMPLEX DMU,
48262      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
48263      &     DM1, DM2, DM3
48264 C...SLHA Common Block
48265       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
48266      &     AU(3,3),AD(3,3),AE(3,3)
48267       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYLH3P/
48268  
48269       IERR=0
48270       CALL FHSETFLAGS(IERR,4,0,0,2,0,2,1,1)
48271       IF (IERR.NE.0) THEN
48272         CALL PYERRM(11,'(PYHGGM:) Caught error from FHSETFLAGS.'
48273      &       //'Will not use FeynHiggs for this run.')
48274         RETURN
48275       ENDIF
48276       Q=RMSOFT(0)
48277       DMB=PMAS(5,1)
48278       DMT=PMAS(6,1)
48279       DMZ=PMAS(23,1)
48280       DMW=PMAS(24,1)
48281       DMA=PMAS(36,1)
48282       DM1=RMSOFT(1)
48283       DM2=RMSOFT(2)
48284       DM3=RMSOFT(3)
48285       DTANB=RMSS(5)
48286       DMU=RMSS(4)
48287       DM3SL=RMSOFT(33)
48288       DM3SE=RMSOFT(36)
48289       DM3SQ=RMSOFT(43)
48290       DM3SU=RMSOFT(46)
48291       DM3SD=RMSOFT(49)
48292       DM2SL=RMSOFT(32)
48293       DM2SE=RMSOFT(35)
48294       DM2SQ=RMSOFT(42)
48295       DM2SU=RMSOFT(45)
48296       DM2SD=RMSOFT(48)
48297       DM1SL=RMSOFT(31)
48298       DM1SE=RMSOFT(34)
48299       DM1SQ=RMSOFT(41)
48300       DM1SU=RMSOFT(44)
48301       DM1SD=RMSOFT(47)
48302       AE33=AE(3,3)
48303       AE22=AE(2,2)
48304       AE11=AE(1,1)
48305       AU33=AU(3,3)
48306       AU22=AU(2,2)
48307       AU11=AU(1,1)
48308       AD33=AD(3,3)
48309       AD22=AD(2,2)
48310       AD11=AD(1,1)
48311       CALL FHSETPARA(IERR, 1D0, DMT, DMB, DMW, DMZ, DTANB,
48312      &     DMA,0D0, DM3SL, DM3SE, DM3SQ, DM3SU, DM3SD,
48313      &     DM2SL, DM2SE, DM2SQ, DM2SU, DM2SD,
48314      &     DM1SL, DM1SE, DM1SQ, DM1SU, DM1SD,DMU,
48315      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
48316      &     DM1, DM2, DM3, 0D0, 0D0,Q,Q,Q)
48317       IF (IERR.NE.0) THEN
48318         CALL PYERRM(11,'(PYHGGM:) Caught error from FHSETPARA.'
48319      &       //' Will not use FeynHiggs for this run.')
48320         RETURN
48321       ENDIF
48322 C...  Get Higgs masses & alpha_eff. (UHIGGS redundant here, only for CPV)
48323       SAEFF=0D0
48324       CALL FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS)
48325       IF (IERR.NE.0) THEN
48326         CALL PYERRM(11,'(PYFEYN:) Caught error from FHHIG'//
48327      &       'GSCORR. Will not use FeynHiggs for this run.')
48328         RETURN
48329       ENDIF
48330       ALPHA = ASIN(DBLE(SAEFF))
48331       R=RMSS(18)/ALPHA
48332       IF (R.LT.0D0.OR.ABS(R).GT.1.2D0.OR.ABS(R).LT.0.8D0) THEN
48333         CALL PYERRM(1,'(PYFEYN:) Large corrections in Higgs sector.')
48334         WRITE(MSTU(11),*) '   Old Alpha:', RMSS(18)
48335         WRITE(MSTU(11),*) '   New Alpha:', ALPHA
48336       ENDIF
48337       IF (RMHIGG(1).LT.0.85D0*PMAS(25,1).OR.RMHIGG(1).GT.
48338      &       1.15D0*PMAS(25,1)) THEN
48339         CALL PYERRM(1,'(PYFEYN:) Large corrections in Higgs sector.')
48340         WRITE(MSTU(11),*) '   Old m(h0):', PMAS(25,1)
48341         WRITE(MSTU(11),*) '   New m(h0):', RMHIGG(1)
48342       ENDIF
48343       RMSS(18)=ALPHA
48344       PMAS(25,1)=RMHIGG(1)
48345       PMAS(35,1)=RMHIGG(2)
48346       PMAS(36,1)=RMHIGG(3)
48347       PMAS(37,1)=RMHIGG(4)
48348  
48349       RETURN
48350       END
48351  
48352 C*********************************************************************
48353  
48354 C...PYRNMQ
48355 C...Determines the running mass of Squarks.
48356  
48357       FUNCTION PYRNMQ(ID,DTERM)
48358  
48359 C...Double precision and integer declarations.
48360       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48361       IMPLICIT INTEGER(I-N)
48362       INTEGER PYK,PYCHGE,PYCOMP
48363 C...Commonblock.
48364       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
48365       SAVE /PYMSSM/
48366  
48367 C...Local variables.
48368       DOUBLE PRECISION PI,R
48369       DOUBLE PRECISION TOL
48370       DOUBLE PRECISION CI(3)
48371       EXTERNAL PYALPS
48372       DOUBLE PRECISION PYALPS
48373       DATA TOL/0.001D0/
48374       DATA PI,R/3.141592654D0,.61803399D0/
48375       DATA CI/0.47D0,0.07D0,0.02D0/
48376  
48377       C=1D0-R
48378       CA=CI(ID)
48379       AG=(0.71D0)**2/4D0/PI
48380       AG=RMSS(20)
48381       XM0=RMSS(8)
48382       XMG=RMSS(1)
48383       XM02=XM0*XM0
48384       XMG2=XMG*XMG
48385  
48386       AS=PYALPS(XM02+6D0*XMG2)
48387       CG=8D0/9D0*((AS/AG)**2-1D0)
48388       BX=XM02+(CA+CG)*XMG2+DTERM
48389       AX=MIN(50D0**2,0.5D0*BX)
48390       CX=MAX(2000D0**2,2D0*BX)
48391  
48392       X0=AX
48393       X3=CX
48394       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
48395         X1=BX
48396         X2=BX+C*(CX-BX)
48397       ELSE
48398         X2=BX
48399         X1=BX-C*(BX-AX)
48400       ENDIF
48401       AS1=PYALPS(X1)
48402       CG=8D0/9D0*((AS1/AG)**2-1D0)
48403       F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
48404       AS2=PYALPS(X2)
48405       CG=8D0/9D0*((AS2/AG)**2-1D0)
48406       F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
48407   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
48408         IF(F2.LT.F1) THEN
48409           X0=X1
48410           X1=X2
48411           X2=R*X1+C*X3
48412           F1=F2
48413           AS2=PYALPS(X2)
48414           CG=8D0/9D0*((AS2/AG)**2-1D0)
48415           F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
48416         ELSE
48417           X3=X2
48418           X2=X1
48419           X1=R*X2+C*X0
48420           F2=F1
48421           AS1=PYALPS(X1)
48422           CG=8D0/9D0*((AS1/AG)**2-1D0)
48423           F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
48424         ENDIF
48425         GOTO 100
48426       ENDIF
48427       IF(F1.LT.F2) THEN
48428         PYRNMQ=X1
48429         XMIN=X1
48430       ELSE
48431         PYRNMQ=X2
48432         XMIN=X2
48433       ENDIF
48434  
48435       RETURN
48436       END
48437  
48438 C*********************************************************************
48439  
48440 C...PYTHRG
48441 C...Calculates the mass eigenstates of the third generation sfermions.
48442 C...Created:  5-31-96
48443  
48444       SUBROUTINE PYTHRG
48445  
48446 C...Double precision and integer declarations.
48447       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48448       IMPLICIT INTEGER(I-N)
48449       INTEGER PYK,PYCHGE,PYCOMP
48450 C...Parameter statement to help give large particle numbers.
48451       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
48452      &KEXCIT=4000000,KDIMEN=5000000)
48453 C...Commonblocks.
48454       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48455       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48456       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
48457       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
48458      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
48459       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
48460  
48461 C...Local variables.
48462       DOUBLE PRECISION BETA
48463       DOUBLE PRECISION AM2(2,2),RT(2,2),DI(2,2)
48464       DOUBLE PRECISION XMZ2,XMW2,TANB,XMU,COS2B,XMQL2,XMQR2
48465       DOUBLE PRECISION XMF,XMF2,DIFF,SAME,XMF12,XMF22,SMALL
48466       DOUBLE PRECISION ATR,AMQR,AMQL
48467       INTEGER ID1(3),ID2(3),ID3(3),ID4(3)
48468       INTEGER IF,I,J,II,JJ,IT,L
48469       LOGICAL DTERM
48470       DATA SMALL/1D-3/
48471       DATA ID1/10,10,13/
48472       DATA ID2/5,6,15/
48473       DATA ID3/15,16,17/
48474       DATA ID4/11,12,14/
48475       DATA DTERM/.TRUE./
48476  
48477       XMZ2=PMAS(23,1)**2
48478       XMW2=PMAS(24,1)**2
48479       TANB=RMSS(5)
48480       XMU=-RMSS(4)
48481       BETA=ATAN(TANB)
48482       COS2B=COS(2D0*BETA)
48483  
48484 C...OPTION TO FIX T1, T2, B1 MASSES AND MIXINGS
48485  
48486       IOPT=IMSS(5)
48487       IF(IOPT.EQ.1) THEN
48488         CTT=DCOS(RMSS(27))
48489         CTT2=CTT**2
48490         STT=DSIN(RMSS(27))
48491         STT2=STT**2
48492         XM12=RMSS(10)**2
48493         XM22=RMSS(12)**2
48494         XMQL2=CTT2*XM12+STT2*XM22
48495         XMQR2=STT2*XM12+CTT2*XM22
48496         XMF2=PYMRUN(6,PMAS(6,1)**2)**2
48497         ATOP=-XMU/TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
48498         RMSS(16)=ATOP
48499 C......SUBTRACT OUT D-TERM AND FERMION MASS
48500         XMQL2=XMQL2-XMF2-(4D0*XMW2-XMZ2)*COS2B/6D0
48501         XMQR2=XMQR2-XMF2+(XMW2-XMZ2)*COS2B*2D0/3D0
48502         IF(XMQL2.GE.0D0) THEN
48503           RMSS(10)=SQRT(XMQL2)
48504         ELSE
48505           RMSS(10)=-SQRT(-XMQL2)
48506         ENDIF
48507         IF(XMQR2.GE.0D0) THEN
48508           RMSS(12)=SQRT(XMQR2)
48509         ELSE
48510           RMSS(12)=-SQRT(-XMQR2)
48511         ENDIF
48512  
48513 C SAME FOR BOTTOM SQUARK
48514         CTT=DCOS(RMSS(26))
48515         CTT2=CTT**2
48516         STT=DSIN(RMSS(26))
48517         STT2=STT**2
48518         XM22=RMSS(11)**2
48519         XMF2=PYMRUN(5,PMAS(6,1)**2)**2
48520         XMQL2=SIGN(RMSS(10)**2,RMSS(10))-(2D0*XMW2+XMZ2)*COS2B/6D0+XMF2
48521         IF(ABS(CTT).GE..9999D0) THEN
48522           ABOT=-XMU*TANB
48523           XMQR2=RMSS(11)**2
48524         ELSEIF(ABS(CTT).LE.1D-4) THEN
48525           ABOT=-XMU*TANB
48526           XMQR2=RMSS(11)**2
48527         ELSE
48528           XM12=(XMQL2-STT2*XM22)/CTT2
48529           XMQR2=STT2*XM12+CTT2*XM22
48530           ABOT=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
48531         ENDIF
48532         RMSS(15)=ABOT
48533 C......SUBTRACT OUT D-TERM AND FERMION MASS
48534         XMQR2=XMQR2-(XMW2-XMZ2)*COS2B/3D0-XMF2
48535         IF(XMQR2.GE.0D0) THEN
48536           RMSS(11)=SQRT(XMQR2)
48537         ELSE
48538           RMSS(11)=-SQRT(-XMQR2)
48539         ENDIF
48540 C SAME FOR TAU SLEPTON
48541         CTT=DCOS(RMSS(28))
48542         CTT2=CTT**2
48543         STT=DSIN(RMSS(28))
48544         STT2=STT**2
48545         XM12=RMSS(13)**2
48546         XM22=RMSS(14)**2
48547         XMQL2=CTT2*XM12+STT2*XM22
48548         XMQR2=STT2*XM12+CTT2*XM22
48549         XMFR=PMAS(15,1)
48550         XMF2=XMFR**2
48551         ATAU=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
48552         RMSS(17)=ATAU
48553 C......SUBTRACT OUT D-TERM AND FERMION MASS
48554         XMQL2=XMQL2-XMF2+(-.5D0*XMZ2+XMW2)*COS2B
48555         XMQR2=XMQR2-XMF2+(XMZ2-XMW2)*COS2B
48556         IF(XMQL2.GE.0D0) THEN
48557           RMSS(13)=SQRT(XMQL2)
48558         ELSE
48559           RMSS(13)=-SQRT(-XMQL2)
48560         ENDIF
48561         IF(XMQR2.GE.0D0) THEN
48562           RMSS(14)=SQRT(XMQR2)
48563         ELSE
48564           RMSS(14)=-SQRT(-XMQR2)
48565         ENDIF
48566       ENDIF
48567       DO 170 L=1,3
48568         AMQL=RMSS(ID1(L))
48569         IF(AMQL.LT.0D0) THEN
48570           XMQL2=-AMQL**2
48571         ELSE
48572           XMQL2=AMQL**2
48573         ENDIF
48574         ATR=RMSS(ID3(L))
48575         AMQR=RMSS(ID4(L))
48576         IF(AMQR.LT.0D0) THEN
48577           XMQR2=-AMQR**2
48578         ELSE
48579           XMQR2=AMQR**2
48580         ENDIF
48581         IF=ID2(L)
48582         XMF=PYMRUN(IF,PMAS(6,1)**2)
48583         XMF2=XMF**2
48584         AM2(1,1)=XMQL2+XMF2
48585         AM2(2,2)=XMQR2+XMF2
48586         IF(AM2(1,1).EQ.AM2(2,2)) AM2(2,2)=AM2(2,2)*1.00001D0
48587         IF(DTERM) THEN
48588           IF(L.EQ.1) THEN
48589             AM2(1,1)=AM2(1,1)-(2D0*XMW2+XMZ2)*COS2B/6D0
48590             AM2(2,2)=AM2(2,2)+(XMW2-XMZ2)*COS2B/3D0
48591             AM2(1,2)=XMF*(ATR+XMU*TANB)
48592           ELSEIF(L.EQ.2) THEN
48593             AM2(1,1)=AM2(1,1)+(4D0*XMW2-XMZ2)*COS2B/6D0
48594             AM2(2,2)=AM2(2,2)-(XMW2-XMZ2)*COS2B*2D0/3D0
48595             AM2(1,2)=XMF*(ATR+XMU/TANB)
48596           ELSEIF(L.EQ.3) THEN
48597             IF(IMSS(8).EQ.1) THEN
48598               AM2(1,1)=RMSS(6)**2
48599               AM2(2,2)=RMSS(7)**2
48600               AM2(1,2)=0D0
48601               RMSS(13)=RMSS(6)
48602               RMSS(14)=RMSS(7)
48603             ELSE
48604               AM2(1,1)=AM2(1,1)-(-.5D0*XMZ2+XMW2)*COS2B
48605               AM2(2,2)=AM2(2,2)-(XMZ2-XMW2)*COS2B
48606               AM2(1,2)=XMF*(ATR+XMU*TANB)
48607             ENDIF
48608           ENDIF
48609         ENDIF
48610         AM2(2,1)=AM2(1,2)
48611         DETM=AM2(1,1)*AM2(2,2)-AM2(2,1)**2
48612         IF(DETM.LT.0D0) THEN
48613           WRITE(MSTU(11),*) ID2(L),DETM,AM2
48614           CALL PYERRM(30,' NEGATIVE**2 MASS FOR SFERMION IN PYTHRG ')
48615         ENDIF
48616         SAME=0.5D0*(AM2(1,1)+AM2(2,2))
48617         DIFF=0.5D0*SQRT((AM2(1,1)-AM2(2,2))**2+4D0*AM2(1,2)*AM2(2,1))
48618         XMF12=SAME-DIFF
48619         XMF22=SAME+DIFF
48620         IT=0
48621         IF(XMF22-XMF12.GT.0D0) THEN
48622           RT(1,1) = SQRT(MAX(0D0,(XMF22-AM2(1,1))/(XMF22-XMF12)))
48623           RT(2,2) = RT(1,1)
48624           RT(1,2) = -SIGN(SQRT(MAX(0D0,1D0-RT(1,1)**2)),
48625      &    AM2(1,2)/(XMF22-XMF12))
48626           RT(2,1) = -RT(1,2)
48627         ELSE
48628           RT(1,1) = 1D0
48629           RT(2,2) = RT(1,1)
48630           RT(1,2) = 0D0
48631           RT(2,1) = -RT(1,2)
48632         ENDIF
48633   100   CONTINUE
48634         IT=IT+1
48635  
48636         DO 140 I=1,2
48637           DO 130 JJ=1,2
48638             DI(I,JJ)=0D0
48639             DO 120 II=1,2
48640               DO 110 J=1,2
48641                 DI(I,JJ)=DI(I,JJ)+RT(I,J)*AM2(J,II)*RT(JJ,II)
48642   110         CONTINUE
48643   120       CONTINUE
48644   130     CONTINUE
48645   140   CONTINUE
48646  
48647         IF(DI(1,1).GT.DI(2,2)) THEN
48648           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION '
48649           WRITE(MSTU(11),*) L,SQRT(XMF12),SQRT(XMF22)
48650           WRITE(MSTU(11),*) AM2
48651           WRITE(MSTU(11),*) DI
48652           WRITE(MSTU(11),*) RT
48653           DI(1,1)=-RT(2,1)
48654           DI(2,2)=RT(1,2)
48655           DI(1,2)=-RT(2,2)
48656           DI(2,1)=RT(1,1)
48657           DO 160 I=1,2
48658             DO 150 J=1,2
48659               RT(I,J)=DI(I,J)
48660   150       CONTINUE
48661   160     CONTINUE
48662           GOTO 100
48663         ELSEIF(ABS(DI(1,2)*DI(2,1)/DI(1,1)/DI(2,2)).GT.SMALL) THEN
48664           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
48665      &    ' OFF DIAGONAL ELEMENTS '
48666           WRITE(MSTU(11),*) 'MASSES = ',L,SQRT(XMF12),SQRT(XMF22)
48667           WRITE(MSTU(11),*) DI
48668           WRITE(MSTU(11),*) ' ROTATION = ',RT
48669 C...STOP
48670         ELSEIF(DI(1,1).LT.0D0.OR.DI(2,2).LT.0D0) THEN
48671           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
48672      &    ' NEGATIVE MASSES '
48673           CALL PYSTOP(111)
48674         ENDIF
48675         PMAS(PYCOMP(KSUSY1+IF),1)=SQRT(XMF12)
48676         PMAS(PYCOMP(KSUSY2+IF),1)=SQRT(XMF22)
48677         SFMIX(IF,1)=RT(1,1)
48678         SFMIX(IF,2)=RT(1,2)
48679         SFMIX(IF,3)=RT(2,1)
48680         SFMIX(IF,4)=RT(2,2)
48681   170 CONTINUE
48682  
48683 C.....TAU SNEUTRINO MASS...L=3
48684  
48685       XARG=AM2(1,1)+XMW2*COS2B
48686       IF(XARG.LT.0D0) THEN
48687         WRITE(MSTU(11),*) ' PYTHRG:: TAU SNEUTRINO MASS IS NEGATIVE'//
48688      &  ' FROM THE SUM RULE. '
48689         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
48690         RETURN
48691       ELSE
48692         PMAS(PYCOMP(KSUSY1+16),1)=SQRT(XARG)
48693       ENDIF
48694  
48695       RETURN
48696       END
48697 C*********************************************************************
48698  
48699 C...PYINOM
48700 C...Finds the mass eigenstates and mixing matrices for neutralinos
48701 C...and charginos.
48702  
48703       SUBROUTINE PYINOM
48704  
48705 C...Double precision and integer declarations.
48706       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48707       IMPLICIT INTEGER(I-N)
48708       INTEGER PYCOMP
48709 C...Parameter statement to help give large particle numbers.
48710       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
48711      &KEXCIT=4000000,KDIMEN=5000000)
48712 C...Commonblocks.
48713       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48714       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48715       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
48716       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
48717      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
48718       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
48719  
48720 C...Local variables.
48721       DOUBLE PRECISION XMW,XMZ,XM(4)
48722       DOUBLE PRECISION AR(5,5),WR(5),ZR(5,5),ZI(5,5),AI(5,5)
48723       DOUBLE PRECISION WI(5),FV1(5),FV2(5),FV3(5)
48724       DOUBLE PRECISION COSW,SINW
48725       DOUBLE PRECISION XMU
48726       DOUBLE PRECISION TANB,COSB,SINB
48727       DOUBLE PRECISION XM1,XM2,XM3,BETA
48728       DOUBLE PRECISION Q2,AEM,A1,A2,AQ,RM1,RM2
48729       DOUBLE PRECISION ARG,X0,X1,AX0,AX1,AT,BT
48730       DOUBLE PRECISION Y0,Y1,AMGX0,AM1X0,AMGX1,AM1X1
48731       DOUBLE PRECISION ARGX0,AR1X0,ARGX1,AR1X1
48732       DOUBLE PRECISION PYALPS,PYALEM
48733       DOUBLE PRECISION PYRNM3
48734       COMPLEX*16 CAR(4,4),CAI(4,4),CA1,CA2
48735       INTEGER IERR,INDEX(4),I,J,K,IOPT,ILR,KFNCHI(4)
48736       DATA KFNCHI/1000022,1000023,1000025,1000035/
48737  
48738       IOPT=IMSS(2)
48739       IF(IMSS(1).EQ.2) THEN
48740         IOPT=1
48741       ENDIF
48742 C...M1, M2, AND M3 ARE INDEPENDENT
48743       IF(IOPT.EQ.0) THEN
48744         XM1=RMSS(1)
48745         XM2=RMSS(2)
48746         XM3=RMSS(3)
48747       ELSEIF(IOPT.GE.1) THEN
48748         Q2=PMAS(23,1)**2
48749         AEM=PYALEM(Q2)
48750         A2=AEM/PARU(102)
48751         A1=AEM/(1D0-PARU(102))
48752         XM1=RMSS(1)
48753         XM2=RMSS(2)
48754         IF(IMSS(1).EQ.2) XM1=RMSS(1)/RMSS(20)*A1*5D0/3D0
48755         IF(IOPT.EQ.1) THEN
48756           XM2=XM1*A2/A1*3D0/5D0
48757           RMSS(2)=XM2
48758         ELSEIF(IOPT.EQ.3) THEN
48759           XM1=XM2*5D0/3D0*A1/A2
48760           RMSS(1)=XM1
48761         ENDIF
48762         XM3=PYRNM3(XM2/A2)
48763         RMSS(3)=XM3
48764         IF(XM3.LE.0D0) THEN
48765           WRITE(MSTU(11),*) ' ERROR WITH M3 = ',XM3
48766           CALL PYSTOP(105)
48767         ENDIF
48768       ENDIF
48769  
48770 C...GLUINO MASS
48771       IF(IMSS(3).EQ.1) THEN
48772         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)
48773       ELSE
48774         AQ=0D0
48775         DO 110 I=1,4
48776           DO 100 ILR=1,2
48777             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
48778             AQ=AQ+0.5D0*((2D0-RM1)*(RM1*LOG(RM1)-1D0)
48779      &      +(1D0-RM1)**2*LOG(ABS(1D0-RM1)))
48780   100     CONTINUE
48781   110   CONTINUE
48782  
48783         DO 130 I=5,6
48784           DO 120 ILR=1,2
48785             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
48786             RM2=PMAS(I,1)**2/XM3**2
48787             ARG=(RM1-RM2-1D0)**2-4D0*RM2**2
48788             IF(ARG.GE.0D0) THEN
48789               X0=0.5D0*(1D0+RM2-RM1-SQRT(ARG))
48790               AX0=ABS(X0)
48791               X1=0.5D0*(1D0+RM2-RM1+SQRT(ARG))
48792               AX1=ABS(X1)
48793               IF(X0.EQ.1D0) THEN
48794                 AT=-1D0
48795                 BT=0.25D0
48796               ELSEIF(X0.EQ.0D0) THEN
48797                 AT=0D0
48798                 BT=-0.25D0
48799               ELSE
48800                 AT=0.5D0*LOG(ABS(1D0-X0))*(1D0-X0**2)+
48801      &          0.5D0*X0**2*LOG(AX0)
48802                 BT=(-1D0-2D0*X0)/4D0
48803               ENDIF
48804               IF(X1.EQ.1D0) THEN
48805                 AT=-1D0+AT
48806                 BT=0.25D0+BT
48807               ELSEIF(X1.EQ.0D0) THEN
48808                 AT=0D0+AT
48809                 BT=-0.25D0+BT
48810               ELSE
48811                 AT=0.5D0*LOG(ABS(1D0-X1))*(1D0-X1**2)+0.5D0*
48812      &          X1**2*LOG(AX1)+AT
48813                 BT=(-1D0-2D0*X1)/4D0+BT
48814               ENDIF
48815               AQ=AQ+AT+BT
48816             ELSE
48817               X0=0.5D0*(1D0+RM2-RM1)
48818               Y0=-0.5D0*SQRT(-ARG)
48819               AMGX0=SQRT(X0**2+Y0**2)
48820               AM1X0=SQRT((1D0-X0)**2+Y0**2)
48821               ARGX0=ATAN2(-X0,-Y0)
48822               AR1X0=ATAN2(1D0-X0,Y0)
48823               X1=X0
48824               Y1=-Y0
48825               AMGX1=AMGX0
48826               AM1X1=AM1X0
48827               ARGX1=ATAN2(-X1,-Y1)
48828               AR1X1=ATAN2(1D0-X1,Y1)
48829               AT=0.5D0*LOG(AM1X0)*(1D0-X0**2+3D0*Y0**2)
48830      &        +0.5D0*(X0**2-Y0**2)*LOG(AMGX0)
48831               BT=(-1D0-2D0*X0)/4D0+X0*Y0*( AR1X0-ARGX0 )
48832               AT=AT+0.5D0*LOG(AM1X1)*(1D0-X1**2+3D0*Y1**2)
48833      &        +0.5D0*(X1**2-Y1**2)*LOG(AMGX1)
48834               BT=BT+(-1D0-2D0*X1)/4D0+X1*Y1*( AR1X1-ARGX1 )
48835               AQ=AQ+AT+BT
48836             ENDIF
48837   120     CONTINUE
48838   130   CONTINUE
48839         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)*(1D0+PYALPS(XM3**2)
48840      &  /(2D0*PARU(2))*(15D0+AQ))
48841       ENDIF
48842  
48843 C...NEUTRALINO MASSES
48844       DO 150 I=1,4
48845         DO 140 J=1,4
48846           AI(I,J)=0D0
48847   140   CONTINUE
48848   150 CONTINUE
48849       XMZ=PMAS(23,1)/100D0
48850       XMW=PMAS(24,1)/100D0
48851       XMU=RMSS(4)/100D0
48852       SINW=SQRT(PARU(102))
48853       COSW=SQRT(1D0-PARU(102))
48854       TANB=RMSS(5)
48855       BETA=ATAN(TANB)
48856       COSB=COS(BETA)
48857       SINB=TANB*COSB
48858 
48859       XM2=XM2/100D0
48860       XM1=XM1/100D0
48861       
48862  
48863 C... Definitions:
48864 C...    psi^0 =(-i bino^0, -i wino^0, h_d^0(=H_1^0), h_u^0(=H_2^0))
48865 C... => L_neutralino = -1/2*(psi^0)^T * [AR] * psi^0 + h.c.
48866       AR(1,1) = XM1*COS(RMSS(30))
48867       AI(1,1) = XM1*SIN(RMSS(30))
48868       AR(2,2) = XM2*COS(RMSS(31))
48869       AI(2,2) = XM2*SIN(RMSS(31))
48870       AR(3,3) = 0D0
48871       AR(4,4) = 0D0
48872       AR(1,2) = 0D0
48873       AR(2,1) = 0D0
48874       AR(1,3) = -XMZ*SINW*COSB
48875       AR(3,1) = AR(1,3)
48876       AR(1,4) = XMZ*SINW*SINB
48877       AR(4,1) = AR(1,4)
48878       AR(2,3) = XMZ*COSW*COSB
48879       AR(3,2) = AR(2,3)
48880       AR(2,4) = -XMZ*COSW*SINB
48881       AR(4,2) = AR(2,4)
48882       AR(3,4) = -XMU*COS(RMSS(33))
48883       AI(3,4) = -XMU*SIN(RMSS(33))
48884       AR(4,3) = -XMU*COS(RMSS(33))
48885       AI(4,3) = -XMU*SIN(RMSS(33))
48886 C      CALL PYEIG4(AR,WR,ZR)
48887       CALL PYEICG(5,4,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
48888       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
48889      & 'PROBLEM WITH PYEICG IN PYINOM ')
48890       DO 160 I=1,4
48891         INDEX(I)=I
48892         XM(I)=ABS(WR(I))
48893   160 CONTINUE
48894       DO 180 I=2,4
48895         K=I
48896         DO 170 J=I-1,1,-1
48897           IF(XM(K).LT.XM(J)) THEN
48898             ITMP=INDEX(J)
48899             XTMP=XM(J)
48900             INDEX(J)=INDEX(K)
48901             XM(J)=XM(K)
48902             INDEX(K)=ITMP
48903             XM(K)=XTMP
48904             K=K-1
48905           ELSE
48906             GOTO 180
48907           ENDIF
48908   170   CONTINUE
48909   180 CONTINUE
48910  
48911  
48912       DO 210 I=1,4
48913         K=INDEX(I)
48914         SMZ(I)=WR(K)*100D0
48915         PMAS(PYCOMP(KFNCHI(I)),1)=ABS(SMZ(I))
48916         S=0D0
48917         DO 190 J=1,4
48918           S=S+ZR(J,K)**2+ZI(J,K)**2
48919   190   CONTINUE
48920         DO 200 J=1,4
48921           ZMIX(I,J)=ZR(J,K)/SQRT(S)
48922           ZMIXI(I,J)=ZI(J,K)/SQRT(S)
48923           IF(ABS(ZMIX(I,J)).LT.1D-6) ZMIX(I,J)=0D0
48924           IF(ABS(ZMIXI(I,J)).LT.1D-6) ZMIXI(I,J)=0D0
48925   200   CONTINUE
48926   210 CONTINUE
48927  
48928 C...CHARGINO MASSES
48929 C.....Find eigenvectors of X X^*
48930       DO I=1,4
48931         DO J=1,4
48932           AR(I,J)=0D0
48933           AI(I,J)=0D0
48934         ENDDO
48935       ENDDO
48936       AI(1,1) = 0D0
48937       AI(2,2) = 0D0
48938       AR(1,1) = XM2**2+2D0*XMW**2*SINB**2
48939       AR(2,2) = XMU**2+2D0*XMW**2*COSB**2
48940       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
48941      &XMU*COS(RMSS(33))*SINB)
48942       AI(1,2) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*COSB-
48943      &XMU*SIN(RMSS(33))*SINB)
48944       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
48945      &XMU*COS(RMSS(33))*SINB)
48946       AI(2,1) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*COSB+
48947      &XMU*SIN(RMSS(33))*SINB)
48948       CALL PYEICG(5,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
48949       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
48950      & 'PROBLEM WITH PYEICG IN PYINOM ')
48951       INDEX(1)=1
48952       INDEX(2)=2
48953       IF(WR(2).LT.WR(1)) THEN
48954         INDEX(1)=2
48955         INDEX(2)=1
48956       ENDIF
48957 
48958  
48959       DO 240 I=1,2
48960         K=INDEX(I)
48961         SMW(I)=SQRT(WR(K))*100D0
48962         S=0D0
48963         DO 220 J=1,2
48964           S=S+ZR(J,K)**2+ZI(J,K)**2
48965   220   CONTINUE
48966         DO 230 J=1,2
48967           UMIX(I,J)=ZR(J,K)/SQRT(S)
48968           UMIXI(I,J)=-ZI(J,K)/SQRT(S)
48969           IF(ABS(UMIX(I,J)).LT.1D-6) UMIX(I,J)=0D0
48970           IF(ABS(UMIXI(I,J)).LT.1D-6) UMIXI(I,J)=0D0
48971   230   CONTINUE
48972   240 CONTINUE
48973 C...Force chargino mass > neutralino mass
48974       IFRC=0
48975       IF(ABS(SMW(1)).LT.ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1)) THEN
48976         CALL PYERRM(8,'(PYINOM:) '//
48977      &      'forcing m(~chi+_1) > m(~chi0_1) + 2m(pi0)')
48978         SMW(1)=SIGN(ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1),SMW(1))
48979         IFRC=1
48980       ENDIF
48981       PMAS(PYCOMP(KSUSY1+24),1)=SMW(1)
48982       PMAS(PYCOMP(KSUSY1+37),1)=SMW(2)
48983  
48984 C.....Find eigenvectors of X^* X
48985       DO I=1,4
48986         DO J=1,4
48987           AR(I,J)=0D0
48988           AI(I,J)=0D0
48989           ZR(I,J)=0D0
48990           ZI(I,J)=0D0
48991         ENDDO
48992       ENDDO
48993       AI(1,1) = 0D0
48994       AI(2,2) = 0D0
48995       AR(1,1) = XM2**2+2D0*XMW**2*COSB**2
48996       AR(2,2) = XMU**2+2D0*XMW**2*SINB**2
48997       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
48998      &XMU*COS(RMSS(33))*COSB)
48999       AI(1,2) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*SINB+
49000      &XMU*SIN(RMSS(33))*COSB)
49001       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
49002      &XMU*COS(RMSS(33))*COSB)
49003       AI(2,1) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*SINB-
49004      &XMU*SIN(RMSS(33))*COSB)
49005       CALL PYEICG(5,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
49006       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
49007      & 'PROBLEM WITH PYEICG IN PYINOM ')
49008       INDEX(1)=1
49009       INDEX(2)=2
49010       IF(WR(2).LT.WR(1)) THEN
49011         INDEX(1)=2
49012         INDEX(2)=1
49013       ENDIF
49014  
49015       SIMAG=0D0
49016       DO 270 I=1,2
49017         K=INDEX(I)
49018         S=0D0
49019         DO 250 J=1,2
49020           S=S+ZR(J,K)**2+ZI(J,K)**2
49021           SIMAG=SIMAG+ZI(J,K)**2
49022   250   CONTINUE
49023         DO 260 J=1,2
49024           VMIX(I,J)=ZR(J,K)/SQRT(S)
49025           VMIXI(I,J)=-ZI(J,K)/SQRT(S)
49026           IF(ABS(VMIX(I,J)).LT.1D-6) VMIX(I,J)=0D0
49027           IF(ABS(VMIXI(I,J)).LT.1D-6) VMIXI(I,J)=0D0
49028   260   CONTINUE
49029   270 CONTINUE
49030 
49031 C.....Simplify if no phases
49032       IF(SIMAG.LT.1D-6) THEN
49033         AR(1,1) = XM2*COS(RMSS(31))
49034         AR(2,2) = XMU*COS(RMSS(33))
49035         AR(1,2) = SQRT(2D0)*XMW*SINB
49036         AR(2,1) = SQRT(2D0)*XMW*COSB
49037         IKNT=0
49038  300    CONTINUE
49039         DO I=1,2
49040           DO J=1,2
49041             ZR(I,J)=0D0
49042           ENDDO
49043         ENDDO
49044 
49045         DO I=1,2
49046           DO J=1,2
49047             DO K=1,2
49048               DO L=1,2
49049                 ZR(I,J)=ZR(I,J)+UMIX(I,K)*AR(K,L)*VMIX(J,L)
49050               ENDDO
49051             ENDDO
49052           ENDDO
49053         ENDDO
49054         VMIX(1,1)=VMIX(1,1)*SMW(1)/ZR(1,1)/100D0
49055         VMIX(1,2)=VMIX(1,2)*SMW(1)/ZR(1,1)/100D0
49056         VMIX(2,1)=VMIX(2,1)*SMW(2)/ZR(2,2)/100D0
49057         VMIX(2,2)=VMIX(2,2)*SMW(2)/ZR(2,2)/100D0
49058         IF(IKNT.EQ.2.AND.IFRC.EQ.0) THEN
49059           CALL PYERRM(18,'(PYINOM:) Problem with Charginos')
49060         ELSEIF(ZR(1,1).LT.0D0.OR.ZR(2,2).LT.0D0) THEN
49061           IKNT=IKNT+1
49062           GOTO 300
49063         ENDIF
49064 C.....Must deal with phases
49065       ELSE
49066         CAR(1,1) = XM2*CMPLX(COS(RMSS(31)),SIN(RMSS(31)))
49067         CAR(2,2) = XMU*CMPLX(COS(RMSS(33)),SIN(RMSS(33)))
49068         CAR(1,2) = SQRT(2D0)*XMW*SINB*CMPLX(1D0,0D0)
49069         CAR(2,1) = SQRT(2D0)*XMW*COSB*CMPLX(1D0,0D0)
49070 
49071         IKNT=0
49072  310    CONTINUE
49073         DO I=1,2
49074           DO J=1,2
49075             CAI(I,J)=CMPLX(0D0,0D0)
49076           ENDDO
49077         ENDDO
49078 
49079         DO I=1,2
49080           DO J=1,2
49081             DO K=1,2
49082               DO L=1,2
49083                 CAI(I,J)=CAI(I,J)+CMPLX(UMIX(I,K),-UMIXI(I,K))*CAR(K,L)*
49084      &           CMPLX(VMIX(J,L),VMIXI(J,L))
49085               ENDDO
49086             ENDDO
49087           ENDDO
49088         ENDDO
49089 
49090         CA1=SMW(1)*CAI(1,1)/ABS(CAI(1,1))**2/100D0
49091         CA2=SMW(2)*CAI(2,2)/ABS(CAI(2,2))**2/100D0
49092         TEMPR=VMIX(1,1)
49093         TEMPI=VMIXI(1,1)
49094         VMIX(1,1)=TEMPR*DBLE(CA1)-TEMPI*DIMAG(CA1)
49095         VMIXI(1,1)=TEMPI*DBLE(CA1)+TEMPR*DIMAG(CA1)
49096         TEMPR=VMIX(1,2)
49097         TEMPI=VMIXI(1,2)
49098         VMIX(1,2)=TEMPR*DBLE(CA1)-TEMPI*DIMAG(CA1)
49099         VMIXI(1,2)=TEMPI*DBLE(CA1)+TEMPR*DIMAG(CA1)
49100         TEMPR=VMIX(2,1)
49101         TEMPI=VMIXI(2,1)
49102         VMIX(2,1)=TEMPR*DBLE(CA2)-TEMPI*DIMAG(CA2)
49103         VMIXI(2,1)=TEMPI*DBLE(CA2)+TEMPR*DIMAG(CA2)
49104         TEMPR=VMIX(2,2)
49105         TEMPI=VMIXI(2,2)
49106         VMIX(2,2)=TEMPR*DBLE(CA2)-TEMPI*DIMAG(CA2)
49107         VMIXI(2,2)=TEMPI*DBLE(CA2)+TEMPR*DIMAG(CA2)
49108         IF(IKNT.EQ.2.AND.IFRC.EQ.0) THEN
49109           CALL PYERRM(18,'(PYINOM:) Problem with Charginos')
49110         ELSEIF(DBLE(CA1).LT.0D0.OR.DBLE(CA2).LT.0D0.OR.
49111      &   ABS(IMAG(CA1)).GT.1D-3.OR.ABS(IMAG(CA2)).GT.1D-3) THEN
49112           IKNT=IKNT+1
49113           GOTO 310
49114         ENDIF
49115       ENDIF 
49116       RETURN
49117       END
49118  
49119 C*********************************************************************
49120  
49121 C...PYRNM3
49122 C...Calculates the running of M3, the SU(3) gluino mass parameter.
49123  
49124       FUNCTION PYRNM3(RGUT)
49125  
49126 C...Double precision and integer declarations.
49127       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49128       IMPLICIT INTEGER(I-N)
49129       INTEGER PYK,PYCHGE,PYCOMP
49130  
49131 C...Local variables.
49132       DOUBLE PRECISION R
49133       DOUBLE PRECISION TOL
49134       EXTERNAL PYALPS
49135       DOUBLE PRECISION PYALPS
49136       DATA TOL/0.001D0/
49137       DATA R/0.61803399D0/
49138  
49139       C=1D0-R
49140  
49141       BX=RGUT*PYALPS(RGUT**2)
49142       AX=MIN(50D0,BX*0.5D0)
49143       CX=MAX(2000D0,2D0*BX)
49144  
49145       X0=AX
49146       X3=CX
49147       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
49148         X1=BX
49149         X2=BX+C*(CX-BX)
49150       ELSE
49151         X2=BX
49152         X1=BX-C*(BX-AX)
49153       ENDIF
49154       AS1=PYALPS(X1**2)
49155       F1=ABS(X1-RGUT*AS1)
49156       AS2=PYALPS(X2**2)
49157       F2=ABS(X2-RGUT*AS2)
49158   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
49159         IF(F2.LT.F1) THEN
49160           X0=X1
49161           X1=X2
49162           X2=R*X1+C*X3
49163           F1=F2
49164           AS2=PYALPS(X2**2)
49165           F2=ABS(X2-RGUT*AS2)
49166         ELSE
49167           X3=X2
49168           X2=X1
49169           X1=R*X2+C*X0
49170           F2=F1
49171           AS1=PYALPS(X1**2)
49172           F1=ABS(X1-RGUT*AS1)
49173         ENDIF
49174         GOTO 100
49175       ENDIF
49176       IF(F1.LT.F2) THEN
49177         PYRNM3=X1
49178         XMIN=X1
49179       ELSE
49180         PYRNM3=X2
49181         XMIN=X2
49182       ENDIF
49183  
49184       RETURN
49185       END
49186  
49187 C*********************************************************************
49188  
49189 C...PYEIG4
49190 C...Finds eigenvalues and eigenvectors to a 4 * 4 matrix.
49191 C...Specific application: mixing in neutralino sector.
49192  
49193       SUBROUTINE PYEIG4(A,W,Z)
49194  
49195 C...Double precision and integer declarations.
49196       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49197       IMPLICIT INTEGER(I-N)
49198       INTEGER PYK,PYCHGE,PYCOMP
49199  
49200 C...Arrays: in call and local.
49201       DIMENSION A(4,4),W(4),Z(4,4),X(4),D(4,4),E(4)
49202  
49203 C...Coefficients of fourth-degree equation from matrix.
49204 C...x**4 + b3 * x**3 + b2 * x**2 + b1 * x + b0 = 0.
49205       B3=-(A(1,1)+A(2,2)+A(3,3)+A(4,4))
49206       B2=0D0
49207       DO 110 I=1,3
49208         DO 100 J=I+1,4
49209           B2=B2+A(I,I)*A(J,J)-A(I,J)*A(J,I)
49210   100   CONTINUE
49211   110 CONTINUE
49212       B1=0D0
49213       B0=0D0
49214       DO 120 I=1,4
49215         I1=MOD(I,4)+1
49216         I2=MOD(I+1,4)+1
49217         I3=MOD(I+2,4)+1
49218         B1=B1+A(I,I)*(-A(I1,I1)*A(I2,I2)+A(I1,I2)*A(I2,I1)+
49219      &  A(I1,I3)*A(I3,I1)+A(I2,I3)*A(I3,I2))-
49220      &  A(I,I1)*A(I1,I2)*A(I2,I)-A(I,I2)*A(I2,I1)*A(I1,I)
49221         B0=B0+(-1D0)**(I+1)*A(1,I)*(
49222      &  A(2,I1)*(A(3,I2)*A(4,I3)-A(3,I3)*A(4,I2))+
49223      &  A(2,I2)*(A(3,I3)*A(4,I1)-A(3,I1)*A(4,I3))+
49224      &  A(2,I3)*(A(3,I1)*A(4,I2)-A(3,I2)*A(4,I1)))
49225   120 CONTINUE
49226  
49227 C...Coefficients of third-degree equation needed for
49228 C...separation into two second-degree equations.
49229 C...u**3 + c2 * u**2 + c1 * u + c0 = 0.
49230       C2=-B2
49231       C1=B1*B3-4D0*B0
49232       C0=-B1**2-B0*B3**2+4D0*B0*B2
49233       CQ=C1/3D0-C2**2/9D0
49234       CR=C1*C2/6D0-C0/2D0-C2**3/27D0
49235       CQR=CQ**3+CR**2
49236  
49237 C...Cases with one or three real roots.
49238       IF(CQR.GE.0D0) THEN
49239         S1=(CR+SQRT(CQR))**(1D0/3D0)
49240         S2=(CR-SQRT(CQR))**(1D0/3D0)
49241         U=S1+S2-C2/3D0
49242       ELSE
49243         SABS=SQRT(-CQ)
49244         THE=ACOS(CR/SABS**3)/3D0
49245         SRE=SABS*COS(THE)
49246         U=2D0*SRE-C2/3D0
49247       ENDIF
49248  
49249 C...Find and solve two second-degree equations.
49250       P1=B3/2D0-SQRT(B3**2/4D0+U-B2)
49251       P2=B3/2D0+SQRT(B3**2/4D0+U-B2)
49252       Q1=U/2D0+SQRT(U**2/4D0-B0)
49253       Q2=U/2D0-SQRT(U**2/4D0-B0)
49254       IF(ABS(P1*Q1+P2*Q2-B1).LT.ABS(P1*Q2+P2*Q1-B1)) THEN
49255         QSAV=Q1
49256         Q1=Q2
49257         Q2=QSAV
49258       ENDIF
49259       X(1)=-P1/2D0+SQRT(P1**2/4D0-Q1)
49260       X(2)=-P1/2D0-SQRT(P1**2/4D0-Q1)
49261       X(3)=-P2/2D0+SQRT(P2**2/4D0-Q2)
49262       X(4)=-P2/2D0-SQRT(P2**2/4D0-Q2)
49263  
49264 C...Order eigenvalues in asceding mass.
49265       W(1)=X(1)
49266       DO 150 I1=2,4
49267         DO 130 I2=I1-1,1,-1
49268           IF(ABS(X(I1)).GE.ABS(W(I2))) GOTO 140
49269           W(I2+1)=W(I2)
49270   130   CONTINUE
49271   140   W(I2+1)=X(I1)
49272   150 CONTINUE
49273  
49274 C...Find equation system for eigenvectors.
49275       DO 250 I=1,4
49276         DO 170 J1=1,4
49277           D(J1,J1)=A(J1,J1)-W(I)
49278           DO 160 J2=J1+1,4
49279             D(J1,J2)=A(J1,J2)
49280             D(J2,J1)=A(J2,J1)
49281   160     CONTINUE
49282   170   CONTINUE
49283  
49284 C...Find largest element in matrix.
49285         DAMAX=0D0
49286         DO 190 J1=1,4
49287           DO 180 J2=1,4
49288             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 180
49289             JA=J1
49290             JB=J2
49291             DAMAX=ABS(D(J1,J2))
49292   180     CONTINUE
49293   190   CONTINUE
49294  
49295 C...Subtract others by multiple of row selected above.
49296         DAMAX=0D0
49297         DO 210 J3=JA+1,JA+3
49298           J1=J3-4*((J3-1)/4)
49299           RL=D(J1,JB)/D(JA,JB)
49300           DO 200 J2=1,4
49301             D(J1,J2)=D(J1,J2)-RL*D(JA,J2)
49302             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 200
49303             JC=J1
49304             JD=J2
49305             DAMAX=ABS(D(J1,J2))
49306   200     CONTINUE
49307   210   CONTINUE
49308  
49309 C...Do one more subtraction of a row.
49310         DAMAX=0D0
49311         DO 230 J3=JC+1,JC+3
49312           J1=J3-4*((J3-1)/4)
49313           IF(J1.EQ.JA) GOTO 230
49314           RL=D(J1,JD)/D(JC,JD)
49315           DO 220 J2=1,4
49316             IF(J2.EQ.JB) GOTO 220
49317             D(J1,J2)=D(J1,J2)-RL*D(JC,J2)
49318             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 220
49319             JE=J1
49320             DAMAX=ABS(D(J1,J2))
49321   220     CONTINUE
49322   230   CONTINUE
49323  
49324 C...Construct unnormalized eigenvector.
49325         JF1=JD+1-4*(JD/4)
49326         JF2=JD+2-4*((JD+1)/4)
49327         IF(JF1.EQ.JB) JF1=JD+3-4*((JD+2)/4)
49328         IF(JF2.EQ.JB) JF2=JD+3-4*((JD+2)/4)
49329         E(JF1)=-D(JE,JF2)
49330         E(JF2)=D(JE,JF1)
49331         E(JD)=-(D(JC,JF1)*E(JF1)+D(JC,JF2)*E(JF2))/D(JC,JD)
49332         E(JB)=-(D(JA,JF1)*E(JF1)+D(JA,JF2)*E(JF2)+D(JA,JD)*E(JD))/
49333      &  D(JA,JB)
49334  
49335 C...Normalize and fill in final array.
49336         EA=SQRT(E(1)**2+E(2)**2+E(3)**2+E(4)**2)
49337         SGN=(-1D0)**INT(PYR(0)+0.5D0)
49338         DO 240 J=1,4
49339           Z(I,J)=SGN*E(J)/EA
49340   240   CONTINUE
49341   250 CONTINUE
49342  
49343       RETURN
49344       END
49345  
49346 C*********************************************************************
49347  
49348 C...PYHGGM
49349 C...Determines the Higgs boson mass spectrum using several inputs.
49350  
49351       SUBROUTINE PYHGGM(ALPHA)
49352  
49353 C...Double precision and integer declarations.
49354       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49355       IMPLICIT INTEGER(I-N)
49356       INTEGER PYK,PYCHGE,PYCOMP
49357 C...Parameter statement to help give large particle numbers.
49358       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
49359      &KEXCIT=4000000,KDIMEN=5000000)
49360 C...Commonblocks.
49361       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49362       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49363       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
49364       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
49365       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/
49366  
49367 C...Local variables.
49368       DOUBLE PRECISION AT,AB,XMU,TANB
49369       DOUBLE PRECISION ALPHA
49370       INTEGER IHOPT
49371       DOUBLE PRECISION DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD
49372       DOUBLE PRECISION DMU,DMH,DHM,DMHCH,DSA,DCA,DTANBA
49373       DOUBLE PRECISION DMC,DMDR,DMHP,DHMP,DAMP
49374       DOUBLE PRECISION DSTOP1,DSTOP2,DSBOT1,DSBOT2
49375  
49376       IHOPT=IMSS(4)
49377       IF(IHOPT.EQ.2) THEN
49378         ALPHA=RMSS(18)
49379         RETURN
49380       ENDIF
49381       AT=RMSS(16)
49382       AB=RMSS(15)
49383       DMGL=RMSS(3)
49384       XMU=RMSS(4)
49385       TANB=RMSS(5)
49386  
49387       DMA=RMSS(19)
49388       DTANB=TANB
49389       DMQ=RMSS(10)
49390       DMUR=RMSS(12)
49391       DMDR=RMSS(11)
49392       DMTOP=PMAS(6,1)
49393       DMC=PMAS(PYCOMP(KSUSY1+37),1)
49394       DAU=AT
49395       DAD=AB
49396       DMU=XMU
49397       RMSS(40)=0D0
49398       RMSS(41)=0D0
49399  
49400       IF(IHOPT.EQ.0) THEN
49401         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
49402      &  DMHCH,DSA,DCA,DTANBA)
49403       ELSEIF(IHOPT.EQ.1) THEN
49404         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
49405      &  DMHCH,DSA,DCA,DTANBA)
49406         CALL PYPOLE(3,DMC,DMA,DTANB,DMQ,DMUR,DMDR,DMTOP,DAU,DAD,DMU,
49407      &  DMH,DMHP,DHM,DHMP,DAMP,DSA,DCA,
49408      &  DSTOP1,DSTOP2,DSBOT1,DSBOT2,DTANBA,DMGL,DDT,DDB)
49409         RMSS(40)=DDT
49410         RMSS(41)=DDB
49411         DMH=DMHP
49412         DHM=DHMP
49413         DMA=DAMP
49414         IF(ABS(PMAS(PYCOMP(1000006),1)-DSTOP2).GT.5D-1) THEN
49415          WRITE(MSTU(11),*) ' STOP1 MASS DOES NOT MATCH IN PYHGGM '
49416          WRITE(MSTU(11),*) ' STOP1 MASSES = ',
49417      & PMAS(PYCOMP(1000006),1),DSTOP2
49418         ENDIF
49419         IF(ABS(PMAS(PYCOMP(2000006),1)-DSTOP1).GT.5D-1) THEN
49420          WRITE(MSTU(11),*) ' STOP2 MASS DOES NOT MATCH IN PYHGGM '
49421          WRITE(MSTU(11),*) ' STOP2 MASSES = ',
49422      & PMAS(PYCOMP(2000006),1),DSTOP1
49423         ENDIF
49424         IF(ABS(PMAS(PYCOMP(1000005),1)-DSBOT2).GT.5D-1) THEN
49425          WRITE(MSTU(11),*) ' SBOT1 MASS DOES NOT MATCH IN PYHGGM '
49426          WRITE(MSTU(11),*) ' SBOT1 MASSES = ',
49427      & PMAS(PYCOMP(1000005),1),DSBOT2
49428         ENDIF
49429         IF(ABS(PMAS(PYCOMP(2000005),1)-DSBOT1).GT.5D-1) THEN
49430          WRITE(MSTU(11),*) ' SBOT2 MASS DOES NOT MATCH IN PYHGGM '
49431          WRITE(MSTU(11),*) ' SBOT2 MASSES = ',
49432      & PMAS(PYCOMP(2000005),1),DSBOT1
49433         ENDIF
49434  
49435       ELSEIF (IHOPT.EQ.3) THEN
49436 c...Use FeynHiggs to fix Higgs sector (cf feynhiggs.de)
49437 C...Currently only available for SLHA spectrum read-in.
49438         IF (IMSS(1).NE.11.AND.IMSS(1).NE.12.AND.IMSS(1).NE.13) THEN
49439           CALL PYERRM(11,'(PYHGGM:) FeynHiggs needs SLHA or ISASUSY'
49440      &         //' spectrum, change IMSS(1) or IMSS(4) option.')
49441         ENDIF
49442         ALPHA=RMSS(18)
49443         RETURN
49444       ENDIF
49445  
49446       ALPHA=ACOS(DCA)
49447  
49448       PMAS(25,1)=DMH
49449       PMAS(35,1)=DHM
49450       PMAS(36,1)=DMA
49451       PMAS(37,1)=DMHCH
49452  
49453       RETURN
49454       END
49455  
49456 C*********************************************************************
49457  
49458 C...PYSUBH
49459 C...This routine computes the renormalization group improved
49460 C...values of Higgs masses and couplings in the MSSM.
49461  
49462 C...Program based on the work by M. Carena, J.R. Espinosa,
49463 c...M. Quiros and C.E.M. Wagner, CERN-preprint CERN-TH/95-45
49464  
49465 C...Input: MA,TANB = TAN(BETA),MQ,MUR,MTOP,AU,AD,MU
49466 C...All masses in GeV units. MA is the CP-odd Higgs mass,
49467 C...MTOP is the physical top mass, MQ and MUR are the soft
49468 C...supersymmetry breaking mass parameters of left handed
49469 C...and right handed stops respectively, AU and AD are the
49470 C...stop and sbottom trilinear soft breaking terms,
49471 C...respectively,  and MU is the supersymmetric
49472 C...Higgs mass parameter. We use the  conventions from
49473 C...the physics report of Haber and Kane: left right
49474 C...stop mixing term proportional to (AU - MU/TANB)
49475 C...We use as input TANB defined at the scale MTOP
49476  
49477 C...Output: MH,HM,MHCH, SA = SIN(ALPHA), CA= COS(ALPHA), TANBA
49478 C...where MH and HM are the lightest and heaviest CP-even
49479 C...Higgs masses, MHCH is the charged Higgs mass and
49480 C...ALPHA is the Higgs mixing angle
49481 C...TANBA is the angle TANB at the CP-odd Higgs mass scale
49482  
49483 C...Range of validity:
49484 C...(STOP1**2 - STOP2**2)/(STOP2**2 + STOP1**2) < 0.5
49485 C...(SBOT1**2 - SBOT2**2)/(SBOT2**2 + SBOT2**2) < 0.5
49486 C...where STOP1, STOP2, SBOT1 and SBOT2 are the stop and
49487 C...are the sbottom  mass eigenvalues, respectively. This
49488 C...range automatically excludes the existence of tachyons.
49489 C...For the charged Higgs mass computation, the method is
49490 C...valid if
49491 C...2 * |MB * AD* TANB|  < M_SUSY**2,  2 * |MTOP * AU| < M_SUSY**2
49492 C...2 * |MB * MU * TANB| < M_SUSY**2,  2 * |MTOP * MU| < M_SUSY**2
49493 C...where M_SUSY**2 is the average of the squared stop mass
49494 C...eigenvalues, M_SUSY**2 = (STOP1**2 + STOP2**2)/2. The sbottom
49495 C...masses have been assumed to be of order of the stop ones
49496 C...M_SUSY**2 = (MQ**2 + MUR**2)*0.5 + MTOP**2
49497  
49498       SUBROUTINE PYSUBH (XMA,TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM,
49499      &XMHCH,SA,CA,TANBA)
49500  
49501 C...Double precision and integer declarations.
49502       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49503       IMPLICIT INTEGER(I-N)
49504       INTEGER PYK,PYCHGE,PYCOMP
49505 C...Parameter statement to help give large particle numbers.
49506       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
49507      &KEXCIT=4000000,KDIMEN=5000000)
49508 C...Commonblocks.
49509       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49510       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49511       COMMON/PYHTRI/HHH(7)
49512       SAVE /PYDAT1/,/PYDAT2/
49513  
49514 C...Local variables.
49515       DOUBLE PRECISION PYALEM,PYALPS
49516       DOUBLE PRECISION TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM
49517       DOUBLE PRECISION XMHCH,SA,CA
49518       DOUBLE PRECISION XMA,AEM,ALP1,ALP2,ALPH3Z,V,PI
49519       DOUBLE PRECISION Q02
49520       DOUBLE PRECISION TANBA,TANBT,XMB,ALP3
49521       DOUBLE PRECISION RMTOP,XMS,T,SINB,COSB
49522       DOUBLE PRECISION XLAM1,XLAM2,XLAM3,XLAM4,XLAM5,XLAM6
49523       DOUBLE PRECISION XLAM7,XAU,XAD,G1,G2,G3,HU,HD,HU2
49524       DOUBLE PRECISION HD2,HU4,HD4,SINBT,COSBT
49525       DOUBLE PRECISION TRM2,DETM2,XMH2,XHM2,XMHCH2
49526       DOUBLE PRECISION SINALP,COSALP,AUD,PI2,XMS2,XMS4,AD2
49527       DOUBLE PRECISION AU2,XMU2,XMZ,XMS3
49528  
49529       XMZ = PMAS(23,1)
49530       Q02=XMZ**2
49531       AEM=PYALEM(Q02)
49532       ALP1=AEM/(1D0-PARU(102))
49533       ALP2=AEM/PARU(102)
49534       ALPH3Z=PYALPS(Q02)
49535  
49536       ALP1 = 0.0101D0
49537       ALP2 = 0.0337D0
49538       ALPH3Z = 0.12D0
49539  
49540       V = 174.1D0
49541       PI = PARU(1)
49542       TANBA = TANB
49543       TANBT = TANB
49544  
49545 C...MBOTTOM(MTOP) = 3. GEV
49546       XMB = PYMRUN(5,XMTOP**2)
49547       ALP3 = ALPH3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPH3Z*
49548      &LOG(XMTOP**2/XMZ**2))
49549  
49550 C...RMTOP= RUNNING TOP QUARK MASS
49551       RMTOP = XMTOP/(1D0+4D0*ALP3/3D0/PI)
49552       XMS = ((XMQ**2 + XMUR**2)/2D0 + XMTOP**2)**0.5D0
49553       T = LOG(XMS**2/XMTOP**2)
49554       SINB = TANB/((1D0 + TANB**2)**0.5D0)
49555       COSB = SINB/TANB
49556 C...IF(MA.LE.XMTOP) TANBA = TANBT
49557       IF(XMA.GT.XMTOP)
49558      &TANBA = TANBT*(1D0-3D0/32D0/PI**2*
49559      &(RMTOP**2/V**2/SINB**2-XMB**2/V**2/COSB**2)*
49560      &LOG(XMA**2/XMTOP**2))
49561  
49562       SINBT = TANBT/SQRT(1D0 + TANBT**2)
49563       COSBT = 1D0/SQRT(1D0 + TANBT**2)
49564 C      COS2BT = (TANBT**2 - 1D0)/(TANBT**2 + 1D0)
49565       G1 = SQRT(ALP1*4D0*PI)
49566       G2 = SQRT(ALP2*4D0*PI)
49567       G3 = SQRT(ALP3*4D0*PI)
49568       HU = RMTOP/V/SINBT
49569       HD =  XMB/V/COSBT
49570       HU2=HU*HU
49571       HD2=HD*HD
49572       HU4=HU2*HU2
49573       HD4=HD2*HD2
49574       AU2=AU**2
49575       AD2=AD**2
49576       XMS2=XMS**2
49577       XMS3=XMS**3
49578       XMS4=XMS2*XMS2
49579       XMU2=XMU*XMU
49580       PI2=PI*PI
49581  
49582       XAU = (2D0*AU2/XMS2)*(1D0 - AU2/12D0/XMS2)
49583       XAD = (2D0*AD2/XMS2)*(1D0 - AD2/12D0/XMS2)
49584       AUD = (-6D0*XMU2/XMS2 - ( XMU2- AD*AU)**2/XMS4
49585      &+ 3D0*(AU + AD)**2/XMS2)/6D0
49586       XLAM1 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HD2*T/8D0/PI2)
49587      &+(3D0*HD4/8D0/PI2) * (T + XAD/2D0 + (3D0*HD2/2D0 + HU2/2D0
49588      &- 8D0*G3**2) * (XAD*T + T**2)/16D0/PI2)
49589      &-(3D0*HU4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HU2 -5D0* HD2
49590      &-  16D0*G3**2) *T/16D0/PI2)
49591       XLAM2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU2*T/8D0/PI2)
49592      &+(3D0*HU4/8D0/PI2) * (T + XAU/2D0 + (3D0*HU2/2D0 + HD2/2D0
49593      &- 8D0*G3**2) * (XAU*T + T**2)/16D0/PI2)
49594      &-(3D0*HD4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HD2 -5D0* HU2
49595      &-  16D0*G3**2) *T/16D0/PI2)
49596       XLAM3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
49597      &(HU2 + HD2)*T/16D0/PI2)
49598      &+(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
49599      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
49600      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
49601      &XMS4)* (1D0+ (6D0*HU2 -2D0* HD2/2D0
49602      &-  16D0*G3**2) *T/16D0/PI2)
49603      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
49604      &XMS4)*(1D0+ (6D0*HD2 -2D0* HU2
49605      &-  16D0*G3**2) *T/16D0/PI2)
49606       XLAM4 = (- G2**2/2D0)*(1D0-3D0*(HU2 + HD2)*T/16D0/PI2)
49607      &-(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
49608      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
49609      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
49610      &XMS4)*
49611      &(1+ (6D0*HU2 -2D0* HD2
49612      &-  16D0*G3**2) *T/16D0/PI2)
49613      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
49614      &XMS4)*
49615      &(1+ (6D0*HD2 -2D0* HU2/2D0
49616      &-  16D0*G3**2) *T/16D0/PI2)
49617       XLAM5 = -(3D0*HU4* XMU2*AU2/96D0/PI2/XMS4) *
49618      &(1- (2D0*HD2 -6D0* HU2 + 16D0*G3**2) *T/16D0/PI2)
49619      &-(3D0*HD4* XMU2*AD2/96D0/PI2/XMS4) *
49620      &(1- (2D0*HU2 -6D0* HD2 + 16D0*G3**2) *T/16D0/PI2)
49621       XLAM6 = (3D0*HU4* XMU**3*AU/96D0/PI2/XMS4) *
49622      &(1- (7D0*HD2/2D0 -15D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
49623      &+(3D0*HD4* XMU *(AD**3/XMS3 - 6D0*AD/XMS )/96D0/PI2/XMS) *
49624      &(1- (HU2/2D0 -9D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
49625       XLAM7 = (3D0*HD4* XMU**3*AD/96D0/PI2/XMS4) *
49626      &(1- (7D0*HU2/2D0 -15D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
49627      &+(3D0*HU4* XMU *(AU**3/XMS3 - 6D0*AU/XMS )/96D0/PI2/XMS) *
49628      &(1- (HD2/2D0 -9D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
49629       HHH(1)=XLAM1
49630       HHH(2)=XLAM2
49631       HHH(3)=XLAM3
49632       HHH(4)=XLAM4
49633       HHH(5)=XLAM5
49634       HHH(6)=XLAM6
49635       HHH(7)=XLAM7
49636       TRM2 = XMA**2 + 2D0*V**2* (XLAM1* COSBT**2 +
49637      &2D0* XLAM6*SINBT*COSBT
49638      &+ XLAM5*SINBT**2 + XLAM2* SINBT**2 + 2D0* XLAM7*SINBT*COSBT
49639      &+ XLAM5*COSBT**2)
49640       DETM2 = 4D0*V**4*(-(SINBT*COSBT*(XLAM3 + XLAM4) +
49641      &XLAM6*COSBT**2
49642      &+ XLAM7* SINBT**2)**2 + (XLAM1* COSBT**2 +
49643      &2D0* XLAM6* COSBT*SINBT
49644      &+ XLAM5*SINBT**2)*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
49645      &+ XLAM5*COSBT**2)) + XMA**2*2D0*V**2 *
49646      &((XLAM1* COSBT**2 +2D0*
49647      &XLAM6* COSBT*SINBT + XLAM5*SINBT**2)*COSBT**2 +
49648      &(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT + XLAM5*COSBT**2)
49649      &*SINBT**2
49650      &+2D0*SINBT*COSBT* (SINBT*COSBT*(XLAM3
49651      &+ XLAM4) + XLAM6*COSBT**2
49652      &+ XLAM7* SINBT**2))
49653  
49654       XMH2 = (TRM2 - SQRT(TRM2**2 - 4D0* DETM2))/2D0
49655       XHM2 = (TRM2 + SQRT(TRM2**2 - 4D0* DETM2))/2D0
49656       XHM = SQRT(XHM2)
49657       XMH = SQRT(XMH2)
49658       XMHCH2 = XMA**2 + (XLAM5 - XLAM4)* V**2
49659       XMHCH = SQRT(XMHCH2)
49660  
49661       SINALP = SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0) -
49662      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
49663      &XLAM6* COSBT*SINBT
49664      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
49665      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
49666      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2)))/
49667      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0))/2D0**0.5D0
49668  
49669       COSALP = (2D0*(2D0*V**2*(SINBT*COSBT*(XLAM3 + XLAM4) +
49670      &XLAM6*COSBT**2 + XLAM7* SINBT**2) -
49671      &XMA**2*SINBT*COSBT))/2D0**0.5D0/
49672      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0)*
49673      &(((TRM2**2 - 4D0* DETM2)**0.5D0) -
49674      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
49675      &XLAM6* COSBT*SINBT
49676      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
49677      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
49678      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2))))
49679  
49680       SA = -SINALP
49681       CA = -COSALP
49682  
49683   100 CONTINUE
49684  
49685       RETURN
49686       END
49687  
49688 C*********************************************************************
49689  
49690 C...PYPOLE
49691 C...This subroutine computes the CP-even higgs and CP-odd pole
49692 c...Higgs masses and mixing angles.
49693  
49694 C...Program based on the work by M. Carena, M. Quiros
49695 C...and C.E.M. Wagner, "Effective potential methods and
49696 C...the Higgs mass spectrum in the MSSM", CERN-TH/95-157
49697  
49698 C...Inputs: IHIGGS(explained below),MCHI,MA,TANB,MQ,MUR,MDR,MTOP,
49699 C...AT,AB,MU
49700 C...where MCHI is the largest chargino mass, MA is the running
49701 C...CP-odd higgs mass, TANB is the value of the ratio of vacuum
49702 C...expectaion values at the scale MTOP, MQ is the third generation
49703 C...left handed squark mass parameter, MUR is the third generation
49704 C...right handed stop mass parameter, MDR is the third generation
49705 C...right handed sbottom mass parameter, MTOP is the pole top quark
49706 C...mass; AT,AB are the soft supersymmetry breaking trilinear
49707 C...couplings of the stop and sbottoms, respectively, and MU is the
49708 C...supersymmetric mass parameter
49709  
49710 C...The parameter IHIGGS=0,1,2,3 corresponds to the number of
49711 C...Higgses whose pole mass is computed. If IHIGGS=0 only running
49712 C...masses are given, what makes the running of the program
49713 c...much faster and it is quite generally a good approximation
49714 c...(for a theoretical discussion see ref. above). If IHIGGS=1,
49715 C...only the pole mass for H is computed. If IHIGGS=2, then h and H,
49716 c...and if IHIGGS=3, then h,H,A polarizations are computed
49717  
49718 C...Output: MH and MHP which are the lightest CP-even Higgs running
49719 C...and pole masses, respectively; HM and HMP are the heaviest CP-even
49720 C...Higgs running and pole masses, repectively; SA and CA are the
49721 C...SIN(ALPHA) and COS(ALPHA) where ALPHA is the Higgs mixing angle
49722 C...AMP is the CP-odd Higgs pole mass. STOP1,STOP2,SBOT1 and SBOT2
49723 C...are the stop and sbottom mass eigenvalues. Finally, TANBA is
49724 C...the value of TANB at the CP-odd Higgs mass scale
49725  
49726 C...This subroutine makes use of CERN library subroutine
49727 C...integration package, which makes the computation of the
49728 C...pole Higgs masses somewhat faster. We thank P. Janot for this
49729 C...improvement. Those who are not able to call the CERN
49730 C...libraries, please use the subroutine SUBHPOLE2.F, which
49731 C...although somewhat slower, gives identical results
49732  
49733       SUBROUTINE PYPOLE(IHIGGS,XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,XMU,
49734      &XMH,XMHP,HM,HMP,AMP,SA,CA,STOP1,STOP2,SBOT1,SBOT2,TANBA,XMG,DT,DB)
49735  
49736 C...Double precision and integer declarations.
49737       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49738       IMPLICIT INTEGER(I-N)
49739  
49740 C...Parameters.
49741       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49742       SAVE /PYDAT1/
49743       INTEGER PYK,PYCHGE,PYCOMP
49744  
49745 C...Local variables.
49746       DIMENSION DELTA(2,2),COUPT(2,2),T(2,2),SSTOP2(2),
49747      &SSBOT2(2),B(2,2),COUPB(2,2),
49748      &HCOUPT(2,2),HCOUPB(2,2),
49749      &ACOUPT(2,2),ACOUPB(2,2),PR(3), POLAR(3)
49750  
49751       DELTA(1,1) = 1D0
49752       DELTA(2,2) = 1D0
49753       DELTA(1,2) = 0D0
49754       DELTA(2,1) = 0D0
49755       V = 174.1D0
49756       XMZ=91.18D0
49757       PI=PARU(1)
49758       RXMT=PYMRUN(6,XMT**2)
49759       CALL PYRGHM(XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,
49760      &XMU,XMH,HM,XMCH,SA,CA,SAB,CAB,TANBA,XMG,DT,DB)
49761  
49762       SINB = TANB/(TANB**2+1D0)**0.5D0
49763       COSB = 1D0/(TANB**2+1D0)**0.5D0
49764       COS2B = SINB**2 - COSB**2
49765       SINBPA = SINB*CA + COSB*SA
49766       COSBPA = COSB*CA - SINB*SA
49767       RMBOT = PYMRUN(5,XMT**2)
49768       XMQ2 = XMQ**2
49769       XMUR2 = XMUR**2
49770       IF(XMUR.LT.0D0) XMUR2=-XMUR2
49771       XMDR2 = XMDR**2
49772       XMST11 = RXMT**2 + XMQ2  - 0.35D0*XMZ**2*COS2B
49773       XMST22 = RXMT**2 + XMUR2 - 0.15D0*XMZ**2*COS2B
49774       IF(XMST11.LT.0D0) GOTO 500
49775       IF(XMST22.LT.0D0) GOTO 500
49776       XMSB11 = RMBOT**2 + XMQ2  + 0.42D0*XMZ**2*COS2B
49777       XMSB22 = RMBOT**2 + XMDR2 + 0.08D0*XMZ**2*COS2B
49778       IF(XMSB11.LT.0D0) GOTO 500
49779       IF(XMSB22.LT.0D0) GOTO 500
49780 C      WMST11 = RXMT**2 + XMQ2
49781 C      WMST22 = RXMT**2 + XMUR2
49782       XMST12 = RXMT*(AT - XMU/TANB)
49783       XMSB12 = RMBOT*(AB - XMU*TANB)
49784  
49785 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49786 C...STOP EIGENVALUES CALCULATION
49787 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49788  
49789       STOP12 = 0.5D0*(XMST11+XMST22) +
49790      &0.5D0*((XMST11+XMST22)**2 -
49791      &4D0*(XMST11*XMST22 - XMST12**2))**0.5D0
49792       STOP22 = 0.5D0*(XMST11+XMST22) -
49793      &0.5D0*((XMST11+XMST22)**2 - 4D0*(XMST11*XMST22 -
49794      &XMST12**2))**0.5D0
49795  
49796       IF(STOP22.LT.0D0) GOTO 500
49797       SSTOP2(1) = STOP12
49798       SSTOP2(2) = STOP22
49799       STOP1 = STOP12**0.5D0
49800       STOP2 = STOP22**0.5D0
49801 C      STOP1W = STOP1
49802 C      STOP2W = STOP2
49803  
49804       IF(XMST12.EQ.0D0) XST11 = 1D0
49805       IF(XMST12.EQ.0D0) XST12 = 0D0
49806       IF(XMST12.EQ.0D0) XST21 = 0D0
49807       IF(XMST12.EQ.0D0) XST22 = 1D0
49808  
49809       IF(XMST12.EQ.0D0) GOTO 110
49810  
49811   100 XST11 = XMST12/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
49812       XST12 = - (XMST11-STOP12)/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
49813       XST21 = XMST12/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
49814       XST22 = - (XMST11-STOP22)/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
49815  
49816   110 T(1,1) = XST11
49817       T(2,2) = XST22
49818       T(1,2) = XST12
49819       T(2,1) = XST21
49820  
49821       SBOT12 = 0.5D0*(XMSB11+XMSB22) +
49822      &0.5D0*((XMSB11+XMSB22)**2 -
49823      &4D0*(XMSB11*XMSB22 - XMSB12**2))**0.5D0
49824       SBOT22 = 0.5D0*(XMSB11+XMSB22) -
49825      &0.5D0*((XMSB11+XMSB22)**2 - 4D0*(XMSB11*XMSB22 -
49826      &XMSB12**2))**0.5D0
49827       IF(SBOT22.LT.0D0) GOTO 500
49828       SBOT1 = SBOT12**0.5D0
49829       SBOT2 = SBOT22**0.5D0
49830  
49831       SSBOT2(1) = SBOT12
49832       SSBOT2(2) = SBOT22
49833  
49834       IF(XMSB12.EQ.0D0) XSB11 = 1D0
49835       IF(XMSB12.EQ.0D0) XSB12 = 0D0
49836       IF(XMSB12.EQ.0D0) XSB21 = 0D0
49837       IF(XMSB12.EQ.0D0) XSB22 = 1D0
49838  
49839       IF(XMSB12.EQ.0D0) GOTO 130
49840  
49841   120 XSB11 = XMSB12/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
49842       XSB12 = - (XMSB11-SBOT12)/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
49843       XSB21 = XMSB12/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
49844       XSB22 = - (XMSB11-SBOT22)/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
49845  
49846   130 B(1,1) = XSB11
49847       B(2,2) = XSB22
49848       B(1,2) = XSB12
49849       B(2,1) = XSB21
49850  
49851  
49852       SINT = 0.2320D0
49853       SQR = DSQRT(2D0)
49854       VP = 174.1D0*SQR
49855  
49856 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49857 C...STARTING OF LIGHT HIGGS
49858 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49859  
49860       IF(IHIGGS.EQ.0) GOTO 490
49861  
49862       DO 150 I = 1,2
49863         DO 140 J = 1,2
49864           COUPT(I,J) =
49865      &    SINT*XMZ**2*2D0*SQR/174.1D0/3D0*SINBPA*(DELTA(I,J) +
49866      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
49867      &    -RXMT**2/174.1D0**2*VP/SINB*CA*DELTA(I,J)
49868      &    -RXMT/VP/SINB*(AT*CA + XMU*SA)*(T(1,I)*T(2,J) +
49869      &    T(1,J)*T(2,I))
49870   140   CONTINUE
49871   150 CONTINUE
49872  
49873  
49874       DO 170 I = 1,2
49875         DO 160 J = 1,2
49876           COUPB(I,J) =
49877      &    -SINT*XMZ**2*2D0*SQR/174.1D0/6D0*SINBPA*(DELTA(I,J) +
49878      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
49879      &    +RMBOT**2/174.1D0**2*VP/COSB*SA*DELTA(I,J)
49880      &    +RMBOT/VP/COSB*(AB*SA + XMU*CA)*(B(1,I)*B(2,J) +
49881      &    B(1,J)*B(2,I))
49882   160   CONTINUE
49883   170 CONTINUE
49884  
49885       PRUN = XMH
49886       EPS = 1D-4*PRUN
49887       ITER = 0
49888   180 ITER = ITER + 1
49889       DO 230  I3 = 1,3
49890  
49891         PR(I3)=PRUN+(I3-2)*EPS/2
49892         P2=PR(I3)**2
49893         POLT = 0D0
49894         DO 200 I = 1,2
49895           DO 190 J = 1,2
49896             POLT = POLT + COUPT(I,J)**2*3D0*
49897      &      PYFINT(P2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
49898   190     CONTINUE
49899   200   CONTINUE
49900  
49901         POLB = 0D0
49902         DO 220 I = 1,2
49903           DO 210 J = 1,2
49904             POLB = POLB + COUPB(I,J)**2*3D0*
49905      &      PYFINT(P2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
49906   210     CONTINUE
49907   220   CONTINUE
49908 C        RXMT2 = RXMT**2
49909         XMT2=XMT**2
49910  
49911         POLTT =
49912      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
49913      &  CA**2/SINB**2 *
49914      &  (-2D0*XMT**2+0.5D0*P2)*
49915      &  PYFINT(P2,XMT2,XMT2)
49916  
49917         POL = POLT + POLB + POLTT
49918         POLAR(I3) = P2 - XMH**2 - POL
49919   230 CONTINUE
49920       DERIV = (POLAR(3)-POLAR(1))/EPS
49921       DRUN = - POLAR(2)/DERIV
49922       PRUN = PRUN + DRUN
49923       P2 = PRUN**2
49924       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 240
49925       GOTO 180
49926   240 CONTINUE
49927  
49928       XMHP = DSQRT(P2)
49929  
49930 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49931 C...END OF LIGHT HIGGS
49932 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49933  
49934   250 IF(IHIGGS.EQ.1) GOTO 490
49935  
49936 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49937 C... STARTING OF HEAVY HIGGS
49938 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49939  
49940       DO 270 I = 1,2
49941         DO 260 J = 1,2
49942           HCOUPT(I,J) =
49943      &    -SINT*XMZ**2*2D0*SQR/174.1D0/3D0*COSBPA*(DELTA(I,J) +
49944      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
49945      &    -RXMT**2/174.1D0**2*VP/SINB*SA*DELTA(I,J)
49946      &    -RXMT/VP/SINB*(AT*SA - XMU*CA)*(T(1,I)*T(2,J) +
49947      &    T(1,J)*T(2,I))
49948   260   CONTINUE
49949   270 CONTINUE
49950  
49951       DO 290 I = 1,2
49952         DO 280 J = 1,2
49953           HCOUPB(I,J) =
49954      &    SINT*XMZ**2*2D0*SQR/174.1D0/6D0*COSBPA*(DELTA(I,J) +
49955      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
49956      &    -RMBOT**2/174.1D0**2*VP/COSB*CA*DELTA(I,J)
49957      &    -RMBOT/VP/COSB*(AB*CA - XMU*SA)*(B(1,I)*B(2,J) +
49958      &    B(1,J)*B(2,I))
49959           HCOUPB(I,J)=0D0
49960   280   CONTINUE
49961   290 CONTINUE
49962  
49963       PRUN = HM
49964       EPS = 1D-4*PRUN
49965       ITER = 0
49966   300 ITER = ITER + 1
49967       DO 350 I3 = 1,3
49968         PR(I3)=PRUN+(I3-2)*EPS/2
49969         HP2=PR(I3)**2
49970  
49971         HPOLT = 0D0
49972         DO 320 I = 1,2
49973           DO 310 J = 1,2
49974             HPOLT = HPOLT + HCOUPT(I,J)**2*3D0*
49975      &      PYFINT(HP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
49976   310     CONTINUE
49977   320   CONTINUE
49978  
49979         HPOLB = 0D0
49980         DO 340 I = 1,2
49981           DO 330 J = 1,2
49982             HPOLB = HPOLB + HCOUPB(I,J)**2*3D0*
49983      &      PYFINT(HP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
49984   330     CONTINUE
49985   340   CONTINUE
49986  
49987 C        RXMT2 = RXMT**2
49988         XMT2  = XMT**2
49989  
49990         HPOLTT =
49991      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
49992      &  SA**2/SINB**2 *
49993      &  (-2D0*XMT**2+0.5D0*HP2)*
49994      &  PYFINT(HP2,XMT2,XMT2)
49995  
49996         HPOL = HPOLT + HPOLB + HPOLTT
49997         POLAR(I3) =HP2-HM**2-HPOL
49998   350 CONTINUE
49999       DERIV = (POLAR(3)-POLAR(1))/EPS
50000       DRUN = - POLAR(2)/DERIV
50001       PRUN = PRUN + DRUN
50002       HP2 = PRUN**2
50003       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 360
50004       GOTO 300
50005   360 CONTINUE
50006  
50007  
50008   370 CONTINUE
50009       HMP = HP2**0.5D0
50010  
50011 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50012 C... END OF HEAVY HIGGS
50013 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50014  
50015       IF(IHIGGS.EQ.2) GOTO 490
50016  
50017 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50018 C...BEGINNING OF PSEUDOSCALAR HIGGS
50019 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50020  
50021       DO 390 I = 1,2
50022         DO 380 J = 1,2
50023           ACOUPT(I,J) =
50024      &    -RXMT/VP/SINB*(AT*COSB + XMU*SINB)*
50025      &    (T(1,I)*T(2,J) -T(1,J)*T(2,I))
50026   380   CONTINUE
50027   390 CONTINUE
50028       DO 410 I = 1,2
50029         DO 400 J = 1,2
50030           ACOUPB(I,J) =
50031      &    RMBOT/VP/COSB*(AB*SINB + XMU*COSB)*
50032      &    (B(1,I)*B(2,J) -B(1,J)*B(2,I))
50033   400   CONTINUE
50034   410 CONTINUE
50035  
50036       PRUN = XMA
50037       EPS = 1D-4*PRUN
50038       ITER = 0
50039   420 ITER = ITER + 1
50040       DO 470 I3 = 1,3
50041         PR(I3)=PRUN+(I3-2)*EPS/2
50042         AP2=PR(I3)**2
50043         APOLT = 0D0
50044         DO 440 I = 1,2
50045           DO 430 J = 1,2
50046             APOLT = APOLT + ACOUPT(I,J)**2*3D0*
50047      &      PYFINT(AP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
50048   430     CONTINUE
50049   440   CONTINUE
50050         APOLB = 0D0
50051         DO 460 I = 1,2
50052           DO 450 J = 1,2
50053             APOLB = APOLB + ACOUPB(I,J)**2*3D0*
50054      &      PYFINT(AP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
50055   450     CONTINUE
50056   460   CONTINUE
50057 C        RXMT2 = RXMT**2
50058         XMT2=XMT**2
50059         APOLTT =
50060      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
50061      &  COSB**2/SINB**2 *
50062      &  (-0.5D0*AP2)*
50063      &  PYFINT(AP2,XMT2,XMT2)
50064         APOL = APOLT + APOLB + APOLTT
50065         POLAR(I3) = AP2 - XMA**2 -APOL
50066   470 CONTINUE
50067       DERIV = (POLAR(3)-POLAR(1))/EPS
50068       DRUN = - POLAR(2)/DERIV
50069       PRUN = PRUN + DRUN
50070       AP2 = PRUN**2
50071       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 480
50072       GOTO 420
50073   480 CONTINUE
50074  
50075       AMP = DSQRT(AP2)
50076  
50077 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50078 C...END OF PSEUDOSCALAR HIGGS
50079 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50080  
50081       IF(IHIGGS.EQ.3) GOTO 490
50082  
50083   490 CONTINUE
50084       RETURN
50085   500 CONTINUE
50086       WRITE(MSTU(11),*) ' EXITING IN PYPOLE '
50087       WRITE(MSTU(11),*) ' XMST11,XMST22 = ',XMST11,XMST22
50088       WRITE(MSTU(11),*) ' XMSB11,XMSB22 = ',XMSB11,XMSB22
50089       WRITE(MSTU(11),*) ' STOP22,SBOT22 = ',STOP22,SBOT22
50090       CALL PYSTOP(107)
50091       END
50092  
50093 C*********************************************************************
50094  
50095 C...PYRGHM
50096 C...Auxiliary to PYPOLE.
50097  
50098       SUBROUTINE PYRGHM(MCHI,MA,TANB,MQ,MUR,MD,MTOP,AU,AD,MU,
50099      *    MHP,HMP,MCH,SA,CA,SAB,CAB,TANBA,MGLU,DELTAMT,DELTAMB)
50100       IMPLICIT DOUBLE PRECISION(A-H,L,M,O-Z)
50101       DIMENSION VH(2,2),M2(2,2),M2P(2,2)
50102 C...Parameters.
50103       INTEGER MSTU,MSTJ
50104       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50105       SAVE /PYDAT1/
50106  
50107       MZ = 91.18D0
50108       PI = PARU(1)
50109       V  = 174.1D0
50110       ALPHA1 = 0.0101D0
50111       ALPHA2 = 0.0337D0
50112       ALPHA3Z = 0.12D0
50113       TANBA = TANB
50114       TANBT = TANB
50115 C     MBOTTOM(MTOP) = 3. GEV
50116       MB = PYMRUN(5,MTOP**2)
50117       ALPHA3 = ALPHA3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPHA3Z*
50118      *LOG(MTOP**2/MZ**2))
50119 C     RMTOP= RUNNING TOP QUARK MASS
50120       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
50121       TQ = LOG((MQ**2+MTOP**2)/MTOP**2)
50122       TU = LOG((MUR**2 + MTOP**2)/MTOP**2)
50123       TD = LOG((MD**2 + MTOP**2)/MTOP**2)
50124 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50125 C
50126 C    NEW DEFINITION, TGLU.
50127 C
50128 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50129       TGLU = LOG(MGLU**2/MTOP**2)
50130       SINB = TANB/DSQRT(1D0 + TANB**2)
50131       COSB = SINB/TANB
50132       IF(MA.GT.MTOP)
50133      *TANBA = TANB*(1D0-3D0/32D0/PI**2*
50134      *(RMTOP**2/V**2/SINB**2-MB**2/V**2/COSB**2)*
50135      *LOG(MA**2/MTOP**2))
50136       IF(MA.LT.MTOP.OR.MA.EQ.MTOP) TANBT = TANBA
50137       SINB = TANBT/SQRT(1D0 + TANBT**2)
50138       COSB = 1D0/DSQRT(1D0 + TANBT**2)
50139       G1 = SQRT(ALPHA1*4D0*PI)
50140       G2 = SQRT(ALPHA2*4D0*PI)
50141       G3 = SQRT(ALPHA3*4D0*PI)
50142       HU = RMTOP/V/SINB
50143       HD =  MB/V/COSB
50144       CALL PYGFXX(MA,TANBA,MQ,MUR,MD,MTOP,AU,AD,MU,MGLU,VH,STOP1,STOP2,
50145      *SBOT1,SBOT2,DELTAMT,DELTAMB)
50146       IF(MQ.GT.MUR) TP = TQ - TU
50147       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TP = TU - TQ
50148       IF(MQ.GT.MUR) TDP = TU
50149       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TDP = TQ
50150       IF(MQ.GT.MD) TPD = TQ - TD
50151       IF(MQ.LT.MD.OR.MQ.EQ.MD) TPD = TD - TQ
50152       IF(MQ.GT.MD) TDPD = TD
50153       IF(MQ.LT.MD.OR.MQ.EQ.MD) TDPD = TQ
50154  
50155       IF(MQ.GT.MD) DLAMBDA1 = 6D0/96D0/PI**2*G1**2*HD**2*TPD
50156       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA1 = 3D0/32D0/PI**2*
50157      * HD**2*(G1**2/3D0+G2**2)*TPD
50158  
50159       IF(MQ.GT.MUR) DLAMBDA2 =12D0/96D0/PI**2*G1**2*HU**2*TP
50160       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA2 = 3D0/32D0/PI**2*
50161      * HU**2*(-G1**2/3D0+G2**2)*TP
50162  
50163 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50164 C
50165 C  DLAMBDAP1 AND DLAMBDAP2 ARE THE NEW LOG CORRECTIONS DUE TO
50166 C  THE PRESENCE OF THE GLUINO MASS. THEY ARE IN GENERAL VERY SMALL,
50167 C  AND ONLY PRESENT IF THERE IS A HIERARCHY OF MASSES BETWEEN THE
50168 C  TWO STOPS.
50169 C
50170 C
50171 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50172  
50173       DLAMBDAP2 = 0D0
50174       IF(MGLU.LT.MUR.OR.MGLU.LT.MQ) THEN
50175        IF(MQ.GT.MUR.AND.MGLU.GT.MUR) THEN
50176         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TGLU**2)
50177        ENDIF
50178  
50179        IF(MQ.GT.MUR.AND.MGLU.LT.MUR) THEN
50180         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
50181        ENDIF
50182  
50183        IF(MQ.GT.MUR.AND.MGLU.EQ.MUR) THEN
50184         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
50185        ENDIF
50186  
50187        IF(MUR.GT.MQ.AND.MGLU.GT.MQ) THEN
50188         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TGLU**2)
50189        ENDIF
50190  
50191        IF(MUR.GT.MQ.AND.MGLU.LT.MQ) THEN
50192         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
50193        ENDIF
50194  
50195        IF(MUR.GT.MQ.AND.MGLU.EQ.MQ) THEN
50196         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
50197        ENDIF
50198       ENDIF
50199       DLAMBDA3 = 0D0
50200       DLAMBDA4 = 0D0
50201       IF(MQ.GT.MD) DLAMBDA3 = -1D0/32D0/PI**2*G1**2*HD**2*TPD
50202       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA3 = 3D0/64D0/PI**2*HD**2*
50203      *(G2**2-G1**2/3D0)*TPD
50204       IF(MQ.GT.MUR) DLAMBDA3 = DLAMBDA3 -
50205      *1D0/16D0/PI**2*G1**2*HU**2*TP
50206       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA3 = DLAMBDA3 +
50207      * 3D0/64D0/PI**2*HU**2*(G2**2+G1**2/3D0)*TP
50208       IF(MQ.LT.MUR) DLAMBDA4 = -3D0/32D0/PI**2*G2**2*HU**2*TP
50209       IF(MQ.LT.MD) DLAMBDA4 = DLAMBDA4 - 3D0/32D0/PI**2*G2**2*
50210      *HD**2*TPD
50211       LAMBDA1 = ((G1**2 + G2**2)/4D0)*
50212      * (1D0-3D0*HD**2*(TPD + TDPD)/8D0/PI**2)
50213      *+(3D0*HD**4D0/16D0/PI**2) *TPD*(1D0
50214      *+ (3D0*HD**2/2D0 + HU**2/2D0
50215      *- 8D0*G3**2) * (TPD + 2D0*TDPD)/16D0/PI**2)
50216      *+(3D0*HD**4D0/8D0/PI**2) *TDPD*(1D0  + (3D0*HD**2/2D0 + HU**2/2D0
50217      *- 8D0*G3**2) * TDPD/16D0/PI**2) + DLAMBDA1
50218       LAMBDA2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU**2*
50219      *(TP + TDP)/8D0/PI**2)
50220      *+(3D0*HU**4D0/16D0/PI**2) *TP*(1D0
50221      *+ (3D0*HU**2/2D0 + HD**2/2D0
50222      *- 8D0*G3**2) * (TP + 2D0*TDP)/16D0/PI**2)
50223      *+(3D0*HU**4D0/8D0/PI**2) *TDP*(1D0 + (3D0*HU**2/2D0 + HD**2/2D0
50224      *- 8D0*G3**2) * TDP/16D0/PI**2) + DLAMBDA2 + DLAMBDAP2
50225       LAMBDA3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
50226      *(HU**2)*(TP + TDP)/16D0/PI**2 -3D0*
50227      *(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA3
50228       LAMBDA4 = (- G2**2/2D0)*(1D0
50229      *-3D0*(HU**2)*(TP + TDP)/16D0/PI**2
50230      *-3D0*(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA4
50231  
50232       LAMBDA5 = 0D0
50233       LAMBDA6 = 0D0
50234       LAMBDA7 = 0D0
50235  
50236       M2(1,1) = 2D0*V**2*(LAMBDA1*COSB**2+2D0*LAMBDA6*
50237      *COSB*SINB + LAMBDA5*SINB**2) + MA**2*SINB**2
50238  
50239       M2(2,2) = 2D0*V**2*(LAMBDA5*COSB**2+2D0*LAMBDA7*
50240      *COSB*SINB + LAMBDA2*SINB**2) + MA**2*COSB**2
50241       M2(1,2) = 2D0*V**2*(LAMBDA6*COSB**2+(LAMBDA3+LAMBDA4)*
50242      *COSB*SINB + LAMBDA7*SINB**2) - MA**2*SINB*COSB
50243  
50244       M2(2,1) = M2(1,2)
50245 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50246 CCC  THIS IS THE CONTRIBUTION FROM LIGHT CHARGINOS/NEUTRALINOS
50247 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50248  
50249       MSSUSY=DSQRT(.5D0*(MQ**2+MUR**2)+MTOP**2)
50250  
50251       IF(MCHI.GT.MSSUSY) GOTO 100
50252       IF(MCHI.LT.MTOP) MCHI=MTOP
50253  
50254       TCHAR=LOG(MSSUSY**2/MCHI**2)
50255  
50256       DELTAL12=(9D0/64D0/PI**2*G2**4+5D0/192D0/PI**2*G1**4)*TCHAR
50257       DELTAL3P4=(3D0/64D0/PI**2*G2**4+7D0/192D0/PI**2*G1**4
50258      *+4D0/32D0/PI**2*G1**2*G2**2)*TCHAR
50259  
50260       DELTAM112=2D0*DELTAL12*V**2*COSB**2
50261       DELTAM222=2D0*DELTAL12*V**2*SINB**2
50262       DELTAM122=2D0*DELTAL3P4*V**2*SINB*COSB
50263  
50264       M2(1,1)=M2(1,1)+DELTAM112
50265       M2(2,2)=M2(2,2)+DELTAM222
50266       M2(1,2)=M2(1,2)+DELTAM122
50267       M2(2,1)=M2(2,1)+DELTAM122
50268  
50269   100 CONTINUE
50270  
50271 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50272 CCC  END OF CHARGINOS/NEUTRALINOS
50273 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50274  
50275       DO 120 I = 1,2
50276         DO 110 J = 1,2
50277           M2P(I,J) = M2(I,J) + VH(I,J)
50278   110   CONTINUE
50279   120 CONTINUE
50280       TRM2P = M2P(1,1) + M2P(2,2)
50281       DETM2P = M2P(1,1)*M2P(2,2) - M2P(1,2)*M2P(2,1)
50282       MH2P = (TRM2P - DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
50283       HM2P = (TRM2P + DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
50284       HMP = DSQRT(HM2P)
50285       MCH2=MA**2+(LAMBDA5-LAMBDA4)*V**2
50286       MCH=DSQRT(MCH2)
50287       IF(MH2P.LT.0.) GOTO 130
50288       MHP = SQRT(MH2P)
50289       SIN2ALPHA = 2D0*M2P(1,2)/SQRT(TRM2P**2-4D0*DETM2P)
50290       COS2ALPHA = (M2P(1,1)-M2P(2,2))/SQRT(TRM2P**2-4D0*DETM2P)
50291       IF(COS2ALPHA.GE.0.) THEN
50292         ALPHA = ASIN(SIN2ALPHA)/2D0
50293       ELSE
50294         ALPHA = -PI/2D0-ASIN(SIN2ALPHA)/2D0
50295       ENDIF
50296       SA = SIN(ALPHA)
50297       CA = COS(ALPHA)
50298 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50299 C
50300 C        HERE THE VALUES OF SAB AND CAB ARE DEFINED, IN ORDER
50301 C        TO DEFINE THE NEW COUPLINGS OF THE LIGHTEST AND
50302 C        HEAVY CP-EVEN HIGGS TO THE BOTTOM QUARK.
50303 C
50304 C
50305 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50306       SAB = SA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0+CA/SA/TANB))
50307       CAB = CA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0-SA/CA/TANB))
50308   130 CONTINUE
50309       RETURN
50310       END
50311  
50312 C*********************************************************************
50313  
50314 C...PYGFXX
50315 C...Auxiliary to PYRGHM.
50316  
50317       SUBROUTINE PYGFXX(MA,TANB,MQ,MUR,MD,MTOP,AT,AB,XMU,XMGL,VH,
50318      *  STOP1,STOP2,SBOT1,SBOT2,DELTAMT,DELTAMB)
50319       IMPLICIT DOUBLE PRECISION(A-H,M,O-Z)
50320       DIMENSION VH(2,2),VH3T(2,2),VH3B(2,2),AL(2,2)
50321 C...Commonblocks.
50322       INTEGER MSTU,MSTJ,KCHG
50323       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50324       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50325       SAVE /PYDAT1/,/PYDAT2/
50326  
50327       G(X,Y) = 2.D0 - (X+Y)/(X-Y)*DLOG(X/Y)
50328  
50329       T(X,Y,Z) = (X**2*Y**2*LOG(X**2/Y**2) + X**2*Z**2*LOG(Z**2/X**2)
50330      * + Y**2*Z**2*LOG(Y**2/Z**2))/((X**2-Y**2)*(Y**2-Z**2)*(X**2-Z**2))
50331  
50332       IF(DABS(XMU).LT.0.000001D0) XMU = 0.000001D0
50333       MQ2 = MQ**2
50334       MUR2 = MUR**2
50335       MD2 = MD**2
50336       TANBA = TANB
50337       SINBA = TANBA/DSQRT(TANBA**2+1D0)
50338       COSBA = SINBA/TANBA
50339  
50340       SINB = TANB/DSQRT(TANB**2+1D0)
50341       COSB = SINB/TANB
50342  
50343       PI = PARU(1)
50344       MZ = PMAS(23,1)
50345       MW = PMAS(24,1)
50346       SW = 1D0-MW**2/MZ**2
50347       V  = 174.1D0
50348  
50349       ALPHA3 = 0.12D0/(1D0+23/12D0/PI*0.12D0*LOG(MTOP**2/MZ**2))
50350       G2 = DSQRT(0.0336D0*4D0*PI)
50351       G1 = DSQRT(0.0101D0*4D0*PI)
50352  
50353       IF(MQ.GT.MUR) MST = MQ
50354       IF(MUR.GT.MQ.OR.MUR.EQ.MQ) MST = MUR
50355  
50356       MSUSYT = DSQRT(MST**2  + MTOP**2)
50357  
50358       IF(MQ.GT.MD) MSB = MQ
50359       IF(MD.GT.MQ.OR.MD.EQ.MQ) MSB = MD
50360  
50361       MB = PYMRUN(5,MSB**2)
50362       MSUSYB = DSQRT(MSB**2 + MB**2)
50363       TT = LOG(MSUSYT**2/MTOP**2)
50364       TB = LOG(MSUSYB**2/MTOP**2)
50365  
50366       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
50367       HT = RMTOP/(V*SINB)
50368       HTST = RMTOP/V
50369       HB = MB/V/COSB
50370       G32 = ALPHA3*4D0*PI
50371       BT2 = -(8D0*G32 - 9D0*HT**2/2D0 - HB**2/2D0)/(4D0*PI)**2
50372       BB2 = -(8D0*G32 - 9D0*HB**2/2D0 - HT**2/2D0)/(4D0*PI)**2
50373       AL2 = 3D0/8D0/PI**2*HT**2
50374 C      BT2ST = -(8.*G32 - 9.*HTST**2/2.)/(4.*PI)**2
50375 C      ALST = 3./8./PI**2*HTST**2
50376       AL1 = 3D0/8D0/PI**2*HB**2
50377  
50378       AL(1,1) = AL1
50379       AL(1,2) = (AL2+AL1)/2D0
50380       AL(2,1) = (AL2+AL1)/2D0
50381       AL(2,2) = AL2
50382  
50383       IF(MA.GT.MTOP) THEN
50384         VI = V*(1D0 + 3D0/32D0/PI**2*HTST**2*
50385      *        LOG(MTOP**2/MA**2))
50386         H1I = VI* COSBA
50387         H2I = VI*SINBA
50388         H1T = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYT**2))**.25D0
50389         H2T = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYT**2))**.25D0
50390         H1B = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYB**2))**.25D0
50391         H2B = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYB**2))**.25D0
50392       ELSE
50393         VI = V
50394         H1I = VI*COSB
50395         H2I = VI*SINB
50396         H1T=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYT**2))**.25D0
50397         H2T=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYT**2))**.25D0
50398         H1B=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYB**2))**.25D0
50399         H2B=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYB**2))**.25D0
50400       ENDIF
50401  
50402       TANBST = H2T/H1T
50403       SINBT = TANBST/DSQRT(1D0+TANBST**2)
50404  
50405       TANBSB = H2B/H1B
50406       SINBB = TANBSB/DSQRT(1D0+TANBSB**2)
50407       COSBB = SINBB/TANBSB
50408  
50409       DELTAMT = 0D0
50410       DELTAMB = 0D0
50411  
50412       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
50413       MTOP2 = DSQRT(MTOP4)
50414       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
50415      * /(1D0+DELTAMB)**4
50416       MBOT2 = DSQRT(MBOT4)
50417  
50418       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
50419      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
50420      *  +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
50421      *  MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
50422       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
50423      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
50424      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
50425      *  MQ2 - MUR2)**2*0.25D0
50426      *  + MTOP2*(AT-XMU/TANBST)**2)
50427       IF(STOP22.LT.0.) GOTO 120
50428       SBOT12 = (MQ2 + MD2)*.5D0
50429      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
50430      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
50431      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
50432       SBOT22 = (MQ2 + MD2)*.5D0
50433      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
50434      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
50435      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
50436       IF(SBOT22.LT.0.) SBOT22 = 10000D0
50437  
50438       STOP1 = DSQRT(STOP12)
50439       STOP2 = DSQRT(STOP22)
50440       SBOT1 = DSQRT(SBOT12)
50441       SBOT2 = DSQRT(SBOT22)
50442  
50443 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50444 C
50445 C     HERE IS THE DEFINITION OF DELTAMB AND DELTAMT, WHICH
50446 C     ARE THE VERTEX CORRECTIONS TO THE BOTTOM AND TOP QUARK
50447 C     MASS, KEEPING THE DOMINANT QCD AND TOP YUKAWA COUPLING
50448 C     INDUCED CORRECTIONS.
50449 C
50450 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50451  
50452       X=SBOT1
50453       Y=SBOT2
50454       Z=XMGL
50455       IF(X.EQ.Y) X = X - 0.00001D0
50456       IF(X.EQ.Z) X = X - 0.00002D0
50457       IF(Y.EQ.Z) Y = Y - 0.00003D0
50458  
50459       T1=T(X,Y,Z)
50460       X=STOP1
50461       Y=STOP2
50462       Z=XMU
50463       IF(X.EQ.Y) X = X - 0.00001D0
50464       IF(X.EQ.Z) X = X - 0.00002D0
50465       IF(Y.EQ.Z) Y = Y - 0.00003D0
50466       T2=T(X,Y,Z)
50467       DELTAMB = -2*ALPHA3/3D0/PI*XMGL*(AB-XMU*TANB)*T1
50468      *  + HT**2/(4D0*PI)**2*(AT-XMU/TANB)*XMU*TANB*T2
50469       X=STOP1
50470       Y=STOP2
50471       Z=XMGL
50472       IF(X.EQ.Y) X = X - 0.00001D0
50473       IF(X.EQ.Z) X = X - 0.00002D0
50474       IF(Y.EQ.Z) Y = Y - 0.00003D0
50475       T3=T(X,Y,Z)
50476       DELTAMT = -2D0*ALPHA3/3D0/PI*(AT-XMU/TANB)*XMGL*T3
50477  
50478 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50479 C
50480 C   HERE THE NEW VALUES OF THE TOP AND BOTTOM QUARK MASSES AT
50481 C   THE SCALE MS ARE DEFINED, TO BE USED IN THE EFFECTIVE
50482 C   POTENTIAL APPROXIMATION. THEY ARE JUST THE OLD ONES, BUT
50483 C   INCLUDING THE FINITE CORRECTIONS DELTAMT AND DELTAMB.
50484 C   THE DELTAMB CORRECTIONS CAN BECOME LARGE AND ARE RESUMMED
50485 C   TO ALL ORDERS, AS SUGGESTED IN THE TWO RECENT WORKS BY M. CARENA,
50486 C   S. MRENNA AND C.E.M. WAGNER, AS WELL AS IN THE WORK BY M. CARENA,
50487 C   D. GARCIA, U. NIERSTE AND C.E.M. WAGNER, TO APPEAR. THE TOP
50488 C   QUARK MASS CORRECTIONS ARE SMALL AND ARE KEPT IN THE PERTURBATIVE
50489 C   FORMULATION.  THE FUNCTION T(X,Y,Z) IS NECESSARY FOR THE
50490 C   CALCULATION. THE ENTRIES ARE MASSES AND NOT THEIR SQUARES !
50491 C
50492 C
50493 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50494  
50495       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
50496       MTOP2 = DSQRT(MTOP4)
50497       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
50498      * /(1D0+DELTAMB)**4
50499       MBOT2 = DSQRT(MBOT4)
50500  
50501       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
50502      *   +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
50503      *   +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
50504      *   MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
50505       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
50506      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
50507      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
50508      *  MQ2 - MUR2)**2*0.25D0
50509      *  + MTOP2*(AT-XMU/TANBST)**2)
50510  
50511       IF(STOP22.LT.0.) GOTO 120
50512       SBOT12 = (MQ2 + MD2)*.5D0
50513      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
50514      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
50515      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
50516       SBOT22 = (MQ2 + MD2)*.5D0
50517      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
50518      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
50519      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
50520       IF(SBOT22.LT.0.) GOTO 120
50521  
50522  
50523       STOP1 = DSQRT(STOP12)
50524       STOP2 = DSQRT(STOP22)
50525       SBOT1 = DSQRT(SBOT12)
50526       SBOT2 = DSQRT(SBOT22)
50527  
50528 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50529 CCC   D-TERMS
50530 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
50531       STW=SW
50532  
50533       F1T=(MQ2-MUR2)/(STOP12-STOP22)*(.5D0-4D0/3D0*STW)*
50534      *         LOG(STOP1/STOP2)
50535      *        +(.5D0-2D0/3D0*STW)*LOG(STOP1*STOP2/(MQ2+MTOP2))
50536      *        + 2D0/3D0*STW*LOG(STOP1*STOP2/(MUR2+MTOP2))
50537  
50538       F1B=(MQ2-MD2)/(SBOT12-SBOT22)*(-.5D0+2D0/3D0*STW)*
50539      *        LOG(SBOT1/SBOT2)
50540      *        +(-.5D0+1D0/3D0*STW)*LOG(SBOT1*SBOT2/(MQ2+MBOT2))
50541      *        - 1D0/3D0*STW*LOG(SBOT1*SBOT2/(MD2+MBOT2))
50542  
50543       F2T=DSQRT(MTOP2)*(AT-XMU/TANBST)/(STOP12-STOP22)*
50544      *         (-.5D0*LOG(STOP12/STOP22)
50545      *        +(4D0/3D0*STW-.5D0)*(MQ2-MUR2)/(STOP12-STOP22)*
50546      *         G(STOP12,STOP22))
50547  
50548       F2B=DSQRT(MBOT2)*(AB-XMU*TANBSB)/(SBOT12-SBOT22)*
50549      *         (.5D0*LOG(SBOT12/SBOT22)
50550      *        +(-2D0/3D0*STW+.5D0)*(MQ2-MD2)/(SBOT12-SBOT22)*
50551      *        G(SBOT12,SBOT22))
50552  
50553       VH3B(1,1) = MBOT4/(COSBB**2)*(LOG(SBOT1**2*SBOT2**2/
50554      *  (MQ2+MBOT2)/(MD2+MBOT2))
50555      *  + 2D0*(AB*(AB-XMU*TANBSB)/(SBOT1**2-SBOT2**2))*
50556      *  LOG(SBOT1**2/SBOT2**2)) +
50557      *  MBOT4/(COSBB**2)*(AB*(AB-XMU*TANBSB)/
50558      *  (SBOT1**2-SBOT2**2))**2*G(SBOT12,SBOT22)
50559  
50560       VH3T(1,1) =
50561      *  MTOP4/(SINBT**2)*(XMU*(-AT+XMU/TANBST)/(STOP1**2
50562      * -STOP2**2))**2*G(STOP12,STOP22)
50563  
50564       VH3B(1,1)=VH3B(1,1)+
50565      *    MZ**2*(2*MBOT2*F1B-DSQRT(MBOT2)*AB*F2B)
50566  
50567       VH3T(1,1) = VH3T(1,1) +
50568      *  MZ**2*(DSQRT(MTOP2)*XMU/TANBST*F2T)
50569  
50570       VH3T(2,2) = MTOP4/(SINBT**2)*(LOG(STOP1**2*STOP2**2/
50571      *  (MQ2+MTOP2)/(MUR2+MTOP2))
50572      *  + 2D0*(AT*(AT-XMU/TANBST)/(STOP1**2-STOP2**2))*
50573      *  LOG(STOP1**2/STOP2**2)) +
50574      *  MTOP4/(SINBT**2)*(AT*(AT-XMU/TANBST)/
50575      *  (STOP1**2-STOP2**2))**2*G(STOP12,STOP22)
50576  
50577       VH3B(2,2) =
50578      *  MBOT4/(COSBB**2)*(XMU*(-AB+XMU*TANBSB)/(SBOT1**2
50579      * -SBOT2**2))**2*G(SBOT12,SBOT22)
50580  
50581       VH3T(2,2)=VH3T(2,2)+
50582      *    MZ**2*(-2*MTOP2*F1T+DSQRT(MTOP2)*AT*F2T)
50583       VH3B(2,2) = VH3B(2,2) -MZ**2*DSQRT(MBOT2)*XMU*TANBSB*F2B
50584       VH3T(1,2) = -
50585      *   MTOP4/(SINBT**2)*XMU*(AT-XMU/TANBST)/
50586      * (STOP1**2-STOP2**2)*(LOG(STOP1**2/STOP2**2) + AT*
50587      * (AT - XMU/TANBST)/(STOP1**2-STOP2**2)*G(STOP12,STOP22))
50588  
50589       VH3B(1,2) =
50590      * - MBOT4/(COSBB**2)*XMU*(AB-XMU*TANBSB)/
50591      * (SBOT1**2-SBOT2**2)*(LOG(SBOT1**2/SBOT2**2) + AB*
50592      * (AB - XMU*TANBSB)/(SBOT1**2-SBOT2**2)*G(SBOT12,SBOT22))
50593  
50594  
50595       VH3T(1,2)=VH3T(1,2) +
50596      *MZ**2*(MTOP2/TANBST*F1T-DSQRT(MTOP2)*(AT/TANBST+XMU)/2D0*F2T)
50597  
50598       VH3B(1,2)=VH3B(1,2) +
50599      *MZ**2*(-MBOT2*TANBSB*F1B+DSQRT(MBOT2)*(AB*TANBSB+XMU)/2D0*F2B)
50600  
50601       VH3T(2,1) = VH3T(1,2)
50602       VH3B(2,1) = VH3B(1,2)
50603  
50604 C      TQ = LOG((MQ2 + MTOP2)/MTOP2)
50605 C      TU = LOG((MUR2+MTOP2)/MTOP2)
50606 C      TQD = LOG((MQ2 + MB**2)/MB**2)
50607 C      TD = LOG((MD2+MB**2)/MB**2)
50608  
50609       DO 110 I = 1,2
50610         DO 100 J = 1,2
50611           VH(I,J) =
50612      *   6D0/(8D0*PI**2*(H1T**2+H2T**2))
50613      *   *VH3T(I,J)*0.5D0*(1D0-AL(I,J)*TT/2D0) +
50614      *   6D0/(8D0*PI**2*(H1B**2+H2B**2))
50615      *   *VH3B(I,J)*0.5D0*(1D0-AL(I,J)*TB/2D0)
50616   100   CONTINUE
50617   110 CONTINUE
50618  
50619       GOTO 150
50620   120 DO 140 I =1,2
50621         DO 130 J = 1,2
50622           VH(I,J) = -1D15
50623   130   CONTINUE
50624   140 CONTINUE
50625  
50626  
50627   150 RETURN
50628       END
50629  
50630  
50631  
50632  
50633  
50634 C*********************************************************************
50635  
50636 C...PYFINT
50637 C...Auxiliary routine to PYPOLE for SUSY Higgs calculations.
50638  
50639       FUNCTION PYFINT(A,B,C)
50640  
50641 C...Double precision and integer declarations.
50642       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50643       IMPLICIT INTEGER(I-N)
50644       INTEGER PYK,PYCHGE,PYCOMP
50645 C...Commonblock.
50646       COMMON/PYINTS/XXM(20)
50647       SAVE/PYINTS/
50648  
50649 C...Local variables.
50650       EXTERNAL PYFISB
50651       DOUBLE PRECISION PYFISB
50652  
50653       XXM(1)=A
50654       XXM(2)=B
50655       XXM(3)=C
50656       XLO=0D0
50657       XHI=1D0
50658       PYFINT  = PYGAUS(PYFISB,XLO,XHI,1D-3)
50659  
50660       RETURN
50661       END
50662  
50663 C*********************************************************************
50664  
50665 C...PYFISB
50666 C...Auxiliary routine to PYFINT for SUSY Higgs calculations.
50667  
50668       FUNCTION PYFISB(X)
50669  
50670 C...Double precision and integer declarations.
50671       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50672       IMPLICIT INTEGER(I-N)
50673       INTEGER PYK,PYCHGE,PYCOMP
50674 C...Commonblock.
50675       COMMON/PYINTS/XXM(20)
50676       SAVE/PYINTS/
50677  
50678       PYFISB = LOG(ABS(X*XXM(2)+(1-X)*XXM(3)-X*(1-X)*XXM(1))/
50679      &(X*(XXM(2)-XXM(3))+XXM(3)))
50680  
50681       RETURN
50682       END
50683  
50684 C*********************************************************************
50685  
50686 C...PYSFDC
50687 C...Calculates decays of sfermions.
50688  
50689       SUBROUTINE PYSFDC(KFIN,XLAM,IDLAM,IKNT)
50690  
50691 C...Double precision and integer declarations.
50692       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50693       IMPLICIT INTEGER(I-N)
50694       INTEGER PYK,PYCHGE,PYCOMP
50695 C...Parameter statement to help give large particle numbers.
50696       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50697      &KEXCIT=4000000,KDIMEN=5000000)
50698 C...Commonblocks.
50699       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50700       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50701       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
50702       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50703      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
50704       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
50705  
50706 C...Local variables.
50707       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2)
50708       COMPLEX*16 CAL,CAR,CBL,CBR,CALP,CARP,CBLP,CBRP,CA,CB
50709       INTEGER KFIN,KCIN
50710       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,XMZ,AXMJ
50711       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
50712       DOUBLE PRECISION PYLAMF,XL
50713       DOUBLE PRECISION TANW,XW,AEM,C1,AS
50714       DOUBLE PRECISION AL,AR,BL,BR
50715       DOUBLE PRECISION CH1,CH2,CH3,CH4
50716       DOUBLE PRECISION XMBOT,XMTOP
50717       DOUBLE PRECISION XLAM(0:400)
50718       INTEGER IDLAM(400,3)
50719       INTEGER LKNT,IX,ILR,IDU,J,I,IKNT,IFL,II
50720       DOUBLE PRECISION SR2
50721       DOUBLE PRECISION CBETA,SBETA
50722       DOUBLE PRECISION CW
50723       DOUBLE PRECISION BETA,ALFA,XMU,AT,AB,ATRIT,ATRIB,ATRIL
50724       DOUBLE PRECISION COSA,SINA,TANB
50725       DOUBLE PRECISION PYALEM,PI,PYALPS,EI
50726       DOUBLE PRECISION GHRR,GHLL,GHLR,XMB,BLR
50727       INTEGER IG,KF1,KF2
50728       INTEGER IGG(4),KFNCHI(4),KFCCHI(2)
50729       DATA IGG/23,25,35,36/
50730       DATA PI/3.141592654D0/
50731       DATA SR2/1.4142136D0/
50732       DATA KFNCHI/1000022,1000023,1000025,1000035/
50733       DATA KFCCHI/1000024,1000037/
50734  
50735 C...COUNT THE NUMBER OF DECAY MODES
50736       LKNT=0
50737  
50738 C...NO NU_R DECAYS
50739       IF(KFIN.EQ.KSUSY2+12.OR.KFIN.EQ.KSUSY2+14.OR.
50740      &KFIN.EQ.KSUSY2+16) RETURN
50741  
50742       XMW=PMAS(24,1)
50743       XMW2=XMW**2
50744       XMZ=PMAS(23,1)
50745       XW=PARU(102)
50746       TANW = SQRT(XW/(1D0-XW))
50747       CW=SQRT(1D0-XW)
50748  
50749       DO 110 I=1,4
50750         DO 100 J=1,4
50751           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
50752   100   CONTINUE
50753   110 CONTINUE
50754       DO 130 I=1,2
50755         DO 120 J=1,2
50756            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
50757            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
50758   120   CONTINUE
50759   130 CONTINUE
50760  
50761 C...KCIN
50762       KCIN=PYCOMP(KFIN)
50763 C...ILR is 1 for left and 2 for right.
50764       ILR=KFIN/KSUSY1
50765 C...IFL is matching non-SUSY flavour.
50766       IFL=MOD(KFIN,KSUSY1)
50767 C...IDU is weak isospin, 1 for down and 2 for up.
50768       IDU=2-MOD(IFL,2)
50769  
50770       XMI=PMAS(KCIN,1)
50771       XMI2=XMI**2
50772       AEM=PYALEM(XMI2)
50773       AS =PYALPS(XMI2)
50774       C1=AEM/XW
50775       XMI3=XMI**3
50776       EI=KCHG(IFL,1)/3D0
50777  
50778       XMBOT=PYMRUN(5,XMI2)
50779       XMTOP=PYMRUN(6,XMI2)
50780  
50781       TANB=RMSS(5)
50782       BETA=ATAN(TANB)
50783       ALFA=RMSS(18)
50784       CBETA=COS(BETA)
50785       SBETA=TANB*CBETA
50786       SINA=SIN(ALFA)
50787       COSA=COS(ALFA)
50788       XMU=-RMSS(4)
50789       ATRIT=RMSS(16)
50790       ATRIB=RMSS(15)
50791       ATRIL=RMSS(17)
50792  
50793 C...2-BODY DECAYS OF SFERMION -> GRAVITINO + FERMION
50794  
50795       IF(IMSS(11).EQ.1) THEN
50796         XMP=RMSS(29)
50797         IDG=39+KSUSY1
50798         XMGR=PMAS(PYCOMP(IDG),1)
50799         XFAC=(XMI2/(XMP*XMGR))**2*XMI/48D0/PI
50800         IF(IFL.EQ.5) THEN
50801           XMF=XMBOT
50802         ELSEIF(IFL.EQ.6) THEN
50803           XMF=XMTOP
50804         ELSE
50805           XMF=PMAS(IFL,1)
50806         ENDIF
50807         IF(XMI.GT.XMGR+XMF) THEN
50808           LKNT=LKNT+1
50809           IDLAM(LKNT,1)=IDG
50810           IDLAM(LKNT,2)=IFL
50811           IDLAM(LKNT,3)=0
50812           XLAM(LKNT)=XFAC*(1D0-XMF**2/XMI2)**4
50813         ENDIF
50814       ENDIF
50815  
50816 C...2-BODY DECAYS OF SFERMION -> FERMION + GAUGE/GAUGINO
50817  
50818 C...CHARGED DECAYS:
50819       DO 140 IX=1,2
50820 C...DI -> U CHI1-,CHI2-
50821         IF(IDU.EQ.1) THEN
50822           XMFP=PMAS(IFL+1,1)
50823           XMF =PMAS(IFL,1)
50824 C...UI -> D CHI1+,CHI2+
50825         ELSE
50826           XMFP=PMAS(IFL-1,1)
50827           XMF =PMAS(IFL,1)
50828         ENDIF
50829         XMJ=SMW(IX)
50830         AXMJ=ABS(XMJ)
50831         IF(XMI.GE.AXMJ+XMFP) THEN
50832           XMA2=XMJ**2
50833           XMB2=XMFP**2
50834           IF(IDU.EQ.2) THEN
50835             IF(IFL.EQ.6) THEN
50836               XMFP=XMBOT
50837               XMF =XMTOP
50838             ELSEIF(IFL.LT.6) THEN
50839               XMF=0D0
50840               XMFP=0D0
50841             ENDIF
50842             CBL=VMIXC(IX,1)
50843             CAL=-XMFP*UMIXC(IX,2)/SR2/XMW/CBETA
50844             CBR=-XMF*VMIXC(IX,2)/SR2/XMW/SBETA
50845             CAR=0D0
50846           ELSE
50847             IF(IFL.EQ.5) THEN
50848               XMF =XMBOT
50849               XMFP=XMTOP
50850             ELSEIF(IFL.LT.5) THEN
50851               XMF=0D0
50852               XMFP=0D0
50853             ENDIF
50854             CBL=UMIXC(IX,1)
50855             CAL=-XMFP*VMIXC(IX,2)/SR2/XMW/SBETA
50856             CBR=-XMF*UMIXC(IX,2)/SR2/XMW/CBETA
50857             CAR=0D0
50858           ENDIF
50859  
50860           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
50861           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
50862           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
50863           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
50864           CAL=CALP
50865           CBL=CBLP
50866           CAR=CARP
50867           CBR=CBRP
50868  
50869 C...F1 -> F` CHI
50870           IF(ILR.EQ.1) THEN
50871             CA=CAL
50872             CB=CBL
50873 C...F2 -> F` CHI
50874           ELSE
50875             CA=CAR
50876             CB=CBR
50877           ENDIF
50878           LKNT=LKNT+1
50879           XL=PYLAMF(XMI2,XMA2,XMB2)
50880 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
50881           XLAM(LKNT)=2D0*C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
50882      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMFP)
50883           IDLAM(LKNT,3)=0
50884           IF(IDU.EQ.1) THEN
50885             IDLAM(LKNT,1)=-KFCCHI(IX)
50886             IDLAM(LKNT,2)=IFL+1
50887           ELSE
50888             IDLAM(LKNT,1)=KFCCHI(IX)
50889             IDLAM(LKNT,2)=IFL-1
50890           ENDIF
50891         ENDIF
50892   140 CONTINUE
50893  
50894 C...NEUTRAL DECAYS
50895       DO 150 IX=1,4
50896 C...DI -> D CHI10
50897         XMF=PMAS(IFL,1)
50898         XMJ=SMZ(IX)
50899         AXMJ=ABS(XMJ)
50900         IF(XMI.GE.AXMJ+XMF) THEN
50901           XMA2=XMJ**2
50902           XMB2=XMF**2
50903           IF(IDU.EQ.1) THEN
50904             IF(IFL.EQ.5) THEN
50905               XMF=XMBOT
50906             ELSEIF(IFL.LT.5) THEN
50907               XMF=0D0
50908             ENDIF
50909             CBL=-ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI+1)
50910             CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
50911             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
50912             CBR=CAL
50913           ELSE
50914             IF(IFL.EQ.6) THEN
50915               XMF=XMTOP
50916             ELSEIF(IFL.LT.5) THEN
50917               XMF=0D0
50918             ENDIF
50919             CBL=ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-1)
50920             CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
50921             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
50922             CBR=CAL
50923           ENDIF
50924  
50925           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
50926           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
50927           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
50928           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
50929           CAL=CALP
50930           CBL=CBLP
50931           CAR=CARP
50932           CBR=CBRP
50933  
50934 C...F1 -> F CHI
50935           IF(ILR.EQ.1) THEN
50936             CA=CAL
50937             CB=CBL
50938 C...F2 -> F CHI
50939           ELSE
50940             CA=CAR
50941             CB=CBR
50942           ENDIF
50943           LKNT=LKNT+1
50944           XL=PYLAMF(XMI2,XMA2,XMB2)
50945 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
50946           XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
50947      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMF)
50948           IDLAM(LKNT,1)=KFNCHI(IX)
50949           IDLAM(LKNT,2)=IFL
50950           IDLAM(LKNT,3)=0
50951         ENDIF
50952   150 CONTINUE
50953  
50954 C...2-BODY DECAYS TO SM GAUGE AND HIGGS BOSONS
50955 C...IG=23,25,35,36
50956       DO 160 II=1,4
50957         IG=IGG(II)
50958         IF(ILR.EQ.1) GOTO 160
50959         XMB=PMAS(IG,1)
50960         XMSF1=PMAS(PYCOMP(KFIN-KSUSY1),1)
50961         IF(XMI.LT.XMSF1+XMB) GOTO 160
50962         IF(IG.EQ.23) THEN
50963           BL=-SIGN(.5D0,EI)/CW+EI*XW/CW
50964           BR=EI*XW/CW
50965           BLR=0D0
50966         ELSEIF(IG.EQ.25) THEN
50967           IF(IFL.EQ.5) THEN
50968             XMF=XMBOT
50969           ELSEIF(IFL.EQ.6) THEN
50970             XMF=XMTOP
50971           ELSEIF(IFL.LT.5) THEN
50972             XMF=0D0
50973           ELSE
50974             XMF=PMAS(IFL,1)
50975           ENDIF
50976           IF(IDU.EQ.2) THEN
50977             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
50978      &      XMF**2/XMW*COSA/SBETA
50979             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
50980      &      XMF**2/XMW*COSA/SBETA
50981           ELSE
50982             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
50983      &      XMF**2/XMW*(-SINA)/CBETA
50984             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
50985      &      XMF**2/XMW*(-SINA)/CBETA
50986           ENDIF
50987           IF(IFL.EQ.5) THEN
50988             AT=ATRIB
50989           ELSEIF(IFL.EQ.6) THEN
50990             AT=ATRIT
50991           ELSEIF(IFL.EQ.15) THEN
50992             AT=ATRIL
50993           ELSE
50994             AT=0D0
50995           ENDIF
50996 C.........need to complexify
50997           IF(IDU.EQ.2) THEN
50998             GHLR=XMF/2D0/XMW/SBETA*(-XMU*SINA+
50999      &      AT*COSA)
51000           ELSE
51001             GHLR=XMF/2D0/XMW/CBETA*(XMU*COSA-
51002      &      AT*SINA)
51003           ENDIF
51004           BL=GHLL
51005           BR=GHRR
51006           BLR=-GHLR
51007         ELSEIF(IG.EQ.35) THEN
51008           IF(IFL.EQ.5) THEN
51009             XMF=XMBOT
51010           ELSEIF(IFL.EQ.6) THEN
51011             XMF=XMTOP
51012           ELSEIF(IFL.LT.5) THEN
51013             XMF=0D0
51014           ELSE
51015             XMF=PMAS(IFL,1)
51016           ENDIF
51017           IF(IDU.EQ.2) THEN
51018             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
51019      &      XMF**2/XMW*SINA/SBETA
51020             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
51021      &      XMF**2/XMW*SINA/SBETA
51022           ELSE
51023             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
51024      &      XMF**2/XMW*COSA/CBETA
51025             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
51026      &      XMF**2/XMW*COSA/CBETA
51027           ENDIF
51028           IF(IFL.EQ.5) THEN
51029             AT=ATRIB
51030           ELSEIF(IFL.EQ.6) THEN
51031             AT=ATRIT
51032           ELSEIF(IFL.EQ.15) THEN
51033             AT=ATRIL
51034           ELSE
51035             AT=0D0
51036           ENDIF
51037 C.........Need to complexify
51038           IF(IDU.EQ.2) THEN
51039             GHLR=XMF/2D0/XMW/SBETA*(XMU*COSA+
51040      &      AT*SINA)
51041           ELSE
51042             GHLR=XMF/2D0/XMW/CBETA*(XMU*SINA+
51043      &      AT*COSA)
51044           ENDIF
51045           BL=GHLL
51046           BR=GHRR
51047           BLR=GHLR
51048         ELSEIF(IG.EQ.36) THEN
51049           GHLL=0D0
51050           GHRR=0D0
51051           IF(IFL.EQ.5) THEN
51052             XMF=XMBOT
51053           ELSEIF(IFL.EQ.6) THEN
51054             XMF=XMTOP
51055           ELSEIF(IFL.LT.5) THEN
51056             XMF=0D0
51057           ELSE
51058             XMF=PMAS(IFL,1)
51059           ENDIF
51060           IF(IFL.EQ.5) THEN
51061             AT=ATRIB
51062           ELSEIF(IFL.EQ.6) THEN
51063             AT=ATRIT
51064           ELSEIF(IFL.EQ.15) THEN
51065             AT=ATRIL
51066           ELSE
51067             AT=0D0
51068           ENDIF
51069 C.........Need to complexify
51070           IF(IDU.EQ.2) THEN
51071             GHLR=XMF/2D0/XMW*(-XMU+AT/TANB)
51072           ELSE
51073             GHLR=XMF/2D0/XMW/(-XMU+AT*TANB)
51074           ENDIF
51075           BL=GHLL
51076           BR=GHRR
51077           BLR=GHLR
51078         ENDIF
51079         AL=SFMIX(IFL,1)*SFMIX(IFL,3)*BL+
51080      &  SFMIX(IFL,2)*SFMIX(IFL,4)*BR+
51081      &  (SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,3)*SFMIX(IFL,2))*BLR
51082         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
51083         LKNT=LKNT+1
51084         IF(IG.EQ.23) THEN
51085           XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
51086         ELSE
51087           XLAM(LKNT)=C1/4D0/XMI3*SQRT(XL)*AL**2
51088         ENDIF
51089         IDLAM(LKNT,3)=0
51090         IDLAM(LKNT,1)=KFIN-KSUSY1
51091         IDLAM(LKNT,2)=IG
51092   160 CONTINUE
51093  
51094 C...SF -> SF' + W
51095       XMB=PMAS(24,1)
51096       IF(MOD(IFL,2).EQ.0) THEN
51097         KF1=KSUSY1+IFL-1
51098       ELSE
51099         KF1=KSUSY1+IFL+1
51100       ENDIF
51101       KF2=KF1+KSUSY1
51102       XMSF1=PMAS(PYCOMP(KF1),1)
51103       XMSF2=PMAS(PYCOMP(KF2),1)
51104       IF(XMI.GT.XMB+XMSF1) THEN
51105         IF(MOD(IFL,2).EQ.0) THEN
51106           IF(ILR.EQ.1) THEN
51107             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,1)
51108           ELSE
51109             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,1)
51110           ENDIF
51111         ELSE
51112           IF(ILR.EQ.1) THEN
51113             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,1)
51114           ELSE
51115             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,1)
51116           ENDIF
51117         ENDIF
51118         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
51119         LKNT=LKNT+1
51120         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
51121         IDLAM(LKNT,3)=0
51122         IDLAM(LKNT,1)=KF1
51123         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
51124       ENDIF
51125       IF(XMI.GT.XMB+XMSF2) THEN
51126         IF(MOD(IFL,2).EQ.0) THEN
51127           IF(ILR.EQ.1) THEN
51128             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,3)
51129           ELSE
51130             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,3)
51131           ENDIF
51132         ELSE
51133           IF(ILR.EQ.1) THEN
51134             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,3)
51135           ELSE
51136             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,3)
51137           ENDIF
51138         ENDIF
51139         XL=PYLAMF(XMI2,XMSF2**2,XMB**2)
51140         LKNT=LKNT+1
51141         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
51142         IDLAM(LKNT,3)=0
51143         IDLAM(LKNT,1)=KF2
51144         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
51145       ENDIF
51146  
51147 C...SF -> SF' + HC
51148       XMB=PMAS(37,1)
51149       IF(MOD(IFL,2).EQ.0) THEN
51150         KF1=KSUSY1+IFL-1
51151       ELSE
51152         KF1=KSUSY1+IFL+1
51153       ENDIF
51154       KF2=KF1+KSUSY1
51155       XMSF1=PMAS(PYCOMP(KF1),1)
51156       XMSF2=PMAS(PYCOMP(KF2),1)
51157       IF(XMI.GT.XMB+XMSF1) THEN
51158         XMF=0D0
51159         XMFP=0D0
51160         AT=0D0
51161         AB=0D0
51162         IF(MOD(IFL,2).EQ.0) THEN
51163 C...T1-> B1 HC
51164           IF(ILR.EQ.1) THEN
51165             CH1=-SFMIX(IFL,1)*SFMIX(IFL-1,1)
51166             CH2= SFMIX(IFL,2)*SFMIX(IFL-1,2)
51167             CH3=-SFMIX(IFL,1)*SFMIX(IFL-1,2)
51168             CH4=-SFMIX(IFL,2)*SFMIX(IFL-1,1)
51169 C...T2-> B1 HC
51170           ELSE
51171             CH1= SFMIX(IFL,3)*SFMIX(IFL-1,1)
51172             CH2=-SFMIX(IFL,4)*SFMIX(IFL-1,2)
51173             CH3= SFMIX(IFL,3)*SFMIX(IFL-1,2)
51174             CH4= SFMIX(IFL,4)*SFMIX(IFL-1,1)
51175           ENDIF
51176           IF(IFL.EQ.6) THEN
51177             XMF=XMTOP
51178             XMFP=XMBOT
51179             AT=ATRIT
51180             AB=ATRIB
51181           ENDIF
51182         ELSE
51183 C...B1 -> T1 HC
51184           IF(ILR.EQ.1) THEN
51185             CH1=-SFMIX(IFL+1,1)*SFMIX(IFL,1)
51186             CH2= SFMIX(IFL+1,2)*SFMIX(IFL,2)
51187             CH3=-SFMIX(IFL+1,1)*SFMIX(IFL,2)
51188             CH4=-SFMIX(IFL+1,2)*SFMIX(IFL,1)
51189 C...B2-> T1 HC
51190           ELSE
51191             CH1= SFMIX(IFL,3)*SFMIX(IFL+1,1)
51192             CH2=-SFMIX(IFL,4)*SFMIX(IFL+1,2)
51193             CH3= SFMIX(IFL,4)*SFMIX(IFL+1,1)
51194             CH4= SFMIX(IFL,3)*SFMIX(IFL+1,2)
51195           ENDIF
51196           IF(IFL.EQ.5) THEN
51197             XMF=XMTOP
51198             XMFP=XMBOT
51199             AT=ATRIT
51200             AB=ATRIB
51201           ENDIF
51202         ENDIF
51203         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
51204         LKNT=LKNT+1
51205 C.......Need to complexify
51206         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
51207      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
51208      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
51209         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
51210         IDLAM(LKNT,3)=0
51211         IDLAM(LKNT,1)=KF1
51212         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
51213       ENDIF
51214       IF(XMI.GT.XMB+XMSF2) THEN
51215         XMF=0D0
51216         XMFP=0D0
51217         AT=0D0
51218         AB=0D0
51219         IF(MOD(IFL,2).EQ.0) THEN
51220 C...T1-> B2 HC
51221           IF(ILR.EQ.1) THEN
51222             CH1= SFMIX(IFL-1,3)*SFMIX(IFL,1)
51223             CH2=-SFMIX(IFL-1,4)*SFMIX(IFL,2)
51224             CH3= SFMIX(IFL-1,4)*SFMIX(IFL,1)
51225             CH4= SFMIX(IFL-1,3)*SFMIX(IFL,2)
51226 C...T2-> B2 HC
51227           ELSE
51228             CH1= -SFMIX(IFL,3)*SFMIX(IFL-1,3)
51229             CH2= SFMIX(IFL,4)*SFMIX(IFL-1,4)
51230             CH3= -SFMIX(IFL,3)*SFMIX(IFL-1,4)
51231             CH4= -SFMIX(IFL,4)*SFMIX(IFL-1,3)
51232           ENDIF
51233           IF(IFL.EQ.6) THEN
51234             XMF=XMTOP
51235             XMFP=XMBOT
51236             AT=ATRIT
51237             AB=ATRIB
51238           ENDIF
51239         ELSE
51240 C...B1 -> T2 HC
51241           IF(ILR.EQ.1) THEN
51242             CH1= SFMIX(IFL+1,3)*SFMIX(IFL,1)
51243             CH2=-SFMIX(IFL+1,4)*SFMIX(IFL,2)
51244             CH3= SFMIX(IFL+1,3)*SFMIX(IFL,2)
51245             CH4= SFMIX(IFL+1,4)*SFMIX(IFL,1)
51246 C...B2-> T2 HC
51247           ELSE
51248             CH1= -SFMIX(IFL+1,3)*SFMIX(IFL,3)
51249             CH2= SFMIX(IFL+1,4)*SFMIX(IFL,4)
51250             CH3= -SFMIX(IFL+1,3)*SFMIX(IFL,4)
51251             CH4= -SFMIX(IFL+1,4)*SFMIX(IFL,3)
51252           ENDIF
51253           IF(IFL.EQ.5) THEN
51254             XMF=XMTOP
51255             XMFP=XMBOT
51256             AT=ATRIT
51257             AB=ATRIB
51258           ENDIF
51259         ENDIF
51260         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
51261         LKNT=LKNT+1
51262 C.......Need to complexify
51263         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
51264      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
51265      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
51266         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
51267         IDLAM(LKNT,3)=0
51268         IDLAM(LKNT,1)=KF2
51269         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
51270       ENDIF
51271  
51272 C...2-BODY DECAYS OF SQUARK -> QUARK GLUINO
51273  
51274       IF(IFL.LE.6) THEN
51275         XMFP=0D0
51276         XMF=0D0
51277         IF(IFL.EQ.6) XMF=PMAS(6,1)
51278         IF(IFL.EQ.5) XMF=PMAS(5,1)
51279         XMJ=PMAS(PYCOMP(KSUSY1+21),1)
51280         AXMJ=ABS(XMJ)
51281         IF(XMI.GE.AXMJ+XMF) THEN
51282           AL=-SFMIX(IFL,3)
51283           BL=SFMIX(IFL,1)
51284           AR=-SFMIX(IFL,4)
51285           BR=SFMIX(IFL,2)
51286 C...F1 -> F CHI
51287           IF(ILR.EQ.1) THEN
51288             XCA=AL
51289             XCB=BL
51290 C...F2 -> F CHI
51291           ELSE
51292             XCA=AR
51293             XCB=BR
51294           ENDIF
51295           LKNT=LKNT+1
51296           XMA2=XMJ**2
51297           XMB2=XMF**2
51298           XL=PYLAMF(XMI2,XMA2,XMB2)
51299           XLAM(LKNT)=4D0/3D0*AS/2D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
51300      &    (XCA**2+XCB**2)+4D0*XCA*XCB*XMJ*XMF)
51301           IDLAM(LKNT,1)=KSUSY1+21
51302           IDLAM(LKNT,2)=IFL
51303           IDLAM(LKNT,3)=0
51304         ENDIF
51305       ENDIF
51306  
51307 C...IF NOTHING ELSE FOR T1, THEN T1* -> C+CHI0
51308       IF(KFIN.EQ.KSUSY1+6.AND.PMAS(KCIN,1).GT.
51309      &PMAS(PYCOMP(KSUSY1+22),1)+PMAS(4,1)) THEN
51310 C...THIS IS A BACK-OF-THE-ENVELOPE ESTIMATE
51311 C...M = 1/(16PI**2)G**3 = G*2/(4PI) G/(4PI) = C1 * G/(4PI)
51312 C...M*M = C1**2 * G**2/(16PI**2)
51313 C...G = 1/(8PI)P/MI**2 * M*M = C1**3/(32PI**2)*LAM/(2*MI**3)
51314         LKNT=LKNT+1
51315         XL=PYLAMF(XMI2,0D0,PMAS(PYCOMP(KSUSY1+22),1)**2)
51316         XLAM(LKNT)=C1**3/64D0/PI**2/XMI3*SQRT(XL)
51317         IF(XLAM(LKNT).EQ.0) XLAM(LKNT)=1D-3
51318         IDLAM(LKNT,1)=KSUSY1+22
51319         IDLAM(LKNT,2)=4
51320         IDLAM(LKNT,3)=0
51321       ENDIF
51322  
51323 C...R-violating sfermion decays (SKANDS).
51324       CALL PYRVSF(KFIN,XLAM,IDLAM,LKNT)
51325  
51326       IKNT=LKNT
51327       XLAM(0)=0D0
51328       DO 170 I=1,IKNT
51329         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
51330         XLAM(0)=XLAM(0)+XLAM(I)
51331   170 CONTINUE
51332       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-3
51333  
51334       RETURN
51335       END
51336  
51337 C*********************************************************************
51338  
51339 C...PYGLUI
51340 C...Calculates gluino decay modes.
51341  
51342       SUBROUTINE PYGLUI(KFIN,XLAM,IDLAM,IKNT)
51343  
51344 C...Double precision and integer declarations.
51345       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
51346       IMPLICIT INTEGER(I-N)
51347       INTEGER PYK,PYCHGE,PYCOMP
51348 C...Parameter statement to help give large particle numbers.
51349       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
51350      &KEXCIT=4000000,KDIMEN=5000000)
51351 C...Commonblocks.
51352       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
51353       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
51354       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
51355       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
51356      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
51357 CC     &SFMIX(16,4),
51358 C      COMMON/PYINTS/XXM(20)
51359       COMPLEX*16 CXC
51360       COMMON/PYINTC/XXC(10),CXC(8)
51361       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
51362  
51363 C...Local variables
51364       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
51365       DOUBLE PRECISION XMI,XMJ,XMF,AXMJ,AXMI
51366       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
51367       DOUBLE PRECISION PYLAMF,XL
51368       DOUBLE PRECISION TANW,XW,AEM,C1,AS,S12MAX,S12MIN
51369       DOUBLE PRECISION CA,CB,AL,AR,BL,BR
51370       DOUBLE PRECISION XLAM(0:400)
51371       INTEGER IDLAM(400,3)
51372       INTEGER LKNT,IX,ILR,I,IKNT,IFL
51373       DOUBLE PRECISION SR2
51374       DOUBLE PRECISION GAM
51375       DOUBLE PRECISION PYALEM,PI,PYALPS,EI,T3I
51376       EXTERNAL PYGAUS,PYXXZ6
51377       DOUBLE PRECISION PYGAUS,PYXXZ6
51378       DOUBLE PRECISION PREC
51379       INTEGER KFNCHI(4),KFCCHI(2)
51380       DATA PI/3.141592654D0/
51381       DATA SR2/1.4142136D0/
51382       DATA PREC/1D-2/
51383       DATA KFNCHI/1000022,1000023,1000025,1000035/
51384       DATA KFCCHI/1000024,1000037/
51385  
51386 C...COUNT THE NUMBER OF DECAY MODES
51387       LKNT=0
51388       IF(KFIN.NE.KSUSY1+21) RETURN
51389       KCIN=PYCOMP(KFIN)
51390  
51391       XW=PARU(102)
51392       TANW = SQRT(XW/(1D0-XW))
51393  
51394       XMI=PMAS(KCIN,1)
51395       AXMI=ABS(XMI)
51396       XMI2=XMI**2
51397       AEM=PYALEM(XMI2)
51398       AS =PYALPS(XMI2)
51399       C1=AEM/XW
51400       XMI3=AXMI**3
51401  
51402       XMI=SIGN(XMI,RMSS(3))
51403  
51404 C...2-BODY DECAYS OF GLUINO -> GRAVITINO GLUON
51405  
51406       IF(IMSS(11).EQ.1) THEN
51407         XMP=RMSS(29)
51408         IDG=39+KSUSY1
51409         XMGR=PMAS(PYCOMP(IDG),1)
51410         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
51411         IF(AXMI.GT.XMGR) THEN
51412           LKNT=LKNT+1
51413           IDLAM(LKNT,1)=IDG
51414           IDLAM(LKNT,2)=21
51415           IDLAM(LKNT,3)=0
51416           XLAM(LKNT)=XFAC
51417         ENDIF
51418       ENDIF
51419  
51420 C...2-BODY DECAYS OF GLUINO -> QUARK SQUARK
51421  
51422       DO 110 IFL=1,6
51423         DO 100 ILR=1,2
51424           XMJ=PMAS(PYCOMP(ILR*KSUSY1+IFL),1)
51425           AXMJ=ABS(XMJ)
51426           XMF=PMAS(IFL,1)
51427           IF(AXMI.GE.AXMJ+XMF) THEN
51428 C...Minus sign difference from gluino-quark-squark feynman rules
51429             AL=SFMIX(IFL,1)
51430             BL=-SFMIX(IFL,3)
51431             AR=SFMIX(IFL,2)
51432             BR=-SFMIX(IFL,4)
51433 C...F1 -> F CHI
51434             IF(ILR.EQ.1) THEN
51435               CA=AL
51436               CB=BL
51437 C...F2 -> F CHI
51438             ELSE
51439               CA=AR
51440               CB=BR
51441             ENDIF
51442             LKNT=LKNT+1
51443             XMA2=XMJ**2
51444             XMB2=XMF**2
51445             XL=PYLAMF(XMI2,XMA2,XMB2)
51446             XLAM(LKNT)=4D0/8D0*AS/4D0/XMI3*SQRT(XL)*((XMI2+XMB2-XMA2)*
51447      &      (CA**2+CB**2)-4D0*CA*CB*XMI*XMF)
51448             IDLAM(LKNT,1)=ILR*KSUSY1+IFL
51449             IDLAM(LKNT,2)=-IFL
51450             IDLAM(LKNT,3)=0
51451             LKNT=LKNT+1
51452             XLAM(LKNT)=XLAM(LKNT-1)
51453             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51454             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51455             IDLAM(LKNT,3)=0
51456           ENDIF
51457   100   CONTINUE
51458   110 CONTINUE
51459  
51460 C...3-BODY DECAYS TO GAUGINO FERMION-FERMION
51461 C...GLUINO -> NI Q QBAR
51462       DO 170 IX=1,4
51463         XMJ=SMZ(IX)
51464         AXMJ=ABS(XMJ)
51465         IF(AXMI.GE.AXMJ) THEN
51466           DO 120 I=1,4
51467             ZMIXC(IX,I)=DCMPLX(ZMIX(IX,I),ZMIXI(IX,I))
51468   120     CONTINUE
51469           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))/SR2
51470           ORPP=DCONJG(OLPP)
51471           XXC(1)=0D0
51472           XXC(2)=XMJ
51473           XXC(3)=0D0
51474           XXC(4)=XMI
51475           IA=1
51476           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
51477           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
51478           XXC(7)=XXC(5)
51479           XXC(8)=XXC(6)
51480           XXC(9)=1D6
51481           XXC(10)=0D0
51482           EI=KCHG(IA,1)/3D0
51483           T3I=SIGN(1D0,EI+1D-6)/2D0
51484           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
51485           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
51486           CXC(1)=0D0
51487           CXC(2)=-GLIJ
51488           CXC(3)=0D0
51489           CXC(4)=DCONJG(GLIJ)
51490           CXC(5)=0D0
51491           CXC(6)=GRIJ
51492           CXC(7)=0D0
51493           CXC(8)=-DCONJG(GRIJ)
51494           S12MIN=0D0
51495           S12MAX=(AXMI-AXMJ)**2
51496           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 130
51497           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
51498             LKNT=LKNT+1
51499             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
51500      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
51501             IDLAM(LKNT,1)=KFNCHI(IX)
51502             IDLAM(LKNT,2)=1
51503             IDLAM(LKNT,3)=-1
51504           ENDIF
51505           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
51506             LKNT=LKNT+1
51507             XLAM(LKNT)=XLAM(LKNT-1)
51508             IDLAM(LKNT,1)=KFNCHI(IX)
51509             IDLAM(LKNT,2)=3
51510             IDLAM(LKNT,3)=-3
51511           ENDIF
51512   130     CONTINUE
51513           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
51514             PMOLD=PMAS(PYCOMP(KSUSY1+5),1)
51515             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+5),1)+PMAS(5,1)) THEN
51516               GOTO 140
51517             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+5),1)+PMAS(5,1)) THEN
51518               PMAS(PYCOMP(KSUSY1+5),1)=100D0*XMI
51519             ENDIF
51520             CALL PYTBBN(IX,100,-1D0/3D0,XMI,GAM)
51521             LKNT=LKNT+1
51522             XLAM(LKNT)=GAM
51523             IDLAM(LKNT,1)=KFNCHI(IX)
51524             IDLAM(LKNT,2)=5
51525             IDLAM(LKNT,3)=-5
51526             PMAS(PYCOMP(KSUSY1+5),1)=PMOLD
51527           ENDIF
51528 C...U-TYPE QUARKS
51529   140     CONTINUE
51530           IA=2
51531           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
51532           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
51533 C        IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 290
51534           XXC(7)=XXC(5)
51535           XXC(8)=XXC(6)
51536           EI=KCHG(IA,1)/3D0
51537           T3I=SIGN(1D0,EI+1D-6)/2D0
51538           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
51539           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
51540           CXC(2)=-GLIJ
51541           CXC(4)=DCONJG(GLIJ)
51542           CXC(6)=GRIJ
51543           CXC(8)=-DCONJG(GRIJ)
51544           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 150
51545           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
51546             LKNT=LKNT+1
51547             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
51548      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
51549             IDLAM(LKNT,1)=KFNCHI(IX)
51550             IDLAM(LKNT,2)=2
51551             IDLAM(LKNT,3)=-2
51552           ENDIF
51553           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
51554             LKNT=LKNT+1
51555             XLAM(LKNT)=XLAM(LKNT-1)
51556             IDLAM(LKNT,1)=KFNCHI(IX)
51557             IDLAM(LKNT,2)=4
51558             IDLAM(LKNT,3)=-4
51559           ENDIF
51560   150     CONTINUE
51561 C...INCLUDE THE DECAY GLUINO -> NJ + T + T~
51562 C...IF THE DECAY GLUINO -> ST + T CANNOT OCCUR
51563           XMF=PMAS(6,1)
51564           IF(AXMI.GE.AXMJ+2D0*XMF) THEN
51565             PMOLD=PMAS(PYCOMP(KSUSY1+6),1)
51566             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+6),1)+XMF) THEN
51567               GOTO 160
51568             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+6),1)+XMF) THEN
51569               PMAS(PYCOMP(KSUSY1+6),1)=100D0*XMI
51570             ENDIF
51571             CALL PYTBBN(IX,100,2D0/3D0,XMI,GAM)
51572             LKNT=LKNT+1
51573             XLAM(LKNT)=GAM
51574             IDLAM(LKNT,1)=KFNCHI(IX)
51575             IDLAM(LKNT,2)=6
51576             IDLAM(LKNT,3)=-6
51577             PMAS(PYCOMP(KSUSY1+6),1)=PMOLD
51578           ENDIF
51579   160     CONTINUE
51580         ENDIF
51581   170 CONTINUE
51582  
51583 C...GLUINO -> CI Q QBAR'
51584       DO 210 IX=1,2
51585         XMJ=SMW(IX)
51586         AXMJ=ABS(XMJ)
51587         IF(AXMI.GE.AXMJ) THEN
51588           DO 180 I=1,2
51589             VMIXC(IX,I)=DCMPLX(VMIX(IX,I),VMIXI(IX,I))
51590             UMIXC(IX,I)=DCMPLX(UMIX(IX,I),UMIXI(IX,I))
51591   180     CONTINUE
51592           S12MIN=0D0
51593           S12MAX=(AXMI-AXMJ)**2
51594           XXC(1)=0D0
51595           XXC(2)=XMJ
51596           XXC(3)=0D0
51597           XXC(4)=XMI
51598           XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
51599           XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
51600           XXC(9)=1D6
51601           XXC(10)=0D0
51602           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
51603           ORPP=DCONJG(OLPP)
51604           CXC(1)=DCMPLX(0D0,0D0)
51605           CXC(3)=DCMPLX(0D0,0D0)
51606           CXC(5)=DCMPLX(0D0,0D0)
51607           CXC(7)=DCMPLX(0D0,0D0)
51608           CXC(2)=UMIXC(IX,1)*OLPP/SR2
51609           CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
51610           CXC(6)=DCMPLX(0D0,0D0)
51611           CXC(8)=DCMPLX(0D0,0D0)
51612           IF(XXC(5).LT.AXMI) THEN
51613             XXC(5)=1D6
51614           ELSEIF(XXC(6).LT.AXMI) THEN
51615             XXC(6)=1D6
51616           ENDIF
51617           XXC(7)=XXC(6)
51618           XXC(8)=XXC(5)
51619           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 190
51620           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
51621             LKNT=LKNT+1
51622             XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
51623      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51624             IDLAM(LKNT,1)=KFCCHI(IX)
51625             IDLAM(LKNT,2)=1
51626             IDLAM(LKNT,3)=-2
51627             LKNT=LKNT+1
51628             XLAM(LKNT)=XLAM(LKNT-1)
51629             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51630             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51631             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51632           ENDIF
51633           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
51634             LKNT=LKNT+1
51635             XLAM(LKNT)=XLAM(LKNT-1)
51636             IDLAM(LKNT,1)=KFCCHI(IX)
51637             IDLAM(LKNT,2)=3
51638             IDLAM(LKNT,3)=-4
51639             LKNT=LKNT+1
51640             XLAM(LKNT)=XLAM(LKNT-1)
51641             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51642             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51643             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51644           ENDIF
51645   190     CONTINUE
51646  
51647           XMF=PMAS(6,1)
51648           XMFP=PMAS(5,1)
51649           IF(AXMI.GE.AXMJ+XMF+XMFP) THEN
51650             IF(XMI.GT.MIN(PMAS(PYCOMP(KSUSY1+5),1)+XMFP,
51651      $      PMAS(PYCOMP(KSUSY2+6),1)+XMF)) GOTO 200
51652             PMOLT2=PMAS(PYCOMP(KSUSY2+6),1)
51653             PMOLB2=PMAS(PYCOMP(KSUSY2+5),1)
51654             PMOLT1=PMAS(PYCOMP(KSUSY1+6),1)
51655             PMOLB1=PMAS(PYCOMP(KSUSY1+5),1)
51656             IF(XMI.GT.PMOLT2+XMF) PMAS(PYCOMP(KSUSY2+6),1)=100D0*AXMI
51657             IF(XMI.GT.PMOLT1+XMF) PMAS(PYCOMP(KSUSY1+6),1)=100D0*AXMI
51658             IF(XMI.GT.PMOLB2+XMFP) PMAS(PYCOMP(KSUSY2+5),1)=100D0*AXMI
51659             IF(XMI.GT.PMOLB1+XMFP) PMAS(PYCOMP(KSUSY1+5),1)=100D0*AXMI
51660             CALL PYTBBC(IX,100,XMI,GAM)
51661             LKNT=LKNT+1
51662             XLAM(LKNT)=GAM
51663             IDLAM(LKNT,1)=KFCCHI(IX)
51664             IDLAM(LKNT,2)=5
51665             IDLAM(LKNT,3)=-6
51666             LKNT=LKNT+1
51667             XLAM(LKNT)=XLAM(LKNT-1)
51668             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51669             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51670             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51671             PMAS(PYCOMP(KSUSY2+6),1)=PMOLT2
51672             PMAS(PYCOMP(KSUSY2+5),1)=PMOLB2
51673             PMAS(PYCOMP(KSUSY1+6),1)=PMOLT1
51674             PMAS(PYCOMP(KSUSY1+5),1)=PMOLB1
51675           ENDIF
51676   200     CONTINUE
51677         ENDIF
51678   210 CONTINUE
51679  
51680 C...R-parity violating (3-body) decays.
51681       CALL PYRVGL(KFIN,XLAM,IDLAM,LKNT)
51682  
51683       IKNT=LKNT
51684       XLAM(0)=0D0
51685       DO 220 I=1,IKNT
51686         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
51687         XLAM(0)=XLAM(0)+XLAM(I)
51688   220 CONTINUE
51689       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
51690  
51691       RETURN
51692       END
51693  
51694  
51695 C*********************************************************************
51696  
51697 C...PYTBBN
51698 C...Calculates the three-body decay of gluinos into
51699 C...neutralinos and third generation fermions.
51700  
51701       SUBROUTINE PYTBBN(I,NN,E,XMGLU,GAM)
51702  
51703 C...Double precision and integer declarations.
51704       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
51705       IMPLICIT INTEGER(I-N)
51706       INTEGER PYK,PYCHGE,PYCOMP
51707 C...Parameter statement to help give large particle numbers.
51708       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
51709      &KEXCIT=4000000,KDIMEN=5000000)
51710 C...Commonblocks.
51711       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
51712       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
51713       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
51714       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
51715      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
51716       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
51717  
51718 C...Local variables.
51719       EXTERNAL PYSIMP,PYLAMF
51720       DOUBLE PRECISION PYSIMP,PYLAMF
51721       INTEGER LIN,NN
51722       DOUBLE PRECISION COSD,SIND,COSD2,SIND2,COS2D,SIN2D
51723       DOUBLE PRECISION HL,HR,FL,FR,HL2,HR2,FL2,FR2
51724       DOUBLE PRECISION XMS2(2),XM,XM2,XMG,XMG2,XMR,XMR2
51725       DOUBLE PRECISION SBAR,SMIN,SMAX,XMQA,W,GRS,G(0:6),SUMME(0:100)
51726       DOUBLE PRECISION FF,HH,HFL,HFR,HRFL,HLFR,XMQ4,XM24
51727       DOUBLE PRECISION XLN1,XLN2,B1,B2
51728       DOUBLE PRECISION E,XMGLU,GAM
51729       DOUBLE PRECISION HRB(4),HLB(4),FLB(4),FRB(4)
51730       SAVE HRB,HLB,FLB,FRB
51731       DOUBLE PRECISION ALPHAW,ALPHAS
51732       DOUBLE PRECISION HLT(4),HRT(4),FLT(4),FRT(4)
51733       SAVE HLT,HRT,FLT,FRT
51734       DOUBLE PRECISION AMN(4),AN(4,4),ZN(3)
51735       SAVE AMN,AN,ZN
51736       DOUBLE PRECISION AMBOT,SINC,COSC
51737       DOUBLE PRECISION AMTOP,SINA,COSA
51738       DOUBLE PRECISION SINW,COSW,TANW
51739       DOUBLE PRECISION ROT1(4,4)
51740       LOGICAL IFIRST
51741       SAVE IFIRST
51742       DATA IFIRST/.TRUE./
51743  
51744       TANB=RMSS(5)
51745       SINB=TANB/SQRT(1D0+TANB**2)
51746       COSB=SINB/TANB
51747       XW=PARU(102)
51748       SINW=SQRT(XW)
51749       COSW=SQRT(1D0-XW)
51750       TANW=SINW/COSW
51751       AMW=PMAS(24,1)
51752       COSC=SFMIX(5,1)
51753       SINC=SFMIX(5,3)
51754       COSA=SFMIX(6,1)
51755       SINA=SFMIX(6,3)
51756       AMBOT=PYMRUN(5,XMGLU**2)
51757       AMTOP=PYMRUN(6,XMGLU**2)
51758       W2=SQRT(2D0)
51759       FAKT1=AMBOT/W2/AMW/COSB
51760       FAKT2=AMTOP/W2/AMW/SINB
51761       IF(IFIRST) THEN
51762         DO 110 II=1,4
51763           AMN(II)=SMZ(II)
51764           DO 100 J=1,4
51765             ROT1(II,J)=0D0
51766             AN(II,J)=0D0
51767   100     CONTINUE
51768   110   CONTINUE
51769         ROT1(1,1)=COSW
51770         ROT1(1,2)=-SINW
51771         ROT1(2,1)=-ROT1(1,2)
51772         ROT1(2,2)=ROT1(1,1)
51773         ROT1(3,3)=COSB
51774         ROT1(3,4)=SINB
51775         ROT1(4,3)=-ROT1(3,4)
51776         ROT1(4,4)=ROT1(3,3)
51777         DO 140 II=1,4
51778           DO 130 J=1,4
51779             DO 120 JJ=1,4
51780               AN(II,J)=AN(II,J)+ZMIX(II,JJ)*ROT1(JJ,J)
51781   120       CONTINUE
51782   130     CONTINUE
51783   140   CONTINUE
51784         DO 150 J=1,4
51785           ZN(1)=-FAKT2*(-SINB*AN(J,3)+COSB*AN(J,4))
51786           ZN(2)=-2D0*W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
51787           ZN(3)=-2*W2/3D0*SINW*AN(J,1)-W2*(0.5D0-2D0/3D0*
51788      &    XW)*AN(J,2)/COSW
51789           HRT(J)=ZN(1)*COSA-ZN(3)*SINA
51790           HLT(J)=ZN(1)*COSA+ZN(2)*SINA
51791           FLT(J)=ZN(3)*COSA+ZN(1)*SINA
51792           FRT(J)=ZN(2)*COSA-ZN(1)*SINA
51793 C          FLU(J)=ZN(3)
51794 C          FRU(J)=ZN(2)
51795           ZN(1)=-FAKT1*(COSB*AN(J,3)+SINB*AN(J,4))
51796           ZN(2)=W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
51797           ZN(3)=W2/3D0*SINW*AN(J,1)+W2*(0.5D0-XW/3D0)*AN(J,2)/COSW
51798           HRB(J)=ZN(1)*COSC-ZN(3)*SINC
51799           HLB(J)=ZN(1)*COSC+ZN(2)*SINC
51800           FLB(J)=ZN(3)*COSC+ZN(1)*SINC
51801           FRB(J)=ZN(2)*COSC-ZN(1)*SINC
51802 C          FLD(J)=ZN(3)
51803 C          FRD(J)=ZN(2)
51804   150   CONTINUE
51805 C        AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
51806 C        AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
51807 C        AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
51808 C        AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
51809         IFIRST=.FALSE.
51810       ENDIF
51811  
51812       IF(NINT(3D0*E).EQ.2) THEN
51813         HL=HLT(I)
51814         HR=HRT(I)
51815         FL=FLT(I)
51816         FR=FRT(I)
51817         COSD=SFMIX(6,1)
51818         SIND=SFMIX(6,3)
51819         XMS2(1)=PMAS(PYCOMP(KSUSY1+6),1)**2
51820         XMS2(2)=PMAS(PYCOMP(KSUSY2+6),1)**2
51821         XM=PMAS(6,1)
51822       ELSE
51823         HL=HLB(I)
51824         HR=HRB(I)
51825         FL=FLB(I)
51826         FR=FRB(I)
51827         COSD=SFMIX(5,1)
51828         SIND=SFMIX(5,3)
51829         XMS2(1)=PMAS(PYCOMP(KSUSY1+5),1)**2
51830         XMS2(2)=PMAS(PYCOMP(KSUSY2+5),1)**2
51831         XM=PMAS(5,1)
51832       ENDIF
51833       COSD2=COSD*COSD
51834       SIND2=SIND*SIND
51835       COS2D=COSD2-SIND2
51836       SIN2D=SIND*COSD*2D0
51837       HL2=HL*HL
51838       HR2=HR*HR
51839       FL2=FL*FL
51840       FR2=FR*FR
51841       FF=FL*FR
51842       HH=HL*HR
51843       HFL=HL*FL
51844       HFR=HR*FR
51845       HRFL=HR*FL
51846       HLFR=HL*FR
51847       XM2=XM*XM
51848       XMG=XMGLU
51849       XMG2=XMG*XMG
51850       ALPHAW=PYALEM(XMG2)
51851       ALPHAS=PYALPS(XMG2)
51852       XMR=AMN(I)
51853       XMR2=XMR*XMR
51854       XMQ4=XMG*XM2*XMR
51855       XM24=(XMG2+XM2)*(XM2+XMR2)
51856       SMIN=4D0*XM2
51857       SMAX=(XMG-ABS(XMR))**2
51858       XMQA=XMG2+2D0*XM2+XMR2
51859       DO 170 LIN=1,NN-1
51860         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
51861         GRS=SBAR-XMQA
51862         W=PYLAMF(XMG2,XMR2,SBAR)*(0.25D0-XM2/SBAR)
51863         W=DSQRT(W)
51864         XLN1=LOG(ABS((GRS/2D0+XMS2(1)-W)/(GRS/2D0+XMS2(1)+W)))
51865         XLN2=LOG(ABS((GRS/2D0+XMS2(2)-W)/(GRS/2D0+XMS2(2)+W)))
51866         B1=1D0/(GRS/2D0+XMS2(1)-W)-1D0/(GRS/2D0+XMS2(1)+W)
51867         B2=1D0/(GRS/2D0+XMS2(2)-W)-1D0/(GRS/2D0+XMS2(2)+W)
51868         G(0)=-2D0*(HL2+FL2+HR2+FR2+(HFR-HFL)*SIN2D
51869      &  +2D0*(FF*SIND2-HH*COSD2))*W
51870         G(1)=((HL2+FL2)*(XMQA-2D0*XMS2(1)-2D0*XM*XMG*SIN2D)
51871      &  +4D0*HFL*XM*XMR)*XLN1
51872      &  +((HL2+FL2)*((XMQA-XMS2(1))*XMS2(1)-XM24
51873      &  +2D0*XM*XMG*(XM2+XMR2-XMS2(1))*SIN2D)
51874      &  -4D0*HFL*XMR*XM*(XMG2+XM2-XMS2(1))
51875      &  +8D0*HFL*XMQ4*SIN2D)*B1
51876         G(2)=((HR2+FR2)*(XMQA-2D0*XMS2(2)+2D0*XM*XMG*SIN2D)
51877      &  +4D0*HFR*XMR*XM)*XLN2
51878      &  +((HR2+FR2)*((XMQA-XMS2(2))*XMS2(2)-XM24
51879      &  +2D0*XMG*XM*SIN2D*(XMS2(2)-XM2-XMR2))
51880      &  +4D0*HFR*XM*XMR*(XMS2(2)-XMG2-XM2)
51881      &  -8D0*HFR*XMQ4*SIN2D)*B2
51882         G(3)=(2D0*HFL*SIN2D*(XMS2(1)*(GRS+XMS2(1))+XM2*(SBAR-XMG2-XMR2)
51883      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HL2*SIND2+FL2*COSD2)*SBAR
51884      &  -2D0*XMG*XM*HFL*(SBAR+XMR2-XMG2)
51885      &  +XMR*XM*(HL2+FL2)*SIN2D*(SBAR+XMG2-XMR2)
51886      &  -4D0*XMQ4*(HL2-FL2)*COS2D)/(GRS+2D0*XMS2(1))*XLN1
51887         G(4)=4D0*COS2D*XM*XMG/(XMS2(1)-XMS2(2))*
51888      &  (((HLFR+HRFL)*(XM2+XMR2)+2D0*XM*XMR*(HH+FF))*(XLN1-XLN2)
51889      &  +(HLFR+HRFL)*(XMS2(2)*XLN2-XMS2(1)*XLN1))
51890         G(5)=(2D0*(HH*COSD2-FF*SIND2)
51891      &  *((XMS2(2)*(XMS2(2)+GRS)+XM2*XM2+XMG2*XMR2)*XLN2
51892      &  +(XMS2(1)*(XMS2(1)+GRS)+XM2*XM2+XMG2*XMR2)*XLN1)
51893      &  +XM*((HH-FF)*SIN2D*XMG-(HRFL-HLFR)*XMR)
51894      &  *((GRS+XMS2(1)*2D0)*XLN1-(GRS+XMS2(2)*2D0)*XLN2)
51895      &  +((HRFL-HLFR)*XMR*(SIN2D*XMG*(SBAR-4D0*XM2)
51896      &  +COS2D*XM*(SBAR+XMG2-XMR2))
51897      &  +2D0*(FF*COSD2-HH*SIND2)*XM2*(SBAR-XMG2-XMR2))
51898      &  *(XLN1+XLN2))/(GRS+XMS2(1)+XMS2(2))
51899         G(6)=(-2D0*HFR*SIN2D*(XMS2(2)*(GRS+XMS2(2))+XM2*(SBAR-XMG2-XMR2)
51900      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HR2*SIND2+FR2*COSD2)*SBAR
51901      &  -2D0*XMG*XM*HFR*(SBAR+XMR2-XMG2)
51902      &  -XMR*XM*(HR2+FR2)*SIN2D*(SBAR+XMG2-XMR2)
51903      &  -4D0*XMQ4*(HR2-FR2)*COS2D)/(GRS+2D0*XMS2(2))*XLN2
51904         SUMME(LIN)=0D0
51905         DO 160 J=0,6
51906           SUMME(LIN)=SUMME(LIN)+G(J)
51907   160   CONTINUE
51908   170 CONTINUE
51909       SUMME(0)=0D0
51910       SUMME(NN)=0D0
51911       GAM = ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
51912      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
51913  
51914       RETURN
51915       END
51916  
51917 C*********************************************************************
51918  
51919 C...PYTBBC
51920 C...Calculates the three-body decay of gluinos into
51921 C...charginos and third generation fermions.
51922  
51923       SUBROUTINE PYTBBC(I,NN,XMGLU,GAM)
51924  
51925 C...Double precision and integer declarations.
51926       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
51927       IMPLICIT INTEGER(I-N)
51928       INTEGER PYK,PYCHGE,PYCOMP
51929 C...Parameter statement to help give large particle numbers.
51930       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
51931      &KEXCIT=4000000,KDIMEN=5000000)
51932 C...Commonblocks.
51933       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
51934       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
51935       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
51936       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
51937      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
51938       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
51939  
51940 C...Local variables.
51941       EXTERNAL PYSIMP,PYLAMF
51942       DOUBLE PRECISION PYSIMP,PYLAMF
51943       INTEGER I,NN,LIN
51944       DOUBLE PRECISION XMG,XMG2,XMB,XMB2,XMR,XMR2
51945       DOUBLE PRECISION XMT,XMT2,XMST(4),XMSB(4)
51946       DOUBLE PRECISION ULR(2),VLR(2),XMQ2,XMQ4,AM,W,SBAR,SMIN,SMAX
51947       DOUBLE PRECISION SUMME(0:100),A(4,8)
51948       DOUBLE PRECISION COS2A,SIN2A,COS2C,SIN2C
51949       DOUBLE PRECISION GRS,XMQ3,XMGBTR,XMGTBR,ANT1,ANT2,ANB1,ANB2
51950       DOUBLE PRECISION XMGLU,GAM
51951       DOUBLE PRECISION XX1(2),XX2(2),AAA(2),BBB(2),CCC(2),
51952      &DDD(2),EEE(2),FFF(2)
51953       SAVE XX1,XX2,AAA,BBB,CCC,DDD,EEE,FFF
51954       DOUBLE PRECISION ALPHAW,ALPHAS
51955       DOUBLE PRECISION AMC(2)
51956       SAVE AMC
51957       DOUBLE PRECISION AMBOT,AMSB(2),SINC,COSC
51958       DOUBLE PRECISION AMTOP,AMST(2),SINA,COSA
51959       SAVE AMSB,AMST
51960       LOGICAL IFIRST
51961       SAVE IFIRST
51962       DATA IFIRST/.TRUE./
51963  
51964       TANB=RMSS(5)
51965       SINB=TANB/SQRT(1D0+TANB**2)
51966       COSB=SINB/TANB
51967       XW=PARU(102)
51968       AMW=PMAS(24,1)
51969       COSC=SFMIX(5,1)
51970       SINC=SFMIX(5,3)
51971       COSA=SFMIX(6,1)
51972       SINA=SFMIX(6,3)
51973       AMBOT=PYMRUN(5,XMGLU**2)
51974       AMTOP=PYMRUN(6,XMGLU**2)
51975       W2=SQRT(2D0)
51976       AMW=PMAS(24,1)
51977       FAKT1=AMBOT/W2/AMW/COSB
51978       FAKT2=AMTOP/W2/AMW/SINB
51979       IF(IFIRST) THEN
51980         AMC(1)=SMW(1)
51981         AMC(2)=SMW(2)
51982         DO 100 JJ=1,2
51983           CCC(JJ)=FAKT1*UMIX(JJ,2)*SINC-UMIX(JJ,1)*COSC
51984           EEE(JJ)=FAKT2*VMIX(JJ,2)*COSC
51985           DDD(JJ)=FAKT1*UMIX(JJ,2)*COSC+UMIX(JJ,1)*SINC
51986           FFF(JJ)=FAKT2*VMIX(JJ,2)*SINC
51987           XX1(JJ)=FAKT2*VMIX(JJ,2)*SINA-VMIX(JJ,1)*COSA
51988           AAA(JJ)=FAKT1*UMIX(JJ,2)*COSA
51989           XX2(JJ)=FAKT2*VMIX(JJ,2)*COSA+VMIX(JJ,1)*SINA
51990           BBB(JJ)=FAKT1*UMIX(JJ,2)*SINA
51991   100   CONTINUE
51992         AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
51993         AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
51994         AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
51995         AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
51996         IFIRST=.FALSE.
51997       ENDIF
51998  
51999       ULR(1)=XX1(I)*XX1(I)+AAA(I)*AAA(I)
52000       ULR(2)=XX2(I)*XX2(I)+BBB(I)*BBB(I)
52001       VLR(1)=CCC(I)*CCC(I)+EEE(I)*EEE(I)
52002       VLR(2)=DDD(I)*DDD(I)+FFF(I)*FFF(I)
52003  
52004       COS2A=COSA**2-SINA**2
52005       SIN2A=SINA*COSA*2D0
52006       COS2C=COSC**2-SINC**2
52007       SIN2C=SINC*COSC*2D0
52008  
52009       XMG=XMGLU
52010       XMT=PMAS(6,1)
52011       XMB=PMAS(5,1)
52012       XMR=AMC(I)
52013       XMG2=XMG*XMG
52014       ALPHAW=PYALEM(XMG2)
52015       ALPHAS=PYALPS(XMG2)
52016       XMT2=XMT*XMT
52017       XMB2=XMB*XMB
52018       XMR2=XMR*XMR
52019       XMQ2=XMG2+XMT2+XMB2+XMR2
52020       XMQ4=XMG*XMT*XMB*XMR
52021       XMQ3=XMG2*XMR2+XMT2*XMB2
52022       XMGBTR=(XMG2+XMB2)*(XMT2+XMR2)
52023       XMGTBR=(XMG2+XMT2)*(XMB2+XMR2)
52024  
52025       XMST(1)=AMST(1)*AMST(1)
52026       XMST(2)=AMST(1)*AMST(1)
52027       XMST(3)=AMST(2)*AMST(2)
52028       XMST(4)=AMST(2)*AMST(2)
52029       XMSB(1)=AMSB(1)*AMSB(1)
52030       XMSB(2)=AMSB(2)*AMSB(2)
52031       XMSB(3)=AMSB(1)*AMSB(1)
52032       XMSB(4)=AMSB(2)*AMSB(2)
52033  
52034       A(1,1)=-COSA*SINC*CCC(I)*AAA(I)-SINA*COSC*EEE(I)*XX1(I)
52035       A(1,2)=XMG*XMB*(COSA*COSC*CCC(I)*AAA(I)+SINA*SINC*EEE(I)*XX1(I))
52036       A(1,3)=-XMG*XMR*(COSA*COSC*CCC(I)*XX1(I)+SINA*SINC*EEE(I)*AAA(I))
52037       A(1,4)=XMB*XMR*(COSA*SINC*CCC(I)*XX1(I)+SINA*COSC*EEE(I)*AAA(I))
52038       A(1,5)=XMG*XMT*(COSA*COSC*EEE(I)*XX1(I)+SINA*SINC*CCC(I)*AAA(I))
52039       A(1,6)=-XMT*XMB*(COSA*SINC*EEE(I)*XX1(I)+SINA*COSC*CCC(I)*AAA(I))
52040       A(1,7)=XMT*XMR*(COSA*SINC*EEE(I)*AAA(I)+SINA*COSC*CCC(I)*XX1(I))
52041       A(1,8)=-XMQ4*(COSA*COSC*EEE(I)*AAA(I)+SINA*SINC*CCC(I)*XX1(I))
52042  
52043       A(2,1)=-COSA*COSC*DDD(I)*AAA(I)-SINA*SINC*FFF(I)*XX1(I)
52044       A(2,2)=-XMG*XMB*(COSA*SINC*DDD(I)*AAA(I)+SINA*COSC*FFF(I)*XX1(I))
52045       A(2,3)=XMG*XMR*(COSA*SINC*DDD(I)*XX1(I)+SINA*COSC*FFF(I)*AAA(I))
52046       A(2,4)=XMB*XMR*(COSA*COSC*DDD(I)*XX1(I)+SINA*SINC*FFF(I)*AAA(I))
52047       A(2,5)=XMG*XMT*(COSA*SINC*FFF(I)*XX1(I)+SINA*COSC*DDD(I)*AAA(I))
52048       A(2,6)=XMT*XMB*(COSA*COSC*FFF(I)*XX1(I)+SINA*SINC*DDD(I)*AAA(I))
52049       A(2,7)=-XMT*XMR*(COSA*COSC*FFF(I)*AAA(I)+SINA*SINC*DDD(I)*XX1(I))
52050       A(2,8)=-XMQ4*(COSA*SINC*FFF(I)*AAA(I)+SINA*COSC*DDD(I)*XX1(I))
52051  
52052       A(3,1)=-COSA*COSC*EEE(I)*XX2(I)-SINA*SINC*CCC(I)*BBB(I)
52053       A(3,2)=XMG*XMB*(COSA*SINC*EEE(I)*XX2(I)+SINA*COSC*CCC(I)*BBB(I))
52054       A(3,3)=XMG*XMR*(COSA*SINC*EEE(I)*BBB(I)+SINA*COSC*CCC(I)*XX2(I))
52055       A(3,4)=-XMB*XMR*(COSA*COSC*EEE(I)*BBB(I)+SINA*SINC*CCC(I)*XX2(I))
52056       A(3,5)=-XMG*XMT*(COSA*SINC*CCC(I)*BBB(I)+SINA*COSC*EEE(I)*XX2(I))
52057       A(3,6)=XMT*XMB*(COSA*COSC*CCC(I)*BBB(I)+SINA*SINC*EEE(I)*XX2(I))
52058       A(3,7)=XMT*XMR*(COSA*COSC*CCC(I)*XX2(I)+SINA*SINC*EEE(I)*BBB(I))
52059       A(3,8)=-XMQ4*(COSA*SINC*CCC(I)*XX2(I)+SINA*COSC*EEE(I)*BBB(I))
52060  
52061       A(4,1)=-COSA*SINC*FFF(I)*XX2(I)-SINA*COSC*DDD(I)*BBB(I)
52062       A(4,2)=-XMG*XMB*(COSA*COSC*FFF(I)*XX2(I)+SINA*SINC*DDD(I)*BBB(I))
52063       A(4,3)=-XMG*XMR*(COSA*COSC*FFF(I)*BBB(I)+SINA*SINC*DDD(I)*XX2(I))
52064       A(4,4)=-XMB*XMR*(COSA*SINC*FFF(I)*BBB(I)+SINA*COSC*DDD(I)*XX2(I))
52065       A(4,5)=-XMG*XMT*(COSA*COSC*DDD(I)*BBB(I)+SINA*SINC*FFF(I)*XX2(I))
52066       A(4,6)=-XMT*XMB*(COSA*SINC*DDD(I)*BBB(I)+SINA*COSC*FFF(I)*XX2(I))
52067       A(4,7)=-XMT*XMR*(COSA*SINC*DDD(I)*XX2(I)+SINA*COSC*FFF(I)*BBB(I))
52068       A(4,8)=-XMQ4*(COSA*COSC*DDD(I)*XX2(I)+SINA*SINC*FFF(I)*BBB(I))
52069  
52070       SMAX=(XMG-ABS(XMR))**2
52071       SMIN=(XMB+XMT)**2+0.1D0
52072  
52073       DO 120 LIN=0,NN-1
52074         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
52075         AM=(XMG2-XMR2)*(XMT2-XMB2)/2D0/SBAR
52076         GRS=SBAR-XMQ2
52077         W=PYLAMF(SBAR,XMB2,XMT2)*PYLAMF(SBAR,XMG2,XMR2)
52078         W=DSQRT(W)/2D0/SBAR
52079         ANT1=LOG(ABS((GRS/2D0+AM+XMST(1)-W)/(GRS/2D0+AM+XMST(1)+W)))
52080         ANT2=LOG(ABS((GRS/2D0+AM+XMST(3)-W)/(GRS/2D0+AM+XMST(3)+W)))
52081         ANB1=LOG(ABS((GRS/2D0-AM+XMSB(1)-W)/(GRS/2D0-AM+XMSB(1)+W)))
52082         ANB2=LOG(ABS((GRS/2D0-AM+XMSB(2)-W)/(GRS/2D0-AM+XMSB(2)+W)))
52083         SUMME(LIN)=-ULR(1)*W+(ULR(1)*(XMQ2/2D0-XMST(1)-XMG*XMT*SIN2A)
52084      &  +2D0*XX1(I)*AAA(I)*XMR*XMB)*ANT1
52085      &  +(ULR(1)/2D0*(XMST(1)*(XMQ2-XMST(1))-XMGTBR
52086      &  -2D0*XMG*XMT*SIN2A*(XMST(1)-XMB2-XMR2))
52087      &  +2D0*XX1(I)*AAA(I)*XMR*XMB*(XMST(1)-XMG2-XMT2)
52088      &  +4D0*SIN2A*XX1(I)*AAA(I)*XMQ4)
52089      &  *(1D0/(GRS/2D0+AM+XMST(1)-W)-1D0/(GRS/2D0+AM+XMST(1)+W))
52090         SUMME(LIN)=SUMME(LIN)-ULR(2)*W
52091      &  +(ULR(2)*(XMQ2/2D0-XMST(3)+XMG*XMT*SIN2A)
52092      &  -2D0*XX2(I)*BBB(I)*XMR*XMB)*ANT2
52093      &  +(ULR(2)/2D0*(XMST(3)*(XMQ2-XMST(3))-XMGTBR
52094      &  +2D0*XMG*XMT*SIN2A*(XMST(3)-XMB2-XMR2))
52095      &  -2D0*XX2(I)*BBB(I)*XMR*XMB*(XMST(3)-XMG2-XMT2)
52096      &  +4D0*SIN2A*XX2(I)*BBB(I)*XMQ4)
52097      &  *(1D0/(GRS/2D0+AM+XMST(3)-W)-1D0/(GRS/2D0+AM+XMST(3)+W))
52098         SUMME(LIN)=SUMME(LIN)-VLR(1)*W
52099      &  +(VLR(1)*(XMQ2/2D0-XMSB(1)-XMG*XMB*SIN2C)
52100      &  +2D0*CCC(I)*EEE(I)*XMR*XMT)*ANB1
52101      &  +(VLR(1)/2D0*(XMSB(1)*(XMQ2-XMSB(1))-XMGBTR
52102      &  -2D0*XMG*XMB*SIN2C*(XMSB(1)-XMT2-XMR2))
52103      &  +2D0*CCC(I)*EEE(I)*XMR*XMT*(XMSB(1)-XMG2-XMB2)
52104      &  +4D0*SIN2C*CCC(I)*EEE(I)*XMQ4)
52105      &  *(1D0/(GRS/2D0-AM+XMSB(1)-W)-1D0/(GRS/2D0-AM+XMSB(1)+W))
52106         SUMME(LIN)=SUMME(LIN)-VLR(2)*W
52107      &  +(VLR(2)*(XMQ2/2D0-XMSB(2)+XMG*XMB*SIN2C)
52108      &  -2D0*DDD(I)*FFF(I)*XMR*XMT)*ANB2
52109      &  +(VLR(2)/2D0*(XMSB(2)*(XMQ2-XMSB(2))-XMGBTR
52110      &  +2D0*XMG*XMB*SIN2C*(XMSB(2)-XMT2-XMR2))
52111      &  -2D0*DDD(I)*FFF(I)*XMR*XMT*(XMSB(2)-XMG2-XMB2)
52112      &  +4D0*SIN2C*DDD(I)*FFF(I)*XMQ4)
52113      &  *(1D0/(GRS/2D0-AM+XMSB(2)-W)-1D0/(GRS/2D0-AM+XMSB(2)+W))
52114         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMT*COS2A/(XMST(3)-XMST(1))
52115      &  *((AAA(I)*BBB(I)-XX1(I)*XX2(I))
52116      &  *((XMST(3)-XMB2-XMR2)*ANT2-(XMST(1)-XMB2-XMR2)*ANT1)
52117      &  +2D0*(AAA(I)*XX2(I)-XX1(I)*BBB(I))*XMB*XMR*(ANT2-ANT1))
52118         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMB*COS2C/(XMSB(2)-XMSB(1))
52119      &  *((EEE(I)*FFF(I)-CCC(I)*DDD(I))
52120      &  *((XMSB(2)-XMT2-XMR2)*ANB2-(XMSB(1)-XMT2-XMR2)*ANB1)
52121      &  +2D0*(EEE(I)*DDD(I)-CCC(I)*FFF(I))*XMT*XMR*(ANB2-ANB1))
52122         DO 110 J=1,4
52123           SUMME(LIN)=SUMME(LIN)-2D0*A(J,1)*W
52124      &    +((-A(J,1)*(XMSB(J)*(GRS+XMSB(J))+XMQ3)
52125      &    +A(J,2)*(XMSB(J)-XMT2-XMR2)+A(J,3)*(SBAR-XMB2-XMT2)
52126      &    +A(J,4)*(XMSB(J)+SBAR-XMB2-XMR2)
52127      &    -A(J,5)*(XMSB(J)+SBAR-XMG2-XMT2)+A(J,6)*(XMG2+XMR2-SBAR)
52128      &    -A(J,7)*(XMSB(J)-XMG2-XMB2)+2D0*A(J,8))
52129      &    *LOG(ABS((GRS/2D0+XMSB(J)-AM-W)/(GRS/2D0+XMSB(J)-AM+W)))
52130      &    -(A(J,1)*(XMST(J)*(GRS+XMST(J))+XMQ3)
52131      &    +A(J,2)*(XMST(J)+SBAR-XMG2-XMB2)-A(J,3)*(SBAR-XMB2-XMT2)
52132      &    +A(J,4)*(XMST(J)-XMG2-XMT2)-A(J,5)*(XMST(J)-XMR2-XMB2)
52133      &    -A(J,6)*(XMG2+XMR2-SBAR)
52134      &    -A(J,7)*(XMST(J)+SBAR-XMT2-XMR2)-2D0*A(J,8))
52135      &    *LOG(ABS((GRS/2D0+XMST(J)+AM-W)/(GRS/2D0+XMST(J)+AM+W))))
52136      &    /(GRS+XMSB(J)+XMST(J))
52137   110   CONTINUE
52138   120 CONTINUE
52139       SUMME(NN)=0D0
52140       GAM= ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
52141      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
52142  
52143       RETURN
52144       END
52145  
52146 C*********************************************************************
52147  
52148 C...PYNJDC
52149 C...Calculates decay widths for the neutralinos (admixtures of
52150 C...Bino, W3-ino, Higgs1-ino, Higgs2-ino)
52151  
52152 C...Input:  KCIN = KF code for particle
52153 C...Output: XLAM = widths
52154 C...        IDLAM = KF codes for decay particles
52155 C...        IKNT = number of decay channels defined
52156 C...AUTHOR: STEPHEN MRENNA
52157 C...Last change:
52158 C...10-15-95:  force decay chi^0_2 -> chi^0_1 + gamma
52159 C...when CHIGAMMA .NE. 0
52160 C...10 FEB 96:  Calculate this decay for small tan(beta)
52161  
52162       SUBROUTINE PYNJDC(KFIN,XLAM,IDLAM,IKNT)
52163  
52164 C...Double precision and integer declarations.
52165       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52166       IMPLICIT INTEGER(I-N)
52167       INTEGER PYK,PYCHGE,PYCOMP
52168 C...Parameter statement to help give large particle numbers.
52169       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52170      &KEXCIT=4000000,KDIMEN=5000000)
52171 C...Commonblocks.
52172       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52173       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
52174       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
52175 c      COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
52176 c     &SFMIX(16,4)
52177       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
52178      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
52179 C      COMMON/PYINTS/XXM(20)
52180       COMPLEX*16 CXC
52181       COMMON/PYINTC/XXC(10),CXC(8)
52182       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
52183  
52184 C...Local variables.
52185       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
52186       COMPLEX*16 QIJ,RIJ,F21K,F12K,CAL,CAR,CBL,CBR,CA,CB
52187       INTEGER KFIN
52188       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
52189      &XMZ,XMZ2,AXMJ,AXMI
52190       DOUBLE PRECISION S12MIN,S12MAX
52191       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2
52192       DOUBLE PRECISION PYLAMF,XL
52193       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I
52194       DOUBLE PRECISION PYX2XH,PYX2XG
52195       DOUBLE PRECISION XLAM(0:400)
52196       INTEGER IDLAM(400,3)
52197       INTEGER LKNT,IX,IH,J,IJ,I,IKNT,FID
52198       INTEGER ITH(3),KF1,KF2
52199       INTEGER ITHC
52200       DOUBLE PRECISION DH(3),EH(3)
52201       DOUBLE PRECISION SR2
52202       DOUBLE PRECISION CBETA,SBETA
52203       DOUBLE PRECISION GAMCON,XMT1,XMT2
52204       DOUBLE PRECISION PYALEM,PI,PYALPS
52205       DOUBLE PRECISION RAT1,RAT2
52206       DOUBLE PRECISION T3T,FCOL
52207       DOUBLE PRECISION ALFA,BETA,TANB
52208       DOUBLE PRECISION PYXXGA
52209       EXTERNAL PYGAUS,PYXXZ6
52210       DOUBLE PRECISION PYGAUS,PYXXZ6
52211       DOUBLE PRECISION PREC
52212       INTEGER KFNCHI(4),KFCCHI(2)
52213       DATA ITH/25,35,36/
52214       DATA ITHC/37/
52215       DATA PREC/1D-2/
52216       DATA PI/3.141592654D0/
52217       DATA SR2/1.4142136D0/
52218       DATA KFNCHI/1000022,1000023,1000025,1000035/
52219       DATA KFCCHI/1000024,1000037/
52220  
52221 C...COUNT THE NUMBER OF DECAY MODES
52222       LKNT=0
52223  
52224       XMW=PMAS(24,1)
52225       XMW2=XMW**2
52226       XMZ=PMAS(23,1)
52227       XMZ2=XMZ**2
52228       XW=1D0-XMW2/XMZ2
52229       XW1=1D0-XW
52230       TANW = SQRT(XW/XW1)
52231  
52232 C...IX IS 1 - 4 DEPENDING ON SEQUENCE NUMBER
52233       IX=1
52234       IF(KFIN.EQ.KFNCHI(2)) IX=2
52235       IF(KFIN.EQ.KFNCHI(3)) IX=3
52236       IF(KFIN.EQ.KFNCHI(4)) IX=4
52237  
52238       XMI=SMZ(IX)
52239       XMI2=XMI**2
52240       AXMI=ABS(XMI)
52241       AEM=PYALEM(XMI2)
52242       AS =PYALPS(XMI2)
52243       C1=AEM/XW
52244       XMI3=ABS(XMI**3)
52245  
52246       TANB=RMSS(5)
52247       BETA=ATAN(TANB)
52248       ALFA=RMSS(18)
52249       CBETA=COS(BETA)
52250       SBETA=TANB*CBETA
52251       CALFA=COS(ALFA)
52252       SALFA=SIN(ALFA)
52253  
52254       DO 110 I=1,4
52255         DO 100 J=1,4
52256           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
52257   100   CONTINUE
52258   110 CONTINUE
52259       DO 130 I=1,2
52260         DO 120 J=1,2
52261            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
52262            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
52263   120   CONTINUE
52264   130 CONTINUE
52265  
52266 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
52267       IF(IX.EQ.1.AND.IMSS(11).EQ.0) GOTO 300
52268  
52269 C...FORCE CHI0_2 -> CHI0_1 + GAMMA
52270       IF(IX.EQ.2 .AND. IMSS(10).NE.0 ) THEN
52271         XMJ=SMZ(1)
52272         AXMJ=ABS(XMJ)
52273         LKNT=LKNT+1
52274         GAMCON=AEM**3/8D0/PI/XMW2/XW
52275         XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
52276         XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
52277         XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
52278         IDLAM(LKNT,1)=KSUSY1+22
52279         IDLAM(LKNT,2)=22
52280         IDLAM(LKNT,3)=0
52281         WRITE(MSTU(11),*) 'FORCED N2 -> N1 + GAMMA ',XLAM(LKNT)
52282         GOTO 340
52283       ENDIF
52284  
52285 C...GRAVITINO DECAY MODES
52286  
52287       IF(IMSS(11).EQ.1) THEN
52288         XMP=RMSS(29)
52289         IDG=39+KSUSY1
52290         XMGR=PMAS(PYCOMP(IDG),1)
52291         SINW=SQRT(XW)
52292         COSW=SQRT(1D0-XW)
52293         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
52294         IF(AXMI.GT.XMGR+PMAS(22,1)) THEN
52295           LKNT=LKNT+1
52296           IDLAM(LKNT,1)=IDG
52297           IDLAM(LKNT,2)=22
52298           IDLAM(LKNT,3)=0
52299           XLAM(LKNT)=XFAC*ABS(ZMIXC(IX,1)*COSW+ZMIXC(IX,2)*SINW)**2
52300         ENDIF
52301         IF(AXMI.GT.XMGR+XMZ) THEN
52302           LKNT=LKNT+1
52303           IDLAM(LKNT,1)=IDG
52304           IDLAM(LKNT,2)=23
52305           IDLAM(LKNT,3)=0
52306           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,1)*SINW-ZMIXC(IX,2)*COSW)**2 +
52307      $  .5D0*ABS(ZMIXC(IX,3)*CBETA-ZMIXC(IX,4)*SBETA)**2)*
52308      &  (1D0-XMZ2/XMI2)**4
52309         ENDIF
52310         IF(AXMI.GT.XMGR+PMAS(25,1)) THEN
52311           LKNT=LKNT+1
52312           IDLAM(LKNT,1)=IDG
52313           IDLAM(LKNT,2)=25
52314           IDLAM(LKNT,3)=0
52315           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SALFA-ZMIXC(IX,4)*CALFA)**2)*
52316      $  .5D0*(1D0-PMAS(25,1)**2/XMI2)**4
52317         ENDIF
52318         IF(AXMI.GT.XMGR+PMAS(35,1)) THEN
52319           LKNT=LKNT+1
52320           IDLAM(LKNT,1)=IDG
52321           IDLAM(LKNT,2)=35
52322           IDLAM(LKNT,3)=0
52323           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*CALFA+ZMIXC(IX,4)*SALFA)**2)*
52324      $  .5D0*(1D0-PMAS(35,1)**2/XMI2)**4
52325         ENDIF
52326         IF(AXMI.GT.XMGR+PMAS(36,1)) THEN
52327           LKNT=LKNT+1
52328           IDLAM(LKNT,1)=IDG
52329           IDLAM(LKNT,2)=36
52330           IDLAM(LKNT,3)=0
52331           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SBETA+ZMIXC(IX,4)*CBETA)**2)*
52332      $  .5D0*(1D0-PMAS(36,1)**2/XMI2)**4
52333         ENDIF
52334         IF(IX.EQ.1) GOTO 300
52335       ENDIF
52336  
52337       DO 220 IJ=1,IX-1
52338         XMJ=SMZ(IJ)
52339         AXMJ=ABS(XMJ)
52340         XMJ2=XMJ**2
52341  
52342 C...CHI0_I -> CHI0_J + GAMMA
52343         IF(AXMI.GE.AXMJ.AND.SBETA/CBETA.LE.2D0) THEN
52344           RAT1=ABS(ZMIXC(IJ,1))**2+ABS(ZMIXC(IJ,2))**2
52345           RAT1=RAT1/( 1D-6+ABS(ZMIXC(IX,3))**2+ABS(ZMIXC(IX,4))**2 )
52346           RAT2=ABS(ZMIXC(IX,1))**2+ABS(ZMIXC(IX,2))**2
52347           RAT2=RAT2/( 1D-6+ABS(ZMIXC(IJ,3))**2+ABS(ZMIXC(IJ,4))**2 )
52348           IF((RAT1.GT. 0.90D0 .AND. RAT1.LT. 1.10D0) .OR.
52349      &    (RAT2.GT. 0.90D0 .AND. RAT2.LT. 1.10D0)) THEN
52350             LKNT=LKNT+1
52351             IDLAM(LKNT,1)=KFNCHI(IJ)
52352             IDLAM(LKNT,2)=22
52353             IDLAM(LKNT,3)=0
52354             GAMCON=AEM**3/8D0/PI/XMW2/XW
52355             XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
52356             XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
52357             XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
52358           ENDIF
52359         ENDIF
52360  
52361 C...CHI0_I -> CHI0_J + Z0
52362         IF(AXMI.GE.AXMJ+XMZ) THEN
52363           LKNT=LKNT+1
52364           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
52365      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
52366           ORPP=-DCONJG(OLPP)
52367           GX2=ABS(OLPP)**2+ABS(ORPP)**2
52368           GLR=DBLE(OLPP*DCONJG(ORPP))
52369           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
52370           IDLAM(LKNT,1)=KFNCHI(IJ)
52371           IDLAM(LKNT,2)=23
52372           IDLAM(LKNT,3)=0
52373         ELSEIF(AXMI.GE.AXMJ) THEN
52374           XXC(1)=0D0
52375           XXC(2)=XMJ
52376           XXC(3)=0D0
52377           XXC(4)=XMI
52378           XXC(9)=XMZ
52379           XXC(10)=PMAS(23,2)
52380           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
52381      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
52382           ORPP=DCONJG(OLPP)
52383 C...CHARGED LEPTONS
52384           FID=11
52385           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
52386           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
52387           EI=KCHG(FID,1)/3D0
52388           T3I=SIGN(1D0,EI+1D-6)/2D0
52389           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
52390      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
52391           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
52392           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
52393           CXC(2)=-GLIJ
52394           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
52395           CXC(4)=DCONJG(GLIJ)
52396           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
52397           CXC(6)=GRIJ
52398           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
52399           CXC(8)=-DCONJG(GRIJ)
52400           S12MIN=0D0
52401           S12MAX=(AXMI-AXMJ)**2
52402           IF( XXC(5).LT.AXMI ) THEN
52403             XXC(5)=1D6
52404           ENDIF
52405           IF(XXC(6).LT.AXMI ) THEN
52406             XXC(6)=1D6
52407           ENDIF
52408           XXC(7)=XXC(5)
52409           XXC(8)=XXC(6)
52410  
52411           IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
52412             LKNT=LKNT+1
52413             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52414      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52415             IDLAM(LKNT,1)=KFNCHI(IJ)
52416             IDLAM(LKNT,2)=FID
52417             IDLAM(LKNT,3)=-FID
52418             IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
52419               LKNT=LKNT+1
52420               XLAM(LKNT)=XLAM(LKNT-1)
52421               IDLAM(LKNT,1)=KFNCHI(IJ)
52422               IDLAM(LKNT,2)=13
52423               IDLAM(LKNT,3)=-13
52424             ENDIF
52425           ENDIF
52426   140     CONTINUE
52427           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
52428             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
52429             XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
52430           ELSE
52431             XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
52432             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
52433           ENDIF
52434           IF( XXC(5).LT.AXMI ) THEN
52435             XXC(5)=1D6
52436           ENDIF
52437           IF(XXC(6).LT.AXMI ) THEN
52438             XXC(6)=1D6
52439           ENDIF
52440           XXC(7)=XXC(5)
52441           XXC(8)=XXC(6)
52442  
52443           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
52444             LKNT=LKNT+1
52445             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52446      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52447             IDLAM(LKNT,1)=KFNCHI(IJ)
52448             IDLAM(LKNT,2)=15
52449             IDLAM(LKNT,3)=-15
52450           ENDIF
52451  
52452 C...NEUTRINOS
52453   150     CONTINUE
52454           FID=12
52455           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
52456           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
52457           EI=KCHG(FID,1)/3D0
52458           T3I=SIGN(1D0,EI+1D-6)/2D0
52459           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
52460      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
52461           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
52462           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
52463           CXC(2)=-GLIJ
52464           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
52465           CXC(4)=DCONJG(GLIJ)
52466           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
52467           CXC(6)=GRIJ
52468           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
52469           CXC(8)=-DCONJG(GRIJ)
52470           S12MIN=0D0
52471           S12MAX=(AXMI-AXMJ)**2
52472           IF( XXC(5).LT.AXMI ) THEN
52473             XXC(5)=1D6
52474           ENDIF
52475           IF( XXC(6).LT.AXMI ) THEN
52476             XXC(6)=1D6
52477           ENDIF
52478           XXC(7)=XXC(5)
52479           XXC(8)=XXC(6)
52480  
52481           LKNT=LKNT+1
52482           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52483      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52484           IDLAM(LKNT,1)=KFNCHI(IJ)
52485           IDLAM(LKNT,2)=12
52486           IDLAM(LKNT,3)=-12
52487           LKNT=LKNT+1
52488           XLAM(LKNT)=XLAM(LKNT-1)
52489           IDLAM(LKNT,1)=KFNCHI(IJ)
52490           IDLAM(LKNT,2)=14
52491           IDLAM(LKNT,3)=-14
52492   160     CONTINUE
52493  
52494           IF(PMAS(PYCOMP(KSUSY1+16),1).NE.PMAS(PYCOMP(KSUSY1+12),1))
52495      &    THEN
52496             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
52497             IF( XXC(5).LT.AXMI ) THEN
52498               XXC(5)=1D6
52499             ENDIF
52500             XXC(7)=XXC(5)
52501             LKNT=LKNT+1
52502             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52503      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52504           ELSE
52505             LKNT=LKNT+1
52506             XLAM(LKNT)=XLAM(LKNT-1)
52507           ENDIF
52508           IDLAM(LKNT,1)=KFNCHI(IJ)
52509           IDLAM(LKNT,2)=16
52510           IDLAM(LKNT,3)=-16
52511 C...D-TYPE QUARKS
52512   170     CONTINUE
52513           FID=1
52514           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
52515           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
52516           EI=KCHG(FID,1)/3D0
52517           T3I=SIGN(1D0,EI+1D-6)/2D0
52518           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
52519      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
52520           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
52521           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
52522           CXC(2)=-GLIJ
52523           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
52524           CXC(4)=DCONJG(GLIJ)
52525           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
52526           CXC(6)=GRIJ
52527           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
52528           CXC(8)=-DCONJG(GRIJ)
52529           S12MIN=0D0
52530           S12MAX=(AXMI-AXMJ)**2
52531           IF( XXC(5).LT.AXMI ) THEN
52532             XXC(5)=1D6
52533           ENDIF
52534           IF( XXC(6).LT.AXMI ) THEN
52535             XXC(6)=1D6
52536           ENDIF
52537           XXC(7)=XXC(5)
52538           XXC(8)=XXC(6)
52539  
52540           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
52541             LKNT=LKNT+1
52542             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52543      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
52544             IDLAM(LKNT,1)=KFNCHI(IJ)
52545             IDLAM(LKNT,2)=1
52546             IDLAM(LKNT,3)=-1
52547             IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
52548               LKNT=LKNT+1
52549               XLAM(LKNT)=XLAM(LKNT-1)
52550               IDLAM(LKNT,1)=KFNCHI(IJ)
52551               IDLAM(LKNT,2)=3
52552               IDLAM(LKNT,3)=-3
52553             ENDIF
52554           ENDIF
52555   180     CONTINUE
52556           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
52557             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
52558             XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
52559           ELSE
52560             XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
52561             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
52562           ENDIF
52563           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
52564           IF(XXC(5).LT.AXMI) THEN
52565             XXC(5)=1D6
52566           ELSEIF(XXC(6).LT.AXMI) THEN
52567             XXC(6)=1D6
52568           ENDIF
52569           XXC(7)=XXC(5)
52570           XXC(8)=XXC(6)
52571           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
52572             LKNT=LKNT+1
52573             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52574      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
52575             IDLAM(LKNT,1)=KFNCHI(IJ)
52576             IDLAM(LKNT,2)=5
52577             IDLAM(LKNT,3)=-5
52578           ENDIF
52579  
52580 C...U-TYPE QUARKS
52581   190     CONTINUE
52582           FID=2
52583           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
52584           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
52585           EI=KCHG(FID,1)/3D0
52586           T3I=SIGN(1D0,EI+1D-6)/2D0
52587           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
52588      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
52589           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
52590           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
52591           CXC(2)=-GLIJ
52592           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
52593           CXC(4)=DCONJG(GLIJ)
52594           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
52595           CXC(6)=GRIJ
52596           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
52597           CXC(8)=-DCONJG(GRIJ)
52598  
52599           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 200
52600           IF(XXC(5).LT.AXMI) THEN
52601             XXC(5)=1D6
52602           ELSEIF(XXC(6).LT.AXMI) THEN
52603             XXC(6)=1D6
52604           ENDIF
52605           XXC(7)=XXC(5)
52606           XXC(8)=XXC(6)
52607  
52608           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
52609             LKNT=LKNT+1
52610             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52611      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
52612             IDLAM(LKNT,1)=KFNCHI(IJ)
52613             IDLAM(LKNT,2)=2
52614             IDLAM(LKNT,3)=-2
52615             IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
52616               LKNT=LKNT+1
52617               XLAM(LKNT)=XLAM(LKNT-1)
52618               IDLAM(LKNT,1)=KFNCHI(IJ)
52619               IDLAM(LKNT,2)=4
52620               IDLAM(LKNT,3)=-4
52621             ENDIF
52622           ENDIF
52623   200     CONTINUE
52624         ENDIF
52625  
52626 C...CHI0_I -> CHI0_J + H0_K
52627         EH(1)=SIN(ALFA)
52628         EH(2)=COS(ALFA)
52629         EH(3)=-SIN(BETA)
52630         DH(1)=COS(ALFA)
52631         DH(2)=-SIN(ALFA)
52632         DH(3)=COS(BETA)
52633         QIJ=ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,2))+
52634      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,2)-
52635      &  TANW*(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,1))+
52636      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,1))
52637         RIJ=DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,2)+
52638      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,2))-
52639      &  TANW*(DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,1)+
52640      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,1)))
52641         DO 210 IH=1,3
52642           XMH=PMAS(ITH(IH),1)
52643           XMH2=XMH**2
52644           IF(AXMI.GE.AXMJ+XMH) THEN
52645             LKNT=LKNT+1
52646             XL=PYLAMF(XMI2,XMJ2,XMH2)
52647             F21K=0.5D0*(QIJ*EH(IH)+RIJ*DH(IH))
52648             F12K=F21K
52649 C...SIGN OF MASSES I,J
52650             XMK=XMJ
52651             IF(IH.EQ.3) XMK=-XMK
52652             GX2=ABS(F21K)**2+ABS(F12K)**2
52653             GLR=DBLE(F21K*DCONJG(F12K))
52654             XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
52655             IDLAM(LKNT,1)=KFNCHI(IJ)
52656             IDLAM(LKNT,2)=ITH(IH)
52657             IDLAM(LKNT,3)=0
52658           ENDIF
52659   210   CONTINUE
52660   220 CONTINUE
52661  
52662 C...CHI0_I -> CHI+_J + W-
52663       DO 260 IJ=1,2
52664         XMJ=SMW(IJ)
52665         AXMJ=ABS(XMJ)
52666         XMJ2=XMJ**2
52667         IF(AXMI.GE.AXMJ+XMW) THEN
52668           LKNT=LKNT+1
52669           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
52670      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)/SR2)
52671           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
52672      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))/SR2)
52673           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
52674           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
52675           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
52676           IDLAM(LKNT,1)=KFCCHI(IJ)
52677           IDLAM(LKNT,2)=-24
52678           IDLAM(LKNT,3)=0
52679           LKNT=LKNT+1
52680           XLAM(LKNT)=XLAM(LKNT-1)
52681           IDLAM(LKNT,1)=-KFCCHI(IJ)
52682           IDLAM(LKNT,2)=24
52683           IDLAM(LKNT,3)=0
52684         ELSEIF(AXMI.GE.AXMJ) THEN
52685           S12MIN=0D0
52686           S12MAX=(AXMI-AXMJ)**2
52687           RT2I = 1D0/SQRT(2D0)
52688           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
52689      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)*RT2I)*RT2I
52690           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
52691      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))*RT2I)*RT2I
52692           CXC(5)=DCMPLX(0D0,0D0)
52693           CXC(7)=DCMPLX(0D0,0D0)
52694           IA=11
52695           JA=12
52696           EI=KCHG(IA,1)/3D0
52697           T3I=SIGN(1D0,EI+1D-6)/2D0
52698           EJ=KCHG(JA,1)/3D0
52699           T3J=SIGN(1D0,EJ+1D-6)/2D0
52700           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
52701      &    TANW+ZMIXC(IX,2)*T3J)*RT2I
52702           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
52703      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)*RT2I
52704           CXC(6)=DCMPLX(0D0,0D0)
52705           CXC(8)=DCMPLX(0D0,0D0)
52706           XXC(1)=0D0
52707           XXC(2)=XMJ
52708           XXC(3)=0D0
52709           XXC(4)=XMI
52710           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
52711           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
52712           XXC(9)=PMAS(24,1)
52713           XXC(10)=PMAS(24,2)
52714           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 230
52715           IF(XXC(5).LT.AXMI) THEN
52716             XXC(5)=1D6
52717           ELSEIF(XXC(6).LT.AXMI) THEN
52718             XXC(6)=1D6
52719           ENDIF
52720           XXC(7)=XXC(6)
52721           XXC(8)=XXC(5)
52722           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
52723             LKNT=LKNT+1
52724             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52725      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52726             IDLAM(LKNT,1)=KFCCHI(IJ)
52727             IDLAM(LKNT,2)=11
52728             IDLAM(LKNT,3)=-12
52729             LKNT=LKNT+1
52730             XLAM(LKNT)=XLAM(LKNT-1)
52731             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52732             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52733             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
52734             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
52735               LKNT=LKNT+1
52736               XLAM(LKNT)=XLAM(LKNT-1)
52737               IDLAM(LKNT,1)=KFCCHI(IJ)
52738               IDLAM(LKNT,2)=13
52739               IDLAM(LKNT,3)=-14
52740               LKNT=LKNT+1
52741               XLAM(LKNT)=XLAM(LKNT-1)
52742               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52743               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52744               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
52745             ENDIF
52746           ENDIF
52747   230     CONTINUE
52748           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
52749             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
52750             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
52751           ELSE
52752             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
52753             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
52754           ENDIF
52755           IF(XXC(5).LT.AXMI) THEN
52756             XXC(5)=1D6
52757           ENDIF
52758           IF(XXC(6).LT.AXMI) THEN
52759             XXC(6)=1D6
52760           ENDIF
52761           XXC(7)=XXC(6)
52762           XXC(8)=XXC(5)
52763           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
52764             LKNT=LKNT+1
52765             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52766      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52767             XLAM(LKNT)=XLAM(LKNT-1)
52768             IDLAM(LKNT,1)=KFCCHI(IJ)
52769             IDLAM(LKNT,2)=15
52770             IDLAM(LKNT,3)=-16
52771             LKNT=LKNT+1
52772             XLAM(LKNT)=XLAM(LKNT-1)
52773             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52774             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52775             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
52776           ENDIF
52777  
52778 C...NOW, DO THE QUARKS
52779   240     CONTINUE
52780           IA=1
52781           JA=2
52782           EI=KCHG(IA,1)/3D0
52783           T3I=SIGN(1D0,EI+1D-6)/2D0
52784           EJ=KCHG(JA,1)/3D0
52785           T3J=SIGN(1D0,EJ+1D-6)/2D0
52786           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
52787      &    TANW+ZMIXC(IX,2)*T3J)
52788           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
52789      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)
52790           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
52791           XXC(6)=PMAS(PYCOMP(KSUSY1+JA),1)
52792           IF(XXC(5).LT.AXMI) THEN
52793             XXC(5)=1D6
52794           ENDIF
52795           IF(XXC(6).LT.AXMI) THEN
52796             XXC(6)=1D6
52797           ENDIF
52798           XXC(7)=XXC(6)
52799           XXC(8)=XXC(5)
52800           IF(AXMI.GE.AXMJ+PMAS(2,1)+PMAS(1,1)) THEN
52801             LKNT=LKNT+1
52802             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
52803      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52804             IDLAM(LKNT,1)=KFCCHI(IJ)
52805             IDLAM(LKNT,2)=1
52806             IDLAM(LKNT,3)=-2
52807             LKNT=LKNT+1
52808             XLAM(LKNT)=XLAM(LKNT-1)
52809             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52810             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52811             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
52812             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
52813               LKNT=LKNT+1
52814               XLAM(LKNT)=XLAM(LKNT-1)
52815               IDLAM(LKNT,1)=KFCCHI(IJ)
52816               IDLAM(LKNT,2)=3
52817               IDLAM(LKNT,3)=-4
52818               LKNT=LKNT+1
52819               XLAM(LKNT)=XLAM(LKNT-1)
52820               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52821               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52822               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
52823             ENDIF
52824           ENDIF
52825   250     CONTINUE
52826         ENDIF
52827   260 CONTINUE
52828   270 CONTINUE
52829  
52830 C...CHI0_I -> CHI+_I + H-
52831       DO 280 IJ=1,2
52832         XMJ=SMW(IJ)
52833         AXMJ=ABS(XMJ)
52834         XMJ2=XMJ**2
52835         XMHP=PMAS(ITHC,1)
52836         IF(AXMI.GE.AXMJ+XMHP) THEN
52837           LKNT=LKNT+1
52838           OLPP=CBETA*(ZMIXC(IX,4)*DCONJG(VMIXC(IJ,1))+(ZMIXC(IX,2)+
52839      &    ZMIXC(IX,1)*TANW)*DCONJG(VMIXC(IJ,2))/SR2)
52840           ORPP=SBETA*(DCONJG(ZMIXC(IX,3))*UMIXC(IJ,1)-
52841      &    (DCONJG(ZMIXC(IX,2))+DCONJG(ZMIXC(IX,1))*TANW)*
52842      &    UMIXC(IJ,2)/SR2)
52843           GX2=ABS(OLPP)**2+ABS(ORPP)**2
52844           GLR=DBLE(OLPP*DCONJG(ORPP))
52845           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
52846           IDLAM(LKNT,1)=KFCCHI(IJ)
52847           IDLAM(LKNT,2)=-ITHC
52848           IDLAM(LKNT,3)=0
52849           LKNT=LKNT+1
52850           XLAM(LKNT)=XLAM(LKNT-1)
52851           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52852           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52853           IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
52854         ELSE
52855  
52856         ENDIF
52857   280 CONTINUE
52858  
52859 C...2-BODY DECAYS TO FERMION SFERMION
52860       DO 290 J=1,16
52861         IF(J.GE.7.AND.J.LE.10) GOTO 290
52862         KF1=KSUSY1+J
52863         KF2=KSUSY2+J
52864         XMSF1=PMAS(PYCOMP(KF1),1)
52865         XMSF2=PMAS(PYCOMP(KF2),1)
52866         XMF=PMAS(J,1)
52867         IF(J.LE.6) THEN
52868           FCOL=3D0
52869         ELSE
52870           FCOL=1D0
52871         ENDIF
52872  
52873         EI=KCHG(J,1)/3D0
52874         T3T=SIGN(1D0,EI)
52875         IF(J.EQ.12.OR.J.EQ.14.OR.J.EQ.16) T3T=1D0
52876         IF(MOD(J,2).EQ.0) THEN
52877           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
52878           CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
52879           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
52880           CBR=CAL
52881         ELSE
52882           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
52883           CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
52884           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
52885           CBR=CAL
52886         ENDIF
52887  
52888 C...D~ D_L
52889         IF(AXMI.GE.XMF+XMSF1) THEN
52890           LKNT=LKNT+1
52891           XMA2=XMSF1**2
52892           XMB2=XMF**2
52893           XL=PYLAMF(XMI2,XMA2,XMB2)
52894           CA=CAL*SFMIX(J,1)+CAR*SFMIX(J,2)
52895           CB=CBL*SFMIX(J,1)+CBR*SFMIX(J,2)
52896           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
52897      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
52898           IDLAM(LKNT,1)=KF1
52899           IDLAM(LKNT,2)=-J
52900           IDLAM(LKNT,3)=0
52901           LKNT=LKNT+1
52902           XLAM(LKNT)=XLAM(LKNT-1)
52903           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52904           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52905           IDLAM(LKNT,3)=0
52906         ENDIF
52907  
52908 C...D~ D_R
52909         IF(AXMI.GE.XMF+XMSF2) THEN
52910           LKNT=LKNT+1
52911           XMA2=XMSF2**2
52912           XMB2=XMF**2
52913           CA=CAL*SFMIX(J,3)+CAR*SFMIX(J,4)
52914           CB=CBL*SFMIX(J,3)+CBR*SFMIX(J,4)
52915           XL=PYLAMF(XMI2,XMA2,XMB2)
52916           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
52917      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
52918           IDLAM(LKNT,1)=KF2
52919           IDLAM(LKNT,2)=-J
52920           IDLAM(LKNT,3)=0
52921           LKNT=LKNT+1
52922           XLAM(LKNT)=XLAM(LKNT-1)
52923           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52924           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52925           IDLAM(LKNT,3)=0
52926         ENDIF
52927   290 CONTINUE
52928   300 CONTINUE
52929 C...3-BODY DECAY TO Q Q~ GLUINO
52930       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
52931       IF(AXMI.GE.XMJ) THEN
52932         RT2I = 1D0/SQRT(2D0)
52933         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))*RT2I
52934         ORPP=DCONJG(OLPP)
52935         AXMJ=ABS(XMJ)
52936         XXC(1)=0D0
52937         XXC(2)=XMJ
52938         XXC(3)=0D0
52939         XXC(4)=XMI
52940         FID=1
52941         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
52942         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
52943         XXC(7)=XXC(5)
52944         XXC(8)=XXC(6)
52945         XXC(9)=1D6
52946         XXC(10)=0D0
52947         EI=KCHG(FID,1)/3D0
52948         T3I=SIGN(1D0,EI+1D-6)/2D0
52949         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
52950         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
52951         CXC(1)=0D0
52952         CXC(2)=-GLIJ
52953         CXC(3)=0D0
52954         CXC(4)=DCONJG(GLIJ)
52955         CXC(5)=0D0
52956         CXC(6)=GRIJ
52957         CXC(7)=0D0
52958         CXC(8)=-DCONJG(GRIJ)
52959         S12MIN=0D0
52960         S12MAX=(AXMI-AXMJ)**2
52961 CMRENNA.This statement must be here to define S12MAX
52962         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 310
52963 C...ALL QUARKS BUT T
52964         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
52965           LKNT=LKNT+1
52966           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
52967      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52968           IDLAM(LKNT,1)=KSUSY1+21
52969           IDLAM(LKNT,2)=1
52970           IDLAM(LKNT,3)=-1
52971           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
52972             LKNT=LKNT+1
52973             XLAM(LKNT)=XLAM(LKNT-1)
52974             IDLAM(LKNT,1)=KSUSY1+21
52975             IDLAM(LKNT,2)=3
52976             IDLAM(LKNT,3)=-3
52977           ENDIF
52978         ENDIF
52979   310   CONTINUE
52980         IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
52981           XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
52982           XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
52983         ELSE
52984           XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
52985           XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
52986         ENDIF
52987         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 320
52988         XXC(7)=XXC(5)
52989         XXC(8)=XXC(6)
52990         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
52991           LKNT=LKNT+1
52992           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
52993      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52994           IDLAM(LKNT,1)=KSUSY1+21
52995           IDLAM(LKNT,2)=5
52996           IDLAM(LKNT,3)=-5
52997         ENDIF
52998 C...U-TYPE QUARKS
52999   320   CONTINUE
53000         FID=2
53001         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
53002         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
53003         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 330
53004         XXC(7)=XXC(5)
53005         XXC(8)=XXC(6)
53006         EI=KCHG(FID,1)/3D0
53007         T3I=SIGN(1D0,EI+1D-6)/2D0
53008         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
53009         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
53010         CXC(2)=-GLIJ
53011         CXC(4)=DCONJG(GLIJ)
53012         CXC(6)=GRIJ
53013         CXC(8)=-DCONJG(GRIJ)
53014         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
53015           LKNT=LKNT+1
53016           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
53017      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
53018           IDLAM(LKNT,1)=KSUSY1+21
53019           IDLAM(LKNT,2)=2
53020           IDLAM(LKNT,3)=-2
53021           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
53022             LKNT=LKNT+1
53023             XLAM(LKNT)=XLAM(LKNT-1)
53024             IDLAM(LKNT,1)=KSUSY1+21
53025             IDLAM(LKNT,2)=4
53026             IDLAM(LKNT,3)=-4
53027           ENDIF
53028         ENDIF
53029   330   CONTINUE
53030       ENDIF
53031  
53032 C...R-violating decay modes (SKANDS).
53033       CALL PYRVNE(KFIN,XLAM,IDLAM,LKNT)
53034  
53035   340 IKNT=LKNT
53036       XLAM(0)=0D0
53037       DO 350 I=1,IKNT
53038         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
53039         XLAM(0)=XLAM(0)+XLAM(I)
53040   350 CONTINUE
53041       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
53042  
53043       RETURN
53044       END
53045  
53046 C*********************************************************************
53047  
53048 C...PYCJDC
53049 C...Calculate decay widths for the charginos (admixtures of
53050 C...charged Wino and charged Higgsino.
53051  
53052 C...Input:  KCIN = KF code for particle
53053 C...Output: XLAM = widths
53054 C...        IDLAM = KF codes for decay particles
53055 C...        IKNT = number of decay channels defined
53056 C...AUTHOR: STEPHEN MRENNA
53057 C...Last change:
53058 C...10-16-95:  force decay chi^+_1 -> chi^0_1 e+ nu_e
53059 C...when CHIENU .NE. 0
53060  
53061       SUBROUTINE PYCJDC(KFIN,XLAM,IDLAM,IKNT)
53062  
53063 C...Double precision and integer declarations.
53064       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53065       IMPLICIT INTEGER(I-N)
53066       INTEGER PYK,PYCHGE,PYCOMP
53067 C...Parameter statement to help give large particle numbers.
53068       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53069      &KEXCIT=4000000,KDIMEN=5000000)
53070 C...Commonblocks.
53071       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53072       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53073       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
53074       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
53075      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
53076 CC     &SFMIX(16,4),
53077 C      COMMON/PYINTS/XXM(20)
53078       COMPLEX*16 CXC
53079       COMMON/PYINTC/XXC(10),CXC(8)
53080       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
53081  
53082 C...Local variables
53083       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
53084       COMPLEX*16 CAL,CBL,CAR,CBR,CA,CB
53085       INTEGER KFIN,KCIN
53086       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
53087      &XMZ,XMZ2,AXMJ,AXMI
53088       DOUBLE PRECISION S12MIN,S12MAX
53089       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2,XMK
53090       DOUBLE PRECISION PYLAMF,XL
53091       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I,BETA,ALFA
53092       DOUBLE PRECISION PYX2XH,PYX2XG
53093       DOUBLE PRECISION XLAM(0:400)
53094       INTEGER IDLAM(400,3)
53095       INTEGER LKNT,IX,IH,J,IJ,I,IKNT
53096       INTEGER ITH(3)
53097       INTEGER ITHC
53098       DOUBLE PRECISION ETAH(3),DH(3),EH(3)
53099       DOUBLE PRECISION SR2
53100       DOUBLE PRECISION CBETA,SBETA,TANB
53101  
53102       DOUBLE PRECISION PYALEM,PI,PYALPS
53103       DOUBLE PRECISION FCOL
53104       INTEGER KF1,KF2,ISF
53105       INTEGER KFNCHI(4),KFCCHI(2)
53106  
53107       DOUBLE PRECISION TEMP
53108       EXTERNAL PYGAUS,PYXXZ6
53109       DOUBLE PRECISION PYGAUS,PYXXZ6
53110       DOUBLE PRECISION PREC
53111       DATA ITH/25,35,36/
53112       DATA ITHC/37/
53113       DATA ETAH/1D0,1D0,-1D0/
53114       DATA SR2/1.4142136D0/
53115       DATA PI/3.141592654D0/
53116       DATA PREC/1D-2/
53117       DATA KFNCHI/1000022,1000023,1000025,1000035/
53118       DATA KFCCHI/1000024,1000037/
53119  
53120 C...COUNT THE NUMBER OF DECAY MODES
53121       LKNT=0
53122       XMW=PMAS(24,1)
53123       XMW2=XMW**2
53124       XMZ=PMAS(23,1)
53125       XMZ2=XMZ**2
53126       XW=1D0-XMW2/XMZ2
53127       XW1=1D0-XW
53128       TANW = SQRT(XW/XW1)
53129  
53130 C...1 OR 2 DEPENDING ON CHARGINO TYPE
53131       IX=1
53132       IF(KFIN.EQ.KFCCHI(2)) IX=2
53133       KCIN=PYCOMP(KFIN)
53134  
53135       XMI=SMW(IX)
53136       XMI2=XMI**2
53137       AXMI=ABS(XMI)
53138       AEM=PYALEM(XMI2)
53139       AS =PYALPS(XMI2)
53140       C1=AEM/XW
53141       XMI3=ABS(XMI**3)
53142       TANB=RMSS(5)
53143       BETA=ATAN(TANB)
53144       CBETA=COS(BETA)
53145       SBETA=TANB*CBETA
53146       ALFA=RMSS(18)
53147  
53148       DO 110 I=1,2
53149         DO 100 J=1,2
53150           VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
53151           UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
53152   100   CONTINUE
53153   110 CONTINUE
53154  
53155 C...GRAVITINO DECAY MODES
53156  
53157       IF(IMSS(11).EQ.1) THEN
53158         XMP=RMSS(29)
53159         IDG=39+KSUSY1
53160         XMGR=PMAS(PYCOMP(IDG),1)
53161 C        SINW=SQRT(XW)
53162 C        COSW=SQRT(1D0-XW)
53163         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
53164         IF(AXMI.GT.XMGR+XMW) THEN
53165           LKNT=LKNT+1
53166           IDLAM(LKNT,1)=IDG
53167           IDLAM(LKNT,2)=24
53168           IDLAM(LKNT,3)=0
53169           XLAM(LKNT)=XFAC*(
53170      &  .5D0*(ABS(VMIXC(IX,1))**2+ABS(UMIXC(IX,1))**2)+
53171      &  .5D0*((ABS(VMIXC(IX,2))*SBETA)**2+(ABS(UMIXC(IX,2))*CBETA)**2))*
53172      &  (1D0-XMW2/XMI2)**4
53173         ENDIF
53174         IF(AXMI.GT.XMGR+PMAS(37,1)) THEN
53175           LKNT=LKNT+1
53176           IDLAM(LKNT,1)=IDG
53177           IDLAM(LKNT,2)=37
53178           IDLAM(LKNT,3)=0
53179           XLAM(LKNT)=XFAC*(.5D0*((ABS(VMIXC(IX,2))*CBETA)**2+
53180      &   (ABS(UMIXC(IX,2))*SBETA)**2))
53181      &   *(1D0-PMAS(37,1)**2/XMI2)**4
53182        ENDIF
53183       ENDIF
53184  
53185 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
53186       IF(IX.EQ.1) GOTO 170
53187       XMJ=SMW(1)
53188       AXMJ=ABS(XMJ)
53189       XMJ2=XMJ**2
53190  
53191 C...CHI_2+ -> CHI_1+ + Z0
53192       IF(AXMI.GE.AXMJ+XMZ) THEN
53193         LKNT=LKNT+1
53194         IJ=1
53195         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
53196      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
53197         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
53198      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
53199         GX2=ABS(OLPP)**2+ABS(ORPP)**2
53200         GLR=DBLE(OLPP*DCONJG(ORPP))
53201         XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
53202         IDLAM(LKNT,1)=KFCCHI(1)
53203         IDLAM(LKNT,2)=23
53204         IDLAM(LKNT,3)=0
53205  
53206 C...CHARGED LEPTONS
53207       ELSEIF(AXMI.GE.AXMJ) THEN
53208         S12MIN=0D0
53209         S12MAX=(AXMI-AXMJ)**2
53210         IA=11
53211         JA=12
53212         EI=KCHG(IABS(IA),1)/3D0
53213         T3I=SIGN(1D0,EI+1D-6)/2D0
53214         XXC(1)=0D0
53215         XXC(2)=XMJ
53216         XXC(3)=0D0
53217         XXC(4)=XMI
53218         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
53219         XXC(6)=1D6
53220         XXC(9)=PMAS(23,1)
53221         XXC(10)=PMAS(23,2)
53222         IJ=1
53223         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
53224      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
53225         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
53226      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
53227         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
53228         CXC(2)=DCMPLX(0D0,0D0)
53229         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
53230         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
53231         CXC(5)=-DCMPLX(EI/XW1)*ORPP
53232         CXC(6)=DCMPLX(0D0,0D0)
53233         CXC(7)=-DCMPLX(EI/XW1)*OLPP
53234         CXC(8)=DCMPLX(0D0,0D0)
53235         IF( XXC(5).LT.AXMI ) THEN
53236           XXC(5)=1D6
53237         ENDIF
53238         XXC(7)=XXC(5)
53239         XXC(8)=XXC(6)
53240         IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
53241           LKNT=LKNT+1
53242           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
53243      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53244           IDLAM(LKNT,1)=KFCCHI(1)
53245           IDLAM(LKNT,2)=11
53246           IDLAM(LKNT,3)=-11
53247           IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
53248             LKNT=LKNT+1
53249             XLAM(LKNT)=XLAM(LKNT-1)
53250             IDLAM(LKNT,1)=KFCCHI(1)
53251             IDLAM(LKNT,2)=13
53252             IDLAM(LKNT,3)=-13
53253           ENDIF
53254           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
53255             LKNT=LKNT+1
53256             XLAM(LKNT)=XLAM(LKNT-1)
53257             IDLAM(LKNT,1)=KFCCHI(1)
53258             IDLAM(LKNT,2)=15
53259             IDLAM(LKNT,3)=-15
53260           ENDIF
53261         ENDIF
53262  
53263 C...NEUTRINOS
53264   120   CONTINUE
53265         IA=12
53266         JA=11
53267         EI=KCHG(IABS(IA),1)/3D0
53268         T3I=SIGN(1D0,EI+1D-6)/2D0
53269         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
53270         XXC(6)=1D6
53271         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
53272         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
53273         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
53274         CXC(5)=-DCMPLX(EI/XW1)*ORPP
53275         CXC(7)=-DCMPLX(EI/XW1)*OLPP
53276         IF( XXC(5).LT.AXMI ) THEN
53277           XXC(5)=1D6
53278         ENDIF
53279         XXC(7)=XXC(5)
53280         XXC(8)=XXC(6)
53281         IF(AXMI.GE.AXMJ+2D0*PMAS(12,1)) THEN
53282           LKNT=LKNT+1
53283           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
53284      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53285           IDLAM(LKNT,1)=KFCCHI(1)
53286           IDLAM(LKNT,2)=12
53287           IDLAM(LKNT,3)=-12
53288           LKNT=LKNT+1
53289           XLAM(LKNT)=XLAM(LKNT-1)
53290           IDLAM(LKNT,1)=KFCCHI(1)
53291           IDLAM(LKNT,2)=14
53292           IDLAM(LKNT,3)=-14
53293         ENDIF
53294         IF(AXMI.GE.AXMJ+2D0*PMAS(16,1)) THEN
53295           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
53296             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
53297           ELSE
53298             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
53299           ENDIF
53300           IF( XXC(5).LT.AXMI ) THEN
53301             XXC(5)=1D6
53302           ENDIF
53303           XXC(7)=XXC(5)
53304           LKNT=LKNT+1
53305           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
53306      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53307           IDLAM(LKNT,1)=KFCCHI(1)
53308           IDLAM(LKNT,2)=16
53309           IDLAM(LKNT,3)=-16
53310         ENDIF
53311  
53312 C...D-TYPE QUARKS
53313   130   CONTINUE
53314         IA=1
53315         JA=2
53316         EI=KCHG(IABS(IA),1)/3D0
53317         T3I=SIGN(1D0,EI+1D-6)/2D0
53318         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
53319         XXC(6)=1D6
53320         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
53321         CXC(2)=DCMPLX(0D0,0D0)
53322         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
53323         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
53324         CXC(5)=-DCMPLX(EI/XW1)*ORPP
53325         CXC(6)=DCMPLX(0D0,0D0)
53326         CXC(7)=-DCMPLX(EI/XW1)*OLPP
53327         CXC(8)=DCMPLX(0D0,0D0)
53328         IF( XXC(5).LT.AXMI ) THEN
53329           XXC(5)=1D6
53330         ENDIF
53331         XXC(7)=XXC(5)
53332         XXC(8)=XXC(6)
53333         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
53334           LKNT=LKNT+1
53335           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
53336      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53337           IDLAM(LKNT,1)=KFCCHI(1)
53338           IDLAM(LKNT,2)=1
53339           IDLAM(LKNT,3)=-1
53340           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
53341             LKNT=LKNT+1
53342             XLAM(LKNT)=XLAM(LKNT-1)
53343             IDLAM(LKNT,1)=KFCCHI(1)
53344             IDLAM(LKNT,2)=3
53345             IDLAM(LKNT,3)=-3
53346           ENDIF
53347         ENDIF
53348         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
53349           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
53350             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
53351           ELSE
53352             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
53353           ENDIF
53354           IF( XXC(5).LT.AXMI ) THEN
53355             XXC(5)=1D6
53356           ENDIF
53357           XXC(7)=XXC(5)
53358           LKNT=LKNT+1
53359           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
53360      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53361           IDLAM(LKNT,1)=KFCCHI(1)
53362           IDLAM(LKNT,2)=5
53363           IDLAM(LKNT,3)=-5
53364         ENDIF
53365  
53366 C...U-TYPE QUARKS
53367   140   CONTINUE
53368         IA=2
53369         JA=1
53370         EI=KCHG(IABS(IA),1)/3D0
53371         T3I=SIGN(1D0,EI+1D-6)/2D0
53372         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
53373         XXC(6)=1D6
53374         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
53375         CXC(2)=DCMPLX(0D0,0D0)
53376         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
53377         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
53378         CXC(5)=-DCMPLX(EI/XW1)*ORPP
53379         CXC(6)=DCMPLX(0D0,0D0)
53380         CXC(7)=-DCMPLX(EI/XW1)*OLPP
53381         CXC(8)=DCMPLX(0D0,0D0)
53382         IF( XXC(5).LT.AXMI ) THEN
53383           XXC(5)=1D6
53384         ENDIF
53385         XXC(7)=XXC(5)
53386         XXC(8)=XXC(6)
53387         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
53388           LKNT=LKNT+1
53389           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
53390      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53391           IDLAM(LKNT,1)=KFCCHI(1)
53392           IDLAM(LKNT,2)=2
53393           IDLAM(LKNT,3)=-2
53394           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
53395             LKNT=LKNT+1
53396             XLAM(LKNT)=XLAM(LKNT-1)
53397             IDLAM(LKNT,1)=KFCCHI(1)
53398             IDLAM(LKNT,2)=4
53399             IDLAM(LKNT,3)=-4
53400           ENDIF
53401         ENDIF
53402   150   CONTINUE
53403       ENDIF
53404  
53405 C...CHI_2+ -> CHI_1+ + H0_K
53406       EH(2)=COS(ALFA)
53407       EH(1)=SIN(ALFA)
53408       EH(3)=-SBETA
53409       DH(2)=-SIN(ALFA)
53410       DH(1)=COS(ALFA)
53411       DH(3)=COS(BETA)
53412       DO 160 IH=1,3
53413         XMH=PMAS(ITH(IH),1)
53414         XMH2=XMH**2
53415 C...NO 3-BODY OPTION
53416         IF(AXMI.GE.AXMJ+XMH) THEN
53417           LKNT=LKNT+1
53418           XL=PYLAMF(XMI2,XMJ2,XMH2)
53419           OLPP=(VMIXC(2,1)*DCONJG(UMIXC(1,2))*EH(IH) -
53420      &    VMIXC(2,2)*DCONJG(UMIXC(1,1))*DH(IH))/SR2
53421           ORPP=(DCONJG(VMIXC(1,1))*UMIXC(2,2)*EH(IH) -
53422      &    DCONJG(VMIXC(1,2))*UMIXC(2,1)*DH(IH))/SR2
53423           XMK=XMJ*ETAH(IH)
53424           GX2=ABS(OLPP)**2+ABS(ORPP)**2
53425           GLR=DBLE(OLPP*DCONJG(ORPP))
53426           XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
53427           IDLAM(LKNT,1)=KFCCHI(1)
53428           IDLAM(LKNT,2)=ITH(IH)
53429           IDLAM(LKNT,3)=0
53430         ENDIF
53431   160 CONTINUE
53432  
53433 C...CHI1 JUMPS TO HERE
53434   170 CONTINUE
53435  
53436 C...CHI+_I -> CHI0_J + W+
53437       DO 220 IJ=1,4
53438         XMJ=SMZ(IJ)
53439         AXMJ=ABS(XMJ)
53440         XMJ2=XMJ**2
53441         IF(AXMI.GE.AXMJ+XMW) THEN
53442           LKNT=LKNT+1
53443           DO 180 I=1,4
53444             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
53445   180     CONTINUE
53446           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
53447      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)
53448           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
53449      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)
53450           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
53451           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
53452           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
53453           IDLAM(LKNT,1)=KFNCHI(IJ)
53454           IDLAM(LKNT,2)=24
53455           IDLAM(LKNT,3)=0
53456 C...LEPTONS
53457         ELSEIF(AXMI.GE.AXMJ) THEN
53458           S12MIN=0D0
53459           S12MAX=(AXMI-AXMJ)**2
53460           DO 190 I=1,4
53461             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
53462   190     CONTINUE
53463           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
53464      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)/SR2
53465           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
53466      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)/SR2
53467           CXC(5)=DCMPLX(0D0,0D0)
53468           CXC(7)=DCMPLX(0D0,0D0)
53469           IA=11
53470           JA=12
53471           EI=KCHG(IA,1)/3D0
53472           T3I=SIGN(1D0,EI+1D-6)/2D0
53473           EJ=KCHG(JA,1)/3D0
53474           T3J=SIGN(1D0,EJ+1D-6)/2D0
53475           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
53476      &    TANW+ZMIXC(IJ,2)*T3J)/SR2
53477           CXC(4)=-DCONJG(UMIXC(IX,1))*(
53478      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)/SR2
53479           CXC(6)=DCMPLX(0D0,0D0)
53480           CXC(8)=DCMPLX(0D0,0D0)
53481           XXC(1)=0D0
53482           XXC(2)=XMJ
53483           XXC(3)=0D0
53484           XXC(4)=XMI
53485           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
53486           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
53487           XXC(9)=PMAS(24,1)
53488           XXC(10)=PMAS(24,2)
53489 CCC          IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
53490           IF(XXC(5).LT.AXMI) THEN
53491             XXC(5)=1D6
53492           ELSEIF(XXC(6).LT.AXMI) THEN
53493             XXC(6)=1D6
53494           ENDIF
53495           XXC(7)=XXC(6)
53496           XXC(8)=XXC(5)
53497 C...1/(2PI)**3*/(32*M**3)*G^4, G^2/(4*PI)= AEM/XW,
53498 C...--> 1/(16PI)/M**3*(AEM/XW)**2
53499           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
53500             LKNT=LKNT+1
53501             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53502             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
53503             IDLAM(LKNT,1)=KFNCHI(IJ)
53504             IDLAM(LKNT,2)=-11
53505             IDLAM(LKNT,3)=12
53506 C...ONLY DECAY CHI+1 -> E+ NU_E
53507             IF( IMSS(12).NE. 0 ) GOTO 260
53508             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
53509               LKNT=LKNT+1
53510               XLAM(LKNT)=XLAM(LKNT-1)
53511               IDLAM(LKNT,1)=KFNCHI(IJ)
53512               IDLAM(LKNT,2)=-13
53513               IDLAM(LKNT,3)=14
53514             ENDIF
53515           ENDIF
53516           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
53517             LKNT=LKNT+1
53518             IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
53519               XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
53520             ELSE
53521               XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
53522             ENDIF
53523             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
53524             IF(XXC(5).LT.AXMI) THEN
53525               XXC(5)=1D6
53526             ELSEIF(XXC(6).LT.AXMI) THEN
53527               XXC(6)=1D6
53528             ENDIF
53529             XXC(7)=XXC(6)
53530             XXC(8)=XXC(5)
53531             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53532             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
53533             IDLAM(LKNT,1)=KFNCHI(IJ)
53534             IDLAM(LKNT,2)=-15
53535             IDLAM(LKNT,3)=16
53536           ENDIF
53537  
53538 C...NOW, DO THE QUARKS
53539   200     CONTINUE
53540           IA=1
53541           JA=2
53542           EI=KCHG(IA,1)/3D0
53543           T3I=SIGN(1D0,EI+1D-6)/2D0
53544           EJ=KCHG(JA,1)/3D0
53545           T3J=SIGN(1D0,EJ+1D-6)/2D0
53546           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
53547      &    TANW+ZMIXC(IJ,2)*T3J)
53548           CXC(4)=-DCONJG(UMIXC(IX,1))*(
53549      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)
53550           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
53551           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
53552           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 210
53553           IF(XXC(5).LT.AXMI) THEN
53554             XXC(5)=1D6
53555           ENDIF
53556           IF(XXC(6).LT.AXMI) THEN
53557             XXC(6)=1D6
53558           ENDIF
53559           XXC(7)=XXC(6)
53560           XXC(8)=XXC(5)
53561           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
53562             LKNT=LKNT+1
53563             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
53564      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53565             IDLAM(LKNT,1)=KFNCHI(IJ)
53566             IDLAM(LKNT,2)=-1
53567             IDLAM(LKNT,3)=2
53568             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
53569               LKNT=LKNT+1
53570               XLAM(LKNT)=XLAM(LKNT-1)
53571               IDLAM(LKNT,1)=KFNCHI(IJ)
53572               IDLAM(LKNT,2)=-3
53573               IDLAM(LKNT,3)=4
53574             ENDIF
53575           ENDIF
53576   210     CONTINUE
53577         ENDIF
53578   220 CONTINUE
53579  
53580 C...CHI+_I -> CHI0_J + H+
53581       DO 230 IJ=1,4
53582         XMJ=SMZ(IJ)
53583         AXMJ=ABS(XMJ)
53584         XMJ2=XMJ**2
53585         XMHP=PMAS(ITHC,1)
53586         IF(AXMI.GE.AXMJ+XMHP) THEN
53587           LKNT=LKNT+1
53588           OLPP=CBETA*(ZMIXC(IJ,4)*DCONJG(VMIXC(IX,1))+(ZMIXC(IJ,2)+
53589      &    ZMIXC(IJ,1)*TANW)*DCONJG(VMIXC(IX,2))/SR2)
53590           ORPP=SBETA*(DCONJG(ZMIXC(IJ,3))*UMIXC(IX,1)-
53591      &    (DCONJG(ZMIXC(IJ,2))+DCONJG(ZMIXC(IJ,1))*TANW)*
53592      &    UMIXC(IX,2)/SR2)
53593           GX2=ABS(OLPP)**2+ABS(ORPP)**2
53594           GLR=DBLE(OLPP*DCONJG(ORPP))
53595           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
53596           IDLAM(LKNT,1)=KFNCHI(IJ)
53597           IDLAM(LKNT,2)=ITHC
53598           IDLAM(LKNT,3)=0
53599         ELSE
53600  
53601         ENDIF
53602   230 CONTINUE
53603  
53604 C...2-BODY DECAYS TO FERMION SFERMION
53605       DO 240 J=1,16
53606         IF(J.GE.7.AND.J.LE.10) GOTO 240
53607         IF(MOD(J,2).EQ.0) THEN
53608           KF1=KSUSY1+J-1
53609         ELSE
53610           KF1=KSUSY1+J+1
53611         ENDIF
53612         KF2=KF1+KSUSY1
53613         XMSF1=PMAS(PYCOMP(KF1),1)
53614         XMSF2=PMAS(PYCOMP(KF2),1)
53615         XMF=PMAS(J,1)
53616         IF(J.LE.6) THEN
53617           FCOL=3D0
53618         ELSE
53619           FCOL=1D0
53620         ENDIF
53621  
53622 C...U~ D_L
53623         IF(MOD(J,2).EQ.0) THEN
53624           XMFP=PMAS(J-1,1)
53625           CAL=UMIXC(IX,1)
53626           CBL=-XMF*VMIXC(IX,2)/XMW/SBETA/SR2
53627           CAR=-XMFP*UMIXC(IX,2)/XMW/CBETA/SR2
53628           CBR=0D0
53629           ISF=J-1
53630         ELSE
53631           XMFP=PMAS(J+1,1)
53632           CAL=VMIXC(IX,1)
53633           CBL=-XMF*UMIXC(IX,2)/XMW/CBETA/SR2
53634           CBR=0D0
53635           CAR=-XMFP*VMIXC(IX,2)/XMW/SBETA/SR2
53636           ISF=J+1
53637         ENDIF
53638  
53639 C...~U_L D
53640         IF(AXMI.GE.XMF+XMSF1) THEN
53641           LKNT=LKNT+1
53642           XMA2=XMSF1**2
53643           XMB2=XMF**2
53644           XL=PYLAMF(XMI2,XMA2,XMB2)
53645           CA=CAL*SFMIX(ISF,1)+CAR*SFMIX(ISF,2)
53646           CB=CBL*SFMIX(ISF,1)+CBR*SFMIX(ISF,2)
53647           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
53648      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
53649           IDLAM(LKNT,3)=0
53650           IF(MOD(J,2).EQ.0) THEN
53651             IDLAM(LKNT,1)=-KF1
53652             IDLAM(LKNT,2)=J
53653           ELSE
53654             IDLAM(LKNT,1)=KF1
53655             IDLAM(LKNT,2)=-J
53656           ENDIF
53657         ENDIF
53658  
53659 C...U~ D_R
53660         IF(AXMI.GE.XMF+XMSF2) THEN
53661           LKNT=LKNT+1
53662           XMA2=XMSF2**2
53663           XMB2=XMF**2
53664           CA=CAL*SFMIX(ISF,3)+CAR*SFMIX(ISF,4)
53665           CB=CBL*SFMIX(ISF,3)+CBR*SFMIX(ISF,4)
53666           XL=PYLAMF(XMI2,XMA2,XMB2)
53667           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
53668      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
53669           IDLAM(LKNT,3)=0
53670           IF(MOD(J,2).EQ.0) THEN
53671             IDLAM(LKNT,1)=-KF2
53672             IDLAM(LKNT,2)=J
53673           ELSE
53674             IDLAM(LKNT,1)=KF2
53675             IDLAM(LKNT,2)=-J
53676           ENDIF
53677         ENDIF
53678   240 CONTINUE
53679  
53680 C...3-BODY DECAY TO Q Q~' GLUINO, ONLY IF IT CANNOT PROCEED THROUGH
53681 C...A 2-BODY -- 2-BODY CHAIN
53682       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
53683       IF(AXMI.GE.XMJ) THEN
53684         AXMJ=ABS(XMJ)
53685         S12MIN=0D0
53686         S12MAX=(AXMI-AXMJ)**2
53687         XXC(1)=0D0
53688         XXC(2)=XMJ
53689         XXC(3)=0D0
53690         XXC(4)=XMI
53691         XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
53692         XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
53693         XXC(9)=1D6
53694         XXC(10)=0D0
53695         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
53696         ORPP=DCONJG(OLPP)
53697         CXC(1)=DCMPLX(0D0,0D0)
53698         CXC(3)=DCMPLX(0D0,0D0)
53699         CXC(5)=DCMPLX(0D0,0D0)
53700         CXC(7)=DCMPLX(0D0,0D0)
53701         CXC(2)=UMIXC(IX,1)*OLPP/SR2
53702         CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
53703         CXC(6)=DCMPLX(0D0,0D0)
53704         CXC(8)=DCMPLX(0D0,0D0)
53705         IF(XXC(5).LT.AXMI) THEN
53706           XXC(5)=1D6
53707         ELSEIF(XXC(6).LT.AXMI) THEN
53708           XXC(6)=1D6
53709         ENDIF
53710         XXC(7)=XXC(6)
53711         XXC(8)=XXC(5)
53712         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 250
53713         IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
53714           LKNT=LKNT+1
53715           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
53716      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
53717           IDLAM(LKNT,1)=KSUSY1+21
53718           IDLAM(LKNT,2)=-1
53719           IDLAM(LKNT,3)=2
53720           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
53721             LKNT=LKNT+1
53722             XLAM(LKNT)=XLAM(LKNT-1)
53723             IDLAM(LKNT,1)=KSUSY1+21
53724             IDLAM(LKNT,2)=-3
53725             IDLAM(LKNT,3)=4
53726           ENDIF
53727         ENDIF
53728   250   CONTINUE
53729       ENDIF
53730  
53731 C...R-violating decay modes (SKANDS).
53732       CALL PYRVCH(KFIN,XLAM,IDLAM,LKNT)
53733  
53734   260 IKNT=LKNT
53735       XLAM(0)=0D0
53736       DO 270 I=1,IKNT
53737         XLAM(0)=XLAM(0)+XLAM(I)
53738         IF(XLAM(I).LT.0D0) THEN
53739           WRITE(MSTU(11),*) ' XLAM(I) = ',XLAM(I),KCIN,
53740      &    (IDLAM(I,J),J=1,3)
53741           XLAM(I)=0D0
53742         ENDIF
53743   270 CONTINUE
53744       IF(XLAM(0).EQ.0D0) THEN
53745         XLAM(0)=1D-6
53746         WRITE(MSTU(11),*) ' XLAM(0) = ',XLAM(0)
53747         WRITE(MSTU(11),*) LKNT
53748         WRITE(MSTU(11),*) (XLAM(J),J=1,LKNT)
53749       ENDIF
53750  
53751       RETURN
53752       END
53753  
53754 C*********************************************************************
53755  
53756 C...PYXXZ6
53757 C...Used in the calculation of  inoi -> inoj + f + ~f.
53758  
53759       FUNCTION PYXXZ6(X)
53760  
53761 C...Double precision and integer declarations.
53762       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53763       IMPLICIT INTEGER(I-N)
53764       INTEGER PYK,PYCHGE,PYCOMP
53765 C...Parameter statement to help give large particle numbers.
53766       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53767      &KEXCIT=4000000,KDIMEN=5000000)
53768 C...Commonblocks.
53769       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53770 C      COMMON/PYINTS/XXM(20)
53771       COMPLEX*16 CXC
53772       COMMON/PYINTC/XXC(10),CXC(8)
53773       SAVE /PYDAT1/,/PYINTC/
53774  
53775 C...Local variables.
53776       COMPLEX*16 QLLS,QRRS,QRLS,QLRS,QLLU,QRRU,QLRT,QRLT
53777       DOUBLE PRECISION PYXXZ6,X
53778       DOUBLE PRECISION XM12,XM22,XM32,S,S13,WPROP2
53779       DOUBLE PRECISION WW,WF1,WF2,WFL1,WFL2
53780       DOUBLE PRECISION SIJ
53781       DOUBLE PRECISION XMV,XMG,XMSU1,XMSU2,XMSD1,XMSD2
53782       DOUBLE PRECISION OL2
53783       DOUBLE PRECISION S23MIN,S23MAX,S23AVE,S23DEL
53784       INTEGER I
53785  
53786 C...Statement functions.
53787 C...Integral from x to y of (t-a)(b-t) dt.
53788       TINT(X,Y,A,B)=(X-Y)*(-(X**2+X*Y+Y**2)/3D0+(B+A)*(X+Y)/2D0-A*B)
53789 C...Integral from x to y of (t-a)(b-t)/(t-c) dt.
53790       TINT2(X,Y,A,B,C)=(X-Y)*(-0.5D0*(X+Y)+(B+A-C))-
53791      &LOG(ABS((X-C)/(Y-C)))*(C-B)*(C-A)
53792 C...Integral from x to y of (t-a)(b-t)/(t-c)**2 dt.
53793       TINT3(X,Y,A,B,C)=-(X-Y)+(C-A)*(C-B)*(Y-X)/(X-C)/(Y-C)+
53794      &(B+A-2D0*C)*LOG(ABS((X-C)/(Y-C)))
53795 C...Integral from x to y of (t-a)/(b-t) dt.
53796       UTINT(X,Y,A,B)=LOG(ABS((X-A)/(B-X)*(B-Y)/(Y-A)))/(B-A)
53797 C...Integral from x to y of 1/(t-a) dt.
53798       TPROP(X,Y,A)=LOG(ABS((X-A)/(Y-A)))
53799  
53800       XM12=XXC(1)**2
53801       XM22=XXC(2)**2
53802       XM32=XXC(3)**2
53803       S=XXC(4)**2
53804       S13=X
53805  
53806       S23AVE=XM22+XM32-0.5D0/X*(X+XM32-XM12)*(X+XM22-S)
53807       S23DEL=0.5D0/X*SQRT( ( (X-XM12-XM32)**2-4D0*XM12*XM32)*
53808      &( (X-XM22-S)**2  -4D0*XM22*S  ) )
53809  
53810       S23MIN=(S23AVE-S23DEL)
53811       S23MAX=(S23AVE+S23DEL)
53812  
53813       XMSD1=XXC(5)**2
53814       XMSD2=XXC(7)**2
53815       XMSU1=XXC(6)**2
53816       XMSU2=XXC(8)**2
53817  
53818       XMV=XXC(9)
53819       XMG=XXC(10)
53820       QLLS=CXC(1)
53821       QLLU=CXC(2)
53822       QLRS=CXC(3)
53823       QLRT=CXC(4)
53824       QRLS=CXC(5)
53825       QRLT=CXC(6)
53826       QRRS=CXC(7)
53827       QRRU=CXC(8)
53828       WPROP2=(S13-XMV**2)**2+(XMV*XMG)**2
53829       SIJ=2D0*XXC(2)*XXC(4)*S13
53830       IF(XMV.LE.1000D0) THEN
53831         OL2=ABS(QLLS)**2+ABS(QRRS)**2+ABS(QLRS)**2+ABS(QRLS)**2
53832         OLR=-2D0*DBLE(QLRS*DCONJG(QLLS)+QRLS*DCONJG(QRRS))
53833         WW=(OL2*2D0*TINT(S23MAX,S23MIN,XM22,S)
53834      &  +OLR*SIJ*(S23MAX-S23MIN))/WPROP2
53835         IF(XXC(5).LE.10000D0) THEN
53836           WFL1=4D0*(DBLE(QLLS*DCONJG(QLLU))*
53837      &    TINT2(S23MAX,S23MIN,XM22,S,XMSD1)-
53838      &    .5D0*DBLE(QLLS*DCONJG(QLRT))*SIJ*TPROP(S23MAX,S23MIN,XMSD2)+
53839      &    DBLE(QLRS*DCONJG(QLRT))*TINT2(S23MAX,S23MIN,XM22,S,XMSD2)-
53840      &    .5D0*DBLE(QLRS*DCONJG(QLLU))*SIJ*TPROP(S23MAX,S23MIN,XMSD1))
53841      &    *(S13-XMV**2)/WPROP2
53842         ELSE
53843           WFL1=0D0
53844         ENDIF
53845  
53846         IF(XXC(6).LE.10000D0) THEN
53847           WFL2=4D0*(DBLE(QRRS*DCONJG(QRRU))*
53848      &    TINT2(S23MAX,S23MIN,XM22,S,XMSU1)-
53849      &    .5D0*DBLE(QRRS*DCONJG(QRLT))*SIJ*TPROP(S23MAX,S23MIN,XMSU2)+
53850      &    DBLE(QRLS*DCONJG(QRLT))*TINT2(S23MAX,S23MIN,XM22,S,XMSU2)-
53851      &    .5D0*DBLE(QRLS*DCONJG(QRRU))*SIJ*TPROP(S23MAX,S23MIN,XMSU1))
53852      &    *(S13-XMV**2)/WPROP2
53853         ELSE
53854           WFL2=0D0
53855         ENDIF
53856       ELSE
53857         WW=0D0
53858         WFL1=0D0
53859         WFL2=0D0
53860       ENDIF
53861       IF(XXC(5).LE.10000D0) THEN
53862         WF1=2D0*ABS(QLLU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD1)
53863      &  +2D0*ABS(QLRT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD2)
53864      &  - 2D0*DBLE(QLRT*DCONJG(QLLU))*
53865      &  SIJ*UTINT(S23MAX,S23MIN,XMSD1,XM22+S-S13-XMSD2)
53866       ELSE
53867         WF1=0D0
53868       ENDIF
53869       IF(XXC(6).LE.10000D0) THEN
53870         WF2=2D0*ABS(QRRU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU1)
53871      &  +2D0*ABS(QRLT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU2)
53872      &  - 2D0*DBLE(QRLT*DCONJG(QRRU))*
53873      &  SIJ*UTINT(S23MAX,S23MIN,XMSU1,XM22+S-S13-XMSU2)
53874       ELSE
53875         WF2=0D0
53876       ENDIF
53877  
53878       PYXXZ6=(WW+WF1+WF2+WFL1+WFL2)
53879  
53880       IF(PYXXZ6.LT.0D0) THEN
53881         WRITE(MSTU(11),*) ' NEGATIVE WT IN PYXXZ6 '
53882         WRITE(MSTU(11),*) (XXC(I),I=1,5)
53883         WRITE(MSTU(11),*) (XXC(I),I=6,10)
53884         WRITE(MSTU(11),*) WW,WF1,WF2,WFL1,WFL2
53885         WRITE(MSTU(11),*) S23MIN,S23MAX
53886         PYXXZ6=0D0
53887       ENDIF
53888  
53889       RETURN
53890       END
53891  
53892  
53893 C*********************************************************************
53894  
53895 C...PYXXGA
53896 C...Calculates chi0_i -> chi0_j + gamma.
53897  
53898       FUNCTION PYXXGA(C0,XM1,XM2,XMTR,XMTL)
53899  
53900 C...Double precision and integer declarations.
53901       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53902       IMPLICIT INTEGER(I-N)
53903       INTEGER PYK,PYCHGE,PYCOMP
53904  
53905 C...Local variables.
53906       DOUBLE PRECISION PYXXGA,C0,XM1,XM2,XMTR,XMTL
53907       DOUBLE PRECISION F1,F2
53908  
53909       F1=(1D0+XMTR/(1D0-XMTR)*LOG(XMTR))/(1D0-XMTR)
53910       F2=(1D0+XMTL/(1D0-XMTL)*LOG(XMTL))/(1D0-XMTL)
53911       PYXXGA=C0*((XM1**2-XM2**2)/XM1)**3
53912       PYXXGA=PYXXGA*(2D0/3D0*(F1+F2)-13D0/12D0)**2
53913  
53914       RETURN
53915       END
53916  
53917 C*********************************************************************
53918  
53919 C...PYX2XG
53920 C...Calculates the decay rate for ino -> ino + gauge boson.
53921  
53922       FUNCTION PYX2XG(C1,XM1,XM2,XM3,GX2,GLR)
53923  
53924 C...Double precision and integer declarations.
53925       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53926       IMPLICIT INTEGER(I-N)
53927       INTEGER PYK,PYCHGE,PYCOMP
53928  
53929 C...Local variables.
53930       DOUBLE PRECISION PYX2XG,XM1,XM2,XM3,GX2,GLR
53931       DOUBLE PRECISION XL,PYLAMF,C1
53932       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
53933  
53934       XMI2=XM1**2
53935       XMI3=ABS(XM1**3)
53936       XMJ2=XM2**2
53937       XMV2=XM3**2
53938       XL=PYLAMF(XMI2,XMJ2,XMV2)
53939       PYX2XG=C1/8D0/XMI3*SQRT(XL)
53940      &*(GX2*(XL+3D0*XMV2*(XMI2+XMJ2-XMV2))-
53941      &12D0*GLR*XM1*XM2*XMV2)
53942  
53943       RETURN
53944       END
53945  
53946 C*********************************************************************
53947  
53948 C...PYX2XH
53949 C...Calculates the decay rate for ino -> ino + H.
53950  
53951       FUNCTION PYX2XH(C1,XM1,XM2,XM3,GX2,GLR)
53952  
53953 C...Double precision and integer declarations.
53954       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53955       IMPLICIT INTEGER(I-N)
53956       INTEGER PYK,PYCHGE,PYCOMP
53957  
53958 C...Local variables.
53959       DOUBLE PRECISION PYX2XH,XM1,XM2,XM3
53960       DOUBLE PRECISION XL,PYLAMF,C1
53961       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
53962  
53963       XMI2=XM1**2
53964       XMI3=ABS(XM1**3)
53965       XMJ2=XM2**2
53966       XMV2=XM3**2
53967       XL=PYLAMF(XMI2,XMJ2,XMV2)
53968       PYX2XH=C1/8D0/XMI3*SQRT(XL)
53969      &*(GX2*(XMI2+XMJ2-XMV2)+
53970      &4D0*GLR*XM1*XM2)
53971  
53972       RETURN
53973       END
53974  
53975 C*********************************************************************
53976  
53977 C...PYHEXT
53978 C...Calculates the non-standard decay modes of the Higgs boson.
53979 C...
53980 C...Author:  Stephen Mrenna
53981 C...Last Update:  April 2001
53982 C......Allow complex values for Z,U, and V
53983  
53984       SUBROUTINE PYHEXT(KFIN,XLAM,IDLAM,IKNT)
53985  
53986 C...Double precision and integer declarations.
53987       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53988       IMPLICIT INTEGER(I-N)
53989       INTEGER PYK,PYCHGE,PYCOMP
53990 C...Parameter statement to help give large particle numbers.
53991       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53992      &KEXCIT=4000000,KDIMEN=5000000)
53993 C...Commonblocks.
53994       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53995       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53996       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
53997       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
53998       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
53999      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
54000       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/,/PYSSMT/
54001  
54002 C...Local variables.
54003       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
54004       COMPLEX*16 QIJ,RIJ,F21K,F12K
54005       INTEGER KFIN
54006       DOUBLE PRECISION XMI,XMJ,XMF,XMW,XMW2,XMZ,AXMJ,AXMI
54007       DOUBLE PRECISION XMI2,XMI3,XMJ2
54008       DOUBLE PRECISION PYLAMF,XL,CF,EI
54009       INTEGER IDU,IFL
54010       DOUBLE PRECISION TANW,XW,AEM,C1,AS
54011       DOUBLE PRECISION PYH2XX,GHLL,GHRR,GHLR
54012       DOUBLE PRECISION XLAM(0:400)
54013       INTEGER IDLAM(400,3)
54014       INTEGER LKNT,IH,J,IJ,I,IKNT,IK
54015       INTEGER ITH(4)
54016       INTEGER KFNCHI(4),KFCCHI(2)
54017       DOUBLE PRECISION ETAH(3),CH(3),DH(3),EH(3)
54018       DOUBLE PRECISION SR2
54019       DOUBLE PRECISION BETA,ALFA
54020       DOUBLE PRECISION CBETA,SBETA,GR,GL,TANB
54021       DOUBLE PRECISION PYALEM
54022       DOUBLE PRECISION AL,AR,ALR
54023       DOUBLE PRECISION XMK,AXMK,COSA,SINA,CW,XML
54024       DOUBLE PRECISION XMUZ,ATRIT,ATRIB,ATRIL
54025       DOUBLE PRECISION XMJL,XMJR,XM1,XM2
54026       DATA ITH/25,35,36,37/
54027       DATA ETAH/1D0,1D0,-1D0/
54028       DATA SR2/1.4142136D0/
54029       DATA KFNCHI/1000022,1000023,1000025,1000035/
54030       DATA KFCCHI/1000024,1000037/
54031  
54032 C...COUNT THE NUMBER OF DECAY MODES
54033       LKNT=IKNT
54034  
54035       XMW=PMAS(24,1)
54036       XMW2=XMW**2
54037       XMZ=PMAS(23,1)
54038       XW=PARU(102)
54039       TANW = SQRT(XW/(1D0-XW))
54040       CW=SQRT(1D0-XW)
54041  
54042 C...1 - 4 DEPENDING ON Higgs species.
54043       IH=1
54044       IF(KFIN.EQ.ITH(2)) IH=2
54045       IF(KFIN.EQ.ITH(3)) IH=3
54046       IF(KFIN.EQ.ITH(4)) IH=4
54047  
54048       XMI=PMAS(KFIN,1)
54049       XMI2=XMI**2
54050       AXMI=ABS(XMI)
54051       AEM=PYALEM(XMI2)
54052       C1=AEM/XW
54053       XMI3=ABS(XMI**3)
54054  
54055       TANB=RMSS(5)
54056       BETA=ATAN(TANB)
54057       CBETA=COS(BETA)
54058       SBETA=TANB*CBETA
54059       ALFA=RMSS(18)
54060       COSA=COS(ALFA)
54061       SINA=SIN(ALFA)
54062       ATRIT=RMSS(16)
54063       ATRIB=RMSS(15)
54064       ATRIL=RMSS(17)
54065       XMUZ=-RMSS(4)
54066  
54067       DO 110 I=1,4
54068         DO 100 J=1,4
54069           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
54070   100   CONTINUE
54071   110 CONTINUE
54072       DO 130 I=1,2
54073         DO 120 J=1,2
54074            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
54075            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
54076   120   CONTINUE
54077   130 CONTINUE
54078  
54079  
54080       IF(IH.EQ.4) GOTO 220
54081  
54082 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
54083 C...H0_K -> CHI0_I + CHI0_J
54084       EH(2)=SINA
54085       EH(1)=COSA
54086       EH(3)=CBETA
54087       DH(2)=COSA
54088       DH(1)=-SINA
54089       DH(3)=SBETA
54090       DO 150 IJ=1,4
54091         XMJ=SMZ(IJ)
54092         AXMJ=ABS(XMJ)
54093         DO 140 IK=1,IJ
54094           XMK=SMZ(IK)
54095           AXMK=ABS(XMK)
54096           IF(AXMI.GE.AXMJ+AXMK) THEN
54097             LKNT=LKNT+1
54098             QIJ=ZMIXC(IK,3)*ZMIXC(IJ,2)+
54099      &      ZMIXC(IJ,3)*ZMIXC(IK,2)-
54100      &      TANW*(ZMIXC(IK,3)*ZMIXC(IJ,1)+
54101      &      ZMIXC(IJ,3)*ZMIXC(IK,1))
54102             RIJ=ZMIXC(IK,4)*ZMIXC(IJ,2)+
54103      &      ZMIXC(IJ,4)*ZMIXC(IK,2)-
54104      &      TANW*(ZMIXC(IK,4)*ZMIXC(IJ,1)+
54105      &      ZMIXC(IJ,4)*ZMIXC(IK,1))
54106             F21K=0.5D0*DCONJG(QIJ*DH(IH)-RIJ*EH(IH))
54107             F12K=0.5D0*(QIJ*DH(IH)-RIJ*EH(IH))
54108 C...SIGN OF MASSES I,J
54109             XML=XMK*ETAH(IH)
54110             GX2=ABS(F12K)**2+ABS(F21K)**2
54111             GLR=DBLE(F12K*DCONJG(F21K))
54112             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
54113             IF(IJ.EQ.IK) XLAM(LKNT)=XLAM(LKNT)*0.5D0
54114             IDLAM(LKNT,1)=KFNCHI(IJ)
54115             IDLAM(LKNT,2)=KFNCHI(IK)
54116             IDLAM(LKNT,3)=0
54117           ENDIF
54118   140   CONTINUE
54119   150 CONTINUE
54120  
54121 C...H0_K -> CHI+_I CHI-_J
54122       DO 170 IJ=1,2
54123         XMJ=SMW(IJ)
54124         AXMJ=ABS(XMJ)
54125         DO 160 IK=1,2
54126           XMK=SMW(IK)
54127           AXMK=ABS(XMK)
54128           IF(AXMI.GE.AXMJ+AXMK) THEN
54129             LKNT=LKNT+1
54130             OLPP=DCONJG(VMIXC(IJ,1)*UMIXC(IK,2)*DH(IH) +
54131      &      VMIXC(IJ,2)*UMIXC(IK,1)*EH(IH))/SR2
54132             ORPP=(VMIXC(IK,1)*UMIXC(IJ,2)*DH(IH) +
54133      &      VMIXC(IK,2)*UMIXC(IJ,1)*EH(IH))/SR2
54134             GX2=ABS(OLPP)**2+ABS(ORPP)**2
54135             GLR=DBLE(OLPP*DCONJG(ORPP))
54136             XML=XMK*ETAH(IH)
54137             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
54138             IDLAM(LKNT,1)=KFCCHI(IJ)
54139             IDLAM(LKNT,2)=-KFCCHI(IK)
54140             IDLAM(LKNT,3)=0
54141           ENDIF
54142   160   CONTINUE
54143   170 CONTINUE
54144  
54145 C...HIGGS TO SFERMION SFERMION
54146       DO 200 IFL=1,16
54147         IF(IFL.GE.7.AND.IFL.LE.10) GOTO 200
54148         IJ=KSUSY1+IFL
54149         XMJL=PMAS(PYCOMP(IJ),1)
54150         XMJR=PMAS(PYCOMP(IJ+KSUSY1),1)
54151         IF(AXMI.GE.2D0*MIN(XMJL,XMJR)) THEN
54152           XMJ=XMJL
54153           XMJ2=XMJ**2
54154           XL=PYLAMF(XMI2,XMJ2,XMJ2)
54155           XMF=PMAS(IFL,1)
54156           EI=KCHG(IFL,1)/3D0
54157           IDU=2-MOD(IFL,2)
54158  
54159           IF(IH.EQ.1) THEN
54160             IF(IDU.EQ.1) THEN
54161               GHLL=-XMZ/CW*(0.5D0+EI*XW)*SIN(ALFA+BETA)+
54162      &        XMF**2/XMW*SINA/CBETA
54163               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)+
54164      &        XMF**2/XMW*SINA/CBETA
54165               IF(IFL.EQ.5) THEN
54166                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
54167      &          ATRIB*SINA)
54168               ELSEIF(IFL.EQ.15) THEN
54169                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
54170      &          ATRIL*SINA)
54171               ELSE
54172                 GHLR=0D0
54173               ENDIF
54174             ELSE
54175               GHLL=XMZ/CW*(0.5D0-EI*XW)*SIN(ALFA+BETA)-
54176      &        XMF**2/XMW*COSA/SBETA
54177               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)-
54178      &        XMF**2/XMW*COSA/SBETA
54179               IF(IFL.EQ.6) THEN
54180                 GHLR=XMF/2D0/XMW/SBETA*(XMUZ*SINA-
54181      &          ATRIT*COSA)
54182               ELSE
54183                 GHLR=0D0
54184               ENDIF
54185             ENDIF
54186  
54187           ELSEIF(IH.EQ.2) THEN
54188             IF(IDU.EQ.1) THEN
54189               GHLL=XMZ/CW*(0.5D0+EI*XW)*COS(ALFA+BETA)-
54190      &        XMF**2/XMW*COSA/CBETA
54191               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
54192      &        XMF**2/XMW*COSA/CBETA
54193               IF(IFL.EQ.5) THEN
54194                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
54195      &          ATRIB*COSA)
54196               ELSEIF(IFL.EQ.15) THEN
54197                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
54198      &          ATRIL*COSA)
54199               ELSE
54200                 GHLR=0D0
54201               ENDIF
54202             ELSE
54203               GHLL=-XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)-
54204      &        XMF**2/XMW*SINA/SBETA
54205               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
54206      &        XMF**2/XMW*SINA/SBETA
54207               IF(IFL.EQ.6) THEN
54208                 GHLR=-XMF/2D0/XMW/SBETA*(XMUZ*COSA+
54209      &          ATRIT*SINA)
54210               ELSE
54211                 GHLR=0D0
54212               ENDIF
54213             ENDIF
54214  
54215           ELSEIF(IH.EQ.3) THEN
54216             GHLL=0D0
54217             GHRR=0D0
54218             GHLR=0D0
54219             IF(IDU.EQ.1) THEN
54220               IF(IFL.EQ.5) THEN
54221                 GHLR=XMF/2D0/XMW*(ATRIB*TANB-XMUZ)
54222               ELSEIF(IFL.EQ.15) THEN
54223                 GHLR=XMF/2D0/XMW*(ATRIL*TANB-XMUZ)
54224               ENDIF
54225             ELSE
54226               IF(IFL.EQ.6) THEN
54227                 GHLR=XMF/2D0/XMW*(ATRIT/TANB-XMUZ)
54228               ENDIF
54229             ENDIF
54230           ENDIF
54231           IF(IH.EQ.3) GOTO 180
54232  
54233           AL=SFMIX(IFL,1)**2
54234           AR=SFMIX(IFL,2)**2
54235           ALR=SFMIX(IFL,1)*SFMIX(IFL,2)
54236           IF(IFL.LE.6) THEN
54237             CF=3D0
54238           ELSE
54239             CF=1D0
54240           ENDIF
54241  
54242           IF(AXMI.GE.2D0*XMJ) THEN
54243             LKNT=LKNT+1
54244             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
54245      &      (GHLL*AL+GHRR*AR
54246      &      +2D0*GHLR*ALR)**2
54247             IDLAM(LKNT,1)=IJ
54248             IDLAM(LKNT,2)=-IJ
54249             IDLAM(LKNT,3)=0
54250           ENDIF
54251  
54252           IF(AXMI.GE.2D0*XMJR) THEN
54253             LKNT=LKNT+1
54254             AL=SFMIX(IFL,3)**2
54255             AR=SFMIX(IFL,4)**2
54256             ALR=SFMIX(IFL,3)*SFMIX(IFL,4)
54257             XMJ=XMJR
54258             XMJ2=XMJ**2
54259             XL=PYLAMF(XMI2,XMJ2,XMJ2)
54260             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
54261      &      (GHLL*AL+GHRR*AR
54262      &      +2D0*GHLR*ALR)**2
54263             IDLAM(LKNT,1)=IJ+KSUSY1
54264             IDLAM(LKNT,2)=-(IJ+KSUSY1)
54265             IDLAM(LKNT,3)=0
54266           ENDIF
54267   180     CONTINUE
54268  
54269           IF(AXMI.GE.XMJL+XMJR) THEN
54270             LKNT=LKNT+1
54271             AL=SFMIX(IFL,1)*SFMIX(IFL,3)
54272             AR=SFMIX(IFL,2)*SFMIX(IFL,4)
54273             ALR=SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,2)*SFMIX(IFL,3)
54274             XMJ=XMJR
54275             XMJ2=XMJ**2
54276             XL=PYLAMF(XMI2,XMJ2,XMJL**2)
54277             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
54278      &      (GHLL*AL+GHRR*AR)**2
54279             IDLAM(LKNT,1)=IJ
54280             IDLAM(LKNT,2)=-(IJ+KSUSY1)
54281             IDLAM(LKNT,3)=0
54282             LKNT=LKNT+1
54283             IDLAM(LKNT,1)=-IJ
54284             IDLAM(LKNT,2)=IJ+KSUSY1
54285             IDLAM(LKNT,3)=0
54286             XLAM(LKNT)=XLAM(LKNT-1)
54287           ENDIF
54288         ENDIF
54289   190   CONTINUE
54290   200 CONTINUE
54291   210 CONTINUE
54292  
54293       GOTO 270
54294   220 CONTINUE
54295  
54296 C...H+ -> CHI+_I + CHI0_J
54297       DO 240 IJ=1,4
54298         XMJ=SMZ(IJ)
54299         AXMJ=ABS(XMJ)
54300         XMJ2=XMJ**2
54301         DO 230 IK=1,2
54302           XMK=SMW(IK)
54303           AXMK=ABS(XMK)
54304           IF(AXMI.GE.AXMJ+AXMK) THEN
54305             LKNT=LKNT+1
54306             OLPP=CBETA*DCONJG(ZMIXC(IJ,4)*VMIXC(IK,1)+(ZMIXC(IJ,2)+
54307      &      ZMIXC(IJ,1)*TANW)*VMIXC(IK,2)/SR2)
54308             ORPP=SBETA*(ZMIXC(IJ,3)*UMIXC(IK,1)-
54309      &      (ZMIXC(IJ,2)+ZMIXC(IJ,1)*TANW)*UMIXC(IK,2)/SR2)
54310             GX2=ABS(OLPP)**2+ABS(ORPP)**2
54311             GLR=DBLE(OLPP*DCONJG(ORPP))
54312             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,-XMK,GX2,GLR)
54313             IDLAM(LKNT,1)=KFNCHI(IJ)
54314             IDLAM(LKNT,2)=KFCCHI(IK)
54315             IDLAM(LKNT,3)=0
54316           ENDIF
54317   230   CONTINUE
54318   240 CONTINUE
54319  
54320       GL=-XMW/SR2*(SIN(2D0*BETA)-PMAS(6,1)**2/TANB/XMW2)
54321       GR=-PMAS(6,1)/SR2/XMW*(XMUZ-ATRIT/TANB)
54322       AL=0D0
54323       AR=0D0
54324       CF=3D0
54325  
54326 C...H+ -> T_1 B_1~
54327       XM1=PMAS(PYCOMP(KSUSY1+6),1)
54328       XM2=PMAS(PYCOMP(KSUSY1+5),1)
54329       IF(XMI.GE.XM1+XM2) THEN
54330         XL=PYLAMF(XMI2,XM1**2,XM2**2)
54331         LKNT=LKNT+1
54332         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
54333      &  (GL*SFMIX(6,1)*SFMIX(5,1)+GR*SFMIX(6,2)*SFMIX(5,1))**2
54334         IDLAM(LKNT,1)=KSUSY1+6
54335         IDLAM(LKNT,2)=-(KSUSY1+5)
54336         IDLAM(LKNT,3)=0
54337       ENDIF
54338  
54339 C...H+ -> T_2 B_1~
54340       XM1=PMAS(PYCOMP(KSUSY2+6),1)
54341       XM2=PMAS(PYCOMP(KSUSY1+5),1)
54342       IF(XMI.GE.XM1+XM2) THEN
54343         XL=PYLAMF(XMI2,XM1**2,XM2**2)
54344         LKNT=LKNT+1
54345         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
54346      &  (GL*SFMIX(6,3)*SFMIX(5,1)+GR*SFMIX(6,4)*SFMIX(5,1))**2
54347         IDLAM(LKNT,1)=KSUSY2+6
54348         IDLAM(LKNT,2)=-(KSUSY1+5)
54349         IDLAM(LKNT,3)=0
54350       ENDIF
54351  
54352 C...H+ -> T_1 B_2~
54353       XM1=PMAS(PYCOMP(KSUSY1+6),1)
54354       XM2=PMAS(PYCOMP(KSUSY2+5),1)
54355       IF(XMI.GE.XM1+XM2) THEN
54356         XL=PYLAMF(XMI2,XM1**2,XM2**2)
54357         LKNT=LKNT+1
54358         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
54359      &  (GL*SFMIX(6,1)*SFMIX(5,3)+GR*SFMIX(6,2)*SFMIX(5,3))**2
54360         IDLAM(LKNT,1)=KSUSY1+6
54361         IDLAM(LKNT,2)=-(KSUSY2+5)
54362         IDLAM(LKNT,3)=0
54363       ENDIF
54364  
54365 C...H+ -> T_2 B_2~
54366       XM1=PMAS(PYCOMP(KSUSY2+6),1)
54367       XM2=PMAS(PYCOMP(KSUSY2+5),1)
54368       IF(XMI.GE.XM1+XM2) THEN
54369         XL=PYLAMF(XMI2,XM1**2,XM2**2)
54370         LKNT=LKNT+1
54371         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
54372      &  (GL*SFMIX(6,3)*SFMIX(5,3)+GR*SFMIX(6,4)*SFMIX(5,3))**2
54373         IDLAM(LKNT,1)=KSUSY2+6
54374         IDLAM(LKNT,2)=-(KSUSY2+5)
54375         IDLAM(LKNT,3)=0
54376       ENDIF
54377  
54378 C...H+ -> UL DL~
54379       GL=-XMW/SR2*SIN(2D0*BETA)
54380       DO 250 IJ=1,3,2
54381         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
54382         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
54383         IF(XMI.GE.XM1+XM2) THEN
54384           XL=PYLAMF(XMI2,XM1**2,XM2**2)
54385           LKNT=LKNT+1
54386           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
54387           IDLAM(LKNT,1)=-(KSUSY1+IJ)
54388           IDLAM(LKNT,2)=KSUSY1+IJ+1
54389           IDLAM(LKNT,3)=0
54390         ENDIF
54391   250 CONTINUE
54392  
54393 C...H+ -> EL~ NUL
54394       CF=1D0
54395       DO 260 IJ=11,13,2
54396         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
54397         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
54398         IF(XMI.GE.XM1+XM2) THEN
54399           XL=PYLAMF(XMI2,XM1**2,XM2**2)
54400           LKNT=LKNT+1
54401           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
54402           IDLAM(LKNT,1)=-(KSUSY1+IJ)
54403           IDLAM(LKNT,2)=KSUSY1+IJ+1
54404           IDLAM(LKNT,3)=0
54405         ENDIF
54406   260 CONTINUE
54407  
54408 C...H+ -> TAU1 NUTAUL
54409       XM1=PMAS(PYCOMP(KSUSY1+15),1)
54410       XM2=PMAS(PYCOMP(KSUSY1+16),1)
54411       IF(XMI.GE.XM1+XM2) THEN
54412         XL=PYLAMF(XMI2,XM1**2,XM2**2)
54413         LKNT=LKNT+1
54414         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,1)**2
54415         IDLAM(LKNT,1)=-(KSUSY1+15)
54416         IDLAM(LKNT,2)= KSUSY1+16
54417         IDLAM(LKNT,3)=0
54418       ENDIF
54419  
54420 C...H+ -> TAU2 NUTAUL
54421       XM1=PMAS(PYCOMP(KSUSY2+15),1)
54422       XM2=PMAS(PYCOMP(KSUSY1+16),1)
54423       IF(XMI.GE.XM1+XM2) THEN
54424         XL=PYLAMF(XMI2,XM1**2,XM2**2)
54425         LKNT=LKNT+1
54426         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,3)**2
54427         IDLAM(LKNT,1)=-(KSUSY2+15)
54428         IDLAM(LKNT,2)= KSUSY1+16
54429         IDLAM(LKNT,3)=0
54430       ENDIF
54431  
54432   270 CONTINUE
54433       IKNT=LKNT
54434       XLAM(0)=0D0
54435       DO 280 I=1,IKNT
54436         IF(XLAM(I).LE.0D0) XLAM(I)=0D0
54437         XLAM(0)=XLAM(0)+XLAM(I)
54438   280 CONTINUE
54439       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
54440  
54441       RETURN
54442       END
54443  
54444 C*********************************************************************
54445  
54446 C...PYH2XX
54447 C...Calculates the decay rate for a Higgs to an ino pair.
54448  
54449       FUNCTION PYH2XX(C1,XM1,XM2,XM3,GX2,GLR)
54450  
54451 C...Double precision and integer declarations.
54452       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54453       IMPLICIT INTEGER(I-N)
54454       INTEGER PYK,PYCHGE,PYCOMP
54455 C...Commonblocks.
54456       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54457       SAVE /PYDAT1/
54458  
54459 C...Local variables.
54460       DOUBLE PRECISION PYH2XX,XM1,XM2,XM3,GL,GR
54461       DOUBLE PRECISION XL,PYLAMF,C1
54462       DOUBLE PRECISION XMI2,XMJ2,XMK2,XMI3
54463  
54464       XMI2=XM1**2
54465       XMI3=ABS(XM1**3)
54466       XMJ2=XM2**2
54467       XMK2=XM3**2
54468       XL=PYLAMF(XMI2,XMJ2,XMK2)
54469       PYH2XX=C1/4D0/XMI3*SQRT(XL)
54470      &*(GX2*(XMI2-XMJ2-XMK2)-
54471      &4D0*GLR*XM3*XM2)
54472       IF(PYH2XX.LT.0D0) PYH2XX=0D0
54473  
54474       RETURN
54475       END
54476  
54477 C*********************************************************************
54478  
54479 C...PYGAUS
54480 C...Integration by adaptive Gaussian quadrature.
54481 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
54482  
54483       FUNCTION PYGAUS(F, A, B, EPS)
54484  
54485 C...Double precision and integer declarations.
54486       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54487       IMPLICIT INTEGER(I-N)
54488       INTEGER PYK,PYCHGE,PYCOMP
54489  
54490 C...Local declarations.
54491       EXTERNAL F
54492       DOUBLE PRECISION F,W(12), X(12)
54493       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
54494       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
54495       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
54496       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
54497       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
54498       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
54499       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
54500       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
54501       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
54502       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
54503       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
54504       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
54505  
54506 C...The Gaussian quadrature algorithm.
54507       H = 0D0
54508       IF(B .EQ. A) GOTO 140
54509       CONST = 5D-3 / ABS(B-A)
54510       BB = A
54511   100 CONTINUE
54512       AA = BB
54513       BB = B
54514   110 CONTINUE
54515       C1 = 0.5D0*(BB+AA)
54516       C2 = 0.5D0*(BB-AA)
54517       S8 = 0D0
54518       DO 120 I = 1, 4
54519         U = C2*X(I)
54520         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
54521   120 CONTINUE
54522       S16 = 0D0
54523       DO 130 I = 5, 12
54524         U = C2*X(I)
54525         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
54526   130 CONTINUE
54527       S16 = C2*S16
54528       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
54529         H = H + S16
54530         IF(BB .NE. B) GOTO 100
54531       ELSE
54532         BB = C1
54533         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
54534         H = 0D0
54535         CALL PYERRM(18,'(PYGAUS:) too high accuracy required')
54536         GOTO 140
54537       ENDIF
54538   140 CONTINUE
54539       PYGAUS = H
54540  
54541       RETURN
54542       END
54543  
54544 C*********************************************************************
54545  
54546 C...PYGAU2
54547 C...Integration by adaptive Gaussian quadrature.
54548 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
54549 C...Carbon copy of PYGAUS, but avoids having to use it recursively.
54550  
54551       FUNCTION PYGAU2(F, A, B, EPS)
54552  
54553 C...Double precision and integer declarations.
54554       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54555       IMPLICIT INTEGER(I-N)
54556       INTEGER PYK,PYCHGE,PYCOMP
54557  
54558 C...Local declarations.
54559       EXTERNAL F
54560       DOUBLE PRECISION F,W(12), X(12)
54561       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
54562       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
54563       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
54564       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
54565       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
54566       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
54567       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
54568       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
54569       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
54570       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
54571       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
54572       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
54573  
54574 C...The Gaussian quadrature algorithm.
54575       H = 0D0
54576       IF(B .EQ. A) GOTO 140
54577       CONST = 5D-3 / ABS(B-A)
54578       BB = A
54579   100 CONTINUE
54580       AA = BB
54581       BB = B
54582   110 CONTINUE
54583       C1 = 0.5D0*(BB+AA)
54584       C2 = 0.5D0*(BB-AA)
54585       S8 = 0D0
54586       DO 120 I = 1, 4
54587         U = C2*X(I)
54588         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
54589   120 CONTINUE
54590       S16 = 0D0
54591       DO 130 I = 5, 12
54592         U = C2*X(I)
54593         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
54594   130 CONTINUE
54595       S16 = C2*S16
54596       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
54597         H = H + S16
54598         IF(BB .NE. B) GOTO 100
54599       ELSE
54600         BB = C1
54601         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
54602         H = 0D0
54603         CALL PYERRM(18,'(PYGAU2:) too high accuracy required')
54604         GOTO 140
54605       ENDIF
54606   140 CONTINUE
54607       PYGAU2 = H
54608  
54609       RETURN
54610       END
54611  
54612 C*********************************************************************
54613  
54614 C...PYSIMP
54615 C...Simpson formula for an integral.
54616  
54617       FUNCTION PYSIMP(Y,X0,X1,N)
54618  
54619 C...Double precision and integer declarations.
54620       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54621       IMPLICIT INTEGER(I-N)
54622       INTEGER PYK,PYCHGE,PYCOMP
54623  
54624 C...Local variables.
54625       DOUBLE PRECISION Y,X0,X1,H,S
54626       DIMENSION Y(0:N)
54627  
54628       S=0D0
54629       H=(X1-X0)/N
54630       DO 100 I=0,N-2,2
54631         S=S+Y(I)+4D0*Y(I+1)+Y(I+2)
54632   100 CONTINUE
54633       PYSIMP=S*H/3D0
54634  
54635       RETURN
54636       END
54637  
54638 C*********************************************************************
54639  
54640 C...PYLAMF
54641 C...The standard lambda function.
54642  
54643       FUNCTION PYLAMF(X,Y,Z)
54644  
54645 C...Double precision and integer declarations.
54646       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54647       IMPLICIT INTEGER(I-N)
54648       INTEGER PYK,PYCHGE,PYCOMP
54649  
54650 C...Local variables.
54651       DOUBLE PRECISION PYLAMF,X,Y,Z
54652  
54653       PYLAMF=(X-(Y+Z))**2-4D0*Y*Z
54654       IF(PYLAMF.LT.0D0) PYLAMF=0D0
54655  
54656       RETURN
54657       END
54658  
54659 C*********************************************************************
54660  
54661 C...PYTBDY
54662 C...Generates 3-body decays of gauginos.
54663  
54664       SUBROUTINE PYTBDY(IDIN)
54665  
54666 C...Double precision and integer declarations.
54667       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54668       IMPLICIT INTEGER(I-N)
54669       INTEGER PYK,PYCHGE,PYCOMP
54670 C...Parameter statement to help give large particle numbers.
54671       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
54672      &KEXCIT=4000000,KDIMEN=5000000)
54673 C...Commonblocks.
54674       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
54675       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54676       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54677 C     COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54678       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
54679       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
54680      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
54681 C     SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYSSMT/
54682       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYSSMT/
54683  
54684 C...Local variables.
54685       DOUBLE PRECISION XM(5)
54686       COMPLEX*16 OLPP,ORPP,QLL,QLR,QRR,QRL,GLIJ,GRIJ,PROPZ
54687       COMPLEX*16 QLLS,QRRS,QLRS,QRLS,QLLU,QRRU,QLRT,QRLT
54688       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
54689       DOUBLE PRECISION S12MIN,S12MAX,YJACO1,S23AVE,S23DF1,S23DF2
54690       DOUBLE PRECISION D1,D2,D3,P1,P2,P3,CTHE1,STHE1,CTHE3,STHE3
54691       DOUBLE PRECISION CPHI1,SPHI1
54692       DOUBLE PRECISION S23DEL,EPS
54693       DOUBLE PRECISION GOLDEN,AX,BX,CX,TOL,XMIN,R,C
54694       PARAMETER (R=0.61803399D0,C=1D0-R,TOL=1D-3)
54695       DOUBLE PRECISION F1,F2,X0,X1,X2,X3
54696       INTEGER INOID(4)
54697       DATA INOID/22,23,25,35/
54698       DATA EPS/1D-6/
54699  
54700       ID=IDIN
54701       ISKIP=1
54702       XM(1)=P(N+1,5)
54703       XM(2)=P(N+2,5)
54704       XM(3)=P(N+3,5)
54705       XM(5)=P(ID,5)
54706  
54707 C...GENERATE S12
54708       S12MIN=(XM(1)+XM(2))**2
54709       S12MAX=(XM(5)-XM(3))**2
54710       YJACO1=S12MAX-S12MIN
54711  
54712 C...Initialize some parameters
54713       XW=PARU(102)
54714       XW1=1D0-XW
54715       TANW=SQRT(XW/XW1)
54716       IZID1=0
54717       IWID1=0
54718       IZID2=0
54719       IWID2=0
54720 
54721       IA=K(N+2,2)
54722       JA=K(N+3,2)
54723 
54724 C...Mrenna: check that we are indeed decaying a SUSY particle
54725       IF(IABS(K(ID,2)).LT.KSUSY1.OR.IABS(K(ID,2)).GE.3000000) THEN
54726       
54727       ELSE
54728         DO 100 I1=1,4
54729           IF(MOD(K(N+1,2),KSUSY1).EQ.INOID(I1)) IZID1=I1
54730           IF(MOD(K(ID,2),KSUSY1).EQ.INOID(I1)) IZID2=I1
54731  100    CONTINUE
54732         IF(MOD(K(N+1,2),KSUSY1).EQ.24) IWID1=1
54733         IF(MOD(K(N+1,2),KSUSY1).EQ.37) IWID1=2
54734         IF(MOD(K(ID,2),KSUSY1).EQ.24) IWID2=1
54735         IF(MOD(K(ID,2),KSUSY1).EQ.37) IWID2=2
54736         ZM12=XM(5)**2
54737         ZM22=XM(1)**2
54738         EI=KCHG(PYCOMP(IABS(IA)),1)/3D0
54739         T3I=SIGN(1D0,EI+1D-6)/2D0
54740       ENDIF
54741 
54742       IF(MSTP(47).EQ.0) THEN
54743         ISKIP=0
54744       ELSEIF(MAX(ABS(IA),ABS(JA)).EQ.6) THEN
54745         ISKIP=0
54746       ELSEIF(IZID1*IZID2.NE.0) THEN
54747         SQMZ=PMAS(23,1)**2
54748         GMMZ=PMAS(23,1)*PMAS(23,2)
54749         DO 110 I=1,4
54750           ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
54751           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
54752   110   CONTINUE
54753         OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
54754      &  ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
54755         ORPP=DCONJG(OLPP)
54756         XLL2=PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
54757         XLR2=XLL2
54758         XRR2=PMAS(PYCOMP(KSUSY2+IABS(IA)),1)**2
54759         XRL2=XRR2
54760         GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
54761      &  DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
54762         GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
54763         XM1M2=SMZ(IZID1)*SMZ(IZID2)
54764         QLLS=DCMPLX((T3I-EI*XW)/XW1)*OLPP
54765         QLLU=-GLIJ
54766         QLRS=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
54767         QLRT=DCONJG(GLIJ)
54768         QRLS=-DCMPLX((EI*XW)/XW1)*OLPP
54769         QRLT=GRIJ
54770         QRRS=DCMPLX((EI*XW)/XW1)*ORPP
54771         QRRU=-DCONJG(GRIJ)
54772       ELSEIF(IZID1*IWID2.NE.0.OR.IZID2*IWID1.NE.0) THEN
54773         IF(IZID1.NE.0) THEN
54774           XM1M2=SMZ(IZID1)*SMW(IWID2)
54775           IZID1=IWID2
54776           IZID2=IZID1
54777         ELSE
54778           XM1M2=SMZ(IZID2)*SMW(IWID1)
54779           IZID1=IWID1
54780         ENDIF
54781         RT2I = 1D0/SQRT(2D0)
54782         SQMZ=PMAS(24,1)**2
54783         GMMZ=PMAS(24,1)*PMAS(24,2)
54784         DO 120 I=1,2
54785           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
54786           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
54787   120   CONTINUE
54788         DO 130 I=1,4
54789           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
54790   130   CONTINUE
54791         QLLS=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
54792      &  DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)
54793         QLRS=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
54794      &  ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)
54795         EJ=KCHG(IABS(JA),1)/3D0
54796         T3J=SIGN(1D0,EJ+1D-6)/2D0
54797         QRLS=DCMPLX(0D0,0D0)
54798         QRLT=QRLS
54799         QRRS=QRLS
54800         QRRU=QRLS
54801         XRR2=1D6**2
54802         XRL2=XRR2
54803         XLR2  = PMAS(PYCOMP(KSUSY1+IABS(JA)),1)**2
54804         XLL2  = PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
54805         IF(MOD(IA,2).EQ.0) THEN
54806           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
54807      &    TANW+ZMIXC(IZID2,2)*T3I)
54808           QLRT=-DCONJG(UMIXC(IZID1,1))*(
54809      &    ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
54810         ELSE
54811           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
54812      &    TANW+ZMIXC(IZID2,2)*T3J)
54813           QLRT=-DCONJG(UMIXC(IZID1,1))*(
54814      &    ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
54815         ENDIF
54816       ELSEIF(IWID1*IWID2.NE.0) THEN
54817         IZID1=IWID1
54818         IZID2=IWID2
54819         XM1M2=SMW(IWID1)*SMW(IWID2)
54820         SQMZ=PMAS(23,1)**2
54821         GMMZ=PMAS(23,1)*PMAS(23,2)
54822         DO 140 I=1,2
54823           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
54824           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
54825           VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
54826           UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
54827   140   CONTINUE
54828         OLPP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
54829      &  VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0
54830         ORPP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
54831      &  UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0
54832         QRLS=-DCMPLX(EI/XW1)*ORPP
54833         QLLS=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
54834         QRRS=-DCMPLX(EI/XW1)*OLPP
54835         QLRS=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
54836         IF(MOD(IA,2).EQ.0) THEN
54837           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)-1),1)**2
54838           QLRT=-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*DCMPLX(T3I/XW)
54839         ELSE
54840           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)+1),1)**2
54841           QLRT=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*DCMPLX(T3I/XW)
54842         ENDIF
54843       ELSEIF(MOD(K(N+1,2),KSUSY1).EQ.21.OR.MOD(K(ID,2),KSUSY1).EQ.21)
54844      &THEN
54845         ISKIP=0
54846       ELSE
54847         ISKIP=0
54848       ENDIF
54849  
54850       IF(ISKIP.NE.0) THEN
54851         WTMAX=0D0
54852         DO 160 KT=1,100
54853           S12=S12MIN+YJACO1*(KT-1)/99
54854           S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
54855      &    *(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
54856           S23DF1=(S12-XM(2)**2-XM(1)**2)**2
54857      &    -(2D0*XM(1)*XM(2))**2
54858           S23DF2=(S12-XM(3)**2-XM(5)**2)**2
54859      &    -(2D0*XM(3)*XM(5))**2
54860           S23DF1=S23DF1*EPS
54861           S23DF2=S23DF2*EPS
54862           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
54863           S23DEL=S23DEL/EPS
54864           S23MIN=S23AVE-S23DEL
54865           S23MAX=S23AVE+S23DEL
54866           YJACO2=S23MAX-S23MIN
54867           TH=S12
54868           DO 150 KS=1,100
54869             S23=S23MIN+YJACO2*(KS-1)/99
54870             SH=S23
54871             UH=ZM12+ZM22-SH-TH
54872             WU2 = (UH-ZM12)*(UH-ZM22)
54873             WT2 = (TH-ZM12)*(TH-ZM22)
54874             WS2 = XM1M2*SH
54875             PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
54876             PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
54877             QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
54878             QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
54879             QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
54880             QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
54881             WT0=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
54882      &      (ABS(QRL)**2+ABS(QLR)**2)*WT2+
54883      &      2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
54884             IF(WT0.GT.WTMAX) WTMAX=WT0
54885   150     CONTINUE
54886   160   CONTINUE
54887  
54888         WTMAX=WTMAX*1.05D0
54889       ENDIF
54890  
54891 C...FIND S12*
54892       AX=S12MIN
54893       CX=S12MAX
54894       BX=S12MIN+0.5D0*YJACO1
54895       X0=AX
54896       X3=CX
54897       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
54898         X1=BX
54899         X2=BX+C*(CX-BX)
54900       ELSE
54901         X2=BX
54902         X1=BX-C*(BX-AX)
54903       ENDIF
54904  
54905 C...SOLVE FOR F1 AND F2
54906       S23DF1=(X1-XM(2)**2-XM(1)**2)**2
54907      &-(2D0*XM(1)*XM(2))**2
54908       S23DF2=(X1-XM(3)**2-XM(5)**2)**2
54909      &-(2D0*XM(3)*XM(5))**2
54910       S23DF1=S23DF1*EPS
54911       S23DF2=S23DF2*EPS
54912       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
54913       F1=-2D0*S23DEL/EPS
54914       S23DF1=(X2-XM(2)**2-XM(1)**2)**2
54915      &-(2D0*XM(1)*XM(2))**2
54916       S23DF2=(X2-XM(3)**2-XM(5)**2)**2
54917      &-(2D0*XM(3)*XM(5))**2
54918       S23DF1=S23DF1*EPS
54919       S23DF2=S23DF2*EPS
54920       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
54921       F2=-2D0*S23DEL/EPS
54922  
54923   170 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2)))THEN
54924 C...Possibility of infinite loop with .LT.; changed to .LE. (SKANDS)
54925         IF(F2.LE.F1)THEN
54926           X0=X1
54927           X1=X2
54928           X2=R*X1+C*X3
54929           F1=F2
54930           S23DF1=(X2-XM(2)**2-XM(1)**2)**2
54931      &    -(2D0*XM(1)*XM(2))**2
54932           S23DF2=(X2-XM(3)**2-XM(5)**2)**2
54933      &    -(2D0*XM(3)*XM(5))**2
54934           S23DF1=S23DF1*EPS
54935           S23DF2=S23DF2*EPS
54936           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
54937           F2=-2D0*S23DEL/EPS
54938         ELSE
54939           X3=X2
54940           X2=X1
54941           X1=R*X2+C*X0
54942           F2=F1
54943           S23DF1=(X1-XM(2)**2-XM(1)**2)**2
54944      &    -(2D0*XM(1)*XM(2))**2
54945           S23DF2=(X1-XM(3)**2-XM(5)**2)**2
54946      &    -(2D0*XM(3)*XM(5))**2
54947           S23DF1=S23DF1*EPS
54948           S23DF2=S23DF2*EPS
54949           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
54950           F1=-2D0*S23DEL/EPS
54951         ENDIF
54952         GOTO 170
54953       ENDIF
54954 C...WE WANT THE MAXIMUM, NOT THE MINIMUM
54955       IF(F1.LT.F2)THEN
54956         GOLDEN=-F1
54957         XMIN=X1
54958       ELSE
54959         GOLDEN=-F2
54960         XMIN=X2
54961       ENDIF
54962  
54963       IKNT=0
54964   180 S12=S12MIN+PYR(0)*YJACO1
54965       IKNT=IKNT+1
54966 C...GENERATE S23
54967       S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
54968      &*(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
54969       S23DF1=(S12-XM(2)**2-XM(1)**2)**2
54970      &-(2D0*XM(1)*XM(2))**2
54971       S23DF2=(S12-XM(3)**2-XM(5)**2)**2
54972      &-(2D0*XM(3)*XM(5))**2
54973       S23DF1=S23DF1*EPS
54974       S23DF2=S23DF2*EPS
54975       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
54976       S23DEL=S23DEL/EPS
54977       S23MIN=S23AVE-S23DEL
54978       S23MAX=S23AVE+S23DEL
54979       YJACO2=S23MAX-S23MIN
54980       S23=S23MIN+PYR(0)*YJACO2
54981  
54982 C...CHECK THE SAMPLING
54983       IF(IKNT.GT.100) THEN
54984         WRITE(MSTU(11),*) ' IKNT > 100 IN PYTBDY '
54985         GOTO 190
54986       ENDIF
54987       IF(YJACO2.LT.PYR(0)*GOLDEN) GOTO 180
54988  
54989       IF(ISKIP.EQ.0) GOTO 190
54990  
54991       SH=S23
54992       TH=S12
54993       UH=ZM12+ZM22-SH-TH
54994  
54995       WU2 = (UH-ZM12)*(UH-ZM22)
54996       WT2 = (TH-ZM12)*(TH-ZM22)
54997       WS2 = XM1M2*SH
54998       PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
54999       PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
55000  
55001       QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
55002       QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
55003       QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
55004       QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
55005 c      QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
55006 c      QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
55007 c     &/DCMPLX(TH-XML2)
55008 c      QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
55009 c      QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
55010 c     &-DCONJG(GRIJ)/DCMPLX(UH-XMR2)
55011       WT=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
55012      &(ABS(QRL)**2+ABS(QLR)**2)*WT2+
55013      &2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
55014  
55015       IF(WT.LT.PYR(0)*WTMAX) GOTO 180
55016       IF(WT.GT.WTMAX) PRINT*,' WT > WTMAX ',WT,WTMAX
55017  
55018   190 D3=(XM(5)**2+XM(3)**2-S12)/(2D0*XM(5))
55019       D1=(XM(5)**2+XM(1)**2-S23)/(2D0*XM(5))
55020       D2=XM(5)-D1-D3
55021       P1=SQRT(D1*D1-XM(1)**2)
55022       P2=SQRT(D2*D2-XM(2)**2)
55023       P3=SQRT(D3*D3-XM(3)**2)
55024       CTHE1=2D0*PYR(0)-1D0
55025       ANG1=2D0*PYR(0)*PARU(1)
55026       CPHI1=COS(ANG1)
55027       SPHI1=SIN(ANG1)
55028       ARG=1D0-CTHE1**2
55029       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
55030       STHE1=SQRT(ARG)
55031       P(N+1,1)=P1*STHE1*CPHI1
55032       P(N+1,2)=P1*STHE1*SPHI1
55033       P(N+1,3)=P1*CTHE1
55034       P(N+1,4)=D1
55035  
55036 C...GET CPHI3
55037       ANG3=2D0*PYR(0)*PARU(1)
55038       CPHI3=COS(ANG3)
55039       SPHI3=SIN(ANG3)
55040       CTHE3=(P2**2-P1**2-P3**2)/2D0/P1/P3
55041       ARG=1D0-CTHE3**2
55042       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
55043       STHE3=SQRT(ARG)
55044       P(N+3,1)=-P3*STHE3*CPHI3*CTHE1*CPHI1
55045      &+P3*STHE3*SPHI3*SPHI1
55046      &+P3*CTHE3*STHE1*CPHI1
55047       P(N+3,2)=-P3*STHE3*CPHI3*CTHE1*SPHI1
55048      &-P3*STHE3*SPHI3*CPHI1
55049      &+P3*CTHE3*STHE1*SPHI1
55050       P(N+3,3)=P3*STHE3*CPHI3*STHE1
55051      &+P3*CTHE3*CTHE1
55052       P(N+3,4)=D3
55053  
55054       DO 200 I=1,3
55055         P(N+2,I)=-P(N+1,I)-P(N+3,I)
55056   200 CONTINUE
55057       P(N+2,4)=D2
55058  
55059       RETURN
55060       END
55061  
55062  
55063 C*********************************************************************
55064  
55065 C...PYTECM
55066 C...Finds the s-hat dependent eigenvalues of the inverse propagator
55067 C...matrix for gamma, Z, techni-rho, and techni-omega to optimize the
55068 C...phase space generation.  Extended to include techni-a meson, and
55069 C...to return the width.
55070  
55071       SUBROUTINE PYTECM(SMIN,SMOU,WIDO,IOPT)
55072  
55073 C...Double precision and integer declarations.
55074       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55075       IMPLICIT INTEGER(I-N)
55076       INTEGER PYK,PYCHGE,PYCOMP
55077 C...Parameter statement to help give large particle numbers.
55078       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
55079      &KEXCIT=4000000,KDIMEN=5000000)
55080 C...Commonblocks.
55081       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55082       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55083       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
55084       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
55085       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYTCSM/
55086  
55087 C...Local variables.
55088       DOUBLE PRECISION AR(5,5),WR(5),ZR(5,5),ZI(5,5),WORK(12,12),
55089      &AT(5,5),WI(5),FV1(5),FV2(5),FV3(5),SH,AEM,TANW,CT2W,QUPD,ALPRHT,
55090      &FAR,FAO,FZR,FZO,SHR,R1,R2,S1,S2,WDTP(0:400),WDTE(0:400,0:5),WX(5)
55091       INTEGER i,j,ierr
55092 
55093       SH=SMIN
55094       SHR=SQRT(SH)
55095       AEM=PYALEM(SH)
55096  
55097       SINW=MIN(SQRT(PARU(102)),1D0)
55098       COSW=SQRT(1D0-SINW**2)
55099       TANW=SINW/COSW
55100       CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
55101       QUPD=2D0*RTCM(2)-1D0
55102 
55103       ALPRHT=2.16D0*(3D0/DBLE(ITCM(1)))
55104       FAR=SQRT(AEM/ALPRHT)
55105       FAO=FAR*QUPD
55106       FZR=FAR*CT2W
55107       FZO=-FAO*TANW
55108       FZX=-FAR/RTCM(47)/(2D0*SINW*COSW)
55109       FWR=FAR/(2D0*SINW)
55110       FWX=-FWR/RTCM(47)
55111 
55112       DO 110 I=1,5
55113         DO 100 J=1,5
55114           AT(I,J)=0D0
55115   100   CONTINUE
55116   110 CONTINUE
55117 
55118 C...NC
55119       IF(IOPT.EQ.1) THEN
55120         AR(1,1) = SH
55121         AR(2,2) = SH-PMAS(23,1)**2
55122         AR(3,3) = SH-PMAS(PYCOMP(KTECHN+113),1)**2
55123         AR(4,4) = SH-PMAS(PYCOMP(KTECHN+223),1)**2
55124         AR(5,5) = SH-PMAS(PYCOMP(KTECHN+115),1)**2
55125         AR(1,2) = 0D0
55126         AR(2,1) = 0D0
55127         AR(1,3) = SH*FAR
55128         AR(3,1) = AR(1,3)
55129         AR(1,4) = SH*FAO
55130         AR(4,1) = AR(1,4)
55131         AR(2,3) = SH*FZR
55132         AR(3,2) = AR(2,3)
55133         AR(2,4) = SH*FZO
55134         AR(4,2) = AR(2,4)
55135         AR(3,4) = 0D0
55136         AR(4,3) = 0D0
55137         AR(2,5) = SH*FZX
55138         AR(5,2) = AR(2,5)
55139         AR(1,5) = 0D0
55140         AR(5,1) = AR(1,5)
55141         AR(3,5) = 0D0
55142         AR(5,3) = AR(3,5)
55143         AR(4,5) = 0D0
55144         AR(5,4) = AR(4,5)
55145         CALL PYWIDT(23,SH,WDTP,WDTE)
55146         AT(2,2) = WDTP(0)*SHR
55147         CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
55148         AT(3,3) = WDTP(0)*SHR
55149         CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
55150         AT(4,4) = WDTP(0)*SHR
55151         CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
55152         AT(5,5) = WDTP(0)*SHR
55153         IDIM=5
55154 C...CC
55155       ELSE
55156         AR(1,1) = SH-PMAS(24,1)**2
55157         AR(2,2) = SH-PMAS(PYCOMP(KTECHN+213),1)**2
55158         AR(3,3) = SH-PMAS(PYCOMP(KTECHN+215),1)**2
55159         AR(1,2) = SH*FWR
55160         AR(2,1) = AR(1,2)
55161         AR(1,3) = SH*FWX
55162         AR(3,1) = AR(1,3)
55163         AR(2,3) = 0D0
55164         AR(3,2) = 0D0
55165         CALL PYWIDT(24,SH,WDTP,WDTE)
55166         AT(1,1) = WDTP(0)*SHR
55167         CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
55168         AT(2,2) = WDTP(0)*SHR
55169         CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
55170         AT(3,3) = WDTP(0)*SHR
55171         IDIM=3
55172       ENDIF
55173       CALL PYEICG(IDIM,IDIM,AR,AT,WR,WI,0,ZR,ZI,FV1,FV2,FV3,IERR)
55174 
55175       IMIN=1
55176       SXMN=1D20
55177       DO 120 I=1,IDIM
55178         WX(I)=SQRT(ABS(SH-WR(I)))
55179         WR(I)=ABS(WR(I))
55180         IF(WR(I).LT.SXMN) THEN
55181           SXMN=WR(I)
55182           IMIN=I
55183         ENDIF
55184   120 CONTINUE
55185       SMOU=WX(IMIN)**2
55186       WIDO=WI(IMIN)/SHR
55187 
55188       RETURN
55189       END
55190 C*********************************************************************
55191  
55192 C...PYXDIN
55193 C...Universal Extra Dimensions Model (UED)
55194 C...Initialize the xd masses and widths
55195 C...M. ELKACIMI 4/03/2006
55196 C...Modified for inclusion in Pythia Apr 2008, H. Przysiezniak, P. Skands
55197 
55198       SUBROUTINE PYXDIN
55199 
55200 C...Double precision and integer declarations.
55201       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55202       IMPLICIT INTEGER(I-N)
55203       INTEGER PYK,PYCHGE,PYCOMP
55204 C...Commonblocks.
55205       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55206       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
55207       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
55208 C...UED Pythia common
55209       COMMON/PYPUED/IUED(0:99),RUED(0:99)
55210 
55211 C...SAVE statements
55212       SAVE /PYDAT1/,/PYDAT3/,/PYSUBS/,/PYPUED/
55213 
55214 C...Print out some info about the UED model
55215       WRITE(MSTU(11),7000) 
55216      &    ' ',
55217      &    '********** PYXDIN: initialization of UED ******************',
55218      &    ' ',
55219      &    'Universal Extra Dimensions (UED) switched on ',
55220      &    ' ',
55221      &    'This implementation is courtesy of',
55222      &    '       M.Elkacimi, D.Goujdami, H.Przysiezniak,  ', 
55223      &    '       see [hep-ph/0602198] (Les Houches 2005) ',
55224      &    ' ',
55225      &    'The model follows [hep-ph/0012100] (Appelquist, Cheng,   ',
55226      &    'Dobrescu), with gravity-mediated decay widths calculated in',
55227      &    '[hep-ph/0001335] (DeRujula, Donini, Gavela, Rigolin) and ',
55228      &    'radiative corrections to the KK masses from [hep/ph0204342]',
55229      &    '(Cheng, Matchev, Schmaltz).'
55230       WRITE(MSTU(11),7000) 
55231      &    ' ',
55232      &    'SM particles can propagate into one small extra dimension  ',
55233      &    'of size 1/R = RUED(1) GeV. For gravity-mediated decays, the',
55234      &    'graviton is further allowed to propagate into N = IUED(4)', 
55235      &    'large (eV^-1) extra dimensions.'
55236       WRITE(MSTU(11),7000) 
55237      &    ' ',
55238      &    'The switches and parameters for UED are:',
55239      &    '    IUED(1): (D=0) main UED ON(=1)/OFF(=0) switch ',
55240      &    '    IUED(2): (D=0) Grav. med. decays are set ON(=1)/OFF(=0)',
55241      &    '    IUED(3): (D=5) number of quark flavours',
55242      &    '    IUED(4): (D=6) number of large extra dimensions into',
55243      &    '                   which the graviton propagates',
55244      &    '    IUED(5): (D=0) Lambda (=0) or Lambda*R (=1) is used',
55245      &    '    IUED(6): (D=1) With/without rad.corrs. (=1/0)',
55246      &    '                                                 ',
55247      &    '    RUED(1): (D=1000.) curvature 1/R of the UED (in GeV)',
55248      &    '    RUED(2): (D=5000.) gravity mediated (GM) scale (in GeV)',
55249      &    '    RUED(3): (D=20000.) Lambda cutoff scale (in GeV). Used',
55250      &    '                        when IUED(5)=0',
55251      &    '    RUED(4): (D=20.) Lambda*R. Used when IUED(5)=1'
55252       WRITE(MSTU(11),7000) 
55253      &    ' ',
55254      &    'N.B.: the Higgs mass is also a free parameter of the UED ',
55255      &    'model, but is set through pmas(25,1).',
55256      &    ' '
55257 
55258 C...Hardcoded switch, required by current implementation     
55259       CALL PYGIVE('MSTP(42)=0')
55260 
55261 C...Turn the gravity mediated decay (for the KK pphoton) ON or OFF
55262       IF(IUED(2).EQ.0) CALL PYGIVE('MDCY(C5100022,1)=0')
55263 
55264 C...Calculated the radiative corrections to the KK particle masses
55265       CALL PYUEDC
55266 
55267 C...Initialize the graviton mass
55268 C...only if the KK particles decays gravitationally
55269       IF(IUED(2).EQ.1) CALL PYGRAM(0)
55270 
55271       WRITE(MSTU(11),7000) 
55272      &    '********** PYXDIN: UED initialization completed  ***********'
55273 
55274 C...Format to use for comments
55275  7000 FORMAT(' * ',A)
55276 
55277       RETURN
55278       END
55279 C*********************************************************************
55280  
55281 C...PYUEDC
55282 C...Auxiliary to PYXDIN
55283 C...Mass kk states radiative corrections 
55284 C...Radiative corrections are included (hep/ph0204342)
55285 
55286       SUBROUTINE PYUEDC
55287 
55288 C...Double precision and integer declarations.
55289       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55290       IMPLICIT INTEGER(I-N)
55291       INTEGER PYK,PYCHGE,PYCOMP
55292 
55293       PARAMETER(KKPART=25,KKFLA=450)
55294 
55295 C...UED Pythia common
55296       COMMON/PYPUED/IUED(0:99),RUED(0:99)
55297 C...Pythia common: particles properties
55298       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)      
55299 C...Parameters.
55300       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55301 C...Decay information.
55302       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
55303 C...Resonance width and secondary decay treatment.
55304       COMMON/PYINT4/MWID(500),WIDS(500,5)
55305       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
55306 
55307 C...Local variables
55308       DOUBLE PRECISION PI,QUP,QDW
55309       DOUBLE PRECISION WDTP,WDTE
55310       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
55311       DOUBLE PRECISION Q2,ALPHEM,ALPHS,SW2,CW2,RMKK,RMKK2,ZETA3
55312       DOUBLE PRECISION DSMG2,LOGLAM,DBMG2
55313       DOUBLE PRECISION DBMQU,DBMQD,DBMQDO,DBMLDO,DBMLE
55314       DOUBLE PRECISION DSMA2,DSMB2,DBMA2,DBMB2
55315       DOUBLE PRECISION RFACT,RMW,RMZ,RMZ2,RMW2,A,B,C,SQRDEL,DMB2,DMA2
55316       DOUBLE PRECISION SWW1,CWW1
55317       DOUBLE PRECISION RMGST,RMPHST,RMZST,RMWST
55318       DOUBLE PRECISION RMDQST,RMSQUS,RMSQDS,RMLSLD,RMLSLE
55319       DOUBLE PRECISION SW21,CW21,SW021,CW021
55320       COMMON/SW1/SW021,CW021
55321 C...UED related declarations:
55322 C...equivalences between ordered particles (451->475)
55323 C...and UED particle code (5 000 000 + id)
55324       DIMENSION IUEDEQ(475)
55325       DATA (IUEDEQ(I),I=451,475)/
55326 C...Singlet quarks      
55327      & 6100001,6100002,6100003,6100004,6100005,6100006,
55328 C...Doublet quarks
55329      & 5100001,5100002,5100003,5100004,5100005,5100006, 
55330 C...Singlet leptons
55331      & 6100011,6100013,6100015,                         
55332 C...Doublet leptons
55333      & 5100012,5100011,5100014,5100013,5100016,5100015,
55334 C...Gauge boson KK excitations
55335      & 5100021,5100022,5100023,5100024/                 
55336 
55337 C...N.B. rinv=rued(1)
55338       IF(RUED(1).LE.0.)THEN
55339          WRITE(MSTU(11),*) 'PYUEDC: RINV < 0 : ',RUED(1)
55340          WRITE(MSTU(11),*) 'DEFAULT KK STATE MASSES ARE TAKEN '
55341          RETURN
55342       ENDIF
55343 
55344       PI=DACOS(-1.D0)
55345       RMZ  = PMAS(23,1)
55346       RMZ2 = RMZ**2
55347       RMW  = PMAS(24,1)
55348       RMW2 = RMW**2
55349       ALPHEM = PARU(101)
55350       QUP = 2./3.
55351       QDW = -1./3.
55352 
55353 c...qt is q-tilde, qs is q-star
55354 c...strong coupling value
55355       Q2 = RUED(1)**2
55356       ALPHS=PYALPS(Q2)
55357       
55358 c...weak mixing angle
55359       SW2=PARU(102)
55360       CW2=1D0-PARU(102)
55361       
55362 c...for the mass corrections
55363       RMKK = RUED(1)
55364       RMKK2 = RMKK**2
55365       ZETA3= 1.2
55366       
55367 C... Either fix the cutoff scale LAMUED
55368       IF(IUED(5).EQ.0)THEN
55369          LOGLAM = DLOG((RUED(3)*(1./RUED(1)))**2)
55370 C... or the ratio LAMUED/RINV (=product Lambda*R)
55371       ELSEIF(IUED(5).EQ.1)THEN
55372          LOGLAM = DLOG(RUED(4)**2)
55373       ELSE
55374          WRITE(MSTU(11),*) '(PYUEDC:) INVALID VALUE FOR IUED(5)'
55375          CALL PYSTOP(6000)
55376       ENDIF
55377 
55378 C...Calculate the radiative corrections for the UED KK masses
55379       IF(IUED(6).EQ.1)THEN
55380          RFACT=1.D0
55381 C...or induce a minute mass difference
55382 C...keeping the UED KK mass values nearly equal to 1/R
55383       ELSEIF(IUED(6).EQ.0)THEN
55384          RFACT=0.01D0
55385       ELSE
55386          WRITE(MSTU(11),*) '(PYUEDC:) INVALID VALUE FOR IUED(6)'
55387          CALL PYSTOP(6001)
55388       ENDIF
55389 
55390 c...Take into account only the strong interactions:
55391 
55392 c...The space bulk corrections :
55393       DSMG2 = RMKK2*(-1.5)*(ALPHS/4./PI)*ZETA3/PI**2
55394 c...The boundary terms:
55395       DBMG2 = RMKK2*(23./2.)*(ALPHS/4./PI)*LOGLAM
55396 
55397 c...Mass corrections for fermions are extracted from 
55398 c...Phys. Rev. D66 036005(2002)9
55399       DBMQDO=RMKK*(3.*(ALPHS/4./PI)+27./16.*(ALPHEM/4./PI/SW2)
55400      .     +1./16.*(ALPHEM/4./PI/CW2))*LOGLAM
55401       DBMQU=RMKK*(3.*(ALPHS/4./PI)
55402      .     +(ALPHEM/4./PI/CW2))*LOGLAM
55403       DBMQD=RMKK*(3.*(ALPHS/4./PI)
55404      .     +0.25*(ALPHEM/4./PI/CW2))*LOGLAM
55405       
55406       DBMLDO=RMKK *((27./16.)*(ALPHEM/4./PI/SW2)+9./16.*
55407      .     (ALPHEM/4./PI/CW2))*LOGLAM
55408       DBMLE=RMKK *(9./4.*(ALPHEM/4./PI/CW2))*LOGLAM
55409       
55410 c...Vector boson masss matrix diagonalization
55411       DBMB2 = RMKK2*(-1./6.)*(ALPHEM/4./PI/CW2)*LOGLAM
55412       DSMB2 = RMKK2*(-39./2.)*(ALPHEM/4./PI**3/CW2)*ZETA3
55413       DBMA2 = RMKK2*(15./2.)*(ALPHEM/4./PI/SW2)*LOGLAM
55414       DSMA2 = RMKK2*(-5./2.)*(ALPHEM/4./PI**3/SW2)*ZETA3
55415       
55416 c...Elements of the mass matrix
55417       A = RMZ2*SW2 + DBMB2 + DSMB2
55418       B = RMZ2*CW2 + DBMA2 + DSMA2
55419       C = RMZ2*DSQRT(SW2*CW2)
55420       SQRDEL = DSQRT( (A-B)**2 + 4*C**2 )
55421 
55422 c...Eigenvalues: corrections to X1 and Z1 masses
55423       DMB2 = (A+B-SQRDEL)/2. 
55424       DMA2 = (A+B+SQRDEL)/2. 
55425       
55426 c...Rotation angles     
55427       SWW1 = 2*C
55428       CWW1 = A-B-SQRDEL
55429 C...Weinberg angle
55430       SW21= SWW1**2/(SWW1**2 + CWW1**2)
55431       CW21= 1. - SW21
55432       
55433       SW021=SW21
55434       CW021=CW21
55435       
55436 c...Masses:
55437       RMGST = RMKK+RFACT*(DSQRT(RMKK2 + DSMG2 + DBMG2)-RMKK)
55438       
55439       RMDQST=RMKK+RFACT*DBMQDO
55440       RMSQUS=RMKK+RFACT*DBMQU
55441       RMSQDS=RMKK+RFACT*DBMQD
55442 
55443 C...Note: MZ mass is included in ma2
55444       RMPHST= RMKK+RFACT*(DSQRT(RMKK2 + DMB2)-RMKK)
55445       RMZST = RMKK+RFACT*(DSQRT(RMKK2 + DMA2)-RMKK)
55446       RMWST = RMKK+RFACT*(DSQRT(RMKK2 + DBMA2 + DSMA2 + RMW**2)-RMKK)
55447 
55448       RMLSLD=RMKK+RFACT*DBMLDO
55449       RMLSLE=RMKK+RFACT*DBMLE
55450 
55451       DO 100 IPART=1,5,2
55452         PMAS(KKFLA+IPART,1)=RMSQDS
55453  100  CONTINUE
55454       DO 110 IPART=2,6,2
55455         PMAS(KKFLA+IPART,1)=RMSQUS
55456  110  CONTINUE
55457       DO 120 IPART=7,12
55458         PMAS(KKFLA+IPART,1)=RMDQST
55459  120  CONTINUE
55460       DO 130 IPART=13,15
55461         PMAS(KKFLA+IPART,1)=RMLSLE
55462  130  CONTINUE
55463       DO 140 IPART=16,21
55464         PMAS(KKFLA+IPART,1)=RMLSLD
55465  140  CONTINUE
55466       PMAS(KKFLA+22,1)=RMGST
55467       PMAS(KKFLA+23,1)=RMPHST
55468       PMAS(KKFLA+24,1)=RMZST
55469       PMAS(KKFLA+25,1)=RMWST
55470 
55471       WRITE(MSTU(11),7000) ' PYUEDC: ',
55472      & 'UED Mass Spectrum (GeV) :'
55473       WRITE(MSTU(11),7100) '   m(d*_S,s*_S,b*_S) = ',RMSQDS
55474       WRITE(MSTU(11),7100) '   m(u*_S,c*_S,t*_S) = ',RMSQUS
55475       WRITE(MSTU(11),7100) '   m(q*_D)           = ',RMDQST
55476       WRITE(MSTU(11),7100) '   m(l*_S)           = ',RMLSLE
55477       WRITE(MSTU(11),7100) '   m(l*_D)           = ',RMLSLD
55478       WRITE(MSTU(11),7100) '   m(g*)             = ',RMGST
55479       WRITE(MSTU(11),7100) '   m(gamma*)         = ',RMPHST
55480       WRITE(MSTU(11),7100) '   m(Z*)             = ',RMZST
55481       WRITE(MSTU(11),7100) '   m(W*)             = ',RMWST
55482       WRITE(MSTU(11),7000) ' '
55483 
55484 C...Initialize widths, branching ratios and life time
55485       DO 199 IPART=1,25
55486         KC=KKFLA+IPART
55487         IF(MWID(KC).EQ.1.AND.MDCY(KC,1).EQ.1)THEN
55488           CALL PYWIDT(IUEDEQ(KC),PMAS(KC,1)**2,WDTP,WDTE)
55489           IF(WDTP(0).LE.0)THEN
55490              WRITE(MSTU(11),*) 
55491      +             'PYUEDC WARNING: TOTAL WIDTH = 0 --> KC ', KC
55492              WRITE(MSTU(11),*) 'INITIAL VALUE IS TAKEN',PMAS(KC,2)
55493              GOTO 199
55494           ELSE
55495             DO 180 IDC=1,MDCY(KC,3)
55496               IC=IDC+MDCY(KC,2)-1
55497               IF(MDME(IC,1).EQ.1.AND.WDTP(IDC).GT.0.)THEN
55498 C...Life time in cm^{-1}.  paru(3) gev^{-1} -> fm
55499                 PMAS(KC,4)=PARU(3)/WDTP(IDC)*1.D-12
55500                 BRAT(IC)=WDTP(IDC)/WDTP(0)
55501               ENDIF
55502  180        CONTINUE
55503           ENDIF
55504         ENDIF
55505  199  CONTINUE
55506 
55507 C...Format to use for comments
55508  7000 FORMAT(' * ',A)
55509  7100 FORMAT(' * ',A,F12.3)
55510 
55511       END
55512 C********************************************************************
55513 C...PYXUED
55514 C... Last change: 
55515 C... 13/01/2009 : H. Przysiezniak Frey, P. Skands
55516 C... Original version:
55517 C... M. El Kacimi
55518 C... 05/07/2005
55519 C     Universal Extra Dimensions Subprocess cross sections  
55520 C     The expressions used are from atl-com-phys-2005-003
55521 C     What is coded here is shat**2/pi * dsigma/dt = |M|**2
55522 C     For each UED subprocess, the color flow used is the same 
55523 C     as the equivalent QCD subprocess. Different configuration
55524 C     color flows are considered to have the same probability. 
55525 C
55526 C     The Xsection is calculated following ATL-PHYS-PUB-2005-003
55527 C     by G.Azuelos and P.H.Beauchemin.
55528 C
55529 C     This routine is called from pysigh.
55530 
55531       SUBROUTINE PYXUED(NCHN,SIGS)
55532 
55533 C...Double precision and integer declarations
55534       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55535       IMPLICIT INTEGER(I-N)
55536 C...
55537       INTEGER NGRDEC
55538       COMMON/DECMOD/NGRDEC
55539 C...
55540       PARAMETER(KKPART=25,KKFLA=450)
55541 C...Commonblocks
55542       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55543       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
55544       COMMON/PYINT1/MINT(400),VINT(400)
55545       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
55546       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
55547      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
55548      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
55549      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
55550       SAVE /PYDAT2/,/PYINT1/,/PYINT3/,/PYPARS/
55551 C...UED Pythia common
55552       COMMON/PYPUED/IUED(0:99),RUED(0:99)
55553 C...Local arrays and complex variables
55554       DOUBLE PRECISION SHAT,SP,THAT,TP,UHAT,UP,ALPHAS
55555      + ,FAC1,XMNKK,XMUED,SIGS
55556       INTEGER NCHN
55557 
55558 C...Return if UED not switched on
55559       IF (IUED(1).LE.0) THEN 
55560         RETURN 
55561       ENDIF
55562 
55563 C...Energy scale of the parton processus
55564 C...taken equal to the mass of the final state kk
55565 c      Q2=XMNKK**2      
55566 
55567 C...Default Mandlestam variable (u/t)hatp=(u/t)hatp-xmnkk**2
55568       XMNKK=PMAS(KKFLA+23,1) 
55569 
55570 C...To compare the cross section with phys-pub-2005-03
55571 C...(no radiative corrections), 
55572 C...take xmnkk=rinv  and q2=rinv**2
55573 c++lnk
55574 C...n.b. (rinv=rued(1))
55575 c      IF(NGRDEC.EQ.1)XMNKK=RUED(0)
55576       IF(NGRDEC.EQ.1)XMNKK=RUED(1)
55577 c--lnk
55578 
55579       SHAT=VINT(44)
55580       SP=SHAT
55581       THAT=VINT(45)
55582       TP=THAT-XMNKK**2
55583       UHAT=VINT(46)
55584       UP=UHAT-XMNKK**2
55585       BETA34=DSQRT(1.D0-4.D0*XMNKK**2/SHAT)
55586       PI=DACOS(-1.D0)
55587 c++lnk
55588 c      Q2=RUED(0)**2+(TP*UP-RUED(0)**4)/SP
55589       Q2=RUED(1)**2+(TP*UP-RUED(1)**4)/SP
55590 
55591 c      IF(NGRDEC.EQ.1)Q2=RUED(0)**2
55592       IF(NGRDEC.EQ.1)Q2=RUED(1)**2
55593 c--lnk
55594 
55595 C...Strong coupling value
55596       ALPHAS=PYALPS(Q2)
55597 
55598       IF(ISUB.EQ.311)THEN
55599 C...gg --> g* g*
55600          FAC1=9./8.*ALPHAS**2/(SP*TP*UP)**2
55601          XMUED=FAC1*(XMNKK**4*(6.*TP**4+18.*TP**3*UP+
55602      &        24.*TP**2*UP**2+18.*TP*UP**3+6.*UP**4)
55603      &        +XMNKK**2*(6.*TP**4*UP+12.*TP**3*UP**2+
55604      &        12.*TP**2*UP**3+6*TP*UP**4)
55605      &        +2.*TP**6+6*TP**5*UP+13*TP**4*UP**2+
55606      &        15.*TP**3*UP**3+13*TP**2*UP**4+
55607      &        6.*TP*UP**5+2.*UP**6)
55608          NCHN=NCHN+1
55609          ISIG(NCHN,1)=21
55610          ISIG(NCHN,2)=21
55611 C...Three color flow configurations (qcd g+g->g+g)
55612          XCOL=PYR(0)
55613          IF(XCOL.LE.1./3.)THEN
55614             ISIG(NCHN,3)=1
55615          ELSEIF(XCOL.LE.2./3.)THEN
55616             ISIG(NCHN,3)=2
55617          ELSE
55618             ISIG(NCHN,3)=3
55619          ENDIF
55620          SIGH(NCHN)=COMFAC*XMUED
55621       ELSEIF(ISUB.EQ.312)THEN
55622 C...q + g -> q*_D + g*, q*_S + g*
55623 C...(the two channels have the same cross section)
55624          FAC1=-1./36.*ALPHAS**2/(SP*TP*UP)**2
55625          XMUED=FAC1*(12.*SP*UP**5+5.*SP**2*UP**4+22.*SP**3*UP**3+
55626      &          5.*SP**4*UP**2+12.*SP**5*UP)
55627          XMUED=COMFAC*2.*XMUED 
55628 
55629           DO 190 I=MMINA,MMAXA
55630             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 190
55631             DO 180 ISDE=1,2
55632 
55633               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
55634               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
55635               NCHN=NCHN+1
55636               ISIG(NCHN,ISDE)=I
55637               ISIG(NCHN,3-ISDE)=21
55638               ISIG(NCHN,3)=1
55639               SIGH(NCHN)=XMUED
55640               IF(PYR(0).GT.0.5)ISIG(NCHN,3)=2
55641   180       CONTINUE
55642   190     CONTINUE
55643 
55644       ELSEIF(ISUB.EQ.313)THEN
55645 C...qi + qj -> q*_Di + q*_Dj, q*_Si + q*_Sj 
55646 C...(the two channels have the same cross section)
55647 C...qi and qj have the same charge sign 
55648          DO 100 I=MMIN1,MMAX1
55649             IA=IABS(I)
55650             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 100
55651             DO 101 J=MMIN2,MMAX2
55652                JA=IABS(J)
55653                IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).
55654      &           EQ.0) GOTO 101
55655                IF(J*I.LE.0)GOTO 101
55656                NCHN=NCHN+1
55657                ISIG(NCHN,1)=I
55658                ISIG(NCHN,2)=J
55659                IF(J.EQ.I)THEN
55660                   FAC1=1./72.*ALPHAS**2/(TP*UP)**2
55661                   XMUED=FAC1*
55662      &                  (XMNKK**2*(8*TP**3+4./3.*TP**2*UP+4./3.*TP*UP**2
55663      &                 +8.*UP**3)+8.*TP**4+56./3.*TP**3*UP+
55664      &                 20.*TP**2*UP**2+56./3.*
55665      &                 TP*UP**3+8.*UP**4)
55666                   SIGH(NCHN)=COMFAC*2.*XMUED
55667                   ISIG(NCHN,3)=1
55668                   IF(PYR(0).GT.0.5)ISIG(NCHN,3)=2
55669                ELSE
55670                   FAC1=2./9.*ALPHAS**2/TP**2
55671                   XMUED=FAC1*(-XMNKK**2*SP+SP**2+0.25*TP**2)     
55672                   SIGH(NCHN)=COMFAC*2.*XMUED
55673                   ISIG(NCHN,3)=1
55674                ENDIF
55675  101       CONTINUE
55676  100    CONTINUE
55677       ELSEIF(ISUB.EQ.314)THEN
55678 C...g + g -> q*_D + q*_Dbar, q*_S + q*_Sbar 
55679 C...(the two channels have the same cross section)
55680          NCHN=NCHN+1
55681          ISIG(NCHN,1)=21
55682          ISIG(NCHN,2)=21
55683          ISIG(NCHN,3)=INT(1.5+PYR(0))
55684 
55685          FAC1=5./6.*ALPHAS**2/(SP*TP*UP)**2
55686          XMUED=FAC1*(-XMNKK**4*(8.*TP*UP**3+8.*TP**2*UP**2+8.*TP**3*UP
55687      +          +4.*UP**4+4*TP**4)
55688      +          -XMNKK**2*(0.5*TP*UP**4+4.*TP**2*UP**3+15./2.*TP**3
55689      +          *UP**2+ 4.*TP**4*UP)+TP*UP**5-0.25*TP**2*UP**4+
55690      +          2.*TP**3*UP**3-0.25*TP**4*UP**2+TP**5*UP)
55691          
55692          SIGH(NCHN)=COMFAC*XMUED 
55693 C...has been multiplied by 5: all possible quark flavors in final state
55694 
55695       ELSEIF(ISUB.EQ.315)THEN
55696 C...q + qbar -> q*_D + q*_Dbar, q*_S + q*_Sbar
55697 C...(the two channels have the same cross section)
55698           DO 141 I=MMIN1,MMAX1
55699             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
55700      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 141
55701             DO 142 J=MMIN2,MMAX2
55702                IF(J.EQ.0.OR.ABS(I).NE.ABS(J).OR.I*J.GE.0) GOTO 142
55703                FAC1=2./9.*ALPHAS**2*1./(SP*TP)**2
55704                XMUED=FAC1*(XMNKK**2*SP*(4.*TP**2-SP*TP-SP**2)+
55705      &              4.*TP**4+3.*SP*TP**3+11./12.*TP**2*SP**2-
55706      &              2./3.*SP**3*TP+SP**4)                  
55707                NCHN=NCHN+1
55708                ISIG(NCHN,1)=I
55709                ISIG(NCHN,2)=-I
55710                ISIG(NCHN,3)=1
55711                SIGH(NCHN)=COMFAC*2.*XMUED
55712  142        CONTINUE
55713  141      CONTINUE
55714       ELSEIF(ISUB.EQ.316)THEN
55715 C...q + qbar' -> q*_D + q*_Sbar' 
55716          FAC1=2./9.*ALPHAS**2
55717          DO 300 I=MMIN1,MMAX1
55718             IA=IABS(I)
55719             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 300
55720             DO 301 J=MMIN2,MMAX2
55721                JA=IABS(J)
55722                IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 301
55723                IF(J*I.GE.0.OR.IA.EQ.JA)GOTO 301
55724                NCHN=NCHN+1
55725                ISIG(NCHN,1)=I
55726                ISIG(NCHN,2)=J
55727                ISIG(NCHN,3)=1
55728                FAC1=2./9.*ALPHAS**2/TP**2
55729                XMUED=FAC1*(-XMNKK**2*SP+SP**2+0.25*TP**2)
55730                SIGH(NCHN)=COMFAC*XMUED 
55731  301       CONTINUE
55732  300   CONTINUE
55733                
55734       ELSEIF(ISUB.EQ.317)THEN
55735 C...q + qbar' -> q*_D + q*_Dbar' , q*_S + q*_Sbar' 
55736 C...(the two channels have the same cross section)
55737          DO 400 I=MMIN1,MMAX1
55738             IA=IABS(I)
55739             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 400     
55740             DO 401 J=MMIN1,MMAX1
55741                JA=IABS(J)
55742                IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 401
55743                IF(J*I.GE.0.OR.IA.EQ.JA)GOTO 401
55744                NCHN=NCHN+1
55745                ISIG(NCHN,1)=I
55746                ISIG(NCHN,2)=J
55747                ISIG(NCHN,3)=1
55748                FAC1=1./18.*ALPHAS**2/TP**2
55749                XMUED=FAC1*(4.*XMNKK**2*SP+4.*SP**2+8.*SP*TP+5*TP**2)  
55750                SIGH(NCHN)=COMFAC*2.*XMUED 
55751  401       CONTINUE
55752  400   CONTINUE
55753       ELSEIF(ISUB.EQ.318)THEN
55754 C...q + q' -> q*_D + q*_S'
55755          DO 500 I=MMIN1,MMAX1
55756             IA=IABS(I)
55757             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 500   
55758             DO 501 J=MMIN2,MMAX2
55759                JA=IABS(J)
55760                IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 501 
55761                IF(J*I.LE.0)GOTO 501
55762                IF(IA.EQ.JA)THEN
55763                   NCHN=NCHN+1
55764                   ISIG(NCHN,1)=I
55765                   ISIG(NCHN,2)=J
55766                   ISIG(NCHN,3)=INT(1.5+PYR(0))
55767                   FAC1=1./36.*ALPHAS**2/(TP*UP)**2
55768                XMUED=FAC1*(-8.*XMNKK**2*(TP**3+TP**2*UP+TP*UP**2+UP**3)
55769      &                 +8.*TP**4+4.*TP**2*UP**2+8.*UP**4)
55770                   SIGH(NCHN)=COMFAC*XMUED              
55771                ELSE
55772                   NCHN=NCHN+1
55773                   ISIG(NCHN,1)=I
55774                   ISIG(NCHN,2)=J
55775                   ISIG(NCHN,3)=1
55776                   FAC1=1./18.*ALPHAS**2/TP**2
55777                   XMUED=FAC1*(4.*XMNKK**2*SP+4.*SP**2+8.*SP*TP+5*TP**2)
55778                   SIGH(NCHN)=COMFAC*2.*XMUED
55779                ENDIF
55780  501        CONTINUE
55781  500     CONTINUE
55782       ELSEIF(ISUB.EQ.319)THEN
55783 C...q + qbar -> q*_D' +q*_Dbar' , q*_S' + q*_Sbar'
55784 C...(the two channels have the same cross section)
55785           DO 741 I=MMIN1,MMAX1
55786             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
55787      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 741
55788             DO 742 J=MMIN2,MMAX2
55789                IF(J.EQ.0.OR.IABS(J).NE.IABS(I).OR.J*I.GT.0) GOTO 742
55790                FAC1=16./9.*ALPHAS**2*1./(SP)**2
55791                XMUED=FAC1*(2.*XMNKK**2*SP+SP**2+2.*SP*TP+2.*TP**2)
55792                NCHN=NCHN+1
55793                ISIG(NCHN,1)=I
55794                ISIG(NCHN,2)=-I
55795                ISIG(NCHN,3)=1
55796                SIGH(NCHN)=COMFAC*2.*XMUED
55797  742        CONTINUE
55798  741      CONTINUE   
55799        
55800       ENDIF
55801 
55802       RETURN
55803       END
55804 C*********************************************************************
55805  
55806 C...PYGRAM
55807 C...Universal Extra Dimensions Model (UED)
55808 C...Computation of the Graviton mass.
55809 
55810       SUBROUTINE PYGRAM(IN)
55811 
55812 C...Double precision and integer declarations
55813       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
55814       IMPLICIT INTEGER(I-N)
55815 
55816 C...Pythia commonblocks
55817       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55818       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)      
55819 C...UED Pythia common
55820       COMMON/PYPUED/IUED(0:99),RUED(0:99)
55821 
55822 C...Local variables
55823       INTEGER KCFLA,NMAX
55824       PARAMETER(KCFLA=450,NMAX=5000)
55825       DIMENSION YVEC(5000),RESVEC(5000)
55826       COMMON/INTSAV/YSAV,YMAX,RESMAX
55827       COMMON/UEDGRA/XMPLNK,XMD,RINV,NDIM
55828       COMMON/KAPPA/XKAPPA
55829 
55830 C...External function (used in call to PYGAUS)
55831       EXTERNAL PYGRAW
55832 
55833 C...SAVE statements
55834       SAVE /PYDAT1/,/PYDAT2/,/PYPUED/,/INTSAV/
55835 
55836 C...Initialization
55837       NDIM=IUED(4)
55838       RINV=RUED(1)
55839       XMD=RUED(2)
55840       PI=PARU(1)
55841 
55842 C...Initialize for numerical integration
55843       XMPLNK=2.4D+18
55844       XKAPPA=DSQRT(2.D0)/XMPLNK      
55845 
55846 C...For NDIM=2, compute graviton mass distribution numerically
55847       IF(NDIM.EQ.2)THEN
55848         
55849 C...  For first event: tabulate distribution of stepwise integrals:
55850 C...  int_y1^y2 dy dGamma/dy , with y = MG*/MgammaKK
55851         IF(IN.EQ.0)THEN
55852           RESMAX = 0D0
55853           YMAX   = 0D0
55854           DO 100 I=1,NMAX
55855             YSAV = (I-0.5)/DBLE(NMAX)
55856             TOL       = 1D-6
55857 C...Integral of PYGRAW from 0 to 1, with precision TOL, for given YSAV
55858             RESINT    = PYGAUS(PYGRAW,0D0,1D0,TOL)
55859             YVEC(I)   = YSAV
55860             RESVEC(I) = RESINT
55861 C...  Save max of distribution (for accept/reject below)
55862             IF(RESINT.GT.RESMAX)THEN
55863               RESMAX = RESINT
55864               YMAX   = YVEC(I)
55865             ENDIF
55866  100      CONTINUE
55867         ENDIF
55868         
55869 C...  Generate Mg for each graviton (1D0 ensures a minimal open phase space)
55870         PCUJET=1D0
55871         KCGAKK=KCFLA+23
55872         XMGAMK=PMAS(KCGAKK,1)
55873         
55874 C...  Pick random graviton mass, accept according to stored integrals
55875         AMMAX=DSQRT(XMGAMK**2-2D0*XMGAMK*PCUJET)
55876  110    RMG=AMMAX*PYR(0)
55877         X=RMG/XMGAMK        
55878 
55879 C...  Bin enumeration starts at 1, but make sure always in range
55880         IBIN=INT(NMAX*X)+1
55881         IBIN=MIN(IBIN,NMAX)        
55882         IF(RESVEC(IBIN)/RESMAX.LT.PYR(0)) GOTO 110
55883         
55884 C...  For NDIM=4 and 6, the analytical expression for the
55885 C...  graviton mass distribution integral is used.
55886       ELSEIF(NDIM.EQ.4.OR.NDIM.EQ.6)THEN
55887         
55888 C...  Ensure minimal open phase space (max(mG*) < m(gamma*))
55889         PCUJET=1D0
55890         
55891 C...  KK photon (?) compressed code and mass
55892         KCGAKK=KCFLA+23
55893         XMGAMK=PMAS(KCGAKK,1)
55894         
55895 C...  Find maximum of (dGamma/dMg)
55896         IF(IN.EQ.0)THEN
55897           RESMAX=0D0
55898           YMAX=0D0
55899           DO 120 I=1,NMAX-1 
55900             Y=I/DBLE(NMAX)
55901             RESINT=Y**(NDIM-3)*(1D0/(1D0-Y**2))*(1D0+DCOS(PI*Y))
55902             IF(RESINT.GE.RESMAX)THEN
55903               RESMAX=RESINT
55904               YMAX=Y
55905             ENDIF
55906  120      CONTINUE
55907         ENDIF
55908         
55909 C...  Pick random graviton mass, accept/reject
55910         AMMAX=DSQRT(XMGAMK**2-2D0*XMGAMK*PCUJET)
55911  130    RMG=AMMAX*PYR(0)
55912         X=RMG/XMGAMK
55913         DGADMG=X**(NDIM-3)*(1./(1.-X**2))*(1.+DCOS(PI*X))
55914         IF(DGADMG/RESMAX.LT.PYR(0)) GOTO 130
55915         
55916 C...  If the user has not chosen N=2,4 or 6, STOP
55917       ELSE
55918         WRITE(MSTU(11),*) '(PYGRAM:) BAD VALUE N(LARGE XD) =',NDIM,
55919      &       ' (MUST BE 2, 4, OR 6) '
55920         CALL PYSTOP(6002)
55921       ENDIF
55922       
55923 C...  Now store the sampled Mg
55924       PMAS(39,1)=RMG
55925       
55926       RETURN
55927       END
55928       
55929 C*********************************************************************
55930  
55931 C...PYGRAW
55932 C...Universal Extra Dimensions Model (UED)
55933 C...
55934 C...See Macesanu etal. hep-ph/0201300 eqns.31 and 34.
55935 C...
55936 C...Integrand for the KK boson -> SM boson + graviton
55937 C...graviton mass distribution (and gravity mediated total width),
55938 C...which contains (see 0201300 and below for the full product)
55939 C...the gravity mediated partial decay width Gamma(xx, yy)
55940 C... i.e. GRADEN(YY)*PYWDKK(XXA)
55941 C...  where xx is exclusive to gravity
55942 C...  yy=m_Graviton/m_bosonKK denotes the Universal extra dimension
55943 C...  and xxa=sqrt(xx**2+yy**2) refers to all of the extra dimensions.
55944 
55945       DOUBLE PRECISION FUNCTION PYGRAW(YIN)
55946 
55947 C...Double precision and integer declarations
55948       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
55949       IMPLICIT INTEGER (I-N)
55950 
55951 C...Pythia commonblocks
55952       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55953 
55954 C...Local UED commonblocks and variables
55955       COMMON/UEDGRA/XMPLNK,XMD,RINV,NDIM
55956       COMMON/INTSAV/YSAV,YMAX,RESMAX
55957 
55958 C...SAVE statements
55959       SAVE /PYDAT1/,/INTSAV/
55960 
55961 C...External: Pythia's Gamma function
55962       EXTERNAL PYGAMM
55963 
55964 C...Pi
55965       PI=PARU(1)
55966       PI2=PI*PI
55967 
55968       YMIN=1.D-9/RINV
55969       YY=YSAV
55970       XX=DSQRT(1.-YY**2)*YIN
55971       DJAC=(1.-YMIN)*DSQRT(1.-YY**2)
55972       FAC=2.*PI**((NDIM-1.)/2.)*XMPLNK**2*RINV**NDIM/XMD**(NDIM+2)
55973       XND=(NDIM-1.)/2.
55974       GAMMN=PYGAMM(XND)
55975       FAC=FAC/GAMMN
55976       XXA=DSQRT(XX**2+YY**2)
55977       GRADEN=4./PI2 * (YY**2/(1.-YY**2)**2)*(1.+DCOS(PI*YY))
55978 
55979       PYGRAW=DJAC*
55980      +     FAC*XX**(NDIM-2)*GRADEN*PYWDKK(XXA)
55981 
55982       RETURN
55983       END
55984 C*********************************************************************
55985 
55986 C...PYWDKK
55987 C...Universal Extra Dimensions Model (UED)
55988 C...
55989 C...Multiplied by the square modulus of a form factor
55990 C...(see GRADEN in function PYGRAW)
55991 C...PYWDKK is the KK boson -> SM boson + graviton
55992 C...gravity mediated partial decay width Gamma(xx, yy)
55993 C...  where xx is exclusive to gravity
55994 C...  yy=m_Graviton/m_bosonKK denotes the Universal extra dimension
55995 C...  and xxa=sqrt(xx**2+yy**2) refers to all of the extra dimensions
55996 C...
55997 C...N.B. The Feynman rules for the couplings of the graviton fields
55998 C...to the UED fields are related to the corresponding couplings of
55999 C...the graviton fields to the SM fields by the form factor.
56000 
56001       DOUBLE PRECISION FUNCTION PYWDKK(X)
56002 
56003 C...Double precision and integer declarations
56004       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
56005       IMPLICIT INTEGER (I-N)
56006 
56007 C...Pythia commonblocks
56008       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56009       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56010 
56011 C...Local UED commonblocks and variables
56012       COMMON/UEDGRA/XMPLNK,XMD,RINV,NDIM
56013       COMMON/KAPPA/XKAPPA
56014 
56015 C...SAVE statements
56016       SAVE /PYDAT1/,/PYDAT2/,/UEDGRA/,/KAPPA/
56017 
56018       PI=PARU(1)
56019 
56020 C...gamma* mass 473
56021       KCQKK=473
56022       XMNKK=PMAS(KCQKK,1)
56023 
56024 C...Bosons partial width Macesanu hep-ph/0201300
56025       PYWDKK=XKAPPA**2/(96.*PI)*XMNKK**3/X**4*
56026      +          ((1.-X**2)**2*(1.+3.*X**2+6.*X**4))
56027 
56028       RETURN
56029       END
56030  
56031 C*********************************************************************
56032  
56033 C...PYEIGC
56034 C...Finds eigenvalues of a general complex matrix
56035 C
56036 C     THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF
56037 C     SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK)
56038 C     TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED)
56039 C     OF A COMPLEX GENERAL MATRIX.
56040 C
56041 C     ON INPUT
56042 C
56043 C        NM  MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL
56044 C        ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
56045 C        DIMENSION STATEMENT.
56046 C
56047 C        N  IS THE ORDER OF THE MATRIX  A=(AR,AI).
56048 C
56049 C        AR  AND  AI  CONTAIN THE REAL AND IMAGINARY PARTS,
56050 C        RESPECTIVELY, OF THE COMPLEX GENERAL MATRIX.
56051 C
56052 C        MATZ  IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF
56053 C        ONLY EIGENVALUES ARE DESIRED.  OTHERWISE IT IS SET TO
56054 C        ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS.
56055 C
56056 C     ON OUTPUT
56057 C
56058 C        WR  AND  WI  CONTAIN THE REAL AND IMAGINARY PARTS,
56059 C        RESPECTIVELY, OF THE EIGENVALUES.
56060 C
56061 C        ZR  AND  ZI  CONTAIN THE REAL AND IMAGINARY PARTS,
56062 C        RESPECTIVELY, OF THE EIGENVECTORS IF MATZ IS NOT ZERO.
56063 C
56064 C        IERR  IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN ERROR
56065 C           COMPLETION CODE DESCRIBED IN THE DOCUMENTATION FOR COMQR
56066 C           AND COMQR2.  THE NORMAL COMPLETION CODE IS ZERO.
56067 C
56068 C        FV1, FV2, AND  FV3  ARE TEMPORARY STORAGE ARRAYS.
56069 C
56070 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
56071 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
56072 C
56073 C     THIS VERSION DATED AUGUST 1983.
56074 C
56075  
56076       SUBROUTINE PYEICG(NM,N,AR,AI,WR,WI,MATZ,ZR,ZI,FV1,FV2,FV3,IERR)
56077  
56078       INTEGER N,NM,IS1,IS2,IERR,MATZ
56079       DOUBLE PRECISION AR(5,5),AI(5,5),WR(5),WI(5),ZR(5,5),ZI(5,5),
56080      X       FV1(5),FV2(5),FV3(5)
56081       IF (N .LE. NM) GOTO 100
56082       IERR = 10 * N
56083       GOTO 120
56084 C
56085   100 CALL  PYCBAL(NM,N,AR,AI,IS1,IS2,FV1)
56086       CALL  PYCRTH(NM,N,IS1,IS2,AR,AI,FV2,FV3)
56087       IF (MATZ .NE. 0) GOTO 110
56088 C     .......... FIND EIGENVALUES ONLY ..........
56089       CALL  PYCMQR(NM,N,IS1,IS2,AR,AI,WR,WI,IERR)
56090       GOTO 120
56091 C     .......... FIND BOTH EIGENVALUES AND EIGENVECTORS ..........
56092   110 CALL  PYCMQ2(NM,N,IS1,IS2,FV2,FV3,AR,AI,WR,WI,ZR,ZI,IERR)
56093       IF (IERR .NE. 0) GOTO 120
56094       CALL  PYCBA2(NM,N,IS1,IS2,FV1,N,ZR,ZI)
56095   120 RETURN
56096       END
56097  
56098 C*********************************************************************
56099  
56100 C...PYCMQR
56101 C...Auxiliary to PYEICG.
56102 C
56103 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
56104 C     ALGOL PROCEDURE  COMLR, NUM. MATH. 12, 369-376(1968) BY MARTIN
56105 C     AND WILKINSON.
56106 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 396-403(1971).
56107 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
56108 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
56109 C
56110 C     THIS SUBROUTINE FINDS THE EIGENVALUES OF A COMPLEX
56111 C     UPPER HESSENBERG MATRIX BY THE QR METHOD.
56112 C
56113 C     ON INPUT
56114 C
56115 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
56116 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
56117 C          DIMENSION STATEMENT.
56118 C
56119 C        N IS THE ORDER OF THE MATRIX.
56120 C
56121 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
56122 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
56123 C          SET LOW=1, IGH=N.
56124 C
56125 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
56126 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
56127 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN
56128 C          INFORMATION ABOUT THE UNITARY TRANSFORMATIONS USED IN
56129 C          THE REDUCTION BY  CORTH, IF PERFORMED.
56130 C
56131 C     ON OUTPUT
56132 C
56133 C        THE UPPER HESSENBERG PORTIONS OF HR AND HI HAVE BEEN
56134 C          DESTROYED.  THEREFORE, THEY MUST BE SAVED BEFORE
56135 C          CALLING  COMQR  IF SUBSEQUENT CALCULATION OF
56136 C          EIGENVECTORS IS TO BE PERFORMED.
56137 C
56138 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
56139 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
56140 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
56141 C          FOR INDICES IERR+1,...,N.
56142 C
56143 C        IERR IS SET TO
56144 C          ZERO       FOR NORMAL RETURN,
56145 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
56146 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
56147 C
56148 C     CALLS PYCDIV FOR COMPLEX DIVISION.
56149 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
56150 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
56151 C
56152 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
56153 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
56154 C
56155 C     THIS VERSION DATED AUGUST 1983.
56156 C
56157  
56158       SUBROUTINE PYCMQR(NM,N,LOW,IGH,HR,HI,WR,WI,IERR)
56159  
56160       INTEGER I,J,L,N,EN,LL,NM,IGH,ITN,ITS,LOW,LP1,ENM1,IERR
56161       DOUBLE PRECISION HR(5,5),HI(5,5),WR(5),WI(5)
56162       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
56163      X       PYTHAG
56164  
56165       IERR = 0
56166       IF (LOW .EQ. IGH) GOTO 130
56167 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
56168       L = LOW + 1
56169 C
56170       DO 120 I = L, IGH
56171          LL = MIN0(I+1,IGH)
56172          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 120
56173          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
56174          YR = HR(I,I-1) / NORM
56175          YI = HI(I,I-1) / NORM
56176          HR(I,I-1) = NORM
56177          HI(I,I-1) = 0.0D0
56178 C
56179          DO 100 J = I, IGH
56180             SI = YR * HI(I,J) - YI * HR(I,J)
56181             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
56182             HI(I,J) = SI
56183   100    CONTINUE
56184 C
56185          DO 110 J = LOW, LL
56186             SI = YR * HI(J,I) + YI * HR(J,I)
56187             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
56188             HI(J,I) = SI
56189   110    CONTINUE
56190 C
56191   120 CONTINUE
56192 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
56193   130 DO 140 I = 1, N
56194          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
56195          WR(I) = HR(I,I)
56196          WI(I) = HI(I,I)
56197   140 CONTINUE
56198 C
56199       EN = IGH
56200       TR = 0.0D0
56201       TI = 0.0D0
56202       ITN = 30*N
56203 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
56204   150 IF (EN .LT. LOW) GOTO 320
56205       ITS = 0
56206       ENM1 = EN - 1
56207 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
56208 C                FOR L=EN STEP -1 UNTIL LOW D0 -- ..........
56209   160 DO 170 LL = LOW, EN
56210          L = EN + LOW - LL
56211          IF (L .EQ. LOW) GOTO 180
56212          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
56213      X            + DABS(HR(L,L)) + DABS(HI(L,L))
56214          TST2 = TST1 + DABS(HR(L,L-1))
56215          IF (TST2 .EQ. TST1) GOTO 180
56216   170 CONTINUE
56217 C     .......... FORM SHIFT ..........
56218   180 IF (L .EQ. EN) GOTO 300
56219       IF (ITN .EQ. 0) GOTO 310
56220       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 200
56221       SR = HR(EN,EN)
56222       SI = HI(EN,EN)
56223       XR = HR(ENM1,EN) * HR(EN,ENM1)
56224       XI = HI(ENM1,EN) * HR(EN,ENM1)
56225       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 210
56226       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
56227       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
56228       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
56229       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 190
56230       ZZR = -ZZR
56231       ZZI = -ZZI
56232   190 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
56233       SR = SR - XR
56234       SI = SI - XI
56235       GOTO 210
56236 C     .......... FORM EXCEPTIONAL SHIFT ..........
56237   200 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
56238       SI = 0.0D0
56239 C
56240   210 DO 220 I = LOW, EN
56241          HR(I,I) = HR(I,I) - SR
56242          HI(I,I) = HI(I,I) - SI
56243   220 CONTINUE
56244 C
56245       TR = TR + SR
56246       TI = TI + SI
56247       ITS = ITS + 1
56248       ITN = ITN - 1
56249 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
56250       LP1 = L + 1
56251 C
56252       DO 240 I = LP1, EN
56253          SR = HR(I,I-1)
56254          HR(I,I-1) = 0.0D0
56255          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
56256          XR = HR(I-1,I-1) / NORM
56257          WR(I-1) = XR
56258          XI = HI(I-1,I-1) / NORM
56259          WI(I-1) = XI
56260          HR(I-1,I-1) = NORM
56261          HI(I-1,I-1) = 0.0D0
56262          HI(I,I-1) = SR / NORM
56263 C
56264          DO 230 J = I, EN
56265             YR = HR(I-1,J)
56266             YI = HI(I-1,J)
56267             ZZR = HR(I,J)
56268             ZZI = HI(I,J)
56269             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
56270             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
56271             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
56272             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
56273   230    CONTINUE
56274 C
56275   240 CONTINUE
56276 C
56277       SI = HI(EN,EN)
56278       IF (SI .EQ. 0.0D0) GOTO 250
56279       NORM = PYTHAG(HR(EN,EN),SI)
56280       SR = HR(EN,EN) / NORM
56281       SI = SI / NORM
56282       HR(EN,EN) = NORM
56283       HI(EN,EN) = 0.0D0
56284 C     .......... INVERSE OPERATION (COLUMNS) ..........
56285   250 DO 280 J = LP1, EN
56286          XR = WR(J-1)
56287          XI = WI(J-1)
56288 C
56289          DO 270 I = L, J
56290             YR = HR(I,J-1)
56291             YI = 0.0D0
56292             ZZR = HR(I,J)
56293             ZZI = HI(I,J)
56294             IF (I .EQ. J) GOTO 260
56295             YI = HI(I,J-1)
56296             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
56297   260       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
56298             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
56299             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
56300   270    CONTINUE
56301 C
56302   280 CONTINUE
56303 C
56304       IF (SI .EQ. 0.0D0) GOTO 160
56305 C
56306       DO 290 I = L, EN
56307          YR = HR(I,EN)
56308          YI = HI(I,EN)
56309          HR(I,EN) = SR * YR - SI * YI
56310          HI(I,EN) = SR * YI + SI * YR
56311   290 CONTINUE
56312 C
56313       GOTO 160
56314 C     .......... A ROOT FOUND ..........
56315   300 WR(EN) = HR(EN,EN) + TR
56316       WI(EN) = HI(EN,EN) + TI
56317       EN = ENM1
56318       GOTO 150
56319 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
56320 C                CONVERGED AFTER 30*N ITERATIONS ..........
56321   310 IERR = EN
56322   320 RETURN
56323       END
56324  
56325 C*********************************************************************
56326  
56327 C...PYCMQ2
56328 C...Auxiliary to PYEICG.
56329 C
56330 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
56331 C     ALGOL PROCEDURE  COMLR2, NUM. MATH. 16, 181-204(1970) BY PETERS
56332 C     AND WILKINSON.
56333 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 372-395(1971).
56334 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
56335 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
56336 C
56337 C     THIS SUBROUTINE FINDS THE EIGENVALUES AND EIGENVECTORS
56338 C     OF A COMPLEX UPPER HESSENBERG MATRIX BY THE QR
56339 C     METHOD.  THE EIGENVECTORS OF A COMPLEX GENERAL MATRIX
56340 C     CAN ALSO BE FOUND IF  CORTH  HAS BEEN USED TO REDUCE
56341 C     THIS GENERAL MATRIX TO HESSENBERG FORM.
56342 C
56343 C     ON INPUT
56344 C
56345 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
56346 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
56347 C          DIMENSION STATEMENT.
56348 C
56349 C        N IS THE ORDER OF THE MATRIX.
56350 C
56351 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
56352 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
56353 C          SET LOW=1, IGH=N.
56354 C
56355 C        ORTR AND ORTI CONTAIN INFORMATION ABOUT THE UNITARY TRANS-
56356 C          FORMATIONS USED IN THE REDUCTION BY  CORTH, IF PERFORMED.
56357 C          ONLY ELEMENTS LOW THROUGH IGH ARE USED.  IF THE EIGENVECTORS
56358 C          OF THE HESSENBERG MATRIX ARE DESIRED, SET ORTR(J) AND
56359 C          ORTI(J) TO 0.0D0 FOR THESE ELEMENTS.
56360 C
56361 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
56362 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
56363 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN FURTHER
56364 C          INFORMATION ABOUT THE TRANSFORMATIONS WHICH WERE USED IN THE
56365 C          REDUCTION BY  CORTH, IF PERFORMED.  IF THE EIGENVECTORS OF
56366 C          THE HESSENBERG MATRIX ARE DESIRED, THESE ELEMENTS MAY BE
56367 C          ARBITRARY.
56368 C
56369 C     ON OUTPUT
56370 C
56371 C        ORTR, ORTI, AND THE UPPER HESSENBERG PORTIONS OF HR AND HI
56372 C          HAVE BEEN DESTROYED.
56373 C
56374 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
56375 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
56376 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
56377 C          FOR INDICES IERR+1,...,N.
56378 C
56379 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
56380 C          RESPECTIVELY, OF THE EIGENVECTORS.  THE EIGENVECTORS
56381 C          ARE UNNORMALIZED.  IF AN ERROR EXIT IS MADE, NONE OF
56382 C          THE EIGENVECTORS HAS BEEN FOUND.
56383 C
56384 C        IERR IS SET TO
56385 C          ZERO       FOR NORMAL RETURN,
56386 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
56387 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
56388 C
56389 C     CALLS PYCDIV FOR COMPLEX DIVISION.
56390 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
56391 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
56392 C
56393 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
56394 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
56395 C
56396 C     THIS VERSION DATED OCTOBER 1989.
56397 C
56398 C  MESHED OVERFLOW CONTROL WITH VECTORS OF ISOLATED ROOTS (10/19/89 BSG)
56399 C  MESHED OVERFLOW CONTROL WITH TRIANGULAR MULTIPLY (10/30/89 BSG)
56400 C
56401  
56402       SUBROUTINE PYCMQ2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)
56403  
56404       INTEGER I,J,K,L,M,N,EN,II,JJ,LL,NM,NN,IGH,IP1,
56405      X        ITN,ITS,LOW,LP1,ENM1,IEND,IERR
56406       DOUBLE PRECISION HR(5,5),HI(5,5),WR(5),WI(5),ZR(5,5),ZI(5,5),
56407      X       ORTR(5),ORTI(5)
56408       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
56409      X       PYTHAG
56410  
56411       IERR = 0
56412 C     .......... INITIALIZE EIGENVECTOR MATRIX ..........
56413       DO 110 J = 1, N
56414 C
56415          DO 100 I = 1, N
56416             ZR(I,J) = 0.0D0
56417             ZI(I,J) = 0.0D0
56418   100    CONTINUE
56419          ZR(J,J) = 1.0D0
56420   110 CONTINUE
56421 C     .......... FORM THE MATRIX OF ACCUMULATED TRANSFORMATIONS
56422 C                FROM THE INFORMATION LEFT BY CORTH ..........
56423       IEND = IGH - LOW - 1
56424       IF (IEND.LT.0) GOTO 220
56425       IF (IEND.EQ.0) GOTO 170
56426 C     .......... FOR I=IGH-1 STEP -1 UNTIL LOW+1 DO -- ..........
56427       DO 160 II = 1, IEND
56428          I = IGH - II
56429          IF (ORTR(I) .EQ. 0.0D0 .AND. ORTI(I) .EQ. 0.0D0) GOTO 160
56430          IF (HR(I,I-1) .EQ. 0.0D0 .AND. HI(I,I-1) .EQ. 0.0D0) GOTO 160
56431 C     .......... NORM BELOW IS NEGATIVE OF H FORMED IN CORTH ..........
56432          NORM = HR(I,I-1) * ORTR(I) + HI(I,I-1) * ORTI(I)
56433          IP1 = I + 1
56434 C
56435          DO 120 K = IP1, IGH
56436             ORTR(K) = HR(K,I-1)
56437             ORTI(K) = HI(K,I-1)
56438   120    CONTINUE
56439 C
56440          DO 150 J = I, IGH
56441             SR = 0.0D0
56442             SI = 0.0D0
56443 C
56444             DO 130 K = I, IGH
56445                SR = SR + ORTR(K) * ZR(K,J) + ORTI(K) * ZI(K,J)
56446                SI = SI + ORTR(K) * ZI(K,J) - ORTI(K) * ZR(K,J)
56447   130       CONTINUE
56448 C
56449             SR = SR / NORM
56450             SI = SI / NORM
56451 C
56452             DO 140 K = I, IGH
56453                ZR(K,J) = ZR(K,J) + SR * ORTR(K) - SI * ORTI(K)
56454                ZI(K,J) = ZI(K,J) + SR * ORTI(K) + SI * ORTR(K)
56455   140       CONTINUE
56456 C
56457   150    CONTINUE
56458 C
56459   160 CONTINUE
56460 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
56461   170 L = LOW + 1
56462 C
56463       DO 210 I = L, IGH
56464          LL = MIN0(I+1,IGH)
56465          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 210
56466          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
56467          YR = HR(I,I-1) / NORM
56468          YI = HI(I,I-1) / NORM
56469          HR(I,I-1) = NORM
56470          HI(I,I-1) = 0.0D0
56471 C
56472          DO 180 J = I, N
56473             SI = YR * HI(I,J) - YI * HR(I,J)
56474             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
56475             HI(I,J) = SI
56476   180    CONTINUE
56477 C
56478          DO 190 J = 1, LL
56479             SI = YR * HI(J,I) + YI * HR(J,I)
56480             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
56481             HI(J,I) = SI
56482   190    CONTINUE
56483 C
56484          DO 200 J = LOW, IGH
56485             SI = YR * ZI(J,I) + YI * ZR(J,I)
56486             ZR(J,I) = YR * ZR(J,I) - YI * ZI(J,I)
56487             ZI(J,I) = SI
56488   200    CONTINUE
56489 C
56490   210 CONTINUE
56491 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
56492   220 DO 230 I = 1, N
56493          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 230
56494          WR(I) = HR(I,I)
56495          WI(I) = HI(I,I)
56496   230 CONTINUE
56497 C
56498       EN = IGH
56499       TR = 0.0D0
56500       TI = 0.0D0
56501       ITN = 30*N
56502 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
56503   240 IF (EN .LT. LOW) GOTO 430
56504       ITS = 0
56505       ENM1 = EN - 1
56506 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
56507 C                FOR L=EN STEP -1 UNTIL LOW DO -- ..........
56508   250 DO 260 LL = LOW, EN
56509          L = EN + LOW - LL
56510          IF (L .EQ. LOW) GOTO 270
56511          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
56512      X            + DABS(HR(L,L)) + DABS(HI(L,L))
56513          TST2 = TST1 + DABS(HR(L,L-1))
56514          IF (TST2 .EQ. TST1) GOTO 270
56515   260 CONTINUE
56516 C     .......... FORM SHIFT ..........
56517   270 IF (L .EQ. EN) GOTO 420
56518       IF (ITN .EQ. 0) GOTO 550
56519       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 290
56520       SR = HR(EN,EN)
56521       SI = HI(EN,EN)
56522       XR = HR(ENM1,EN) * HR(EN,ENM1)
56523       XI = HI(ENM1,EN) * HR(EN,ENM1)
56524       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 300
56525       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
56526       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
56527       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
56528       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 280
56529       ZZR = -ZZR
56530       ZZI = -ZZI
56531   280 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
56532       SR = SR - XR
56533       SI = SI - XI
56534       GOTO 300
56535 C     .......... FORM EXCEPTIONAL SHIFT ..........
56536   290 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
56537       SI = 0.0D0
56538 C
56539   300 DO 310 I = LOW, EN
56540          HR(I,I) = HR(I,I) - SR
56541          HI(I,I) = HI(I,I) - SI
56542   310 CONTINUE
56543 C
56544       TR = TR + SR
56545       TI = TI + SI
56546       ITS = ITS + 1
56547       ITN = ITN - 1
56548 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
56549       LP1 = L + 1
56550 C
56551       DO 330 I = LP1, EN
56552          SR = HR(I,I-1)
56553          HR(I,I-1) = 0.0D0
56554          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
56555          XR = HR(I-1,I-1) / NORM
56556          WR(I-1) = XR
56557          XI = HI(I-1,I-1) / NORM
56558          WI(I-1) = XI
56559          HR(I-1,I-1) = NORM
56560          HI(I-1,I-1) = 0.0D0
56561          HI(I,I-1) = SR / NORM
56562 C
56563          DO 320 J = I, N
56564             YR = HR(I-1,J)
56565             YI = HI(I-1,J)
56566             ZZR = HR(I,J)
56567             ZZI = HI(I,J)
56568             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
56569             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
56570             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
56571             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
56572   320    CONTINUE
56573 C
56574   330 CONTINUE
56575 C
56576       SI = HI(EN,EN)
56577       IF (SI .EQ. 0.0D0) GOTO 350
56578       NORM = PYTHAG(HR(EN,EN),SI)
56579       SR = HR(EN,EN) / NORM
56580       SI = SI / NORM
56581       HR(EN,EN) = NORM
56582       HI(EN,EN) = 0.0D0
56583       IF (EN .EQ. N) GOTO 350
56584       IP1 = EN + 1
56585 C
56586       DO 340 J = IP1, N
56587          YR = HR(EN,J)
56588          YI = HI(EN,J)
56589          HR(EN,J) = SR * YR + SI * YI
56590          HI(EN,J) = SR * YI - SI * YR
56591   340 CONTINUE
56592 C     .......... INVERSE OPERATION (COLUMNS) ..........
56593   350 DO 390 J = LP1, EN
56594          XR = WR(J-1)
56595          XI = WI(J-1)
56596 C
56597          DO 370 I = 1, J
56598             YR = HR(I,J-1)
56599             YI = 0.0D0
56600             ZZR = HR(I,J)
56601             ZZI = HI(I,J)
56602             IF (I .EQ. J) GOTO 360
56603             YI = HI(I,J-1)
56604             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
56605   360       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
56606             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
56607             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
56608   370    CONTINUE
56609 C
56610          DO 380 I = LOW, IGH
56611             YR = ZR(I,J-1)
56612             YI = ZI(I,J-1)
56613             ZZR = ZR(I,J)
56614             ZZI = ZI(I,J)
56615             ZR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
56616             ZI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
56617             ZR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
56618             ZI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
56619   380    CONTINUE
56620 C
56621   390 CONTINUE
56622 C
56623       IF (SI .EQ. 0.0D0) GOTO 250
56624 C
56625       DO 400 I = 1, EN
56626          YR = HR(I,EN)
56627          YI = HI(I,EN)
56628          HR(I,EN) = SR * YR - SI * YI
56629          HI(I,EN) = SR * YI + SI * YR
56630   400 CONTINUE
56631 C
56632       DO 410 I = LOW, IGH
56633          YR = ZR(I,EN)
56634          YI = ZI(I,EN)
56635          ZR(I,EN) = SR * YR - SI * YI
56636          ZI(I,EN) = SR * YI + SI * YR
56637   410 CONTINUE
56638 C
56639       GOTO 250
56640 C     .......... A ROOT FOUND ..........
56641   420 HR(EN,EN) = HR(EN,EN) + TR
56642       WR(EN) = HR(EN,EN)
56643       HI(EN,EN) = HI(EN,EN) + TI
56644       WI(EN) = HI(EN,EN)
56645       EN = ENM1
56646       GOTO 240
56647 C     .......... ALL ROOTS FOUND.  BACKSUBSTITUTE TO FIND
56648 C                VECTORS OF UPPER TRIANGULAR FORM ..........
56649   430 NORM = 0.0D0
56650 C
56651       DO 440 I = 1, N
56652 C
56653          DO 440 J = I, N
56654             TR = DABS(HR(I,J)) + DABS(HI(I,J))
56655             IF (TR .GT. NORM) NORM = TR
56656   440 CONTINUE
56657 C
56658       IF (N .EQ. 1 .OR. NORM .EQ. 0.0D0) GOTO 560
56659 C     .......... FOR EN=N STEP -1 UNTIL 2 DO -- ..........
56660       DO 500 NN = 2, N
56661          EN = N + 2 - NN
56662          XR = WR(EN)
56663          XI = WI(EN)
56664          HR(EN,EN) = 1.0D0
56665          HI(EN,EN) = 0.0D0
56666          ENM1 = EN - 1
56667 C     .......... FOR I=EN-1 STEP -1 UNTIL 1 DO -- ..........
56668          DO 490 II = 1, ENM1
56669             I = EN - II
56670             ZZR = 0.0D0
56671             ZZI = 0.0D0
56672             IP1 = I + 1
56673 C
56674             DO 450 J = IP1, EN
56675                ZZR = ZZR + HR(I,J) * HR(J,EN) - HI(I,J) * HI(J,EN)
56676                ZZI = ZZI + HR(I,J) * HI(J,EN) + HI(I,J) * HR(J,EN)
56677   450       CONTINUE
56678 C
56679             YR = XR - WR(I)
56680             YI = XI - WI(I)
56681             IF (YR .NE. 0.0D0 .OR. YI .NE. 0.0D0) GOTO 470
56682                TST1 = NORM
56683                YR = TST1
56684   460          YR = 0.01D0 * YR
56685                TST2 = NORM + YR
56686                IF (TST2 .GT. TST1) GOTO 460
56687   470       CONTINUE
56688             CALL PYCDIV(ZZR,ZZI,YR,YI,HR(I,EN),HI(I,EN))
56689 C     .......... OVERFLOW CONTROL ..........
56690             TR = DABS(HR(I,EN)) + DABS(HI(I,EN))
56691             IF (TR .EQ. 0.0D0) GOTO 490
56692             TST1 = TR
56693             TST2 = TST1 + 1.0D0/TST1
56694             IF (TST2 .GT. TST1) GOTO 490
56695             DO 480 J = I, EN
56696                HR(J,EN) = HR(J,EN)/TR
56697                HI(J,EN) = HI(J,EN)/TR
56698   480       CONTINUE
56699 C
56700   490    CONTINUE
56701 C
56702   500 CONTINUE
56703 C     .......... END BACKSUBSTITUTION ..........
56704 C     .......... VECTORS OF ISOLATED ROOTS ..........
56705       DO 520 I = 1, N
56706          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 520
56707 C
56708          DO 510 J = I, N
56709             ZR(I,J) = HR(I,J)
56710             ZI(I,J) = HI(I,J)
56711   510    CONTINUE
56712 C
56713   520 CONTINUE
56714 C     .......... MULTIPLY BY TRANSFORMATION MATRIX TO GIVE
56715 C                VECTORS OF ORIGINAL FULL MATRIX.
56716 C                FOR J=N STEP -1 UNTIL LOW DO -- ..........
56717       DO 540 JJ = LOW, N
56718          J = N + LOW - JJ
56719          M = MIN0(J,IGH)
56720 C
56721          DO 540 I = LOW, IGH
56722             ZZR = 0.0D0
56723             ZZI = 0.0D0
56724 C
56725             DO 530 K = LOW, M
56726                ZZR = ZZR + ZR(I,K) * HR(K,J) - ZI(I,K) * HI(K,J)
56727                ZZI = ZZI + ZR(I,K) * HI(K,J) + ZI(I,K) * HR(K,J)
56728   530       CONTINUE
56729 C
56730             ZR(I,J) = ZZR
56731             ZI(I,J) = ZZI
56732   540 CONTINUE
56733 C
56734       GOTO 560
56735 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
56736 C                CONVERGED AFTER 30*N ITERATIONS ..........
56737   550 IERR = EN
56738   560 RETURN
56739       END
56740  
56741 C*********************************************************************
56742  
56743 C...PYCDIV
56744 C...Auxiliary to PYCMQR
56745 C
56746 C     COMPLEX DIVISION, (CR,CI) = (AR,AI)/(BR,BI)
56747 C
56748  
56749       SUBROUTINE PYCDIV(AR,AI,BR,BI,CR,CI)
56750  
56751       DOUBLE PRECISION AR,AI,BR,BI,CR,CI
56752       DOUBLE PRECISION S,ARS,AIS,BRS,BIS
56753  
56754       S = DABS(BR) + DABS(BI)
56755       ARS = AR/S
56756       AIS = AI/S
56757       BRS = BR/S
56758       BIS = BI/S
56759       S = BRS**2 + BIS**2
56760       CR = (ARS*BRS + AIS*BIS)/S
56761       CI = (AIS*BRS - ARS*BIS)/S
56762       RETURN
56763       END
56764  
56765 C*********************************************************************
56766  
56767 C...PYCSRT
56768 C...Auxiliary to PYCMQR
56769 C
56770 C     (YR,YI) = COMPLEX DSQRT(XR,XI)
56771 C     BRANCH CHOSEN SO THAT YR .GE. 0.0 AND SIGN(YI) .EQ. SIGN(XI)
56772 C
56773  
56774       SUBROUTINE PYCSRT(XR,XI,YR,YI)
56775  
56776       DOUBLE PRECISION XR,XI,YR,YI
56777       DOUBLE PRECISION S,TR,TI,PYTHAG
56778  
56779       TR = XR
56780       TI = XI
56781       S = DSQRT(0.5D0*(PYTHAG(TR,TI) + DABS(TR)))
56782       IF (TR .GE. 0.0D0) YR = S
56783       IF (TI .LT. 0.0D0) S = -S
56784       IF (TR .LE. 0.0D0) YI = S
56785       IF (TR .LT. 0.0D0) YR = 0.5D0*(TI/YI)
56786       IF (TR .GT. 0.0D0) YI = 0.5D0*(TI/YR)
56787       RETURN
56788       END
56789  
56790       DOUBLE PRECISION FUNCTION PYTHAG(A,B)
56791       DOUBLE PRECISION A,B
56792 C
56793 C     FINDS DSQRT(A**2+B**2) WITHOUT OVERFLOW OR DESTRUCTIVE UNDERFLOW
56794 C
56795       DOUBLE PRECISION P,R,S,T,U
56796       P = DMAX1(DABS(A),DABS(B))
56797       IF (P .EQ. 0.0D0) GOTO 110
56798       R = (DMIN1(DABS(A),DABS(B))/P)**2
56799   100 CONTINUE
56800          T = 4.0D0 + R
56801          IF (T .EQ. 4.0D0) GOTO 110
56802          S = R/T
56803          U = 1.0D0 + 2.0D0*S
56804          P = U*P
56805          R = (S/U)**2 * R
56806       GOTO 100
56807   110 PYTHAG = P
56808       RETURN
56809       END
56810  
56811 C*********************************************************************
56812  
56813 C...PYCBAL
56814 C...Auxiliary to PYEICG
56815 C
56816 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
56817 C     CBALANCE, WHICH IS A COMPLEX VERSION OF BALANCE,
56818 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
56819 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
56820 C
56821 C     THIS SUBROUTINE BALANCES A COMPLEX MATRIX AND ISOLATES
56822 C     EIGENVALUES WHENEVER POSSIBLE.
56823 C
56824 C     ON INPUT
56825 C
56826 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
56827 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
56828 C          DIMENSION STATEMENT.
56829 C
56830 C        N IS THE ORDER OF THE MATRIX.
56831 C
56832 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
56833 C          RESPECTIVELY, OF THE COMPLEX MATRIX TO BE BALANCED.
56834 C
56835 C     ON OUTPUT
56836 C
56837 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
56838 C          RESPECTIVELY, OF THE BALANCED MATRIX.
56839 C
56840 C        LOW AND IGH ARE TWO INTEGERS SUCH THAT AR(I,J) AND AI(I,J)
56841 C          ARE EQUAL TO ZERO IF
56842 C           (1) I IS GREATER THAN J AND
56843 C           (2) J=1,...,LOW-1 OR I=IGH+1,...,N.
56844 C
56845 C        SCALE CONTAINS INFORMATION DETERMINING THE
56846 C           PERMUTATIONS AND SCALING FACTORS USED.
56847 C
56848 C     SUPPOSE THAT THE PRINCIPAL SUBMATRIX IN ROWS LOW THROUGH IGH
56849 C     HAS BEEN BALANCED, THAT P(J) DENOTES THE INDEX INTERCHANGED
56850 C     WITH J DURING THE PERMUTATION STEP, AND THAT THE ELEMENTS
56851 C     OF THE DIAGONAL MATRIX USED ARE DENOTED BY D(I,J).  THEN
56852 C        SCALE(J) = P(J),    FOR J = 1,...,LOW-1
56853 C                 = D(J,J)       J = LOW,...,IGH
56854 C                 = P(J)         J = IGH+1,...,N.
56855 C     THE ORDER IN WHICH THE INTERCHANGES ARE MADE IS N TO IGH+1,
56856 C     THEN 1 TO LOW-1.
56857 C
56858 C     NOTE THAT 1 IS RETURNED FOR IGH IF IGH IS ZERO FORMALLY.
56859 C
56860 C     THE ALGOL PROCEDURE EXC CONTAINED IN CBALANCE APPEARS IN
56861 C     CBAL  IN LINE.  (NOTE THAT THE ALGOL ROLES OF IDENTIFIERS
56862 C     K,L HAVE BEEN REVERSED.)
56863 C
56864 C     ARITHMETIC IS REAL THROUGHOUT.
56865 C
56866 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
56867 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
56868 C
56869 C     THIS VERSION DATED AUGUST 1983.
56870 C
56871  
56872       SUBROUTINE PYCBAL(NM,N,AR,AI,LOW,IGH,SCALE)
56873  
56874       INTEGER I,J,K,L,M,N,JJ,NM,IGH,LOW,IEXC
56875       DOUBLE PRECISION AR(5,5),AI(5,5),SCALE(5)
56876       DOUBLE PRECISION C,F,G,R,S,B2,RADIX
56877       LOGICAL NOCONV
56878  
56879       RADIX = 16.0D0
56880 C
56881       B2 = RADIX * RADIX
56882       K = 1
56883       L = N
56884       GOTO 150
56885 C     .......... IN-LINE PROCEDURE FOR ROW AND
56886 C                COLUMN EXCHANGE ..........
56887   100 SCALE(M) = J
56888       IF (J .EQ. M) GOTO 130
56889 C
56890       DO 110 I = 1, L
56891          F = AR(I,J)
56892          AR(I,J) = AR(I,M)
56893          AR(I,M) = F
56894          F = AI(I,J)
56895          AI(I,J) = AI(I,M)
56896          AI(I,M) = F
56897   110 CONTINUE
56898 C
56899       DO 120 I = K, N
56900          F = AR(J,I)
56901          AR(J,I) = AR(M,I)
56902          AR(M,I) = F
56903          F = AI(J,I)
56904          AI(J,I) = AI(M,I)
56905          AI(M,I) = F
56906   120 CONTINUE
56907 C
56908   130 IF(IEXC.EQ.1) GOTO 140
56909       IF(IEXC.EQ.2) GOTO 180
56910 C     .......... SEARCH FOR ROWS ISOLATING AN EIGENVALUE
56911 C                AND PUSH THEM DOWN ..........
56912   140 IF (L .EQ. 1) GOTO 320
56913       L = L - 1
56914 C     .......... FOR J=L STEP -1 UNTIL 1 DO -- ..........
56915   150 DO 170 JJ = 1, L
56916          J = L + 1 - JJ
56917 C
56918          DO 160 I = 1, L
56919             IF (I .EQ. J) GOTO 160
56920             IF (AR(J,I) .NE. 0.0D0 .OR. AI(J,I) .NE. 0.0D0) GOTO 170
56921   160    CONTINUE
56922 C
56923          M = L
56924          IEXC = 1
56925          GOTO 100
56926   170 CONTINUE
56927 C
56928       GOTO 190
56929 C     .......... SEARCH FOR COLUMNS ISOLATING AN EIGENVALUE
56930 C                AND PUSH THEM LEFT ..........
56931   180 K = K + 1
56932 C
56933   190 DO 210 J = K, L
56934 C
56935          DO 200 I = K, L
56936             IF (I .EQ. J) GOTO 200
56937             IF (AR(I,J) .NE. 0.0D0 .OR. AI(I,J) .NE. 0.0D0) GOTO 210
56938   200    CONTINUE
56939 C
56940          M = K
56941          IEXC = 2
56942          GOTO 100
56943   210 CONTINUE
56944 C     .......... NOW BALANCE THE SUBMATRIX IN ROWS K TO L ..........
56945       DO 220 I = K, L
56946   220 SCALE(I) = 1.0D0
56947 C     .......... ITERATIVE LOOP FOR NORM REDUCTION ..........
56948   230 NOCONV = .FALSE.
56949 C
56950       DO 310 I = K, L
56951          C = 0.0D0
56952          R = 0.0D0
56953 C
56954          DO 240 J = K, L
56955             IF (J .EQ. I) GOTO 240
56956             C = C + DABS(AR(J,I)) + DABS(AI(J,I))
56957             R = R + DABS(AR(I,J)) + DABS(AI(I,J))
56958   240    CONTINUE
56959 C     .......... GUARD AGAINST ZERO C OR R DUE TO UNDERFLOW ..........
56960          IF (C .EQ. 0.0D0 .OR. R .EQ. 0.0D0) GOTO 310
56961          G = R / RADIX
56962          F = 1.0D0
56963          S = C + R
56964   250    IF (C .GE. G) GOTO 260
56965          F = F * RADIX
56966          C = C * B2
56967          GOTO 250
56968   260    G = R * RADIX
56969   270    IF (C .LT. G) GOTO 280
56970          F = F / RADIX
56971          C = C / B2
56972          GOTO 270
56973 C     .......... NOW BALANCE ..........
56974   280    IF ((C + R) / F .GE. 0.95D0 * S) GOTO 310
56975          G = 1.0D0 / F
56976          SCALE(I) = SCALE(I) * F
56977          NOCONV = .TRUE.
56978 C
56979          DO 290 J = K, N
56980             AR(I,J) = AR(I,J) * G
56981             AI(I,J) = AI(I,J) * G
56982   290    CONTINUE
56983 C
56984          DO 300 J = 1, L
56985             AR(J,I) = AR(J,I) * F
56986             AI(J,I) = AI(J,I) * F
56987   300    CONTINUE
56988 C
56989   310 CONTINUE
56990 C
56991       IF (NOCONV) GOTO 230
56992 C
56993   320 LOW = K
56994       IGH = L
56995       RETURN
56996       END
56997  
56998 C*********************************************************************
56999  
57000 C...PYCBA2
57001 C...Auxiliary to PYEICG.
57002 C
57003 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
57004 C     CBABK2, WHICH IS A COMPLEX VERSION OF BALBAK,
57005 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
57006 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
57007 C
57008 C     THIS SUBROUTINE FORMS THE EIGENVECTORS OF A COMPLEX GENERAL
57009 C     MATRIX BY BACK TRANSFORMING THOSE OF THE CORRESPONDING
57010 C     BALANCED MATRIX DETERMINED BY  CBAL.
57011 C
57012 C     ON INPUT
57013 C
57014 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
57015 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
57016 C          DIMENSION STATEMENT.
57017 C
57018 C        N IS THE ORDER OF THE MATRIX.
57019 C
57020 C        LOW AND IGH ARE INTEGERS DETERMINED BY  CBAL.
57021 C
57022 C        SCALE CONTAINS INFORMATION DETERMINING THE PERMUTATIONS
57023 C          AND SCALING FACTORS USED BY  CBAL.
57024 C
57025 C        M IS THE NUMBER OF EIGENVECTORS TO BE BACK TRANSFORMED.
57026 C
57027 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
57028 C          RESPECTIVELY, OF THE EIGENVECTORS TO BE
57029 C          BACK TRANSFORMED IN THEIR FIRST M COLUMNS.
57030 C
57031 C     ON OUTPUT
57032 C
57033 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
57034 C          RESPECTIVELY, OF THE TRANSFORMED EIGENVECTORS
57035 C          IN THEIR FIRST M COLUMNS.
57036 C
57037 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
57038 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
57039 C
57040 C     THIS VERSION DATED AUGUST 1983.
57041 C
57042  
57043       SUBROUTINE PYCBA2(NM,N,LOW,IGH,SCALE,M,ZR,ZI)
57044  
57045       INTEGER I,J,K,M,N,II,NM,IGH,LOW
57046       DOUBLE PRECISION SCALE(5),ZR(5,5),ZI(5,5)
57047       DOUBLE PRECISION S
57048  
57049       IF (M .EQ. 0) GOTO 150
57050       IF (IGH .EQ. LOW) GOTO 120
57051 C
57052       DO 110 I = LOW, IGH
57053          S = SCALE(I)
57054 C     .......... LEFT HAND EIGENVECTORS ARE BACK TRANSFORMED
57055 C                IF THE FOREGOING STATEMENT IS REPLACED BY
57056 C                S=1.0D0/SCALE(I). ..........
57057          DO 100 J = 1, M
57058             ZR(I,J) = ZR(I,J) * S
57059             ZI(I,J) = ZI(I,J) * S
57060   100    CONTINUE
57061 C
57062   110 CONTINUE
57063 C     .......... FOR I=LOW-1 STEP -1 UNTIL 1,
57064 C                IGH+1 STEP 1 UNTIL N DO -- ..........
57065   120 DO 140 II = 1, N
57066          I = II
57067          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
57068          IF (I .LT. LOW) I = LOW - II
57069          K = SCALE(I)
57070          IF (K .EQ. I) GOTO 140
57071 C
57072          DO 130 J = 1, M
57073             S = ZR(I,J)
57074             ZR(I,J) = ZR(K,J)
57075             ZR(K,J) = S
57076             S = ZI(I,J)
57077             ZI(I,J) = ZI(K,J)
57078             ZI(K,J) = S
57079   130    CONTINUE
57080 C
57081   140 CONTINUE
57082 C
57083   150 RETURN
57084       END
57085  
57086 C*********************************************************************
57087  
57088 C...PYCRTH
57089 C...Auxiliary to PYEICG.
57090 C
57091 C     THIS SUBROUTINE IS A TRANSLATION OF A COMPLEX ANALOGUE OF
57092 C     THE ALGOL PROCEDURE ORTHES, NUM. MATH. 12, 349-368(1968)
57093 C     BY MARTIN AND WILKINSON.
57094 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 339-358(1971).
57095 C
57096 C     GIVEN A COMPLEX GENERAL MATRIX, THIS SUBROUTINE
57097 C     REDUCES A SUBMATRIX SITUATED IN ROWS AND COLUMNS
57098 C     LOW THROUGH IGH TO UPPER HESSENBERG FORM BY
57099 C     UNITARY SIMILARITY TRANSFORMATIONS.
57100 C
57101 C     ON INPUT
57102 C
57103 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
57104 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
57105 C          DIMENSION STATEMENT.
57106 C
57107 C        N IS THE ORDER OF THE MATRIX.
57108 C
57109 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
57110 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
57111 C          SET LOW=1, IGH=N.
57112 C
57113 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
57114 C          RESPECTIVELY, OF THE COMPLEX INPUT MATRIX.
57115 C
57116 C     ON OUTPUT
57117 C
57118 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
57119 C          RESPECTIVELY, OF THE HESSENBERG MATRIX.  INFORMATION
57120 C          ABOUT THE UNITARY TRANSFORMATIONS USED IN THE REDUCTION
57121 C          IS STORED IN THE REMAINING TRIANGLES UNDER THE
57122 C          HESSENBERG MATRIX.
57123 C
57124 C        ORTR AND ORTI CONTAIN FURTHER INFORMATION ABOUT THE
57125 C          TRANSFORMATIONS.  ONLY ELEMENTS LOW THROUGH IGH ARE USED.
57126 C
57127 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
57128 C
57129 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
57130 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
57131 C
57132 C     THIS VERSION DATED AUGUST 1983.
57133 C
57134  
57135       SUBROUTINE PYCRTH(NM,N,LOW,IGH,AR,AI,ORTR,ORTI)
57136  
57137       INTEGER I,J,M,N,II,JJ,LA,MP,NM,IGH,KP1,LOW
57138       DOUBLE PRECISION AR(5,5),AI(5,5),ORTR(5),ORTI(5)
57139       DOUBLE PRECISION F,G,H,FI,FR,SCALE,PYTHAG
57140  
57141       LA = IGH - 1
57142       KP1 = LOW + 1
57143       IF (LA .LT. KP1) GOTO 210
57144 C
57145       DO 200 M = KP1, LA
57146          H = 0.0D0
57147          ORTR(M) = 0.0D0
57148          ORTI(M) = 0.0D0
57149          SCALE = 0.0D0
57150 C     .......... SCALE COLUMN (ALGOL TOL THEN NOT NEEDED) ..........
57151          DO 100 I = M, IGH
57152   100    SCALE = SCALE + DABS(AR(I,M-1)) + DABS(AI(I,M-1))
57153 C
57154          IF (SCALE .EQ. 0.0D0) GOTO 200
57155          MP = M + IGH
57156 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
57157          DO 110 II = M, IGH
57158             I = MP - II
57159             ORTR(I) = AR(I,M-1) / SCALE
57160             ORTI(I) = AI(I,M-1) / SCALE
57161             H = H + ORTR(I) * ORTR(I) + ORTI(I) * ORTI(I)
57162   110    CONTINUE
57163 C
57164          G = DSQRT(H)
57165          F = PYTHAG(ORTR(M),ORTI(M))
57166          IF (F .EQ. 0.0D0) GOTO 120
57167          H = H + F * G
57168          G = G / F
57169          ORTR(M) = (1.0D0 + G) * ORTR(M)
57170          ORTI(M) = (1.0D0 + G) * ORTI(M)
57171          GOTO 130
57172 C
57173   120    ORTR(M) = G
57174          AR(M,M-1) = SCALE
57175 C     .......... FORM (I-(U*UT)/H) * A ..........
57176   130    DO 160 J = M, N
57177             FR = 0.0D0
57178             FI = 0.0D0
57179 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
57180             DO 140 II = M, IGH
57181                I = MP - II
57182                FR = FR + ORTR(I) * AR(I,J) + ORTI(I) * AI(I,J)
57183                FI = FI + ORTR(I) * AI(I,J) - ORTI(I) * AR(I,J)
57184   140       CONTINUE
57185 C
57186             FR = FR / H
57187             FI = FI / H
57188 C
57189             DO 150 I = M, IGH
57190                AR(I,J) = AR(I,J) - FR * ORTR(I) + FI * ORTI(I)
57191                AI(I,J) = AI(I,J) - FR * ORTI(I) - FI * ORTR(I)
57192   150       CONTINUE
57193 C
57194   160    CONTINUE
57195 C     .......... FORM (I-(U*UT)/H)*A*(I-(U*UT)/H) ..........
57196          DO 190 I = 1, IGH
57197             FR = 0.0D0
57198             FI = 0.0D0
57199 C     .......... FOR J=IGH STEP -1 UNTIL M DO -- ..........
57200             DO 170 JJ = M, IGH
57201                J = MP - JJ
57202                FR = FR + ORTR(J) * AR(I,J) - ORTI(J) * AI(I,J)
57203                FI = FI + ORTR(J) * AI(I,J) + ORTI(J) * AR(I,J)
57204   170       CONTINUE
57205 C
57206             FR = FR / H
57207             FI = FI / H
57208 C
57209             DO 180 J = M, IGH
57210                AR(I,J) = AR(I,J) - FR * ORTR(J) - FI * ORTI(J)
57211                AI(I,J) = AI(I,J) + FR * ORTI(J) - FI * ORTR(J)
57212   180       CONTINUE
57213 C
57214   190    CONTINUE
57215 C
57216          ORTR(M) = SCALE * ORTR(M)
57217          ORTI(M) = SCALE * ORTI(M)
57218          AR(M,M-1) = -G * AR(M,M-1)
57219          AI(M,M-1) = -G * AI(M,M-1)
57220   200 CONTINUE
57221 C
57222   210 RETURN
57223       END
57224  
57225 C*********************************************************************
57226  
57227 C...PYLDCM
57228 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
57229 C...processes.
57230  
57231       SUBROUTINE PYLDCM(A,N,NP,INDX,D)
57232       IMPLICIT NONE
57233       INTEGER N,NP,INDX(N)
57234       REAL*8 D,TINY
57235       COMPLEX*16 A(NP,NP)
57236       PARAMETER (TINY=1.0D-20)
57237       INTEGER I,IMAX,J,K
57238       REAL*8 AAMAX,VV(6),DUM
57239       COMPLEX*16 SUM,DUMC
57240  
57241       D=1D0
57242       DO 110 I=1,N
57243         AAMAX=0D0
57244         DO 100 J=1,N
57245           IF (ABS(A(I,J)).GT.AAMAX) AAMAX=ABS(A(I,J))
57246   100   CONTINUE
57247         IF (AAMAX.EQ.0D0) CALL PYERRM(28,'(PYLDCM:) singular matrix')
57248         VV(I)=1D0/AAMAX
57249   110 CONTINUE
57250       DO 180 J=1,N
57251         DO 130 I=1,J-1
57252           SUM=A(I,J)
57253           DO 120 K=1,I-1
57254             SUM=SUM-A(I,K)*A(K,J)
57255   120     CONTINUE
57256           A(I,J)=SUM
57257   130   CONTINUE
57258         AAMAX=0D0
57259         DO 150 I=J,N
57260           SUM=A(I,J)
57261           DO 140 K=1,J-1
57262             SUM=SUM-A(I,K)*A(K,J)
57263   140     CONTINUE
57264           A(I,J)=SUM
57265           DUM=VV(I)*ABS(SUM)
57266           IF (DUM.GE.AAMAX) THEN
57267             IMAX=I
57268             AAMAX=DUM
57269           ENDIF
57270   150   CONTINUE
57271         IF (J.NE.IMAX)THEN
57272           DO 160 K=1,N
57273             DUMC=A(IMAX,K)
57274             A(IMAX,K)=A(J,K)
57275             A(J,K)=DUMC
57276   160     CONTINUE
57277           D=-D
57278           VV(IMAX)=VV(J)
57279         ENDIF
57280         INDX(J)=IMAX
57281         IF(ABS(A(J,J)).EQ.0D0) A(J,J)=DCMPLX(TINY,0D0)
57282         IF(J.NE.N)THEN
57283           DO 170 I=J+1,N
57284             A(I,J)=A(I,J)/A(J,J)
57285   170     CONTINUE
57286         ENDIF
57287   180 CONTINUE
57288  
57289       RETURN
57290       END
57291  
57292 C*********************************************************************
57293  
57294 C...PYBKSB
57295 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
57296 C...processes.
57297  
57298       SUBROUTINE PYBKSB(A,N,NP,INDX,B)
57299       IMPLICIT NONE
57300       INTEGER N,NP,INDX(N)
57301       COMPLEX*16 A(NP,NP),B(N)
57302       INTEGER I,II,J,LL
57303       COMPLEX*16 SUM
57304  
57305       II=0
57306       DO 110 I=1,N
57307         LL=INDX(I)
57308         SUM=B(LL)
57309         B(LL)=B(I)
57310         IF (II.NE.0)THEN
57311           DO 100 J=II,I-1
57312             SUM=SUM-A(I,J)*B(J)
57313   100     CONTINUE
57314         ELSE IF (ABS(SUM).NE.0D0) THEN
57315           II=I
57316         ENDIF
57317         B(I)=SUM
57318   110 CONTINUE
57319       DO 130 I=N,1,-1
57320         SUM=B(I)
57321         DO 120 J=I+1,N
57322           SUM=SUM-A(I,J)*B(J)
57323   120   CONTINUE
57324         B(I)=SUM/A(I,I)
57325   130 CONTINUE
57326       RETURN
57327       END
57328  
57329 C***********************************************************************
57330  
57331 C...PYWIDX
57332 C...Calculates full and partial widths of resonances.
57333 C....copy of PYWIDT, used for techniparticle widths
57334  
57335       SUBROUTINE PYWIDX(KFLR,SH,WDTP,WDTE)
57336  
57337 C...Double precision and integer declarations.
57338       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57339       IMPLICIT INTEGER(I-N)
57340       INTEGER PYK,PYCHGE,PYCOMP
57341 C...Parameter statement to help give large particle numbers.
57342       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
57343      &KEXCIT=4000000,KDIMEN=5000000)
57344 C...Commonblocks.
57345       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57346       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57347       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
57348       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
57349       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
57350       COMMON/PYINT1/MINT(400),VINT(400)
57351       COMMON/PYINT4/MWID(500),WIDS(500,5)
57352       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
57353       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
57354       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
57355      &/PYINT4/,/PYMSSM/,/PYTCSM/
57356 C...Local arrays and saved variables.
57357       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
57358      &WID2SV(3,2)
57359       SAVE MOFSV,WIDWSV,WID2SV
57360       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
57361  
57362 C...Compressed code and sign; mass.
57363       KFLA=IABS(KFLR)
57364       KFLS=ISIGN(1,KFLR)
57365       KC=PYCOMP(KFLA)
57366       SHR=SQRT(SH)
57367       PMR=PMAS(KC,1)
57368  
57369 C...Reset width information.
57370       DO I=0,400
57371         WDTP(I)=0D0
57372       ENDDO
57373  
57374 C...Common electroweak and strong constants.
57375       XW=PARU(102)
57376       XWV=XW
57377       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
57378       XW1=1D0-XW
57379       AEM=PYALEM(SH)
57380       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
57381       AS=PYALPS(SH)
57382       RADC=1D0+AS/PARU(1)
57383  
57384       IF(KFLA.EQ.23) THEN
57385 C...Z0:
57386         XWC=1D0/(16D0*XW*XW1)
57387         FAC=(AEM*XWC/3D0)*SHR
57388   120   CONTINUE
57389         DO 130 I=1,MDCY(KC,3)
57390           IDC=I+MDCY(KC,2)-1
57391           IF(MDME(IDC,1).LT.0) GOTO 130
57392           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
57393           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
57394           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 130
57395           IF(I.LE.8) THEN
57396 C...Z0 -> q + qbar
57397             EF=KCHG(I,1)/3D0
57398             AF=SIGN(1D0,EF+0.1D0)
57399             VF=AF-4D0*EF*XWV
57400             FCOF=3D0*RADC
57401             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
57402           ELSEIF(I.LE.16) THEN
57403 C...Z0 -> l+ + l-, nu + nubar
57404             EF=KCHG(I+2,1)/3D0
57405             AF=SIGN(1D0,EF+0.1D0)
57406             VF=AF-4D0*EF*XWV
57407             FCOF=1D0
57408           ENDIF
57409           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
57410           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
57411      &    BE34
57412           WDTP(0)=WDTP(0)+WDTP(I)
57413   130   CONTINUE
57414  
57415  
57416       ELSEIF(KFLA.EQ.24) THEN
57417 C...W+/-:
57418         FAC=(AEM/(24D0*XW))*SHR
57419         DO 140 I=1,MDCY(KC,3)
57420           IDC=I+MDCY(KC,2)-1
57421           IF(MDME(IDC,1).LT.0) GOTO 140
57422           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
57423           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
57424           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
57425           WID2=1D0
57426           IF(I.LE.16) THEN
57427 C...W+/- -> q + qbar'
57428             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
57429           ELSEIF(I.LE.20) THEN
57430 C...W+/- -> l+/- + nu
57431             FCOF=1D0
57432           ENDIF
57433           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
57434      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
57435           WDTP(0)=WDTP(0)+WDTP(I)
57436   140   CONTINUE
57437  
57438 C.....V8 -> quark anti-quark
57439       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
57440         FAC=AS/6D0*SHR
57441         TANT3=RTCM(21)
57442         IF(ITCM(2).EQ.0) THEN
57443           IMDL=1
57444         ELSEIF(ITCM(2).EQ.1) THEN
57445           IMDL=2
57446         ENDIF
57447         DO 150 I=1,MDCY(KC,3)
57448           IDC=I+MDCY(KC,2)-1
57449           IF(MDME(IDC,1).LT.0) GOTO 150
57450           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
57451           RM1=PM1**2/SH
57452           IF(RM1.GT.0.25D0) GOTO 150
57453           WID2=1D0
57454           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
57455             FMIX=1D0/TANT3**2
57456           ELSE
57457             FMIX=TANT3**2
57458           ENDIF
57459           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
57460           IF(I.EQ.6) WID2=WIDS(6,1)
57461           WDTP(0)=WDTP(0)+WDTP(I)
57462   150   CONTINUE
57463       ENDIF
57464  
57465       RETURN
57466       END
57467  
57468 C*********************************************************************
57469  
57470 C...PYRVSF
57471 C...Calculates R-violating decays of sfermions.
57472 C...P. Z. Skands
57473  
57474       SUBROUTINE PYRVSF(KFIN,XLAM,IDLAM,LKNT)
57475  
57476 C...Double precision and integer declarations.
57477       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57478       IMPLICIT INTEGER(I-N)
57479 C...Parameter statement to help give large particle numbers.
57480       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
57481      &KEXCIT=4000000,KDIMEN=5000000)
57482 C...Commonblocks.
57483       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57484       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
57485       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
57486      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
57487       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
57488 C...Local variables.
57489       DOUBLE PRECISION XLAM(0:400)
57490       INTEGER IDLAM(400,3), PYCOMP
57491       SAVE /PYMSRV/,/PYSSMT/,/PYMSSM/,/PYDAT2/
57492  
57493 C...IS R-VIOLATION ON ?
57494       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
57495 C...Mass eigenstate counter
57496         ICNT=INT(KFIN/KSUSY1)
57497 C...SM KF code of SUSY particle
57498         KFSM=KFIN-ICNT*KSUSY1
57499 C...Squared Sparticle Mass
57500         SM=PMAS(PYCOMP(KFIN),1)**2
57501 C... Squared mass of top quark
57502         SMT=PMAS(PYCOMP(6),1)**2
57503 C...IS L-VIOLATION ON ?
57504         IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1)) THEN
57505 C...SLEPTON -> NU(BAR) + LEPTON and UBAR + D
57506           IF(ICNT.NE.0.AND.(KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15))
57507      &         THEN
57508             K=INT((KFSM-9)/2)
57509             DO 110 I=1,3
57510               DO 100 J=1,3
57511                 IF(I.NE.J) THEN
57512 C...~e,~mu,~tau -> nu_I + lepton-_J
57513                   LKNT = LKNT+1
57514                   IDLAM(LKNT,1)= 12 +2*(I-1)
57515                   IDLAM(LKNT,2)= 11 +2*(J-1)
57516                   IDLAM(LKNT,3)= 0
57517                   XLAM(LKNT)=0D0
57518                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
57519                   IF (IMSS(51).NE.0) XLAM(LKNT) =
57520      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57521 C...KINEMATICS CHECK
57522                   IF (XLAM(LKNT).EQ.0D0) THEN
57523                     LKNT=LKNT-1
57524                   ENDIF
57525                 ENDIF
57526   100         CONTINUE
57527   110       CONTINUE
57528 C...~e,~mu,~tau -> nu_Ibar + lepton-_K
57529             J=INT((KFSM-9)/2)
57530             DO 130 I=1,3
57531               IF(I.NE.J) THEN
57532                 DO 120 K=1,3
57533                   LKNT = LKNT+1
57534                   IDLAM(LKNT,1)=-12 -2*(I-1)
57535                   IDLAM(LKNT,2)= 11 +2*(K-1)
57536                   IDLAM(LKNT,3)= 0
57537                   XLAM(LKNT)=0D0
57538                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
57539                   IF (IMSS(51).NE.0) XLAM(LKNT) =
57540      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57541 C...KINEMATICS CHECK
57542                   IF (XLAM(LKNT).EQ.0D0) THEN
57543                     LKNT=LKNT-1
57544                   ENDIF
57545   120           CONTINUE
57546               ENDIF
57547   130       CONTINUE
57548 C...~e,~mu,~tau -> u_Jbar + d_K
57549             I=INT((KFSM-9)/2)
57550             DO 150 J=1,3
57551               DO 140 K=1,3
57552                 LKNT = LKNT+1
57553                 IDLAM(LKNT,1)=-2 -2*(J-1)
57554                 IDLAM(LKNT,2)= 1 +2*(K-1)
57555                 IDLAM(LKNT,3)= 0
57556                 XLAM(LKNT)=0
57557                 IF (IMSS(52).NE.0) THEN
57558 C...Use massive top quark
57559                   IF (IDLAM(LKNT,1).EQ.-6) THEN
57560                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2
57561      &                   * (SM-SMT)
57562                     XLAM(LKNT) =
57563      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
57564 C...If no top quark, all decay products massless
57565                   ELSE
57566                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
57567                     XLAM(LKNT) =
57568      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57569                   ENDIF
57570 C...KINEMATICS CHECK
57571                   IF (XLAM(LKNT).EQ.0D0) THEN
57572                     LKNT=LKNT-1
57573                   ENDIF
57574                 ENDIF
57575   140         CONTINUE
57576   150       CONTINUE
57577           ENDIF
57578 C * SNEUTRINO -> LEPTON+ + LEPTON- and DBAR + D
57579 C...No right-handed neutrinos
57580           IF(ICNT.EQ.1) THEN
57581             IF(KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16) THEN
57582               J=INT((KFSM-10)/2)
57583               DO 170 I=1,3
57584                 DO 160 K=1,3
57585                   IF (I.NE.J) THEN
57586 C...~nu_J -> lepton+_I + lepton-_K
57587                     LKNT = LKNT+1
57588                     IDLAM(LKNT,1)=-11 -2*(I-1)
57589                     IDLAM(LKNT,2)= 11 +2*(K-1)
57590                     IDLAM(LKNT,3)=  0
57591                     XLAM(LKNT)=0D0
57592                     RM2=RVLAM(I,J,K)**2 * SM
57593                     IF (IMSS(51).NE.0) XLAM(LKNT) =
57594      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57595 C...KINEMATICS CHECK
57596                     IF (XLAM(LKNT).EQ.0D0) THEN
57597                       LKNT=LKNT-1
57598                     ENDIF
57599                   ENDIF
57600   160           CONTINUE
57601   170         CONTINUE
57602 C...~nu_I -> dbar_J + d_K
57603               I=INT((KFSM-10)/2)
57604               DO 190 J=1,3
57605                 DO 180 K=1,3
57606                   LKNT = LKNT+1
57607                   IDLAM(LKNT,1)=-1 -2*(J-1)
57608                   IDLAM(LKNT,2)= 1 +2*(K-1)
57609                   IDLAM(LKNT,3)= 0
57610                   XLAM(LKNT)=0D0
57611                   RM2=3*RVLAMP(I,J,K)**2 * SM
57612                   IF (IMSS(52).NE.0) XLAM(LKNT) =
57613      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57614 C...KINEMATICS CHECK
57615                   IF (XLAM(LKNT).EQ.0D0) THEN
57616                     LKNT=LKNT-1
57617                   ENDIF
57618   180           CONTINUE
57619   190         CONTINUE
57620             ENDIF
57621           ENDIF
57622 C * SDOWN -> NU(BAR) + D and LEPTON- + U
57623           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
57624             J=INT((KFSM+1)/2)
57625             DO 210 I=1,3
57626               DO 200 K=1,3
57627 C...~d_J -> nu_Ibar + d_K
57628                 LKNT = LKNT+1
57629                 IDLAM(LKNT,1)=-12 -2*(I-1)
57630                 IDLAM(LKNT,2)=  1 +2*(K-1)
57631                 IDLAM(LKNT,3)=  0
57632                 XLAM(LKNT)=0D0
57633                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
57634                 IF (IMSS(52).NE.0) XLAM(LKNT) =
57635      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57636 C...KINEMATICS CHECK
57637                 IF (XLAM(LKNT).EQ.0D0) THEN
57638                   LKNT=LKNT-1
57639                 ENDIF
57640   200         CONTINUE
57641   210       CONTINUE
57642             K=INT((KFSM+1)/2)
57643             DO 240 I=1,3
57644               DO 230 J=1,3
57645 C...~d_K -> nu_I + d_J
57646                 LKNT = LKNT+1
57647                 IDLAM(LKNT,1)= 12 +2*(I-1)
57648                 IDLAM(LKNT,2)=  1 +2*(J-1)
57649                 IDLAM(LKNT,3)=  0
57650                 XLAM(LKNT)=0D0
57651                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
57652                 IF (IMSS(52).NE.0) XLAM(LKNT) =
57653      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57654 C...KINEMATICS CHECK
57655                 IF (XLAM(LKNT).EQ.0D0) THEN
57656                   LKNT=LKNT-1
57657                 ENDIF
57658 C...~d_K -> lepton_I- + u_J
57659   220           LKNT = LKNT+1
57660                 IDLAM(LKNT,1)= 11 +2*(I-1)
57661                 IDLAM(LKNT,2)=  2 +2*(J-1)
57662                 IDLAM(LKNT,3)=  0
57663                 XLAM(LKNT)=0D0
57664                 IF (IMSS(52).NE.0) THEN
57665 C...Use massive top quark
57666                   IF (IDLAM(LKNT,2).EQ.6) THEN
57667                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT)
57668                     XLAM(LKNT) =
57669      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,2)
57670 C...If no top quark, all decay products massless
57671                   ELSE
57672                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
57673                     XLAM(LKNT) =
57674      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57675                   ENDIF
57676 C...KINEMATICS CHECK
57677                   IF (XLAM(LKNT).EQ.0D0) THEN
57678                     LKNT=LKNT-1
57679                   ENDIF
57680                 ENDIF
57681   230         CONTINUE
57682   240       CONTINUE
57683           ENDIF
57684 C * SUP -> LEPTON+ + D
57685           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
57686             J=NINT(KFSM/2.)
57687             DO 260 I=1,3
57688               DO 250 K=1,3
57689 C...~u_J -> lepton_I+ + d_K
57690                 LKNT = LKNT+1
57691                 IDLAM(LKNT,1)=-11 -2*(I-1)
57692                 IDLAM(LKNT,2)=  1 +2*(K-1)
57693                 IDLAM(LKNT,3)=  0
57694                 XLAM(LKNT)=0D0
57695                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
57696                 IF (IMSS(52).NE.0) XLAM(LKNT) =
57697      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57698 C...KINEMATICS CHECK
57699                 IF (XLAM(LKNT).EQ.0D0) THEN
57700                   LKNT=LKNT-1
57701                 ENDIF
57702   250         CONTINUE
57703   260       CONTINUE
57704           ENDIF
57705         ENDIF
57706 C...BARYON NUMBER VIOLATING DECAYS
57707         IF (IMSS(53).GE.1) THEN
57708 C * SUP -> DBAR + DBAR
57709           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
57710             I = KFSM/2
57711             DO 280 J=1,3
57712               DO 270 K=1,3
57713 C...~u_I -> dbar_J + dbar_K
57714                 IF (J.LT.K) THEN
57715 C...(anti-) symmetry J <-> K.
57716                   LKNT = LKNT + 1
57717                   IDLAM(LKNT,1) = -1 -2*(J-1)
57718                   IDLAM(LKNT,2) = -1 -2*(K-1)
57719                   IDLAM(LKNT,3) =  0
57720                   XLAM(LKNT)    =  0D0
57721                   RM2 = 2.*(RVLAMB(I,J,K)**2)
57722      &                 * SFMIX(KFSM,2*ICNT)**2 * SM
57723                   XLAM(LKNT)    =
57724      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57725 C...KINEMATICS CHECK
57726                   IF (XLAM(LKNT).EQ.0D0) THEN
57727                     LKNT = LKNT-1
57728                   ENDIF
57729                 ENDIF
57730   270         CONTINUE
57731   280       CONTINUE
57732           ENDIF
57733 C * SDOWN -> UBAR + DBAR
57734           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
57735             K=(KFSM+1)/2
57736             DO 300 I=1,3
57737               DO 290 J=1,3
57738 C...LAMB coupling antisymmetric in J and K.
57739                 IF (J.NE.K) THEN
57740 C...~d_K -> ubar_I + dbar_K
57741                   LKNT = LKNT + 1
57742                   IDLAM(LKNT,1)= -2 -2*(I-1)
57743                   IDLAM(LKNT,2)= -1 -2*(J-1)
57744                   IDLAM(LKNT,3)=  0
57745                   XLAM(LKNT)=0D0
57746 C...Use massive top quark
57747                   IF (IDLAM(LKNT,1).EQ.-6) THEN
57748                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT
57749      &                   )
57750                     XLAM(LKNT) =
57751      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
57752 C...If no top quark, all decay products massless
57753                   ELSE
57754                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
57755                     XLAM(LKNT) =
57756      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
57757                   ENDIF
57758 C...KINEMATICS CHECK
57759                   IF (XLAM(LKNT).EQ.0D0) THEN
57760                     LKNT=LKNT-1
57761                   ENDIF
57762                 ENDIF
57763   290         CONTINUE
57764   300       CONTINUE
57765           ENDIF
57766         ENDIF
57767       ENDIF
57768  
57769       RETURN
57770       END
57771  
57772 C*********************************************************************
57773  
57774 C...PYRVNE
57775 C...Calculates R-violating neutralino decay widths (pure 1->3 parts).
57776 C...P. Z. Skands
57777  
57778       SUBROUTINE PYRVNE(KFIN,XLAM,IDLAM,LKNT)
57779  
57780 C...Double precision and integer declarations.
57781       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57782       IMPLICIT INTEGER(I-N)
57783 C...Parameter statement to help give large particle numbers.
57784       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
57785      &KEXCIT=4000000,KDIMEN=5000000)
57786 C...Commonblocks.
57787       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57788       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57789       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
57790       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
57791      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
57792       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
57793 C...Local variables.
57794       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
57795      &     ,DCMASS,KFR(3)
57796       DOUBLE PRECISION XLAM(0:400)
57797       DOUBLE PRECISION ZPMIX(4,4), NMIX(4,4), RMQ(6)
57798       INTEGER IDLAM(400,3), PYCOMP
57799       LOGICAL DCMASS
57800       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/
57801  
57802 C...R-VIOLATING DECAYS
57803       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
57804         KFSM=KFIN-KSUSY1
57805         IF(KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
57806 C...WHICH NEUTRALINO ?
57807           NCHI=1
57808           IF (KFSM.EQ.23) NCHI=2
57809           IF (KFSM.EQ.25) NCHI=3
57810           IF (KFSM.EQ.35) NCHI=4
57811 C...SIGN OF MASS (Opposite convention as HERWIG)
57812           ISM = 1
57813           IF (SMZ(NCHI).LT.0D0) ISM = -ISM
57814  
57815 C...Useful parameters for the calculation of the A and B constants.
57816           WMASS = PMAS(PYCOMP(24),1)
57817           ECHG = 2*SQRT(PARU(103)*PARU(1))
57818           COSB=1/(SQRT(1+RMSS(5)**2))
57819           SINB=RMSS(5)/SQRT(1+RMSS(5)**2)
57820           COSW=SQRT(1-PARU(102))
57821           SINW=SQRT(PARU(102))
57822           GW=2D0*SQRT(PARU(103)*PARU(1))/SINW
57823 C...Run quark masses to neutralino mass squared (for Higgs-type
57824 C...couplings)
57825           SQMCHI=PMAS(PYCOMP(KFIN),1)**2
57826           DO 100 I=1,6
57827             RMQ(I)=PYMRUN(I,SQMCHI)
57828   100     CONTINUE
57829 C...EXPRESS NEUTRALINO MIXING IN (photino,Zino,~H_u,~H_d) BASIS
57830             DO 110 NCHJ=1,4
57831               ZPMIX(NCHJ,1)= ZMIX(NCHJ,1)*COSW+ZMIX(NCHJ,2)*SINW
57832               ZPMIX(NCHJ,2)=-ZMIX(NCHJ,1)*SINW+ZMIX(NCHJ,2)*COSW
57833               ZPMIX(NCHJ,3)= ZMIX(NCHJ,3)
57834               ZPMIX(NCHJ,4)= ZMIX(NCHJ,4)
57835   110       CONTINUE
57836             C1=GW*ZPMIX(NCHI,3)/(2D0*COSB*WMASS)
57837             C1U=GW*ZPMIX(NCHI,4)/(2D0*SINB*WMASS)
57838             C2=ECHG*ZPMIX(NCHI,1)
57839             C3=GW*ZPMIX(NCHI,2)/COSW
57840             EU=2D0/3D0
57841             ED=-1D0/3D0
57842 C... AB(x,y,z):
57843 C       x=1-2  : Select A or B constant     (1:A ; 2:B)
57844 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
57845 C                                    11-16:e,nu_e,mu,...)
57846 C       z=1-2  : Mass eigenstate number
57847 C...CALCULATE COUPLINGS
57848           DO 120 I = 11,15,2
57849             CMS=PMAS(PYCOMP(I),1)
57850 C...Intermediate sleptons
57851             AB(1,I,1)=ISM*(CMS*C1*SFMIX(I,1) + SFMIX(I,2)
57852      &           *(C2-C3*SINW**2))
57853             AB(1,I,2)=ISM*(CMS*C1*SFMIX(I,3) + SFMIX(I,4)
57854      &           *(C2-C3*SINW**2))
57855             AB(2,I,1)= CMS*C1*SFMIX(I,2) - SFMIX(I,1)*(C2+C3*(5D-1-SINW
57856      &           **2))
57857             AB(2,I,2)=CMS*C1*SFMIX(I,4) - SFMIX(I,3)*(C2+C3*(5D-1-SINW
57858      &           **2))
57859 C...Inermediate sneutrinos
57860             AB(1,I+1,1)=0D0
57861             AB(2,I+1,1)=5D-1*C3
57862             AB(1,I+1,2)=0D0
57863             AB(2,I+1,2)=0D0
57864 C...Inermediate sdown
57865             J=I-10
57866             CMS=RMQ(J)
57867             AB(1,J,1)=ISM*(CMS*C1*SFMIX(J,1) - SFMIX(J,2)
57868      &           *ED*(C2-C3*SINW**2))
57869             AB(1,J,2)=ISM*(CMS*C1*SFMIX(J,3) - SFMIX(J,4)
57870      &           *ED*(C2-C3*SINW**2))
57871             AB(2,J,1)=CMS*C1*SFMIX(J,2) + SFMIX(J,1)
57872      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
57873             AB(2,J,2)=CMS*C1*SFMIX(J,4) + SFMIX(J,3)
57874      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
57875 C...Inermediate sup
57876             J=J+1
57877             CMS=RMQ(J)
57878             AB(1,J,1)=ISM*(CMS*C1U*SFMIX(J,1) - SFMIX(J,2)
57879      &           *EU*(C2-C3*SINW**2))
57880             AB(1,J,2)=ISM*(CMS*C1U*SFMIX(J,3) - SFMIX(J,4)
57881      &           *EU*(C2-C3*SINW**2))
57882             AB(2,J,1)=CMS*C1U*SFMIX(J,2) + SFMIX(J,1)
57883      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
57884             AB(2,J,2)=CMS*C1U*SFMIX(J,4) + SFMIX(J,3)
57885      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
57886   120     CONTINUE
57887  
57888           IF (IMSS(51).GE.1) THEN
57889 C...LAMBDA COUPLINGS (LLE TYPE R-VIOLATION)
57890 C * CHI0_I -> NUBAR_I + LEPTON+_J + lEPTON-_K.
57891 C...STEP IN I,J,K USING SINGLE COUNTER
57892             DO 130 ISC=0,26
57893 C...LAMBDA COUPLING ASYM IN I,J
57894               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
57895                 LKNT = LKNT+1
57896                 IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
57897                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
57898                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
57899                 XLAM(LKNT)    = 0D0
57900 C...Set coupling, and decay product masses on/off
57901                 RVLAMC        = RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
57902      &               ,MOD(ISC,3)+1)**2
57903                 DCMASS=.FALSE.
57904                 IF (IDLAM(LKNT,2).EQ.-15.OR.IDLAM(LKNT,3).EQ.15)
57905      &               DCMASS = .TRUE.
57906 C...Resonance KF codes (1=I,2=J,3=K)
57907                 KFR(1)=-IDLAM(LKNT,1)
57908                 KFR(2)=-IDLAM(LKNT,2)
57909                 KFR(3)=-IDLAM(LKNT,3)
57910 C...Calculate width.
57911                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57912      &               IDLAM(LKNT,3),XLAM(LKNT))
57913                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57914 C...Charge conjugate mode.
57915                 LKNT=LKNT+1
57916                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
57917                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
57918                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
57919                 XLAM(LKNT)=XLAM(LKNT-1)
57920 C...KINEMATICS CHECK
57921                 IF (XLAM(LKNT).EQ.0D0) THEN
57922                   LKNT=LKNT-2
57923                 ENDIF
57924               ENDIF
57925   130       CONTINUE
57926           ENDIF
57927  
57928           IF (IMSS(52).GE.1) THEN
57929 C...LAMBDA' COUPLINGS. (LQD TYPE R-VIOLATION)
57930 C * CHI0 -> NUBAR_I + DBAR_J + D_K
57931             DO 140 ISC=0,26
57932               LKNT = LKNT+1
57933               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
57934               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
57935               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
57936               XLAM(LKNT)    =  0D0
57937 C...Set coupling, and decay product masses on/off
57938               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
57939      &             ,MOD(ISC,3)+1)**2
57940               DCMASS=.FALSE.
57941               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5)
57942      &             DCMASS = .TRUE.
57943 C...Resonance KF codes (1=I,2=J,3=K)
57944               KFR(1)=-IDLAM(LKNT,1)
57945               KFR(2)=-IDLAM(LKNT,2)
57946               KFR(3)=-IDLAM(LKNT,3)
57947 C...Calculate width.
57948               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57949      &             ,XLAM(LKNT))
57950               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57951 C...Charge conjugate mode.
57952               LKNT=LKNT+1
57953               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
57954               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
57955               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
57956               XLAM(LKNT)=XLAM(LKNT-1)
57957 C...KINEMATICS CHECK
57958               IF (XLAM(LKNT).EQ.0D0) THEN
57959                 LKNT=LKNT-2
57960               ENDIF
57961  
57962 C * CHI0 -> LEPTON_I+ + UBAR_J + D_K
57963               LKNT = LKNT+1
57964               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
57965               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
57966               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
57967               XLAM(LKNT)    =  0D0
57968 C...Set coupling, and decay product masses on/off
57969               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
57970      &             ,MOD(ISC,3)+1)**2
57971               DCMASS=.FALSE.
57972               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
57973      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
57974 C...Resonance KF codes (1=I,2=J,3=K)
57975               KFR(1)=-IDLAM(LKNT,1)
57976               KFR(2)=-IDLAM(LKNT,2)
57977               KFR(3)=-IDLAM(LKNT,3)
57978 C...Calculate width.
57979               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57980      &             ,XLAM(LKNT))
57981               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57982 C...Charge conjugate mode.
57983               LKNT=LKNT+1
57984               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
57985               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
57986               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
57987               XLAM(LKNT)=XLAM(LKNT-1)
57988 C...KINEMATICS CHECK
57989               IF (XLAM(LKNT).EQ.0D0) THEN
57990                 LKNT=LKNT-2
57991               ENDIF
57992   140       CONTINUE
57993           ENDIF
57994  
57995           IF (IMSS(53).GE.1) THEN
57996 C...LAMBDA'' COUPLINGS. (UDD TYPE R-VIOLATION)
57997 C * CHI0 -> UBAR_I + DBAR_J + DBAR_K
57998             DO 150 ISC=0,26
57999 C...Symmetry J<->K. Also, LAMB antisymmetric in J and K, so no J=K.
58000               IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
58001                 LKNT = LKNT+1
58002                 IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
58003                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
58004                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
58005                 XLAM(LKNT)    =  0D0
58006 C...Set coupling, and decay product masses on/off
58007                 RVLAMC        = 6. * RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)
58008      &               +1,MOD(ISC,3)+1)**2
58009                 DCMASS=.FALSE.
58010                 IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
58011      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
58012 C...Resonance KF codes (1=I,2=J,3=K)
58013                 KFR(1) = IDLAM(LKNT,1)
58014                 KFR(2) = IDLAM(LKNT,2)
58015                 KFR(3) = IDLAM(LKNT,3)
58016 C...Calculate width.
58017                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58018      &               IDLAM(LKNT,3),XLAM(LKNT))
58019                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58020 C...Charge conjugate mode.
58021                 LKNT=LKNT+1
58022                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
58023                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
58024                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
58025                 XLAM(LKNT)=XLAM(LKNT-1)
58026 C...KINEMATICS CHECK
58027                 IF (XLAM(LKNT).EQ.0D0) THEN
58028                   LKNT=LKNT-2
58029                 ENDIF
58030               ENDIF
58031   150       CONTINUE
58032           ENDIF
58033         ENDIF
58034       ENDIF
58035  
58036       RETURN
58037       END
58038  
58039 C*********************************************************************
58040  
58041 C...PYRVCH
58042 C...Calculates R-violating chargino decay widths.
58043 C...P. Z. Skands
58044  
58045       SUBROUTINE PYRVCH(KFIN,XLAM,IDLAM,LKNT)
58046  
58047 C...Double precision and integer declarations.
58048       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58049       IMPLICIT INTEGER(I-N)
58050 C...Parameter statement to help give large particle numbers.
58051       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
58052      &KEXCIT=4000000,KDIMEN=5000000)
58053 C...Commonblocks.
58054       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58055       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58056       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
58057       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
58058      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
58059       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
58060 C...Local variables.
58061       DOUBLE PRECISION XLAM(0:400)
58062       INTEGER IDLAM(400,3), PYCOMP
58063 C...Information from main routine to PYRVGW
58064       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
58065      &     ,DCMASS,KFR(3)
58066 C...Auxiliary variables needed for BV (RV Gauge STOre)
58067       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
58068      &     ,RVLJKI,RVLJIK
58069 C...Running quark masses
58070       DOUBLE PRECISION RMQ(6)
58071 C...Decay product masses on/off
58072       LOGICAL DCMASS
58073       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
58074      &     /RVGSTO/
58075  
58076  
58077 C...IF R-VIOLATION ON.
58078       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
58079         KFSM=KFIN-KSUSY1
58080         IF(KFSM.EQ.24.OR.KFSM.EQ.37) THEN
58081 C...WHICH CHARGINO ?
58082           NCHI = 1
58083           IF (KFSM.EQ.37) NCHI = 2
58084  
58085 C...Useful parameters for calculating the A and B constants.
58086 C...SIGN OF MASS (Opposite convention as HERWIG)
58087           ISM  = 1
58088           IF (SMW(NCHI).LT.0D0) ISM = -1
58089           WMASS   = PMAS(PYCOMP(24),1)
58090           COSB    = 1/(SQRT(1+RMSS(5)**2))
58091           SINB    = RMSS(5)/SQRT(1+RMSS(5)**2)
58092           GW2     = 4*PARU(103)*PARU(1)/PARU(102)
58093           C1U     = UMIX(NCHI,2)/(SQRT(2D0)*COSB*WMASS)
58094           C1V     = VMIX(NCHI,2)/(SQRT(2D0)*SINB*WMASS)
58095           C2      = UMIX(NCHI,1)
58096           C3      = VMIX(NCHI,1)
58097 C...Running masses at Q^2=MCHI^2.
58098           SQMCHI  = PMAS(PYCOMP(KFSM),1)**2
58099           DO 100 I=1,6
58100             RMQ(I)=PYMRUN(I,SQMCHI)
58101   100     CONTINUE
58102  
58103 C... AB(x,y,z) coefficients:
58104 C       x=1-2  : A or B coefficient  (1:A ; 2:B)
58105 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
58106 C                                    11-16:e,nu_e,mu,...)
58107 C       z=1-2  : Mass eigenstate number
58108           DO 110 I = 11,15,2
58109 C...Intermediate sleptons
58110             AB(1,I,1)   = 0D0
58111             AB(1,I,2)   = 0D0
58112             AB(2,I,1)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,2) +
58113      &           SFMIX(I,1)*C2
58114             AB(2,I,2)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,4) +
58115      &           SFMIX(I,3)*C2
58116 C...Intermediate sneutrinos
58117             AB(1,I+1,1) = -PMAS(PYCOMP(I),1)*C1U
58118             AB(1,I+1,2) = 0D0
58119             AB(2,I+1,1) = ISM*C3
58120             AB(2,I+1,2) = 0D0
58121 C...Intermediate sdown
58122             J=I-10
58123             AB(1,J,1)   = -RMQ(J+1)*C1V*SFMIX(J,1)
58124             AB(1,J,2)   = -RMQ(J+1)*C1V*SFMIX(J,3)
58125             AB(2,J,1)   = -ISM*(RMQ(J)*C1U*SFMIX(J,2) - SFMIX(J,1)*C2)
58126             AB(2,J,2)   = -ISM*(RMQ(J)*C1U*SFMIX(J,4) - SFMIX(J,3)*C2)
58127 C...Intermediate sup
58128             J=J+1
58129             AB(1,J,1)   = -RMQ(J-1)*C1U*SFMIX(J,1)
58130             AB(1,J,2)   = -RMQ(J-1)*C1U*SFMIX(J,3)
58131             AB(2,J,1)   = -ISM*(RMQ(J)*C1V*SFMIX(J,2) - SFMIX(J,1)*C3)
58132             AB(2,J,2)   = -ISM*(RMQ(J)*C1V*SFMIX(J,4) - SFMIX(J,3)*C3)
58133   110     CONTINUE
58134  
58135 C...LLE TYPE R-VIOLATION
58136           IF (IMSS(51).GE.1) THEN
58137 C...LOOP OVER DECAY MODES
58138             DO 140 ISC=0,26
58139  
58140 C...CHI+ -> NUBAR_I + LEPTON+_J + NU_K.
58141               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
58142                 LKNT = LKNT+1
58143                 IDLAM(LKNT,1) = -12 -2*MOD(ISC/9,3)
58144                 IDLAM(LKNT,2) = -11 -2*MOD(ISC/3,3)
58145                 IDLAM(LKNT,3) =  12 +2*MOD(ISC,3)
58146                 XLAM(LKNT)    =  0D0
58147 C...Set coupling, and decay product masses on/off
58148                 RVLAMC        = GW2 * 5D-1 *
58149      &               RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
58150      &               **2
58151                 DCMASS=.FALSE.
58152                 IF (IDLAM(LKNT,2).EQ.-15) DCMASS = .TRUE.
58153 C...Resonance KF codes (1=I,2=J,3=K).
58154                 KFR(1) = 0
58155                 KFR(2) = 0
58156                 KFR(3) = -IDLAM(LKNT,3)+1
58157 C...Calculate width.
58158                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58159      &               IDLAM(LKNT,3),XLAM(LKNT))
58160                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58161 C...KINEMATICS CHECK
58162                 IF (XLAM(LKNT).EQ.0D0) THEN
58163                   LKNT=LKNT-1
58164                 ENDIF
58165  
58166 C * CHI+ -> NU_I + NU_J + LEPTON+_K. (NOTE: SYMM. IN I AND J)
58167   120           IF (MOD(ISC/9,3).LT.MOD(ISC/3,3)) THEN
58168                   LKNT = LKNT+1
58169                   IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
58170                   IDLAM(LKNT,2) = 12 +2*MOD(ISC/3,3)
58171                   IDLAM(LKNT,3) =-11 -2*MOD(ISC,3)
58172                   XLAM(LKNT)    = 0D0
58173 C...Set coupling, and decay product masses on/off
58174                   RVLAMC = GW2 * 5D-1 *
58175      &              RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
58176 C...I,J SYMMETRY => FACTOR 2
58177                   RVLAMC=2*RVLAMC
58178                   DCMASS=.FALSE.
58179                   IF (IDLAM(LKNT,3).EQ.-15) DCMASS = .TRUE.
58180 C...Resonance KF codes (1=I,2=J,3=K)
58181                   KFR(1)=IDLAM(LKNT,1)-1
58182                   KFR(2)=IDLAM(LKNT,2)-1
58183                   KFR(3)=0
58184 C...Calculate width.
58185                   CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58186      &                 IDLAM(LKNT,3),XLAM(LKNT))
58187                  XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58188 C...KINEMATICS CHECK
58189                   IF (XLAM(LKNT).EQ.0D0) THEN
58190                     LKNT=LKNT-1
58191                   ENDIF
58192 
58193 C * CHI+ -> LEPTON+_I + LEPTON+_J + LEPTON-_K (NOTE: SYMM. IN I AND J)
58194 C * 19/04 2010: Bug corrected. Moved channel inside the I < J IF statement 
58195 C *             from above, thanks to N.-E. Bomark.
58196                   LKNT = LKNT+1
58197                   IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
58198                   IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
58199                   IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
58200                   XLAM(LKNT)    = 0D0
58201 C...Set coupling, and decay product masses on/off
58202                   RVLAMC = GW2 * 5D-1 *
58203      &              RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
58204 C...I,J SYMMETRY => FACTOR 2
58205                   RVLAMC=2*RVLAMC
58206                   DCMASS=.FALSE.
58207                   IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-15
58208      &                 .OR.IDLAM(LKNT,3).EQ.15) DCMASS = .TRUE.
58209 C...Resonance KF codes (1=I,2=J,3=K)
58210                   KFR(1) =-IDLAM(LKNT,1)+1
58211                   KFR(2) =-IDLAM(LKNT,2)+1
58212                   KFR(3) = 0
58213 C...Calculate width.
58214                   CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58215      &                 IDLAM(LKNT,3),XLAM(LKNT))
58216                   XLAM(LKNT)=XLAM(LKNT)*RVLAMC
58217      &                 /((2*PARU(1)*RMS(0))**3*32)
58218 C...KINEMATICS CHECK
58219                   IF (XLAM(LKNT).EQ.0D0) THEN
58220                     LKNT=LKNT-1
58221                   ENDIF
58222                 ENDIF
58223               ENDIF
58224  140        CONTINUE
58225           ENDIF
58226  
58227 C...LQD TYPE R-VIOLATION
58228           IF (IMSS(52).GE.1) THEN
58229 C...LOOP OVER DECAY MODES
58230             DO 180 ISC=0,26
58231  
58232 C...CHI+ -> NUBAR_I + DBAR_J + U_K
58233               LKNT = LKNT+1
58234               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
58235               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
58236               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
58237               XLAM(LKNT)    =  0D0
58238 C...Set coupling, and decay product masses on/off
58239               RVLAMC = 3. * GW2 * 5D-1 *
58240      &           RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
58241               DCMASS=.FALSE.
58242               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.6)
58243      &             DCMASS = .TRUE.
58244 C...Resonance KF codes (1=I,2=J,3=K)
58245               KFR(1)=0
58246               KFR(2)=0
58247               KFR(3)=-IDLAM(LKNT,3)+1
58248 C...Calculate width.
58249               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58250      &             ,XLAM(LKNT))
58251               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58252 C...KINEMATICS CHECK
58253               IF (XLAM(LKNT).EQ.0D0) THEN
58254                 LKNT=LKNT-1
58255               ENDIF
58256  
58257 C * CHI+ -> LEPTON+_I + UBAR_J + U_K.
58258   150         LKNT = LKNT+1
58259               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
58260               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
58261               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
58262               XLAM(LKNT)    =  0D0
58263 C...Set coupling, and decay product masses on/off
58264               RVLAMC = 3. * GW2 * 5D-1 *
58265      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
58266               DCMASS=.FALSE.
58267               IF (IDLAM(LKNT,1).EQ.-11.OR.IDLAM(LKNT,2).EQ.-6
58268      &             .OR.IDLAM(LKNT,3).EQ.6) DCMASS = .TRUE.
58269 C...Resonance KF codes (1=I,2=J,3=K)
58270               KFR(1)=0
58271               KFR(2)=0
58272               KFR(3)=-IDLAM(LKNT,3)+1
58273 C...Calculate width.
58274               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58275      &             ,XLAM(LKNT))
58276               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58277 C...KINEMATICS CHECK
58278               IF (XLAM(LKNT).EQ.0D0) THEN
58279                 LKNT=LKNT-1
58280               ENDIF
58281  
58282 C * CHI+ -> LEPTON+_I + DBAR_J + D_K.
58283   160         LKNT = LKNT+1
58284               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
58285               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
58286               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
58287               XLAM(LKNT)    =  0D0
58288 C...Set coupling, and decay product masses on/off
58289               RVLAMC = 3. * GW2 * 5D-1 *
58290      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
58291               DCMASS = .FALSE.
58292               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-5
58293      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
58294 C...Resonance KF codes (1=I,2=J,3=K)
58295               KFR(1)=-IDLAM(LKNT,1)+1
58296               KFR(2)=-IDLAM(LKNT,2)+1
58297               KFR(3)=0
58298 C...Calculate width.
58299               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58300      &             ,XLAM(LKNT))
58301               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58302 C...KINEMATICS CHECK
58303               IF (XLAM(LKNT).EQ.0D0) THEN
58304                 LKNT=LKNT-1
58305               ENDIF
58306  
58307 C * CHI+ -> NU_I + U_J + DBAR_K.
58308   170         LKNT = LKNT+1
58309               IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
58310               IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
58311               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
58312               XLAM(LKNT)    =  0D0
58313 C...Set coupling, and decay product masses on/off
58314               DCMASS = .FALSE.
58315               RVLAMC = 3. * GW2 * 5D-1 *
58316      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
58317               IF (IDLAM(LKNT,2).EQ.6.OR.IDLAM(LKNT,3).EQ.-5)
58318      &             DCMASS = .TRUE.
58319 C...Resonance KF codes (1=I,2=J,3=K)
58320               KFR(1)=IDLAM(LKNT,1)-1
58321               KFR(2)=IDLAM(LKNT,2)-1
58322               KFR(3)=0
58323 C...Calculate width.
58324               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58325      &             ,XLAM(LKNT))
58326               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58327 C...KINEMATICS CHECK
58328               IF (XLAM(LKNT).EQ.0D0) THEN
58329                 LKNT=LKNT-1
58330               ENDIF
58331  
58332   180       CONTINUE
58333           ENDIF
58334  
58335 C...UDD TYPE R-VIOLATION
58336 C...These decays need special treatment since more than one BV coupling
58337 C...contributes (with interference). Consider e.g. (symbolically)
58338 C      |M|^2 = |l''_{ijk}|^2*(PYRVI1(RES_I) + PYRVI2(RES_I))
58339 C             +|l''_{jik}|^2*(PYRVI1(RES_J) + PYRVI2(RES_J))
58340 C             +l''_{ijk}*l''_{jik}*PYRVI3(PYRVI4(RES_I,RES_J))
58341 C...The problem is that a single call to PYRVGW would evaluate all
58342 C...these terms and sum them, but without the different couplings. The
58343 C...way out is to call PYRVGW three times, once for the first line, once
58344 C...for the second line, and then once for all the lines (it is
58345 C...impossible to get just the last line out) without multiplying by
58346 C...couplings. The last line is then obtained as the result of the third
58347 C...call minus the results of the two first calls. Each term is then
58348 C...multiplied by its respective coupling before the whole thing is
58349 C...summed up in XLAM.
58350 C...Note that with three interfering resonances, this procedure becomes
58351 C...more complicated, as can be seen in the CHI+ -> 3*DBAR mode.
58352  
58353           IF (IMSS(53).GE.1) THEN
58354 C...LOOP OVER DECAY MODES
58355             DO 190 ISC=1,25
58356  
58357 C...CHI+ -> U_I + U_J + D_K
58358 C...Decay mode I<->J symmetric.
58359               IF (MOD(ISC/9,3).LE.MOD(ISC/3,3).AND.ISC.NE.13) THEN
58360                 LKNT = LKNT+1
58361                 IDLAM(LKNT,1) =  2 +2*MOD(ISC/9,3)
58362                 IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
58363                 IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
58364                 XLAM(LKNT)    =  0D0
58365 C...Set coupling, and decay product masses on/off
58366                 RVLAMC= 6. * GW2 * 5D-1
58367                 RVLJIK= RVLAMB(MOD(ISC/3,3)+1,MOD(ISC/9,3)+1,MOD(ISC,3)
58368      &               +1)
58369                 RVLIJK= RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
58370      &               +1)
58371                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3)) RVLAMC = 5D-1
58372      &               * RVLAMC
58373                 DCMASS=.FALSE.
58374                 IF (IDLAM(LKNT,1).EQ.6.OR.IDLAM(LKNT,2).EQ.6
58375      &               .OR.IDLAM(LKNT,3).EQ.5) DCMASS =.TRUE.
58376 C...Resonance KF codes (1=I,2=J,3=K)
58377                 KFR(1) = -IDLAM(LKNT,1)+1
58378                 KFR(2) = 0
58379                 KFR(3) = 0
58380 C...Calculate width.
58381                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58382      &               IDLAM(LKNT,3),XRESI)
58383 C...Resonance KF codes (1=I,2=J,3=K)
58384                 KFR(1) = 0
58385                 KFR(2) = -IDLAM(LKNT,2)+1
58386                 KFR(3) = 0
58387 C...Calculate width.
58388                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58389      &               IDLAM(LKNT,3),XRESJ)
58390 C...Resonance KF codes (1=I,2=J,3=K)
58391                 KFR(1) = -IDLAM(LKNT,1)+1
58392                 KFR(2) = -IDLAM(LKNT,2)+1
58393                 KFR(3) = 0
58394 C...Calculate width.
58395                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58396      &               IDLAM(LKNT,3),XRESIJ)
58397                 IF (ABS(XRESI+XRESJ-XRESIJ).GT.1D-4*XRESIJ) THEN
58398                   XRESIJ = XRESIJ-XRESI-XRESJ
58399                 ELSE
58400                   XRESIJ = 0D0
58401                 ENDIF
58402 C...CALCULATE TOTAL WIDTH
58403                 XLAM(LKNT) = RVLJIK**2 * XRESI + RVLIJK**2 * XRESJ
58404      &               + RVLJIK*RVLIJK * XRESIJ
58405                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58406 C...KINEMATICS CHECK
58407                 IF (XLAM(LKNT).EQ.0D0) THEN
58408                   LKNT=LKNT-1
58409                 ENDIF
58410               ENDIF
58411 C...CHI+ -> DBAR_I + DBAR_J + DBAR_K
58412 C...Symmetry I<->J<->K.
58413               IF ((MOD(ISC/9,3).LE.MOD(ISC/3,3)).AND.(MOD(ISC/3,3).LE
58414      &             .MOD(ISC,3)).AND.ISC.NE.13) THEN
58415                 LKNT = LKNT+1
58416                 IDLAM(LKNT,1) = -1 -2*MOD(ISC/9,3)
58417                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
58418                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
58419                 XLAM(LKNT)    =  0D0
58420 C...Set coupling, and decay product masses on/off
58421                 RVLAMC = 6. * GW2 * 5D-1
58422                 RVLIJK = RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
58423      &               +1)
58424                 RVLKIJ = RVLAMB(MOD(ISC,3)+1,MOD(ISC/9,3)+1,MOD(ISC/3,3)
58425      &               +1)
58426                 RVLJKI = RVLAMB(MOD(ISC/3,3)+1,MOD(ISC,3)+1,MOD(ISC/9,3)
58427      &               +1)
58428                 DCMASS = .FALSE.
58429                 IF (IDLAM(LKNT,1).EQ.-5.OR.IDLAM(LKNT,2).EQ.-5
58430      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS = .TRUE.
58431 C...Collect symmetry factors
58432                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3).OR.MOD(ISC/3,3).EQ
58433      &               .MOD(ISC,3).OR.MOD(ISC/9,3).EQ.MOD(ISC,3))
58434      &               RVLAMC = 5D-1 * RVLAMC
58435 C...Resonance KF codes (1=I,2=J,3=K)
58436                 KFR(1) = IDLAM(LKNT,1)-1
58437                 KFR(2) = 0
58438                 KFR(3) = 0
58439 C...Calculate width.
58440                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58441      &               IDLAM(LKNT,3),XRESI)
58442 C...Resonance KF codes (1=I,2=J,3=K)
58443                 KFR(1) = 0
58444                 KFR(2) = IDLAM(LKNT,2)-1
58445                 KFR(3) = 0
58446 C...Calculate width.
58447                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58448      &               IDLAM(LKNT,3),XRESJ)
58449 C...Resonance KF codes (1=I,2=J,3=K)
58450                 KFR(1) = 0
58451                 KFR(2) = 0
58452                 KFR(3) = IDLAM(LKNT,3)-1
58453 C...Calculate width.
58454                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58455      &               IDLAM(LKNT,3),XRESK)
58456 C...Resonance KF codes (1=I,2=J,3=K)
58457                 KFR(1) = IDLAM(LKNT,1)-1
58458                 KFR(2) = IDLAM(LKNT,2)-1
58459                 KFR(3) = 0
58460 C...Calculate width.
58461                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58462      &               IDLAM(LKNT,3),XRESIJ)
58463                 IF (ABS(XRESI+XRESJ-XRESIJ).GT.1D-4*(XRESI+XRESJ)) THEN
58464                   XRESIJ = XRESI+XRESJ-XRESIJ
58465                 ELSE
58466                   XRESIJ = 0D0
58467                 ENDIF
58468 C...Resonance KF codes (1=I,2=J,3=K)
58469                 KFR(1) = 0
58470                 KFR(2) = IDLAM(LKNT,2)-1
58471                 KFR(3) = IDLAM(LKNT,3)-1
58472 C...Calculate width.
58473                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58474      &               IDLAM(LKNT,3),XRESJK)
58475                 IF (ABS(XRESJ+XRESK-XRESJK).GT.1D-4*(XRESJ+XRESK)) THEN
58476                   XRESJK = XRESJ+XRESK-XRESJK
58477                 ELSE
58478                   XRESJK = 0D0
58479                 ENDIF
58480 C...Resonance KF codes (1=I,2=J,3=K)
58481                 KFR(1) = IDLAM(LKNT,1)-1
58482                 KFR(2) = 0
58483                 KFR(3) = IDLAM(LKNT,3)-1
58484 C...Calculate width.
58485                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
58486      &               IDLAM(LKNT,3),XRESIK)
58487                 IF (ABS(XRESI+XRESK-XRESIK).GT.1D-4*(XRESI+XRESK)) THEN
58488                   XRESIK = XRESI+XRESK-XRESIK
58489                 ELSE
58490                   XRESIK = 0D0
58491                 ENDIF
58492 C...CALCULATE TOTAL WIDTH
58493                 XLAM(LKNT) =
58494      &                 RVLIJK**2 * XRESI
58495      &               + RVLJKI**2 * XRESJ
58496      &               + RVLKIJ**2 * XRESK
58497      &               + RVLIJK*RVLJKI * XRESIJ
58498      &               + RVLIJK*RVLKIJ * XRESIK
58499      &               + RVLJKI*RVLKIJ * XRESJK
58500                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2.*PARU(1)*RMS(0))**3*32)
58501 C...KINEMATICS CHECK
58502                 IF (XLAM(LKNT).EQ.0D0) THEN
58503                   LKNT=LKNT-1
58504                 ENDIF
58505               ENDIF
58506   190       CONTINUE
58507           ENDIF
58508         ENDIF
58509       ENDIF
58510  
58511       RETURN
58512       END
58513  
58514 C*********************************************************************
58515  
58516 C...PYRVGL
58517 C...Calculates R-violating gluino decay widths.
58518 C...See BV part of PYRVCH for comments about the way the BV decay width
58519 C...is calculated. Same comments apply here.
58520 C...P. Z. Skands
58521  
58522       SUBROUTINE PYRVGL(KFIN,XLAM,IDLAM,LKNT)
58523  
58524 C...Double precision and integer declarations.
58525       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58526       IMPLICIT INTEGER(I-N)
58527 C...Parameter statement to help give large particle numbers.
58528       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
58529      &KEXCIT=4000000,KDIMEN=5000000)
58530 C...Commonblocks.
58531       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58532       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58533       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
58534       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
58535      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
58536       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
58537 C...Local variables.
58538       DOUBLE PRECISION XLAM(0:400)
58539       INTEGER IDLAM(400,3), PYCOMP
58540 C...Information from main routine to PYRVGW
58541       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
58542      &     ,DCMASS,KFR(3)
58543 C...Auxiliary variables needed for BV (RV Gauge STOre)
58544       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
58545      &     ,RVLJKI,RVLJIK
58546 C...Running quark masses
58547       DOUBLE PRECISION RMQ(6)
58548 C...Decay product masses on/off
58549       LOGICAL DCMASS
58550       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
58551      &     /RVGSTO/
58552  
58553 C...IF LQD OR UDD TYPE R-VIOLATION ON.
58554       IF (IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
58555         KFSM=KFIN-KSUSY1
58556  
58557 C... AB(x,y,z):
58558 C       x=1-2  : Select A or B coupling     (1:A ; 2:B)
58559 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
58560 C                                    11-16:e,nu_e,mu,... not used here)
58561 C       z=1-2  : Mass eigenstate number
58562         DO 100 I = 1,6
58563 C...A Couplings
58564           AB(1,I,1) = SFMIX(I,2)
58565           AB(1,I,2) = SFMIX(I,4)
58566 C...B Couplings
58567           AB(2,I,1) = -SFMIX(I,1)
58568           AB(2,I,2) = -SFMIX(I,3)
58569   100   CONTINUE
58570         GSTR2 = 4D0*PARU(1) * PYALPS(PMAS(PYCOMP(KFIN),1)**2)
58571 C...LQD DECAYS.
58572         IF (IMSS(52).GE.1) THEN
58573 C...STEP IN I,J,K USING SINGLE COUNTER
58574           DO 120 ISC=0,26
58575 C * GLUINO -> NUBAR_I + DBAR_J + D_K.
58576             LKNT          = LKNT+1
58577             IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
58578             IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
58579             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
58580             XLAM(LKNT)=0D0
58581 C...Set coupling, and decay product masses on/off
58582             RVLAMC=RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
58583      &           * 5D-1 * GSTR2
58584             DCMASS        = .FALSE.
58585             IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
58586 C...Resonance KF codes (1=I,2=J,3=K)
58587             KFR(1)        = 0
58588             KFR(2)        = -IDLAM(LKNT,2)
58589             KFR(3)        = -IDLAM(LKNT,3)
58590 C...Calculate width.
58591             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58592      &           ,XLAM(LKNT))
58593 C...Normalize
58594             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58595 C...Charge conjugate mode.
58596   110       LKNT          = LKNT+1
58597             IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
58598             IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
58599             IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
58600             XLAM(LKNT)    = XLAM(LKNT-1)
58601 C...KINEMATICS CHECK
58602             IF (XLAM(LKNT).EQ.0D0) THEN
58603               LKNT=LKNT-2
58604             ENDIF
58605  
58606 C * GLUINO -> LEPTON+_I + UBAR_J + D_K
58607             LKNT = LKNT+1
58608             IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
58609             IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
58610             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
58611             XLAM(LKNT)=0D0
58612 C...Set coupling, and decay product masses on/off
58613             RVLAMC = RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
58614      &           **2* 5D-1 * GSTR2
58615             DCMASS        = .FALSE.
58616             IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
58617      &           .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
58618 C...Resonance KF codes (1=I,2=J,3=K)
58619             KFR(1)        = 0
58620             KFR(2)        = -IDLAM(LKNT,2)
58621             KFR(3)        = -IDLAM(LKNT,3)
58622 C...Calculate width.
58623             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58624      &           ,XLAM(LKNT))
58625             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58626 C...Charge conjugate mode.
58627             LKNT=LKNT+1
58628             IDLAM(LKNT,1) = -IDLAM(LKNT-1,1)
58629             IDLAM(LKNT,2) = -IDLAM(LKNT-1,2)
58630             IDLAM(LKNT,3) = -IDLAM(LKNT-1,3)
58631             XLAM(LKNT)    =  XLAM(LKNT-1)
58632 C...KINEMATICS CHECK
58633             IF (XLAM(LKNT).EQ.0D0) THEN
58634               LKNT=LKNT-2
58635             ENDIF
58636  
58637   120     CONTINUE
58638         ENDIF
58639  
58640 C...UDD DECAYS.
58641         IF (IMSS(53).GE.1) THEN
58642 C...STEP IN I,J,K USING SINGLE COUNTER
58643           DO 130 ISC=0,26
58644 C * GLUINO -> UBAR_I + DBAR_J + DBAR_K.
58645             IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
58646               LKNT          = LKNT+1
58647               IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
58648               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
58649               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
58650               XLAM(LKNT)=0D0
58651 C...Set coupling, and decay product masses on/off. A factor of 2 for
58652 C...(N_C-1) has been used to cancel a factor 0.5.
58653               RVLAMC=RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
58654      &             **2 * GSTR2
58655               DCMASS        = .FALSE.
58656               IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
58657      &             .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
58658 C...Resonance KF codes (1=I,2=J,3=K)
58659               KFR(1)        = IDLAM(LKNT,1)
58660               KFR(2)        = 0
58661               KFR(3)        = 0
58662 C...Calculate width.
58663               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58664      &             ,XRESI)
58665 C...Resonance KF codes (1=I,2=J,3=K)
58666               KFR(1)        = 0
58667               KFR(2)        = IDLAM(LKNT,2)
58668               KFR(3)        = 0
58669 C...Calculate width.
58670               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58671      &             ,XRESJ)
58672 C...Resonance KF codes (1=I,2=J,3=K)
58673               KFR(1)        = 0
58674               KFR(2)        = 0
58675               KFR(3)        = IDLAM(LKNT,3)
58676 C...Calculate width.
58677               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58678      &             ,XRESK)
58679 C...Resonance KF codes (1=I,2=J,3=K)
58680               KFR(1)        = IDLAM(LKNT,1)
58681               KFR(2)        = IDLAM(LKNT,2)
58682               KFR(3)        = 0
58683 C...Calculate width.
58684               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58685      &             ,XRESIJ)
58686 C...Calculate interference function. (Factor -1/2 to make up for factor
58687 C...-2 in PYRVGW.
58688               IF (ABS(XRESI+XRESJ-XRESIJ).GT.1D-4*XRESIJ) THEN
58689                 XRESIJ = 5D-1 * (XRESI+XRESJ-XRESIJ)
58690               ELSE
58691                 XRESIJ = 0D0
58692               ENDIF
58693 C...Resonance KF codes (1=I,2=J,3=K)
58694               KFR(1)        = 0
58695               KFR(2)        = IDLAM(LKNT,2)
58696               KFR(3)        = IDLAM(LKNT,3)
58697 C...Calculate width.
58698               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58699      &             ,XRESJK)
58700               IF (ABS(XRESJ+XRESK-XRESJK).GT.1D-4*XRESJK) THEN
58701                 XRESJK = 5D-1 * (XRESJ+XRESK-XRESJK)
58702               ELSE
58703                 XRESJK = 0D0
58704               ENDIF
58705 C...Resonance KF codes (1=I,2=J,3=K)
58706               KFR(1)        = IDLAM(LKNT,1)
58707               KFR(2)        = 0
58708               KFR(3)        = IDLAM(LKNT,3)
58709 C...Calculate width.
58710               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
58711      &             ,XRESIK)
58712               IF (ABS(XRESI+XRESK-XRESIK).GT.1D-4*XRESIK) THEN
58713                 XRESIK = 5D-1 * (XRESI+XRESK-XRESIK)
58714               ELSE
58715                 XRESIK = 0D0
58716               ENDIF
58717 C...Calculate total width (factor 1/2 from 1/(N_C-1))
58718               XLAM(LKNT) = XRESI + XRESJ + XRESK
58719      &             + 5D-1 * (XRESIJ + XRESIK + XRESJK)
58720 C...Normalize
58721               XLAM(LKNT) = XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
58722 C...Charge conjugate mode.
58723               LKNT          = LKNT+1
58724               IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
58725               IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
58726               IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
58727               XLAM(LKNT)    = XLAM(LKNT-1)
58728 C...KINEMATICS CHECK
58729               IF (XLAM(LKNT).EQ.0D0) THEN
58730                 LKNT=LKNT-2
58731               ENDIF
58732             ENDIF
58733   130     CONTINUE
58734         ENDIF
58735       ENDIF
58736       RETURN
58737       END
58738  
58739 C*********************************************************************
58740  
58741 C...PYRVSB
58742 C...Auxiliary function to PYRVSF for calculating R-Violating
58743 C...sfermion widths. Though the decay products are most often treated
58744 C...as massless in the calculation, the kinematical boundary of phase
58745 C...space is tested using the true masses.
58746 C...MODE = 1: All decay products massive
58747 C...MODE = 2: Decay product 1 massless
58748 C...MODE = 3: Decay product 2 massless
58749 C...MODE = 4: All decay products  massless
58750  
58751       FUNCTION PYRVSB(KFIN,ID1,ID2,RM2,MODE)
58752  
58753       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
58754       IMPLICIT INTEGER (I-N)
58755       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58756       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58757       SAVE /PYDAT1/,/PYDAT2/
58758       DOUBLE PRECISION SM(3)
58759       INTEGER PYCOMP, KC(3)
58760       KC(1)=PYCOMP(KFIN)
58761       KC(2)=PYCOMP(ID1)
58762       KC(3)=PYCOMP(ID2)
58763       SM(1)=PMAS(KC(1),1)**2
58764       SM(2)=PMAS(KC(2),1)**2
58765       SM(3)=PMAS(KC(3),1)**2
58766 C...Kinematics check
58767       IF ((SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2).LE.0D0) THEN
58768         PYRVSB=0D0
58769         RETURN
58770       ENDIF
58771 C...CM momenta squared
58772       IF (MODE.EQ.1) THEN
58773         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2)
58774      &       * (SM(1)-(PMAS(KC(2),1)-PMAS(KC(3),1))**2)
58775       ELSE IF (MODE.EQ.2) THEN
58776         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(3),1))**2)**2
58777       ELSE IF (MODE.EQ.3) THEN
58778         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1))**2)**2
58779       ELSE
58780         P2CM=SM(1)/4.
58781       ENDIF
58782 C...Calculate Width
58783       PYRVSB=RM2*SQRT(MAX(0D0,P2CM))/(8*PARU(1)*SM(1))
58784       RETURN
58785       END
58786  
58787 C*********************************************************************
58788  
58789 C...PYRVGW
58790 C...Generalized Matrix Element for R-Violating 3-body widths.
58791 C...P. Z. Skands
58792       SUBROUTINE PYRVGW(KFIN,ID1,ID2,ID3,XLAM)
58793  
58794       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
58795       IMPLICIT INTEGER (I-N)
58796       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
58797      &KEXCIT=4000000,KDIMEN=5000000)
58798       PARAMETER (EPS=1D-4)
58799       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58800       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
58801      &     ,DCMASS,KFR(3)
58802       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
58803      & SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
58804       DOUBLE PRECISION XLIM(3,3)
58805       INTEGER KC(0:3), PYCOMP
58806       LOGICAL DCMASS, DCHECK(6)
58807       SAVE /PYDAT2/,/PYRVNV/,/PYSSMT/
58808  
58809       XLAM   = 0D0
58810  
58811       KC(0)  = PYCOMP(KFIN)
58812       KC(1)  = PYCOMP(ID1)
58813       KC(2)  = PYCOMP(ID2)
58814       KC(3)  = PYCOMP(ID3)
58815       RMS(0) = PMAS(KC(0),1)
58816       RMS(1) = PYMRUN(ID1,PMAS(KC(1),1)**2)
58817       RMS(2) = PYMRUN(ID2,PMAS(KC(2),1)**2)
58818       RMS(3) = PYMRUN(ID3,PMAS(KC(3),1)**2)
58819 C...INITIALIZE OUTER INTEGRATION LIMITS AND KINEMATICS CHECK
58820       XLIM(1,1)=(RMS(1)+RMS(2))**2
58821       XLIM(1,2)=(RMS(0)-RMS(3))**2
58822       XLIM(1,3)=XLIM(1,2)-XLIM(1,1)
58823       XLIM(2,1)=(RMS(2)+RMS(3))**2
58824       XLIM(2,2)=(RMS(0)-RMS(1))**2
58825       XLIM(2,3)=XLIM(2,2)-XLIM(2,1)
58826       XLIM(3,1)=(RMS(1)+RMS(3))**2
58827       XLIM(3,2)=(RMS(0)-RMS(2))**2
58828       XLIM(3,3)=XLIM(3,2)-XLIM(3,1)
58829 C...Check Phase Space
58830       IF (XLIM(1,3).LT.0D0.OR.XLIM(2,3).LT.0D0.OR.XLIM(3,3).LT.0D0) THEN
58831         RETURN
58832       ENDIF
58833  
58834 C...INITIALIZE RESONANCE INFORMATION
58835       DO 110 JRES = 1,3
58836         DO 100 IMASS = 1,2
58837           IRES = 2*(JRES-1)+IMASS
58838           INTRES(IRES,1) = 0
58839           DCHECK(IRES)   =.FALSE.
58840 C...NO RIGHT-HANDED NEUTRINOS
58841           IF (((IMASS.EQ.2).AND.((IABS(KFR(JRES)).EQ.12).OR
58842      &         .(IABS(KFR(JRES)).EQ.14).OR.(IABS(KFR(JRES)).EQ.16))).OR
58843      &         .KFR(JRES).EQ.0) GOTO 100
58844           RES(IRES,1) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),1)
58845           RES(IRES,2) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),2)
58846           INTRES(IRES,1) = IABS(KFR(JRES))
58847           INTRES(IRES,2) = IMASS
58848           IF (KFR(JRES).LT.0) INTRES(IRES,3) = 1
58849           IF (KFR(JRES).GT.0) INTRES(IRES,3) = 0
58850   100   CONTINUE
58851   110 CONTINUE
58852  
58853 C...SUM OVER DIAGRAMS AND INTEGRATE OVER PHASE SPACE
58854  
58855 C...RESONANCE CONTRIBUTIONS
58856 C...(Only sum contributions where the resonance is off shell).
58857 C...Store whether diagram on/off in DCHECK.
58858 C...LOOP OVER MASS STATES
58859       DO 120 J=1,2
58860         IDR=J
58861         IF(INTRES(IDR,1).NE.0) THEN
58862 
58863         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
58864         IF ((RMS(0).LT.(RMS(1)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(2)
58865      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
58866           DCHECK(IDR) =.TRUE.
58867           XLAM = XLAM + TMIX * PYRVI1(2,3,1)
58868         ENDIF
58869         ENDIF
58870  
58871         IDR=J+2
58872         IF(INTRES(IDR,1).NE.0) THEN
58873         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
58874         IF ((RMS(0).LT.(RMS(2)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
58875      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
58876           DCHECK(IDR) =.TRUE.
58877           XLAM = XLAM + TMIX * PYRVI1(1,3,2)
58878         ENDIF
58879         ENDIF
58880  
58881         IDR=J+4
58882         IF(INTRES(IDR,1).NE.0) THEN
58883         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
58884         IF ((RMS(0).LT.(RMS(3)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
58885      &       +RMS(2)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
58886           DCHECK(IDR) =.TRUE.
58887           XLAM = XLAM + TMIX * PYRVI1(1,2,3)
58888         ENDIF
58889         ENDIF
58890   120 CONTINUE
58891 C... L-R INTERFERENCES
58892 C... (Only add contributions where both contributing diagrams
58893 C... are non-resonant).
58894       IDR=1
58895       IF (DCHECK(1).AND.DCHECK(2)) THEN
58896 C...Bug corrected 11/12 2001. Skands.
58897         XLAM  = XLAM + 2D0 * PYRVI2(2,3,1)
58898      &     * SFMIX(INTRES(1,1),2+INTRES(1,3)-1)
58899      &     * SFMIX(INTRES(2,1),4+INTRES(2,3)-1)
58900       ENDIF
58901  
58902       IDR=3
58903       IF (DCHECK(3).AND.DCHECK(4)) THEN
58904         XLAM  = XLAM + 2D0 * PYRVI2(1,3,2)
58905      &     * SFMIX(INTRES(3,1),2+INTRES(3,3)-1)
58906      &     * SFMIX(INTRES(4,1),4+INTRES(4,3)-1)
58907       ENDIF
58908  
58909       IDR=5
58910       IF (DCHECK(5).AND.DCHECK(6)) THEN
58911         XLAM  = XLAM + 2D0 * PYRVI2(1,2,3)
58912      &     * SFMIX(INTRES(5,1),2+INTRES(5,3)-1)
58913      &     * SFMIX(INTRES(6,1),4+INTRES(6,3)-1)
58914       ENDIF
58915 C... TRUE INTERFERENCES
58916 C... (Only add contributions where both contributing diagrams
58917 C... are non-resonant).
58918       PREF=-2D0
58919       IF ((KFIN-KSUSY1).EQ.24.OR.(KFIN-KSUSY1).EQ.37) PREF=2D0
58920       DO 140 IKR1 = 1,2
58921         DO 130 IKR2 = 1,2
58922           IDR  = IKR1+2
58923           IDR2 = IKR2
58924           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
58925             XLAM = XLAM + PREF*PYRVI3(1,3,2) *
58926      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
58927      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
58928           ENDIF
58929  
58930           IDR  = IKR1+4
58931           IDR2 = IKR2
58932           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
58933             XLAM = XLAM + PREF*PYRVI3(1,2,3) *
58934      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
58935      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
58936           ENDIF
58937  
58938           IDR  = IKR1+4
58939           IDR2 = IKR2+2
58940           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
58941             XLAM = XLAM + PREF*PYRVI3(2,1,3) *
58942      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
58943      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
58944           ENDIF
58945   130   CONTINUE
58946   140 CONTINUE
58947  
58948       RETURN
58949       END
58950  
58951 C*********************************************************************
58952  
58953 C...PYRVI1
58954 C...Function to integrate resonance contributions
58955  
58956       FUNCTION PYRVI1(ID1,ID2,ID3)
58957  
58958       IMPLICIT NONE
58959       DOUBLE PRECISION LO,HI,PYRVI1,PYRVG1,PYGAUS
58960       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
58961       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
58962       LOGICAL MFLAG,DCMASS
58963       EXTERNAL PYRVG1,PYGAUS
58964       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
58965      &     ,DCMASS,KFR(3)
58966       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
58967       SAVE/PYRVNV/,/PYRVPM/
58968 C...Initialize mass and width information
58969       PYRVI1 = 0D0
58970       RM(0)  = RMS(0)
58971       RM(1)  = RMS(ID1)
58972       RM(2)  = RMS(ID2)
58973       RM(3)  = RMS(ID3)
58974       RESM(1)= RES(IDR,1)
58975       RESW(1)= RES(IDR,2)
58976 C...A->B and B->A for antisparticles
58977       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
58978       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
58979 C...Integration boundaries and mass flag
58980       LO     = (RM(1)+RM(2))**2
58981       HI     = (RM(0)-RM(3))**2
58982       MFLAG  = DCMASS
58983       PYRVI1 = PYGAUS(PYRVG1,LO,HI,1D-3)
58984       RETURN
58985       END
58986  
58987 C*********************************************************************
58988  
58989 C...PYRVI2
58990 C...Function to integrate L-R interference contributions
58991  
58992       FUNCTION PYRVI2(ID1,ID2,ID3)
58993  
58994       IMPLICIT NONE
58995       DOUBLE PRECISION LO,HI,PYRVI2, PYRVG2, PYGAUS
58996       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
58997       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
58998       LOGICAL MFLAG,DCMASS
58999       EXTERNAL PYRVG2,PYGAUS
59000       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
59001      &     ,DCMASS,KFR(3)
59002       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
59003       SAVE/PYRVNV/,/PYRVPM/
59004 C...Initialize mass and width information
59005       PYRVI2 = 0D0
59006       RM(0)  = RMS(0)
59007       RM(1)  = RMS(ID1)
59008       RM(2)  = RMS(ID2)
59009       RM(3)  = RMS(ID3)
59010       RESM(1)= RES(IDR,1)
59011       RESW(1)= RES(IDR,2)
59012       RESM(2)= RES(IDR+1,1)
59013       RESW(2)= RES(IDR+1,2)
59014 C...A->B and B->A for antisparticles
59015       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
59016       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
59017       A(2)   = AB(1+INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
59018       B(2)   = AB(2-INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
59019 C...Boundaries and mass flag
59020       LO     = (RM(1)+RM(2))**2
59021       HI     = (RM(0)-RM(3))**2
59022       MFLAG  = DCMASS
59023       PYRVI2 = PYGAUS(PYRVG2,LO,HI,1D-3)
59024       RETURN
59025       END
59026  
59027 C*********************************************************************
59028  
59029 C...PYRVI3
59030 C...Function to integrate true interference contributions
59031  
59032       FUNCTION PYRVI3(ID1,ID2,ID3)
59033  
59034       IMPLICIT NONE
59035       DOUBLE PRECISION LO,HI,PYRVI3, PYRVG3, PYGAUS
59036       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
59037       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
59038       LOGICAL MFLAG,DCMASS
59039       EXTERNAL PYRVG3,PYGAUS
59040       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
59041      &     ,DCMASS,KFR(3)
59042       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
59043       SAVE/PYRVNV/,/PYRVPM/
59044 C...Initialize mass and width information
59045       PYRVI3 = 0D0
59046       RM(0)  = RMS(0)
59047       RM(1)  = RMS(ID1)
59048       RM(2)  = RMS(ID2)
59049       RM(3)  = RMS(ID3)
59050       RESM(1)= RES(IDR,1)
59051       RESW(1)= RES(IDR,2)
59052       RESM(2)= RES(IDR2,1)
59053       RESW(2)= RES(IDR2,2)
59054 C...A -> B and B -> A for antisparticles
59055       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
59056       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
59057       A(2)   = AB(1+INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
59058       B(2)   = AB(2-INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
59059 C...Boundaries and mass flag
59060       LO     = (RM(1)+RM(2))**2
59061       HI     = (RM(0)-RM(3))**2
59062       MFLAG  = DCMASS
59063       PYRVI3 = PYGAUS(PYRVG3,LO,HI,1D-3)
59064       RETURN
59065       END
59066  
59067 C*********************************************************************
59068  
59069 C...PYRVG1
59070 C...Integrand for resonance contributions
59071  
59072       FUNCTION PYRVG1(X)
59073  
59074       IMPLICIT NONE
59075       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
59076       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY,PYRVR
59077       DOUBLE PRECISION RVR,PYRVG1,E2,E3,C1,SR1,SR2,A1,A2
59078       LOGICAL MFLAG
59079       SAVE/PYRVPM/
59080       RVR    = PYRVR(X,RESM(1),RESW(1))
59081       C1     = 2D0*SQRT(MAX(0D0,X))
59082       IF (.NOT.MFLAG) THEN
59083         E2     = X/C1
59084         E3     = (RM(0)**2-X)/C1
59085         DELTAY = 4D0*E2*E3
59086         PYRVG1 = DELTAY*RVR*X*(A(1)**2+B(1)**2)*(RM(0)**2-X)
59087       ELSE
59088         E2     = (X-RM(1)**2+RM(2)**2)/C1
59089         E3     = (RM(0)**2-X-RM(3)**2)/C1
59090         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
59091         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
59092         DELTAY = 4D0*SR1*SR2
59093         A1     = 4.*A(1)*B(1)*RM(3)*RM(0)
59094         A2     = (A(1)**2+B(1)**2)*(RM(0)**2+RM(3)**2-X)
59095         PYRVG1 = DELTAY*RVR*(X-RM(1)**2-RM(2)**2)*(A1+A2)
59096       ENDIF
59097       RETURN
59098       END
59099  
59100 C*********************************************************************
59101  
59102 C...PYRVG2
59103 C...Integrand for L-R interference contributions
59104  
59105       FUNCTION PYRVG2(X)
59106  
59107       IMPLICIT NONE
59108       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
59109       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY, PYRVS
59110       DOUBLE PRECISION RVS,PYRVG2,E2,E3,C1,SR1,SR2
59111       LOGICAL MFLAG
59112       SAVE/PYRVPM/
59113       C1     = 2D0*SQRT(MAX(0D0,X))
59114       RVS    = PYRVS(X,X,RESM(1),RESW(1),RESM(2),RESW(2))
59115       IF (.NOT.MFLAG) THEN
59116         E2     = X/C1
59117         E3     = (RM(0)**2-X)/C1
59118         DELTAY = 4D0*E2*E3
59119         PYRVG2 = DELTAY*RVS*X*(A(1)*A(2)+B(1)*B(2))*(RM(0)**2-X)
59120       ELSE
59121         E2     = (X-RM(1)**2+RM(2)**2)/C1
59122         E3     = (RM(0)**2-X-RM(3)**2)/C1
59123         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
59124         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
59125         DELTAY = 4D0*SR1*SR2
59126         PYRVG2 = DELTAY*RVS*(X-RM(1)**2-RM(2)**2)*((A(1)*A(2)
59127      &       + B(1)*B(2))*(RM(0)**2+RM(3)**2-X)
59128      &       + 2D0*(A(1)*B(2)+A(2)*B(1))*RM(3)*RM(0))
59129       ENDIF
59130       RETURN
59131       END
59132  
59133 C*********************************************************************
59134  
59135 C...PYRVG3
59136 C...Function to do Y integration over true interference contributions
59137  
59138       FUNCTION PYRVG3(X)
59139  
59140       IMPLICIT NONE
59141       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
59142 C...Second Dalitz variable for PYRVG4
59143       COMMON/PYG2DX/X1
59144       DOUBLE PRECISION RM, A, B, RESM, RESW, X, X1
59145       DOUBLE PRECISION E2, E3, C1, SQ1, SR1, SR2, YMIN, YMAX
59146       DOUBLE PRECISION PYRVG3, PYRVG4, PYGAU2
59147       LOGICAL MFLAG
59148       EXTERNAL PYGAU2,PYRVG4
59149       SAVE/PYRVPM/,/PYG2DX/
59150       PYRVG3=0D0
59151       C1=2D0*SQRT(MAX(1D-9,X))
59152       X1=X
59153       IF (.NOT.MFLAG) THEN
59154         E2    = X/C1
59155         E3    = (RM(0)**2-X)/C1
59156         YMIN  = 0D0
59157         YMAX  = 4D0*E2*E3
59158       ELSE
59159         E2    = (X-RM(1)**2+RM(2)**2)/C1
59160         E3    = (RM(0)**2-X-RM(3)**2)/C1
59161         SQ1   = (E2+E3)**2
59162         SR1   = SQRT(MAX(0D0,E2**2-RM(2)**2))
59163         SR2   = SQRT(MAX(0D0,E3**2-RM(3)**2))
59164         YMIN  = SQ1-(SR1+SR2)**2
59165         YMAX  = SQ1-(SR1-SR2)**2
59166       ENDIF
59167       PYRVG3 = PYGAU2(PYRVG4,YMIN,YMAX,1D-3)
59168       RETURN
59169       END
59170  
59171 C*********************************************************************
59172  
59173 C...PYRVG4
59174 C...Integrand for true intereference contributions
59175  
59176       FUNCTION PYRVG4(Y)
59177  
59178       IMPLICIT NONE
59179       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
59180       COMMON/PYG2DX/X
59181       DOUBLE PRECISION X, Y, PYRVG4, RM, A, B, RESM, RESW, RVS, PYRVS
59182       LOGICAL MFLAG
59183       SAVE /PYRVPM/,/PYG2DX/
59184       PYRVG4=0D0
59185       RVS=PYRVS(X,Y,RESM(1),RESW(1),RESM(2),RESW(2))
59186       IF (.NOT.MFLAG) THEN
59187         PYRVG4 = RVS*B(1)*B(2)*X*Y
59188       ELSE
59189         PYRVG4 = RVS*(RM(1)*RM(3)*A(1)*A(2)*(X+Y-RM(1)**2-RM(3)**2)
59190      &       + RM(1)*RM(0)*B(1)*A(2)*(Y-RM(2)**2-RM(3)**2)
59191      &       + RM(3)*RM(0)*A(1)*B(2)*(X-RM(1)**2-RM(2)**2)
59192      &       + B(1)*B(2)*(X*Y-(RM(1)*RM(3))**2-(RM(0)*RM(2))**2))
59193       ENDIF
59194       RETURN
59195       END
59196  
59197 C*********************************************************************
59198  
59199 C...PYRVR
59200 C...Breit-Wigner for resonance contributions
59201  
59202       FUNCTION PYRVR(Mab2,RM,RW)
59203  
59204       IMPLICIT NONE
59205       DOUBLE PRECISION Mab2,RM,RW,PYRVR
59206       PYRVR = 1D0/((Mab2-RM**2)**2+RM**2*RW**2)
59207       RETURN
59208       END
59209  
59210 C*********************************************************************
59211  
59212 C...PYRVS
59213 C...Interference function
59214  
59215       FUNCTION PYRVS(X,Y,M1,W1,M2,W2)
59216  
59217       IMPLICIT NONE
59218       DOUBLE PRECISION X, Y, PYRVS, PYRVR, M1, M2, W1, W2
59219       PYRVS = PYRVR(X,M1,W1)*PYRVR(Y,M2,W2)*((X-M1**2)*(Y-M2**2)
59220      &     +W1*W2*M1*M2)
59221       RETURN
59222       END
59223  
59224 C*********************************************************************
59225  
59226 C...PY1ENT
59227 C...Stores one parton/particle in commonblock PYJETS.
59228  
59229       SUBROUTINE PY1ENT(IP,KF,PE,THE,PHI)
59230  
59231 C...Double precision and integer declarations.
59232       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59233       IMPLICIT INTEGER(I-N)
59234       INTEGER PYK,PYCHGE,PYCOMP
59235 C...Commonblocks.
59236       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
59237       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59238       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
59239       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
59240  
59241 C...Standard checks.
59242       MSTU(28)=0
59243       IF(MSTU(12).NE.12345) CALL PYLIST(0)
59244       IPA=MAX(1,IABS(IP))
59245       IF(IPA.GT.MSTU(4)) CALL PYERRM(21,
59246      &'(PY1ENT:) writing outside PYJETS memory')
59247       KC=PYCOMP(KF)
59248       IF(KC.EQ.0) CALL PYERRM(12,'(PY1ENT:) unknown flavour code')
59249  
59250 C...Find mass. Reset K, P and V vectors.
59251       PM=0D0
59252       IF(MSTU(10).EQ.1) PM=P(IPA,5)
59253       IF(MSTU(10).GE.2) PM=PYMASS(KF)
59254       DO 100 J=1,5
59255         K(IPA,J)=0
59256         P(IPA,J)=0D0
59257         V(IPA,J)=0D0
59258   100 CONTINUE
59259  
59260 C...Store parton/particle in K and P vectors.
59261       K(IPA,1)=1
59262       IF(IP.LT.0) K(IPA,1)=2
59263       K(IPA,2)=KF
59264       P(IPA,5)=PM
59265       P(IPA,4)=MAX(PE,PM)
59266       PA=SQRT(P(IPA,4)**2-P(IPA,5)**2)
59267       P(IPA,1)=PA*SIN(THE)*COS(PHI)
59268       P(IPA,2)=PA*SIN(THE)*SIN(PHI)
59269       P(IPA,3)=PA*COS(THE)
59270  
59271 C...Set N. Optionally fragment/decay.
59272       N=IPA
59273       IF(IP.EQ.0) CALL PYEXEC
59274  
59275       RETURN
59276       END
59277  
59278 C*********************************************************************
59279  
59280 C...PY2ENT
59281 C...Stores two partons/particles in their CM frame,
59282 C...with the first along the +z axis.
59283  
59284       SUBROUTINE PY2ENT(IP,KF1,KF2,PECM)
59285  
59286 C...Double precision and integer declarations.
59287       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59288       IMPLICIT INTEGER(I-N)
59289       INTEGER PYK,PYCHGE,PYCOMP
59290 C...Commonblocks.
59291       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
59292       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59293       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
59294       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
59295  
59296 C...Standard checks.
59297       MSTU(28)=0
59298       IF(MSTU(12).NE.12345) CALL PYLIST(0)
59299       IPA=MAX(1,IABS(IP))
59300       IF(IPA.GT.MSTU(4)-1) CALL PYERRM(21,
59301      &'(PY2ENT:) writing outside PYJETS memory')
59302       KC1=PYCOMP(KF1)
59303       KC2=PYCOMP(KF2)
59304       IF(KC1.EQ.0.OR.KC2.EQ.0) CALL PYERRM(12,
59305      &'(PY2ENT:) unknown flavour code')
59306  
59307 C...Find masses. Reset K, P and V vectors.
59308       PM1=0D0
59309       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
59310       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
59311       PM2=0D0
59312       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
59313       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
59314       DO 110 I=IPA,IPA+1
59315         DO 100 J=1,5
59316           K(I,J)=0
59317           P(I,J)=0D0
59318           V(I,J)=0D0
59319   100   CONTINUE
59320   110 CONTINUE
59321  
59322 C...Check flavours.
59323       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
59324       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
59325       IF(MSTU(19).EQ.1) THEN
59326         MSTU(19)=0
59327       ELSE
59328         IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL PYERRM(2,
59329      &  '(PY2ENT:) unphysical flavour combination')
59330       ENDIF
59331       K(IPA,2)=KF1
59332       K(IPA+1,2)=KF2
59333  
59334 C...Store partons/particles in K vectors for normal case.
59335       IF(IP.GE.0) THEN
59336         K(IPA,1)=1
59337         IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2
59338         K(IPA+1,1)=1
59339  
59340 C...Store partons in K vectors for parton shower evolution.
59341       ELSE
59342         K(IPA,1)=3
59343         K(IPA+1,1)=3
59344         K(IPA,4)=MSTU(5)*(IPA+1)
59345         K(IPA,5)=K(IPA,4)
59346         K(IPA+1,4)=MSTU(5)*IPA
59347         K(IPA+1,5)=K(IPA+1,4)
59348       ENDIF
59349  
59350 C...Check kinematics and store partons/particles in P vectors.
59351       IF(PECM.LE.PM1+PM2) CALL PYERRM(13,
59352      &'(PY2ENT:) energy smaller than sum of masses')
59353       PA=SQRT(MAX(0D0,(PECM**2-PM1**2-PM2**2)**2-(2D0*PM1*PM2)**2))/
59354      &(2D0*PECM)
59355       P(IPA,3)=PA
59356       P(IPA,4)=SQRT(PM1**2+PA**2)
59357       P(IPA,5)=PM1
59358       P(IPA+1,3)=-PA
59359       P(IPA+1,4)=SQRT(PM2**2+PA**2)
59360       P(IPA+1,5)=PM2
59361  
59362 C...Set N. Optionally fragment/decay.
59363       N=IPA+1
59364       IF(IP.EQ.0) CALL PYEXEC
59365  
59366       RETURN
59367       END
59368  
59369 C*********************************************************************
59370  
59371 C...PY3ENT
59372 C...Stores three partons or particles in their CM frame,
59373 C...with the first along the +z axis and the third in the (x,z)
59374 C...plane with x > 0.
59375  
59376       SUBROUTINE PY3ENT(IP,KF1,KF2,KF3,PECM,X1,X3)
59377  
59378 C...Double precision and integer declarations.
59379       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59380       IMPLICIT INTEGER(I-N)
59381       INTEGER PYK,PYCHGE,PYCOMP
59382 C...Commonblocks.
59383       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
59384       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59385       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
59386       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
59387  
59388 C...Standard checks.
59389       MSTU(28)=0
59390       IF(MSTU(12).NE.12345) CALL PYLIST(0)
59391       IPA=MAX(1,IABS(IP))
59392       IF(IPA.GT.MSTU(4)-2) CALL PYERRM(21,
59393      &'(PY3ENT:) writing outside PYJETS memory')
59394       KC1=PYCOMP(KF1)
59395       KC2=PYCOMP(KF2)
59396       KC3=PYCOMP(KF3)
59397       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL PYERRM(12,
59398      &'(PY3ENT:) unknown flavour code')
59399  
59400 C...Find masses. Reset K, P and V vectors.
59401       PM1=0D0
59402       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
59403       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
59404       PM2=0D0
59405       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
59406       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
59407       PM3=0D0
59408       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
59409       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
59410       DO 110 I=IPA,IPA+2
59411         DO 100 J=1,5
59412           K(I,J)=0
59413           P(I,J)=0D0
59414           V(I,J)=0D0
59415   100   CONTINUE
59416   110 CONTINUE
59417  
59418 C...Check flavours.
59419       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
59420       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
59421       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
59422       IF(MSTU(19).EQ.1) THEN
59423         MSTU(19)=0
59424       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN
59425       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR.
59426      &  KQ1+KQ3.EQ.4)) THEN
59427       ELSE
59428         CALL PYERRM(2,'(PY3ENT:) unphysical flavour combination')
59429       ENDIF
59430       K(IPA,2)=KF1
59431       K(IPA+1,2)=KF2
59432       K(IPA+2,2)=KF3
59433  
59434 C...Store partons/particles in K vectors for normal case.
59435       IF(IP.GE.0) THEN
59436         K(IPA,1)=1
59437         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2
59438         K(IPA+1,1)=1
59439         IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2
59440         K(IPA+2,1)=1
59441  
59442 C...Store partons in K vectors for parton shower evolution.
59443       ELSE
59444         K(IPA,1)=3
59445         K(IPA+1,1)=3
59446         K(IPA+2,1)=3
59447         KCS=4
59448         IF(KQ1.EQ.-1) KCS=5
59449         K(IPA,KCS)=MSTU(5)*(IPA+1)
59450         K(IPA,9-KCS)=MSTU(5)*(IPA+2)
59451         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
59452         K(IPA+1,9-KCS)=MSTU(5)*IPA
59453         K(IPA+2,KCS)=MSTU(5)*IPA
59454         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
59455       ENDIF
59456  
59457 C...Check kinematics.
59458       MKERR=0
59459       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*(2D0-X1-X3)*PECM.LE.PM2.OR.
59460      &0.5D0*X3*PECM.LE.PM3) MKERR=1
59461       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
59462       PA2=SQRT(MAX(1D-10,(0.5D0*(2D0-X1-X3)*PECM)**2-PM2**2))
59463       PA3=SQRT(MAX(1D-10,(0.5D0*X3*PECM)**2-PM3**2))
59464       CTHE2=(PA3**2-PA1**2-PA2**2)/(2D0*PA1*PA2)
59465       CTHE3=(PA2**2-PA1**2-PA3**2)/(2D0*PA1*PA3)
59466       IF(ABS(CTHE2).GE.1.001D0.OR.ABS(CTHE3).GE.1.001D0) MKERR=1
59467       CTHE3=MAX(-1D0,MIN(1D0,CTHE3))
59468       IF(MKERR.NE.0) CALL PYERRM(13,
59469      &'(PY3ENT:) unphysical kinematical variable setup')
59470  
59471 C...Store partons/particles in P vectors.
59472       P(IPA,3)=PA1
59473       P(IPA,4)=SQRT(PA1**2+PM1**2)
59474       P(IPA,5)=PM1
59475       P(IPA+2,1)=PA3*SQRT(1D0-CTHE3**2)
59476       P(IPA+2,3)=PA3*CTHE3
59477       P(IPA+2,4)=SQRT(PA3**2+PM3**2)
59478       P(IPA+2,5)=PM3
59479       P(IPA+1,1)=-P(IPA+2,1)
59480       P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3)
59481       P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2)
59482       P(IPA+1,5)=PM2
59483  
59484 C...Set N. Optionally fragment/decay.
59485       N=IPA+2
59486       IF(IP.EQ.0) CALL PYEXEC
59487  
59488       RETURN
59489       END
59490  
59491 C*********************************************************************
59492  
59493 C...PY4ENT
59494 C...Stores four partons or particles in their CM frame, with
59495 C...the first along the +z axis, the last in the xz plane with x > 0
59496 C...and the second having y < 0 and y > 0 with equal probability.
59497  
59498       SUBROUTINE PY4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14)
59499  
59500 C...Double precision and integer declarations.
59501       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59502       IMPLICIT INTEGER(I-N)
59503       INTEGER PYK,PYCHGE,PYCOMP
59504 C...Commonblocks.
59505       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
59506       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59507       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
59508       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
59509  
59510 C...Standard checks.
59511       MSTU(28)=0
59512       IF(MSTU(12).NE.12345) CALL PYLIST(0)
59513       IPA=MAX(1,IABS(IP))
59514       IF(IPA.GT.MSTU(4)-3) CALL PYERRM(21,
59515      &'(PY4ENT:) writing outside PYJETS momory')
59516       KC1=PYCOMP(KF1)
59517       KC2=PYCOMP(KF2)
59518       KC3=PYCOMP(KF3)
59519       KC4=PYCOMP(KF4)
59520       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL PYERRM(12,
59521      &'(PY4ENT:) unknown flavour code')
59522  
59523 C...Find masses. Reset K, P and V vectors.
59524       PM1=0D0
59525       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
59526       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
59527       PM2=0D0
59528       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
59529       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
59530       PM3=0D0
59531       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
59532       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
59533       PM4=0D0
59534       IF(MSTU(10).EQ.1) PM4=P(IPA+3,5)
59535       IF(MSTU(10).GE.2) PM4=PYMASS(KF4)
59536       DO 110 I=IPA,IPA+3
59537         DO 100 J=1,5
59538           K(I,J)=0
59539           P(I,J)=0D0
59540           V(I,J)=0D0
59541   100   CONTINUE
59542   110 CONTINUE
59543  
59544 C...Check flavours.
59545       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
59546       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
59547       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
59548       KQ4=KCHG(KC4,2)*ISIGN(1,KF4)
59549       IF(MSTU(19).EQ.1) THEN
59550         MSTU(19)=0
59551       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN
59552       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR.
59553      &  KQ1+KQ4.EQ.4)) THEN
59554       ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0D0)
59555      &  THEN
59556       ELSE
59557         CALL PYERRM(2,'(PY4ENT:) unphysical flavour combination')
59558       ENDIF
59559       K(IPA,2)=KF1
59560       K(IPA+1,2)=KF2
59561       K(IPA+2,2)=KF3
59562       K(IPA+3,2)=KF4
59563  
59564 C...Store partons/particles in K vectors for normal case.
59565       IF(IP.GE.0) THEN
59566         K(IPA,1)=1
59567         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2
59568         K(IPA+1,1)=1
59569         IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0))
59570      &  K(IPA+1,1)=2
59571         K(IPA+2,1)=1
59572         IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2
59573         K(IPA+3,1)=1
59574  
59575 C...Store partons for parton shower evolution from q-g-g-qbar or
59576 C...g-g-g-g event.
59577       ELSEIF(KQ1+KQ2.NE.0) THEN
59578         K(IPA,1)=3
59579         K(IPA+1,1)=3
59580         K(IPA+2,1)=3
59581         K(IPA+3,1)=3
59582         KCS=4
59583         IF(KQ1.EQ.-1) KCS=5
59584         K(IPA,KCS)=MSTU(5)*(IPA+1)
59585         K(IPA,9-KCS)=MSTU(5)*(IPA+3)
59586         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
59587         K(IPA+1,9-KCS)=MSTU(5)*IPA
59588         K(IPA+2,KCS)=MSTU(5)*(IPA+3)
59589         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
59590         K(IPA+3,KCS)=MSTU(5)*IPA
59591         K(IPA+3,9-KCS)=MSTU(5)*(IPA+2)
59592  
59593 C...Store partons for parton shower evolution from q-qbar-q-qbar event.
59594       ELSE
59595         K(IPA,1)=3
59596         K(IPA+1,1)=3
59597         K(IPA+2,1)=3
59598         K(IPA+3,1)=3
59599         K(IPA,4)=MSTU(5)*(IPA+1)
59600         K(IPA,5)=K(IPA,4)
59601         K(IPA+1,4)=MSTU(5)*IPA
59602         K(IPA+1,5)=K(IPA+1,4)
59603         K(IPA+2,4)=MSTU(5)*(IPA+3)
59604         K(IPA+2,5)=K(IPA+2,4)
59605         K(IPA+3,4)=MSTU(5)*(IPA+2)
59606         K(IPA+3,5)=K(IPA+3,4)
59607       ENDIF
59608  
59609 C...Check kinematics.
59610       MKERR=0
59611       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*X2*PECM.LE.PM2.OR.
59612      &0.5D0*(2D0-X1-X2-X4)*PECM.LE.PM3.OR.0.5D0*X4*PECM.LE.PM4)
59613      &MKERR=1
59614       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
59615       PA2=SQRT(MAX(1D-10,(0.5D0*X2*PECM)**2-PM2**2))
59616       PA4=SQRT(MAX(1D-10,(0.5D0*X4*PECM)**2-PM4**2))
59617       X24=X1+X2+X4-1D0-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2
59618       CTHE4=(X1*X4-2D0*X14)*PECM**2/(4D0*PA1*PA4)
59619       IF(ABS(CTHE4).GE.1.002D0) MKERR=1
59620       CTHE4=MAX(-1D0,MIN(1D0,CTHE4))
59621       STHE4=SQRT(1D0-CTHE4**2)
59622       CTHE2=(X1*X2-2D0*X12)*PECM**2/(4D0*PA1*PA2)
59623       IF(ABS(CTHE2).GE.1.002D0) MKERR=1
59624       CTHE2=MAX(-1D0,MIN(1D0,CTHE2))
59625       STHE2=SQRT(1D0-CTHE2**2)
59626       CPHI2=((X2*X4-2D0*X24)*PECM**2-4D0*PA2*CTHE2*PA4*CTHE4)/
59627      &MAX(1D-8*PECM**2,4D0*PA2*STHE2*PA4*STHE4)
59628       IF(ABS(CPHI2).GE.1.05D0) MKERR=1
59629       CPHI2=MAX(-1D0,MIN(1D0,CPHI2))
59630       IF(MKERR.EQ.1) CALL PYERRM(13,
59631      &'(PY4ENT:) unphysical kinematical variable setup')
59632  
59633 C...Store partons/particles in P vectors.
59634       P(IPA,3)=PA1
59635       P(IPA,4)=SQRT(PA1**2+PM1**2)
59636       P(IPA,5)=PM1
59637       P(IPA+3,1)=PA4*STHE4
59638       P(IPA+3,3)=PA4*CTHE4
59639       P(IPA+3,4)=SQRT(PA4**2+PM4**2)
59640       P(IPA+3,5)=PM4
59641       P(IPA+1,1)=PA2*STHE2*CPHI2
59642       P(IPA+1,2)=PA2*STHE2*SQRT(1D0-CPHI2**2)*(-1D0)**INT(PYR(0)+0.5D0)
59643       P(IPA+1,3)=PA2*CTHE2
59644       P(IPA+1,4)=SQRT(PA2**2+PM2**2)
59645       P(IPA+1,5)=PM2
59646       P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1)
59647       P(IPA+2,2)=-P(IPA+1,2)
59648       P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3)
59649       P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2)
59650       P(IPA+2,5)=PM3
59651  
59652 C...Set N. Optionally fragment/decay.
59653       N=IPA+3
59654       IF(IP.EQ.0) CALL PYEXEC
59655  
59656       RETURN
59657       END
59658  
59659 C*********************************************************************
59660  
59661 C...PY2FRM
59662 C...An interface from a two-fermion generator to include
59663 C...parton showers and hadronization.
59664  
59665       SUBROUTINE PY2FRM(IRAD,ITAU,ICOM)
59666  
59667 C...Double precision and integer declarations.
59668       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59669       IMPLICIT INTEGER(I-N)
59670       INTEGER PYK,PYCHGE,PYCOMP
59671 C...Commonblocks.
59672       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
59673       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59674       SAVE /PYJETS/,/PYDAT1/
59675 C...Local arrays.
59676       DIMENSION IJOIN(2),INTAU(2)
59677  
59678 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
59679       IF(ICOM.EQ.0) THEN
59680         MSTU(28)=0
59681         CALL PYHEPC(2)
59682       ENDIF
59683  
59684 C...Loop through entries and pick up all final fermions/antifermions.
59685       I1=0
59686       I2=0
59687       DO 100 I=1,N
59688       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
59689       KFA=IABS(K(I,2))
59690       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
59691         IF(K(I,2).GT.0) THEN
59692           IF(I1.EQ.0) THEN
59693             I1=I
59694           ELSE
59695             CALL PYERRM(16,'(PY2FRM:) more than one fermion')
59696           ENDIF
59697         ELSE
59698           IF(I2.EQ.0) THEN
59699             I2=I
59700           ELSE
59701             CALL PYERRM(16,'(PY2FRM:) more than one antifermion')
59702           ENDIF
59703         ENDIF
59704       ENDIF
59705   100 CONTINUE
59706  
59707 C...Check that event is arranged according to conventions.
59708       IF(I1.EQ.0.OR.I2.EQ.0) THEN
59709         CALL PYERRM(16,'(PY2FRM:) event contains too few fermions')
59710       ENDIF
59711       IF(I2.LT.I1) THEN
59712         CALL PYERRM(6,'(PY2FRM:) fermions arranged in wrong order')
59713       ENDIF
59714  
59715 C...Check whether fermion pair is quarks or leptons.
59716       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
59717         IQL12=1
59718       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
59719         IQL12=2
59720       ELSE
59721         CALL PYERRM(16,'(PY2FRM:) fermion pair inconsistent')
59722       ENDIF
59723  
59724 C...Decide whether to allow or not photon radiation in showers.
59725       MSTJ(41)=2
59726       IF(IRAD.EQ.0) MSTJ(41)=1
59727  
59728 C...Do colour joining and parton showers.
59729       IP1=I1
59730       IP2=I2
59731       IF(IQL12.EQ.1) THEN
59732         IJOIN(1)=IP1
59733         IJOIN(2)=IP2
59734         CALL PYJOIN(2,IJOIN)
59735       ENDIF
59736       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
59737         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
59738      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
59739         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
59740       ENDIF
59741  
59742 C...Do fragmentation and decays. Possibly except tau decay.
59743       IF(ITAU.EQ.0) THEN
59744         NTAU=0
59745         DO 110 I=1,N
59746         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
59747           NTAU=NTAU+1
59748           INTAU(NTAU)=I
59749           K(I,1)=11
59750         ENDIF
59751   110   CONTINUE
59752       ENDIF
59753       CALL PYEXEC
59754       IF(ITAU.EQ.0) THEN
59755         DO 120 I=1,NTAU
59756         K(INTAU(I),1)=1
59757   120   CONTINUE
59758       ENDIF
59759  
59760 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
59761       IF(ICOM.EQ.0) THEN
59762         MSTU(28)=0
59763         CALL PYHEPC(1)
59764       ENDIF
59765  
59766       END
59767  
59768 C*********************************************************************
59769  
59770 C...PY4FRM
59771 C...An interface from a four-fermion generator to include
59772 C...parton showers and hadronization.
59773  
59774       SUBROUTINE PY4FRM(ATOTSQ,A1SQ,A2SQ,ISTRAT,IRAD,ITAU,ICOM)
59775  
59776 C...Double precision and integer declarations.
59777       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59778       IMPLICIT INTEGER(I-N)
59779       INTEGER PYK,PYCHGE,PYCOMP
59780 C...Commonblocks.
59781       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
59782       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59783       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
59784       COMMON/PYINT1/MINT(400),VINT(400)
59785       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
59786 C...Local arrays.
59787       DIMENSION IJOIN(2),INTAU(4)
59788  
59789 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
59790       IF(ICOM.EQ.0) THEN
59791         MSTU(28)=0
59792         CALL PYHEPC(2)
59793       ENDIF
59794  
59795 C...Loop through entries and pick up all final fermions/antifermions.
59796       I1=0
59797       I2=0
59798       I3=0
59799       I4=0
59800       DO 100 I=1,N
59801       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
59802       KFA=IABS(K(I,2))
59803       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
59804         IF(K(I,2).GT.0) THEN
59805           IF(I1.EQ.0) THEN
59806             I1=I
59807           ELSEIF(I3.EQ.0) THEN
59808             I3=I
59809           ELSE
59810             CALL PYERRM(16,'(PY4FRM:) more than two fermions')
59811           ENDIF
59812         ELSE
59813           IF(I2.EQ.0) THEN
59814             I2=I
59815           ELSEIF(I4.EQ.0) THEN
59816             I4=I
59817           ELSE
59818             CALL PYERRM(16,'(PY4FRM:) more than two antifermions')
59819           ENDIF
59820         ENDIF
59821       ENDIF
59822   100 CONTINUE
59823  
59824 C...Check that event is arranged according to conventions.
59825       IF(I3.EQ.0.OR.I4.EQ.0) THEN
59826         CALL PYERRM(16,'(PY4FRM:) event contains too few fermions')
59827       ENDIF
59828       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
59829         CALL PYERRM(6,'(PY4FRM:) fermions arranged in wrong order')
59830       ENDIF
59831  
59832 C...Check which fermion pairs are quarks and which leptons.
59833       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
59834         IQL12=1
59835       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
59836         IQL12=2
59837       ELSE
59838         CALL PYERRM(16,'(PY4FRM:) first fermion pair inconsistent')
59839       ENDIF
59840       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
59841         IQL34=1
59842       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
59843         IQL34=2
59844       ELSE
59845         CALL PYERRM(16,'(PY4FRM:) second fermion pair inconsistent')
59846       ENDIF
59847  
59848 C...Decide whether to allow or not photon radiation in showers.
59849       MSTJ(41)=2
59850       IF(IRAD.EQ.0) MSTJ(41)=1
59851  
59852 C...Decide on dipole pairing.
59853       IP1=I1
59854       IP2=I2
59855       IP3=I3
59856       IP4=I4
59857       IF(IQL12.EQ.IQL34) THEN
59858         R1SQ=A1SQ
59859         R2SQ=A2SQ
59860         DELTA=ATOTSQ-A1SQ-A2SQ
59861         IF(ISTRAT.EQ.1) THEN
59862           IF(DELTA.GT.0D0) R1SQ=R1SQ+DELTA
59863           IF(DELTA.LT.0D0) R2SQ=MAX(0D0,R2SQ+DELTA)
59864         ELSEIF(ISTRAT.EQ.2) THEN
59865           IF(DELTA.GT.0D0) R2SQ=R2SQ+DELTA
59866           IF(DELTA.LT.0D0) R1SQ=MAX(0D0,R1SQ+DELTA)
59867         ENDIF
59868         IF(R2SQ.GT.PYR(0)*(R1SQ+R2SQ)) THEN
59869           IP2=I4
59870           IP4=I2
59871         ENDIF
59872       ENDIF
59873  
59874 C...If colour reconnection then bookkeep W+W- or Z0Z0
59875 C...and copy q qbar q qbar consecutively.
59876       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
59877         K(N+1,1)=11
59878         K(N+1,3)=IP1
59879         K(N+1,4)=N+3
59880         K(N+1,5)=N+4
59881         K(N+2,1)=11
59882         K(N+2,3)=IP3
59883         K(N+2,4)=N+5
59884         K(N+2,5)=N+6
59885         IF(K(IP1,2)+K(IP2,2).EQ.0) THEN
59886           K(N+1,2)=23
59887           K(N+2,2)=23
59888           MINT(1)=22
59889         ELSEIF(PYCHGE(K(IP1,2)).GT.0) THEN
59890           K(N+1,2)=24
59891           K(N+2,2)=-24
59892           MINT(1)=25
59893         ELSE
59894           K(N+1,2)=-24
59895           K(N+2,2)=24
59896           MINT(1)=25
59897         ENDIF
59898         DO 110 J=1,5
59899           K(N+3,J)=K(IP1,J)
59900           K(N+4,J)=K(IP2,J)
59901           K(N+5,J)=K(IP3,J)
59902           K(N+6,J)=K(IP4,J)
59903           P(N+1,J)=P(IP1,J)+P(IP2,J)
59904           P(N+2,J)=P(IP3,J)+P(IP4,J)
59905           P(N+3,J)=P(IP1,J)
59906           P(N+4,J)=P(IP2,J)
59907           P(N+5,J)=P(IP3,J)
59908           P(N+6,J)=P(IP4,J)
59909           V(N+1,J)=V(IP1,J)
59910           V(N+2,J)=V(IP3,J)
59911           V(N+3,J)=V(IP1,J)
59912           V(N+4,J)=V(IP2,J)
59913           V(N+5,J)=V(IP3,J)
59914           V(N+6,J)=V(IP4,J)
59915   110   CONTINUE
59916         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
59917      &  P(N+1,3)**2))
59918         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
59919      &  P(N+2,3)**2))
59920         K(N+3,3)=N+1
59921         K(N+4,3)=N+1
59922         K(N+5,3)=N+2
59923         K(N+6,3)=N+2
59924 C...Remove original q qbar q qbar and update counters.
59925         K(IP1,1)=K(IP1,1)+10
59926         K(IP2,1)=K(IP2,1)+10
59927         K(IP3,1)=K(IP3,1)+10
59928         K(IP4,1)=K(IP4,1)+10
59929         IW1=N+1
59930         IW2=N+2
59931         NSD1=N+2
59932         IP1=N+3
59933         IP2=N+4
59934         IP3=N+5
59935         IP4=N+6
59936         N=N+6
59937       ENDIF
59938  
59939 C...Do colour joinings and parton showers.
59940       IF(IQL12.EQ.1) THEN
59941         IJOIN(1)=IP1
59942         IJOIN(2)=IP2
59943         CALL PYJOIN(2,IJOIN)
59944       ENDIF
59945       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
59946         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
59947      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
59948         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
59949       ENDIF
59950       NAFT1=N
59951       IF(IQL34.EQ.1) THEN
59952         IJOIN(1)=IP3
59953         IJOIN(2)=IP4
59954         CALL PYJOIN(2,IJOIN)
59955       ENDIF
59956       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
59957         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
59958      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
59959         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
59960       ENDIF
59961  
59962 C...Optionally do colour reconnection.
59963       MINT(32)=0
59964       MSTI(32)=0
59965       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
59966         CALL PYRECO(IW1,IW2,NSD1,NAFT1)
59967         MSTI(32)=MINT(32)
59968       ENDIF
59969  
59970 C...Do fragmentation and decays. Possibly except tau decay.
59971       IF(ITAU.EQ.0) THEN
59972         NTAU=0
59973         DO 120 I=1,N
59974         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
59975           NTAU=NTAU+1
59976           INTAU(NTAU)=I
59977           K(I,1)=11
59978         ENDIF
59979   120   CONTINUE
59980       ENDIF
59981       CALL PYEXEC
59982       IF(ITAU.EQ.0) THEN
59983         DO 130 I=1,NTAU
59984         K(INTAU(I),1)=1
59985   130   CONTINUE
59986       ENDIF
59987  
59988 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
59989       IF(ICOM.EQ.0) THEN
59990         MSTU(28)=0
59991         CALL PYHEPC(1)
59992       ENDIF
59993  
59994       END
59995  
59996 C*********************************************************************
59997  
59998 C...PY6FRM
59999 C...An interface from a six-fermion generator to include
60000 C...parton showers and hadronization.
60001  
60002       SUBROUTINE PY6FRM(P12,P13,P21,P23,P31,P32,PTOP,IRAD,ITAU,ICOM)
60003  
60004 C...Double precision and integer declarations.
60005       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60006       IMPLICIT INTEGER(I-N)
60007       INTEGER PYK,PYCHGE,PYCOMP
60008 C...Commonblocks.
60009       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
60010       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60011       SAVE /PYJETS/,/PYDAT1/
60012 C...Local arrays.
60013       DIMENSION IJOIN(2),INTAU(6),BETA(3),BETAO(3),BETAN(3)
60014  
60015 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
60016       IF(ICOM.EQ.0) THEN
60017         MSTU(28)=0
60018         CALL PYHEPC(2)
60019       ENDIF
60020  
60021 C...Loop through entries and pick up all final fermions/antifermions.
60022       I1=0
60023       I2=0
60024       I3=0
60025       I4=0
60026       I5=0
60027       I6=0
60028       DO 100 I=1,N
60029       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
60030       KFA=IABS(K(I,2))
60031       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
60032         IF(K(I,2).GT.0) THEN
60033           IF(I1.EQ.0) THEN
60034             I1=I
60035           ELSEIF(I3.EQ.0) THEN
60036             I3=I
60037           ELSEIF(I5.EQ.0) THEN
60038             I5=I
60039           ELSE
60040             CALL PYERRM(16,'(PY6FRM:) more than three fermions')
60041           ENDIF
60042         ELSE
60043           IF(I2.EQ.0) THEN
60044             I2=I
60045           ELSEIF(I4.EQ.0) THEN
60046             I4=I
60047           ELSEIF(I6.EQ.0) THEN
60048             I6=I
60049           ELSE
60050             CALL PYERRM(16,'(PY6FRM:) more than three antifermions')
60051           ENDIF
60052         ENDIF
60053       ENDIF
60054   100 CONTINUE
60055  
60056 C...Check that event is arranged according to conventions.
60057       IF(I5.EQ.0.OR.I6.EQ.0) THEN
60058         CALL PYERRM(16,'(PY6FRM:) event contains too few fermions')
60059       ENDIF
60060       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3.OR.I5.LT.I4.OR.I6.LT.I5) THEN
60061         CALL PYERRM(6,'(PY6FRM:) fermions arranged in wrong order')
60062       ENDIF
60063  
60064 C...Check which fermion pairs are quarks and which leptons.
60065       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
60066         IQL12=1
60067       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
60068         IQL12=2
60069       ELSE
60070         CALL PYERRM(16,'(PY6FRM:) first fermion pair inconsistent')
60071       ENDIF
60072       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
60073         IQL34=1
60074       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
60075         IQL34=2
60076       ELSE
60077         CALL PYERRM(16,'(PY6FRM:) second fermion pair inconsistent')
60078       ENDIF
60079       IF(IABS(K(I5,2)).LT.10.AND.IABS(K(I6,2)).LT.10) THEN
60080         IQL56=1
60081       ELSEIF(IABS(K(I5,2)).GT.10.AND.IABS(K(I6,2)).GT.10) THEN
60082         IQL56=2
60083       ELSE
60084         CALL PYERRM(16,'(PY6FRM:) third fermion pair inconsistent')
60085       ENDIF
60086  
60087 C...Decide whether to allow or not photon radiation in showers.
60088       MSTJ(41)=2
60089       IF(IRAD.EQ.0) MSTJ(41)=1
60090  
60091 C...Allow dipole pairings only among leptons and quarks separately.
60092       P12D=P12
60093       P13D=0D0
60094       IF(IQL34.EQ.IQL56) P13D=P13
60095       P21D=0D0
60096       IF(IQL12.EQ.IQL34) P21D=P21
60097       P23D=0D0
60098       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P23D=P23
60099       P31D=0D0
60100       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P31D=P31
60101       P32D=0D0
60102       IF(IQL12.EQ.IQL56) P32D=P32
60103  
60104 C...Decide whether t+tbar.
60105       ITOP=0
60106       IF(PYR(0).LT.PTOP) THEN
60107         ITOP=1
60108  
60109 C...If t+tbar: reconstruct t's.
60110         IT=N+1
60111         ITB=N+2
60112         DO 110 J=1,5
60113           K(IT,J)=0
60114           K(ITB,J)=0
60115           P(IT,J)=P(I1,J)+P(I3,J)+P(I4,J)
60116           P(ITB,J)=P(I2,J)+P(I5,J)+P(I6,J)
60117           V(IT,J)=0D0
60118           V(ITB,J)=0D0
60119   110   CONTINUE
60120         K(IT,1)=1
60121         K(ITB,1)=1
60122         K(IT,2)=6
60123         K(ITB,2)=-6
60124         P(IT,5)=SQRT(MAX(0D0,P(IT,4)**2-P(IT,1)**2-P(IT,2)**2-
60125      &  P(IT,3)**2))
60126         P(ITB,5)=SQRT(MAX(0D0,P(ITB,4)**2-P(ITB,1)**2-P(ITB,2)**2-
60127      &  P(ITB,3)**2))
60128         N=N+2
60129  
60130 C...If t+tbar: colour join t's and let them shower.
60131         IJOIN(1)=IT
60132         IJOIN(2)=ITB
60133         CALL PYJOIN(2,IJOIN)
60134         PMTTS=(P(IT,4)+P(ITB,4))**2-(P(IT,1)+P(ITB,1))**2-
60135      &  (P(IT,2)+P(ITB,2))**2-(P(IT,3)+P(ITB,3))**2
60136         CALL PYSHOW(IT,ITB,SQRT(MAX(0D0,PMTTS)))
60137  
60138 C...If t+tbar: pick up the t's after shower.
60139         ITNEW=IT
60140         ITBNEW=ITB
60141         DO 120 I=ITB+1,N
60142           IF(K(I,2).EQ.6) ITNEW=I
60143           IF(K(I,2).EQ.-6) ITBNEW=I
60144   120   CONTINUE
60145  
60146 C...If t+tbar: loop over two top systems.
60147         DO 200 IT1=1,2
60148           IF(IT1.EQ.1) THEN
60149             ITO=IT
60150             ITN=ITNEW
60151             IBO=I1
60152             IW1=I3
60153             IW2=I4
60154           ELSE
60155             ITO=ITB
60156             ITN=ITBNEW
60157             IBO=I2
60158             IW1=I5
60159             IW2=I6
60160           ENDIF
60161           IF(IABS(K(IBO,2)).NE.5) CALL PYERRM(6,
60162      &    '(PY6FRM:) not b in t decay')
60163  
60164 C...If t+tbar: find boost from original to new top frame.
60165           DO 130 J=1,3
60166             BETAO(J)=P(ITO,J)/P(ITO,4)
60167             BETAN(J)=P(ITN,J)/P(ITN,4)
60168   130     CONTINUE
60169  
60170 C...If t+tbar: boost copy of b by t shower and connect it in colour.
60171           N=N+1
60172           IB=N
60173           K(IB,1)=3
60174           K(IB,2)=K(IBO,2)
60175           K(IB,3)=ITN
60176           DO 140 J=1,5
60177             P(IB,J)=P(IBO,J)
60178             V(IB,J)=0D0
60179   140     CONTINUE
60180           CALL PYROBO(IB,IB,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
60181           CALL PYROBO(IB,IB,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
60182           K(IB,4)=MSTU(5)*ITN
60183           K(IB,5)=MSTU(5)*ITN
60184           K(ITN,4)=K(ITN,4)+IB
60185           K(ITN,5)=K(ITN,5)+IB
60186           K(ITN,1)=K(ITN,1)+10
60187           K(IBO,1)=K(IBO,1)+10
60188  
60189 C...If t+tbar: construct W recoiling against b.
60190           N=N+1
60191           IW=N
60192           DO 150 J=1,5
60193             K(IW,J)=0
60194             V(IW,J)=0D0
60195   150     CONTINUE
60196           K(IW,1)=1
60197           KCHW=PYCHGE(K(IW1,2))+PYCHGE(K(IW2,2))
60198           IF(IABS(KCHW).EQ.3) THEN
60199             K(IW,2)=ISIGN(24,KCHW)
60200           ELSE
60201             CALL PYERRM(16,'(PY6FRM:) fermion pair inconsistent with W')
60202           ENDIF
60203           K(IW,3)=IW1
60204  
60205 C...If t+tbar: construct W momentum, including boost by t shower.
60206           DO 160 J=1,4
60207             P(IW,J)=P(IW1,J)+P(IW2,J)
60208   160     CONTINUE
60209           P(IW,5)=SQRT(MAX(0D0,P(IW,4)**2-P(IW,1)**2-P(IW,2)**2-
60210      &    P(IW,3)**2))
60211           CALL PYROBO(IW,IW,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
60212           CALL PYROBO(IW,IW,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
60213  
60214 C...If t+tbar: boost b and W to top rest frame.
60215           DO 170 J=1,3
60216             BETA(J)=(P(IB,J)+P(IW,J))/(P(IB,4)+P(IW,4))
60217   170     CONTINUE
60218           CALL PYROBO(IB,IB,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
60219           CALL PYROBO(IW,IW,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
60220  
60221 C...If t+tbar: let b shower and pick up modified W.
60222           PMTS=(P(IB,4)+P(IW,4))**2-(P(IB,1)+P(IW,1))**2-
60223      &    (P(IB,2)+P(IW,2))**2-(P(IB,3)+P(IW,3))**2
60224           CALL PYSHOW(IB,IW,SQRT(MAX(0D0,PMTS)))
60225           DO 180 I=IW,N
60226             IF(IABS(K(I,2)).EQ.24) IWM=I
60227   180     CONTINUE
60228  
60229 C...If t+tbar: take copy of W decay products.
60230           DO 190 J=1,5
60231             K(N+1,J)=K(IW1,J)
60232             P(N+1,J)=P(IW1,J)
60233             V(N+1,J)=V(IW1,J)
60234             K(N+2,J)=K(IW2,J)
60235             P(N+2,J)=P(IW2,J)
60236             V(N+2,J)=V(IW2,J)
60237   190     CONTINUE
60238           K(IW1,1)=K(IW1,1)+10
60239           K(IW2,1)=K(IW2,1)+10
60240           K(IWM,1)=K(IWM,1)+10
60241           K(IWM,4)=N+1
60242           K(IWM,5)=N+2
60243           K(N+1,3)=IWM
60244           K(N+2,3)=IWM
60245           IF(IT1.EQ.1) THEN
60246             I3=N+1
60247             I4=N+2
60248           ELSE
60249             I5=N+1
60250             I6=N+2
60251           ENDIF
60252           N=N+2
60253  
60254 C...If t+tbar: boost W decay products, first by effects of t shower,
60255 C...then by those of b shower. b and its shower simple boost back.
60256           CALL PYROBO(N-1,N,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
60257           CALL PYROBO(N-1,N,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
60258           CALL PYROBO(N-1,N,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
60259           CALL PYROBO(N-1,N,0D0,0D0,-P(IW,1)/P(IW,4),
60260      &    -P(IW,2)/P(IW,4),-P(IW,3)/P(IW,4))
60261           CALL PYROBO(N-1,N,0D0,0D0,P(IWM,1)/P(IWM,4),
60262      &    P(IWM,2)/P(IWM,4),P(IWM,3)/P(IWM,4))
60263           CALL PYROBO(IB,IB,0D0,0D0,BETA(1),BETA(2),BETA(3))
60264           CALL PYROBO(IW,N,0D0,0D0,BETA(1),BETA(2),BETA(3))
60265   200   CONTINUE
60266       ENDIF
60267  
60268 C...Decide on dipole pairing.
60269       IP1=I1
60270       IP3=I3
60271       IP5=I5
60272       PRN=PYR(0)*(P12D+P13D+P21D+P23D+P31D+P32D)
60273       IF(ITOP.EQ.1.OR.PRN.LT.P12D) THEN
60274         IP2=I2
60275         IP4=I4
60276         IP6=I6
60277       ELSEIF(PRN.LT.P12D+P13D) THEN
60278         IP2=I2
60279         IP4=I6
60280         IP6=I4
60281       ELSEIF(PRN.LT.P12D+P13D+P21D) THEN
60282         IP2=I4
60283         IP4=I2
60284         IP6=I6
60285       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D) THEN
60286         IP2=I4
60287         IP4=I6
60288         IP6=I2
60289       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D+P31D) THEN
60290         IP2=I6
60291         IP4=I2
60292         IP6=I4
60293       ELSE
60294         IP2=I6
60295         IP4=I4
60296         IP6=I2
60297       ENDIF
60298  
60299 C...Do colour joinings and parton showers
60300 C...(except ones already made for t+tbar).
60301       IF(ITOP.EQ.0) THEN
60302         IF(IQL12.EQ.1) THEN
60303           IJOIN(1)=IP1
60304           IJOIN(2)=IP2
60305           CALL PYJOIN(2,IJOIN)
60306         ENDIF
60307         IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
60308           PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
60309      &    (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
60310           CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
60311         ENDIF
60312       ENDIF
60313       IF(IQL34.EQ.1) THEN
60314         IJOIN(1)=IP3
60315         IJOIN(2)=IP4
60316         CALL PYJOIN(2,IJOIN)
60317       ENDIF
60318       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
60319         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
60320      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
60321         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
60322       ENDIF
60323       IF(IQL56.EQ.1) THEN
60324         IJOIN(1)=IP5
60325         IJOIN(2)=IP6
60326         CALL PYJOIN(2,IJOIN)
60327       ENDIF
60328       IF(IQL56.EQ.1.OR.IRAD.EQ.1) THEN
60329         PM56S=(P(IP5,4)+P(IP6,4))**2-(P(IP5,1)+P(IP6,1))**2-
60330      &  (P(IP5,2)+P(IP6,2))**2-(P(IP5,3)+P(IP6,3))**2
60331         CALL PYSHOW(IP5,IP6,SQRT(MAX(0D0,PM56S)))
60332       ENDIF
60333  
60334 C...Do fragmentation and decays. Possibly except tau decay.
60335       IF(ITAU.EQ.0) THEN
60336         NTAU=0
60337         DO 210 I=1,N
60338         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
60339           NTAU=NTAU+1
60340           INTAU(NTAU)=I
60341           K(I,1)=11
60342         ENDIF
60343   210   CONTINUE
60344       ENDIF
60345       CALL PYEXEC
60346       IF(ITAU.EQ.0) THEN
60347         DO 220 I=1,NTAU
60348         K(INTAU(I),1)=1
60349   220   CONTINUE
60350       ENDIF
60351  
60352 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
60353       IF(ICOM.EQ.0) THEN
60354         MSTU(28)=0
60355         CALL PYHEPC(1)
60356       ENDIF
60357  
60358       END
60359  
60360 C*********************************************************************
60361  
60362 C...PY4JET
60363 C...An interface from a four-parton generator to include
60364 C...parton showers and hadronization.
60365  
60366       SUBROUTINE PY4JET(PMAX,IRAD,ICOM)
60367  
60368 C...Double precision and integer declarations.
60369       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60370       IMPLICIT INTEGER(I-N)
60371       INTEGER PYK,PYCHGE,PYCOMP
60372 C...Commonblocks.
60373       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
60374       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60375       SAVE /PYJETS/,/PYDAT1/
60376 C...Local arrays.
60377       DIMENSION IJOIN(2),PTOT(4),BETA(3)
60378  
60379 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
60380       IF(ICOM.EQ.0) THEN
60381         MSTU(28)=0
60382         CALL PYHEPC(2)
60383       ENDIF
60384  
60385 C...Loop through entries and pick up all final partons.
60386       I1=0
60387       I2=0
60388       I3=0
60389       I4=0
60390       DO 100 I=1,N
60391       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
60392       KFA=IABS(K(I,2))
60393       IF((KFA.GE.1.AND.KFA.LE.6).OR.KFA.EQ.21) THEN
60394         IF(K(I,2).GT.0.AND.K(I,2).LE.6) THEN
60395           IF(I1.EQ.0) THEN
60396             I1=I
60397           ELSEIF(I3.EQ.0) THEN
60398             I3=I
60399           ELSE
60400             CALL PYERRM(16,'(PY4JET:) more than two quarks')
60401           ENDIF
60402         ELSEIF(K(I,2).LT.0) THEN
60403           IF(I2.EQ.0) THEN
60404             I2=I
60405           ELSEIF(I4.EQ.0) THEN
60406             I4=I
60407           ELSE
60408             CALL PYERRM(16,'(PY4JET:) more than two antiquarks')
60409           ENDIF
60410         ELSE
60411           IF(I3.EQ.0) THEN
60412             I3=I
60413           ELSEIF(I4.EQ.0) THEN
60414             I4=I
60415           ELSE
60416             CALL PYERRM(16,'(PY4JET:) more than two gluons')
60417           ENDIF
60418         ENDIF
60419       ENDIF
60420   100 CONTINUE
60421  
60422 C...Check that event is arranged according to conventions.
60423       IF(I1.EQ.0.OR.I2.EQ.0.OR.I3.EQ.0.OR.I4.EQ.0) THEN
60424         CALL PYERRM(16,'(PY4JET:) event contains too few partons')
60425       ENDIF
60426       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
60427         CALL PYERRM(6,'(PY4JET:) partons arranged in wrong order')
60428       ENDIF
60429  
60430 C...Check whether second pair are quarks or gluons.
60431       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
60432         IQG34=1
60433       ELSEIF(K(I3,2).EQ.21.AND.K(I4,2).EQ.21) THEN
60434         IQG34=2
60435       ELSE
60436         CALL PYERRM(16,'(PY4JET:) second parton pair inconsistent')
60437       ENDIF
60438  
60439 C...Boost partons to their cm frame.
60440       DO 110 J=1,4
60441         PTOT(J)=P(I1,J)+P(I2,J)+P(I3,J)+P(I4,J)
60442   110 CONTINUE
60443       ECM=SQRT(MAX(0D0,PTOT(4)**2-PTOT(1)**2-PTOT(2)**2-PTOT(3)**2))
60444       DO 120 J=1,3
60445         BETA(J)=PTOT(J)/PTOT(4)
60446   120 CONTINUE
60447       CALL PYROBO(I1,I1,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
60448       CALL PYROBO(I2,I2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
60449       CALL PYROBO(I3,I3,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
60450       CALL PYROBO(I4,I4,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
60451       NSAV=N
60452  
60453 C...Decide and set up shower history for q qbar q' qbar' events.
60454       IF(IQG34.EQ.1) THEN
60455         W1=PY4JTW(0,I1,I3,I4)
60456         W2=PY4JTW(0,I2,I3,I4)
60457         IF(W1.GT.PYR(0)*(W1+W2)) THEN
60458           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
60459         ELSE
60460           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
60461         ENDIF
60462  
60463 C...Decide and set up shower history for q qbar g g events.
60464       ELSE
60465         W1=PY4JTW(I1,I3,I2,I4)
60466         W2=PY4JTW(I1,I4,I2,I3)
60467         W3=PY4JTW(0,I3,I1,I4)
60468         W4=PY4JTW(0,I4,I1,I3)
60469         W5=PY4JTW(0,I3,I2,I4)
60470         W6=PY4JTW(0,I4,I2,I3)
60471         W7=PY4JTW(0,I1,I3,I4)
60472         W8=PY4JTW(0,I2,I3,I4)
60473         WR=(W1+W2+W3+W4+W5+W6+W7+W8)*PYR(0)
60474         IF(W1.GT.WR) THEN
60475           CALL PY4JTS(I1,I3,I2,I4,0,QMAX)
60476         ELSEIF(W1+W2.GT.WR) THEN
60477           CALL PY4JTS(I1,I4,I2,I3,0,QMAX)
60478         ELSEIF(W1+W2+W3.GT.WR) THEN
60479           CALL PY4JTS(0,I3,I1,I4,I2,QMAX)
60480         ELSEIF(W1+W2+W3+W4.GT.WR) THEN
60481           CALL PY4JTS(0,I4,I1,I3,I2,QMAX)
60482         ELSEIF(W1+W2+W3+W4+W5.GT.WR) THEN
60483           CALL PY4JTS(0,I3,I2,I4,I1,QMAX)
60484         ELSEIF(W1+W2+W3+W4+W5+W6.GT.WR) THEN
60485           CALL PY4JTS(0,I4,I2,I3,I1,QMAX)
60486         ELSEIF(W1+W2+W3+W4+W5+W6+W7.GT.WR) THEN
60487           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
60488         ELSE
60489           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
60490         ENDIF
60491       ENDIF
60492  
60493 C...Boost back original partons and mark them as deleted.
60494       CALL PYROBO(I1,I1,0D0,0D0,BETA(1),BETA(2),BETA(3))
60495       CALL PYROBO(I2,I2,0D0,0D0,BETA(1),BETA(2),BETA(3))
60496       CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
60497       CALL PYROBO(I4,I4,0D0,0D0,BETA(1),BETA(2),BETA(3))
60498       K(I1,1)=K(I1,1)+10
60499       K(I2,1)=K(I2,1)+10
60500       K(I3,1)=K(I3,1)+10
60501       K(I4,1)=K(I4,1)+10
60502  
60503 C...Rotate shower initiating partons to be along z axis.
60504       PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
60505       CALL PYROBO(NSAV+1,NSAV+6,0D0,-PHI,0D0,0D0,0D0)
60506       THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
60507       CALL PYROBO(NSAV+1,NSAV+6,-THE,0D0,0D0,0D0,0D0)
60508  
60509 C...Set up copy of shower initiating partons as on mass shell.
60510       DO 140 I=N+1,N+2
60511         DO 130 J=1,5
60512           K(I,J)=0
60513           P(I,J)=0D0
60514           V(I,J)=V(I1,J)
60515   130   CONTINUE
60516         K(I,1)=1
60517         K(I,2)=K(I-6,2)
60518   140 CONTINUE
60519       IF(K(NSAV+1,2).EQ.K(I1,2)) THEN
60520         K(N+1,3)=I1
60521         P(N+1,5)=P(I1,5)
60522         K(N+2,3)=I2
60523         P(N+2,5)=P(I2,5)
60524       ELSE
60525         K(N+1,3)=I2
60526         P(N+1,5)=P(I2,5)
60527         K(N+2,3)=I1
60528         P(N+2,5)=P(I1,5)
60529       ENDIF
60530       PABS=SQRT(MAX(0D0,(ECM**2-P(N+1,5)**2-P(N+2,5)**2)**2-
60531      &(2D0*P(N+1,5)*P(N+2,5))**2))/(2D0*ECM)
60532       P(N+1,3)=PABS
60533       P(N+1,4)=SQRT(PABS**2+P(N+1,5)**2)
60534       P(N+2,3)=-PABS
60535       P(N+2,4)=SQRT(PABS**2+P(N+2,5)**2)
60536       N=N+2
60537  
60538 C...Decide whether to allow or not photon radiation in showers.
60539 C...Connect up colours.
60540       MSTJ(41)=2
60541       IF(IRAD.EQ.0) MSTJ(41)=1
60542       IJOIN(1)=N-1
60543       IJOIN(2)=N
60544       CALL PYJOIN(2,IJOIN)
60545  
60546 C...Decide on maximum virtuality and do parton shower.
60547       IF(PMAX.LT.PARJ(82)) THEN
60548         PQMAX=QMAX
60549       ELSE
60550         PQMAX=PMAX
60551       ENDIF
60552       CALL PYSHOW(NSAV+1,-100,PQMAX)
60553  
60554 C...Rotate and boost back system.
60555       CALL PYROBO(NSAV+1,N,THE,PHI,BETA(1),BETA(2),BETA(3))
60556  
60557 C...Do fragmentation and decays.
60558       CALL PYEXEC
60559  
60560 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
60561       IF(ICOM.EQ.0) THEN
60562         MSTU(28)=0
60563         CALL PYHEPC(1)
60564       ENDIF
60565  
60566       RETURN
60567       END
60568  
60569 C*********************************************************************
60570  
60571 C...PY4JTW
60572 C...Auxiliary to PY4JET, to evaluate weight of configuration.
60573  
60574       FUNCTION PY4JTW(IA1,IA2,IA3,IA4)
60575  
60576 C...Double precision and integer declarations.
60577       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60578       IMPLICIT INTEGER(I-N)
60579       INTEGER PYK,PYCHGE,PYCOMP
60580 C...Commonblocks.
60581       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
60582       SAVE /PYJETS/
60583  
60584 C...First case: when both original partons radiate.
60585 C...IA1 /= 0: N+1 -> IA1 + IA2, N+2 -> IA3 + IA4.
60586       IF(IA1.NE.0) THEN
60587         DO 100 J=1,4
60588           P(N+1,J)=P(IA1,J)+P(IA2,J)
60589           P(N+2,J)=P(IA3,J)+P(IA4,J)
60590   100   CONTINUE
60591         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
60592      &  P(N+1,3)**2))
60593         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
60594      &  P(N+2,3)**2))
60595         Z1=P(IA1,4)/P(N+1,4)
60596         WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-P(IA1,5)**2)
60597         Z2=P(IA3,4)/P(N+2,4)
60598         WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-P(IA3,5)**2)
60599  
60600 C...Second case: when one original parton radiates to three.
60601 C...IA1  = 0: N+1 -> IA2 + N+2, N+2 -> IA3 + IA4.
60602       ELSE
60603         DO 110 J=1,4
60604           P(N+2,J)=P(IA3,J)+P(IA4,J)
60605           P(N+1,J)=P(N+2,J)+P(IA2,J)
60606   110   CONTINUE
60607         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
60608      &  P(N+1,3)**2))
60609         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
60610      &  P(N+2,3)**2))
60611         IF(K(IA2,2).EQ.21) THEN
60612           Z1=P(N+2,4)/P(N+1,4)
60613           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
60614      &    P(IA3,5)**2)
60615         ELSE
60616           Z1=P(IA2,4)/P(N+1,4)
60617           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
60618      &    P(IA2,5)**2)
60619         ENDIF
60620         Z2=P(IA3,4)/P(N+2,4)
60621         IF(K(IA2,2).EQ.21) THEN
60622           WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-
60623      &    P(IA3,5)**2)
60624         ELSEIF(K(IA3,2).EQ.21) THEN
60625           WT2=3D0*((1D0-Z2*(1D0-Z2))**2/(Z2*(1D0-Z2)))/P(N+2,5)**2
60626         ELSE
60627           WT2=0.5D0*(Z2**2+(1D0-Z2)**2)
60628         ENDIF
60629       ENDIF
60630  
60631 C...Total weight.
60632       PY4JTW=WT1*WT2
60633  
60634       RETURN
60635       END
60636  
60637 C*********************************************************************
60638  
60639 C...PY4JTS
60640 C...Auxiliary to PY4JET, to set up chosen configuration.
60641  
60642       SUBROUTINE PY4JTS(IA1,IA2,IA3,IA4,IA5,QMAX)
60643  
60644 C...Double precision and integer declarations.
60645       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60646       IMPLICIT INTEGER(I-N)
60647       INTEGER PYK,PYCHGE,PYCOMP
60648 C...Commonblocks.
60649       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
60650       SAVE /PYJETS/
60651  
60652 C...Reset info.
60653       DO 110 I=N+1,N+6
60654         DO 100 J=1,5
60655           K(I,J)=0
60656           V(I,J)=V(IA2,J)
60657   100   CONTINUE
60658         K(I,1)=16
60659   110 CONTINUE
60660  
60661 C...First case: when both original partons radiate.
60662 C...N+1 -> (IA1=N+3) + (IA2=N+4), N+2 -> (IA3=N+5) + (IA4=N+6).
60663       IF(IA1.NE.0) THEN
60664  
60665 C...Set up flavour and history pointers for new partons.
60666         K(N+1,2)=K(IA1,2)
60667         K(N+2,2)=K(IA3,2)
60668         K(N+3,2)=K(IA1,2)
60669         K(N+4,2)=K(IA2,2)
60670         K(N+5,2)=K(IA3,2)
60671         K(N+6,2)=K(IA4,2)
60672         K(N+1,3)=IA1
60673         K(N+1,4)=N+3
60674         K(N+1,5)=N+4
60675         K(N+2,3)=IA3
60676         K(N+2,4)=N+5
60677         K(N+2,5)=N+6
60678         K(N+3,3)=N+1
60679         K(N+4,3)=N+1
60680         K(N+5,3)=N+2
60681         K(N+6,3)=N+2
60682  
60683 C...Set up momenta for new partons.
60684         DO 120 J=1,5
60685           P(N+1,J)=P(IA1,J)+P(IA2,J)
60686           P(N+2,J)=P(IA3,J)+P(IA4,J)
60687           P(N+3,J)=P(IA1,J)
60688           P(N+4,J)=P(IA2,J)
60689           P(N+5,J)=P(IA3,J)
60690           P(N+6,J)=P(IA4,J)
60691   120   CONTINUE
60692         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
60693      &  P(N+1,3)**2))
60694         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
60695      &  P(N+2,3)**2))
60696         QMAX=MIN(P(N+1,5),P(N+2,5))
60697  
60698 C...Second case: q radiates twice.
60699 C...N+1 -> (IA2=N+4) + N+3, N+3 -> (IA3=N+5) + (IA4=N+6),
60700 C...IA5=N+2 does not radiate.
60701       ELSEIF(K(IA2,2).EQ.21) THEN
60702  
60703 C...Set up flavour and history pointers for new partons.
60704         K(N+1,2)=K(IA3,2)
60705         K(N+2,2)=K(IA5,2)
60706         K(N+3,2)=K(IA3,2)
60707         K(N+4,2)=K(IA2,2)
60708         K(N+5,2)=K(IA3,2)
60709         K(N+6,2)=K(IA4,2)
60710         K(N+1,3)=IA3
60711         K(N+1,4)=N+3
60712         K(N+1,5)=N+4
60713         K(N+2,3)=IA5
60714         K(N+3,3)=N+1
60715         K(N+3,4)=N+5
60716         K(N+3,5)=N+6
60717         K(N+4,3)=N+1
60718         K(N+5,3)=N+3
60719         K(N+6,3)=N+3
60720  
60721 C...Set up momenta for new partons.
60722         DO 130 J=1,5
60723           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
60724           P(N+2,J)=P(IA5,J)
60725           P(N+3,J)=P(IA3,J)+P(IA4,J)
60726           P(N+4,J)=P(IA2,J)
60727           P(N+5,J)=P(IA3,J)
60728           P(N+6,J)=P(IA4,J)
60729   130   CONTINUE
60730         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
60731      &  P(N+1,3)**2))
60732         P(N+3,5)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,1)**2-P(N+3,2)**2-
60733      &  P(N+3,3)**2))
60734         QMAX=P(N+3,5)
60735  
60736 C...Third case: q radiates g, g branches.
60737 C...N+1 -> (IA2=N+3) + N+4, N+4 -> (IA3=N+5) + (IA4=N+6),
60738 C...IA5=N+2 does not radiate.
60739       ELSE
60740  
60741 C...Set up flavour and history pointers for new partons.
60742         K(N+1,2)=K(IA2,2)
60743         K(N+2,2)=K(IA5,2)
60744         K(N+3,2)=K(IA2,2)
60745         K(N+4,2)=21
60746         K(N+5,2)=K(IA3,2)
60747         K(N+6,2)=K(IA4,2)
60748         K(N+1,3)=IA2
60749         K(N+1,4)=N+3
60750         K(N+1,5)=N+4
60751         K(N+2,3)=IA5
60752         K(N+3,3)=N+1
60753         K(N+4,3)=N+1
60754         K(N+4,4)=N+5
60755         K(N+4,5)=N+6
60756         K(N+5,3)=N+4
60757         K(N+6,3)=N+4
60758  
60759 C...Set up momenta for new partons.
60760         DO 140 J=1,5
60761           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
60762           P(N+2,J)=P(IA5,J)
60763           P(N+3,J)=P(IA2,J)
60764           P(N+4,J)=P(IA3,J)+P(IA4,J)
60765           P(N+5,J)=P(IA3,J)
60766           P(N+6,J)=P(IA4,J)
60767   140   CONTINUE
60768         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
60769      &  P(N+1,3)**2))
60770         P(N+4,5)=SQRT(MAX(0D0,P(N+4,4)**2-P(N+4,1)**2-P(N+4,2)**2-
60771      &  P(N+4,3)**2))
60772         QMAX=P(N+4,5)
60773  
60774       ENDIF
60775       N=N+6
60776  
60777       RETURN
60778       END
60779  
60780 C*********************************************************************
60781  
60782 C...PYJOIN
60783 C...Connects a sequence of partons with colour flow indices,
60784 C...as required for subsequent shower evolution (or other operations).
60785  
60786       SUBROUTINE PYJOIN(NJOIN,IJOIN)
60787  
60788 C...Double precision and integer declarations.
60789       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60790       IMPLICIT INTEGER(I-N)
60791       INTEGER PYK,PYCHGE,PYCOMP
60792 C...Commonblocks.
60793       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
60794       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60795       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
60796       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
60797 C...Local array.
60798       DIMENSION IJOIN(*)
60799  
60800 C...Check that partons are of right types to be connected.
60801       IF(NJOIN.LT.2) GOTO 120
60802       KQSUM=0
60803       DO 100 IJN=1,NJOIN
60804         I=IJOIN(IJN)
60805         IF(I.LE.0.OR.I.GT.N) GOTO 120
60806         IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120
60807         KC=PYCOMP(K(I,2))
60808         IF(KC.EQ.0) GOTO 120
60809         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
60810         IF(KQ.EQ.0) GOTO 120
60811         IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120
60812         IF(KQ.NE.2) KQSUM=KQSUM+KQ
60813         IF(IJN.EQ.1) KQS=KQ
60814   100 CONTINUE
60815       IF(KQSUM.NE.0) GOTO 120
60816  
60817 C...Connect the partons sequentially (closing for gluon loop).
60818       KCS=(9-KQS)/2
60819       IF(KQS.EQ.2) KCS=INT(4.5D0+PYR(0))
60820       DO 110 IJN=1,NJOIN
60821         I=IJOIN(IJN)
60822         K(I,1)=3
60823         IF(IJN.NE.1) IP=IJOIN(IJN-1)
60824         IF(IJN.EQ.1) IP=IJOIN(NJOIN)
60825         IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1)
60826         IF(IJN.EQ.NJOIN) IN=IJOIN(1)
60827         K(I,KCS)=MSTU(5)*IN
60828         K(I,9-KCS)=MSTU(5)*IP
60829         IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0
60830         IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0
60831   110 CONTINUE
60832  
60833 C...Error exit: no action taken.
60834       RETURN
60835   120 CALL PYERRM(12,
60836      &'(PYJOIN:) given entries can not be joined by one string')
60837  
60838       RETURN
60839       END
60840  
60841 C*********************************************************************
60842  
60843 C...PYGIVE
60844 C...Sets values of commonblock variables.
60845  
60846       SUBROUTINE PYGIVE(CHIN)
60847  
60848 C...Double precision and integer declarations.
60849       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60850       IMPLICIT INTEGER(I-N)
60851       INTEGER PYK,PYCHGE,PYCOMP
60852 C...Commonblocks.
60853       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
60854       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60855       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
60856       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
60857       COMMON/PYDAT4/CHAF(500,2)
60858       CHARACTER CHAF*16
60859       COMMON/PYDATR/MRPY(6),RRPY(100)
60860       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
60861       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
60862       COMMON/PYINT1/MINT(400),VINT(400)
60863       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
60864       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
60865       COMMON/PYINT4/MWID(500),WIDS(500,5)
60866       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
60867       COMMON/PYINT6/PROC(0:500)
60868       CHARACTER PROC*28
60869       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
60870       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
60871      &XPDIR(-6:6)
60872       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
60873       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
60874       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
60875       COMMON/PYPUED/IUED(0:99),RUED(0:99)
60876       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,
60877      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,
60878      &/PYINT6/,/PYINT7/,/PYINT8/,/PYMSSM/,/PYMSRV/,/PYTCSM/,/PYPUED/
60879 C...Local arrays and character variables.
60880       CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28,
60881      &CHNEW2*28,CHNAM*6,CHVAR(56)*6,CHALP(2)*26,CHIND*8,CHINI*10,
60882      &CHINR*16,CHDIG*10
60883       DIMENSION MSVAR(56,8)
60884  
60885 C...For each variable to be translated give: name,
60886 C...integer/real/character, no. of indices, lower&upper index bounds.
60887       DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG',
60888      &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRPY',
60889      &'RRPY','MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI',
60890      &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH',
60891      &'MWID','WIDS','NGEN','XSEC','PROC','SIGT','XPVMD','XPANL',
60892      &'XPANH','XPBEH','XPDIR','IMSS','RMSS','RVLAM','RVLAMP','RVLAMB',
60893      &'ITCM','RTCM','IUED','RUED'/
60894       DATA ((MSVAR(I,J),J=1,8),I=1,56)/ 1,7*0,  1,2,1,4000,1,5,2*0,
60895      &2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0,
60896      &2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
60897      &1,2,1,500,1,4,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0,
60898      &2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,8000,1,2,2*0,
60899      &2,1,1,8000,4*0,  1,2,1,8000,1,5,2*0,  3,2,1,500,1,2,2*0,
60900      &1,1,1,6,4*0,  2,1,1,100,4*0,
60901      &1,7*0,  1,1,1,500,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0,
60902      &1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
60903      &1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,500,4*0,
60904      &1,2,1,500,1,2,2*0,  2,2,1,500,1,20,2*0,  1,3,1,40,1,4,1,2,
60905      &2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0,
60906      &1,1,1,500,4*0,   2,2,1,500,1,5,2*0,   1,2,0,500,1,3,2*0,
60907      &2,2,0,500,1,3,2*0,   4,1,0,500,4*0,   2,3,0,6,0,6,0,5,
60908      &2,1,-6,6,4*0,     2,1,-6,6,4*0,    2,1,-6,6,4*0,
60909      &2,1,-6,6,4*0,  2,1,-6,6,4*0,  1,1,0,99,4*0,  2,1,0,99,4*0,
60910      &2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,
60911      &1,1,0,99,4*0,  2,1,0,99,4*0,  1,1,0,99,4*0,  2,1,0,99,4*0/
60912       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
60913      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/, CHDIG/'1234567890'/
60914  
60915 C...Length of character variable. Subdivide it into instructions.
60916       IF(MSTU(12).NE.12345.AND.CHIN.NE.'mstu(12)=12345'.AND.
60917      &CHIN.NE.'MSTU(12)=12345') CALL PYLIST(0)
60918       CHBIT=CHIN//' '
60919       LBIT=101
60920   100 LBIT=LBIT-1
60921       IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100
60922       LTOT=0
60923       DO 110 LCOM=1,LBIT
60924         IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110
60925         LTOT=LTOT+1
60926         CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM)
60927   110 CONTINUE
60928       LLOW=0
60929   120 LHIG=LLOW+1
60930   130 LHIG=LHIG+1
60931       IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130
60932       LBIT=LHIG-LLOW-1
60933       CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1)
60934 
60935 C...Send off decay-mode on/off commands to PYONOF.
60936       IONOF=0
60937       DO 135 LDIG=1,10
60938         IF(CHBIT(1:1).EQ.CHDIG(LDIG:LDIG)) IONOF=1
60939   135 CONTINUE
60940       IF(IONOF.EQ.1) THEN
60941         CALL PYONOF(CHIN)
60942         RETURN
60943       ENDIF   
60944  
60945 C...Peel off any text following exclamation mark.
60946       LHIG2=LBIT
60947       DO 140 LLOW2=LHIG2,1,-1
60948         IF(CHBIT(LLOW2:LLOW2).EQ.'!') LBIT=LLOW2-1
60949   140 CONTINUE
60950       IF(LBIT.EQ.0) RETURN
60951  
60952 C...Identify commonblock variable.
60953       LNAM=1
60954   150 LNAM=LNAM+1
60955       IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND.
60956      &LNAM.LE.6) GOTO 150
60957       CHNAM=CHBIT(1:LNAM-1)//' '
60958       DO 170 LCOM=1,LNAM-1
60959         DO 160 LALP=1,26
60960           IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)=
60961      &    CHALP(2)(LALP:LALP)
60962   160   CONTINUE
60963   170 CONTINUE
60964       IVAR=0
60965       DO 180 IV=1,56
60966         IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV
60967   180 CONTINUE
60968       IF(IVAR.EQ.0) THEN
60969         CALL PYERRM(18,'(PYGIVE:) do not recognize variable '//CHNAM)
60970         LLOW=LHIG
60971         IF(LLOW.LT.LTOT) GOTO 120
60972         RETURN
60973       ENDIF
60974  
60975 C...Identify any indices.
60976       I1=0
60977       I2=0
60978       I3=0
60979       NINDX=0
60980       IF(CHBIT(LNAM:LNAM).EQ.'(') THEN
60981         LIND=LNAM
60982   190   LIND=LIND+1
60983         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190
60984         CHIND=' '
60985         IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c')
60986      &  .AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17.OR.
60987      &  IVAR.EQ.37)) THEN
60988           CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1)
60989           READ(CHIND,'(I8)') KF
60990           I1=PYCOMP(KF)
60991         ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.
60992      &    'c') THEN
60993           CALL PYERRM(18,'(PYGIVE:) not allowed to use C index for '//
60994      &    CHNAM)
60995           LLOW=LHIG
60996           IF(LLOW.LT.LTOT) GOTO 120
60997           RETURN
60998         ELSE
60999           CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
61000           READ(CHIND,'(I8)') I1
61001         ENDIF
61002         LNAM=LIND
61003         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
61004         NINDX=1
61005       ENDIF
61006       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
61007         LIND=LNAM
61008   200   LIND=LIND+1
61009         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200
61010         CHIND=' '
61011         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
61012         READ(CHIND,'(I8)') I2
61013         LNAM=LIND
61014         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
61015         NINDX=2
61016       ENDIF
61017       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
61018         LIND=LNAM
61019   210   LIND=LIND+1
61020         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 210
61021         CHIND=' '
61022         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
61023         READ(CHIND,'(I8)') I3
61024         LNAM=LIND+1
61025         NINDX=3
61026       ENDIF
61027  
61028 C...Check that indices allowed.
61029       IERR=0
61030       IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1
61031       IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4)))
61032      &IERR=2
61033       IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6)))
61034      &IERR=3
61035       IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8)))
61036      &IERR=4
61037       IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5
61038       IF(IERR.GE.1) THEN
61039         CALL PYERRM(18,'(PYGIVE:) unallowed indices for '//
61040      &  CHBIT(1:LNAM-1))
61041         LLOW=LHIG
61042         IF(LLOW.LT.LTOT) GOTO 120
61043         RETURN
61044       ENDIF
61045  
61046 C...Save old value of variable.
61047       IF(IVAR.EQ.1) THEN
61048         IOLD=N
61049       ELSEIF(IVAR.EQ.2) THEN
61050         IOLD=K(I1,I2)
61051       ELSEIF(IVAR.EQ.3) THEN
61052         ROLD=P(I1,I2)
61053       ELSEIF(IVAR.EQ.4) THEN
61054         ROLD=V(I1,I2)
61055       ELSEIF(IVAR.EQ.5) THEN
61056         IOLD=MSTU(I1)
61057       ELSEIF(IVAR.EQ.6) THEN
61058         ROLD=PARU(I1)
61059       ELSEIF(IVAR.EQ.7) THEN
61060         IOLD=MSTJ(I1)
61061       ELSEIF(IVAR.EQ.8) THEN
61062         ROLD=PARJ(I1)
61063       ELSEIF(IVAR.EQ.9) THEN
61064         IOLD=KCHG(I1,I2)
61065       ELSEIF(IVAR.EQ.10) THEN
61066         ROLD=PMAS(I1,I2)
61067       ELSEIF(IVAR.EQ.11) THEN
61068         ROLD=PARF(I1)
61069       ELSEIF(IVAR.EQ.12) THEN
61070         ROLD=VCKM(I1,I2)
61071       ELSEIF(IVAR.EQ.13) THEN
61072         IOLD=MDCY(I1,I2)
61073       ELSEIF(IVAR.EQ.14) THEN
61074         IOLD=MDME(I1,I2)
61075       ELSEIF(IVAR.EQ.15) THEN
61076         ROLD=BRAT(I1)
61077       ELSEIF(IVAR.EQ.16) THEN
61078         IOLD=KFDP(I1,I2)
61079       ELSEIF(IVAR.EQ.17) THEN
61080         CHOLD=CHAF(I1,I2)(1:8)
61081       ELSEIF(IVAR.EQ.18) THEN
61082         IOLD=MRPY(I1)
61083       ELSEIF(IVAR.EQ.19) THEN
61084         ROLD=RRPY(I1)
61085       ELSEIF(IVAR.EQ.20) THEN
61086         IOLD=MSEL
61087       ELSEIF(IVAR.EQ.21) THEN
61088         IOLD=MSUB(I1)
61089       ELSEIF(IVAR.EQ.22) THEN
61090         IOLD=KFIN(I1,I2)
61091       ELSEIF(IVAR.EQ.23) THEN
61092         ROLD=CKIN(I1)
61093       ELSEIF(IVAR.EQ.24) THEN
61094         IOLD=MSTP(I1)
61095       ELSEIF(IVAR.EQ.25) THEN
61096         ROLD=PARP(I1)
61097       ELSEIF(IVAR.EQ.26) THEN
61098         IOLD=MSTI(I1)
61099       ELSEIF(IVAR.EQ.27) THEN
61100         ROLD=PARI(I1)
61101       ELSEIF(IVAR.EQ.28) THEN
61102         IOLD=MINT(I1)
61103       ELSEIF(IVAR.EQ.29) THEN
61104         ROLD=VINT(I1)
61105       ELSEIF(IVAR.EQ.30) THEN
61106         IOLD=ISET(I1)
61107       ELSEIF(IVAR.EQ.31) THEN
61108         IOLD=KFPR(I1,I2)
61109       ELSEIF(IVAR.EQ.32) THEN
61110         ROLD=COEF(I1,I2)
61111       ELSEIF(IVAR.EQ.33) THEN
61112         IOLD=ICOL(I1,I2,I3)
61113       ELSEIF(IVAR.EQ.34) THEN
61114         ROLD=XSFX(I1,I2)
61115       ELSEIF(IVAR.EQ.35) THEN
61116         IOLD=ISIG(I1,I2)
61117       ELSEIF(IVAR.EQ.36) THEN
61118         ROLD=SIGH(I1)
61119       ELSEIF(IVAR.EQ.37) THEN
61120         IOLD=MWID(I1)
61121       ELSEIF(IVAR.EQ.38) THEN
61122         ROLD=WIDS(I1,I2)
61123       ELSEIF(IVAR.EQ.39) THEN
61124         IOLD=NGEN(I1,I2)
61125       ELSEIF(IVAR.EQ.40) THEN
61126         ROLD=XSEC(I1,I2)
61127       ELSEIF(IVAR.EQ.41) THEN
61128         CHOLD2=PROC(I1)
61129       ELSEIF(IVAR.EQ.42) THEN
61130         ROLD=SIGT(I1,I2,I3)
61131       ELSEIF(IVAR.EQ.43) THEN
61132         ROLD=XPVMD(I1)
61133       ELSEIF(IVAR.EQ.44) THEN
61134         ROLD=XPANL(I1)
61135       ELSEIF(IVAR.EQ.45) THEN
61136         ROLD=XPANH(I1)
61137       ELSEIF(IVAR.EQ.46) THEN
61138         ROLD=XPBEH(I1)
61139       ELSEIF(IVAR.EQ.47) THEN
61140         ROLD=XPDIR(I1)
61141       ELSEIF(IVAR.EQ.48) THEN
61142         IOLD=IMSS(I1)
61143       ELSEIF(IVAR.EQ.49) THEN
61144         ROLD=RMSS(I1)
61145       ELSEIF(IVAR.EQ.50) THEN
61146         ROLD=RVLAM(I1,I2,I3)
61147       ELSEIF(IVAR.EQ.51) THEN
61148         ROLD=RVLAMP(I1,I2,I3)
61149       ELSEIF(IVAR.EQ.52) THEN
61150         ROLD=RVLAMB(I1,I2,I3)
61151       ELSEIF(IVAR.EQ.53) THEN
61152         IOLD=ITCM(I1)
61153       ELSEIF(IVAR.EQ.54) THEN
61154         ROLD=RTCM(I1)
61155       ELSEIF(IVAR.EQ.55) THEN
61156         IOLD=IUED(I1)
61157       ELSEIF(IVAR.EQ.56) THEN
61158         ROLD=RUED(I1)
61159       ENDIF
61160  
61161 C...Print current value of variable. Loop back.
61162       IF(LNAM.GE.LBIT) THEN
61163         CHBIT(LNAM:14)=' '
61164         CHBIT(15:60)=' has the value                                '
61165         IF(MSVAR(IVAR,1).EQ.1) THEN
61166           WRITE(CHBIT(51:60),'(I10)') IOLD
61167         ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
61168           WRITE(CHBIT(47:60),'(F14.5)') ROLD
61169         ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
61170           CHBIT(53:60)=CHOLD
61171         ELSE
61172           CHBIT(33:60)=CHOLD
61173         ENDIF
61174         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
61175         LLOW=LHIG
61176         IF(LLOW.LT.LTOT) GOTO 120
61177         RETURN
61178       ENDIF
61179  
61180 C...Read in new variable value.
61181       IF(MSVAR(IVAR,1).EQ.1) THEN
61182         CHINI=' '
61183         CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT)
61184         READ(CHINI,'(I10)') INEW
61185       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
61186         CHINR=' '
61187         CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT)
61188         READ(CHINR,*) RNEW
61189       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
61190         CHNEW=CHBIT(LNAM+1:LBIT)//' '
61191       ELSE
61192         CHNEW2=CHBIT(LNAM+1:LBIT)//' '
61193       ENDIF
61194  
61195 C...Store new variable value.
61196       IF(IVAR.EQ.1) THEN
61197         N=INEW
61198       ELSEIF(IVAR.EQ.2) THEN
61199         K(I1,I2)=INEW
61200       ELSEIF(IVAR.EQ.3) THEN
61201         P(I1,I2)=RNEW
61202       ELSEIF(IVAR.EQ.4) THEN
61203         V(I1,I2)=RNEW
61204       ELSEIF(IVAR.EQ.5) THEN
61205         MSTU(I1)=INEW
61206       ELSEIF(IVAR.EQ.6) THEN
61207         PARU(I1)=RNEW
61208       ELSEIF(IVAR.EQ.7) THEN
61209         MSTJ(I1)=INEW
61210       ELSEIF(IVAR.EQ.8) THEN
61211         PARJ(I1)=RNEW
61212       ELSEIF(IVAR.EQ.9) THEN
61213         KCHG(I1,I2)=INEW
61214       ELSEIF(IVAR.EQ.10) THEN
61215         PMAS(I1,I2)=RNEW
61216       ELSEIF(IVAR.EQ.11) THEN
61217         PARF(I1)=RNEW
61218       ELSEIF(IVAR.EQ.12) THEN
61219         VCKM(I1,I2)=RNEW
61220       ELSEIF(IVAR.EQ.13) THEN
61221         MDCY(I1,I2)=INEW
61222       ELSEIF(IVAR.EQ.14) THEN
61223         MDME(I1,I2)=INEW
61224       ELSEIF(IVAR.EQ.15) THEN
61225         BRAT(I1)=RNEW
61226       ELSEIF(IVAR.EQ.16) THEN
61227         KFDP(I1,I2)=INEW
61228       ELSEIF(IVAR.EQ.17) THEN
61229         CHAF(I1,I2)=CHNEW
61230       ELSEIF(IVAR.EQ.18) THEN
61231         MRPY(I1)=INEW
61232       ELSEIF(IVAR.EQ.19) THEN
61233         RRPY(I1)=RNEW
61234       ELSEIF(IVAR.EQ.20) THEN
61235         MSEL=INEW
61236       ELSEIF(IVAR.EQ.21) THEN
61237         MSUB(I1)=INEW
61238       ELSEIF(IVAR.EQ.22) THEN
61239         KFIN(I1,I2)=INEW
61240       ELSEIF(IVAR.EQ.23) THEN
61241         CKIN(I1)=RNEW
61242       ELSEIF(IVAR.EQ.24) THEN
61243         MSTP(I1)=INEW
61244       ELSEIF(IVAR.EQ.25) THEN
61245         PARP(I1)=RNEW
61246       ELSEIF(IVAR.EQ.26) THEN
61247         MSTI(I1)=INEW
61248       ELSEIF(IVAR.EQ.27) THEN
61249         PARI(I1)=RNEW
61250       ELSEIF(IVAR.EQ.28) THEN
61251         MINT(I1)=INEW
61252       ELSEIF(IVAR.EQ.29) THEN
61253         VINT(I1)=RNEW
61254       ELSEIF(IVAR.EQ.30) THEN
61255         ISET(I1)=INEW
61256       ELSEIF(IVAR.EQ.31) THEN
61257         KFPR(I1,I2)=INEW
61258       ELSEIF(IVAR.EQ.32) THEN
61259         COEF(I1,I2)=RNEW
61260       ELSEIF(IVAR.EQ.33) THEN
61261         ICOL(I1,I2,I3)=INEW
61262       ELSEIF(IVAR.EQ.34) THEN
61263         XSFX(I1,I2)=RNEW
61264       ELSEIF(IVAR.EQ.35) THEN
61265         ISIG(I1,I2)=INEW
61266       ELSEIF(IVAR.EQ.36) THEN
61267         SIGH(I1)=RNEW
61268       ELSEIF(IVAR.EQ.37) THEN
61269         MWID(I1)=INEW
61270       ELSEIF(IVAR.EQ.38) THEN
61271         WIDS(I1,I2)=RNEW
61272       ELSEIF(IVAR.EQ.39) THEN
61273         NGEN(I1,I2)=INEW
61274       ELSEIF(IVAR.EQ.40) THEN
61275         XSEC(I1,I2)=RNEW
61276       ELSEIF(IVAR.EQ.41) THEN
61277         PROC(I1)=CHNEW2
61278       ELSEIF(IVAR.EQ.42) THEN
61279         SIGT(I1,I2,I3)=RNEW
61280       ELSEIF(IVAR.EQ.43) THEN
61281         XPVMD(I1)=RNEW
61282       ELSEIF(IVAR.EQ.44) THEN
61283         XPANL(I1)=RNEW
61284       ELSEIF(IVAR.EQ.45) THEN
61285         XPANH(I1)=RNEW
61286       ELSEIF(IVAR.EQ.46) THEN
61287         XPBEH(I1)=RNEW
61288       ELSEIF(IVAR.EQ.47) THEN
61289         XPDIR(I1)=RNEW
61290       ELSEIF(IVAR.EQ.48) THEN
61291         IMSS(I1)=INEW
61292       ELSEIF(IVAR.EQ.49) THEN
61293         RMSS(I1)=RNEW
61294       ELSEIF(IVAR.EQ.50) THEN
61295         RVLAM(I1,I2,I3)=RNEW
61296       ELSEIF(IVAR.EQ.51) THEN
61297         RVLAMP(I1,I2,I3)=RNEW
61298       ELSEIF(IVAR.EQ.52) THEN
61299         RVLAMB(I1,I2,I3)=RNEW
61300       ELSEIF(IVAR.EQ.53) THEN
61301         ITCM(I1)=INEW
61302       ELSEIF(IVAR.EQ.54) THEN
61303         RTCM(I1)=RNEW
61304       ELSEIF(IVAR.EQ.55) THEN
61305         IUED(I1)=INEW
61306       ELSEIF(IVAR.EQ.56) THEN
61307         RUED(I1)=RNEW
61308       ENDIF
61309  
61310 C...Write old and new value. Loop back.
61311       CHBIT(LNAM:14)=' '
61312       CHBIT(15:60)=' changed from                to               '
61313       IF(MSVAR(IVAR,1).EQ.1) THEN
61314         WRITE(CHBIT(33:42),'(I10)') IOLD
61315         WRITE(CHBIT(51:60),'(I10)') INEW
61316         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
61317       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
61318         WRITE(CHBIT(29:42),'(F14.5)') ROLD
61319         WRITE(CHBIT(47:60),'(F14.5)') RNEW
61320         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
61321       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
61322         CHBIT(35:42)=CHOLD
61323         CHBIT(53:60)=CHNEW
61324         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
61325       ELSE
61326         CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2
61327         IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88)
61328       ENDIF
61329       LLOW=LHIG
61330       IF(LLOW.LT.LTOT) GOTO 120
61331  
61332 C...Format statement for output on unit MSTU(11) (by default 6).
61333  5000 FORMAT(5X,A60)
61334  5100 FORMAT(5X,A88)
61335  
61336       RETURN
61337       END
61338  
61339 C*********************************************************************
61340  
61341 C...PYONOF
61342 C...Switches on and off decay channel by search for match.
61343  
61344       SUBROUTINE PYONOF(CHIN)
61345  
61346 C...Double precision and integer declarations.
61347       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
61348       IMPLICIT INTEGER(I-N)
61349       INTEGER PYK,PYCHGE,PYCOMP
61350 C...Commonblocks.
61351       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
61352       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
61353       SAVE /PYDAT1/,/PYDAT3/
61354 C...Local arrays and character variables.
61355       INTEGER KFCMP(10),KFTMP(10)
61356       CHARACTER CHIN*(*),CHTMP*104,CHFIX*104,CHMODE*10,CHCODE*8,
61357      &CHALP(2)*26
61358       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
61359      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
61360 
61361 C...Determine length of character variable.
61362       CHTMP=CHIN//' '
61363       LBEG=0
61364   100 LBEG=LBEG+1
61365       IF(CHTMP(LBEG:LBEG).EQ.' ') GOTO 100
61366       LEND=LBEG-1
61367   105 LEND=LEND+1
61368       IF(LEND.LE.100.AND.CHTMP(LEND:LEND).NE.'!') GOTO 105
61369   110 LEND=LEND-1
61370       IF(CHTMP(LEND:LEND).EQ.' ') GOTO 110
61371       LEN=1+LEND-LBEG
61372       CHFIX(1:LEN)=CHTMP(LBEG:LEND)
61373 
61374 C...Find colon separator and particle code.
61375       LCOLON=0
61376   120 LCOLON=LCOLON+1
61377       IF(CHFIX(LCOLON:LCOLON).NE.':') GOTO 120
61378       CHCODE=' '
61379       CHCODE(10-LCOLON:8)=CHFIX(1:LCOLON-1)
61380       READ(CHCODE,'(I8)',ERR=300) KF
61381       KC=PYCOMP(KF)
61382 
61383 C...Done if unknown code or no decay channels.
61384       IF(KC.EQ.0) THEN
61385         CALL PYERRM(18,'(PYONOF:) unrecognized particle '//CHCODE)
61386         RETURN
61387       ENDIF
61388       IDCBEG=MDCY(KC,2)
61389       IDCLEN=MDCY(KC,3)
61390       IF(IDCBEG.EQ.0.OR.IDCLEN.EQ.0) THEN
61391         CALL PYERRM(18,'(PYONOF:) no decay channels for '//CHCODE)
61392         RETURN
61393       ENDIF
61394 
61395 C...Find command name up to blank or equal sign.
61396       LSEP=LCOLON
61397   130 LSEP=LSEP+1
61398       IF(LSEP.LE.LEN.AND.CHFIX(LSEP:LSEP).NE.' '.AND.
61399      &CHFIX(LSEP:LSEP).NE.'=') GOTO 130
61400       CHMODE=' '
61401       LMODE=LSEP-LCOLON-1
61402       CHMODE(1:LMODE)=CHFIX(LCOLON+1:LSEP-1)
61403 
61404 C...Convert to uppercase.
61405       DO 150 LCOM=1,LMODE
61406         DO 140 LALP=1,26
61407           IF(CHMODE(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) 
61408      &    CHMODE(LCOM:LCOM)=CHALP(2)(LALP:LALP)
61409   140   CONTINUE
61410   150 CONTINUE
61411 
61412 C...Identify command. Failed if not identified.
61413       MODE=0
61414       IF(CHMODE.EQ.'ALLOFF') MODE=1
61415       IF(CHMODE.EQ.'ALLON') MODE=2
61416       IF(CHMODE.EQ.'OFFIFANY') MODE=3
61417       IF(CHMODE.EQ.'ONIFANY') MODE=4
61418       IF(CHMODE.EQ.'OFFIFALL') MODE=5
61419       IF(CHMODE.EQ.'ONIFALL') MODE=6
61420       IF(CHMODE.EQ.'OFFIFMATCH') MODE=7
61421       IF(CHMODE.EQ.'ONIFMATCH') MODE=8
61422       IF(MODE.EQ.0) THEN
61423         CALL PYERRM(18,'(PYONOF:) unknown command '//CHMODE)
61424         RETURN
61425       ENDIF
61426 
61427 C...Simple cases when all on or all off.
61428       IF(MODE.EQ.1.OR.MODE.EQ.2) THEN
61429         WRITE(MSTU(11),1000) KF,CHMODE
61430         DO 160 IDC=IDCBEG,IDCBEG+IDCLEN-1
61431           IF(MDME(IDC,1).LT.0) GOTO 160
61432           MDME(IDC,1)=MODE-1
61433   160   CONTINUE
61434         RETURN
61435       ENDIF
61436 
61437 C...Identify matching list.
61438       NCMP=0
61439       LBEG=LSEP
61440   170 LBEG=LBEG+1
61441       IF(LBEG.GT.LEN) GOTO 190
61442       IF(LBEG.LT.LEN.AND.(CHFIX(LBEG:LBEG).EQ.' '.OR.
61443      &CHFIX(LBEG:LBEG).EQ.'='.OR.CHFIX(LBEG:LBEG).EQ.',')) GOTO 170
61444       LEND=LBEG-1
61445   180 LEND=LEND+1
61446       IF(LEND.LT.LEN.AND.CHFIX(LEND:LEND).NE.' '.AND.
61447      &CHFIX(LEND:LEND).NE.'='.AND.CHFIX(LEND:LEND).NE.',') GOTO 180
61448       IF(LEND.LT.LEN) LEND=LEND-1
61449       CHCODE=' '
61450       CHCODE(8-LEND+LBEG:8)=CHFIX(LBEG:LEND)
61451       READ(CHCODE,'(I8)',ERR=300) KFREAD
61452       NCMP=NCMP+1
61453       KFCMP(NCMP)=IABS(KFREAD)
61454       LBEG=LEND
61455       IF(NCMP.LT.10) GOTO 170
61456   190 CONTINUE
61457       WRITE(MSTU(11),1100) KF,CHMODE,(KFCMP(ICMP),ICMP=1,NCMP)
61458 
61459 C...Only one matching required.
61460       IF(MODE.EQ.3.OR.MODE.EQ.4) THEN
61461         DO 220 IDC=IDCBEG,IDCBEG+IDCLEN-1
61462           IF(MDME(IDC,1).LT.0) GOTO 220
61463           DO 210 IKF=1,5
61464             KFNOW=IABS(KFDP(IDC,IKF))
61465             IF(KFNOW.EQ.0) GOTO 210
61466             DO 200 ICMP=1,NCMP
61467               IF(KFCMP(ICMP).EQ.KFNOW) THEN
61468                 MDME(IDC,1)=MODE-3
61469                 GOTO 220
61470               ENDIF
61471   200      CONTINUE
61472   210     CONTINUE
61473   220   CONTINUE
61474         RETURN
61475       ENDIF
61476 
61477 C...Multiple matchings required.
61478       DO 260 IDC=IDCBEG,IDCBEG+IDCLEN-1
61479         IF(MDME(IDC,1).LT.0) GOTO 260
61480         NTMP=NCMP
61481         DO 230 ITMP=1,NTMP
61482           KFTMP(ITMP)=KFCMP(ITMP)
61483   230   CONTINUE  
61484         NFIN=0 
61485         DO 250 IKF=1,5
61486           KFNOW=IABS(KFDP(IDC,IKF))
61487           IF(KFNOW.EQ.0) GOTO 250
61488           NFIN=NFIN+1
61489           DO 240 ITMP=1,NTMP
61490             IF(KFTMP(ITMP).EQ.KFNOW) THEN
61491               KFTMP(ITMP)=KFTMP(NTMP) 
61492               NTMP=NTMP-1
61493               GOTO 250
61494             ENDIF
61495   240     CONTINUE
61496   250   CONTINUE
61497         IF(NTMP.EQ.0.AND.MODE.LE.6) MDME(IDC,1)=MODE-5
61498         IF(NTMP.EQ.0.AND.NFIN.EQ.NCMP.AND.MODE.GE.7) 
61499      &  MDME(IDC,1)=MODE-7
61500   260 CONTINUE
61501       RETURN
61502 
61503 C...Error exit for impossible read of particle code.
61504   300 CALL PYERRM(18,'(PYONOF:) could not interpret particle code '
61505      &//CHCODE)
61506 
61507 C...Formats for output.
61508  1000 FORMAT(' Decays for',I8,' set ',A10)
61509  1100 FORMAT(' Decays for',I8,' set ',A10,' if match',10I8)
61510 
61511       RETURN
61512       END
61513 C*********************************************************************
61514  
61515 C...PYTUNE
61516 C...Presets for a few specific underlying-event and min-bias tunes
61517 C...Note some tunes require external pdfs to be linked (e.g. 105:QW),
61518 C...others require particular versions of pythia (e.g. the SCI and GAL
61519 C...models). See below for details.
61520       SUBROUTINE PYTUNE(ITUNE)
61521 C
61522 C ITUNE    NAME (detailed descriptions below)
61523 C     0 Default : No settings changed => defaults.
61524 C
61525 C ====== Old UE, Q2-ordered showers ====================================
61526 C   100       A : Rick Field's CDF Tune A                     (Oct 2002)
61527 C   101      AW : Rick Field's CDF Tune AW                    (Apr 2006)
61528 C   102      BW : Rick Field's CDF Tune BW                    (Apr 2006)
61529 C   103      DW : Rick Field's CDF Tune DW                    (Apr 2006)
61530 C   104     DWT : As DW but with slower UE ECM-scaling        (Apr 2006)
61531 C   105      QW : Rick Field's CDF Tune QW using CTEQ6.1M            (?)
61532 C   106 ATLAS-DC2: Arthur Moraes' (old) ATLAS tune ("Rome")          (?)
61533 C   107     ACR : Tune A modified with new CR model           (Mar 2007)
61534 C   108      D6 : Rick Field's CDF Tune D6 using CTEQ6L1             (?)
61535 C   109     D6T : Rick Field's CDF Tune D6T using CTEQ6L1            (?)
61536 C ---- Professor Tunes : 110+ (= 100+ with Professor's tune to LEP) ----
61537 C   110   A-Pro : Tune A, with LEP tune from Professor        (Oct 2008)
61538 C   111  AW-Pro : Tune AW, -"-                                (Oct 2008)
61539 C   112  BW-Pro : Tune BW, -"-                                (Oct 2008)
61540 C   113  DW-Pro : Tune DW, -"-                                (Oct 2008)
61541 C   114 DWT-Pro : Tune DWT, -"-                               (Oct 2008)
61542 C   115  QW-Pro : Tune QW, -"-                                (Oct 2008)
61543 C   116 ATLAS-DC2-Pro: ATLAS-DC2 / Rome, -"-                  (Oct 2008)
61544 C   117 ACR-Pro : Tune ACR, -"-                               (Oct 2008)
61545 C   118  D6-Pro : Tune D6, -"-                                (Oct 2008)
61546 C   119 D6T-Pro : Tune D6T, -"-                               (Oct 2008)
61547 C ---- Professor's Q2-ordered Perugia Tune : 129 -----------------------
61548 C   129 Pro-Q2O : Professor Q2-ordered tune                   (Feb 2009)
61549 C
61550 C ====== Intermediate and Hybrid Models ================================
61551 C   200    IM 1 : Intermediate model: new UE, Q2-ord. showers, new CR
61552 C   201     APT : Tune A w. pT-ordered FSR                    (Mar 2007)
61553 C   211 APT-Pro : Tune APT, with LEP tune from Professor      (Oct 2008)
61554 C   221 Perugia APT  : "Perugia" update of APT-Pro            (Feb 2009)
61555 C   226 Perugia APT6 : "Perugia" update of APT-Pro w. CTEQ6L1 (Feb 2009)
61556 C
61557 C ====== New UE, interleaved pT-ordered showers, annealing CR ==========
61558 C   300      S0 : Sandhoff-Skands Tune using the S0 CR model  (Apr 2006)
61559 C   301      S1 : Sandhoff-Skands Tune using the S1 CR model  (Apr 2006)
61560 C   302      S2 : Sandhoff-Skands Tune using the S2 CR model  (Apr 2006)
61561 C   303     S0A : S0 with "Tune A" UE energy scaling          (Apr 2006)
61562 C   304    NOCR : New UE "best try" without col. rec.         (Apr 2006)
61563 C   305     Old : New UE, original (primitive) col. rec.      (Aug 2004)
61564 C   306 ATLAS-CSC: Arthur Moraes' (new) ATLAS tune w. CTEQ6L1 (?)
61565 C ---- Professor Tunes : 310+ (= 300+ with Professor's tune to LEP)
61566 C   310   S0-Pro : S0 with updated LEP pars from Professor    (Oct 2008)
61567 C   311   S1-Pro : S1 -"-                                     (Oct 2008)
61568 C   312   S2-Pro : S2 -"-                                     (Oct 2008)
61569 C   313  S0A-Pro : S0A -"-                                    (Oct 2008)
61570 C   314 NOCR-Pro : NOCR -"-                                   (Oct 2008)
61571 C   315  Old-Pro : Old -"-                                    (Oct 2008)
61572 C   316  ATLAS MC08 : pT-ordered showers, CTEQ6L1             (2008)
61573 C ---- Peter's Perugia Tunes : 320+ ------------------------------------
61574 C   320 Perugia 0 : "Perugia" update of S0-Pro                (Feb 2009)
61575 C   321 Perugia HARD : More ISR, More FSR, Less MPI, Less BR, Less HAD
61576 C   322 Perugia SOFT : Less ISR, Less FSR, More MPI, More BR, More HAD
61577 C   323 Perugia 3 : Alternative to Perugia 0, with different ISR/MPI
61578 C                   balance & different scaling to LHC & RHIC (Feb 2009)
61579 C   324 Perugia NOCR : "Perugia" update of NOCR-Pro           (Feb 2009)
61580 C   325 Perugia * : "Perugia" Tune w. (external) MRSTLO* PDFs (Feb 2009)
61581 C   326 Perugia 6 : "Perugia" Tune w. (external) CTEQ6L1 PDFs (Feb 2009)
61582 C   327 Perugia 10: Alternative to Perugia 0, with more FSR   (May 2010)
61583 C                   off ISR, more BR breakup, more strangeness
61584 C   328 Perugia K : Alternative to Perugia 2010, with a       (May 2010)   
61585 C                   K-factor applied to MPI cross sections
61586 C ---- Professor's pT-ordered Perugia Tune : 329 -----------------------
61587 C   329 Pro-pTO   : Professor pT-ordered tune w. S0 CR model  (Feb 2009)
61588 C ---- Tunes introduced in 6.4.23:
61589 C   330 ATLAS MC09 : pT-ordered showers, LO* PDFs             (2009)
61590 C   331 ATLAS MC09c : pT-ordered showers, LO* PDFs, better CR (2009)
61591 C   334 Perugia 10 NOCR : Perugia 2010 with no CR, less MPI   (Oct 2010)
61592 C   335 Pro-pT*   : Professor Tune with LO*                   (Mar 2009)
61593 C   336 Pro-pT6   : Professor Tune with CTEQ6LL               (Mar 2009)
61594 C   339 Pro-pT**  : Professor Tune with LO**                  (Mar 2009)
61595 C   340 AMBT1   : First ATLAS tune including 7 TeV data       (May 2010)
61596 C   341 Z1      : First CMS tune including 7 TeV data         (Aug 2010)
61597 C   342 Z1-LEP  : CMS tune Z1, with improved LEP parameters   (Oct 2010)
61598 C   343 Z2        : Retune of Z1 by Field w CTEQ6L1 PDFs          (2010)
61599 C   344 Z2-LEP    : Retune of Z1 by Skands w CTEQ6L1 PDFs     (Feb 2011)
61600 C   350 Perugia 2011 : Retune of Perugia 2010 incl 7-TeV data (Mar 2011)
61601 C   351 P2011 radHi : Variation with alphaS(pT/2) 
61602 C   352 P2011 radLo : Variation with alphaS(2pT)
61603 C   353 P2011 mpiHi : Variation with more semi-hard MPI
61604 C   354 P2011 noCR  : Variation without color reconnections
61605 C   355 P2011 LO**  : Perugia 2011 using MSTW LO** PDFs       (Mar 2011)
61606 C   356 P2011 C6    : Perugia 2011 using CTEQ6L1 PDFs         (Mar 2011)
61607 C   357 P2011 T16   : Variation with PARP(90)=0.32 away from 7 TeV
61608 C   358 P2011 T32   : Variation with PARP(90)=0.16 awat from 7 TeV
61609 C   359 P2011 TeV   : Perugia 2011 optimized for Tevatron     (Mar 2011)
61610 C   360 S Global    : Schulz-Skands Global fit                (Mar 2011)
61611 C   361 S 7000      : Schulz-Skands at 7000 GeV               (Mar 2011)
61612 C   362 S 1960      : Schulz-Skands at 1960 GeV               (Mar 2011)
61613 C   363 S 1800      : Schulz-Skands at 1800 GeV               (Mar 2011)
61614 C   364 S 900       : Schulz-Skands at 900 GeV                (Mar 2011)
61615 C   365 S 630       : Schulz-Skands at 630 GeV                (Mar 2011)
61616 C
61617 C ======= The Uppsala models ===========================================
61618 C   ( NB! must be run with special modified Pythia 6.215 version )
61619 C   ( available from http://www.isv.uu.se/thep/MC/scigal/        )
61620 C   400   GAL 0 : Generalized area-law model. Org pars        (Dec 1998)
61621 C   401   SCI 0 : Soft-Colour-Interaction model. Org pars     (Dec 1998)
61622 C   402   GAL 1 : GAL 0. Tevatron MB retuned (Skands)         (Oct 2006)
61623 C   403   SCI 1 : SCI 0. Tevatron MB retuned (Skands)         (Oct 2006)
61624 C
61625 C More details;
61626 C
61627 C Quick Dictionary:
61628 C      BE : Bose-Einstein
61629 C      BR : Beam Remnants
61630 C      CR : Colour Reconnections
61631 C      HAD: Hadronization
61632 C      ISR/FSR: Initial-State Radiation / Final-State Radiation
61633 C      FSI: Final-State Interactions (=CR+BE)
61634 C      MB : Minimum-bias
61635 C      MI : Multiple Interactions
61636 C      UE : Underlying Event
61637 C
61638 C=======================================================================
61639 C TUNES OF OLD FRAMEWORK (Q2-ORDERED ISR AND FSR, NON-INTERLEAVED UE)
61640 C=======================================================================
61641 C
61642 C   A (100) and AW (101). CTEQ5L parton distributions
61643 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
61644 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
61645 C...Key feature: extensively compared to CDF data (R.D. Field).
61646 C...* Large starting scale for ISR (PARP(67)=4)
61647 C...* AW has even more radiation due to smaller mu_R choice in alpha_s.
61648 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
61649 C
61650 C   BW (102). CTEQ5L parton distributions
61651 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
61652 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
61653 C...Key feature: extensively compared to CDF data (R.D. Field).
61654 C...NB: Can also be run with Pythia 6.2 or 6.312+
61655 C...* Small starting scale for ISR (PARP(67)=1)
61656 C...* BW has more radiation due to smaller mu_R choice in alpha_s.
61657 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
61658 C
61659 C   DW (103) and DWT (104). CTEQ5L parton distributions
61660 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
61661 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
61662 C...Key feature: extensively compared to CDF data (R.D. Field).
61663 C...NB: Can also be run with Pythia 6.2 or 6.312+
61664 C...* Intermediate starting scale for ISR (PARP(67)=2.5)
61665 C...* DWT has a different reference energy, the same as the "S" models
61666 C...  below, leading to more UE activity at the LHC, but less at RHIC.
61667 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
61668 C
61669 C   QW (105). CTEQ61 parton distributions
61670 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
61671 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
61672 C...Key feature: uses CTEQ61 (external pdf library must be linked)
61673 C
61674 C   ATLAS-DC2 (106). CTEQ5L parton distributions
61675 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
61676 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
61677 C...Key feature: tune used by the ATLAS collaboration.
61678 C
61679 C   ACR (107). CTEQ5L parton distributions
61680 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.412+    ***
61681 C...Key feature: Tune A modified to use annealing CR.
61682 C...NB: PARP(85)=0D0 and amount of CR is regulated by PARP(78).
61683 C
61684 C   D6 (108) and D6T (109). CTEQ6L parton distributions
61685 C...Key feature: Like DW and DWT but retuned to use CTEQ6L PDFs.
61686 C
61687 C   A-Pro, BW-Pro, etc (111, 112, etc). CTEQ5L parton distributions
61688 C   Old UE model, Q2-ordered showers.
61689 C...Key feature: Rick Field's family of tunes revamped with the
61690 C...Professor Q2-ordered final-state shower and fragmentation tunes
61691 C...presented by Hendrik Hoeth at the Perugia MPI workshop in Oct 2008.
61692 C...Key feature: improved descriptions of LEP data.
61693 C
61694 C   Pro-Q2O (129). CTEQ5L parton distributions
61695 C   Old UE model, Q2-ordered showers.
61696 C...Key feature: Complete retune of old model by Professor, including
61697 C...large amounts of both LEP and Tevatron data.
61698 C...Note that PARP(64) (ISR renormalization scale pre-factor) is quite
61699 C...extreme in this tune, corresponding to using mu_R = pT/3 .
61700 C
61701 C=======================================================================
61702 C INTERMEDIATE/HYBRID TUNES (MIX OF NEW AND OLD SHOWER AND UE MODELS)
61703 C=======================================================================
61704 C
61705 C   IM1 (200). Intermediate model, Q2-ordered showers,
61706 C   CTEQ5L parton distributions
61707 C...Key feature: new UE model w Q2-ordered showers and no interleaving.
61708 C...* "Rap" tune of hep-ph/0402078, modified with new annealing CR.
61709 C...* See: Sjostrand & Skands: JHEP 03(2004)053, hep-ph/0402078.
61710 C
61711 C   APT (201). Old UE model, pT-ordered final-state showers,
61712 C   CTEQ5L parton distributions
61713 C...Key feature: Rick Field's Tune A, but with new final-state showers
61714 C
61715 C   APT-Pro (211). Old UE model, pT-ordered final-state showers,
61716 C   CTEQ5L parton distributions
61717 C...Key feature: APT revamped with the Professor pT-ordered final-state
61718 C...shower and fragmentation tunes presented by Hendrik Hoeth at the
61719 C...Perugia MPI workshop in October 2008.
61720 C
61721 C   Perugia-APT (221). Old UE model, pT-ordered final-state showers,
61722 C   CTEQ5L parton distributions
61723 C...Key feature: APT-Pro with final-state showers off the MPI,
61724 C...lower ISR renormalization scale to improve agreement with the
61725 C...Tevatron Drell-Yan pT measurements and with improved energy scaling
61726 C...to min-bias at 630 GeV.
61727 C
61728 C   Perugia-APT6 (226). Old UE model, pT-ordered final-state showers,
61729 C   CTEQ6L1 parton distributions.
61730 C...Key feature: uses CTEQ6L1 (external pdf library must be linked),
61731 C...with a slightly lower pT0 (2.0 instead of 2.05) due to the smaller
61732 C...UE activity obtained with CTEQ6L1 relative to CTEQ5L.
61733 C
61734 C=======================================================================
61735 C TUNES OF NEW FRAMEWORK (PT-ORDERED ISR AND FSR, INTERLEAVED UE)
61736 C=======================================================================
61737 C
61738 C   S0 (300) and S0A (303). CTEQ5L parton distributions
61739 C...Key feature: large amount of multiple interactions
61740 C...* Somewhat faster than the other colour annealing scenarios.
61741 C...* S0A has a faster energy scaling of the UE IR cutoff, borrowed
61742 C...  from Tune A, leading to less UE at the LHC, but more at RHIC.
61743 C...* Small amount of radiation.
61744 C...* Large amount of low-pT MI
61745 C...* Low degree of proton lumpiness (broad matter dist.)
61746 C...* CR Type S (driven by free triplets), of medium strength.
61747 C...* See: Pythia6402 update notes or later.
61748 C
61749 C   S1 (301). CTEQ5L parton distributions
61750 C...Key feature: large amount of radiation.
61751 C...* Large amount of low-pT perturbative ISR
61752 C...* Large amount of FSR off ISR partons
61753 C...* Small amount of low-pT multiple interactions
61754 C...* Moderate degree of proton lumpiness
61755 C...* Least aggressive CR type (S+S Type I), but with large strength
61756 C...* See: Sandhoff & Skands: FERMILAB-CONF-05-518-T, in hep-ph/0604120.
61757 C
61758 C   S2 (302). CTEQ5L parton distributions
61759 C...Key feature: very lumpy proton + gg string cluster formation allowed
61760 C...* Small amount of radiation
61761 C...* Moderate amount of low-pT MI
61762 C...* High degree of proton lumpiness (more spiky matter distribution)
61763 C...* Most aggressive CR type (S+S Type II), but with small strength
61764 C...* See: Sandhoff & Skands: FERMILAB-CONF-05-518-T, in hep-ph/0604120.
61765 C
61766 C   NOCR (304). CTEQ5L parton distributions
61767 C...Key feature: no colour reconnections (NB: "Best fit" only).
61768 C...* NB: <pT>(Nch) problematic in this tune.
61769 C...* Small amount of radiation
61770 C...* Small amount of low-pT MI
61771 C...* Low degree of proton lumpiness
61772 C...* Large BR composite x enhancement factor
61773 C...* Most clever colour flow without CR ("Lambda ordering")
61774 C
61775 C   ATLAS-CSC (306). CTEQ6L parton distributions
61776 C...Key feature: 11-parameter ATLAS tune of the new framework.
61777 C...* Old (pre-annealing) colour reconnections a la 305.
61778 C...* Uses CTEQ6 Leading Order PDFs (must be interfaced externally)
61779 C
61780 C   S0-Pro, S1-Pro, etc (310, 311, etc). CTEQ5L parton distributions.
61781 C...Key feature: the S0 family of tunes revamped with the Professor
61782 C...pT-ordered final-state shower and fragmentation tunes presented by
61783 C...Hendrik Hoeth at the Perugia MPI workshop in October 2008.
61784 C...Key feature: improved descriptions of LEP data.
61785 C
61786 C   ATLAS MC08 (316). CTEQ6L1 parton distributions
61787 C...Key feature: ATLAS tune of the new framework using CTEQ6L1 PDFs
61788 C...* Warning: uses Peterson fragmentation function for heavy quarks
61789 C...* Uses CTEQ6 Leading Order PDFs (must be interfaced externally)
61790 C
61791 C   Perugia-0 (320). CTEQ5L parton distributions.
61792 C...Key feature: S0-Pro retuned to more Tevatron data. Better Drell-Yan
61793 C...pT spectrum, better <pT>(Nch) in min-bias, and better scaling to
61794 C...630 GeV than S0-Pro. Also has a slightly smoother mass profile, more
61795 C...beam-remnant breakup (more baryon number transport), and suppression
61796 C...of CR in high-pT string pieces.
61797 C
61798 C   Perugia-HARD (321). CTEQ5L parton distributions.
61799 C...Key feature: More ISR, More FSR, Less MPI, Less BR
61800 C...Uses pT/2 as argument of alpha_s for ISR, and a higher Lambda_FSR.
61801 C...Has higher pT0, less intrinsic kT, less beam remnant breakup (less
61802 C...baryon number transport), and more fragmentation pT.
61803 C...Multiplicity in min-bias is LOW, <pT>(Nch) is HIGH,
61804 C...DY pT spectrum is HARD.
61805 C
61806 C   Perugia-SOFT (322). CTEQ5L parton distributions.
61807 C...Key feature: Less ISR, Less FSR, More MPI, More BR
61808 C...Uses sqrt(2)*pT as argument of alpha_s for ISR, and a lower
61809 C...Lambda_FSR. Has lower pT0, more beam remnant breakup (more baryon
61810 C...number transport), and less fragmentation pT.
61811 C...Multiplicity in min-bias is HIGH, <pT>(Nch) is LOW,
61812 C...DY pT spectrum is SOFT
61813 C
61814 C   Perugia-3 (323). CTEQ5L parton distributions.
61815 C...Key feature: variant of Perugia-0 with more extreme energy scaling
61816 C...properties while still agreeing with Tevatron data from 630 to 1960.
61817 C...More ISR and less MPI than Perugia-0 at the Tevatron and above and
61818 C...allows FSR off the active end of dipoles stretched to the remnant.
61819 C
61820 C   Perugia-NOCR (324). CTEQ5L parton distributions.
61821 C...Key feature: Retune of NOCR-Pro with better scaling properties to
61822 C...lower energies and somewhat better agreement with Tevatron data
61823 C...at 1800/1960.
61824 C
61825 C   Perugia-* (325). MRST LO* parton distributions for generators
61826 C...Key feature: first attempt at using the LO* distributions
61827 C...(external pdf library must be linked).
61828 C
61829 C   Perugia-6 (326). CTEQ6L1 parton distributions
61830 C...Key feature: uses CTEQ6L1 (external pdf library must be linked).
61831 C
61832 C   Perugia-2010 (327). CTEQ5L parton distributions
61833 C...Key feature: Retune of Perugia 0 to attempt to better describe 
61834 C...strangeness yields at RHIC and at LEP. Also increased the amount 
61835 C...of FSR off ISR following the conclusions in arXiv:1001.4082. 
61836 C...Increased the amount of beam blowup, causing more baryon transport
61837 C...into the detector, to further explore this possibility. Using 
61838 C...a new color-reconnection model that relies on determining a thrust
61839 C...axis for the events and then computing reconnection probabilities for
61840 C...the individual string pieces based on the actual string densities
61841 C...per rapidity interval along that thrust direction.
61842 C
61843 C   Perugia-K (328). CTEQ5L parton distributions 
61844 C...Key feature: uses a ``K'' factor on the MPI cross sections
61845 C...This gives a larger rate of minijets and pushes the underlying-event 
61846 C...activity towards higher pT. To compensate for the increased activity 
61847 C...at higher pT, the infared regularization scale is larger for this tune.
61848 C
61849 C   Pro-pTO (329). CTEQ5L parton distributions
61850 C...Key feature: Complete retune of new model by Professor, including
61851 C...large amounts of both LEP and Tevatron data. Similar to S0A-Pro.
61852 C
61853 C   ATLAS MC09 (330). LO* parton distributions
61854 C...Key feature: Good overall agreement with Tevatron and early LHC data.
61855 C...Similar to Perugia *.
61856 C
61857 C   ATLAS MC09c (331). LO* parton distributions
61858 C...Key feature: Good overall agreement with Tevatron and 900-GeV LHC data.
61859 C...Similar to Perugia *. Retuned CR model with respect to MC09.
61860 C
61861 C   Pro-pT* (335) LO* parton distributions
61862 C...Key feature: Retune of Pro-PTO with MRST LO* PDFs.
61863 C
61864 C   Pro-pT6 (336). CTEQ6L1 parton distributions
61865 C...Key feature: Retune of Pro-PTO with CTEQ6L1 PDFs.
61866 C
61867 C   Pro-pT** (339). LO** parton distributions
61868 C...Key feature: Retune of Pro-PTO with MRST LO** PDFs.
61869 C
61870 C   AMBT1 (340). LO* parton distributions
61871 C...Key feature: First ATLAS tune including 7-TeV LHC data.
61872 C...Mainly retuned CR and mass distribution with respect to MC09c.
61873 C...Note: cannot be run standalone since it uses external PDFs.
61874 C
61875 C   CMSZ1 (341). CTEQ5L parton distributions
61876 C...Key feature: First CMS tune including 7-TeV LHC data.
61877 C...Uses many of the features of AMBT1, but uses CTEQ5L PDFs, 
61878 C...has a lower pT0 at the Tevatron, which scales faster with energy. 
61879 C
61880 C   Z1-LEP (342). CTEQ5L parton distributions
61881 C...Key feature: CMS tune Z1 with improved LEP parameters, mostly 
61882 C...taken from the Professor/Perugia tunes, with a few minor updates.
61883 C
61884 C=======================================================================
61885 C OTHER TUNES
61886 C=======================================================================
61887 C
61888 C...The GAL and SCI models (400+) are special and *SHOULD NOT* be run
61889 C...with an unmodified Pythia distribution.
61890 C...See http://www.isv.uu.se/thep/MC/scigal/ for more information.
61891 C
61892 C ::: + Future improvements?
61893 C        Include also QCD K-factor a la M. Heinz / ATLAS TDR ? RDF's QK?
61894 C       (problem: K-factor affects everything so only works as
61895 C        intended for min-bias, not for UE ... probably need a
61896 C        better long-term solution to handle UE as well. Anyway,
61897 C        Mark uses MSTP(33) and PARP(31)-PARP(33).)
61898  
61899 C...Global statements
61900       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
61901       INTEGER PYK,PYCHGE,PYCOMP
61902  
61903 C...Commonblocks.
61904       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
61905       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
61906  
61907 C...SCI and GAL Commonblocks
61908       COMMON /SCIPAR/MSWI(2),PARSCI(2)
61909  
61910 C...SAVE statements
61911       SAVE /PYDAT1/,/PYPARS/
61912       SAVE /SCIPAR/
61913 
61914 C...Internal parameters
61915       PARAMETER(MXTUNS=500)
61916       CHARACTER*8 CHDOC
61917       PARAMETER (CHDOC='Mar 2011')
61918       CHARACTER*16 CHNAMS(0:MXTUNS), CHNAME
61919       CHARACTER*42 CHMSTJ(50), CHMSTP(100), CHPARP(100),
61920      &    CHPARJ(100), CHMSTU(101:121), CHPARU(101:121), CH40
61921       CHARACTER*60 CH60
61922       CHARACTER*70 CH70
61923       DATA (CHNAMS(I),I=0,1)/'Default',' '/
61924       DATA (CHNAMS(I),I=100,119)/
61925      &    'Tune A','Tune AW','Tune BW','Tune DW','Tune DWT','Tune QW',
61926      &    'ATLAS DC2','Tune ACR','Tune D6','Tune D6T',
61927      1    'Tune A-Pro','Tune AW-Pro','Tune BW-Pro','Tune DW-Pro',
61928      1    'Tune DWT-Pro','Tune QW-Pro','ATLAS DC2-Pro','Tune ACR-Pro',
61929      1    'Tune D6-Pro','Tune D6T-Pro'/
61930       DATA (CHNAMS(I),I=120,129)/
61931      &     9*' ','Pro-Q2O'/
61932       DATA (CHNAMS(I),I=300,309)/
61933      &    'Tune S0','Tune S1','Tune S2','Tune S0A','NOCR','Old',
61934      5    'ATLAS-CSC Tune','Yale Tune','Yale-K Tune',' '/
61935       DATA (CHNAMS(I),I=310,316)/
61936      &    'Tune S0-Pro','Tune S1-Pro','Tune S2-Pro','Tune S0A-Pro',
61937      &    'NOCR-Pro','Old-Pro','ATLAS MC08'/
61938       DATA (CHNAMS(I),I=320,329)/
61939      &    'Perugia 0','Perugia HARD','Perugia SOFT',
61940      &    'Perugia 3','Perugia NOCR','Perugia LO*',
61941      &    'Perugia 6','Perugia 10','Perugia K','Pro-pTO'/
61942       DATA (CHNAMS(I),I=330,349)/
61943      &     'ATLAS MC09','ATLAS MC09c',2*' ','Perugia 10 NOCR','Pro-PT*',
61944      &     'Pro-PT6',' ',' ','Pro-PT**',
61945      4     'Tune AMBT1','Tune Z1','Tune Z1-LEP','Tune Z2','Tune Z2-LEP',
61946      4     5*' '/
61947       DATA (CHNAMS(I),I=350,359)/
61948      &     'Perugia 2011','P2011 radHi','P2011 radLo','P2011 mpiHi',
61949      &     'P2011 noCR','P2011 M(LO**)', 'P2011 CTEQ6L1',
61950      &     'P2011 T16','P2011 T32','P2011 Tevatron'/
61951       DATA (CHNAMS(I),I=360,369)/
61952      &     'S Global','S 7000','S 1960','S 1800',
61953      &     'S 900','S 630', 4*' '/
61954       DATA (CHNAMS(I),I=200,229)/
61955      &    'IM Tune 1','Tune APT',8*' ',
61956      &    ' ','Tune APT-Pro',8*' ',
61957      &    ' ','Perugia APT',4*' ','Perugia APT6',3*' '/
61958       DATA (CHNAMS(I),I=400,409)/
61959      &    'GAL Tune 0','SCI Tune 0','GAL Tune 1','SCI Tune 1',6*' '/
61960       DATA (CHMSTJ(I),I=11,20)/
61961      &    'HAD choice of fragmentation function(s)',4*' ',
61962      &    'HAD treatment of small-mass systems',4*' '/
61963       DATA (CHMSTJ(I),I=41,50)/
61964      &    'FSR type (Q2 or pT) for old framework',9*' '/
61965       DATA (CHMSTP(I),I=1,10)/
61966      &    2*' ','INT switch for choice of LambdaQCD',7*' '/
61967       DATA (CHMSTP(I),I=31,40)/
61968      &    2*' ','"K" switch for K-factor on/off & type',7*' '/
61969       DATA (CHMSTP(I),I=51,100)/
61970      5    'PDF set','PDF set internal (=1) or pdflib (=2)',8*' ',
61971      6    'ISR master switch',2*' ','ISR alphaS type',2*' ',
61972      6    'ISR coherence option for 1st emission',
61973      6    'ISR phase space choice & ME corrections',' ',
61974      7    'ISR IR regularization scheme',' ',
61975      7    'IFSR scheme for non-decay FSR',8*' ',
61976      8    'UE model',
61977      8    'UE hadron transverse mass distribution',5*' ',
61978      8    'BR composite scheme','BR color scheme',
61979      9    'BR primordial kT compensation',
61980      9    'BR primordial kT distribution',
61981      9    'BR energy partitioning scheme',2*' ',
61982      9    'FSI color (re-)connection model',5*' '/
61983       DATA (CHPARP(I),I=1,10)/
61984      &    'ME/UE LambdaQCD',9*' '/
61985       DATA (CHPARP(I),I=31,40)/
61986      &    ' ','"K" K-factor',8*' '/
61987       DATA (CHPARP(I),I=61,100)/
61988      6     'ISR LambdaQCD','ISR IR cutoff',' ',
61989      6     'ISR renormalization scale prefactor',
61990      6     2*' ','ISR Q2max factor',3*' ',
61991      7     'IFSR Q2max factor in non-s-channel procs',
61992      7     'IFSR LambdaQCD (outside resonance decays)',4*' ',
61993      7     'FSI color reco high-pT damping strength',
61994      7     'FSI color reconnection strength',
61995      7     'BR composite x enhancement','BR breakup suppression',
61996      8     2*'UE IR cutoff at reference ecm',
61997      8     2*'UE mass distribution parameter',
61998      8     'UE gg color correlated fraction','UE total gg fraction',
61999      8     2*' ',
62000      8     'UE IR cutoff reference ecm',
62001      8     'UE IR cutoff ecm scaling power',
62002      9     'BR primordial kT width <|kT|>',' ',
62003      9     'BR primordial kT UV cutoff',7*' '/
62004       DATA (CHPARJ(I),I=1,30)/
62005      &     'HAD diquark suppression','HAD strangeness suppression',
62006      &     'HAD strange diquark suppression',
62007      &     'HAD vector diquark suppression','HAD P(popcorn)',
62008      &     'HAD extra popcorn B(s)-M-B(s) supp',
62009      &     'HAD extra popcorn B-M(s)-B supp',
62010      &     3*' ',
62011      1     'HAD P(vector meson), u and d only',
62012      1     'HAD P(vector meson), contains s',
62013      1     'HAD P(vector meson), heavy quarks',7*' ',
62014      2     'HAD fragmentation pT',' ',' ',' ',
62015      2     'HAD eta0 suppression',"HAD eta0' suppression",4*' '/
62016       DATA (CHPARJ(I),I=41,90)/
62017      4     'HAD string parameter a(Meson)','HAD string parameter b',
62018      4     2*' ','HAD string a(Baryon)-a(Meson)',
62019      4     'HAD Lund(=0)-Bowler(=1) rQ (rc)',
62020      4     'HAD Lund(=0)-Bowler(=1) rb',3*' ',
62021      5     3*' ', 'HAD charm parameter','HAD bottom parameter',5*' ',
62022      6     10*' ',10*' ',
62023      8     'FSR LambdaQCD (inside resonance decays)',
62024      &     'FSR IR cutoff',8*' '/
62025       DATA (CHMSTU(I),I=111,120)/
62026      1     ' ','INT n(flavors) for LambdaQCD',8*' '/
62027       DATA (CHPARU(I),I=111,120)/
62028      1     ' ','INT LambdaQCD',8*' '/
62029       
62030 C...1) Shorthand notation
62031       M13=MSTU(13)
62032       M11=MSTU(11)
62033       IF (ITUNE.LE.MXTUNS.AND.ITUNE.GE.0) THEN
62034         CHNAME=CHNAMS(ITUNE)
62035         IF (ITUNE.EQ.0) GOTO 9999
62036       ELSE
62037         CALL PYERRM(9,'(PYTUNE:) Tune number > max. Using defaults.')
62038         GOTO 9999
62039       ENDIF
62040  
62041 C...2) Hello World
62042       IF (M13.GE.1) WRITE(M11,5000) CHDOC
62043  
62044 C...Hardcode some defaults
62045 C...Get Lambda from PDF
62046       MSTP(3)  =  2      
62047 C...CTEQ5L1 PDFs
62048       MSTP(52) =  1
62049       MSTP(51) =  7
62050 C... No K-factor 
62051       MSTP(33) =  0
62052 
62053 C...3) Tune parameters
62054  
62055 C=======================================================================
62056 C...ATLAS MC08
62057 
62058       IF (ITUNE.EQ.316) THEN
62059         
62060         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
62061         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
62062           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
62063      &        ' with tune.')
62064         ENDIF
62065 
62066 C...First set some explicit defaults from 6.4.20
62067 C...# Old defaults
62068         MSTJ(11) = 4
62069 C...# Old default flavour parameters
62070         PARJ(1)  =   0.1
62071         PARJ(2)  =   0.3  
62072         PARJ(3)  =   0.40 
62073         PARJ(4)  =   0.05 
62074         PARJ(11) =   0.5  
62075         PARJ(12) =   0.6 
62076         PARJ(21) = 0.36
62077         PARJ(41) = 0.30
62078         PARJ(42) = 0.58
62079         PARJ(46) = 1.0
62080         PARJ(82) = 1.0
62081 
62082 C...PDFs: CTEQ6L1 for 326
62083         MSTP(52)=2
62084         MSTP(51)=10042
62085 
62086 C...UE and ISR switches
62087         MSTP(81)=21
62088         MSTP(82)=4
62089         MSTP(70)=0
62090         MSTP(72)=1
62091 
62092 C...CR:
62093         MSTP(95)=2
62094         PARP(78)=0.3
62095         PARP(77)=0.0
62096         PARP(80)=0.1
62097 
62098 C...Primordial kT
62099         PARP(91)=2.0D0
62100         PARP(93)=5.0D0
62101 
62102 C...MPI:
62103         PARP(82)=2.1
62104         PARP(83)=0.8
62105         PARP(84)=0.7
62106         PARP(89)=1800.0
62107         PARP(90)=0.16
62108 
62109 C...FSR inside resonance decays
62110         PARJ(81)=0.29
62111 
62112 C...Fragmentation (warning: uses Peterson)
62113         MSTJ(11)=3   
62114         PARJ(54)=-0.07
62115         PARJ(55)=-0.006
62116         MSTJ(22)=2
62117         
62118         IF (M13.GE.1) THEN
62119           CH60='Tuned by ATLAS, ATL-PHYS-PUB-2010-002'
62120           WRITE(M11,5030) CH60
62121           CH60='Physics model: '//
62122      &         'T. Sjostrand & P. Skands, hep-ph/0408302'
62123           WRITE(M11,5030) CH60
62124           CH60='CR by M. Sandhoff & P. Skands, in hep-ph/0604120'
62125           WRITE(M11,5030) CH60
62126           
62127 C...Output
62128           WRITE(M11,5030) ' '
62129           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
62130           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
62131           WRITE(M11,5040)  3, MSTP( 3), CHMSTP( 3)
62132           IF (MSTP(70).EQ.0) THEN
62133             WRITE(M11,5050) 62, PARP(62), CHPARP(62)
62134           ENDIF
62135           WRITE(M11,5040) 64, MSTP(64), CHMSTP(64)
62136           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
62137           WRITE(M11,5040) 67, MSTP(67), CHMSTP(67)
62138           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
62139           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
62140           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
62141           WRITE(M11,5030) CH60
62142           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
62143           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)          
62144           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
62145           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
62146           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
62147           WRITE(M11,5040) 33, MSTP(33), CHMSTP(33)
62148           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62149           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
62150           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
62151           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
62152           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62153           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
62154           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
62155           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
62156           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
62157           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
62158           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
62159           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
62160           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
62161           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
62162           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
62163           IF (MSTP(95).GE.1) THEN
62164             WRITE(M11,5050) 78, PARP(78), CHPARP(78)
62165             IF (MSTP(95).GE.2) WRITE(M11,5050) 77, PARP(77), CHPARP(77)
62166           ENDIF
62167 
62168         ENDIF
62169  
62170 C=======================================================================
62171 C...ATLAS MC09, MC09c, AMBT1
62172 C...CMS Z1 (R. Field), Z1-LEP
62173 
62174       ELSEIF (ITUNE.EQ.330.OR.ITUNE.EQ.331.OR.ITUNE.EQ.340.OR.
62175      &       ITUNE.GE.341.AND.ITUNE.LE.344) THEN
62176         
62177         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
62178         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
62179           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
62180      &        ' with tune.')
62181         ENDIF
62182 
62183 C...First set some explicit defaults from 6.4.20
62184         IF (ITUNE.LE.341.OR.ITUNE.EQ.343) THEN
62185 C...  # Old defaults
62186           MSTJ(11) = 4
62187 C...# Old default flavour parameters
62188           PARJ(1)  =   0.1
62189           PARJ(2)  =   0.3  
62190           PARJ(3)  =   0.40 
62191           PARJ(4)  =   0.05 
62192           PARJ(11) =   0.5  
62193           PARJ(12) =   0.6 
62194           PARJ(21) = 0.36
62195           PARJ(41) = 0.30
62196           PARJ(42) = 0.58
62197           PARJ(46) = 1.0
62198           PARJ(82) = 1.0
62199         ELSE
62200 C...# For Zn-LEP tunes, use tuned flavour parameters from Professor/Perugia
62201           PARJ( 1) = 0.08D0
62202           PARJ( 2) = 0.21D0
62203           PARJ(3)  = 0.94
62204           PARJ( 4) = 0.04D0
62205           PARJ(11) = 0.35D0
62206           PARJ(12) = 0.35D0
62207           PARJ(13) = 0.54
62208           PARJ(25) = 0.63
62209           PARJ(26) = 0.12
62210 C...# Switch on Bowler:
62211           MSTJ(11) = 5
62212 C...# Fragmentation
62213           PARJ(21) = 0.34D0
62214           PARJ(41) = 0.35D0
62215           PARJ(42) = 0.80D0
62216           PARJ(47) = 1.0
62217           PARJ(81) = 0.26D0
62218           PARJ(82) = 1.0D0
62219         ENDIF
62220 
62221 C...PDFs: MRST LO* 
62222         MSTP(52)=2
62223         MSTP(51)=20650
62224         IF (ITUNE.EQ.341.OR.ITUNE.EQ.342) THEN
62225 C...Z1 uses CTEQ5L
62226           MSTP(52)=1
62227           MSTP(51)=7
62228         ELSEIF (ITUNE.EQ.343.OR.ITUNE.EQ.344) THEN
62229 C...Z2 uses CTEQ6L
62230           MSTP(52)=2
62231           MSTP(51)=10042
62232         ENDIF
62233 
62234 C...UE and ISR switches
62235         MSTP(81)=21
62236         MSTP(82)=4
62237         MSTP(70)=0
62238         MSTP(72)=1
62239 
62240 C...CR:
62241         MSTP(95)=6
62242         PARP(78)=0.3
62243         PARP(77)=0.0
62244         PARP(80)=0.1
62245         IF (ITUNE.EQ.331) THEN
62246           PARP(78)=0.224          
62247         ELSEIF (ITUNE.EQ.340) THEN
62248 C...AMBT1
62249           PARP(77)=1.016D0
62250           PARP(78)=0.538D0
62251         ELSEIF (ITUNE.GE.341.AND.ITUNE.LE.344) THEN
62252 C...Z1 and Z2 use the AMBT1 CR values
62253           PARP(77)=1.016D0
62254           PARP(78)=0.538D0
62255         ENDIF
62256 
62257 C...MPI:
62258         PARP(82)=2.3
62259         PARP(83)=0.8
62260         PARP(84)=0.7
62261         PARP(89)=1800.0
62262         PARP(90)=0.25
62263         IF (ITUNE.EQ.331) THEN
62264           PARP(82)=2.315
62265           PARP(90)=0.2487
62266         ELSEIF (ITUNE.EQ.340) THEN
62267           PARP(82)=2.292D0
62268           PARP(83)=0.356D0
62269           PARP(84)=0.651
62270           PARP(90)=0.25D0
62271         ELSEIF (ITUNE.EQ.341.OR.ITUNE.EQ.342) THEN
62272           PARP(82)=1.932D0
62273           PARP(83)=0.356D0
62274           PARP(84)=0.651
62275           PARP(90)=0.275D0
62276         ELSEIF (ITUNE.EQ.343.OR.ITUNE.EQ.344) THEN
62277           PARP(82)=1.832D0
62278           PARP(83)=0.356D0
62279           PARP(84)=0.651
62280           PARP(90)=0.275D0
62281         ENDIF
62282         
62283 C...Primordial kT
62284         PARP(91)=2.0D0
62285         PARP(93)=5D0
62286         IF (ITUNE.GE.340) THEN
62287           PARP(93)=10D0
62288         ENDIF
62289 
62290 C...ISR
62291         IF (ITUNE.GE.340) THEN
62292           PARP(62)=1.025
62293         ENDIF
62294 
62295 C...FSR inside resonance decays
62296         PARJ(81)=0.29
62297 
62298 C...Fragmentation (org 6.4 defs hardcoded)
62299         MSTJ(11)=4
62300         PARJ(41)=0.3
62301         PARJ(42)=0.58
62302         MSTJ(22)=2
62303 C...AMBT1 mentions 46 explicitly, but Z1 doesn't ...         
62304         PARJ(46)=0.75
62305         IF (ITUNE.GE.341.AND.ITUNE.LE.344) THEN
62306 C...Reset PARJ(46) to org def value for Z1 and Z2
62307           PARJ(46)=1.0
62308         ENDIF
62309 
62310         IF (M13.GE.1) THEN
62311           IF (ITUNE.LT.340) THEN
62312             CH60='Tuned by ATLAS, ATL-PHYS-PUB-2010-002'
62313           ELSEIF (ITUNE.EQ.340) THEN
62314             CH60='Tuned by ATLAS, ATLAS-CONF-2010-031'
62315           ELSEIF (ITUNE.EQ.341) THEN
62316             CH60='AMBT1 Tuned by ATLAS, ATLAS-CONF-2010-031'
62317             WRITE(M11,5030) CH60
62318             CH60='Z1 variation tuned by R. D. Field (CMS)'
62319           ELSEIF (ITUNE.EQ.342) THEN
62320             CH60='AMBT1 Tuned by ATLAS, ATLAS-CONF-2010-031'
62321             WRITE(M11,5030) CH60
62322             CH60='Z1 variation retuned by R. D. Field (CMS)'
62323             WRITE(M11,5030) CH60
62324             CH60='Z1-LEP variation retuned by Professor / P. Skands'
62325           ELSEIF (ITUNE.EQ.343) THEN
62326             CH60='AMBT1 Tuned by ATLAS, ATLAS-CONF-2010-031'
62327             WRITE(M11,5030) CH60
62328             CH60='Z2 variation retuned by R. D. Field (CMS)'
62329           ELSEIF (ITUNE.EQ.344) THEN
62330             CH60='AMBT1 Tuned by ATLAS, ATLAS-CONF-2010-031'
62331             WRITE(M11,5030) CH60
62332             CH60='Z2 variation retuned by R. D. Field (CMS)'
62333             WRITE(M11,5030) CH60
62334             CH60='Z2-LEP variation retuned by Professor / P. Skands'
62335           ENDIF
62336           WRITE(M11,5030) CH60
62337           CH60='Physics Model: '//
62338      &         'T. Sjostrand & P. Skands, hep-ph/0408302'
62339           WRITE(M11,5030) CH60
62340           CH60='CR by M. Sandhoff & P. Skands, in hep-ph/0604120'
62341           WRITE(M11,5030) CH60
62342 
62343 C...Output
62344           WRITE(M11,5030) ' '
62345           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
62346           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
62347           WRITE(M11,5040)  3, MSTP( 3), CHMSTP( 3)
62348           IF (MSTP(70).EQ.0) THEN
62349             WRITE(M11,5050) 62, PARP(62), CHPARP(62)
62350           ENDIF
62351           WRITE(M11,5040) 64, MSTP(64), CHMSTP(64)
62352           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
62353           WRITE(M11,5040) 67, MSTP(67), CHMSTP(67)
62354           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
62355           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
62356           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
62357           WRITE(M11,5030) CH60
62358           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
62359           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
62360           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
62361           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
62362           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
62363           WRITE(M11,5040) 33, MSTP(33), CHMSTP(33)
62364           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62365           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
62366           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
62367           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
62368           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62369           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
62370           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
62371           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
62372           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
62373           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
62374           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
62375           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
62376           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
62377           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
62378           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
62379           IF (MSTP(95).GE.1) THEN
62380             WRITE(M11,5050) 78, PARP(78), CHPARP(78)
62381             IF (MSTP(95).GE.2) WRITE(M11,5050) 77, PARP(77), CHPARP(77)
62382           ENDIF
62383 
62384         ENDIF
62385 
62386 C=======================================================================
62387 C...S0, S1, S2, S0A, NOCR, Rap,
62388 C...S0-Pro, S1-Pro, S2-Pro, S0A-Pro, NOCR-Pro, Rap-Pro
62389 C...Perugia 0, HARD, SOFT, 3, LO*, 6, 2010, K
62390 C...Pro-pTO, Pro-PT*, Pro-PT6, Pro-PT**
62391 C...Perugia 2011 (incl variations)
62392 C...Schulz-Skands tunes
62393       ELSEIF ((ITUNE.GE.300.AND.ITUNE.LE.305)
62394      &    .OR.(ITUNE.GE.310.AND.ITUNE.LE.315)
62395      &    .OR.(ITUNE.GE.320.AND.ITUNE.LE.329)
62396      &    .OR.(ITUNE.GE.334.AND.ITUNE.LE.336).OR.ITUNE.EQ.339
62397      &    .OR.(ITUNE.GE.350.AND.ITUNE.LE.365)) THEN
62398         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
62399         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
62400           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
62401      &        ' with tune.')
62402         ELSEIF(ITUNE.GE.320.AND.ITUNE.LE.339.AND.ITUNE.NE.324.AND.
62403      &         ITUNE.NE.334.AND.
62404      &        (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.419)))
62405      &        THEN
62406           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
62407      &        ' with tune.')
62408         ELSEIF((ITUNE.EQ.327.OR.ITUNE.EQ.328.OR.ITUNE.GE.350).AND.
62409      &         (MSTP(181).LE.5.OR.
62410      &         (MSTP(181).EQ.6.AND.MSTP(182).LE.422)))
62411      &        THEN
62412           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
62413      &        ' with tune.')
62414         ENDIF
62415  
62416 C...Use 327 as base tune for 350-359 (Perugia 2011)
62417         ITUNSV = ITUNE
62418         IF (ITUNE.GE.350.AND.ITUNE.LE.359) ITUNE = 327
62419 C...Use 320 as base tune for 360+ (Schulz-Skands)
62420         IF (ITUNE.GE.360) ITUNE = 320
62421 
62422 C...HAD: Use Professor's LEP pars if ITUNE >= 310
62423 C...(i.e., for S0-Pro, S1-Pro etc, and for Perugia tunes)
62424         IF (ITUNE.LT.310) THEN
62425 C...# Old defaults
62426           MSTJ(11) = 4
62427 C...# Old default flavour parameters
62428           PARJ(1)  =   0.1
62429           PARJ(2)  =   0.3  
62430           PARJ(3)  =   0.40 
62431           PARJ(4)  =   0.05 
62432           PARJ(11) =   0.5  
62433           PARJ(12) =   0.6 
62434           PARJ(21) = 0.36
62435           PARJ(41) = 0.30
62436           PARJ(42) = 0.58
62437           PARJ(46) = 1.0
62438           PARJ(82) = 1.0
62439           
62440         ELSEIF (ITUNE.GE.310) THEN
62441 C...# Tuned flavour parameters:
62442           PARJ(1)  = 0.073
62443           PARJ(2)  = 0.2
62444           PARJ(3)  = 0.94
62445           PARJ(4)  = 0.032
62446           PARJ(11) = 0.31
62447           PARJ(12) = 0.4
62448           PARJ(13) = 0.54
62449           PARJ(25) = 0.63
62450           PARJ(26) = 0.12
62451 C...# Always use pT-ordered shower:
62452           MSTJ(41) = 12
62453 C...# Switch on Bowler:
62454           MSTJ(11) = 5
62455 C...# Fragmentation
62456           PARJ(21) = 0.313
62457           PARJ(41) = 0.49
62458           PARJ(42) = 1.2
62459           PARJ(47) = 1.0
62460           PARJ(81) = 0.257
62461           PARJ(82) = 0.8
62462 
62463 C...HAD: fragmentation pT (only if not using professor) - HARD and SOFT
62464           IF (ITUNE.EQ.321) PARJ(21)=0.34D0
62465           IF (ITUNE.EQ.322) PARJ(21)=0.28D0
62466 
62467 C...HAD: P-2010 and P-K use different strangeness parameters 
62468 C...     indicated by LEP and RHIC yields.
62469 C...(only 5% different from Professor values, so should be within acceptable
62470 C...theoretical uncertainty range)
62471 C...(No attempt made to retune other flavor parameters post facto)
62472           IF (ITUNE.EQ.327.OR.ITUNE.EQ.328.OR.ITUNE.EQ.334) THEN
62473             PARJ( 1) = 0.08D0
62474             PARJ( 2) = 0.21D0
62475             PARJ( 4) = 0.04D0
62476             PARJ(11) = 0.35D0
62477             PARJ(12) = 0.35D0
62478             PARJ(21) = 0.36D0
62479             PARJ(41) = 0.35D0
62480             PARJ(42) = 0.90D0
62481             PARJ(81) = 0.26D0
62482             PARJ(82) = 1.0D0
62483           ENDIF 
62484         ENDIF
62485  
62486 C...Remove middle digit now for Professor variants, since identical pars
62487         ITUNEB=ITUNE
62488         IF (ITUNE.GE.310.AND.ITUNE.LE.319) THEN
62489           ITUNEB=(ITUNE/100)*100+MOD(ITUNE,10)
62490         ENDIF
62491  
62492 C...PDFs: all use CTEQ5L as starting point
62493         MSTP(52)=1
62494         MSTP(51)=7
62495         IF (ITUNE.EQ.325.OR.ITUNE.EQ.335) THEN
62496 C...MRST LO* for 325 and 335
62497           MSTP(52)=2
62498           MSTP(51)=20650
62499         ELSEIF (ITUNE.EQ.326.OR.ITUNE.EQ.336) THEN
62500 C...CTEQ6L1 for 326 and 336
62501           MSTP(52)=2
62502           MSTP(51)=10042
62503         ELSEIF (ITUNE.EQ.339) THEN
62504 C...MRST LO** for 339
62505           MSTP(52)=2
62506           MSTP(51)=20651
62507         ENDIF
62508  
62509 C...LambdaQCD choice: 327 and 328 use hardcoded, others get from PDF
62510         MSTP(3)=2
62511         IF (ITUNE.EQ.327.OR.ITUNE.EQ.328.OR.ITUNE.EQ.334) THEN
62512           MSTP(3)   = 1
62513 C...Hardcode CTEQ5L values for ME and ISR
62514           MSTU(112) = 4
62515           PARU(112) = 0.192D0
62516           PARP(61)  = 0.192D0
62517           PARP( 1)  = 0.192D0
62518 C...but use LEP value also for non-res FSR
62519           PARP(72)  = 0.260D0
62520         ENDIF
62521 
62522 C...ISR: use Lambda_MSbar with default scale for S0(A)
62523         MSTP(64)=2
62524         PARP(64)=1D0
62525         IF (ITUNE.EQ.320.OR.ITUNE.EQ.323.OR.ITUNE.EQ.324.OR.ITUNE.EQ.334
62526      &       .OR.ITUNE.EQ.326.OR.ITUNE.EQ.327.OR.ITUNE.EQ.328) THEN
62527 C...Use Lambda_MC with muR^2=pT^2 for most central Perugia tunes
62528           MSTP(64)=3
62529           PARP(64)=1D0
62530         ELSEIF (ITUNE.EQ.321) THEN
62531 C...Use Lambda_MC with muR^2=(1/2pT)^2 for Perugia HARD
62532           MSTP(64)=3
62533           PARP(64)=0.25D0
62534         ELSEIF (ITUNE.EQ.322) THEN
62535 C...Use Lambda_MSbar with muR^2=2pT^2 for Perugia SOFT
62536           MSTP(64)=2
62537           PARP(64)=2D0
62538         ELSEIF (ITUNE.EQ.325) THEN
62539 C...Use Lambda_MC with muR^2=2pT^2 for Perugia LO*
62540           MSTP(64)=3
62541           PARP(64)=2D0
62542         ELSEIF (ITUNE.EQ.329.OR.ITUNE.EQ.335.OR.ITUNE.EQ.336.OR.
62543      &         ITUNE.EQ.339) THEN
62544 C...Use Lambda_MSbar with P64=1.3 for Pro-pT0
62545           MSTP(64)=2
62546           PARP(64)=1.3D0
62547           IF (ITUNE.EQ.335) PARP(64)=0.92D0
62548           IF (ITUNE.EQ.336) PARP(64)=0.89D0
62549           IF (ITUNE.EQ.339) PARP(64)=0.97D0
62550         ENDIF
62551  
62552 C...ISR : power-suppressed power showers above s_color (since 6.4.19)
62553         MSTP(67)=2
62554         PARP(67)=4D0
62555 C...Perugia tunes have stronger suppression, except HARD
62556         IF ((ITUNE.GE.320.AND.ITUNE.LE.328).OR.ITUNE.EQ.334) THEN
62557           PARP(67)=1D0
62558           IF (ITUNE.EQ.321) PARP(67)=4D0
62559           IF (ITUNE.EQ.322) PARP(67)=0.25D0
62560         ENDIF
62561  
62562 C...ISR IR cutoff type and FSR off ISR setting:
62563 C...Smooth ISR, low FSR-off-ISR
62564         MSTP(70)=2
62565         MSTP(72)=0
62566         IF (ITUNEB.EQ.301) THEN
62567 C...S1, S1-Pro: sharp ISR, high FSR
62568           MSTP(70)=0
62569           MSTP(72)=1
62570         ELSEIF (ITUNE.EQ.320.OR.ITUNE.EQ.324.OR.ITUNE.EQ.326
62571      &        .OR.ITUNE.EQ.325) THEN
62572 C...Perugia default is smooth ISR, high FSR-off-ISR
62573           MSTP(70)=2
62574           MSTP(72)=1
62575         ELSEIF (ITUNE.EQ.321) THEN
62576 C...Perugia HARD: sharp ISR, high FSR-off-ISR (but no dip-to-BR rad)
62577           MSTP(70)=0
62578           PARP(62)=1.25D0
62579           MSTP(72)=1
62580         ELSEIF (ITUNE.EQ.322) THEN
62581 C...Perugia SOFT: scaling sharp ISR, low FSR-off-ISR
62582           MSTP(70)=1
62583           PARP(81)=1.5D0
62584           MSTP(72)=0
62585         ELSEIF (ITUNE.EQ.323) THEN
62586 C...Perugia 3: sharp ISR, high FSR-off-ISR (with dipole-to-BR radiating)
62587           MSTP(70)=0
62588           PARP(62)=1.25D0
62589           MSTP(72)=2
62590         ELSEIF (ITUNE.EQ.327.OR.ITUNE.EQ.328.OR.ITUNE.EQ.334) THEN
62591 C...Perugia 2010/K: smooth ISR, high FSR-off-ISR (with dipole-to-BR radiating)
62592           MSTP(70)=2
62593           MSTP(72)=2
62594         ENDIF
62595  
62596 C...FSR activity: Perugia tunes use a lower PARP(71) as indicated 
62597 C...by Professor tunes (with HARD and SOFT variations)
62598         PARP(71)=4D0
62599         IF ((ITUNE.GE.320.AND.ITUNE.LE.328).OR.ITUNE.EQ.334) THEN 
62600           PARP(71)=2D0
62601           IF (ITUNE.EQ.321) PARP(71)=4D0
62602           IF (ITUNE.EQ.322) PARP(71)=1D0
62603         ENDIF
62604         IF (ITUNE.EQ.329) PARP(71)=2D0
62605         IF (ITUNE.EQ.335) PARP(71)=1.29D0
62606         IF (ITUNE.EQ.336) PARP(71)=1.72D0
62607         IF (ITUNE.EQ.339) PARP(71)=1.20D0
62608 
62609 C...FSR: Lambda_FSR scale (only if not using professor)
62610         IF (ITUNE.LT.310) PARJ(81)=0.23D0
62611         IF (ITUNE.EQ.321) PARJ(81)=0.30D0
62612         IF (ITUNE.EQ.322) PARJ(81)=0.20D0
62613 
62614 C...K-factor : only 328 uses a K-factor on the UE cross sections
62615         MSTP(33)=0
62616         IF (ITUNE.EQ.328) THEN
62617           MSTP(33)=10
62618           PARP(32)=1.5
62619         ENDIF
62620 C...UE on, new model
62621         MSTP(81)=21
62622  
62623 C...UE: hadron-hadron overlap profile (expOfPow for all)
62624         MSTP(82)=5
62625 C...UE: Overlap smoothness (1.0 = exponential; 2.0 = gaussian)
62626         PARP(83)=1.6D0
62627         IF (ITUNEB.EQ.301) PARP(83)=1.4D0
62628         IF (ITUNEB.EQ.302) PARP(83)=1.2D0
62629 C...NOCR variants have very smooth distributions
62630         IF (ITUNEB.EQ.304) PARP(83)=1.8D0
62631         IF (ITUNEB.EQ.305) PARP(83)=2.0D0
62632         IF ((ITUNE.GE.320.AND.ITUNE.LE.328).OR.ITUNE.EQ.334) THEN
62633 C...Perugia variants have slightly smoother profiles by default
62634 C...(to compensate for more tail by added radiation)
62635 C...Perugia-SOFT has more peaked distribution, NOCR less peaked
62636           PARP(83)=1.7D0
62637           IF (ITUNE.EQ.322) PARP(83)=1.5D0
62638           IF (ITUNE.EQ.327) PARP(83)=1.5D0
62639           IF (ITUNE.EQ.328) PARP(83)=1.5D0
62640 C...NOCR variants have smoother mass profiles
62641           IF (ITUNE.EQ.324) PARP(83)=1.8D0
62642           IF (ITUNE.EQ.334) PARP(83)=1.8D0
62643         ENDIF
62644 C...Professor-pT0 also has very smooth distribution
62645         IF (ITUNE.EQ.329) PARP(83)=1.8
62646         IF (ITUNE.EQ.335) PARP(83)=1.68
62647         IF (ITUNE.EQ.336) PARP(83)=1.72
62648         IF (ITUNE.EQ.339) PARP(83)=1.67
62649 
62650 C...UE: pT0 = 1.85 for S0, S0A, 2.0 for Perugia version
62651         PARP(82)=1.85D0
62652         IF (ITUNEB.EQ.301) PARP(82)=2.1D0
62653         IF (ITUNEB.EQ.302) PARP(82)=1.9D0
62654         IF (ITUNEB.EQ.304) PARP(82)=2.05D0
62655         IF (ITUNEB.EQ.305) PARP(82)=1.9D0
62656         IF ((ITUNE.GE.320.AND.ITUNE.LE.328).OR.ITUNE.EQ.334) THEN
62657 C...Perugia tunes (def is 2.0 GeV, HARD has higher, SOFT has lower,
62658 C...Perugia-3 has more ISR, so higher pT0, NOCR can be slightly lower,
62659 C...CTEQ6L1 slightly lower, due to less activity, and LO* needs to be
62660 C...slightly higher, due to increased activity.
62661           PARP(82)=2.0D0
62662           IF (ITUNE.EQ.321) PARP(82)=2.3D0
62663           IF (ITUNE.EQ.322) PARP(82)=1.9D0
62664           IF (ITUNE.EQ.323) PARP(82)=2.2D0
62665           IF (ITUNE.EQ.324) PARP(82)=1.95D0
62666           IF (ITUNE.EQ.325) PARP(82)=2.2D0
62667           IF (ITUNE.EQ.326) PARP(82)=1.95D0
62668           IF (ITUNE.EQ.327) PARP(82)=2.05D0
62669           IF (ITUNE.EQ.328) PARP(82)=2.45D0
62670           IF (ITUNE.EQ.334) PARP(82)=2.15D0
62671         ENDIF
62672 C...Professor-pT0 maintains low pT0 vaue
62673         IF (ITUNE.EQ.329) PARP(82)=1.85D0
62674         IF (ITUNE.EQ.335) PARP(82)=2.10D0
62675         IF (ITUNE.EQ.336) PARP(82)=1.83D0
62676         IF (ITUNE.EQ.339) PARP(82)=2.28D0
62677 
62678 C...UE: IR cutoff reference energy and default energy scaling pace
62679         PARP(89)=1800D0
62680         PARP(90)=0.16D0
62681 C...S0A, S0A-Pro have tune A energy scaling
62682         IF (ITUNEB.EQ.303) PARP(90)=0.25D0
62683         IF ((ITUNE.GE.320.AND.ITUNE.LE.328).OR.ITUNE.EQ.334) THEN
62684 C...Perugia tunes explicitly include MB at 630 to fix energy scaling
62685           PARP(90)=0.26
62686           IF (ITUNE.EQ.321) PARP(90)=0.30D0
62687           IF (ITUNE.EQ.322) PARP(90)=0.24D0
62688           IF (ITUNE.EQ.323) PARP(90)=0.32D0
62689           IF (ITUNE.EQ.324) PARP(90)=0.24D0
62690 C...LO* and CTEQ6L1 tunes have slower energy scaling
62691           IF (ITUNE.EQ.325) PARP(90)=0.23D0
62692           IF (ITUNE.EQ.326) PARP(90)=0.22D0
62693         ENDIF
62694 C...Professor-pT0 has intermediate scaling
62695         IF (ITUNE.EQ.329) PARP(90)=0.22D0
62696         IF (ITUNE.EQ.335) PARP(90)=0.20D0
62697         IF (ITUNE.EQ.336) PARP(90)=0.20D0
62698         IF (ITUNE.EQ.339) PARP(90)=0.21D0
62699 
62700 C...BR: MPI initiator color connections rap-ordered by default
62701 C...NOCR variants are Lambda-ordered, Perugia SOFT & 2010 random-ordered
62702         MSTP(89)=1
62703         IF (ITUNEB.EQ.304.OR.ITUNE.EQ.324) MSTP(89)=2
62704         IF (ITUNE.EQ.322) MSTP(89)=0
62705         IF (ITUNE.EQ.327) MSTP(89)=0
62706         IF (ITUNE.EQ.328) MSTP(89)=0
62707  
62708 C...BR: BR-g-BR suppression factor (higher values -> more beam blowup)
62709         PARP(80)=0.01D0
62710         IF (ITUNE.GE.320.AND.ITUNE.LE.328) THEN
62711 C...Perugia tunes have more beam blowup by default
62712           PARP(80)=0.05D0
62713           IF (ITUNE.EQ.321) PARP(80)=0.01
62714           IF (ITUNE.EQ.323) PARP(80)=0.03
62715           IF (ITUNE.EQ.324) PARP(80)=0.01
62716           IF (ITUNE.EQ.327) PARP(80)=0.1
62717           IF (ITUNE.EQ.328) PARP(80)=0.1
62718         ENDIF
62719  
62720 C...BR: diquarks (def = valence qq and moderate diquark x enhancement)
62721         MSTP(88)=0
62722         PARP(79)=2D0
62723         IF (ITUNEB.EQ.304) PARP(79)=3D0
62724         IF (ITUNE.EQ.329) PARP(79)=1.18
62725         IF (ITUNE.EQ.335) PARP(79)=1.11
62726         IF (ITUNE.EQ.336) PARP(79)=1.10
62727         IF (ITUNE.EQ.339) PARP(79)=3.69
62728 
62729 C...BR: Primordial kT, parametrization and cutoff, default is 2 GeV
62730         MSTP(91)=1
62731         PARP(91)=2D0
62732         PARP(93)=10D0
62733 C...Perugia-HARD only uses 1.0 GeV
62734         IF (ITUNE.EQ.321) PARP(91)=1.0D0
62735 C...Perugia-3 only uses 1.5 GeV
62736         IF (ITUNE.EQ.323) PARP(91)=1.5D0
62737 C...Professor-pT0 uses 7-GeV cutoff
62738         IF (ITUNE.EQ.329) PARP(93)=7.0
62739         IF (ITUNE.EQ.335) THEN
62740           PARP(91)=2.15
62741           PARP(93)=6.79
62742         ELSEIF (ITUNE.EQ.336) THEN
62743           PARP(91)=1.85
62744           PARP(93)=6.86
62745         ELSEIF (ITUNE.EQ.339) THEN
62746           PARP(91)=2.11
62747           PARP(93)=5.08
62748         ENDIF
62749 
62750 C...FSI: Colour Reconnections - Seattle algorithm is default (S0)
62751         MSTP(95)=6
62752 C...S1, S1-Pro: use S1
62753         IF (ITUNEB.EQ.301) MSTP(95)=2
62754 C...S2, S2-Pro: use S2
62755         IF (ITUNEB.EQ.302) MSTP(95)=4
62756 C...NOCR, NOCR-Pro, Perugia-NOCR: use no CR
62757         IF (ITUNE.EQ.304.OR.ITUNE.EQ.314.OR.ITUNE.EQ.324.OR.
62758      &       ITUNE.EQ.334) MSTP(95)=0
62759 C..."Old" and "Old"-Pro: use old CR
62760         IF (ITUNEB.EQ.305) MSTP(95)=1
62761 C...Perugia 2010 and K use Paquis model
62762         IF (ITUNE.EQ.327.OR.ITUNE.EQ.328) MSTP(95)=8
62763  
62764 C...FSI: CR strength and high-pT dampening, default is S0
62765         PARP(77)=0D0
62766         IF (ITUNE.LT.320.OR.ITUNE.EQ.329.OR.ITUNE.GE.335) THEN
62767           PARP(78)=0.2D0
62768           IF (ITUNEB.EQ.301) PARP(78)=0.35D0
62769           IF (ITUNEB.EQ.302) PARP(78)=0.15D0
62770           IF (ITUNEB.EQ.304) PARP(78)=0.0D0
62771           IF (ITUNEB.EQ.305) PARP(78)=1.0D0
62772           IF (ITUNE.EQ.329) PARP(78)=0.17D0
62773           IF (ITUNE.EQ.335) PARP(78)=0.14D0
62774           IF (ITUNE.EQ.336) PARP(78)=0.17D0
62775           IF (ITUNE.EQ.339) PARP(78)=0.13D0
62776         ELSE
62777 C...Perugia tunes also use high-pT dampening : default is Perugia 0,*,6
62778           PARP(78)=0.33
62779           PARP(77)=0.9D0
62780           IF (ITUNE.EQ.321) THEN
62781 C...HARD has HIGH amount of CR
62782             PARP(78)=0.37D0
62783             PARP(77)=0.4D0
62784           ELSEIF (ITUNE.EQ.322) THEN
62785 C...SOFT has LOW amount of CR
62786             PARP(78)=0.15D0
62787             PARP(77)=0.5D0
62788           ELSEIF (ITUNE.EQ.323) THEN
62789 C...Scaling variant appears to need slightly more than default
62790             PARP(78)=0.35D0
62791             PARP(77)=0.6D0
62792           ELSEIF (ITUNE.EQ.324.OR.ITUNE.EQ.334) THEN
62793 C...NOCR has no CR
62794             PARP(78)=0D0
62795             PARP(77)=0D0
62796           ELSEIF (ITUNE.EQ.327) THEN
62797 C...2010
62798             PARP(78)=0.035D0
62799             PARP(77)=1D0
62800           ELSEIF (ITUNE.EQ.328) THEN
62801 C...K
62802             PARP(78)=0.033D0
62803             PARP(77)=1D0
62804           ENDIF
62805         ENDIF
62806  
62807 C================
62808 C...Perugia 2011 tunes 
62809 C...(written as modifications on top of Perugia 2010)
62810 C================
62811         IF (ITUNSV.GE.350.AND.ITUNSV.LE.359) THEN
62812           ITUNE = ITUNSV
62813 C...  Scale setting for matching applications.
62814 C...  Switch to 5-flavor CMW LambdaQCD = 0.26 for all shower activity
62815 C...  (equivalent to a 5-flavor MSbar LambdaQCD = 0.26/1.6 = 0.16)
62816           MSTP(64)=2
62817           MSTU(112)=5
62818 C...  This sets the Lambda scale for ISR, IFSR, and FSR
62819           PARP(61)=0.26D0
62820           PARP(72)=0.26D0
62821           PARJ(81)=0.26D0
62822 C...  This sets the Lambda scale for QCD hard interactions (important for the 
62823 C...  UE dijet cross sections. Here we still use an MSbar value, rather than 
62824 C...  a CMW one, in order not to hugely increase the UE jettiness. The CTEQ5L
62825 C...  value corresponds to a Lambda5 of 0.146 for comparison, so quite close.)
62826           PARP(1)=0.16D0
62827           PARU(112)=0.16D0
62828 C...  For matching applications, PARP(71) and PARP(67) = 1
62829           PARP(67) = 1D0
62830           PARP(71) = 1D0
62831 C...  Primordial kT: only use 1 GeV
62832           MSTP(91)=1
62833           PARP(91)=1D0
62834 C...  ADDITIONAL LESSONS WRT PERUGIA 2010
62835 C...  ALICE taught us: need less baryon transport than SOFT
62836           MSTP(89)=0
62837           PARP(80)=0.015
62838 C...  Small adjustments at LEP (slightly softer frag functions, esp for baryons)
62839           PARJ(21)=0.33
62840           PARJ(41)=0.35
62841           PARJ(42)=0.8
62842           PARJ(45)=0.55
62843 C...  Increase Lambda/K ratio and other strange baryon yields 
62844           PARJ(1)=0.087D0
62845           PARJ(3)=0.95D0
62846           PARJ(4)=0.043D0
62847           PARJ(6)=1.0D0
62848           PARJ(7)=1.0D0
62849 C...  Also reduce total strangeness yield a bit, with higher K*/K
62850           PARJ(2)=0.19D0
62851           PARJ(12)=0.40D0
62852 C...  Perugia 2011 default is sharp ISR, dipoles to BR radiating, pTmax individual
62853           MSTP(70)=0
62854           MSTP(72)=2
62855           PARP(62)=1.5D0
62856 C...  Holger taught us a smoother proton is preferred at high energies
62857 C...  Just use a simple Gaussian 
62858           MSTP(82)=3
62859 C...  Scaling of pt0 cutoff
62860           PARP(90)=0.265
62861 C...  Now retune pT0 to give right UE activity.
62862 C...  Low CR strength indicated by LHC tunes 
62863 C...  (also keep low to get <pT>(Nch) a bit down for pT>100MeV samples)
62864           PARP(78)=0.036D0
62865 C...  Choose 7 TeV as new reference scale
62866           PARP(89)=7000.0D0
62867           PARP(82)=2.93D0          
62868 C================
62869 C...  P2011 Variations
62870 C================
62871           IF (ITUNE.EQ.351) THEN
62872 C...  radHi: high Lambda scale for ISR, IFSR, and FSR
62873 C...  ( ca 10% more particles at LEP after retune )
62874             PARP(61)=0.52D0
62875             PARP(72)=0.52D0
62876             PARJ(81)=0.52D0
62877 C...  Retune cutoff scales to compensate partially
62878 C...  (though higher cutoff causes faster multiplicity drop at low energies)
62879             PARP(62)=1.75D0
62880             PARJ(82)=1.75D0
62881             PARP(82)=3.00D0
62882 C...  Needs faster cutoff scaling than nominal variant for same <Nch> scaling
62883 C...  (since more radiation otherwise generates faster mult growth)
62884             PARP(90)=0.28  
62885           ELSEIF (ITUNE.EQ.352) THEN
62886 C...  radLo: low Lambda scale for ISR, IFSR, and FSR
62887 C...  ( ca 10% less particles at LEP after retune )
62888             PARP(61)=0.13D0
62889             PARP(72)=0.13D0
62890             PARJ(81)=0.13D0
62891 C...  Retune cutoff scales to compensate partially
62892             PARP(62)=1.00D0
62893             PARJ(82)=0.75D0
62894             PARP(82)=2.95D0 
62895 C...  Needs slower cutoff scaling than nominal variant for same <Nch> scaling
62896 C...  (since less radiation otherwise generates slower mult growth)
62897             PARP(90)=0.24
62898           ELSEIF (ITUNE.EQ.353) THEN
62899 C...  mpiHi: high Lambda scale for MPI
62900             PARP(1)=0.26D0
62901             PARU(112)=0.26D0
62902             PARP(82)=3.35D0
62903             PARP(90)=0.26D0
62904           ELSEIF (ITUNE.EQ.354) THEN
62905             MSTP(95)=0
62906             PARP(82)=3.05D0
62907           ELSEIF (ITUNE.EQ.355) THEN
62908 C...  LO**
62909             MSTP(52)=2
62910             MSTP(51)=20651
62911             PARP(62)=1.5D0
62912 C...  Compensate for higher <pT> with less CR
62913             PARP(78)=0.034
62914             PARP(82)=3.40D0 
62915 C...  Need slower energy scaling than CTEQ5L
62916             PARP(90)=0.23D0 
62917           ELSEIF (ITUNE.EQ.356) THEN
62918 C...  CTEQ6L1
62919             MSTP(52)=2
62920             MSTP(51)=10042
62921             PARP(82)=2.65D0
62922 C...  Need slower cutoff scaling than CTEQ5L
62923             PARP(90)=0.22D0 
62924           ELSEIF (ITUNE.EQ.357) THEN
62925 C...  T16
62926             PARP(90)=0.16
62927           ELSEIF (ITUNE.EQ.358) THEN
62928 C...  T32
62929             PARP(90)=0.32
62930           ELSEIF (ITUNE.EQ.359) THEN
62931 C...  Tevatron
62932             PARP(89)=1800D0
62933             PARP(90)=0.28 
62934             PARP(82)=2.10 
62935             PARP(78)=0.05 
62936           ENDIF
62937           
62938 C================
62939 C...Schulz-Skands 2011 tunes 
62940 C...(written as modifications on top of Perugia 0)
62941 C================
62942         ELSEIF (ITUNSV.GE.360.AND.ITUNSV.LE.365) THEN
62943           ITUNE = ITUNSV
62944 
62945           IF (ITUNE.EQ.360) THEN
62946             PARP(78)=0.40D0
62947             PARP(82)=2.19D0
62948             PARP(83)=1.45D0
62949             PARP(89)=1800.0D0
62950             PARP(90)=0.27D0
62951           ELSEIF (ITUNE.EQ.361) THEN
62952             PARP(78)=0.20D0
62953             PARP(82)=2.75D0
62954             PARP(83)=1.73D0
62955             PARP(89)=7000.0D0
62956           ELSEIF (ITUNE.EQ.362) THEN
62957             PARP(78)=0.31D0
62958             PARP(82)=1.97D0
62959             PARP(83)=1.98D0
62960             PARP(89)=1960.0D0
62961           ELSEIF (ITUNE.EQ.363) THEN
62962             PARP(78)=0.35D0
62963             PARP(82)=1.91D0
62964             PARP(83)=2.02D0
62965             PARP(89)=1800.0D0
62966           ELSEIF (ITUNE.EQ.364) THEN
62967             PARP(78)=0.33D0
62968             PARP(82)=1.69D0
62969             PARP(83)=1.92D0
62970             PARP(89)=900.0D0
62971           ELSEIF (ITUNE.EQ.365) THEN
62972             PARP(78)=0.47D0
62973             PARP(82)=1.61D0
62974             PARP(83)=1.50D0
62975             PARP(89)=630.0D0
62976           ENDIF
62977 
62978         ENDIF
62979         
62980 C...Switch off trial joinings
62981         MSTP(96)=0
62982  
62983 C...S0 (300), S0A (303)
62984         IF (ITUNEB.EQ.300.OR.ITUNEB.EQ.303) THEN
62985           IF (M13.GE.1) THEN
62986             CH60='see P. Skands & D. Wicke, hep-ph/0703081'
62987             WRITE(M11,5030) CH60
62988             CH60='M. Sandhoff & P. Skands, in hep-ph/0604120'
62989             WRITE(M11,5030) CH60
62990             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
62991             WRITE(M11,5030) CH60
62992             IF (ITUNE.GE.310) THEN
62993               CH60='LEP parameters tuned by Professor,'//
62994      &             ' hep-ph/0907.2973'
62995               WRITE(M11,5030) CH60
62996             ENDIF
62997           ENDIF
62998  
62999 C...S1 (301)
63000         ELSEIF(ITUNEB.EQ.301) THEN
63001           IF (M13.GE.1) THEN
63002             CH60='see M. Sandhoff & P. Skands, in hep-ph/0604120'
63003             WRITE(M11,5030) CH60
63004             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
63005             WRITE(M11,5030) CH60
63006             IF (ITUNE.GE.310) THEN
63007               CH60='LEP parameters tuned by Professor,'//
63008      &             ' hep-ph/0907.2973'
63009               WRITE(M11,5030) CH60
63010             ENDIF
63011           ENDIF
63012  
63013 C...S2 (302)
63014         ELSEIF(ITUNEB.EQ.302) THEN
63015           IF (M13.GE.1) THEN
63016             CH60='see M. Sandhoff & P. Skands, in hep-ph/0604120'
63017             WRITE(M11,5030) CH60
63018             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
63019             WRITE(M11,5030) CH60
63020             IF (ITUNE.GE.310) THEN
63021               CH60='LEP parameters tuned by Professor,'//
63022      &             ' hep-ph/0907.2973'
63023               WRITE(M11,5030) CH60
63024             ENDIF
63025           ENDIF
63026  
63027 C...NOCR (304)
63028         ELSEIF(ITUNEB.EQ.304) THEN
63029           IF (M13.GE.1) THEN
63030             CH60='"best try" without colour reconnections'
63031             WRITE(M11,5030) CH60
63032             CH60='see P. Skands & D. Wicke, hep-ph/0703081'
63033             WRITE(M11,5030) CH60
63034             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
63035             WRITE(M11,5030) CH60
63036             IF (ITUNE.GE.310) THEN
63037               CH60='LEP parameters tuned by Professor,'//
63038      &             ' hep-ph/0907.2973'
63039               WRITE(M11,5030) CH60
63040             ENDIF
63041           ENDIF
63042  
63043 C..."Lo FSR" retune (305)
63044         ELSEIF(ITUNEB.EQ.305) THEN
63045           IF (M13.GE.1) THEN
63046             CH60='"Lo FSR retune" with primitive colour reconnections'
63047             WRITE(M11,5030) CH60
63048             CH60='see T. Sjostrand & P. Skands, hep-ph/0408302'
63049             WRITE(M11,5030) CH60
63050             IF (ITUNE.GE.310) THEN
63051               CH60='LEP parameters tuned by Professor,'//
63052      &             ' hep-ph/0907.2973'
63053               WRITE(M11,5030) CH60
63054             ENDIF
63055           ENDIF
63056  
63057 C...Perugia Tunes (320-328 and 334)
63058         ELSEIF((ITUNE.GE.320.AND.ITUNE.LE.328).OR.ITUNE.EQ.334) THEN
63059           IF (M13.GE.1) THEN
63060             CH60='Tuned by P. Skands, hep-ph/1005.3457'
63061             WRITE(M11,5030) CH60
63062             CH60='Physics Model: '//
63063      &           'T. Sjostrand & P. Skands, hep-ph/0408302'
63064             WRITE(M11,5030) CH60
63065             IF (ITUNE.LE.326) THEN
63066               CH60='CR by M. Sandhoff & P. Skands, in hep-ph/0604120'
63067               WRITE(M11,5030) CH60
63068               CH60='LEP parameters tuned by Professor, hep-ph/0907.2973'
63069               WRITE(M11,5030) CH60
63070             ENDIF
63071             IF (ITUNE.EQ.325) THEN
63072               CH70='NB! This tune requires MRST LO* pdfs to be '//
63073      &            'externally linked'
63074               WRITE(M11,5035) CH70
63075             ELSEIF (ITUNE.EQ.326) THEN
63076               CH70='NB! This tune requires CTEQ6L1 pdfs to be '//
63077      &            'externally linked'
63078               WRITE(M11,5035) CH70
63079             ELSEIF (ITUNE.EQ.321) THEN
63080               CH60='NB! This tune has MORE ISR & FSR / LESS UE & BR'
63081               WRITE(M11,5030) CH60
63082             ELSEIF (ITUNE.EQ.322) THEN
63083               CH60='NB! This tune has LESS ISR & FSR / MORE UE & BR'
63084               WRITE(M11,5030) CH60
63085             ENDIF
63086           ENDIF
63087  
63088 C...Professor-pTO (329)
63089         ELSEIF(ITUNE.EQ.329.OR.ITUNE.EQ.335.OR.ITUNE.EQ.336.OR.
63090      &         ITUNE.EQ.339) THEN
63091           IF (M13.GE.1) THEN
63092             CH60='Tuned by Professor, hep-ph/0907.2973'
63093             WRITE(M11,5030) CH60 
63094             CH60='Physics Model: '//
63095      &           'T. Sjostrand & P. Skands, hep-ph/0408302'
63096             WRITE(M11,5030) CH60
63097             CH60='CR by M. Sandhoff & P. Skands, in hep-ph/0604120'
63098             WRITE(M11,5030) CH60
63099           ENDIF
63100  
63101 C...Perugia 2011 Tunes (350-359)
63102         ELSEIF(ITUNE.GE.350.AND.ITUNE.LE.359) THEN
63103           IF (M13.GE.1) THEN
63104             CH60='Tuned by P. Skands, hep-ph/1005.3457'
63105             WRITE(M11,5030) CH60
63106             CH60='Physics Model: '//
63107      &           'T. Sjostrand & P. Skands, hep-ph/0408302'
63108             WRITE(M11,5030) CH60
63109             CH60='CR by M. Sandhoff & P. Skands, in hep-ph/0604120'
63110             WRITE(M11,5030) CH60
63111             IF (ITUNE.EQ.355) THEN
63112               CH70='NB! This tune requires MRST LO** pdfs to be '//
63113      &            'externally linked'
63114               WRITE(M11,5035) CH70
63115             ELSEIF (ITUNE.EQ.356) THEN
63116               CH70='NB! This tune requires CTEQ6L1 pdfs to be '//
63117      &            'externally linked'
63118               WRITE(M11,5035) CH70
63119             ENDIF
63120           ENDIF
63121 
63122 C...Schulz-Skands Tunes (360-365)
63123         ELSEIF(ITUNE.GE.360.AND.ITUNE.LE.365) THEN
63124           IF (M13.GE.1) THEN
63125             CH60='Tuned by H. Schulz & P. Skands, MCNET-11-07'
63126             WRITE(M11,5030) CH60
63127             CH60='Based on Perugia 0, hep-ph/1005.3457'
63128             WRITE(M11,5030) CH60
63129             CH60='Physics Model: '//
63130      &           'T. Sjostrand & P. Skands, hep-ph/0408302'
63131             WRITE(M11,5030) CH60
63132             CH60='CR by M. Sandhoff & P. Skands, in hep-ph/0604120'
63133             WRITE(M11,5030) CH60
63134           ENDIF
63135  
63136         ENDIF
63137  
63138 C...Output
63139         IF (M13.GE.1) THEN
63140           WRITE(M11,5030) ' '
63141           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
63142           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
63143           IF (MSTP(33).GE.10) THEN
63144             WRITE(M11,5050) 32, PARP(32), CHPARP(32)
63145           ENDIF
63146           WRITE(M11,5040)  3, MSTP( 3), CHMSTP( 3)
63147           IF (MSTP(3).EQ.1) THEN
63148             WRITE(M11,6100) 112, MSTU(112), CHMSTU(112)
63149             WRITE(M11,6110) 112, PARU(112), CHPARU(112)
63150             WRITE(M11,5050)   1, PARP(1)  , CHPARP(  1)
63151           ENDIF
63152           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
63153           IF (MSTP(3).EQ.1) 
63154      &         WRITE(M11,5050)  72, PARP(72) , CHPARP( 72)
63155           IF (MSTP(3).EQ.1) THEN
63156             WRITE(M11,5050)  61, PARP(61) , CHPARP( 61)
63157           ENDIF
63158           WRITE(M11,5040) 64, MSTP(64), CHMSTP(64)
63159           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
63160           WRITE(M11,5040) 67, MSTP(67), CHMSTP(67)
63161           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
63162           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
63163           WRITE(M11,5030) CH60
63164           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
63165           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
63166           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
63167           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
63168           IF (MSTP(70).EQ.0) THEN
63169             WRITE(M11,5050) 62, PARP(62), CHPARP(62)
63170           ELSEIF (MSTP(70).EQ.1) THEN
63171             WRITE(M11,5050) 81, PARP(81), CHPARP(62)
63172             CH60='(Note: PARP(81) replaces PARP(62).)'
63173             WRITE(M11,5030) CH60
63174           ENDIF
63175           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
63176           WRITE(M11,5040) 33, MSTP(33), CHMSTP(33)
63177           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
63178           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
63179           IF (MSTP(70).EQ.2) THEN
63180             CH60='(Note: PARP(82) replaces PARP(62).)'
63181             WRITE(M11,5030) CH60
63182           ENDIF
63183           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
63184           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
63185           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
63186           IF (MSTP(82).EQ.5) THEN
63187             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
63188           ELSEIF (MSTP(82).EQ.4) THEN
63189             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
63190             WRITE(M11,5050) 84, PARP(84), CHPARP(84)
63191           ENDIF
63192           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
63193           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
63194           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
63195           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
63196           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
63197           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
63198           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
63199           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
63200           IF (MSTP(95).GE.1) THEN
63201             WRITE(M11,5050) 78, PARP(78), CHPARP(78)
63202             IF (MSTP(95).GE.2) WRITE(M11,5050) 77, PARP(77), CHPARP(77)
63203           ENDIF
63204 
63205         ENDIF
63206  
63207 C=======================================================================
63208 C...ATLAS-CSC 11-parameter tune (By A. Moraes)
63209       ELSEIF (ITUNE.EQ.306) THEN
63210         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
63211         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
63212           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
63213      &        ' with tune.')
63214         ENDIF
63215  
63216 C...PDFs
63217         MSTP(52)=2
63218         MSTP(54)=2
63219         MSTP(51)=10042
63220         MSTP(53)=10042
63221 C...ISR
63222 C        PARP(64)=1D0
63223 C...UE on, new model.
63224         MSTP(81)=21
63225 C...Energy scaling
63226         PARP(89)=1800D0
63227         PARP(90)=0.22D0
63228 C...Switch off trial joinings
63229         MSTP(96)=0
63230 C...Primordial kT cutoff
63231  
63232         IF (M13.GE.1) THEN
63233           CH60='see presentations by A. Moraes (ATLAS),'
63234           WRITE(M11,5030) CH60
63235           CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
63236           WRITE(M11,5030) CH60
63237           WRITE(M11,5030) ' '
63238           CH70='NB! This tune requires CTEQ6.1 pdfs to be '//
63239      &        'externally linked'
63240           WRITE(M11,5035) CH70
63241         ENDIF
63242 C...Smooth ISR, low FSR
63243         MSTP(70)=2
63244         MSTP(72)=0
63245 C...pT0
63246         PARP(82)=1.9D0
63247 C...Transverse density profile.
63248         MSTP(82)=4
63249         PARP(83)=0.3D0
63250         PARP(84)=0.5D0
63251 C...ISR & FSR in interactions after the first (default)
63252         MSTP(84)=1
63253         MSTP(85)=1
63254 C...No double-counting (default)
63255         MSTP(86)=2
63256 C...Companion quark parent gluon (1-x) power
63257         MSTP(87)=4
63258 C...Primordial kT compensation along chaings (default = 0 : uniform)
63259         MSTP(90)=1
63260 C...Colour Reconnections
63261         MSTP(95)=1
63262         PARP(78)=0.2D0
63263 C...Lambda_FSR scale.
63264         PARJ(81)=0.23D0
63265 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
63266         MSTP(89)=1
63267         MSTP(88)=0
63268 C   PARP(79)=2D0
63269         PARP(80)=0.01D0
63270 C...Peterson charm frag, and c and b hadr parameters
63271         MSTJ(11)=3
63272         PARJ(54)=-0.07
63273         PARJ(55)=-0.006
63274 C...  Output
63275         IF (M13.GE.1) THEN
63276           WRITE(M11,5030) ' '
63277           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
63278           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
63279           WRITE(M11,5040)  3, MSTP( 3), CHMSTP( 3)
63280           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
63281           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
63282           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
63283           WRITE(M11,5030) CH60
63284           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
63285           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
63286           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
63287           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
63288           CH60='(Note: PARJ(81) changed from 0.14! See update notes)'
63289           WRITE(M11,5030) CH60
63290           WRITE(M11,5040) 33, MSTP(33), CHMSTP(33)
63291           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
63292           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
63293           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
63294           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
63295           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
63296           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
63297           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
63298           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
63299           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
63300           WRITE(M11,5040) 90, MSTP(90), CHMSTP(90)
63301           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
63302           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
63303           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
63304           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
63305           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
63306 
63307         ENDIF
63308  
63309 C=======================================================================
63310 C...Tunes A, AW, BW, DW, DWT, QW, D6, D6T (by R.D. Field, CDF)
63311 C...(100-105,108-109), ATLAS-DC2 Tune (by A. Moraes, ATLAS) (106)
63312 C...A-Pro, DW-Pro, etc (100-119), and Pro-Q2O (129)
63313       ELSEIF ((ITUNE.GE.100.AND.ITUNE.LE.106).OR.ITUNE.EQ.108.OR.
63314      &      ITUNE.EQ.109.OR.(ITUNE.GE.110.AND.ITUNE.LE.116).OR.
63315      &      ITUNE.EQ.118.OR.ITUNE.EQ.119.OR.ITUNE.EQ.129) THEN
63316         IF (M13.GE.1.AND.ITUNE.NE.106.AND.ITUNE.NE.129) THEN
63317           WRITE(M11,5010) ITUNE, CHNAME
63318           CH60='see R.D. Field, in hep-ph/0610012'
63319           WRITE(M11,5030) CH60
63320           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
63321           WRITE(M11,5030) CH60
63322           IF (ITUNE.GE.110.AND.ITUNE.LE.119) THEN
63323             CH60='LEP parameters tuned by Professor, hep-ph/0907.2973'
63324             WRITE(M11,5030) CH60
63325           ENDIF
63326         ELSEIF (M13.GE.1.AND.ITUNE.EQ.129) THEN
63327           WRITE(M11,5010) ITUNE, CHNAME
63328           CH60='Tuned by Professor, hep-ph/0907.2973'
63329           WRITE(M11,5030) CH60
63330           CH60='Physics Model: '//
63331      &         'T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
63332           WRITE(M11,5030) CH60
63333         ENDIF
63334  
63335 C...Make sure we start from old default fragmentation parameters
63336         PARJ(81) = 0.29
63337         PARJ(82) = 1.0
63338  
63339 C...Use Professor's LEP pars if ITUNE >= 110
63340 C...(i.e., for A-Pro, DW-Pro etc)
63341         IF (ITUNE.LT.110) THEN
63342 C...# Old defaults
63343           MSTJ(11) = 4
63344           PARJ(1)  =   0.1
63345           PARJ(2)  =   0.3  
63346           PARJ(3)  =   0.40 
63347           PARJ(4)  =   0.05 
63348           PARJ(11) =   0.5  
63349           PARJ(12) =   0.6 
63350           PARJ(21) = 0.36
63351           PARJ(41) = 0.30
63352           PARJ(42) = 0.58
63353           PARJ(46) = 1.0
63354           PARJ(81) = 0.29
63355           PARJ(82) = 1.0
63356         ELSE
63357 C...# Tuned flavour parameters:
63358           PARJ(1)  = 0.073
63359           PARJ(2)  = 0.2
63360           PARJ(3)  = 0.94
63361           PARJ(4)  = 0.032
63362           PARJ(11) = 0.31
63363           PARJ(12) = 0.4
63364           PARJ(13) = 0.54
63365           PARJ(25) = 0.63
63366           PARJ(26) = 0.12
63367 C...# Switch on Bowler:
63368           MSTJ(11) = 5
63369 C...# Fragmentation
63370           PARJ(21) = 0.325
63371           PARJ(41) = 0.5
63372           PARJ(42) = 0.6
63373           PARJ(47) = 0.67
63374           PARJ(81) = 0.29
63375           PARJ(82) = 1.65
63376         ENDIF
63377  
63378 C...Remove middle digit now for Professor variants, since identical pars
63379         ITUNEB=ITUNE
63380         IF (ITUNE.GE.110.AND.ITUNE.LE.119) THEN
63381           ITUNEB=(ITUNE/100)*100+MOD(ITUNE,10)
63382         ENDIF
63383  
63384 C...Multiple interactions on, old framework
63385         MSTP(81)=1
63386 C...Fast IR cutoff energy scaling by default
63387         PARP(89)=1800D0
63388         PARP(90)=0.25D0
63389 C...Default CTEQ5L (internal), except for QW: CTEQ61 (external)
63390         MSTP(51)=7
63391         MSTP(52)=1
63392         IF (ITUNEB.EQ.105) THEN
63393           MSTP(51)=10150
63394           MSTP(52)=2
63395         ELSEIF(ITUNEB.EQ.108.OR.ITUNEB.EQ.109) THEN
63396           MSTP(52)=2
63397           MSTP(54)=2
63398           MSTP(51)=10042
63399           MSTP(53)=10042
63400         ENDIF
63401 C...Double Gaussian matter distribution.
63402         MSTP(82)=4
63403         PARP(83)=0.5D0
63404         PARP(84)=0.4D0
63405 C...FSR activity.
63406         PARP(71)=4D0
63407 C...Fragmentation functions and c and b parameters
63408 C...(only if not using Professor)
63409         IF (ITUNE.LE.109) THEN
63410           MSTJ(11)=4
63411           PARJ(54)=-0.05
63412           PARJ(55)=-0.005
63413         ENDIF
63414  
63415 C...Tune A and AW
63416         IF(ITUNEB.EQ.100.OR.ITUNEB.EQ.101) THEN
63417 C...pT0.
63418           PARP(82)=2.0D0
63419 c...String drawing almost completely minimizes string length.
63420           PARP(85)=0.9D0
63421           PARP(86)=0.95D0
63422 C...ISR cutoff, muR scale factor, and phase space size
63423           PARP(62)=1D0
63424           PARP(64)=1D0
63425           PARP(67)=4D0
63426 C...Intrinsic kT, size, and max
63427           MSTP(91)=1
63428           PARP(91)=1D0
63429           PARP(93)=5D0
63430 C...AW : higher ISR IR cutoff, but also larger alphaS, more intrinsic kT
63431           IF (ITUNEB.EQ.101) THEN
63432             PARP(62)=1.25D0
63433             PARP(64)=0.2D0
63434             PARP(91)=2.1D0
63435             PARP(92)=15.0D0
63436           ENDIF
63437  
63438 C...Tune BW (larger alphaS, more intrinsic kT. Smaller ISR phase space)
63439         ELSEIF (ITUNEB.EQ.102) THEN
63440 C...pT0.
63441           PARP(82)=1.9D0
63442 c...String drawing completely minimizes string length.
63443           PARP(85)=1.0D0
63444           PARP(86)=1.0D0
63445 C...ISR cutoff, muR scale factor, and phase space size
63446           PARP(62)=1.25D0
63447           PARP(64)=0.2D0
63448           PARP(67)=1D0
63449 C...Intrinsic kT, size, and max
63450           MSTP(91)=1
63451           PARP(91)=2.1D0
63452           PARP(93)=15D0
63453  
63454 C...Tune DW
63455         ELSEIF (ITUNEB.EQ.103) THEN
63456 C...pT0.
63457           PARP(82)=1.9D0
63458 c...String drawing completely minimizes string length.
63459           PARP(85)=1.0D0
63460           PARP(86)=1.0D0
63461 C...ISR cutoff, muR scale factor, and phase space size
63462           PARP(62)=1.25D0
63463           PARP(64)=0.2D0
63464           PARP(67)=2.5D0
63465 C...Intrinsic kT, size, and max
63466           MSTP(91)=1
63467           PARP(91)=2.1D0
63468           PARP(93)=15D0
63469  
63470 C...Tune DWT
63471         ELSEIF (ITUNEB.EQ.104) THEN
63472 C...pT0.
63473           PARP(82)=1.9409D0
63474 C...Run II ref scale and slow scaling
63475           PARP(89)=1960D0
63476           PARP(90)=0.16D0
63477 c...String drawing completely minimizes string length.
63478           PARP(85)=1.0D0
63479           PARP(86)=1.0D0
63480 C...ISR cutoff, muR scale factor, and phase space size
63481           PARP(62)=1.25D0
63482           PARP(64)=0.2D0
63483           PARP(67)=2.5D0
63484 C...Intrinsic kT, size, and max
63485           MSTP(91)=1
63486           PARP(91)=2.1D0
63487           PARP(93)=15D0
63488  
63489 C...Tune QW
63490         ELSEIF(ITUNEB.EQ.105) THEN
63491           IF (M13.GE.1) THEN
63492             WRITE(M11,5030) ' '
63493             CH70='NB! This tune requires CTEQ6.1 pdfs to be '//
63494      &           'externally linked'
63495             WRITE(M11,5035) CH70
63496           ENDIF
63497 C...pT0.
63498           PARP(82)=1.1D0
63499 c...String drawing completely minimizes string length.
63500           PARP(85)=1.0D0
63501           PARP(86)=1.0D0
63502 C...ISR cutoff, muR scale factor, and phase space size
63503           PARP(62)=1.25D0
63504           PARP(64)=0.2D0
63505           PARP(67)=2.5D0
63506 C...Intrinsic kT, size, and max
63507           MSTP(91)=1
63508           PARP(91)=2.1D0
63509           PARP(93)=15D0
63510  
63511 C...Tune D6 and D6T
63512         ELSEIF(ITUNEB.EQ.108.OR.ITUNEB.EQ.109) THEN
63513           IF (M13.GE.1) THEN
63514             WRITE(M11,5030) ' '
63515             CH70='NB! This tune requires CTEQ6L pdfs to be '//
63516      &           'externally linked'
63517             WRITE(M11,5035) CH70
63518           ENDIF
63519 C...The "Rick" proton, double gauss with 0.5/0.4
63520           MSTP(82)=4
63521           PARP(83)=0.5D0
63522           PARP(84)=0.4D0
63523 c...String drawing completely minimizes string length.
63524           PARP(85)=1.0D0
63525           PARP(86)=1.0D0
63526           IF (ITUNEB.EQ.108) THEN
63527 C...D6: pT0, Run I ref scale, and fast energy scaling
63528             PARP(82)=1.8D0
63529             PARP(89)=1800D0
63530             PARP(90)=0.25D0
63531           ELSE
63532 C...D6T: pT0, Run II ref scale, and slow energy scaling
63533             PARP(82)=1.8387D0
63534             PARP(89)=1960D0
63535             PARP(90)=0.16D0
63536           ENDIF
63537 C...ISR cutoff, muR scale factor, and phase space size
63538           PARP(62)=1.25D0
63539           PARP(64)=0.2D0
63540           PARP(67)=2.5D0
63541 C...Intrinsic kT, size, and max
63542           MSTP(91)=1
63543           PARP(91)=2.1D0
63544           PARP(93)=15D0
63545  
63546 C...Old ATLAS-DC2 5-parameter tune
63547         ELSEIF(ITUNEB.EQ.106) THEN
63548           IF (M13.GE.1) THEN
63549             WRITE(M11,5010) ITUNE, CHNAME
63550             CH60='see A. Moraes et al., SN-ATLAS-2006-057,'
63551             WRITE(M11,5030) CH60
63552             CH60='    R. Field in hep-ph/0610012,'
63553             WRITE(M11,5030) CH60
63554             CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
63555             WRITE(M11,5030) CH60
63556           ENDIF
63557 C...  pT0.
63558           PARP(82)=1.8D0
63559 C...  Different ref and rescaling pacee
63560           PARP(89)=1000D0
63561           PARP(90)=0.16D0
63562 C...  Parameters of mass distribution
63563           PARP(83)=0.5D0
63564           PARP(84)=0.5D0
63565 C...  Old default string drawing
63566           PARP(85)=0.33D0
63567           PARP(86)=0.66D0
63568 C...  ISR, phase space equivalent to Tune B
63569           PARP(62)=1D0
63570           PARP(64)=1D0
63571           PARP(67)=1D0
63572 C...  FSR
63573           PARP(71)=4D0
63574 C...  Intrinsic kT
63575           MSTP(91)=1
63576           PARP(91)=1D0
63577           PARP(93)=5D0
63578  
63579 C...Professor's Pro-Q2O Tune
63580         ELSEIF(ITUNE.EQ.129) THEN
63581           PARP(62)=2.9
63582           PARP(64)=0.14
63583           PARP(67)=2.65
63584           PARP(82)=1.9
63585           PARP(83)=0.83
63586           PARP(84)=0.6
63587           PARP(85)=0.86
63588           PARP(86)=0.93
63589           PARP(89)=1800D0
63590           PARP(90)=0.22
63591           MSTP(91)=1
63592           PARP(91)=2.1
63593           PARP(93)=5.0
63594  
63595         ENDIF
63596  
63597 C...  Output
63598         IF (M13.GE.1) THEN
63599           WRITE(M11,5030) ' '
63600           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
63601           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
63602           WRITE(M11,5040)  3, MSTP( 3), CHMSTP( 3)
63603           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
63604           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
63605           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
63606           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
63607           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
63608           WRITE(M11,5030) CH60
63609           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
63610           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
63611           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
63612           WRITE(M11,5040) 33, MSTP(33), CHMSTP(33)
63613           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
63614           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
63615           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
63616           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
63617           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
63618           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
63619           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
63620           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
63621           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
63622           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
63623           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
63624           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
63625 
63626         ENDIF
63627  
63628 C=======================================================================
63629 C... ACR, tune A with new CR (107)
63630       ELSEIF(ITUNE.EQ.107.OR.ITUNE.EQ.117) THEN
63631         IF (M13.GE.1) THEN
63632           WRITE(M11,5010) ITUNE, CHNAME
63633           CH60='Tune A modified with new colour reconnections'
63634           WRITE(M11,5030) CH60
63635           CH60='PARP(85)=0D0 and amount of CR is regulated by PARP(78)'
63636           WRITE(M11,5030) CH60
63637           CH60='see P. Skands & D. Wicke, hep-ph/0703081,'
63638           WRITE(M11,5030) CH60
63639           CH60='    R. Field, in hep-ph/0610012 (Tune A),'
63640           WRITE(M11,5030) CH60
63641           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
63642           WRITE(M11,5030) CH60
63643           IF (ITUNE.EQ.117) THEN
63644             CH60='LEP parameters tuned by Professor, hep-ph/0907.2973'
63645             WRITE(M11,5030) CH60
63646           ENDIF
63647         ENDIF
63648         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.406))THEN
63649           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
63650      &        ' with tune. Using defaults.')
63651           GOTO 100
63652         ENDIF
63653  
63654 C...Make sure we start from old default fragmentation parameters
63655         PARJ(81) = 0.29
63656         PARJ(82) = 1.0
63657  
63658 C...Use Professor's LEP pars if ITUNE >= 110
63659 C...(i.e., for A-Pro, DW-Pro etc)
63660         IF (ITUNE.LT.110) THEN
63661 C...# Old defaults
63662           MSTJ(11) = 4
63663 C...# Old default flavour parameters
63664           PARJ(21) = 0.36
63665           PARJ(41) = 0.30
63666           PARJ(42) = 0.58
63667           PARJ(46) = 1.0
63668           PARJ(82) = 1.0
63669         ELSE
63670 C...# Tuned flavour parameters:
63671           PARJ(1)  = 0.073
63672           PARJ(2)  = 0.2
63673           PARJ(3)  = 0.94
63674           PARJ(4)  = 0.032
63675           PARJ(11) = 0.31
63676           PARJ(12) = 0.4
63677           PARJ(13) = 0.54
63678           PARJ(25) = 0.63
63679           PARJ(26) = 0.12
63680 C...# Switch on Bowler:
63681           MSTJ(11) = 5
63682 C...# Fragmentation
63683           PARJ(21) = 0.325
63684           PARJ(41) = 0.5
63685           PARJ(42) = 0.6
63686           PARJ(47) = 0.67
63687           PARJ(81) = 0.29
63688           PARJ(82) = 1.65
63689         ENDIF
63690  
63691         MSTP(81)=1
63692         PARP(89)=1800D0
63693         PARP(90)=0.25D0
63694         MSTP(82)=4
63695         PARP(83)=0.5D0
63696         PARP(84)=0.4D0
63697         MSTP(51)=7
63698         MSTP(52)=1
63699         PARP(71)=4D0
63700         PARP(82)=2.0D0
63701         PARP(85)=0.0D0
63702         PARP(86)=0.66D0
63703         PARP(62)=1D0
63704         PARP(64)=1D0
63705         PARP(67)=4D0
63706         MSTP(91)=1
63707         PARP(91)=1D0
63708         PARP(93)=5D0
63709         MSTP(95)=6
63710 C...P78 changed from 0.12 to 0.09 in 6.4.19 to improve <pT>(Nch)
63711         PARP(78)=0.09D0
63712 C...Frag functions (only if not using Professor)
63713         IF (ITUNE.LE.109) THEN
63714           MSTJ(11)=4
63715           PARJ(54)=-0.05
63716           PARJ(55)=-0.005
63717         ENDIF
63718  
63719 C...Output
63720         IF (M13.GE.1) THEN
63721           WRITE(M11,5030) ' '
63722           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
63723           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
63724           WRITE(M11,5040)  3, MSTP( 3), CHMSTP( 3)
63725           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
63726           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
63727           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
63728           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
63729           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
63730           WRITE(M11,5030) CH60
63731           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
63732           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
63733           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
63734           WRITE(M11,5040) 33, MSTP(33), CHMSTP(33)
63735           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
63736           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
63737           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
63738           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
63739           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
63740           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
63741           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
63742           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
63743           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
63744           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
63745           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
63746           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
63747           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
63748           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
63749 
63750         ENDIF
63751  
63752 C=======================================================================
63753 C...Intermediate model. Rap tune
63754 C...(retuned to post-6.406 IR factorization)
63755       ELSEIF(ITUNE.EQ.200) THEN
63756         IF (M13.GE.1) THEN
63757           WRITE(M11,5010) ITUNE, CHNAME
63758           CH60='see T. Sjostrand & P. Skands, JHEP03(2004)053'
63759           WRITE(M11,5030) CH60
63760         ENDIF
63761         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
63762           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
63763      &        ' with tune.')
63764         ENDIF
63765 C...PDF
63766         MSTP(51)=7
63767         MSTP(52)=1
63768 C...ISR
63769         PARP(62)=1D0
63770         PARP(64)=1D0
63771         PARP(67)=4D0
63772 C...FSR
63773         PARP(71)=4D0
63774         PARJ(81)=0.29D0
63775 C...UE
63776         MSTP(81)=11
63777         PARP(82)=2.25D0
63778         PARP(89)=1800D0
63779         PARP(90)=0.25D0
63780 C...  ExpOfPow(1.8) overlap profile
63781         MSTP(82)=5
63782         PARP(83)=1.8D0
63783 C...  Valence qq
63784         MSTP(88)=0
63785 C...  Rap Tune
63786         MSTP(89)=1
63787 C...  Default diquark, BR-g-BR supp
63788         PARP(79)=2D0
63789         PARP(80)=0.01D0
63790 C...  Final state reconnect.
63791         MSTP(95)=1
63792         PARP(78)=0.55D0
63793 C...Fragmentation functions and c and b parameters
63794         MSTJ(11)=4
63795         PARJ(54)=-0.05
63796         PARJ(55)=-0.005
63797 C...  Output
63798         IF (M13.GE.1) THEN
63799           WRITE(M11,5030) ' '
63800           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
63801           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
63802           WRITE(M11,5040)  3, MSTP( 3), CHMSTP( 3)
63803           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
63804           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
63805           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
63806           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
63807           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
63808           WRITE(M11,5030) CH60
63809           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
63810           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
63811           WRITE(M11,5040) 33, MSTP(33), CHMSTP(33)
63812           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
63813           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
63814           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
63815           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
63816           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
63817           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
63818           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
63819           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
63820           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
63821           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
63822           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
63823           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
63824           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
63825 
63826         ENDIF
63827  
63828 C...APT(201), APT-Pro (211), Perugia-APT (221), Perugia-APT6 (226).
63829 C...Old model for ISR and UE, new pT-ordered model for FSR
63830       ELSEIF(ITUNE.EQ.201.OR.ITUNE.EQ.211.OR.ITUNE.EQ.221.OR
63831      &       .ITUNE.EQ.226) THEN
63832         IF (M13.GE.1) THEN
63833           WRITE(M11,5010) ITUNE, CHNAME
63834           CH60='see P. Skands & D. Wicke, hep-ph/0703081 (Tune APT),'
63835           WRITE(M11,5030) CH60
63836           CH60='    R.D. Field, in hep-ph/0610012 (Tune A)'
63837           WRITE(M11,5030) CH60
63838           CH60='    T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
63839           WRITE(M11,5030) CH60
63840           CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
63841           WRITE(M11,5030) CH60
63842           IF (ITUNE.EQ.211.OR.ITUNE.GE.221) THEN
63843             CH60='LEP parameters tuned by Professor, hep-ph/0907.2973'
63844             WRITE(M11,5030) CH60
63845           ENDIF
63846         ENDIF
63847         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.411))THEN
63848           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
63849      &        ' with tune.')
63850         ENDIF
63851 C...First set as if Pythia tune A
63852 C...Multiple interactions on, old framework
63853         MSTP(81)=1
63854 C...Fast IR cutoff energy scaling by default
63855         PARP(89)=1800D0
63856         PARP(90)=0.25D0
63857 C...Default CTEQ5L (internal)
63858         MSTP(51)=7
63859         MSTP(52)=1
63860 C...Double Gaussian matter distribution.
63861         MSTP(82)=4
63862         PARP(83)=0.5D0
63863         PARP(84)=0.4D0
63864 C...FSR activity.
63865         PARP(71)=4D0
63866 c...String drawing almost completely minimizes string length.
63867         PARP(85)=0.9D0
63868         PARP(86)=0.95D0
63869 C...ISR cutoff, muR scale factor, and phase space size
63870         PARP(62)=1D0
63871         PARP(64)=1D0
63872         PARP(67)=4D0
63873 C...Intrinsic kT, size, and max
63874         MSTP(91)=1
63875         PARP(91)=1D0
63876         PARP(93)=5D0
63877 C...Use 2 GeV of primordial kT for "Perugia" version
63878         IF (ITUNE.EQ.221) THEN
63879           PARP(91)=2D0
63880           PARP(93)=10D0
63881         ENDIF
63882 C...Use pT-ordered FSR
63883         MSTJ(41)=12
63884 C...Lambda_FSR scale for pT-ordering
63885         PARJ(81)=0.23D0
63886 C...Retune pT0 (changed from 2.1 to 2.05 in 6.4.20)
63887         PARP(82)=2.05D0
63888 C...Fragmentation functions and c and b parameters
63889 C...(overwritten for 211, i.e., if using Professor pars)
63890         PARJ(54)=-0.05
63891         PARJ(55)=-0.005
63892  
63893 C...Use Professor's LEP pars if ITUNE == 211, 221, 226
63894         IF (ITUNE.LT.210) THEN
63895 C...# Old defaults
63896           MSTJ(11) = 4
63897 C...# Old default flavour parameters
63898           PARJ(21) = 0.36
63899           PARJ(41) = 0.30
63900           PARJ(42) = 0.58
63901           PARJ(46) = 1.0
63902           PARJ(82) = 1.0
63903         ELSE
63904 C...# Tuned flavour parameters:
63905           PARJ(1)  = 0.073
63906           PARJ(2)  = 0.2
63907           PARJ(3)  = 0.94
63908           PARJ(4)  = 0.032
63909           PARJ(11) = 0.31
63910           PARJ(12) = 0.4
63911           PARJ(13) = 0.54
63912           PARJ(25) = 0.63
63913           PARJ(26) = 0.12
63914 C...# Always use pT-ordered shower:
63915           MSTJ(41) = 12
63916 C...# Switch on Bowler:
63917           MSTJ(11) = 5
63918 C...# Fragmentation
63919           PARJ(21) = 3.1327e-01
63920           PARJ(41) = 4.8989e-01
63921           PARJ(42) = 1.2018e+00
63922           PARJ(47) = 1.0000e+00
63923           PARJ(81) = 2.5696e-01
63924           PARJ(82) = 8.0000e-01
63925         ENDIF
63926  
63927 C...221, 226 : Perugia-APT and Perugia-APT6
63928         IF (ITUNE.EQ.221.OR.ITUNE.EQ.226) THEN
63929  
63930           PARP(64)=0.5D0
63931           PARP(82)=2.05D0
63932           PARP(90)=0.26D0
63933           PARP(91)=2.0D0
63934 C...The Perugia variants use Steve's showers off the old MPI
63935           MSTP(152)=1
63936 C...And use a lower PARP(71) as suggested by Professor tunings
63937 C...(although not certain that applies to Q2-pT2 hybrid)
63938           PARP(71)=2.5D0
63939  
63940 C...Perugia-APT6 uses CTEQ6L1 and a slightly lower pT0
63941           IF (ITUNE.EQ.226) THEN
63942             CH70='NB! This tune requires CTEQ6L1 pdfs to be '//
63943      &           'externally linked'
63944             WRITE(M11,5035) CH70
63945             MSTP(52)=2
63946             MSTP(51)=10042
63947             PARP(82)=1.95D0
63948           ENDIF
63949  
63950         ENDIF
63951  
63952 C...  Output
63953         IF (M13.GE.1) THEN
63954           WRITE(M11,5030) ' '
63955           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
63956           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
63957           WRITE(M11,5040)  3, MSTP( 3), CHMSTP( 3)
63958           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
63959           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
63960           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
63961           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
63962           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
63963           WRITE(M11,5030) CH60
63964           WRITE(M11,5070) 41, MSTJ(41), CHMSTJ(41)
63965           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
63966           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
63967           WRITE(M11,5040) 33, MSTP(33), CHMSTP(33)
63968           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
63969           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
63970           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
63971           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
63972           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
63973           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
63974           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
63975           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
63976           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
63977           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
63978           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
63979           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
63980 
63981         ENDIF
63982  
63983 C======================================================================
63984 C...Uppsala models: Generalized Area Law and Soft Colour Interactions
63985       ELSEIF(CHNAME.EQ.'GAL Tune 0'.OR.CHNAME.EQ.'GAL Tune 1') THEN
63986         IF (M13.GE.1) THEN
63987           WRITE(M11,5010) ITUNE, CHNAME
63988           CH60='see J. Rathsman, PLB452(1999)364'
63989           WRITE(M11,5030) CH60
63990 C ?         CH60='A. Edin, G. Ingelman, J. Rathsman, hep-ph/9912539,'
63991 C ?         WRITE(M11,5030)
63992           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
63993           WRITE(M11,5030) CH60
63994           WRITE(M11,5030) ' '
63995           CH70='NB! The GAL model must be run with modified '//
63996      &        'Pythia v6.215:'
63997           WRITE(M11,5035) CH70
63998           CH70='available from http://www.isv.uu.se/thep/MC/scigal/'
63999           WRITE(M11,5035) CH70
64000           WRITE(M11,5030) ' '
64001         ENDIF
64002 C...GAL Recommended settings from Uppsala web page (as per 22/08 2006)
64003         MSWI(2) = 3
64004         PARSCI(2) = 0.10
64005         MSWI(1) = 2
64006         PARSCI(1) = 0.44
64007         MSTJ(16) = 0
64008         PARJ(42) = 0.45
64009         PARJ(82) = 2.0
64010         PARP(62) = 2.0
64011         MSTP(81) = 1
64012         MSTP(82) = 1
64013         PARP(81) = 1.9
64014         MSTP(92) = 1
64015         IF(CHNAME.EQ.'GAL Tune 1') THEN
64016 C...GAL retune (P. Skands) to get better min-bias <Nch> at Tevatron
64017           MSTP(82)=4
64018           PARP(83)=0.25D0
64019           PARP(84)=0.5D0
64020           PARP(82) = 1.75
64021           IF (M13.GE.1) THEN
64022             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
64023             WRITE(M11,5050) 82, PARP(82), CHPARP(82)
64024             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
64025             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
64026             WRITE(M11,5050) 84, PARP(84), CHPARP(84)
64027           ENDIF
64028         ELSE
64029           IF (M13.GE.1) THEN
64030             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
64031             WRITE(M11,5050) 81, PARP(81), CHPARP(81)
64032             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
64033           ENDIF
64034         ENDIF
64035 C...Output
64036         IF (M13.GE.1) THEN
64037           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
64038           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
64039           WRITE(M11,5040) 92, MSTP(92), CHMSTP(92)
64040           CH40='FSI SCI/GAL selection'
64041           WRITE(M11,6040) 1, MSWI(1), CH40
64042           CH40='FSI SCI/GAL sea quark treatment'
64043           WRITE(M11,6040) 2, MSWI(2), CH40
64044           CH40='FSI SCI/GAL sea quark treatment parm'
64045           WRITE(M11,6050) 1, PARSCI(1), CH40
64046           CH40='FSI SCI/GAL string reco probability R_0'
64047           WRITE(M11,6050) 2, PARSCI(2), CH40
64048           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
64049           WRITE(M11,5070) 16, MSTJ(16), CHMSTJ(16)
64050         ENDIF
64051       ELSEIF(CHNAME.EQ.'SCI Tune 0'.OR.CHNAME.EQ.'SCI Tune 1') THEN
64052         IF (M13.GE.1) THEN
64053           WRITE(M11,5010) ITUNE, CHNAME
64054           CH60='see A.Edin et al, PLB366(1996)371, Z.Phys.C75(1997)57,'
64055           WRITE(M11,5030) CH60
64056           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
64057           WRITE(M11,5030) CH60
64058           WRITE(M11,5030) ' '
64059           CH70='NB! The SCI model must be run with modified '//
64060      &        'Pythia v6.215:'
64061           WRITE(M11,5035) CH70
64062           CH70='available from http://www.isv.uu.se/thep/MC/scigal/'
64063           WRITE(M11,5035) CH70
64064           WRITE(M11,5030) ' '
64065         ENDIF
64066 C...SCI Recommended settings from Uppsala web page (as per 22/08 2006)
64067         MSTP(81)=1
64068         MSTP(82)=1
64069         PARP(81)=2.2
64070         MSTP(92)=1
64071         MSWI(2)=2
64072         PARSCI(2)=0.50
64073         MSWI(1)=2
64074         PARSCI(1)=0.44
64075         MSTJ(16)=0
64076         IF (CHNAME.EQ.'SCI Tune 1') THEN
64077 C...SCI retune (P. Skands) to get better min-bias <Nch> at Tevatron
64078           MSTP(81) = 1
64079           MSTP(82) = 3
64080           PARP(82) = 2.4
64081           PARP(83) = 0.5D0
64082           PARP(62) = 1.5
64083           PARP(84)=0.25D0
64084           IF (M13.GE.1) THEN
64085             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
64086             WRITE(M11,5050) 82, PARP(82), CHPARP(82)
64087             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
64088             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
64089             WRITE(M11,5050) 62, PARP(62), CHPARP(62)
64090           ENDIF
64091         ELSE
64092           IF (M13.GE.1) THEN
64093             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
64094             WRITE(M11,5050) 81, PARP(81), CHPARP(81)
64095             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
64096           ENDIF
64097         ENDIF
64098 C...Output
64099         IF (M13.GE.1) THEN
64100           WRITE(M11,5040) 92, MSTP(92), CHMSTP(92)
64101           CH40='FSI SCI/GAL selection'
64102           WRITE(M11,6040) 1, MSWI(1), CH40
64103           CH40='FSI SCI/GAL sea quark treatment'
64104           WRITE(M11,6040) 2, MSWI(2), CH40
64105           CH40='FSI SCI/GAL sea quark treatment parm'
64106           WRITE(M11,6050) 1, PARSCI(1), CH40
64107           CH40='FSI SCI/GAL string reco probability R_0'
64108           WRITE(M11,6050) 2, PARSCI(2), CH40
64109           WRITE(M11,5070) 16, MSTJ(16), CHMSTJ(16)
64110         ENDIF
64111  
64112       ELSE
64113         IF (MSTU(13).GE.1) WRITE(M11,5020) ITUNE
64114  
64115       ENDIF
64116  
64117 C...Output of LEP parameters, common to all models
64118       IF (M13.GE.1) THEN
64119         WRITE(M11,5080) 
64120         WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
64121         IF (MSTJ(11).EQ.3) THEN
64122           CH60='Warning: using Peterson fragmentation function'
64123           WRITE(M11,5030) CH60 
64124         ENDIF
64125         
64126         WRITE(M11,5060)  1, PARJ( 1), CHPARJ( 1)
64127         WRITE(M11,5060)  2, PARJ( 2), CHPARJ( 2)
64128         WRITE(M11,5060)  3, PARJ( 3), CHPARJ( 3)
64129         WRITE(M11,5060)  4, PARJ( 4), CHPARJ( 4)
64130         WRITE(M11,5060)  5, PARJ( 5), CHPARJ( 5)
64131         WRITE(M11,5060)  6, PARJ( 6), CHPARJ( 6)
64132         WRITE(M11,5060)  7, PARJ( 7), CHPARJ( 7)
64133         
64134         WRITE(M11,5060) 11, PARJ(11), CHPARJ(11)
64135         WRITE(M11,5060) 12, PARJ(12), CHPARJ(12)
64136         WRITE(M11,5060) 13, PARJ(13), CHPARJ(13)
64137         
64138         WRITE(M11,5060) 21, PARJ(21), CHPARJ(21)
64139         
64140         WRITE(M11,5060) 25, PARJ(25), CHPARJ(25)
64141         WRITE(M11,5060) 26, PARJ(26), CHPARJ(26)
64142         
64143         WRITE(M11,5060) 41, PARJ(41), CHPARJ(41)
64144         WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
64145         WRITE(M11,5060) 45, PARJ(45), CHPARJ(45)
64146         
64147         IF (MSTJ(11).LE.3) THEN
64148           WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
64149           WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
64150         ELSE
64151           WRITE(M11,5060) 46, PARJ(46), CHPARJ(46)
64152         ENDIF
64153         IF (MSTJ(11).EQ.5) WRITE(M11,5060) 47, PARJ(47), CHPARJ(47)
64154       ENDIF
64155         
64156  100  IF (MSTU(13).GE.1) WRITE(M11,6000)
64157  
64158  9999 RETURN
64159  
64160  5000 FORMAT(1x,78('*')/' *',76x,'*'/' *',3x,'PYTUNE : ',
64161      &    'Presets for underlying-event (and min-bias)',21x,'*'/' *',
64162      &    12x,'Last Change : ',A8,' - P. Skands',30x,'*'/' *',76x,'*')
64163  5010 FORMAT(' *',3x,I4,1x,A16,52x,'*')
64164  5020 FORMAT(' *',3x,'Tune ',I4, ' not recognized. Using defaults.')
64165  5030 FORMAT(' *',3x,10x,A60,3x,'*')
64166  5035 FORMAT(' *',3x,A70,3x,'*')
64167  5040 FORMAT(' *',5x,'MSTP(',I2,') = ',I12,3x,A42,3x,'*')
64168  5050 FORMAT(' *',5x,'PARP(',I2,') = ',F12.4,3x,A40,5x,'*')
64169  5060 FORMAT(' *',5x,'PARJ(',I2,') = ',F12.4,3x,A40,5x,'*')
64170  5070 FORMAT(' *',5x,'MSTJ(',I2,') = ',I12,3x,A40,5x,'*')
64171  5080 FORMAT(' *',3x,'----------------------------',42('-'),3x,'*')
64172  6100 FORMAT(' *',5x,'MSTU(',I3,')= ',I12,3x,A42,3x,'*')
64173  6110 FORMAT(' *',5x,'PARU(',I3,')= ',F12.4,3x,A42,3x,'*')
64174 C 5140 FORMAT(' *',5x,'MSTP(',I3,')= ',I12,3x,A40,5x,'*')
64175 C 5150 FORMAT(' *',5x,'PARP(',I3,')= ',F12.4,3x,A40,5x,'*')
64176  6000 FORMAT(' *',76x,'*'/1x,32('*'),1x,'END OF PYTUNE',1x,31('*'))
64177  6040 FORMAT(' *',5x,'MSWI(',I1,')  = ',I12,3x,A40,5x,'*')
64178  6050 FORMAT(' *',5x,'PARSCI(',I1,')= ',F12.4,3x,A40,5x,'*')
64179  
64180       END
64181 
64182 C*********************************************************************
64183  
64184 C...PYEXEC
64185 C...Administrates the fragmentation and decay chain.
64186  
64187       SUBROUTINE PYEXEC
64188  
64189 C...Double precision and integer declarations.
64190       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
64191       IMPLICIT INTEGER(I-N)
64192       INTEGER PYK,PYCHGE,PYCOMP
64193 C...Commonblocks.
64194       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
64195       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
64196       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
64197       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
64198       COMMON/PYINT1/MINT(400),VINT(400)
64199       COMMON/PYINT4/MWID(500),WIDS(500,5)
64200       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYINT4/
64201 C...Local array.
64202       DIMENSION PS(2,6),IJOIN(100)
64203  
64204 C...Initialize and reset.
64205       MSTU(24)=0
64206       IF(MSTU(12).NE.12345) CALL PYLIST(0)
64207       MSTU(29)=0
64208       MSTU(31)=MSTU(31)+1
64209       MSTU(1)=0
64210       MSTU(2)=0
64211       MSTU(3)=0
64212       IF(MSTU(17).LE.0) MSTU(90)=0
64213       MCONS=1
64214  
64215 C...Sum up momentum, energy and charge for starting entries.
64216       NSAV=N
64217       DO 110 I=1,2
64218         DO 100 J=1,6
64219           PS(I,J)=0D0
64220   100   CONTINUE
64221   110 CONTINUE
64222       DO 130 I=1,N
64223         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130
64224         DO 120 J=1,4
64225           PS(1,J)=PS(1,J)+P(I,J)
64226   120   CONTINUE
64227         PS(1,6)=PS(1,6)+PYCHGE(K(I,2))
64228   130 CONTINUE
64229       PARU(21)=PS(1,4)
64230  
64231 C...Start by all decays of coloured resonances involved in shower.
64232       NORIG=N
64233       DO 140 I=1,NORIG
64234         IF(K(I,1).EQ.3) THEN
64235           KC=PYCOMP(K(I,2))
64236           IF(MWID(KC).NE.0.AND.KCHG(KC,2).NE.0) CALL PYRESD(I)
64237         ENDIF
64238   140 CONTINUE
64239  
64240 C...Prepare system for subsequent fragmentation/decay.
64241       CALL PYPREP(0)
64242       IF(MINT(51).NE.0) RETURN
64243  
64244 C...Loop through jet fragmentation and particle decays.
64245       MBE=0
64246   150 MBE=MBE+1
64247       IP=0
64248   160 IP=IP+1
64249       KC=0
64250       IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=PYCOMP(K(IP,2))
64251       IF(KC.EQ.0) THEN
64252  
64253 C...Deal with any remaining undecayed resonance
64254 C...(normally the task of PYEVNT, so seldom used).
64255       ELSEIF(MWID(KC).NE.0) THEN
64256         IBEG=IP
64257         IF(KCHG(KC,2).NE.0.AND.K(I,1).NE.3) THEN
64258           IBEG=IP+1
64259   170     IBEG=IBEG-1
64260           IF(IBEG.GE.2.AND.K(IBEG,1).EQ.2) GOTO 170
64261           IF(K(IBEG,1).NE.2) IBEG=IBEG+1
64262           IEND=IP-1
64263   180     IEND=IEND+1
64264           IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 180
64265           IF(IEND.LT.N.AND.KCHG(PYCOMP(K(IEND,2)),2).EQ.0) GOTO 180
64266           NJOIN=0
64267           DO 190 I=IBEG,IEND
64268             IF(KCHG(PYCOMP(K(IEND,2)),2).NE.0) THEN
64269               NJOIN=NJOIN+1
64270               IJOIN(NJOIN)=I
64271             ENDIF
64272   190     CONTINUE
64273         ENDIF
64274         CALL PYRESD(IP)
64275         CALL PYPREP(IBEG)
64276         IF(MINT(51).NE.0) RETURN
64277  
64278 C...Particle decay if unstable and allowed. Save long-lived particle
64279 C...decays until second pass after Bose-Einstein effects.
64280       ELSEIF(KCHG(KC,2).EQ.0) THEN
64281         IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE
64282      &  .EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311))
64283      &  CALL PYDECY(IP)
64284  
64285 C...Decay products may develop a shower.
64286         IF(MSTJ(92).GT.0) THEN
64287           IP1=MSTJ(92)
64288           QMAX=SQRT(MAX(0D0,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
64289      &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
64290           MINT(33)=0
64291           CALL PYSHOW(IP1,IP1+1,QMAX)
64292           CALL PYPREP(IP1)
64293           IF(MINT(51).NE.0) RETURN
64294           MSTJ(92)=0
64295         ELSEIF(MSTJ(92).LT.0) THEN
64296           IP1=-MSTJ(92)
64297           MINT(33)=0
64298           CALL PYSHOW(IP1,-3,P(IP,5))
64299           CALL PYPREP(IP1)
64300           IF(MINT(51).NE.0) RETURN
64301           MSTJ(92)=0
64302         ENDIF
64303  
64304 C...Jet fragmentation: string or independent fragmentation.
64305       ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN
64306         MFRAG=MSTJ(1)
64307         IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2
64308         IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN
64309           IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND.
64310      &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN
64311             IF(KCHG(PYCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG)
64312           ENDIF
64313         ENDIF
64314         IF(MFRAG.EQ.1) CALL PYSTRF(IP)
64315         IF(MFRAG.EQ.2) CALL PYINDF(IP)
64316         IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0
64317         IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0
64318       ENDIF
64319  
64320 C...Loop back if enough space left in PYJETS and no error abort.
64321       IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN
64322       ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN
64323         GOTO 160
64324       ELSEIF(IP.LT.N) THEN
64325         CALL PYERRM(11,'(PYEXEC:) no more memory left in PYJETS')
64326       ENDIF
64327  
64328 C...Include simple Bose-Einstein effect parametrization if desired.
64329       IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN
64330         CALL PYBOEI(NSAV)
64331         GOTO 150
64332       ENDIF
64333  
64334 C...Check that momentum, energy and charge were conserved.
64335       DO 210 I=1,N
64336         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 210
64337         DO 200 J=1,4
64338           PS(2,J)=PS(2,J)+P(I,J)
64339   200   CONTINUE
64340         PS(2,6)=PS(2,6)+PYCHGE(K(I,2))
64341   210 CONTINUE
64342       PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)-
64343      &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1D0+ABS(PS(2,4))+ABS(PS(1,4)))
64344       IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL PYERRM(15,
64345      &'(PYEXEC:) four-momentum was not conserved')
64346       IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1D0) CALL PYERRM(15,
64347      &'(PYEXEC:) charge was not conserved')
64348  
64349       RETURN
64350       END
64351  
64352 C*********************************************************************
64353  
64354 C...PYPREP
64355 C...Rearranges partons along strings.
64356 C...Special considerations for systems with junctions, with
64357 C...possibility of junction-antijunction annihilation.
64358 C...Allows small systems to collapse into one or two particles.
64359 C...Checks flavours and colour singlet invariant masses.
64360  
64361       SUBROUTINE PYPREP(IP)
64362  
64363 C...Double precision and integer declarations.
64364       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
64365       INTEGER PYK,PYCHGE,PYCOMP
64366 C...Commonblocks.
64367       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
64368       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
64369       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
64370       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
64371       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
64372       COMMON/PYINT1/MINT(400),VINT(400)
64373 C...The common block of colour tags.
64374       COMMON/PYCTAG/NCT,MCT(4000,2)
64375       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYCTAG/,
64376      &/PYPARS/
64377       DATA NERRPR/0/
64378       SAVE NERRPR
64379 C...Local arrays.
64380       DIMENSION DPS(5),DPC(5),UE(3),PG(5),E1(3),E2(3),E3(3),E4(3),
64381      &ECL(3),IJUNC(10,0:4),IPIECE(30,0:4),KFEND(4),KFQ(4),
64382      &IJUR(4),PJU(4,6),IRNG(4,2),TJJ(2,5),T(5),PUL(3,5),
64383      &IJCP(0:6),TJUOLD(5)
64384       CHARACTER CHTMP*6
64385  
64386 C...Function to give four-product.
64387       FOUR(I,J)=P(I,4)*P(J,4)-P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
64388  
64389 C...Rearrange parton shower product listing along strings: begin loop.
64390       MSTU(24)=0
64391       NOLD=N
64392       I1=N
64393       NJUNC=0
64394       NPIECE=0
64395       NJJSTR=0
64396       MSTU32=MSTU(32)+1
64397       DO 100 I=MAX(1,IP),N
64398 C...First store junction positions.
64399         IF(K(I,1).EQ.42) THEN
64400           NJUNC=NJUNC+1
64401           IJUNC(NJUNC,0)=I
64402           IJUNC(NJUNC,4)=0
64403         ENDIF
64404   100 CONTINUE
64405  
64406       DO 250 MQGST=1,3
64407         DO 240 I=MAX(1,IP),N
64408 C...Special treatment for junctions
64409           IF (K(I,1).LE.0) GOTO 240
64410           IF(K(I,1).EQ.42) THEN
64411 C...MQGST=2: Look for junction-junction strings (not detected in the
64412 C...main search below).
64413             IF (MQGST.EQ.2.AND.NPIECE.NE.3*NJUNC) THEN
64414               IF (NJJSTR.EQ.0) THEN
64415                 NJJSTR = (3*NJUNC-NPIECE)/2
64416               ENDIF
64417 C...Check how many already identified strings end on this junction
64418               ILC=0
64419               DO 110 J=1,NPIECE
64420                 IF (IPIECE(J,4).EQ.I) ILC=ILC+1
64421   110         CONTINUE
64422 C...If less than 3, remaining must be to another junction
64423               IF (ILC.LT.3) THEN
64424                 IF (ILC.NE.2) THEN
64425 C...Multiple j-j connections not handled yet.
64426                   CALL PYERRM(2,
64427      &            '(PYPREP:) Too many junction-junction strings.')
64428                   MINT(51)=1
64429                   RETURN
64430                 ENDIF
64431 C...The colour information in the junction is unreadable for the
64432 C...colour space search further down in this routine, so we must
64433 C...start on the colour mother of this junction and then "artificially"
64434 C...prevent the colour mother from connecting here again.
64435                 ITJUNC=MOD(K(I,4)/MSTU(5),MSTU(5))
64436                 KCS=4
64437                 IF (MOD(ITJUNC,2).EQ.0) KCS=5
64438 C...Switch colour if the junction-junction leg is presumably a
64439 C...junction mother leg rather than a junction daughter leg.
64440                 IF (ITJUNC.GE.3) KCS=9-KCS
64441                 IF (MINT(33).EQ.0) THEN
64442 C...Find the unconnected leg and reorder junction daughter pointers so
64443 C...MOD(K(I,4),MSTU(5)) always points to the junction-junction string
64444 C...piece.
64445                   IA=MOD(K(I,4),MSTU(5))
64446                   IF (K(IA,KCS)/MSTU(5)**2.GE.2) THEN
64447                     ITMP=MOD(K(I,5),MSTU(5))
64448                     IF (K(ITMP,KCS)/MSTU(5)**2.GE.2) THEN
64449                       ITMP=MOD(K(I,5)/MSTU(5),MSTU(5))
64450                       K(I,5)=K(I,5)+(IA-ITMP)*MSTU(5)
64451                     ELSE
64452                       K(I,5)=K(I,5)+(IA-ITMP)
64453                     ENDIF
64454                     K(I,4)=K(I,4)+(ITMP-IA)
64455                     IA=ITMP
64456                   ENDIF
64457                   IF (ITJUNC.LE.2) THEN
64458 C...Beam baryon junction
64459                     K(IA,KCS)   = K(IA,KCS) + 2*MSTU(5)**2
64460                     K(I,KCS)    = K(I,KCS) + 1*MSTU(5)**2
64461 C...Else 1 -> 2 decay junction
64462                   ELSE
64463                     K(IA,KCS)   = K(IA,KCS) + MSTU(5)**2
64464                     K(I,KCS)    = K(I,KCS) + 2*MSTU(5)**2
64465                   ENDIF
64466                   I1BEG = I1
64467                   NSTP = 0
64468                   GOTO 170
64469 C...Alternatively use colour tag information.
64470                 ELSE
64471 C...Find a final state parton with appropriate dangling colour tag.
64472                   JCT=0
64473                   IA=0
64474                   IJUMO=K(I,3)
64475                   DO 140 J1=MAX(1,IP),N
64476                     IF (K(J1,1).NE.3) GOTO 140
64477 C...Check for matching final-state colour tag
64478                     IMATCH=0
64479                     DO 120 J2=MAX(1,IP),N
64480                       IF (K(J2,1).NE.3) GOTO 120
64481                       IF (MCT(J1,KCS-3).EQ.MCT(J2,6-KCS)) IMATCH=1
64482   120               CONTINUE
64483                     IF (IMATCH.EQ.1) GOTO 140
64484 C...Check whether this colour tag belongs to the present junction
64485 C...by seeing whether any parton with this colour tag has the same
64486 C...mother as the junction.
64487                     JCT=MCT(J1,KCS-3)
64488                     IMATCH=0
64489                     DO 130 J2=MINT(84)+1,N
64490                       IMO2=K(J2,3)
64491 C...First scattering partons have IMO1 = 3 and 4.
64492                       IF (IMO2.EQ.MINT(83)+3.OR.IMO2.EQ.MINT(83)+4)
64493      &                     IMO2=IMO2-2
64494                       IF (MCT(J2,KCS-3).EQ.JCT.AND.IMO2.EQ.IJUMO)
64495      &                     IMATCH=1
64496   130               CONTINUE
64497                     IF (IMATCH.EQ.0) GOTO 140
64498                     IA=J1
64499   140             CONTINUE
64500 C...Check for junction-junction strings without intermediate final state
64501 C...glue (not detected above).
64502                   IF (IA.EQ.0) THEN
64503                     DO 160 MJU=1,NJUNC
64504                       IJU2=IJUNC(MJU,0)
64505                       IF (IJU2.EQ.I) GOTO 160
64506                       ITJU2=MOD(K(IJU2,4)/MSTU(5),MSTU(5))
64507 C...Only opposite types of junctions can connect to each other.
64508                       IF (MOD(ITJU2,2).EQ.MOD(ITJUNC,2)) GOTO 160
64509                       IS=0
64510                       DO 150 J=1,NPIECE
64511                         IF (IPIECE(J,4).EQ.IJU2) IS=IS+1
64512   150                 CONTINUE
64513                       IF (IS.EQ.3) GOTO 160
64514                       IB=I
64515                       IA=IJU2
64516   160               CONTINUE
64517                   ENDIF
64518 C...Switch to other side of adjacent parton and step from there.
64519                   KCS=9-KCS
64520                   I1BEG = I1
64521                   NSTP = 0
64522                   GOTO 170
64523                 ENDIF
64524               ELSE IF (ILC.NE.3) THEN
64525               ENDIF
64526             ENDIF
64527           ENDIF
64528  
64529 C...Look for coloured string endpoint, or (later) leftover gluon.
64530           IF(K(I,1).NE.3) GOTO 240
64531           KC=PYCOMP(K(I,2))
64532           IF(KC.EQ.0) GOTO 240
64533           KQ=KCHG(KC,2)
64534           IF(KQ.EQ.0.OR.(MQGST.LE.2.AND.KQ.EQ.2)) GOTO 240
64535  
64536 C...Pick up loose string end.
64537           KCS=4
64538           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
64539           IA=I
64540           IB=I
64541           I1BEG=I1
64542           NSTP=0
64543   170     NSTP=NSTP+1
64544           IF(NSTP.GT.4*N) THEN
64545             CALL PYERRM(14,'(PYPREP:) caught in infinite loop')
64546             MINT(51)=1
64547             RETURN
64548           ENDIF
64549  
64550 C...Copy undecayed parton. Finished if reached string endpoint.
64551           IF(K(IA,1).EQ.3) THEN
64552             IF(I1.GE.MSTU(4)-MSTU32-5) THEN
64553               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
64554               MINT(51)=1
64555               MSTU(24)=1
64556               RETURN
64557             ENDIF
64558             I1=I1+1
64559             K(I1,1)=2
64560             IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) K(I1,1)=1
64561             K(I1,2)=K(IA,2)
64562             K(I1,3)=IA
64563             K(I1,4)=0
64564             K(I1,5)=0
64565             DO 180 J=1,5
64566               P(I1,J)=P(IA,J)
64567               V(I1,J)=V(IA,J)
64568   180       CONTINUE
64569             K(IA,1)=K(IA,1)+10
64570             IF(K(I1,1).EQ.1) GOTO 240
64571           ENDIF
64572  
64573 C...Also finished (for now) if reached junction; then copy to end.
64574           IF(K(IA,1).EQ.42) THEN
64575             NCOPY=I1-I1BEG
64576             IF(I1.GE.MSTU(4)-MSTU32-NCOPY-5) THEN
64577               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
64578               MINT(51)=1
64579               MSTU(24)=1
64580               RETURN
64581             ENDIF
64582             IF (MQGST.LE.2.AND.NCOPY.NE.0) THEN
64583               DO 200 ICOPY=1,NCOPY
64584                 DO 190 J=1,5
64585                   K(MSTU(4)-MSTU32-ICOPY,J)=K(I1BEG+ICOPY,J)
64586                   P(MSTU(4)-MSTU32-ICOPY,J)=P(I1BEG+ICOPY,J)
64587                   V(MSTU(4)-MSTU32-ICOPY,J)=V(I1BEG+ICOPY,J)
64588   190           CONTINUE
64589   200         CONTINUE
64590             ENDIF
64591 C...For junction-junction strings, find end leg and reorder junction
64592 C...daughter pointers so MOD(K(I,4),MSTU(5)) always points to the
64593 C...junction-junction string piece.
64594             IF (K(I,1).EQ.42.AND.MINT(33).EQ.0) THEN
64595               ITMP=MOD(K(IA,4),MSTU(5))
64596               IF (ITMP.NE.IB) THEN
64597                 IF (MOD(K(IA,5),MSTU(5)).EQ.IB) THEN
64598                   K(IA,5)=K(IA,5)+(ITMP-IB)
64599                 ELSE
64600                   K(IA,5)=K(IA,5)+(ITMP-IB)*MSTU(5)
64601                 ENDIF
64602                 K(IA,4)=K(IA,4)+(IB-ITMP)
64603               ENDIF
64604             ENDIF
64605             NPIECE=NPIECE+1
64606 C...IPIECE:
64607 C...0: endpoint in original ER
64608 C...1:
64609 C...2:
64610 C...3: Parton immediately next to junction
64611 C...4: Junction
64612             IPIECE(NPIECE,0)=I
64613             IPIECE(NPIECE,1)=MSTU32+1
64614             IPIECE(NPIECE,2)=MSTU32+NCOPY
64615             IPIECE(NPIECE,3)=IB
64616             IPIECE(NPIECE,4)=IA
64617             MSTU32=MSTU32+NCOPY
64618             I1=I1BEG
64619             GOTO 240
64620           ENDIF
64621  
64622 C...GOTO next parton in colour space.
64623           IB=IA
64624           IF (MINT(33).EQ.0) THEN
64625             IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5
64626      &           )).NE.0) THEN
64627               IA=MOD(K(IB,KCS),MSTU(5))
64628               K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
64629               MREV=0
64630             ELSE
64631               IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
64632      &             MSTU(5)).EQ.0) KCS=9-KCS
64633               IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
64634               K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
64635               MREV=1
64636             ENDIF
64637             IF(IA.LE.0.OR.IA.GT.N) THEN
64638               CALL PYERRM(12,'(PYPREP:) colour rearrangement failed')
64639               IF(NERRPR.LT.5) THEN
64640                 NERRPR=NERRPR+1
64641                 WRITE(MSTU(11),*) 'started at:', I
64642                 WRITE(MSTU(11),*) 'ended going from',IB,' to',IA
64643                 WRITE(MSTU(11),*) 'MQGST =',MQGST
64644                 CALL PYLIST(4)
64645               ENDIF
64646               MINT(51)=1
64647               RETURN
64648             ENDIF
64649             IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5)
64650      &           ,MSTU(5)).EQ.IB) THEN
64651               IF(MREV.EQ.1) KCS=9-KCS
64652               IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
64653               K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
64654             ELSE
64655               IF(MREV.EQ.0) KCS=9-KCS
64656               IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
64657               K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
64658             ENDIF
64659             IF(IA.NE.I) GOTO 170
64660 C...Use colour tag information
64661           ELSE
64662 C...First create colour tags starting on IB if none already present.
64663             IF (MCT(IB,KCS-3).EQ.0) THEN
64664               CALL PYCTTR(IB,KCS,IB)
64665               IF(MINT(51).NE.0) RETURN
64666             ENDIF
64667             JCT=MCT(IB,KCS-3)
64668             IFOUND=0
64669 C...Find final state tag partner
64670             DO 210 IT=MAX(1,IP),N
64671               IF (IT.EQ.IB) GOTO 210
64672               IF (MCT(IT,6-KCS).EQ.JCT.AND.K(IT,1).LT.10.AND.K(IT,1).GT
64673      &             .0) THEN
64674                 IFOUND=IFOUND+1
64675                 IA=IT
64676               ENDIF
64677   210       CONTINUE
64678 C...Just copy and goto next if exactly one partner found.
64679             IF (IFOUND.EQ.1) THEN
64680               GOTO 170
64681 C...When no match found, match is presumably junction.
64682             ELSEIF (IFOUND.EQ.0.AND.MQGST.LE.2) THEN
64683 C...Check whether this colour tag matches a junction
64684 C...by seeing whether any parton with this colour tag has the same
64685 C...mother as a junction.
64686 C...NB: Only type 1 and 2 junctions handled presently.
64687               DO 230 IJU=1,NJUNC
64688                 IJUMO=K(IJUNC(IJU,0),3)
64689                 ITJUNC=MOD(K(IJUNC(IJU,0),4)/MSTU(5),MSTU(5))
64690 C...Colours only connect to junctions, anti-colours to antijunctions:
64691                 IF (MOD(ITJUNC+1,2)+1.NE.KCS-3) GOTO 230
64692                 IMATCH=0
64693                 DO 220 J1=MAX(1,IP),N
64694                   IF (K(J1,1).LE.0) GOTO 220
64695 C...First scattering partons have IMO1 = 3 and 4.
64696                   IMO=K(J1,3)
64697                   IF (IMO.EQ.MINT(83)+3.OR.IMO.EQ.MINT(83)+4)
64698      &                 IMO=IMO-2
64699                   IF (MCT(J1,KCS-3).EQ.JCT.AND.IMO.EQ.IJUMO.AND.MOD(K(J1
64700      &                 ,3+ITJUNC)/MSTU(5),MSTU(5)).EQ.IJUNC(IJU,0))
64701      &                 IMATCH=1
64702 C...Attempt at handling type > 3 junctions also. Not tested.
64703                   IF (ITJUNC.GE.3.AND.MCT(J1,6-KCS).EQ.JCT.AND.IMO.EQ
64704      &                 .IJUMO) IMATCH=1
64705   220           CONTINUE
64706                 IF (IMATCH.EQ.0) GOTO 230
64707                 IA=IJUNC(IJU,0)
64708                 IFOUND=IFOUND+1
64709   230         CONTINUE
64710  
64711               IF (IFOUND.EQ.1) THEN
64712                 GOTO 170
64713               ELSEIF (IFOUND.EQ.0) THEN
64714                 WRITE(CHTMP,'(I6)') JCT
64715                 CALL PYERRM(12,'(PYPREP:) no matching colour tag: '
64716      &               //CHTMP)
64717                 IF(NERRPR.LT.5) THEN
64718                   NERRPR=NERRPR+1
64719                   CALL PYLIST(4)
64720                 ENDIF
64721                 MINT(51)=1
64722                 RETURN
64723               ENDIF
64724             ELSEIF (IFOUND.GE.2) THEN
64725               WRITE(CHTMP,'(I6)') JCT
64726               CALL PYERRM(12
64727      &             ,'(PYPREP:) too many occurences of colour line: '//
64728      &             CHTMP)
64729               IF(NERRPR.LT.5) THEN
64730                 NERRPR=NERRPR+1
64731                 CALL PYLIST(4)
64732               ENDIF
64733               MINT(51)=1
64734               RETURN
64735             ENDIF
64736           ENDIF
64737           K(I1,1)=1
64738   240   CONTINUE
64739   250 CONTINUE
64740  
64741 C...Junction systems remain.
64742       IJU=0
64743       IJUS=0
64744       IJUCNT=0
64745       MREV=0
64746       IJJSTR=0
64747   260 IJUCNT=IJUCNT+1
64748       IF (IJUCNT.LE.NJUNC) THEN
64749 C...If we are not processing a j-j string, treat this junction as new.
64750         IF (IJJSTR.EQ.0) THEN
64751           IJU=IJUNC(IJUCNT,0)
64752           MREV=0
64753 C...If junction has already been read, ignore it.
64754           IF (IJUNC(IJUCNT,4).EQ.1) GOTO 260
64755 C...If we are on a j-j string, goto second j-j junction.
64756         ELSE
64757           IJUCNT=IJUCNT-1
64758           IJU=IJUS
64759         ENDIF
64760 C...Mark selected junction read.
64761         DO 270 J=1,NJUNC
64762           IF (IJUNC(J,0).EQ.IJU) IJUNC(J,4)=1
64763   270   CONTINUE
64764 C...Determine junction type
64765         ITJUNC = MOD(K(IJU,4)/MSTU(5),MSTU(5))
64766 C...Type 1 and 2 junctions: ~chi -> q q q, ~chi -> qbar,qbar,qbar
64767 C...Type 3 and 4 junctions: ~qbar -> q q , ~q -> qbar qbar
64768 C...Type 5 and 6 junctions: ~g -> q q q, ~g -> qbar qbar qbar
64769         IF (ITJUNC.GE.1.AND.ITJUNC.LE.6) THEN
64770           IHK=0
64771   280     IHK=IHK+1
64772 C...Find which quarks belong to given junction.
64773           IHF=0
64774           DO 290 IPC=1,NPIECE
64775             IF (IPIECE(IPC,4).EQ.IJU) THEN
64776               IHF=IHF+1
64777               IF (IHF.EQ.IHK) IEND=IPIECE(IPC,3)
64778             ENDIF
64779             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJU) IEND=IPIECE(IPC,3)
64780   290     CONTINUE
64781 C...IHK = 3 is special. Either normal string piece, or j-j string.
64782           IF(IHK.EQ.3) THEN
64783             IF (MREV.NE.1) THEN
64784               DO 300 IPC=1,NPIECE
64785 C...If there is a j-j string starting on the present junction which has
64786 C...zero length, insert next junction immediately.
64787                 IF (IPIECE(IPC,0).EQ.IJU.AND.K(IPIECE(IPC,4),1)
64788      &          .EQ.42.AND.IPIECE(IPC,1)-1-IPIECE(IPC,2).EQ.0) THEN
64789                   IJJSTR = 1
64790                   GOTO 340
64791                 ENDIF
64792   300         CONTINUE
64793               MREV = 1
64794 C...If MREV is 1 and IHK is 3 we are finished with this system.
64795             ELSE
64796               MREV=0
64797               GOTO 260
64798             ENDIF
64799           ENDIF
64800  
64801 C...If we've gotten this far, then either IHK < 3, or
64802 C...an interjunction string exists, or just a third normal string.
64803           IJUNC(IJUCNT,IHK)=0
64804           IJJSTR = 0
64805 C..Order pieces belonging to this junction. Also look for j-j.
64806           DO 310 IPC=1,NPIECE
64807             IF (IPIECE(IPC,3).EQ.IEND) IJUNC(IJUCNT,IHK)=IPC
64808             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJUNC(IJUCNT,0)
64809      &      .AND.K(IPIECE(IPC,4),1).EQ.42) THEN
64810               IJUNC(IJUCNT,IHK)=IPC
64811               IJJSTR = 1
64812               MREV = 0
64813             ENDIF
64814   310     CONTINUE
64815 C...Copy back chains in proper order. MREV=0/1 : descending/ascending
64816           IPC=IJUNC(IJUCNT,IHK)
64817 C...Temporary solution to cover for bug.
64818           IF(IPC.LE.0) THEN
64819             CALL PYERRM(12,'(PYPREP:) fails to hook up junctions')
64820             MINT(51)=1
64821             RETURN
64822           ENDIF
64823           DO 330 ICP=IPIECE(IPC,1+MREV),IPIECE(IPC,2-MREV),1-2*MREV
64824             I1=I1+1
64825             DO 320 J=1,5
64826               K(I1,J)=K(MSTU(4)-ICP,J)
64827               P(I1,J)=P(MSTU(4)-ICP,J)
64828               V(I1,J)=V(MSTU(4)-ICP,J)
64829   320       CONTINUE
64830   330     CONTINUE
64831           K(I1,1)=2
64832 C...Mark last quark.
64833           IF (MREV.EQ.1.AND.IHK.GE.2) K(I1,1)=1
64834 C...Do not insert junctions at wrong places.
64835           IF(IHK.LT.2.OR.MREV.NE.0) GOTO 360
64836 C...Insert junction.
64837   340     IJUS = IJU
64838           IF (IHK.EQ.3) THEN
64839 C...Shift to end junction if a j-j string has been processed.
64840             IF (IJJSTR.NE.0) IJUS = IPIECE(IPC,4)
64841             MREV= 1
64842           ENDIF
64843           I1=I1+1
64844           DO 350 J=1,5
64845             K(I1,J)=0
64846             P(I1,J)=0.
64847             V(I1,J)=0.
64848   350     CONTINUE
64849           K(I1,1)=41
64850           K(IJUS,1)=K(IJUS,1)+10
64851           K(I1,2)=K(IJUS,2)
64852           K(I1,3)=IJUS
64853   360     IF (IHK.LT.3) GOTO 280
64854         ELSE
64855           CALL PYERRM(12,'(PYPREP:) Unknown junction type')
64856           MINT(51)=1
64857           RETURN
64858         ENDIF
64859         IF (IJUCNT.NE.NJUNC) GOTO 260
64860       ENDIF
64861       N=I1
64862  
64863 C...Rearrange three strings from junction, e.g. in case one has been
64864 C...shortened by shower, so the last is the largest-energy one.
64865       IF(NJUNC.GE.1) THEN
64866 C...Find systems with exactly one junction.
64867         MJUN1=0
64868         NBEG=NOLD+1
64869         DO 470 I=NOLD+1,N
64870           IF(K(I,1).NE.1.AND.K(I,1).NE.41) THEN
64871           ELSEIF(K(I,1).EQ.41) THEN
64872             MJUN1=MJUN1+1
64873           ELSEIF(K(I,1).EQ.1.AND.MJUN1.NE.1) THEN
64874             MJUN1=0
64875             NBEG=I+1
64876           ELSE
64877             NEND=I
64878 C...Sum up energy-momentum in each junction string.
64879             DO 370 J=1,5
64880               PJU(1,J)=0D0
64881               PJU(2,J)=0D0
64882               PJU(3,J)=0D0
64883   370       CONTINUE
64884             NJU=0
64885             DO 390 I1=NBEG,NEND
64886               IF(K(I1,2).NE.21) THEN
64887                 NJU=NJU+1
64888                 IJUR(NJU)=I1
64889               ENDIF
64890               DO 380 J=1,5
64891                 PJU(MIN(NJU,3),J)=PJU(MIN(NJU,3),J)+P(I1,J)
64892   380         CONTINUE
64893   390       CONTINUE
64894 C...Find which of them has highest energy (minus mass) in rest frame.
64895             DO 400 J=1,5
64896               PJU(4,J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
64897   400       CONTINUE
64898             PMJU=SQRT(MAX(0D0,PJU(4,4)**2-PJU(4,1)**2-PJU(4,2)**2-
64899      &      PJU(4,3)**2))
64900             DO 410 I2=1,3
64901               PJU(I2,6)=(PJU(4,4)*PJU(I2,4)-PJU(4,1)*PJU(I2,1)-
64902      &        PJU(4,2)*PJU(I2,2)-PJU(4,3)*PJU(I2,3))/PMJU-PJU(I2,5)
64903   410       CONTINUE
64904             IF(PJU(3,6).LT.MIN(PJU(1,6),PJU(2,6))) THEN
64905 C...Decide how to rearrange so that new last has highest energy.
64906               IF(PJU(1,6).LT.PJU(2,6)) THEN
64907                 IRNG(1,1)=IJUR(1)
64908                 IRNG(1,2)=IJUR(2)-1
64909                 IRNG(2,1)=IJUR(4)
64910                 IRNG(2,2)=IJUR(3)+1
64911                 IRNG(4,1)=IJUR(3)-1
64912                 IRNG(4,2)=IJUR(2)
64913               ELSE
64914                 IRNG(1,1)=IJUR(4)
64915                 IRNG(1,2)=IJUR(3)+1
64916                 IRNG(2,1)=IJUR(2)
64917                 IRNG(2,2)=IJUR(3)-1
64918                 IRNG(4,1)=IJUR(2)-1
64919                 IRNG(4,2)=IJUR(1)
64920               ENDIF
64921               IRNG(3,1)=IJUR(3)
64922               IRNG(3,2)=IJUR(3)
64923 C...Copy in correct order below bottom of current event record.
64924               I2=N
64925               DO 440 II=1,4
64926                 DO 430 I1=IRNG(II,1),IRNG(II,2),
64927      &          ISIGN(1,IRNG(II,2)-IRNG(II,1))
64928                   I2=I2+1
64929                   IF(I2.GE.MSTU(4)-MSTU32-5) THEN
64930                     CALL PYERRM(11,
64931      &              '(PYPREP:) no more memory left in PYJETS')
64932                     MINT(51)=1
64933                     MSTU(24)=1
64934                     RETURN
64935                   ENDIF
64936                   DO 420 J=1,5
64937                     K(I2,J)=K(I1,J)
64938                     P(I2,J)=P(I1,J)
64939                     V(I2,J)=V(I1,J)
64940   420             CONTINUE
64941                   IF(K(I2,1).EQ.1) K(I2,1)=2
64942   430           CONTINUE
64943   440         CONTINUE
64944               K(I2,1)=1
64945 C...Copy back up, overwriting but now in correct order.
64946               DO 460 I1=NBEG,NEND
64947                 I2=I1-NBEG+N+1
64948                 DO 450 J=1,5
64949                   K(I1,J)=K(I2,J)
64950                   P(I1,J)=P(I2,J)
64951                   V(I1,J)=V(I2,J)
64952   450           CONTINUE
64953   460         CONTINUE
64954             ENDIF
64955             MJUN1=0
64956             NBEG=I+1
64957           ENDIF
64958   470   CONTINUE
64959  
64960 C...Check whether q-q-j-j-qbar-qbar systems should be collapsed
64961 C...to two q-qbar systems.
64962 C...(MSTJ(19)=1 forces q-q-j-j-qbar-qbar.)
64963         IF (MSTJ(19).NE.1) THEN
64964           MJUN1  = 0
64965           JJGLUE = 0
64966           NBEG   = NOLD+1
64967 C...Force collapse when MSTJ(19)=2.
64968           IF (MSTJ(19).EQ.2) THEN
64969             DELMJJ = 1D9
64970             DELMQQ = 0D0
64971           ENDIF
64972 C...Find systems with exactly two junctions.
64973           DO 700 I=NOLD+1,N
64974 C...Count junctions
64975             IF (K(I,1).EQ.41) THEN
64976               MJUN1 = MJUN1+1
64977 C...Check for interjunction gluons
64978               IF (MJUN1.EQ.2.AND.K(I-1,1).NE.41) THEN
64979                 JJGLUE = 1
64980               ENDIF
64981             ELSEIF(K(I,1).EQ.1.AND.(MJUN1.NE.2)) THEN
64982 C...If end of system reached with either zero or one junction, restart
64983 C...with next system.
64984               MJUN1  = 0
64985               JJGLUE = 0
64986               NBEG   = I+1
64987             ELSEIF(K(I,1).EQ.1) THEN
64988 C...If end of system reached with exactly two junctions, compute string
64989 C...length measure for the (q-q-j-j-qbar-qbar) topology and compare with
64990 C...length measure for the (q-qbar)(q-qbar) topology.
64991               NEND=I
64992 C...Loop down through chain.
64993               ISID=0
64994               DO 480 I1=NBEG,NEND
64995 C...Store string piece division locations in event record
64996                 IF (K(I1,2).NE.21) THEN
64997                   ISID       = ISID+1
64998                   IJCP(ISID) = I1
64999                 ENDIF
65000   480         CONTINUE
65001 C...Randomly choose between (1,3)(2,4) and (1,4)(2,3) topologies.
65002               ISW=0
65003               IF (PYR(0).LT.0.5D0) ISW=1
65004 C...Randomly choose which qqbar string gets the jj gluons.
65005               IGS=1
65006               IF (PYR(0).GT.0.5D0) IGS=2
65007 C...Only compute string lengths when no topology forced.
65008               IF (MSTJ(19).EQ.0) THEN
65009 C...Repeat following for each junction
65010                 DO 570 IJU=1,2
65011 C...Initialize iterative procedure for finding JRF
65012                   IJRFIT=0
65013                   DO 490 IX=1,3
65014                     TJUOLD(IX)=0D0
65015   490             CONTINUE
65016                   TJUOLD(4)=1D0
65017 C...Start iteration. Sum up momenta in string pieces
65018   500             DO 540 IJS=1,3
65019 C...JD=-1 for first junction, +1 for second junction.
65020 C...Find out where piece starts and ends and which direction to go.
65021                     JD=2*IJU-3
65022                     IF (IJS.LE.2) THEN
65023                       IA = IJCP((IJU-1)*7 - JD*(IJS+1)) + JD
65024                       IB = IJCP((IJU-1)*7 - JD*IJS)
65025                     ELSEIF (IJS.EQ.3) THEN
65026                       JD =-JD
65027                       IA = IJCP((IJU-1)*7 + JD*(IJS)) + JD
65028                       IB = IJCP((IJU-1)*7 + JD*(IJS+3))
65029                     ENDIF
65030 C...Initialize junction pull 4-vector.
65031                     DO 510 J=1,5
65032                       PUL(IJS,J)=0D0
65033   510               CONTINUE
65034 C...Initialize weight
65035                     PWT = 0D0
65036                     PWTOLD = 0D0
65037 C...Sum up (weighted) momenta along each string piece
65038                     DO 530 ISP=IA,IB,JD
65039 C...If present parton not last in chain
65040                       IF (ISP.NE.IA.AND.ISP.NE.IB) THEN
65041 C...If last parton was a junction, store present weight
65042                         IF (K(ISP-JD,2).EQ.88) THEN
65043                           PWTOLD = PWT
65044 C...If last parton was a quark, reset to stored weight.
65045                         ELSEIF (K(ISP-JD,2).NE.21) THEN
65046                           PWT = PWTOLD
65047                         ENDIF
65048                       ENDIF
65049 C...Skip next parton if weight already large
65050                       IF (PWT.GT.10D0) GOTO 530
65051 C...Compute momentum in TJUOLD frame:
65052                       TDP=TJUOLD(1)*P(ISP,1)+TJUOLD(2)*P(ISP,2)+TJUOLD(3
65053      &                     )*P(ISP,3)
65054                       BFC=TDP/(1D0+TJUOLD(4))+P(ISP,4)
65055                       DO 520 J=1,3
65056                         TMP=P(ISP,J)+TJUOLD(J)*BFC
65057                         PUL(IJS,J)=PUL(IJS,J)+TMP*EXP(-PWT)
65058   520                 CONTINUE
65059 C...Boosted energy
65060                       TMP=TJUOLD(4)*P(ISP,4)+TDP
65061                       PUL(IJS,4)=PUL(IJS,J)+TMP*EXP(-PWT)
65062 C...Update weight
65063                       PWT=PWT+TMP/PARJ(48)
65064 C...Put |p| rather than m in 5th slot
65065                       PUL(IJS,5)=SQRT(PUL(IJS,1)**2+PUL(IJS,2)**2
65066      &                     +PUL(IJS,3)**2)
65067   530               CONTINUE
65068   540             CONTINUE
65069 C...Compute boost
65070                   IJRFIT=IJRFIT+1
65071                   CALL PYJURF(PUL,T)
65072 C...Combine new boost (T) with old boost (TJUOLD)
65073                   TMP=T(1)*TJUOLD(1)+T(2)*TJUOLD(2)+T(3)*TJUOLD(3)
65074                   DO 550 IX=1,3
65075                     TJUOLD(IX)=T(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+T(4
65076      &                   ))
65077   550             CONTINUE
65078                   TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)
65079      &                 **2)
65080 C...If last boost small, accept JRF, else iterate.
65081 C...Also prevent possibility of infinite loop.
65082                   IF (ABS((T(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
65083      &                 IJRFIT.LT.MSTJ(18))THEN
65084                     GOTO 500
65085                   ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
65086                     CALL PYERRM(1,'(PYPREP:) failed to converge on JRF')
65087                   ENDIF
65088 C...Store final boost, with change of sign since TJJ motion vector.
65089                   DO 560 IX=1,3
65090                     TJJ(IJU,IX)=-TJUOLD(IX)
65091   560             CONTINUE
65092                   TJJ(IJU,4)=SQRT(1D0+TJJ(IJU,1)**2+TJJ(IJU,2)**2
65093      &                 +TJJ(IJU,3)**2)
65094   570           CONTINUE
65095 C...String length measure for (q-qbar)(q-qbar) topology.
65096 C...Note only momenta of nearest partons used (since rest of system
65097 C...identical).
65098                 IF (JJGLUE.EQ.0) THEN
65099                   DELMQQ=4D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)*FOUR(IJCP(3)
65100      &                 -1,IJCP(5-ISW)+1)
65101                 ELSE
65102 C...Put jj gluons on selected string (IGS selected randomly above).
65103                   IF (IGS.EQ.1) THEN
65104                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
65105      &                   ,IJCP(4+ISW)+1)*FOUR(IJCP(3)-1,IJCP(5-ISW)+1)
65106                   ELSE
65107                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)
65108      &                   *FOUR(IJCP(3)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
65109      &                   ,IJCP(5-ISW)+1)
65110                   ENDIF
65111                 ENDIF
65112 C...String length measure for q-q-j-j-q-q topology.
65113                 T1G1=0D0
65114                 T2G2=0D0
65115                 T1T2=0D0
65116                 T1P1=0D0
65117                 T1P2=0D0
65118                 T2P3=0D0
65119                 T2P4=0D0
65120                 ISGN=-1
65121 C...Note only momenta of nearest partons used (since rest of system
65122 C...identical).
65123                 DO 580 IX=1,4
65124                   IF (IX.EQ.4) ISGN=1
65125                   T1P1=T1P1+ISGN*TJJ(1,IX)*P(IJCP(2)-1,IX)
65126                   T1P2=T1P2+ISGN*TJJ(1,IX)*P(IJCP(3)-1,IX)
65127                   T2P3=T2P3+ISGN*TJJ(2,IX)*P(IJCP(4)+1,IX)
65128                   T2P4=T2P4+ISGN*TJJ(2,IX)*P(IJCP(5)+1,IX)
65129                   IF (JJGLUE.EQ.0) THEN
65130 C...Junction motion vector dot product gives length when inter-junction
65131 C...gluons absent.
65132                     T1T2=T1T2+ISGN*TJJ(1,IX)*TJJ(2,IX)
65133                   ELSE
65134 C...Junction motion vector dot products with gluon momenta give length
65135 C...when inter-junction gluons present.
65136                     T1G1=T1G1+ISGN*TJJ(1,IX)*P(IJCP(3)+1,IX)
65137                     T2G2=T2G2+ISGN*TJJ(2,IX)*P(IJCP(4)-1,IX)
65138                   ENDIF
65139   580           CONTINUE
65140                 DELMJJ=16D0*T1P1*T1P2*T2P3*T2P4
65141                 IF (JJGLUE.EQ.0) THEN
65142                   DELMJJ=DELMJJ*(T1T2+SQRT(T1T2**2-1))
65143                 ELSE
65144                   DELMJJ=DELMJJ*4D0*T1G1*T2G2
65145                 ENDIF
65146               ENDIF
65147 C...If delmjj > delmqq collapse string system to q-qbar q-qbar
65148 C...(Always the case for MSTJ(19)=2 due to initialization above)
65149               IF (DELMJJ.GT.DELMQQ) THEN
65150 C...Put new system at end of event record
65151                 NCOP=N
65152                 DO 650 IST=1,2
65153                   DO 600 ICOP=IJCP(IST),IJCP(IST+1)-1
65154                     NCOP=NCOP+1
65155                     DO 590 IX=1,5
65156                       P(NCOP,IX)=P(ICOP,IX)
65157                       K(NCOP,IX)=K(ICOP,IX)
65158   590               CONTINUE
65159   600             CONTINUE
65160                   IF (JJGLUE.NE.0.AND.IST.EQ.IGS) THEN
65161 C...Insert inter-junction gluon string piece (reversed)
65162                     NJJGL=0
65163                     DO 620 ICOP=IJCP(4)-1,IJCP(3)+1,-1
65164                       NJJGL=NJJGL+1
65165                       NCOP=NCOP+1
65166                       DO 610 IX=1,5
65167                         P(NCOP,IX)=P(ICOP,IX)
65168                         K(NCOP,IX)=K(ICOP,IX)
65169   610                 CONTINUE
65170   620               CONTINUE
65171                     ENDIF
65172                   IFC=-2*IST+3
65173                   DO 640 ICOP=IJCP(IST+IFC*ISW+3)+1,IJCP(IST+IFC*ISW+4)
65174                     NCOP=NCOP+1
65175                     DO 630 IX=1,5
65176                       P(NCOP,IX)=P(ICOP,IX)
65177                       K(NCOP,IX)=K(ICOP,IX)
65178   630               CONTINUE
65179   640             CONTINUE
65180                   K(NCOP,1)=1
65181   650           CONTINUE
65182 C...Copy system back in right order
65183                 DO 670 ICOP=NBEG,NEND-2
65184                   DO 660 IX=1,5
65185                     P(ICOP,IX)=P(N+ICOP-NBEG+1,IX)
65186                     K(ICOP,IX)=K(N+ICOP-NBEG+1,IX)
65187   660             CONTINUE
65188   670           CONTINUE
65189 C...Shift down rest of event record
65190                 DO 690 ICOP=NEND+1,N
65191                   DO 680 IX=1,5
65192                     P(ICOP-2,IX)=P(ICOP,IX)
65193                     K(ICOP-2,IX)=K(ICOP,IX)
65194   680             CONTINUE
65195   690             CONTINUE
65196 C...Update length of event record.
65197                 N=N-2
65198               ENDIF
65199               MJUN1=0
65200               NBEG=I+1
65201             ENDIF
65202   700     CONTINUE
65203         ENDIF
65204       ENDIF
65205  
65206 C...Done if no checks on small-mass systems.
65207       IF(MSTJ(14).LT.0) RETURN
65208       IF(MSTJ(14).EQ.0) GOTO 1140
65209  
65210 C...Find lowest-mass colour singlet jet system.
65211       NS=N
65212   710 NSIN=N-NS
65213       PDMIN=1D0+PARJ(32)
65214       IC=0
65215       DO 770 I=MAX(1,IP),N
65216         IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN
65217         ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN
65218           NSIN=NSIN+1
65219           IC=I
65220           DO 720 J=1,4
65221             DPS(J)=P(I,J)
65222   720     CONTINUE
65223           MSTJ(93)=1
65224           DPS(5)=PYMASS(K(I,2))
65225         ELSEIF(K(I,1).EQ.2.AND.K(I,2).NE.21) THEN
65226           DO 730 J=1,4
65227             DPS(J)=DPS(J)+P(I,J)
65228   730     CONTINUE
65229           MSTJ(93)=1
65230           DPS(5)=DPS(5)+PYMASS(K(I,2))
65231         ELSEIF(K(I,1).EQ.2) THEN
65232           DO 740 J=1,4
65233             DPS(J)=DPS(J)+P(I,J)
65234   740     CONTINUE
65235         ELSEIF(IC.NE.0.AND.KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
65236           DO 750 J=1,4
65237             DPS(J)=DPS(J)+P(I,J)
65238   750     CONTINUE
65239           MSTJ(93)=1
65240           DPS(5)=DPS(5)+PYMASS(K(I,2))
65241           PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-
65242      &    DPS(5)
65243           IF(PD.LT.PDMIN) THEN
65244             PDMIN=PD
65245             DO 760 J=1,5
65246               DPC(J)=DPS(J)
65247   760       CONTINUE
65248             IC1=IC
65249             IC2=I
65250           ENDIF
65251           IC=0
65252         ELSE
65253           NSIN=NSIN+1
65254         ENDIF
65255   770 CONTINUE
65256  
65257 C...Done if lowest-mass system above threshold for string frag.
65258       IF(PDMIN.GE.PARJ(32)) GOTO 1140
65259  
65260 C...Fill small-mass system as cluster.
65261       NSAV=N
65262       PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2))
65263       K(N+1,1)=11
65264       K(N+1,2)=91
65265       K(N+1,3)=IC1
65266       P(N+1,1)=DPC(1)
65267       P(N+1,2)=DPC(2)
65268       P(N+1,3)=DPC(3)
65269       P(N+1,4)=DPC(4)
65270       P(N+1,5)=PECM
65271  
65272 C...Set up history, assuming cluster -> 2 hadrons.
65273       NBODY=2
65274       K(N+1,4)=N+2
65275       K(N+1,5)=N+3
65276       K(N+2,1)=1
65277       K(N+3,1)=1
65278       IF(MSTU(16).NE.2) THEN
65279         K(N+2,3)=N+1
65280         K(N+3,3)=N+1
65281       ELSE
65282         K(N+2,3)=IC1
65283         K(N+3,3)=IC2
65284       ENDIF
65285       K(N+2,4)=0
65286       K(N+3,4)=0
65287       K(N+2,5)=0
65288       K(N+3,5)=0
65289       V(N+1,5)=0D0
65290       V(N+2,5)=0D0
65291       V(N+3,5)=0D0
65292  
65293 C...Find total flavour content - complicated by presence of junctions.
65294       NQ=0
65295       NDIQ=0
65296       DO 780 I=IC1,IC2
65297         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.K(I,2).NE.21) THEN
65298           NQ=NQ+1
65299           KFQ(NQ)=K(I,2)
65300           IF(IABS(K(I,2)).GT.1000) NDIQ=NDIQ+1
65301         ENDIF
65302   780 CONTINUE
65303  
65304 C...If several diquarks, split up one to give even number of flavours.
65305       IF(NQ.EQ.3.AND.NDIQ.GE.2) THEN
65306         I1=3
65307         IF(IABS(KFQ(3)).LT.1000) I1=1
65308         KFQ(4)=ISIGN(MOD(IABS(KFQ(I1))/100,10),KFQ(I1))
65309         KFQ(I1)=KFQ(I1)/1000
65310         NQ=4
65311         NDIQ=NDIQ-1
65312       ENDIF
65313  
65314 C...If four quark ends, join two to diquark.
65315       IF(NQ.EQ.4.AND.NDIQ.EQ.0) THEN
65316         I1=1
65317         I2=2
65318         IF(KFQ(I1)*KFQ(I2).LT.0) I2=3
65319         IF(I2.EQ.3.AND.KFQ(I1)*KFQ(I2).LT.0) I2=4
65320         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
65321         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
65322         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
65323      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
65324         KFQ(I2)=KFQ(4)
65325         NQ=3
65326         NDIQ=1
65327       ENDIF
65328  
65329 C...If two quark ends, plus quark or diquark, join quarks to diquark.
65330       IF(NQ.EQ.3) THEN
65331         I1=1
65332         I2=2
65333         IF(IABS(KFQ(I1)).GT.1000) I1=3
65334         IF(IABS(KFQ(I2)).GT.1000) I2=3
65335         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
65336         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
65337         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
65338      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
65339         KFQ(I2)=KFQ(3)
65340         NQ=2
65341         NDIQ=NDIQ+1
65342       ENDIF
65343  
65344 C...Form two particles from flavours of lowest-mass system, if feasible.
65345       NTRY = 0
65346   790 NTRY = NTRY + 1
65347  
65348 C...Open string with two specified endpoint flavours.
65349       IF(NQ.EQ.2) THEN
65350         KC1=PYCOMP(KFQ(1))
65351         KC2=PYCOMP(KFQ(2))
65352         IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 1140
65353         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
65354         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
65355         IF(KQ1+KQ2.NE.0) GOTO 1140
65356 C...Start with qq, if there is one. Only allow for rank 1 popcorn meson
65357   800   K1=KFQ(1)
65358         IF(IABS(KFQ(2)).GT.1000) K1=KFQ(2)
65359         MSTU(125)=0
65360         CALL PYDCYK(K1,0,KFLN,K(N+2,2))
65361         CALL PYDCYK(KFQ(1)+KFQ(2)-K1,-KFLN,KFLDMP,K(N+3,2))
65362         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 800
65363  
65364 C...Open string with four specified flavours.
65365       ELSEIF(NQ.EQ.4) THEN
65366         KC1=PYCOMP(KFQ(1))
65367         KC2=PYCOMP(KFQ(2))
65368         KC3=PYCOMP(KFQ(3))
65369         KC4=PYCOMP(KFQ(4))
65370         IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) GOTO 1140
65371         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
65372         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
65373         KQ3=KCHG(KC3,2)*ISIGN(1,KFQ(3))
65374         KQ4=KCHG(KC4,2)*ISIGN(1,KFQ(4))
65375         IF(KQ1+KQ2+KQ3+KQ4.NE.0) GOTO 1140
65376 C...Combine flavours pairwise to form two hadrons.
65377   810   I1=1
65378         I2=2
65379         IF(KQ1*KQ2.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
65380      &  IABS(KFQ(2)).GT.1000)) I2=3
65381         IF(I2.EQ.3.AND.(KQ1*KQ3.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
65382      &  IABS(KFQ(3)).GT.1000))) I2=4
65383         I3=3
65384         IF(I2.EQ.3) I3=2
65385         I4=10-I1-I2-I3
65386         CALL PYDCYK(KFQ(I1),KFQ(I2),KFLDMP,K(N+2,2))
65387         CALL PYDCYK(KFQ(I3),KFQ(I4),KFLDMP,K(N+3,2))
65388         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 810
65389  
65390 C...Closed string.
65391       ELSE
65392         IF(IABS(K(IC2,2)).NE.21) GOTO 1140
65393 C...No room for popcorn mesons in closed string -> 2 hadrons.
65394         MSTU(125)=0
65395   820   CALL PYDCYK(1+INT((2D0+PARJ(2))*PYR(0)),0,KFLN,KFDMP)
65396         CALL PYDCYK(KFLN,0,KFLM,K(N+2,2))
65397         CALL PYDCYK(-KFLN,-KFLM,KFLDMP,K(N+3,2))
65398         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 820
65399       ENDIF
65400       P(N+2,5)=PYMASS(K(N+2,2))
65401       P(N+3,5)=PYMASS(K(N+3,2))
65402  
65403 C...If it does not work: try again (a number of times), give up (if no
65404 C...place to shuffle momentum or too many flavours), or form one hadron.
65405       IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) THEN
65406         IF(NTRY.LT.MSTJ(17).OR.(NQ.EQ.4.AND.NTRY.LT.5*MSTJ(17))) THEN
65407           GOTO 790
65408         ELSEIF(NSIN.EQ.1.OR.NQ.EQ.4) THEN
65409           GOTO 1140
65410         ELSE
65411           GOTO 890
65412         END IF
65413       END IF
65414  
65415 C...Perform two-particle decay of jet system.
65416 C...First step: find reference axis in decaying system rest frame.
65417 C...(Borrow slot N+2 for temporary direction.)
65418       DO 830 J=1,4
65419         P(N+2,J)=P(IC1,J)
65420   830 CONTINUE
65421       DO 850 I=IC1+1,IC2-1
65422         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
65423      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
65424           FRAC1=FOUR(IC2,I)/(FOUR(IC1,I)+FOUR(IC2,I))
65425           DO 840 J=1,4
65426             P(N+2,J)=P(N+2,J)+FRAC1*P(I,J)
65427   840     CONTINUE
65428         ENDIF
65429   850 CONTINUE
65430       CALL PYROBO(N+2,N+2,0D0,0D0,-DPC(1)/DPC(4),-DPC(2)/DPC(4),
65431      &-DPC(3)/DPC(4))
65432       THE1=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
65433       PHI1=PYANGL(P(N+2,1),P(N+2,2))
65434  
65435 C...Second step: generate isotropic/anisotropic decay.
65436       PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2-
65437      &(P(N+2,5)-P(N+3,5))**2))/(2D0*PECM)
65438   860 UE(3)=PYR(0)
65439       IF(PARJ(21).LE.0.01D0) UE(3)=1D0
65440       PT2=(1D0-UE(3)**2)*PA**2
65441       IF(MSTJ(16).LE.0) THEN
65442         PREV=0.5D0
65443       ELSE
65444         IF(EXP(-PT2/(2D0*MAX(0.01D0,PARJ(21))**2)).LT.PYR(0)) GOTO 860
65445         PR1=P(N+2,5)**2+PT2
65446         PR2=P(N+3,5)**2+PT2
65447         ALAMBD=SQRT(MAX(0D0,(PECM**2-PR1-PR2)**2-4D0*PR1*PR2))
65448         PREVCF=PARJ(42)
65449         IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
65450         PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*ALAMBD*PARJ(40))))
65451       ENDIF
65452       IF(PYR(0).LT.PREV) UE(3)=-UE(3)
65453       PHI=PARU(2)*PYR(0)
65454       UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
65455       UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
65456       DO 870 J=1,3
65457         P(N+2,J)=PA*UE(J)
65458         P(N+3,J)=-PA*UE(J)
65459   870 CONTINUE
65460       P(N+2,4)=SQRT(PA**2+P(N+2,5)**2)
65461       P(N+3,4)=SQRT(PA**2+P(N+3,5)**2)
65462  
65463 C...Third step: move back to event frame and set production vertex.
65464       CALL PYROBO(N+2,N+3,THE1,PHI1,DPC(1)/DPC(4),DPC(2)/DPC(4),
65465      &DPC(3)/DPC(4))
65466       DO 880 J=1,4
65467         V(N+1,J)=V(IC1,J)
65468         V(N+2,J)=V(IC1,J)
65469         V(N+3,J)=V(IC2,J)
65470   880 CONTINUE
65471       N=N+3
65472       GOTO 1120
65473  
65474 C...Else form one particle, if possible.
65475   890 NBODY=1
65476       K(N+1,5)=N+2
65477       DO 900 J=1,4
65478         V(N+1,J)=V(IC1,J)
65479         V(N+2,J)=V(IC1,J)
65480   900 CONTINUE
65481  
65482 C...Select hadron flavour from available quark flavours.
65483   910 IF(NQ.EQ.2.AND.IABS(KFQ(1)).GT.100.AND.IABS(KFQ(2)).GT.100) THEN
65484         GOTO 1140
65485       ELSEIF(NQ.EQ.2) THEN
65486         CALL PYKFDI(KFQ(1),KFQ(2),KFLDMP,K(N+2,2))
65487       ELSE
65488         KFLN=1+INT((2D0+PARJ(2))*PYR(0))
65489         CALL PYKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2))
65490       ENDIF
65491       IF(K(N+2,2).EQ.0) GOTO 910
65492       P(N+2,5)=PYMASS(K(N+2,2))
65493  
65494 C...Use old algorithm for E/p conservation? (EN)
65495       IF (MSTJ(16).LE.0) GOTO 1080
65496  
65497 C...Find the string piece closest to the cluster by a loop
65498 C...over the undecayed partons not in present cluster. (EN)
65499       DGLOMI=1D30
65500       IBEG=0
65501       I0=0
65502       NJUNC=0
65503       DO 940 I1=MAX(1,IP),N-1
65504         IF(K(I1,1).EQ.1) NJUNC=0
65505         IF(K(I1,1).EQ.41) NJUNC=NJUNC+1
65506         IF(K(I1,1).EQ.41) GOTO 940
65507         IF(I1.GE.IC1-1.AND.I1.LE.IC2) THEN
65508           I0=0
65509         ELSEIF(K(I1,1).EQ.2) THEN
65510           IF(I0.EQ.0) I0=I1
65511           I2=I1
65512   920     I2=I2+1
65513           IF(K(I2,1).EQ.41) GOTO 940
65514           IF(K(I2,1).GT.10) GOTO 920
65515           IF(KCHG(PYCOMP(K(I2,2)),2).EQ.0) GOTO 920
65516           IF(K(I1,2).EQ.21.AND.K(I2,2).NE.21.AND.K(I2,1).NE.1.AND.
65517      &    NJUNC.EQ.0) GOTO 940
65518           IF(K(I1,2).NE.21.AND.K(I2,2).EQ.21.AND.NJUNC.NE.0) GOTO 940
65519           IF(K(I1,2).NE.21.AND.K(I2,2).NE.21.AND.(I1.GT.I0.OR.
65520      &    K(I2,1).NE.1)) GOTO 940
65521  
65522 C...Define velocity vectors e1, e2, ecl and differences e3, e4.
65523           DO 930 J=1,3
65524             E1(J)=P(I1,J)/P(I1,4)
65525             E2(J)=P(I2,J)/P(I2,4)
65526             ECL(J)=P(N+1,J)/P(N+1,4)
65527             E3(J)=E2(J)-E1(J)
65528             E4(J)=ECL(J)-E1(J)
65529   930     CONTINUE
65530  
65531 C...Calculate minimal D=(e4-alpha*e3)**2 for 0<alpha<1.
65532           E3S=E3(1)**2+E3(2)**2+E3(3)**2
65533           E4S=E4(1)**2+E4(2)**2+E4(3)**2
65534           E34=E3(1)*E4(1)+E3(2)*E4(2)+E3(3)*E4(3)
65535           IF(E34.LE.0D0) THEN
65536             DDMIN=E4S
65537           ELSEIF(E34.LT.E3S) THEN
65538             DDMIN=E4S-E34**2/E3S
65539           ELSE
65540             DDMIN=E4S-2D0*E34+E3S
65541           ENDIF
65542  
65543 C...Is this the smallest so far?
65544           IF(DDMIN.LT.DGLOMI) THEN
65545             DGLOMI=DDMIN
65546             IBEG=I0
65547             IPCS=I1
65548           ENDIF
65549         ELSEIF(K(I1,1).EQ.1.AND.KCHG(PYCOMP(K(I1,2)),2).NE.0) THEN
65550           I0=0
65551         ENDIF
65552   940 CONTINUE
65553  
65554 C... Check if there are any strings to connect to the new gluon. (EN)
65555       IF (IBEG.EQ.0) GOTO 1080
65556  
65557 C...Delta_m = m_clus - m_had > 0: emit a 'gluon' (EN)
65558       IF (P(N+1,5).GE.P(N+2,5)) THEN
65559  
65560 C...Construct 'gluon' that is needed to put hadron on the mass shell.
65561         FRAC=P(N+2,5)/P(N+1,5)
65562         DO 950 J=1,5
65563           P(N+2,J)=FRAC*P(N+1,J)
65564           PG(J)=(1D0-FRAC)*P(N+1,J)
65565   950   CONTINUE
65566  
65567 C... Copy string with new gluon put in.
65568         N=N+2
65569         I=IBEG-1
65570   960   I=I+1
65571         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 960
65572         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 960
65573         N=N+1
65574         DO 970 J=1,5
65575           K(N,J)=K(I,J)
65576           P(N,J)=P(I,J)
65577           V(N,J)=V(I,J)
65578   970   CONTINUE
65579         K(I,1)=K(I,1)+10
65580         K(I,4)=N
65581         K(I,5)=N
65582         K(N,3)=I
65583         IF(I.EQ.IPCS) THEN
65584           N=N+1
65585           DO 980 J=1,5
65586             K(N,J)=K(N-1,J)
65587             P(N,J)=PG(J)
65588             V(N,J)=V(N-1,J)
65589   980     CONTINUE
65590           K(N,2)=21
65591           K(N,3)=NSAV+1
65592         ENDIF
65593         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 960
65594         GOTO 1120
65595  
65596 C...Delta_m = m_clus - m_had < 0: have to absorb a 'gluon' instead,
65597 C...from string piece endpoints.
65598       ELSE
65599  
65600 C...Begin by copying string that should give energy to cluster.
65601         N=N+2
65602         I=IBEG-1
65603   990   I=I+1
65604         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 990
65605         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 990
65606         N=N+1
65607         DO 1000 J=1,5
65608           K(N,J)=K(I,J)
65609           P(N,J)=P(I,J)
65610           V(N,J)=V(I,J)
65611  1000   CONTINUE
65612         K(I,1)=K(I,1)+10
65613         K(I,4)=N
65614         K(I,5)=N
65615         K(N,3)=I
65616         IF(I.EQ.IPCS) I1=N
65617         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 990
65618         I2=I1+1
65619  
65620 C...Set initial Phad.
65621         DO 1010 J=1,4
65622           P(NSAV+2,J)=P(NSAV+1,J)
65623  1010   CONTINUE
65624  
65625 C...Calculate Pg, a part of which will be added to Phad later. (EN)
65626  1020   IF(MSTJ(16).EQ.1) THEN
65627           ALPHA=1D0
65628           BETA=1D0
65629         ELSE
65630           ALPHA=FOUR(NSAV+1,I2)/FOUR(I1,I2)
65631           BETA=FOUR(NSAV+1,I1)/FOUR(I1,I2)
65632         ENDIF
65633         DO 1030 J=1,4
65634           PG(J)=ALPHA*P(I1,J)+BETA*P(I2,J)
65635  1030   CONTINUE
65636         PG(5)=SQRT(MAX(1D-20,PG(4)**2-PG(1)**2-PG(2)**2-PG(3)**2))
65637  
65638 C..Solve 2nd order equation, use the best (smallest) solution. (EN)
65639         PMSCOL=P(NSAV+2,4)**2-P(NSAV+2,1)**2-P(NSAV+2,2)**2-
65640      &  P(NSAV+2,3)**2
65641         PCLPG=(P(NSAV+2,4)*PG(4)-P(NSAV+2,1)*PG(1)-
65642      &  P(NSAV+2,2)*PG(2)-P(NSAV+2,3)*PG(3))/PG(5)**2
65643         DELTA=SQRT(PCLPG**2+(P(NSAV+2,5)**2-PMSCOL)/PG(5)**2)-PCLPG
65644  
65645 C...If all gluon energy eaten, zero it and take a step back.
65646         ITER=0
65647         IF(DELTA*ALPHA.GT.1D0.AND.I1.GT.NSAV+3.AND.K(I1,2).EQ.21) THEN
65648           ITER=1
65649           DO 1040 J=1,4
65650             P(NSAV+2,J)=P(NSAV+2,J)+P(I1,J)
65651             P(I1,J)=0D0
65652  1040     CONTINUE
65653           P(I1,5)=0D0
65654           K(I1,1)=K(I1,1)+10
65655           I1=I1-1
65656           IF(K(I1,1).EQ.41) ITER=-1
65657         ENDIF
65658         IF(DELTA*BETA.GT.1D0.AND.I2.LT.N.AND.K(I2,2).EQ.21) THEN
65659           ITER=1
65660           DO 1050 J=1,4
65661             P(NSAV+2,J)=P(NSAV+2,J)+P(I2,J)
65662             P(I2,J)=0D0
65663  1050     CONTINUE
65664           P(I2,5)=0D0
65665           K(I2,1)=K(I2,1)+10
65666           I2=I2+1
65667           IF(K(I2,1).EQ.41) ITER=-1
65668         ENDIF
65669         IF(ITER.EQ.1) GOTO 1020
65670  
65671 C...If also all endpoint energy eaten, revert to old procedure.
65672         IF((1D0-DELTA*ALPHA)*P(I1,4).LT.P(I1,5).OR.
65673      &  (1D0-DELTA*BETA)*P(I2,4).LT.P(I2,5).OR.ITER.EQ.-1) THEN
65674           DO 1060 I=NSAV+3,N
65675             IM=K(I,3)
65676             K(IM,1)=K(IM,1)-10
65677             K(IM,4)=0
65678             K(IM,5)=0
65679  1060     CONTINUE
65680           N=NSAV
65681           GOTO 1080
65682         ENDIF
65683  
65684 C... Construct the collapsed hadron and modified string partons.
65685         DO 1070 J=1,4
65686           P(NSAV+2,J)=P(NSAV+2,J)+DELTA*PG(J)
65687           P(I1,J)=(1D0-DELTA*ALPHA)*P(I1,J)
65688           P(I2,J)=(1D0-DELTA*BETA)*P(I2,J)
65689  1070   CONTINUE
65690           P(I1,5)=(1D0-DELTA*ALPHA)*P(I1,5)
65691           P(I2,5)=(1D0-DELTA*BETA)*P(I2,5)
65692  
65693 C...Finished with string collapse in new scheme.
65694         GOTO 1120
65695       ENDIF
65696  
65697 C... Use old algorithm; by choice or when in trouble.
65698  1080 CONTINUE
65699 C...Find parton/particle which combines to largest extra mass.
65700       IR=0
65701       HA=0D0
65702       HSM=0D0
65703       DO 1100 MCOMB=1,3
65704         IF(IR.NE.0) GOTO 1100
65705         DO 1090 I=MAX(1,IP),N
65706           IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2
65707      &    .AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 1090
65708           IF(MCOMB.EQ.1) KCI=PYCOMP(K(I,2))
65709           IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 1090
65710           IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 1090
65711           IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100)
65712      &    GOTO 1090
65713           HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3)
65714           HSR=2D0*HCR+PECM**2-P(N+2,5)**2-2D0*P(N+2,5)*P(I,5)
65715           IF(HSR.GT.HSM) THEN
65716             IR=I
65717             HA=HCR
65718             HSM=HSR
65719           ENDIF
65720  1090   CONTINUE
65721  1100 CONTINUE
65722  
65723 C...Shuffle energy and momentum to put new particle on mass shell.
65724       IF(IR.NE.0) THEN
65725         HB=PECM**2+HA
65726         HC=P(N+2,5)**2+HA
65727         HD=P(IR,5)**2+HA
65728         HK2=0.5D0*(HB*SQRT(MAX(0D0,((HB+HC)**2-4D0*(HB+HD)*P(N+2,5)**2)/
65729      &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD)
65730         HK1=(0.5D0*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB
65731         DO 1110 J=1,4
65732           P(N+2,J)=(1D0+HK1)*DPC(J)-HK2*P(IR,J)
65733           P(IR,J)=(1D0+HK2)*P(IR,J)-HK1*DPC(J)
65734  1110   CONTINUE
65735         N=N+2
65736       ELSE
65737         CALL PYERRM(3,'(PYPREP:) no match for collapsing cluster')
65738         RETURN
65739       ENDIF
65740  
65741 C...Mark collapsed system and store daughter pointers. Iterate.
65742  1120 DO 1130 I=IC1,IC2
65743         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
65744      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
65745           K(I,1)=K(I,1)+10
65746           IF(MSTU(16).NE.2) THEN
65747             K(I,4)=NSAV+1
65748             K(I,5)=NSAV+1
65749           ELSE
65750             K(I,4)=NSAV+2
65751             K(I,5)=NSAV+1+NBODY
65752           ENDIF
65753         ENDIF
65754         IF(K(I,1).EQ.41) K(I,1)=K(I,1)+10
65755  1130 CONTINUE
65756       IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 710
65757  
65758 C...Check flavours and invariant masses in parton systems.
65759  1140 NP=0
65760       KFN=0
65761       KQS=0
65762       NJU=0
65763       DO 1150 J=1,5
65764         DPS(J)=0D0
65765  1150 CONTINUE
65766       DO 1180 I=MAX(1,IP),N
65767         IF(K(I,1).EQ.41) NJU=NJU+1
65768         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 1180
65769         KC=PYCOMP(K(I,2))
65770         IF(KC.EQ.0) GOTO 1180
65771         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
65772         IF(KQ.EQ.0) GOTO 1180
65773         NP=NP+1
65774         IF(KQ.NE.2) THEN
65775           KFN=KFN+1
65776           KQS=KQS+KQ
65777           MSTJ(93)=1
65778           DPS(5)=DPS(5)+PYMASS(K(I,2))
65779         ENDIF
65780         DO 1160 J=1,4
65781           DPS(J)=DPS(J)+P(I,J)
65782  1160   CONTINUE
65783         IF(K(I,1).EQ.1) THEN
65784           NFERR=0
65785           IF(NJU.EQ.0.AND.NP.NE.1) THEN
65786             IF(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0) NFERR=1
65787           ELSEIF(NJU.EQ.1) THEN
65788             IF(KFN.NE.3.OR.IABS(KQS).NE.3) NFERR=1
65789           ELSEIF(NJU.EQ.2) THEN
65790             IF(KFN.NE.4.OR.KQS.NE.0) NFERR=1
65791           ELSEIF(NJU.GE.3) THEN
65792             NFERR=1
65793           ENDIF
65794           IF(NFERR.EQ.1) THEN
65795             CALL PYERRM(2,'(PYPREP:) unphysical flavour combination')
65796             MINT(51)=1
65797             RETURN
65798           ENDIF
65799           IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT.
65800      &    (0.9D0*PARJ(32)+DPS(5))**2) CALL PYERRM(3,
65801      &    '(PYPREP:) too small mass in jet system')
65802           NP=0
65803           KFN=0
65804           KQS=0
65805           NJU=0
65806           DO 1170 J=1,5
65807             DPS(J)=0D0
65808  1170     CONTINUE
65809         ENDIF
65810  1180 CONTINUE
65811  
65812       RETURN
65813       END
65814  
65815 C*********************************************************************
65816  
65817 C...PYSTRF
65818 C...Handles the fragmentation of an arbitrary colour singlet
65819 C...jet system according to the Lund string fragmentation model.
65820  
65821       SUBROUTINE PYSTRF(IP)
65822  
65823 C...Double precision and integer declarations.
65824       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65825       IMPLICIT INTEGER(I-N)
65826       INTEGER PYK,PYCHGE,PYCOMP
65827 C...Commonblocks.
65828       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
65829       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65830       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65831       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
65832 C...Local arrays. All MOPS variables ends with MO
65833       DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2),
65834      &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(6),PJU(5,5),
65835      &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8),
65836      &INMO(9),PM2QMO(2),XTMO(2),EJSTR(2),IJUORI(2),IBARRK(2),
65837      &PBST(3,5),TJUOLD(5)
65838  
65839 C...Function: four-product of two vectors.
65840       FOUR(I,J)=P(I,4)*P(J,4)-P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
65841       DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)-
65842      &DP(I,3)*DP(J,3)
65843  
65844 C...Reset counters.
65845       MSTJ(91)=0
65846       NSAV=N
65847       MSTU90=MSTU(90)
65848       NP=0
65849       KQSUM=0
65850       DO 100 J=1,5
65851         DPS(J)=0D0
65852   100 CONTINUE
65853       MJU(1)=0
65854       MJU(2)=0
65855       NTRYFN=0
65856       IJUORI(1)=0
65857       IJUORI(2)=0
65858  
65859 C...Identify parton system.
65860       I=IP-1
65861   110 I=I+1
65862       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
65863         CALL PYERRM(12,'(PYSTRF:) failed to reconstruct jet system')
65864         IF(MSTU(21).GE.1) RETURN
65865       ENDIF
65866       IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110
65867       KC=PYCOMP(K(I,2))
65868       IF(KC.EQ.0) GOTO 110
65869       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
65870       IF(KQ.EQ.0.AND.K(I,1).NE.41) GOTO 110
65871       IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN
65872         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
65873         IF(MSTU(21).GE.1) RETURN
65874       ENDIF
65875  
65876 C...Take copy of partons to be considered. Check flavour sum.
65877       NP=NP+1
65878       DO 120 J=1,5
65879         K(N+NP,J)=K(I,J)
65880         P(N+NP,J)=P(I,J)
65881         IF(J.NE.4) DPS(J)=DPS(J)+P(I,J)
65882   120 CONTINUE
65883       DPS(4)=DPS(4)+SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
65884       K(N+NP,3)=I
65885       IF(KQ.NE.2) KQSUM=KQSUM+KQ
65886       IF(K(I,1).EQ.41) THEN
65887         IF(MOD(KQSUM,2).EQ.0.AND.MJU(1).EQ.0) THEN
65888           MJU(1)=N+NP
65889           IJUORI(1)=I
65890         ELSE
65891           MJU(2)=N+NP
65892           IJUORI(2)=I
65893         ENDIF
65894       ENDIF
65895       IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110
65896       IF(MOD(KQSUM,3).NE.0) THEN
65897         CALL PYERRM(12,'(PYSTRF:) unphysical flavour combination')
65898         IF(MSTU(21).GE.1) RETURN
65899       ENDIF
65900       IF(MJU(1).GT.0.OR.MJU(2).GT.0) MSTU(29)=1
65901  
65902 C...Boost copied system to CM frame (for better numerical precision).
65903       IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN
65904         MBST=0
65905         MSTU(33)=1
65906         CALL PYROBO(N+1,N+NP,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
65907      &  -DPS(3)/DPS(4))
65908       ELSE
65909         MBST=1
65910         HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3)))
65911         DO 130 I=N+1,N+NP
65912           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
65913           IF(P(I,3).GT.0D0) THEN
65914             HHPEZ=MAX(1D-10,(P(I,4)+P(I,3))/HHBZ)
65915             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
65916             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
65917           ELSE
65918             HHPEZ=MAX(1D-10,(P(I,4)-P(I,3))*HHBZ)
65919             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
65920             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
65921           ENDIF
65922   130   CONTINUE
65923       ENDIF
65924  
65925 C...Search for very nearby partons that may be recombined.
65926       NTRYR=0
65927       NTRYWR=0
65928       PARU12=PARU(12)
65929       PARU13=PARU(13)
65930       MJU(3)=MJU(1)
65931       MJU(4)=MJU(2)
65932       NR=NP
65933       NRMIN=2
65934       IF(MJU(1).GT.0) NRMIN=NRMIN+2
65935       IF(MJU(2).GT.0) NRMIN=NRMIN+2
65936   140 IF(NR.GT.NRMIN) THEN
65937         PDRMIN=2D0*PARU12
65938         DO 150 I=N+1,N+NR
65939           IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150
65940           I1=I+1
65941           IF(I.EQ.N+NR) I1=N+1
65942           IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150
65943           IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21)
65944      &    GOTO 150
65945           IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21)
65946      &    GOTO 150
65947           PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+
65948      &    P(I1,2)**2+P(I1,3)**2))
65949           PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3)
65950           PDR=4D0*(PAP-PVP)**2/MAX(1D-6,PARU13**2*PAP+2D0*(PAP-PVP))
65951           IF(PDR.LT.PDRMIN) THEN
65952             IR=I
65953             PDRMIN=PDR
65954           ENDIF
65955   150   CONTINUE
65956  
65957 C...Recombine very nearby partons to avoid machine precision problems.
65958         IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN
65959           DO 160 J=1,4
65960             P(N+1,J)=P(N+1,J)+P(N+NR,J)
65961   160     CONTINUE
65962           P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
65963      &    P(N+1,3)**2))
65964           NR=NR-1
65965           GOTO 140
65966         ELSEIF(PDRMIN.LT.PARU12) THEN
65967           DO 170 J=1,4
65968             P(IR,J)=P(IR,J)+P(IR+1,J)
65969   170     CONTINUE
65970           P(IR,5)=SQRT(MAX(0D0,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2-
65971      &    P(IR,3)**2))
65972           IF(MJU(2).NE.0.AND.IR.GT.MJU(2)) K(IR,2)=K(IR+1,2)
65973           DO 190 I=IR+1,N+NR-1
65974             K(I,1)=K(I+1,1)
65975             K(I,2)=K(I+1,2)
65976             DO 180 J=1,5
65977               P(I,J)=P(I+1,J)
65978   180       CONTINUE
65979   190     CONTINUE
65980           IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2)
65981           NR=NR-1
65982           IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1
65983           IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1
65984           GOTO 140
65985         ENDIF
65986       ENDIF
65987       NTRYR=NTRYR+1
65988  
65989 C...Reset particle counter. Skip ahead if no junctions are present;
65990 C...this is usually the case!
65991       NRS=MAX(5*NR+11,NP)
65992       NTRY=0
65993   200 NTRY=NTRY+1
65994       IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
65995         PARU12=4D0*PARU12
65996         PARU13=2D0*PARU13
65997         GOTO 140
65998       ELSEIF(NTRY.GT.100.OR.NTRYR.GT.100) THEN
65999         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
66000         IF(MSTU(21).GE.1) RETURN
66001       ENDIF
66002       I=N+NRS
66003       MSTU(90)=MSTU90
66004       IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 650
66005       IF(MSTJ(12).GE.4) CALL PYERRM(29,'(PYSTRF:) sorry,'//
66006      &     ' junction strings not handled by MSTJ(12)>3 options')
66007       DO 640 JT=1,2
66008         NJS(JT)=0
66009         IF(MJU(JT).EQ.0) GOTO 640
66010         JS=3-2*JT
66011  
66012 C++SKANDS
66013 C...Find and sum up momentum on three sides of junction.
66014 C...Begin with previous boost = zero.
66015         IJRFIT=0
66016         DO 210 IX=1,3
66017           TJUOLD(IX)=0D0
66018   210   CONTINUE
66019 C...Prevent IJU (specifically IJU(5)) from containing junk below
66020         DO 215 IU=1,6
66021           IJU(IU)=0
66022  215    CONTINUE
66023         TJUOLD(4)=1D0
66024   220   IU=0
66025 C...Beginning and end of string system in event record.
66026         I1BEG=N+1+(JT-1)*(NR-1)
66027         I1END=N+NR+(JT-1)*(1-NR)
66028 C...Look for junction string piece end points
66029         DO 230 I1=I1BEG,I1END,JS
66030           IF(K(I1,2).NE.21.AND.IU.LE.5.AND.IJRFIT.EQ.0) THEN
66031 C...Store junction string piece end points.
66032 C                 1-junction systems        2-junction systems
66033 C           IU :  1     2     3   4     1     2   3     4   5     6
66034 C       IJU(IU):  q-g-g-q-g-g-j-g-q     q-g-g-q-g-j-g-g-j-g-q-g-g-q
66035             IU=IU+1
66036             IJU(IU)=I1
66037           ENDIF
66038 C...Sum over momenta, from junction outwards.
66039   230   CONTINUE
66040         DO 280 IU=1,3
66041           PWT=0D0
66042 C...Initialize junction drag and string piece 4-vectors.
66043           DO 240 J=1,5
66044             PBST(IU,J)=0D0
66045             PJU(IU,J)=0D0
66046   240     CONTINUE
66047 C...First two branches. Inwards out means opposite direction to JS.
66048 C...(JS is 1 for JT=1, -1 for JT=2)
66049           IF (IU.LT.3) THEN
66050             I1A=IJU(IU+1)-JS
66051             I1B=IJU(IU)
66052             IDIR=-JS
66053 C...Last branch (gq or gjgqgq). Direction now reversed.
66054           ELSE
66055             I1A=IJU(IU)+JS
66056             I1B=I1END
66057             IDIR=JS
66058           ENDIF
66059           DO 270 I1=I1A,I1B,IDIR
66060 C...Sum up momentum directions with exponential suppression
66061 C...for use in finding junction rest frame below.
66062             IF (K(I1,2).EQ.88) THEN
66063 C...gjgqgq type system encountered. Use current PWT as start
66064 C...for both strings.
66065               PWTOLD=PWT
66066             ELSE
66067               IF (I1.EQ.IJU(5)+IDIR) PWT=PWTOLD
66068 C...Sum up string piece (boosted) 4-momenta.
66069               DO 250 J=1,4
66070                 PJU(IU,J)=PJU(IU,J)+P(I1,J)
66071   250         CONTINUE
66072 C...Compute "junction drag" vectors from (boosted) 4-momenta (initial
66073 C...boost is zero, see above). Skip parton if suppression factor large.
66074               IF (PWT.GT.10D0) GOTO 270
66075 C...Compute momentum in current frame:
66076               TDP=TJUOLD(1)*P(I1,1)+TJUOLD(2)*P(I1,2)+TJUOLD(3)*P(I1,3)
66077               BFC=TDP/(1D0+TJUOLD(4))+P(I1,4)
66078               DO 260 J=1,3
66079                 PTMP=P(I1,J)+TJUOLD(J)*BFC
66080                 PBST(IU,J)=PBST(IU,J)+PTMP*EXP(-PWT)
66081   260         CONTINUE
66082 C...Boosted energy
66083               PTMP=TJUOLD(4)*P(I1,4)+TDP
66084               PBST(IU,4)=PBST(IU,J)+PTMP*EXP(-PWT)
66085               PWT=PWT+PTMP/PARJ(48)
66086             ENDIF
66087   270     CONTINUE
66088 C...Put |p| rather than m in 5th slot.
66089           PBST(IU,5)=SQRT(PBST(IU,1)**2+PBST(IU,2)**2+PBST(IU,3)**2)
66090           PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2)
66091   280   CONTINUE
66092  
66093 C...Calculate boost from present frame to next JRF candidate.
66094         IJRFIT=IJRFIT+1
66095         CALL PYJURF(PBST,TJU)
66096  
66097 C...After some iterations do not take full step in new direction.
66098         IF(IJRFIT.GT.5) THEN
66099           REDUCE=0.8D0**(IJRFIT-5)
66100           TJU(1)=REDUCE*TJU(1)
66101           TJU(2)=REDUCE*TJU(2)
66102           TJU(3)=REDUCE*TJU(3)
66103           TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
66104         ENDIF
66105  
66106 C...Combine new boost (TJU) with old boost (TJUOLD)
66107         TMP=TJU(1)*TJUOLD(1)+TJU(2)*TJUOLD(2)+TJU(3)*TJUOLD(3)
66108         DO 290 IX=1,3
66109           TJUOLD(IX)=TJU(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+TJU(4))
66110   290   CONTINUE
66111         TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)**2)
66112  
66113 C...If last boost small, accept JRF, else iterate.
66114 C...Also prevent possibility of infinite loop.
66115         IF (ABS((TJU(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
66116      &  IJRFIT.LT.MSTJ(18)) THEN
66117           GOTO 220
66118         ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
66119           CALL PYERRM(1,'(PYSTRF:) failed to converge on JRF')
66120         ENDIF
66121  
66122 C...Now store total boost in TJU and change perception.
66123 C...TJUOLD = boost vector from CM of string syst -> JRF. Henceforth,
66124 C...TJU = junction motion vector in string CM, so the sign changes.
66125         DO 300 J=1,3
66126           TJU(J)=-TJUOLD(J)
66127   300   CONTINUE
66128         TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
66129  
66130 C--SKANDS
66131  
66132 C...Calculate string piece energies in junction rest frame.
66133         DO 310 IU=1,3
66134           PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)-
66135      &    TJU(3)*PJU(IU,3)
66136           PBST(IU,5)=TJU(4)*PBST(IU,4)-TJU(1)*PBST(IU,1)-
66137      &    TJU(2)*PBST(IU,2)-TJU(3)*PBST(IU,3)
66138   310   CONTINUE
66139  
66140 C...Start preparing for fragmentation of two strings from junction.
66141         ISTA=I
66142         NTRYER=0
66143   320   NTRYER=NTRYER+1
66144         I=ISTA
66145         DO 620 IU=1,2
66146           NS=IABS(IJU(IU+1)-IJU(IU))
66147  
66148 C...Junction strings: find longitudinal string directions.
66149           DO 350 IS=1,NS
66150             IS1=IJU(IU)+JS*(IS-1)
66151             IS2=IJU(IU)+JS*IS
66152             DO 330 J=1,5
66153               DP(1,J)=0.5D0*P(IS1,J)
66154               IF(IS.EQ.1) DP(1,J)=P(IS1,J)
66155               DP(2,J)=0.5D0*P(IS2,J)
66156               IF(IS.EQ.NS) DP(2,J)=(-PBST(IU,J)+2D0*PBST(IU,5)*TJU(J))*
66157      &        (PJU(IU,5)/PBST(IU,5))
66158   330       CONTINUE
66159             IF(IS.EQ.NS) DP(2,5)=SQRT(MAX(0D0,PJU(IU,4)**2-
66160      &      PJU(IU,1)**2-PJU(IU,2)**2-PJU(IU,3)**2))
66161             DP(3,5)=DFOUR(1,1)
66162             DP(4,5)=DFOUR(2,2)
66163             DHKC=DFOUR(1,2)
66164             IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) THEN
66165               DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
66166               DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
66167               DP(3,5)=0D0
66168               DP(4,5)=0D0
66169               DHKC=DFOUR(1,2)
66170             ENDIF
66171             DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
66172             DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
66173             DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
66174             IN1=N+NR+4*IS-3
66175             P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
66176             DO 340 J=1,4
66177               P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
66178               P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
66179   340       CONTINUE
66180   350     CONTINUE
66181  
66182 C...Junction strings: initialize flavour, momentum and starting pos.
66183           ISAV=I
66184           MSTU91=MSTU(90)
66185   360     NTRY=NTRY+1
66186           IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
66187             PARU12=4D0*PARU12
66188             PARU13=2D0*PARU13
66189             GOTO 140
66190           ELSEIF(NTRY.GT.100) THEN
66191             CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
66192             IF(MSTU(21).GE.1) RETURN
66193           ENDIF
66194           I=ISAV
66195           MSTU(90)=MSTU91
66196           IRANKJ=0
66197           IE(1)=K(N+1+(JT/2)*(NP-1),3)
66198           IF (MOD(JT+IU,2).NE.0) THEN
66199             IE(1)=K(IJU(IU),3)
66200             IF (NP-NR.NE.0) THEN
66201 C...If gluons have disappeared. Original IJU must be used.
66202               IT=IP
66203               NE=1
66204   370         IT=IT+1
66205               IF (K(IT,2).NE.21) THEN
66206                 NE=NE+1
66207               ENDIF
66208               IF (NE.EQ.IU+4*(JT-1)) THEN
66209                 IE(1)=IT
66210               ELSEIF (IT.LE.IP+NP) THEN
66211                 GOTO 370
66212               ELSE
66213                 CALL PYERRM(14,'(PYSTRF:) '//
66214      &               'Original IJU could not be reconstructed!')
66215               ENDIF
66216             ENDIF
66217           ENDIF
66218           IN(4)=N+NR+1
66219           IN(5)=IN(4)+1
66220           IN(6)=N+NR+4*NS+1
66221           DO 390 JQ=1,2
66222             DO 380 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4
66223               P(IN1,1)=2-JQ
66224               P(IN1,2)=JQ-1
66225               P(IN1,3)=1D0
66226   380       CONTINUE
66227   390     CONTINUE
66228           KFL(1)=K(IJU(IU),2)
66229           PX(1)=0D0
66230           PY(1)=0D0
66231           GAM(1)=0D0
66232           DO 400 J=1,5
66233             PJU(IU+3,J)=0D0
66234   400     CONTINUE
66235  
66236 C...Junction strings: find initial transverse directions.
66237           DO 410 J=1,4
66238             DP(1,J)=P(IN(4),J)
66239             DP(2,J)=P(IN(4)+1,J)
66240             DP(3,J)=0D0
66241             DP(4,J)=0D0
66242   410     CONTINUE
66243           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
66244           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
66245           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
66246           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
66247           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
66248           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
66249           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
66250           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
66251           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
66252           DHC12=DFOUR(1,2)
66253           DHCX1=DFOUR(3,1)/DHC12
66254           DHCX2=DFOUR(3,2)/DHC12
66255           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
66256           DHCY1=DFOUR(4,1)/DHC12
66257           DHCY2=DFOUR(4,2)/DHC12
66258           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
66259           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
66260           DO 420 J=1,4
66261             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
66262             P(IN(6),J)=DP(3,J)
66263             P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
66264      &      DHCYX*DP(3,J))
66265   420     CONTINUE
66266  
66267 C...Junction strings: produce new particle, origin.
66268   430     I=I+1
66269           IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
66270             CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
66271             IF(MSTU(21).GE.1) RETURN
66272           ENDIF
66273           IRANKJ=IRANKJ+1
66274           K(I,1)=1
66275           K(I,3)=IE(1)
66276           K(I,4)=0
66277           K(I,5)=0
66278  
66279 C...Junction strings: generate flavour, hadron, pT, z and Gamma.
66280   440     CALL PYKFDI(KFL(1),0,KFL(3),K(I,2))
66281           IF(K(I,2).EQ.0) GOTO 360
66282           IF(IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND.
66283      &    IABS(KFL(3)).GT.10) THEN
66284             IF(PYR(0).GT.PARJ(19)) GOTO 440
66285           ENDIF
66286           P(I,5)=PYMASS(K(I,2))
66287           CALL PYPTDI(KFL(1),PX(3),PY(3))
66288           PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2
66289           CALL PYZDIS(KFL(1),KFL(3),PR(1),Z)
66290           IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND.
66291      &    MSTU(90).LT.8) THEN
66292             MSTU(90)=MSTU(90)+1
66293             MSTU(90+MSTU(90))=I
66294             PARU(90+MSTU(90))=Z
66295           ENDIF
66296           GAM(3)=(1D0-Z)*(GAM(1)+PR(1)/Z)
66297           DO 450 J=1,3
66298             IN(J)=IN(3+J)
66299   450     CONTINUE
66300  
66301 C...Junction strings: stepping within 'low' string region.
66302           IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
66303      &    P(IN(1),5)**2.GE.PR(1)) THEN
66304             P(IN(1)+2,4)=Z*P(IN(1)+2,3)
66305             P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2)
66306             DO 460 J=1,4
66307               P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J)
66308   460       CONTINUE
66309             GOTO 560
66310 C...Has used up energy of junction string, i.e. no more hadrons in it.
66311           ELSEIF(IN(1)+1.EQ.IN(2).AND.IN(1).EQ.N+NR+4*NS-3) THEN
66312             DO 470 J=1,5
66313               P(I,J)=0D0
66314   470       CONTINUE
66315             GOTO 600
66316 C...Stepping from 'low' string region
66317           ELSEIF(IN(1)+1.EQ.IN(2)) THEN
66318             P(IN(2)+2,4)=P(IN(2)+2,3)
66319             P(IN(2)+2,1)=1D0
66320             IN(2)=IN(2)+4
66321             IF(IN(2).GT.N+NR+4*NS) GOTO 360
66322             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
66323               P(IN(1)+2,4)=P(IN(1)+2,3)
66324               P(IN(1)+2,1)=0D0
66325               IN(1)=IN(1)+4
66326             ENDIF
66327           ENDIF
66328  
66329 C...Junction strings: find new transverse directions.
66330   480     IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR.
66331      &    IN(1).GT.IN(2)) GOTO 360
66332           IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN
66333             DO 490 J=1,4
66334               DP(1,J)=P(IN(1),J)
66335               DP(2,J)=P(IN(2),J)
66336               DP(3,J)=0D0
66337               DP(4,J)=0D0
66338   490       CONTINUE
66339             DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
66340             DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
66341             DHC12=DFOUR(1,2)
66342             IF(DHC12.LE.1D-2) THEN
66343               P(IN(1)+2,4)=P(IN(1)+2,3)
66344               P(IN(1)+2,1)=0D0
66345               IN(1)=IN(1)+4
66346               GOTO 480
66347             ENDIF
66348             IN(3)=N+NR+4*NS+5
66349             DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
66350             DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
66351             DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
66352             IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
66353             IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
66354             IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
66355             IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
66356             DHCX1=DFOUR(3,1)/DHC12
66357             DHCX2=DFOUR(3,2)/DHC12
66358             DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
66359             DHCY1=DFOUR(4,1)/DHC12
66360             DHCY2=DFOUR(4,2)/DHC12
66361             DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
66362             DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
66363             DO 500 J=1,4
66364               DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
66365               P(IN(3),J)=DP(3,J)
66366               P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
66367      &        DHCYX*DP(3,J))
66368   500       CONTINUE
66369 C...Express pT with respect to new axes, if sensible.
66370             PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3)))
66371             PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1))
66372             IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
66373               PX(3)=PXP
66374               PY(3)=PYP
66375             ENDIF
66376           ENDIF
66377  
66378 C...Junction strings: sum up known four-momentum, coefficients for m2.
66379           DO 530 J=1,4
66380             DHG(J)=0D0
66381             P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+
66382      &      PY(3)*P(IN(3)+1,J)
66383             DO 510 IN1=IN(4),IN(1)-4,4
66384               P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
66385   510       CONTINUE
66386             DO 520 IN2=IN(5),IN(2)-4,4
66387               P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
66388   520       CONTINUE
66389   530     CONTINUE
66390           DHM(1)=FOUR(I,I)
66391           DHM(2)=2D0*FOUR(I,IN(1))
66392           DHM(3)=2D0*FOUR(I,IN(2))
66393           DHM(4)=2D0*FOUR(IN(1),IN(2))
66394  
66395 C...Junction strings: find coefficients for Gamma expression.
66396           DO 550 IN2=IN(1)+1,IN(2),4
66397             DO 540 IN1=IN(1),IN2-1,4
66398               DHC=2D0*FOUR(IN1,IN2)
66399               DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC
66400               IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC
66401               IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC
66402               IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
66403   540       CONTINUE
66404   550     CONTINUE
66405  
66406 C...Junction strings: solve (m2, Gamma) equation system for energies.
66407           DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3)
66408           IF(ABS(DHS1).LT.1D-4) GOTO 360
66409           DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)*
66410      &    (P(I,5)**2-DHM(1))+DHG(2)*DHM(3)
66411           DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1))
66412           P(IN(2)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
66413      &    ABS(DHS1)-DHS2/DHS1)
66414           IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0D0) GOTO 360
66415           P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/
66416      &    (DHM(2)+DHM(4)*P(IN(2)+2,4))
66417  
66418 C...Junction strings: step to new region if necessary.
66419           IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN
66420             P(IN(2)+2,4)=P(IN(2)+2,3)
66421             P(IN(2)+2,1)=1D0
66422             IN(2)=IN(2)+4
66423             IF(IN(2).GT.N+NR+4*NS) GOTO 360
66424             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
66425               P(IN(1)+2,4)=P(IN(1)+2,3)
66426               P(IN(1)+2,1)=0D0
66427               IN(1)=IN(1)+4
66428             ENDIF
66429             GOTO 480
66430           ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN
66431             P(IN(1)+2,4)=P(IN(1)+2,3)
66432             P(IN(1)+2,1)=0D0
66433             IN(1)=IN(1)+4
66434             GOTO 480
66435           ENDIF
66436  
66437 C...Junction strings: particle four-momentum, remainder, loop back.
66438   560     DO 570 J=1,4
66439             P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+
66440      &      P(IN(2)+2,4)*P(IN(2),J)
66441             PJU(IU+3,J)=PJU(IU+3,J)+P(I,J)
66442   570     CONTINUE
66443           IF(P(I,4).LT.P(I,5)) GOTO 360
66444           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
66445      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
66446           IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN
66447             KFL(1)=-KFL(3)
66448             PX(1)=-PX(3)
66449             PY(1)=-PY(3)
66450             GAM(1)=GAM(3)
66451             IF(IN(3).NE.IN(6)) THEN
66452               DO 580 J=1,4
66453                 P(IN(6),J)=P(IN(3),J)
66454                 P(IN(6)+1,J)=P(IN(3)+1,J)
66455   580         CONTINUE
66456             ENDIF
66457             DO 590 JQ=1,2
66458               IN(3+JQ)=IN(JQ)
66459               P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
66460               P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4)
66461   590       CONTINUE
66462             GOTO 430
66463           ENDIF
66464  
66465 C...Junction strings: save quantities left after each string.
66466           IF(IABS(KFL(1)).GT.10) GOTO 360
66467   600     I=I-1
66468           KFJH(IU)=KFL(1)
66469           DO 610 J=1,4
66470             PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J)
66471   610     CONTINUE
66472  
66473 C...Junction strings: loopback if much unused energy in both strings.
66474           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
66475      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
66476           EJSTR(IU)=PJU(IU,5)-PJU(IU+3,5)
66477   620   CONTINUE
66478         IF((MIN(EJSTR(1),EJSTR(2)).GT.PARJ(49).OR.
66479      &  EJSTR(1).GT.PARJ(49)+PYR(0)*PARJ(50).OR.
66480      &  EJSTR(2).GT.PARJ(49)+PYR(0)*PARJ(50))
66481      &  .AND.NTRYER.LT.10) GOTO 320
66482  
66483 C...Junction strings: put together to new effective string endpoint.
66484         NJS(JT)=I-ISTA
66485         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
66486         IF(KFJH(1).EQ.KFJH(2)) KFLS=3
66487         KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)),IABS(KFJH(2)))+
66488      &  100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+KFLS,KFJH(1))
66489         DO 630 J=1,4
66490           PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J)
66491           PJS(JT+2,J)=PJU(4,J)+PJU(5,J)
66492   630   CONTINUE
66493         PJS(JT,5)=SQRT(MAX(0D0,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2-
66494      &  PJS(JT,3)**2))
66495         PJS(JT+2,5)=0D0
66496   640 CONTINUE
66497  
66498 C...Open versus closed strings. Choose breakup region for latter.
66499   650 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN
66500         NS=MJU(2)-MJU(1)
66501         NB=MJU(1)-N
66502       ELSEIF(MJU(1).NE.0) THEN
66503         NS=N+NR-MJU(1)
66504         NB=MJU(1)-N
66505       ELSEIF(MJU(2).NE.0) THEN
66506         NS=MJU(2)-N
66507         NB=1
66508       ELSEIF(IABS(K(N+1,2)).NE.21) THEN
66509         NS=NR-1
66510         NB=1
66511       ELSE
66512         NS=NR+1
66513         W2SUM=0D0
66514         DO 660 IS=1,NR
66515           P(N+NR+IS,1)=0.5D0*FOUR(N+IS,N+IS+1-NR*(IS/NR))
66516           W2SUM=W2SUM+P(N+NR+IS,1)
66517   660   CONTINUE
66518         W2RAN=PYR(0)*W2SUM
66519         NB=0
66520   670   NB=NB+1
66521         W2SUM=W2SUM-P(N+NR+NB,1)
66522         IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 670
66523       ENDIF
66524  
66525 C...Find longitudinal string directions (i.e. lightlike four-vectors).
66526       DO 700 IS=1,NS
66527         IS1=N+IS+NB-1-NR*((IS+NB-2)/NR)
66528         IS2=N+IS+NB-NR*((IS+NB-1)/NR)
66529         DO 680 J=1,5
66530           DP(1,J)=P(IS1,J)
66531           IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5D0*DP(1,J)
66532           IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J)
66533           DP(2,J)=P(IS2,J)
66534           IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5D0*DP(2,J)
66535           IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J)
66536   680   CONTINUE
66537         IF(IS1.EQ.MJU(1)) DP(1,5)=SQRT(MAX(0D0,DP(1,4)**2-DP(1,1)**2-
66538      &  DP(1,2)**2-DP(1,3)**2))
66539         IF(IS2.EQ.MJU(2)) DP(2,5)=SQRT(MAX(0D0,DP(2,4)**2-DP(2,1)**2-
66540      &  DP(2,2)**2-DP(2,3)**2))
66541         DP(3,5)=DFOUR(1,1)
66542         DP(4,5)=DFOUR(2,2)
66543         DHKC=DFOUR(1,2)
66544         IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) GOTO 200
66545         DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
66546         DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
66547         DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
66548         IN1=N+NR+4*IS-3
66549         P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
66550         DO 690 J=1,4
66551           P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
66552           P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
66553   690   CONTINUE
66554   700 CONTINUE
66555  
66556 C...Begin initialization: sum up energy, set starting position.
66557       ISAV=I
66558       MSTU91=MSTU(90)
66559   710 NTRY=NTRY+1
66560       IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
66561         PARU12=4D0*PARU12
66562         PARU13=2D0*PARU13
66563         GOTO 140
66564       ELSEIF(NTRY.GT.100) THEN
66565         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
66566         IF(MSTU(21).GE.1) RETURN
66567       ENDIF
66568       I=ISAV
66569       MSTU(90)=MSTU91
66570       DO 730 J=1,4
66571         P(N+NRS,J)=0D0
66572         DO 720 IS=1,NR
66573           P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J)
66574   720   CONTINUE
66575   730 CONTINUE
66576       DO 750 JT=1,2
66577         IRANK(JT)=0
66578         IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT)
66579         IF(NS.GT.NR) IRANK(JT)=1
66580         IBARRK(JT)=0
66581         IE(JT)=K(N+1+(JT/2)*(NP-1),3)
66582         IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1)
66583         IN(3*JT+2)=IN(3*JT+1)+1
66584         IN(3*JT+3)=N+NR+4*NS+2*JT-1
66585         DO 740 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4
66586           P(IN1,1)=2-JT
66587           P(IN1,2)=JT-1
66588           P(IN1,3)=1D0
66589   740   CONTINUE
66590   750 CONTINUE
66591  
66592 C.. MOPS variables and switches
66593       NRVMO=0
66594       XBMO=1D0
66595       MSTU(121)=0
66596       MSTU(122)=0
66597  
66598 C...Initialize flavour and pT variables for open string.
66599       IF(NS.LT.NR) THEN
66600         PX(1)=0D0
66601         PY(1)=0D0
66602         IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL PYPTDI(0,PX(1),PY(1))
66603         PX(2)=-PX(1)
66604         PY(2)=-PY(1)
66605         DO 760 JT=1,2
66606           KFL(JT)=K(IE(JT),2)
66607           IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT)
66608           IF(MJU(JT).NE.0.AND.IABS(KFL(JT)).GT.1000) IBARRK(JT)=1
66609           MSTJ(93)=1
66610           PMQ(JT)=PYMASS(KFL(JT))
66611           GAM(JT)=0D0
66612   760   CONTINUE
66613  
66614 C...Closed string: random initial breakup flavour, pT and vertex.
66615       ELSE
66616         KFL(3)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
66617         IBMO=0
66618   770   CALL PYKFDI(KFL(3),0,KFL(1),KDUMP)
66619 C.. Closed string: first vertex diq attempt => enforced second
66620 C.. vertex diq
66621         IF(IABS(KFL(1)).GT.10)THEN
66622            IBMO=1
66623            MSTU(121)=0
66624            GOTO 770
66625         ENDIF
66626         IF(IBMO.EQ.1) MSTU(121)=-1
66627         KFL(2)=-KFL(1)
66628         CALL PYPTDI(KFL(1),PX(1),PY(1))
66629         PX(2)=-PX(1)
66630         PY(2)=-PY(1)
66631         PR3=MIN(25D0,0.1D0*P(N+NR+1,5)**2)
66632   780   CALL PYZDIS(KFL(1),KFL(2),PR3,Z)
66633         ZR=PR3/(Z*P(N+NR+1,5)**2)
66634         IF(ZR.GE.1D0) GOTO 780
66635         DO 790 JT=1,2
66636           MSTJ(93)=1
66637           PMQ(JT)=PYMASS(KFL(JT))
66638           GAM(JT)=PR3*(1D0-Z)/Z
66639           IN1=N+NR+3+4*(JT/2)*(NS-1)
66640           P(IN1,JT)=1D0-Z
66641           P(IN1,3-JT)=JT-1
66642           P(IN1,3)=(2-JT)*(1D0-Z)+(JT-1)*Z
66643           P(IN1+1,JT)=ZR
66644           P(IN1+1,3-JT)=2-JT
66645           P(IN1+1,3)=(2-JT)*(1D0-ZR)+(JT-1)*ZR
66646   790   CONTINUE
66647       ENDIF
66648 C.. MOPS variables
66649       DO 800 JT=1,2
66650          XTMO(JT)=1D0
66651          PM2QMO(JT)=PMQ(JT)**2
66652          IF(IABS(KFL(JT)).GT.10) PM2QMO(JT)=0D0
66653   800 CONTINUE
66654  
66655 C...Find initial transverse directions (i.e. spacelike four-vectors).
66656       DO 840 JT=1,2
66657         IF(JT.EQ.1.OR.NS.EQ.NR-1.OR.MJU(1)+MJU(2).NE.0) THEN
66658           IN1=IN(3*JT+1)
66659           IN3=IN(3*JT+3)
66660           DO 810 J=1,4
66661             DP(1,J)=P(IN1,J)
66662             DP(2,J)=P(IN1+1,J)
66663             DP(3,J)=0D0
66664             DP(4,J)=0D0
66665   810     CONTINUE
66666           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
66667           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
66668           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
66669           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
66670           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
66671           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
66672           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
66673           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
66674           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
66675           DHC12=DFOUR(1,2)
66676           DHCX1=DFOUR(3,1)/DHC12
66677           DHCX2=DFOUR(3,2)/DHC12
66678           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
66679           DHCY1=DFOUR(4,1)/DHC12
66680           DHCY2=DFOUR(4,2)/DHC12
66681           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
66682           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
66683           DO 820 J=1,4
66684             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
66685             P(IN3,J)=DP(3,J)
66686             P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
66687      &      DHCYX*DP(3,J))
66688   820     CONTINUE
66689         ELSE
66690           DO 830 J=1,4
66691             P(IN3+2,J)=P(IN3,J)
66692             P(IN3+3,J)=P(IN3+1,J)
66693   830     CONTINUE
66694         ENDIF
66695   840 CONTINUE
66696  
66697 C...Remove energy used up in junction string fragmentation.
66698       IF(MJU(1)+MJU(2).GT.0) THEN
66699         DO 860 JT=1,2
66700           IF(NJS(JT).EQ.0) GOTO 860
66701           DO 850 J=1,4
66702             P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J)
66703   850     CONTINUE
66704   860   CONTINUE
66705         PARJST=PARJ(33)
66706         IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
66707         WMIN=PARJST+PMQ(1)+PMQ(2)
66708         WREM2=FOUR(N+NRS,N+NRS)
66709         IF(P(N+NRS,4).LT.0D0.OR.WREM2.LT.WMIN**2) THEN
66710           NTRYWR=NTRYWR+1
66711           IF(MOD(NTRYWR,20).NE.0) NTRYR=NTRYR-1
66712           GOTO 140
66713         ENDIF
66714       ENDIF
66715  
66716 C...Produce new particle: side, origin.
66717   870 I=I+1
66718       IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
66719         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
66720         IF(MSTU(21).GE.1) RETURN
66721       ENDIF
66722 C.. New side priority for popcorn systems
66723       IF(MSTU(121).LE.0)THEN
66724          JT=1.5D0+PYR(0)
66725          IF(IABS(KFL(3-JT)).GT.10) JT=3-JT
66726          IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT
66727       ENDIF
66728       JR=3-JT
66729       JS=3-2*JT
66730       IRANK(JT)=IRANK(JT)+1
66731       K(I,1)=1
66732       K(I,4)=0
66733       K(I,5)=0
66734  
66735 C...Generate flavour, hadron and pT.
66736   880 K(I,3)=IE(JT)
66737       CALL PYKFDI(KFL(JT),0,KFL(3),K(I,2))
66738       IF(K(I,2).EQ.0) GOTO 710
66739       MU90MO=MSTU(90)
66740       IF(MSTU(121).EQ.-1) GOTO 910
66741       IF(IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND.
66742      &IABS(KFL(3)).GT.10) THEN
66743         IF(PYR(0).GT.PARJ(19)) GOTO 880
66744       ENDIF
66745       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
66746      &K(I,3)=IJUORI(JT)
66747       P(I,5)=PYMASS(K(I,2))
66748       CALL PYPTDI(KFL(JT),PX(3),PY(3))
66749       PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2
66750  
66751 C...Final hadrons for small invariant mass.
66752       MSTJ(93)=1
66753       PMQ(3)=PYMASS(KFL(3))
66754       PARJST=PARJ(33)
66755       IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
66756       WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3)
66757       IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN=
66758      &WMIN-0.5D0*PARJ(36)*PMQ(3)
66759       WREM2=FOUR(N+NRS,N+NRS)
66760       IF(WREM2.LT.0.10D0) GOTO 710
66761       IF(WREM2.LT.MAX(WMIN*(1D0+(2D0*PYR(0)-1D0)*PARJ(37)),
66762      &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 1080
66763  
66764 C...Choose z, which gives Gamma. Shift z for heavy flavours.
66765       CALL PYZDIS(KFL(JT),KFL(3),PR(JT),Z)
66766       IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND.
66767      &MSTU(90).LT.8) THEN
66768         MSTU(90)=MSTU(90)+1
66769         MSTU(90+MSTU(90))=I
66770         PARU(90+MSTU(90))=Z
66771       ENDIF
66772       KFL1A=IABS(KFL(1))
66773       KFL2A=IABS(KFL(2))
66774       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
66775      &MOD(KFL2A/1000,10)).GE.4) THEN
66776         PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
66777         PW12=SQRT(MAX(0D0,(WREM2-PR(1)-PR(2))**2-4D0*PR(1)*PR(2)))
66778         Z=(WREM2+PR(JT)-PR(JR)+PW12*(2D0*Z-1D0))/(2D0*WREM2)
66779         PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
66780         IF((1D0-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 1080
66781       ENDIF
66782       GAM(3)=(1D0-Z)*(GAM(JT)+PR(JT)/Z)
66783  
66784 C.. MOPS baryon model modification
66785       XTMO3=(1D0-Z)*XTMO(JT)
66786       IF(IABS(KFL(3)).LE.10) NRVMO=0
66787       IF(IABS(KFL(3)).GT.10.AND.MSTJ(12).GE.4) THEN
66788          GTSTMO=1D0
66789          PTSTMO=1D0
66790          RTSTMO=PYR(0)
66791          IF(IABS(KFL(JT)).LE.10)THEN
66792             XBMO=MIN(XTMO3,1D0-(2D-10))
66793             GBMO=GAM(3)
66794             PMMO=0D0
66795             PGMO=GBMO+LOG(1D0-XBMO)*PM2QMO(JT)
66796             GTSTMO=1D0-PARF(192)**PGMO
66797          ELSE
66798             IF(IRANK(JT).EQ.1) THEN
66799                GBMO=GAM(JT)
66800                PMMO=0D0
66801                XBMO=1D0
66802             ENDIF
66803             IF(XBMO.LT.1D0-(1D-10))THEN
66804                PGNMO=GBMO*XTMO3/XBMO+PM2QMO(JT)*LOG(1D0-XTMO3)
66805                GTSTMO=(1D0-PARF(192)**PGNMO)/(1D0-PARF(192)**PGMO)
66806                PGMO=PGNMO
66807             ENDIF
66808             IF(MSTJ(12).GE.5)THEN
66809                PMNMO=SQRT((XBMO-XTMO3)*(GAM(3)/XTMO3-GBMO/XBMO))
66810                PMMO=PMMO+PMAS(PYCOMP(K(I,2)),1)-PMAS(PYCOMP(K(I,2)),3)
66811                PTSTMO=EXP((PMMO-PMNMO)*PARF(193))
66812                PMMO=PMNMO
66813             ENDIF
66814          ENDIF
66815  
66816 C.. MOPS Accepting popcorn system hadron.
66817          IF(PTSTMO*GTSTMO.GT.RTSTMO) THEN
66818             IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) THEN
66819                NRVMO=I-N-NR
66820                IF(I+NRVMO.GT.MSTU(4)-MSTU(32)-5) THEN
66821                   CALL PYERRM(11,
66822      &                 '(PYSTRF:) no more memory left in PYJETS')
66823                   IF(MSTU(21).GE.1) RETURN
66824                ENDIF
66825                IMO=I
66826                KFLMO=KFL(JT)
66827                PMQMO=PMQ(JT)
66828                PXMO=PX(JT)
66829                PYMO=PY(JT)
66830                GAMMO=GAM(JT)
66831                IRMO=IRANK(JT)
66832                XMO=XTMO(JT)
66833                DO 900 J=1,9
66834                   IF(J.LE.5) THEN
66835                      DO 890 LINE=1,I-N-NR
66836                         P(MSTU(4)-MSTU(32)-LINE,J)=P(N+NR+LINE,J)
66837                         K(MSTU(4)-MSTU(32)-LINE,J)=K(N+NR+LINE,J)
66838   890                CONTINUE
66839                   ENDIF
66840                   INMO(J)=IN(J)
66841   900          CONTINUE
66842             ENDIF
66843          ELSE
66844 C..Reject popcorn system, flag=-1 if enforcing new one
66845             MSTU(121)=-1
66846             IF(PTSTMO.GT.RTSTMO) MSTU(121)=-2
66847          ENDIF
66848       ENDIF
66849  
66850  
66851 C..Lift restoring string outside MOPS block
66852   910 IF(MSTU(121).LT.0) THEN
66853          IF(MSTU(121).EQ.-2) MSTU(121)=0
66854          MSTU(90)=MU90MO
66855          NRVMO=0
66856          IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) GOTO 880
66857          I=IMO
66858          KFL(JT)=KFLMO
66859          PMQ(JT)=PMQMO
66860          PX(JT)=PXMO
66861          PY(JT)=PYMO
66862          GAM(JT)=GAMMO
66863          IRANK(JT)=IRMO
66864          XTMO(JT)=XMO
66865          DO 930 J=1,9
66866             IF(J.LE.5) THEN
66867                DO 920 LINE=1,I-N-NR
66868                   P(N+NR+LINE,J)=P(MSTU(4)-MSTU(32)-LINE,J)
66869                   K(N+NR+LINE,J)=K(MSTU(4)-MSTU(32)-LINE,J)
66870   920          CONTINUE
66871             ENDIF
66872             IN(J)=INMO(J)
66873   930    CONTINUE
66874          GOTO 880
66875       ENDIF
66876       XTMO(JT)=XTMO3
66877 C.. MOPS end of modification
66878  
66879       DO 940 J=1,3
66880         IN(J)=IN(3*JT+J)
66881   940 CONTINUE
66882  
66883 C...Stepping within or from 'low' string region easy.
66884       IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
66885      &P(IN(1),5)**2.GE.PR(JT)) THEN
66886         P(IN(JT)+2,4)=Z*P(IN(JT)+2,3)
66887         P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2)
66888         DO 950 J=1,4
66889           P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J)
66890   950   CONTINUE
66891         GOTO 1040
66892       ELSEIF(IN(1)+1.EQ.IN(2)) THEN
66893         P(IN(JR)+2,4)=P(IN(JR)+2,3)
66894         P(IN(JR)+2,JT)=1D0
66895         IN(JR)=IN(JR)+4*JS
66896         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 710
66897         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
66898           P(IN(JT)+2,4)=P(IN(JT)+2,3)
66899           P(IN(JT)+2,JT)=0D0
66900           IN(JT)=IN(JT)+4*JS
66901         ENDIF
66902       ENDIF
66903  
66904 C...Find new transverse directions (i.e. spacelike string vectors).
66905   960 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR.
66906      &IN(1).GT.IN(2)) GOTO 710
66907       IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN
66908         DO 970 J=1,4
66909           DP(1,J)=P(IN(1),J)
66910           DP(2,J)=P(IN(2),J)
66911           DP(3,J)=0D0
66912           DP(4,J)=0D0
66913   970   CONTINUE
66914         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
66915         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
66916         DHC12=DFOUR(1,2)
66917         IF(DHC12.LE.1D-2) THEN
66918           P(IN(JT)+2,4)=P(IN(JT)+2,3)
66919           P(IN(JT)+2,JT)=0D0
66920           IN(JT)=IN(JT)+4*JS
66921           GOTO 960
66922         ENDIF
66923         IN(3)=N+NR+4*NS+5
66924         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
66925         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
66926         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
66927         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
66928         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
66929         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
66930         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
66931         DHCX1=DFOUR(3,1)/DHC12
66932         DHCX2=DFOUR(3,2)/DHC12
66933         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
66934         DHCY1=DFOUR(4,1)/DHC12
66935         DHCY2=DFOUR(4,2)/DHC12
66936         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
66937         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
66938         DO 980 J=1,4
66939           DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
66940           P(IN(3),J)=DP(3,J)
66941           P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
66942      &    DHCYX*DP(3,J))
66943   980   CONTINUE
66944 C...Express pT with respect to new axes, if sensible.
66945         PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)*
66946      &  FOUR(IN(3*JT+3)+1,IN(3)))
66947         PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)*
66948      &  FOUR(IN(3*JT+3)+1,IN(3)+1))
66949         IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
66950           PX(3)=PXP
66951           PY(3)=PYP
66952         ENDIF
66953       ENDIF
66954  
66955 C...Sum up known four-momentum. Gives coefficients for m2 expression.
66956       DO 1010 J=1,4
66957         DHG(J)=0D0
66958         P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+
66959      &  PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J)
66960         DO 990 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS
66961           P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
66962   990   CONTINUE
66963         DO 1000 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS
66964           P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
66965  1000   CONTINUE
66966  1010 CONTINUE
66967       DHM(1)=FOUR(I,I)
66968       DHM(2)=2D0*FOUR(I,IN(1))
66969       DHM(3)=2D0*FOUR(I,IN(2))
66970       DHM(4)=2D0*FOUR(IN(1),IN(2))
66971  
66972 C...Find coefficients for Gamma expression.
66973       DO 1030 IN2=IN(1)+1,IN(2),4
66974         DO 1020 IN1=IN(1),IN2-1,4
66975           DHC=2D0*FOUR(IN1,IN2)
66976           DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC
66977           IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC
66978           IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC
66979           IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
66980  1020   CONTINUE
66981  1030 CONTINUE
66982  
66983 C...Solve (m2, Gamma) equation system for energies taken.
66984       DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1)
66985       IF(ABS(DHS1).LT.1D-4) GOTO 710
66986       DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)*
66987      &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1)
66988       DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1))
66989       P(IN(JR)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
66990      &ABS(DHS1)-DHS2/DHS1)
66991       IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0D0) GOTO 710
66992       P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/
66993      &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4))
66994  
66995 C...Step to new region if necessary.
66996       IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN
66997         P(IN(JR)+2,4)=P(IN(JR)+2,3)
66998         P(IN(JR)+2,JT)=1D0
66999         IN(JR)=IN(JR)+4*JS
67000         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 710
67001         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
67002           P(IN(JT)+2,4)=P(IN(JT)+2,3)
67003           P(IN(JT)+2,JT)=0D0
67004           IN(JT)=IN(JT)+4*JS
67005         ENDIF
67006         GOTO 960
67007       ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN
67008         P(IN(JT)+2,4)=P(IN(JT)+2,3)
67009         P(IN(JT)+2,JT)=0D0
67010         IN(JT)=IN(JT)+4*JS
67011         GOTO 960
67012       ENDIF
67013  
67014 C...Four-momentum of particle. Remaining quantities. Loop back.
67015  1040 DO 1050 J=1,4
67016         P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J)
67017         P(N+NRS,J)=P(N+NRS,J)-P(I,J)
67018  1050 CONTINUE
67019       IF(P(IN(1)+2,4).GT.1D0+PARU(14).OR.P(IN(1)+2,4).LT.-PARU(14).OR.
67020      &P(IN(2)+2,4).GT.1D0+PARU(14).OR.P(IN(2)+2,4).LT.-PARU(14))
67021      &GOTO 200
67022       IF(P(I,4).LT.P(I,5)) GOTO 710
67023       KFL(JT)=-KFL(3)
67024       PMQ(JT)=PMQ(3)
67025       PX(JT)=-PX(3)
67026       PY(JT)=-PY(3)
67027       GAM(JT)=GAM(3)
67028       IF(IN(3).NE.IN(3*JT+3)) THEN
67029         DO 1060 J=1,4
67030           P(IN(3*JT+3),J)=P(IN(3),J)
67031           P(IN(3*JT+3)+1,J)=P(IN(3)+1,J)
67032  1060   CONTINUE
67033       ENDIF
67034       DO 1070 JQ=1,2
67035         IN(3*JT+JQ)=IN(JQ)
67036         P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
67037         P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4)
67038  1070 CONTINUE
67039       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
67040      &IBARRK(JT)=0
67041       GOTO 870
67042  
67043 C...Final hadron: side, flavour, hadron, mass.
67044  1080 I=I+1
67045       K(I,1)=1
67046       K(I,3)=IE(JR)
67047       K(I,4)=0
67048       K(I,5)=0
67049       CALL PYKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2))
67050       IF(K(I,2).EQ.0) GOTO 710
67051       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I-1,2)),10000).GT.1000)
67052      &IBARRK(JT)=0
67053       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
67054      &K(I,3)=IJUORI(JT)
67055       IF(IBARRK(JR).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
67056      &K(I,3)=IJUORI(JR)
67057       P(I,5)=PYMASS(K(I,2))
67058       PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
67059  
67060 C...Final two hadrons: find common setup of four-vectors.
67061       JQ=1
67062       IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.
67063      &P(IN(7)+2,3)*P(IN(8)+2,3)*FOUR(IN(7),IN(8))) JQ=2
67064       DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2))
67065       DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12
67066       DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12
67067       IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN
67068         PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ)
67069         PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ)
67070         PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS*
67071      &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2
67072       ENDIF
67073  
67074 C...Solve kinematics for final two hadrons, if possible.
67075       WREM2=2D0*DHR1*DHR2*DHC12
67076       FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2)
67077       IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1D0) GOTO 200
67078       IF(FD.GE.1D0) GOTO 710
67079       FA=WREM2+PR(JT)-PR(JR)
67080       FB=SQRT(MAX(0D0,FA**2-4D0*WREM2*PR(JT)))
67081       PREVCF=PARJ(42)
67082       IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
67083       PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*FB*PARJ(40))))
67084       FB=SIGN(FB,JS*(PYR(0)-PREV))
67085       KFL1A=IABS(KFL(1))
67086       KFL2A=IABS(KFL(2))
67087       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
67088      &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0D0,FA**2-
67089      &4D0*WREM2*PR(JT))),DBLE(JS))
67090       DO 1090 J=1,4
67091         P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))*
67092      &  P(IN(3*JQ+3)+1,J)+0.5D0*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+
67093      &  DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2
67094         P(I,J)=P(N+NRS,J)-P(I-1,J)
67095  1090 CONTINUE
67096       IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 710
67097       DM2F1=P(I-1,4)**2-P(I-1,1)**2-P(I-1,2)**2-P(I-1,3)**2-P(I-1,5)**2
67098       DM2F2=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
67099       IF(DM2F1.GT.1D-10*P(I-1,4)**2.OR.DM2F2.GT.1D-10*P(I,4)**2) THEN
67100         NTRYFN=NTRYFN+1
67101         IF(NTRYFN.LT.100) GOTO 140
67102         CALL PYERRM(13,'(PYSTRF:) bad energies for final two hadrons')
67103       ENDIF
67104  
67105 C...Mark jets as fragmented and give daughter pointers.
67106       N=I-NRS+1
67107       DO 1100 I=NSAV+1,NSAV+NP
67108         IM=K(I,3)
67109         K(IM,1)=K(IM,1)+10
67110         IF(MSTU(16).NE.2) THEN
67111           K(IM,4)=NSAV+1
67112           K(IM,5)=NSAV+1
67113         ELSE
67114           K(IM,4)=NSAV+2
67115           K(IM,5)=N
67116         ENDIF
67117  1100 CONTINUE
67118  
67119 C...Document string system. Move up particles.
67120       NSAV=NSAV+1
67121       K(NSAV,1)=11
67122       K(NSAV,2)=92
67123       K(NSAV,3)=IP
67124       K(NSAV,4)=NSAV+1
67125       K(NSAV,5)=N
67126       DO 1110 J=1,4
67127         P(NSAV,J)=DPS(J)
67128         V(NSAV,J)=V(IP,J)
67129  1110 CONTINUE
67130       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
67131       V(NSAV,5)=0D0
67132       DO 1130 I=NSAV+1,N
67133         DO 1120 J=1,5
67134           K(I,J)=K(I+NRS-1,J)
67135           P(I,J)=P(I+NRS-1,J)
67136           V(I,J)=0D0
67137  1120   CONTINUE
67138  1130 CONTINUE
67139       MSTU91=MSTU(90)
67140       DO 1140 IZ=MSTU90+1,MSTU91
67141         MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N
67142         PARU9T(IZ)=PARU(90+IZ)
67143  1140 CONTINUE
67144       MSTU(90)=MSTU90
67145  
67146 C...Order particles in rank along the chain. Update mother pointer.
67147       DO 1160 I=NSAV+1,N
67148         DO 1150 J=1,5
67149           K(I-NSAV+N,J)=K(I,J)
67150           P(I-NSAV+N,J)=P(I,J)
67151  1150   CONTINUE
67152  1160 CONTINUE
67153       I1=NSAV
67154       DO 1190 I=N+1,2*N-NSAV
67155         IF(K(I,3).NE.IE(1).AND.K(I,3).NE.IJUORI(1)) GOTO 1190
67156         I1=I1+1
67157         DO 1170 J=1,5
67158           K(I1,J)=K(I,J)
67159           P(I1,J)=P(I,J)
67160  1170   CONTINUE
67161         IF(MSTU(16).NE.2) K(I1,3)=NSAV
67162         DO 1180 IZ=MSTU90+1,MSTU91
67163           IF(MSTU9T(IZ).EQ.I) THEN
67164             MSTU(90)=MSTU(90)+1
67165             MSTU(90+MSTU(90))=I1
67166             PARU(90+MSTU(90))=PARU9T(IZ)
67167           ENDIF
67168  1180   CONTINUE
67169  1190 CONTINUE
67170       DO 1220 I=2*N-NSAV,N+1,-1
67171         IF(K(I,3).EQ.IE(1).OR.K(I,3).EQ.IJUORI(1)) GOTO 1220
67172         I1=I1+1
67173         DO 1200 J=1,5
67174           K(I1,J)=K(I,J)
67175           P(I1,J)=P(I,J)
67176  1200   CONTINUE
67177         IF(MSTU(16).NE.2) K(I1,3)=NSAV
67178         DO 1210 IZ=MSTU90+1,MSTU91
67179           IF(MSTU9T(IZ).EQ.I) THEN
67180             MSTU(90)=MSTU(90)+1
67181             MSTU(90+MSTU(90))=I1
67182             PARU(90+MSTU(90))=PARU9T(IZ)
67183           ENDIF
67184  1210   CONTINUE
67185  1220 CONTINUE
67186  
67187 C...Boost back particle system. Set production vertices.
67188       IF(MBST.EQ.0) THEN
67189         MSTU(33)=1
67190         CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),
67191      &  DPS(3)/DPS(4))
67192       ELSE
67193         DO 1230 I=NSAV+1,N
67194           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
67195           IF(P(I,3).GT.0D0) THEN
67196             HHPEZ=(P(I,4)+P(I,3))*HHBZ
67197             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
67198             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
67199           ELSE
67200             HHPEZ=(P(I,4)-P(I,3))/HHBZ
67201             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
67202             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
67203           ENDIF
67204  1230   CONTINUE
67205       ENDIF
67206       DO 1250 I=NSAV+1,N
67207         DO 1240 J=1,4
67208           V(I,J)=V(IP,J)
67209  1240   CONTINUE
67210  1250 CONTINUE
67211  
67212       RETURN
67213       END
67214  
67215 C*********************************************************************
67216  
67217 C...PYJURF
67218 C...From three given input vectors in PJU the boost VJU from
67219 C...the "lab frame" to the junction rest frame is constructed.
67220  
67221       SUBROUTINE PYJURF(PJU,VJU)
67222  
67223 C...Double precision and integer declarations.
67224       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67225       IMPLICIT INTEGER(I-N)
67226  
67227 C...Input, output and local arrays.
67228       DIMENSION PJU(3,5),VJU(5),PSUM(5),A(3,3),PENEW(3),PCM(5,5)
67229       DATA TWOPI/6.283186D0/
67230  
67231 C...Calculate masses and other invariants.
67232       DO 100 J=1,4
67233         PSUM(J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
67234   100 CONTINUE
67235       PSUM2=PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2
67236       PSUM(5)=SQRT(PSUM2)
67237       DO 120 I=1,3
67238         DO 110 J=1,3
67239           A(I,J)=PJU(I,4)*PJU(J,4)-PJU(I,1)*PJU(J,1)-
67240      &    PJU(I,2)*PJU(J,2)-PJU(I,3)*PJU(J,3)
67241   110   CONTINUE
67242   120 CONTINUE
67243  
67244 C...Pick I to be most massive parton and J to be the one closest to I.
67245       ITRY=0
67246       I=1
67247       IF(A(2,2).GT.A(1,1)) I=2
67248       IF(A(3,3).GT.MAX(A(1,1),A(2,2))) I=3
67249   130 ITRY=ITRY+1
67250       J=1+MOD(I,3)
67251       K=1+MOD(J,3)
67252       IF(A(I,K)**2*A(J,J).LT.A(I,J)**2*A(K,K)) THEN
67253         K=1+MOD(I,3)
67254         J=1+MOD(K,3)
67255       ENDIF
67256       PMI2=A(I,I)
67257       PMJ2=A(J,J)
67258       PMK2=A(K,K)
67259       AIJ=A(I,J)
67260       AIK=A(I,K)
67261       AJK=A(J,K)
67262  
67263 C...Trivial find new parton energies if all three partons are massless.
67264       IF(PMI2.LT.1D-4) THEN
67265         PEI=SQRT(2D0*AIK*AIJ/(3D0*AJK))
67266         PEJ=SQRT(2D0*AJK*AIJ/(3D0*AIK))
67267         PEK=SQRT(2D0*AIK*AJK/(3D0*AIJ))
67268  
67269 C...Else find momentum range for parton I and values at extremes.
67270       ELSE
67271         PAIMIN=0D0
67272         PEIMIN=SQRT(PMI2)
67273         PEJMIN=AIJ/PEIMIN
67274         PEKMIN=AIK/PEIMIN
67275         PAJMIN=SQRT(MAX(0D0,PEJMIN**2-PMJ2))
67276         PAKMIN=SQRT(MAX(0D0,PEKMIN**2-PMK2))
67277         FMIN=PEJMIN*PEKMIN+0.5D0*PAJMIN*PAKMIN-AJK
67278         PEIMAX=(AIJ+AIK)/SQRT(PMJ2+PMK2+2D0*AJK)
67279         IF(PMJ2.GT.1D-4) PEIMAX=AIJ/SQRT(PMJ2)
67280         PAIMAX=SQRT(MAX(0D0,PEIMAX**2-PMI2))
67281         HI=PEIMAX**2-0.25D0*PAIMAX**2
67282         PAJMAX=(PEIMAX*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-
67283      &  0.5D0*PAIMAX*AIJ)/HI
67284         PAKMAX=(PEIMAX*SQRT(MAX(0D0,AIK**2-PMK2*HI))-
67285      &  0.5D0*PAIMAX*AIK)/HI
67286         PEJMAX=SQRT(PAJMAX**2+PMJ2)
67287         PEKMAX=SQRT(PAKMAX**2+PMK2)
67288         FMAX=PEJMAX*PEKMAX+0.5D0*PAJMAX*PAKMAX-AJK
67289  
67290 C...If unexpected values at upper endpoint then pick another parton.
67291         IF(FMAX.GT.0D0.AND.ITRY.LE.2) THEN
67292           I1=1+MOD(I,3)
67293           IF(A(I1,I1).GE.1D-4) THEN
67294             I=I1
67295             GOTO 130
67296           ENDIF
67297           ITRY=ITRY+1
67298           I1=1+MOD(I,3)
67299           IF(ITRY.LE.2.AND.A(I1,I1).GE.1D-4) THEN
67300             I=I1
67301             GOTO 130
67302           ENDIF
67303         ENDIF
67304  
67305 C..Start binary + linear search to find solution inside range.
67306         ITER=0
67307         ITMIN=0
67308         ITMAX=0
67309         PAI=0.5D0*(PAIMIN+PAIMAX)
67310   140   ITER=ITER+1
67311  
67312 C...Derive momentum of other two partons and distance to root.
67313         PEI=SQRT(PAI**2+PMI2)
67314         HI=PEI**2-0.25D0*PAI**2
67315         PAJ=(PEI*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-0.5D0*PAI*AIJ)/HI
67316         PEJ=SQRT(PAJ**2+PMJ2)
67317         PAK=(PEI*SQRT(MAX(0D0,AIK**2-PMK2*HI))-0.5D0*PAI*AIK)/HI
67318         PEK=SQRT(PAK**2+PMK2)
67319         FNOW=PEJ*PEK+0.5D0*PAJ*PAK-AJK
67320  
67321 C...Pick next I momentum to explore, hopefully closer to root.
67322         IF(FNOW.GT.0D0) THEN
67323           PAIMIN=PAI
67324           FMIN=FNOW
67325           ITMIN=ITMIN+1
67326         ELSE
67327           PAIMAX=PAI
67328           FMAX=FNOW
67329           ITMAX=ITMAX+1
67330         ENDIF
67331         IF((ITER.LT.10.OR.ITMIN.LE.1.OR.ITMAX.LE.1).AND.ITER.LT.20)
67332      &  THEN
67333           PAI=0.5D0*(PAIMIN+PAIMAX)
67334           GOTO 140
67335         ELSEIF(ITER.LT.40.AND.FMIN.GT.0D0.AND.FMAX.LT.0D0.AND.
67336      &  ABS(FNOW).GT.1D-12*PSUM2) THEN
67337           PAI=PAIMIN+(PAIMAX-PAIMIN)*FMIN/(FMIN-FMAX)
67338           GOTO 140
67339         ENDIF
67340       ENDIF
67341  
67342 C...Now know energies in junction rest frame.
67343       PENEW(I)=PEI
67344       PENEW(J)=PEJ
67345       PENEW(K)=PEK
67346  
67347 C...Boost (copy of) partons to their rest frame.
67348       VXCM=-PSUM(1)/PSUM(5)
67349       VYCM=-PSUM(2)/PSUM(5)
67350       VZCM=-PSUM(3)/PSUM(5)
67351       GAMCM=SQRT(1D0+VXCM**2+VYCM**2+VZCM**2)
67352       DO 150 I=1,3
67353         FAC1=PJU(I,1)*VXCM+PJU(I,2)*VYCM+PJU(I,3)*VZCM
67354         FAC2=FAC1/(1D0+GAMCM)+PJU(I,4)
67355         PCM(I,1)=PJU(I,1)+FAC2*VXCM
67356         PCM(I,2)=PJU(I,2)+FAC2*VYCM
67357         PCM(I,3)=PJU(I,3)+FAC2*VZCM
67358         PCM(I,4)=PJU(I,4)*GAMCM+FAC1
67359         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
67360   150 CONTINUE
67361  
67362 C...Construct difference vectors and boost to junction rest frame.
67363       DO 160 J=1,3
67364         PCM(4,J)=PCM(1,J)/PCM(1,4)-PCM(2,J)/PCM(2,4)
67365         PCM(5,J)=PCM(1,J)/PCM(1,4)-PCM(3,J)/PCM(3,4)
67366   160 CONTINUE
67367       PCM(4,4)=PENEW(1)/PCM(1,4)-PENEW(2)/PCM(2,4)
67368       PCM(5,4)=PENEW(1)/PCM(1,4)-PENEW(3)/PCM(3,4)
67369       PCM4S=PCM(4,1)**2+PCM(4,2)**2+PCM(4,3)**2
67370       PCM5S=PCM(5,1)**2+PCM(5,2)**2+PCM(5,3)**2
67371       PCM45=PCM(4,1)*PCM(5,1)+PCM(4,2)*PCM(5,2)+PCM(4,3)*PCM(5,3)
67372       C4=(PCM5S*PCM(4,4)-PCM45*PCM(5,4))/(PCM4S*PCM5S-PCM45**2)
67373       C5=(PCM4S*PCM(5,4)-PCM45*PCM(4,4))/(PCM4S*PCM5S-PCM45**2)
67374       VXJU=C4*PCM(4,1)+C5*PCM(5,1)
67375       VYJU=C4*PCM(4,2)+C5*PCM(5,2)
67376       VZJU=C4*PCM(4,3)+C5*PCM(5,3)
67377       GAMJU=SQRT(1D0+VXJU**2+VYJU**2+VZJU**2)
67378  
67379 C...Add two boosts, giving final result.
67380       FCM=(VXJU*VXCM+VYJU*VYCM+VZJU*VZCM)/(1+GAMCM)+GAMJU
67381       VJU(1)=VXJU+FCM*VXCM
67382       VJU(2)=VYJU+FCM*VYCM
67383       VJU(3)=VZJU+FCM*VZCM
67384       VJU(4)=SQRT(1D0+VJU(1)**2+VJU(2)**2+VJU(3)**2)
67385       VJU(5)=1D0
67386  
67387 C...In case of error in reconstruction: revert to CM frame of system.
67388       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
67389      &(PCM(1,5)*PCM(2,5))
67390       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
67391      &(PCM(1,5)*PCM(3,5))
67392       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
67393      &(PCM(2,5)*PCM(3,5))
67394       ERRCCM=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
67395       ERRTCM=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
67396       DO 170 I=1,3
67397         FAC1=PJU(I,1)*VJU(1)+PJU(I,2)*VJU(2)+PJU(I,3)*VJU(3)
67398         FAC2=FAC1/(1D0+VJU(4))+PJU(I,4)
67399         PCM(I,1)=PJU(I,1)+FAC2*VJU(1)
67400         PCM(I,2)=PJU(I,2)+FAC2*VJU(2)
67401         PCM(I,3)=PJU(I,3)+FAC2*VJU(3)
67402         PCM(I,4)=PJU(I,4)*VJU(4)+FAC1
67403         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
67404   170 CONTINUE
67405       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
67406      &(PCM(1,5)*PCM(2,5))
67407       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
67408      &(PCM(1,5)*PCM(3,5))
67409       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
67410      &(PCM(2,5)*PCM(3,5))
67411       ERRCJU=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
67412       ERRTJU=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
67413       IF(ERRCJU+ERRTJU.GT.ERRCCM+ERRTCM) THEN
67414         VJU(1)=VXCM
67415         VJU(2)=VYCM
67416         VJU(3)=VZCM
67417         VJU(4)=GAMCM
67418       ENDIF
67419  
67420       RETURN
67421       END
67422  
67423 C*********************************************************************
67424  
67425 C...PYINDF
67426 C...Handles the fragmentation of a jet system (or a single
67427 C...jet) according to independent fragmentation models.
67428  
67429       SUBROUTINE PYINDF(IP)
67430  
67431 C...Double precision and integer declarations.
67432       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67433       IMPLICIT INTEGER(I-N)
67434       INTEGER PYK,PYCHGE,PYCOMP
67435 C...Commonblocks.
67436       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
67437       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67438       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67439       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
67440 C...Local arrays.
67441       DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3),
67442      &KFLO(2),PXO(2),PYO(2),WO(2)
67443  
67444 C.. MOPS error message
67445       IF(MSTJ(12).GT.3) CALL PYERRM(9,'(PYINDF:) MSTJ(12)>3 options'//
67446      &' are not treated as expected in independent fragmentation')
67447  
67448 C...Reset counters. Identify parton system and take copy. Check flavour.
67449       NSAV=N
67450       MSTU90=MSTU(90)
67451       NJET=0
67452       KQSUM=0
67453       DO 100 J=1,5
67454         DPS(J)=0D0
67455   100 CONTINUE
67456       I=IP-1
67457   110 I=I+1
67458       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
67459         CALL PYERRM(12,'(PYINDF:) failed to reconstruct jet system')
67460         IF(MSTU(21).GE.1) RETURN
67461       ENDIF
67462       IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110
67463       KC=PYCOMP(K(I,2))
67464       IF(KC.EQ.0) GOTO 110
67465       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
67466       IF(KQ.EQ.0) GOTO 110
67467       NJET=NJET+1
67468       IF(KQ.NE.2) KQSUM=KQSUM+KQ
67469       DO 120 J=1,5
67470         K(NSAV+NJET,J)=K(I,J)
67471         P(NSAV+NJET,J)=P(I,J)
67472         DPS(J)=DPS(J)+P(I,J)
67473   120 CONTINUE
67474       K(NSAV+NJET,3)=I
67475       IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND.
67476      &K(I+1,1).EQ.2)) GOTO 110
67477       IF(NJET.NE.1.AND.KQSUM.NE.0) THEN
67478         CALL PYERRM(12,'(PYINDF:) unphysical flavour combination')
67479         IF(MSTU(21).GE.1) RETURN
67480       ENDIF
67481  
67482 C...Boost copied system to CM frame. Find CM energy and sum flavours.
67483       IF(NJET.NE.1) THEN
67484         MSTU(33)=1
67485         CALL PYROBO(NSAV+1,NSAV+NJET,0D0,0D0,-DPS(1)/DPS(4),
67486      &  -DPS(2)/DPS(4),-DPS(3)/DPS(4))
67487       ENDIF
67488       PECM=0D0
67489       DO 130 J=1,3
67490         NFI(J)=0
67491   130 CONTINUE
67492       DO 140 I=NSAV+1,NSAV+NJET
67493         PECM=PECM+P(I,4)
67494         KFA=IABS(K(I,2))
67495         IF(KFA.LE.3) THEN
67496           NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2))
67497         ELSEIF(KFA.GT.1000) THEN
67498           KFLA=MOD(KFA/1000,10)
67499           KFLB=MOD(KFA/100,10)
67500           IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2))
67501           IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2))
67502         ENDIF
67503   140 CONTINUE
67504  
67505 C...Loop over attempts made. Reset counters.
67506       NTRY=0
67507   150 NTRY=NTRY+1
67508       IF(NTRY.GT.200) THEN
67509         CALL PYERRM(14,'(PYINDF:) caught in infinite loop')
67510         IF(MSTU(21).GE.1) RETURN
67511       ENDIF
67512       N=NSAV+NJET
67513       MSTU(90)=MSTU90
67514       DO 160 J=1,3
67515         NFL(J)=NFI(J)
67516         IFET(J)=0
67517         KFLF(J)=0
67518   160 CONTINUE
67519  
67520 C...Loop over jets to be fragmented.
67521       DO 230 IP1=NSAV+1,NSAV+NJET
67522         MSTJ(91)=0
67523         NSAV1=N
67524         MSTU91=MSTU(90)
67525  
67526 C...Initial flavour and momentum values. Jet along +z axis.
67527         KFLH=IABS(K(IP1,2))
67528         IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10)
67529         KFLO(2)=0
67530         WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2)
67531  
67532 C...Initial values for quark or diquark jet.
67533   170   IF(IABS(K(IP1,2)).NE.21) THEN
67534           NSTR=1
67535           KFLO(1)=K(IP1,2)
67536           CALL PYPTDI(0,PXO(1),PYO(1))
67537           WO(1)=WF
67538  
67539 C...Initial values for gluon treated like random quark jet.
67540         ELSEIF(MSTJ(2).LE.2) THEN
67541           NSTR=1
67542           IF(MSTJ(2).EQ.2) MSTJ(91)=1
67543           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
67544           CALL PYPTDI(0,PXO(1),PYO(1))
67545           WO(1)=WF
67546  
67547 C...Initial values for gluon treated like quark-antiquark jet pair,
67548 C...sharing energy according to Altarelli-Parisi splitting function.
67549         ELSE
67550           NSTR=2
67551           IF(MSTJ(2).EQ.4) MSTJ(91)=1
67552           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
67553           KFLO(2)=-KFLO(1)
67554           CALL PYPTDI(0,PXO(1),PYO(1))
67555           PXO(2)=-PXO(1)
67556           PYO(2)=-PYO(1)
67557           WO(1)=WF*PYR(0)**(1D0/3D0)
67558           WO(2)=WF-WO(1)
67559         ENDIF
67560  
67561 C...Initial values for rank, flavour, pT and W+.
67562         DO 220 ISTR=1,NSTR
67563   180     I=N
67564           MSTU(90)=MSTU91
67565           IRANK=0
67566           KFL1=KFLO(ISTR)
67567           PX1=PXO(ISTR)
67568           PY1=PYO(ISTR)
67569           W=WO(ISTR)
67570  
67571 C...New hadron. Generate flavour and hadron species.
67572   190     I=I+1
67573           IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN
67574             CALL PYERRM(11,'(PYINDF:) no more memory left in PYJETS')
67575             IF(MSTU(21).GE.1) RETURN
67576           ENDIF
67577           IRANK=IRANK+1
67578           K(I,1)=1
67579           K(I,3)=IP1
67580           K(I,4)=0
67581           K(I,5)=0
67582   200     CALL PYKFDI(KFL1,0,KFL2,K(I,2))
67583           IF(K(I,2).EQ.0) GOTO 180
67584           IF(IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND.IABS(KFL2).GT.10) THEN
67585             IF(PYR(0).GT.PARJ(19)) GOTO 200
67586           ENDIF
67587  
67588 C...Find hadron mass. Generate four-momentum.
67589           P(I,5)=PYMASS(K(I,2))
67590           CALL PYPTDI(KFL1,PX2,PY2)
67591           P(I,1)=PX1+PX2
67592           P(I,2)=PY1+PY2
67593           PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
67594           CALL PYZDIS(KFL1,KFL2,PR,Z)
67595           MZSAV=0
67596           IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN
67597             MZSAV=1
67598             MSTU(90)=MSTU(90)+1
67599             MSTU(90+MSTU(90))=I
67600             PARU(90+MSTU(90))=Z
67601           ENDIF
67602           P(I,3)=0.5D0*(Z*W-PR/MAX(1D-4,Z*W))
67603           P(I,4)=0.5D0*(Z*W+PR/MAX(1D-4,Z*W))
67604           IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND.
67605      &    P(I,3).LE.0.001D0) THEN
67606             IF(W.GE.P(I,5)+0.5D0*PARJ(32)) GOTO 180
67607             P(I,3)=0.0001D0
67608             P(I,4)=SQRT(PR)
67609             Z=P(I,4)/W
67610           ENDIF
67611  
67612 C...Remaining flavour and momentum.
67613           KFL1=-KFL2
67614           PX1=-PX2
67615           PY1=-PY2
67616           W=(1D0-Z)*W
67617           DO 210 J=1,5
67618             V(I,J)=0D0
67619   210     CONTINUE
67620  
67621 C...Check if pL acceptable. Go back for new hadron if enough energy.
67622           IF(MSTJ(3).GE.0.AND.P(I,3).LT.0D0) THEN
67623             I=I-1
67624             IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1
67625           ENDIF
67626           IF(W.GT.PARJ(31)) GOTO 190
67627           N=I
67628   220   CONTINUE
67629         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1D0*PARJ(32)
67630         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170
67631  
67632 C...Rotate jet to new direction.
67633         THE=PYANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2))
67634         PHI=PYANGL(P(IP1,1),P(IP1,2))
67635         MSTU(33)=1
67636         CALL PYROBO(NSAV1+1,N,THE,PHI,0D0,0D0,0D0)
67637         K(K(IP1,3),4)=NSAV1+1
67638         K(K(IP1,3),5)=N
67639  
67640 C...End of jet generation loop. Skip conservation in some cases.
67641   230 CONTINUE
67642       IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490
67643       IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150
67644  
67645 C...Subtract off produced hadron flavours, finished if zero.
67646       DO 240 I=NSAV+NJET+1,N
67647         KFA=IABS(K(I,2))
67648         KFLA=MOD(KFA/1000,10)
67649         KFLB=MOD(KFA/100,10)
67650         KFLC=MOD(KFA/10,10)
67651         IF(KFLA.EQ.0) THEN
67652           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB
67653           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB
67654         ELSE
67655           IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2))
67656           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))
67657           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2))
67658         ENDIF
67659   240 CONTINUE
67660       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
67661      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
67662       IF(NREQ.EQ.0) GOTO 320
67663  
67664 C...Take away flavour of low-momentum particles until enough freedom.
67665       NREM=0
67666   250 IREM=0
67667       P2MIN=PECM**2
67668       DO 260 I=NSAV+NJET+1,N
67669         P2=P(I,1)**2+P(I,2)**2+P(I,3)**2
67670         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I
67671         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2
67672   260 CONTINUE
67673       IF(IREM.EQ.0) GOTO 150
67674       K(IREM,1)=7
67675       KFA=IABS(K(IREM,2))
67676       KFLA=MOD(KFA/1000,10)
67677       KFLB=MOD(KFA/100,10)
67678       KFLC=MOD(KFA/10,10)
67679       IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8
67680       IF(K(IREM,1).EQ.8) GOTO 250
67681       IF(KFLA.EQ.0) THEN
67682         ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB
67683         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN
67684         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN
67685       ELSE
67686         IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2))
67687         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2))
67688         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2))
67689       ENDIF
67690       NREM=NREM+1
67691       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
67692      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
67693       IF(NREQ.GT.NREM) GOTO 250
67694       DO 270 I=NSAV+NJET+1,N
67695         IF(K(I,1).EQ.8) K(I,1)=1
67696   270 CONTINUE
67697  
67698 C...Find combination of existing and new flavours for hadron.
67699   280 NFET=2
67700       IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3
67701       IF(NREQ.LT.NREM) NFET=1
67702       IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0
67703       DO 290 J=1,NFET
67704         IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*PYR(0)
67705         KFLF(J)=ISIGN(1,NFL(1))
67706         IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2))
67707         IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3))
67708   290 CONTINUE
67709       IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0))
67710      &GOTO 280
67711       IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR.
67712      &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3)
67713      &.LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280
67714       IF(NFET.EQ.0) KFLF(1)=1+INT((2D0+PARJ(2))*PYR(0))
67715       IF(NFET.EQ.0) KFLF(2)=-KFLF(1)
67716       IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2D0+PARJ(2))*PYR(0)),-KFLF(1))
67717       IF(NFET.LE.2) KFLF(3)=0
67718       IF(KFLF(3).NE.0) THEN
67719         KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+
67720      &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1))
67721         IF(KFLF(1).EQ.KFLF(3).OR.(1D0+3D0*PARJ(4))*PYR(0).GT.1D0)
67722      &  KFLFC=KFLFC+ISIGN(2,KFLFC)
67723       ELSE
67724         KFLFC=KFLF(1)
67725       ENDIF
67726       CALL PYKFDI(KFLFC,KFLF(2),KFLDMP,KF)
67727       IF(KF.EQ.0) GOTO 280
67728       DO 300 J=1,MAX(2,NFET)
67729         NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J))
67730   300 CONTINUE
67731  
67732 C...Store hadron at random among free positions.
67733       NPOS=MIN(1+INT(PYR(0)*NREM),NREM)
67734       DO 310 I=NSAV+NJET+1,N
67735         IF(K(I,1).EQ.7) NPOS=NPOS-1
67736         IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310
67737         K(I,1)=1
67738         K(I,2)=KF
67739         P(I,5)=PYMASS(K(I,2))
67740         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
67741   310 CONTINUE
67742       NREM=NREM-1
67743       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
67744      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
67745       IF(NREM.GT.0) GOTO 280
67746  
67747 C...Compensate for missing momentum in global scheme (3 options).
67748   320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN
67749         DO 340 J=1,3
67750           PSI(J)=0D0
67751           DO 330 I=NSAV+NJET+1,N
67752             PSI(J)=PSI(J)+P(I,J)
67753   330     CONTINUE
67754   340   CONTINUE
67755         PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2
67756         PWS=0D0
67757         DO 350 I=NSAV+NJET+1,N
67758           IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4)
67759           IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
67760      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
67761           IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1D0
67762   350   CONTINUE
67763         DO 370 I=NSAV+NJET+1,N
67764           IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4)
67765           IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
67766      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
67767           IF(MOD(MSTJ(3),5).EQ.3) PW=1D0
67768           DO 360 J=1,3
67769             P(I,J)=P(I,J)-PSI(J)*PW/PWS
67770   360     CONTINUE
67771           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
67772   370   CONTINUE
67773  
67774 C...Compensate for missing momentum withing each jet separately.
67775       ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN
67776         DO 390 I=N+1,N+NJET
67777           K(I,1)=0
67778           DO 380 J=1,5
67779             P(I,J)=0D0
67780   380     CONTINUE
67781   390   CONTINUE
67782         DO 410 I=NSAV+NJET+1,N
67783           IR1=K(I,3)
67784           IR2=N+IR1-NSAV
67785           K(IR2,1)=K(IR2,1)+1
67786           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
67787      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
67788           DO 400 J=1,3
67789             P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J)
67790   400     CONTINUE
67791           P(IR2,4)=P(IR2,4)+P(I,4)
67792           P(IR2,5)=P(IR2,5)+PLS
67793   410   CONTINUE
67794         PSS=0D0
67795         DO 420 I=N+1,N+NJET
67796           IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8D0*P(I,5)+0.2D0))
67797   420   CONTINUE
67798         DO 440 I=NSAV+NJET+1,N
67799           IR1=K(I,3)
67800           IR2=N+IR1-NSAV
67801           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
67802      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
67803           DO 430 J=1,3
67804             P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1D0/(P(IR2,5)*PSS)-1D0)*
67805      &      PLS*P(IR1,J)
67806   430     CONTINUE
67807           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
67808   440   CONTINUE
67809       ENDIF
67810  
67811 C...Scale momenta for energy conservation.
67812       IF(MOD(MSTJ(3),5).NE.0) THEN
67813         PMS=0D0
67814         PES=0D0
67815         PQS=0D0
67816         DO 450 I=NSAV+NJET+1,N
67817           PMS=PMS+P(I,5)
67818           PES=PES+P(I,4)
67819           PQS=PQS+P(I,5)**2/P(I,4)
67820   450   CONTINUE
67821         IF(PMS.GE.PECM) GOTO 150
67822         NECO=0
67823   460   NECO=NECO+1
67824         PFAC=(PECM-PQS)/(PES-PQS)
67825         PES=0D0
67826         PQS=0D0
67827         DO 480 I=NSAV+NJET+1,N
67828           DO 470 J=1,3
67829             P(I,J)=PFAC*P(I,J)
67830   470     CONTINUE
67831           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
67832           PES=PES+P(I,4)
67833           PQS=PQS+P(I,5)**2/P(I,4)
67834   480   CONTINUE
67835         IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2D-6*PECM) GOTO 460
67836       ENDIF
67837  
67838 C...Origin of produced particles and parton daughter pointers.
67839   490 DO 500 I=NSAV+NJET+1,N
67840         IF(MSTU(16).NE.2) K(I,3)=NSAV+1
67841         IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3)
67842   500 CONTINUE
67843       DO 510 I=NSAV+1,NSAV+NJET
67844         I1=K(I,3)
67845         K(I1,1)=K(I1,1)+10
67846         IF(MSTU(16).NE.2) THEN
67847           K(I1,4)=NSAV+1
67848           K(I1,5)=NSAV+1
67849         ELSE
67850           K(I1,4)=K(I1,4)-NJET+1
67851           K(I1,5)=K(I1,5)-NJET+1
67852           IF(K(I1,5).LT.K(I1,4)) THEN
67853             K(I1,4)=0
67854             K(I1,5)=0
67855           ENDIF
67856         ENDIF
67857   510 CONTINUE
67858  
67859 C...Document independent fragmentation system. Remove copy of jets.
67860       NSAV=NSAV+1
67861       K(NSAV,1)=11
67862       K(NSAV,2)=93
67863       K(NSAV,3)=IP
67864       K(NSAV,4)=NSAV+1
67865       K(NSAV,5)=N-NJET+1
67866       DO 520 J=1,4
67867         P(NSAV,J)=DPS(J)
67868         V(NSAV,J)=V(IP,J)
67869   520 CONTINUE
67870       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
67871       V(NSAV,5)=0D0
67872       DO 540 I=NSAV+NJET,N
67873         DO 530 J=1,5
67874           K(I-NJET+1,J)=K(I,J)
67875           P(I-NJET+1,J)=P(I,J)
67876           V(I-NJET+1,J)=V(I,J)
67877   530   CONTINUE
67878   540 CONTINUE
67879       N=N-NJET+1
67880       DO 550 IZ=MSTU90+1,MSTU(90)
67881         MSTU(90+IZ)=MSTU(90+IZ)-NJET+1
67882   550 CONTINUE
67883  
67884 C...Boost back particle system. Set production vertices.
67885       IF(NJET.NE.1) CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),
67886      &DPS(2)/DPS(4),DPS(3)/DPS(4))
67887       DO 570 I=NSAV+1,N
67888         DO 560 J=1,4
67889           V(I,J)=V(IP,J)
67890   560   CONTINUE
67891   570 CONTINUE
67892  
67893       RETURN
67894       END
67895  
67896 C*********************************************************************
67897  
67898 C...PYDECY
67899 C...Handles the decay of unstable particles.
67900  
67901       SUBROUTINE PYDECY(IP)
67902  
67903 C...Double precision and integer declarations.
67904       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67905       IMPLICIT INTEGER(I-N)
67906       INTEGER PYK,PYCHGE,PYCOMP
67907 C...Commonblocks.
67908       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
67909       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67910       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67911       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
67912       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
67913 C...Local arrays.
67914       DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3),
67915      &WTCOR(10),PTAU(4),PCMTAU(4),DBETAU(3)
67916       CHARACTER CIDC*4
67917       DATA WTCOR/2D0,5D0,15D0,60D0,250D0,1500D0,1.2D4,1.2D5,150D0,16D0/
67918  
67919 C...Functions: momentum in two-particle decays and four-product.
67920       PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2D0*A)
67921       FOUR(I,J)=P(I,4)*P(J,4)-P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
67922  
67923 C...Initial values.
67924       NTRY=0
67925       NSAV=N
67926       KFA=IABS(K(IP,2))
67927       KFS=ISIGN(1,K(IP,2))
67928       KC=PYCOMP(KFA)
67929       MSTJ(92)=0
67930  
67931 C...Choose lifetime and determine decay vertex.
67932       IF(K(IP,1).EQ.5) THEN
67933         V(IP,5)=0D0
67934       ELSEIF(K(IP,1).NE.4) THEN
67935         V(IP,5)=-PMAS(KC,4)*LOG(PYR(0))
67936       ENDIF
67937       DO 100 J=1,4
67938         VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5)
67939   100 CONTINUE
67940  
67941 C...Determine whether decay allowed or not.
67942       MOUT=0
67943       IF(MSTJ(22).EQ.2) THEN
67944         IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1
67945       ELSEIF(MSTJ(22).EQ.3) THEN
67946         IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
67947       ELSEIF(MSTJ(22).EQ.4) THEN
67948         IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
67949         IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
67950       ENDIF
67951       IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN
67952         K(IP,1)=4
67953         RETURN
67954       ENDIF
67955  
67956 C...Interface to external tau decay library (for tau polarization).
67957       IF(KFA.EQ.15.AND.MSTJ(28).GE.1) THEN
67958  
67959 C...Starting values for pointers and momenta.
67960         ITAU=IP
67961         DO 110 J=1,4
67962           PTAU(J)=P(ITAU,J)
67963           PCMTAU(J)=P(ITAU,J)
67964   110   CONTINUE
67965  
67966 C...Iterate to find position and code of mother of tau.
67967         IMTAU=ITAU
67968   120   IMTAU=K(IMTAU,3)
67969  
67970         IF(IMTAU.EQ.0) THEN
67971 C...If no known origin then impossible to do anything further.
67972           KFORIG=0
67973           IORIG=0
67974  
67975         ELSEIF(K(IMTAU,2).EQ.K(ITAU,2)) THEN
67976 C...If tau -> tau + gamma then add gamma energy and loop.
67977           IF(K(K(IMTAU,4),2).EQ.22) THEN
67978             DO 130 J=1,4
67979               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,4),J)
67980   130       CONTINUE
67981           ELSEIF(K(K(IMTAU,5),2).EQ.22) THEN
67982             DO 140 J=1,4
67983               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,5),J)
67984   140       CONTINUE
67985           ENDIF
67986           GOTO 120
67987  
67988         ELSEIF(IABS(K(IMTAU,2)).GT.100) THEN
67989 C...If coming from weak decay of hadron then W is not stored in record,
67990 C...but can be reconstructed by adding neutrino momentum.
67991           KFORIG=-ISIGN(24,K(ITAU,2))
67992           IORIG=0
67993           DO 160 II=K(IMTAU,4),K(IMTAU,5)
67994             IF(K(II,2)*ISIGN(1,K(ITAU,2)).EQ.-16) THEN
67995               DO 150 J=1,4
67996                 PCMTAU(J)=PCMTAU(J)+P(II,J)
67997   150         CONTINUE
67998             ENDIF
67999   160     CONTINUE
68000  
68001         ELSE
68002 C...If coming from resonance decay then find latest copy of this
68003 C...resonance (may not completely agree).
68004           KFORIG=K(IMTAU,2)
68005           IORIG=IMTAU
68006           DO 170 II=IMTAU+1,IP-1
68007             IF(K(II,2).EQ.KFORIG.AND.K(II,3).EQ.IORIG.AND.
68008      &      ABS(P(II,5)-P(IORIG,5)).LT.1D-5*P(IORIG,5)) IORIG=II
68009   170     CONTINUE
68010           DO 180 J=1,4
68011             PCMTAU(J)=P(IORIG,J)
68012   180     CONTINUE
68013         ENDIF
68014  
68015 C...Boost tau to rest frame of production process (where known)
68016 C...and rotate it to sit along +z axis.
68017         DO 190 J=1,3
68018           DBETAU(J)=PCMTAU(J)/PCMTAU(4)
68019   190   CONTINUE
68020         IF(KFORIG.NE.0) CALL PYROBO(ITAU,ITAU,0D0,0D0,-DBETAU(1),
68021      &  -DBETAU(2),-DBETAU(3))
68022         PHITAU=PYANGL(P(ITAU,1),P(ITAU,2))
68023         CALL PYROBO(ITAU,ITAU,0D0,-PHITAU,0D0,0D0,0D0)
68024         THETAU=PYANGL(P(ITAU,3),P(ITAU,1))
68025         CALL PYROBO(ITAU,ITAU,-THETAU,0D0,0D0,0D0,0D0)
68026  
68027 C...Call tau decay routine (if meaningful) and fill extra info.
68028         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
68029           CALL PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
68030           DO 200 II=NSAV+1,NSAV+NDECAY
68031             K(II,1)=1
68032             K(II,3)=IP
68033             K(II,4)=0
68034             K(II,5)=0
68035   200     CONTINUE
68036           N=NSAV+NDECAY
68037         ENDIF
68038  
68039 C...Boost back decay tau and decay products.
68040         DO 210 J=1,4
68041           P(ITAU,J)=PTAU(J)
68042   210   CONTINUE
68043         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
68044           CALL PYROBO(NSAV+1,N,THETAU,PHITAU,0D0,0D0,0D0)
68045           IF(KFORIG.NE.0) CALL PYROBO(NSAV+1,N,0D0,0D0,DBETAU(1),
68046      &    DBETAU(2),DBETAU(3))
68047  
68048 C...Skip past ordinary tau decay treatment.
68049           MMAT=0
68050           MBST=0
68051           ND=0
68052           GOTO 630
68053         ENDIF
68054       ENDIF
68055  
68056 C...B-Bbar mixing: flip sign of meson appropriately.
68057       MMIX=0
68058       IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN
68059         XBBMIX=PARJ(76)
68060         IF(KFA.EQ.531) XBBMIX=PARJ(77)
68061         IF(SIN(0.5D0*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.PYR(0)) MMIX=1
68062         IF(MMIX.EQ.1) KFS=-KFS
68063       ENDIF
68064  
68065 C...Check existence of decay channels. Particle/antiparticle rules.
68066       KCA=KC
68067       IF(MDCY(KC,2).GT.0) THEN
68068         MDMDCY=MDME(MDCY(KC,2),2)
68069         IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY
68070       ENDIF
68071       IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN
68072         CALL PYERRM(9,'(PYDECY:) no decay channel defined')
68073         RETURN
68074       ENDIF
68075       IF(MOD(KFA/1000,10).EQ.0.AND.KCA.EQ.85) KFS=-KFS
68076       IF(KCHG(KC,3).EQ.0) THEN
68077         KFSP=1
68078         KFSN=0
68079         IF(PYR(0).GT.0.5D0) KFS=-KFS
68080       ELSEIF(KFS.GT.0) THEN
68081         KFSP=1
68082         KFSN=0
68083       ELSE
68084         KFSP=0
68085         KFSN=1
68086       ENDIF
68087  
68088 C...Sum branching ratios of allowed decay channels.
68089   220 NOPE=0
68090       BRSU=0D0
68091       DO 230 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1
68092         IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
68093      &  KFSN*MDME(IDL,1).NE.3) GOTO 230
68094         IF(MDME(IDL,2).GT.100) GOTO 230
68095         NOPE=NOPE+1
68096         BRSU=BRSU+BRAT(IDL)
68097   230 CONTINUE
68098       IF(NOPE.EQ.0) THEN
68099         CALL PYERRM(2,'(PYDECY:) all decay channels closed by user')
68100         RETURN
68101       ENDIF
68102  
68103 C...Select decay channel among allowed ones.
68104   240 RBR=BRSU*PYR(0)
68105       IDL=MDCY(KCA,2)-1
68106   250 IDL=IDL+1
68107       IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
68108      &KFSN*MDME(IDL,1).NE.3) THEN
68109         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
68110       ELSEIF(MDME(IDL,2).GT.100) THEN
68111         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
68112       ELSE
68113         IDC=IDL
68114         RBR=RBR-BRAT(IDL)
68115         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0D0) GOTO 250
68116       ENDIF
68117  
68118 C...Start readout of decay channel: matrix element, reset counters.
68119       MMAT=MDME(IDC,2)
68120   260 NTRY=NTRY+1
68121       IF(MOD(NTRY,200).EQ.0) THEN
68122         WRITE(CIDC,'(I4)') IDC
68123 C...Do not print warning for some well-known special cases.
68124         IF(KFA.NE.113.AND.KFA.NE.115.AND.KFA.NE.215)
68125      &  CALL PYERRM(4,'(PYDECY:) caught in loop for decay channel'//
68126      &  CIDC)
68127         GOTO 240
68128       ENDIF
68129       IF(NTRY.GT.1000) THEN
68130         CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
68131         IF(MSTU(21).GE.1) RETURN
68132       ENDIF
68133       I=N
68134       NP=0
68135       NQ=0
68136       MBST=0
68137       IF(MMAT.GE.11.AND.P(IP,4).GT.20D0*P(IP,5)) MBST=1
68138       DO 270 J=1,4
68139         PV(1,J)=0D0
68140         IF(MBST.EQ.0) PV(1,J)=P(IP,J)
68141   270 CONTINUE
68142       IF(MBST.EQ.1) PV(1,4)=P(IP,5)
68143       PV(1,5)=P(IP,5)
68144       PS=0D0
68145       PSQ=0D0
68146       MREM=0
68147       MHADDY=0
68148       IF(KFA.GT.80) MHADDY=1
68149 C.. Random flavour and popcorn system memory.
68150       IRNDMO=0
68151       JTMO=0
68152       MSTU(121)=0
68153       MSTU(125)=10
68154  
68155 C...Read out decay products. Convert to standard flavour code.
68156       JTMAX=5
68157       IF(MDME(IDC+1,2).EQ.101) JTMAX=10
68158       DO 280 JT=1,JTMAX
68159         IF(JT.LE.5) KP=KFDP(IDC,JT)
68160         IF(JT.GE.6) KP=KFDP(IDC+1,JT-5)
68161         IF(KP.EQ.0) GOTO 280
68162         KPA=IABS(KP)
68163         KCP=PYCOMP(KPA)
68164         IF(KPA.GT.80) MHADDY=1
68165         IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN
68166           KFP=KP
68167         ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN
68168           KFP=KFS*KP
68169         ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN
68170           KFP=-KFS*MOD(KFA/10,10)
68171         ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN
68172           KFP=KFS*(100*MOD(KFA/10,100)+3)
68173         ELSEIF(KPA.EQ.81) THEN
68174           KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1)
68175         ELSEIF(KP.EQ.82) THEN
68176           CALL PYDCYK(-KFS*INT(1D0+(2D0+PARJ(2))*PYR(0)),0,KFP,KDUMP)
68177           IF(KFP.EQ.0) GOTO 260
68178           KFP=-KFP
68179           IRNDMO=1
68180           MSTJ(93)=1
68181           IF(PV(1,5).LT.PARJ(32)+2D0*PYMASS(KFP)) GOTO 260
68182         ELSEIF(KP.EQ.-82) THEN
68183           KFP=MSTU(124)
68184         ENDIF
68185         IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=PYCOMP(KFP)
68186  
68187 C...Add decay product to event record or to quark flavour list.
68188         KFPA=IABS(KFP)
68189         KQP=KCHG(KCP,2)
68190         IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN
68191           NQ=NQ+1
68192           KFLO(NQ)=KFP
68193 C...set rndmflav popcorn system pointer
68194           IF(KP.EQ.82.AND.MSTU(121).GT.0) JTMO=NQ
68195           MSTJ(93)=2
68196           PSQ=PSQ+PYMASS(KFLO(NQ))
68197         ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND.
68198      &    MOD(NQ,2).EQ.1) THEN
68199           NQ=NQ-1
68200           PS=PS-P(I,5)
68201           K(I,1)=1
68202           KFI=K(I,2)
68203           CALL PYKFDI(KFP,KFI,KFLDMP,K(I,2))
68204           IF(K(I,2).EQ.0) GOTO 260
68205           MSTJ(93)=1
68206           P(I,5)=PYMASS(K(I,2))
68207           PS=PS+P(I,5)
68208         ELSE
68209           I=I+1
68210           NP=NP+1
68211           IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1
68212           IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1
68213           K(I,1)=1+MOD(NQ,2)
68214           IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2
68215           IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1
68216           K(I,2)=KFP
68217           K(I,3)=IP
68218           K(I,4)=0
68219           K(I,5)=0
68220           P(I,5)=PYMASS(KFP)
68221           PS=PS+P(I,5)
68222         ENDIF
68223   280 CONTINUE
68224  
68225 C...Check masses for resonance decays.
68226       IF(MHADDY.EQ.0) THEN
68227         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 240
68228       ENDIF
68229  
68230 C...Choose decay multiplicity in phase space model.
68231   290 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN
68232         PSP=PS
68233         CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1D0))
68234         IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63)
68235   300   NTRY=NTRY+1
68236 C...Reset popcorn flags if new attempt. Re-select rndmflav if failed.
68237         IF(IRNDMO.EQ.0) THEN
68238            MSTU(121)=0
68239            JTMO=0
68240         ELSEIF(IRNDMO.EQ.1) THEN
68241            IRNDMO=2
68242         ELSE
68243            GOTO 260
68244         ENDIF
68245         IF(NTRY.GT.1000) THEN
68246           CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
68247           IF(MSTU(21).GE.1) RETURN
68248         ENDIF
68249         IF(MMAT.LE.20) THEN
68250           GAUSS=SQRT(-2D0*CNDE*LOG(MAX(1D-10,PYR(0))))*
68251      &    SIN(PARU(2)*PYR(0))
68252           ND=0.5D0+0.5D0*NP+0.25D0*NQ+CNDE+GAUSS
68253           IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 300
68254           IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 300
68255           IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 300
68256           IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 300
68257         ELSE
68258           ND=MMAT-20
68259         ENDIF
68260 C.. Set maximum popcorn meson number. Test rndmflav popcorn size.
68261         MSTU(125)=ND-NQ/2
68262         IF(MSTU(121).GT.MSTU(125)) GOTO 300
68263  
68264 C...Form hadrons from flavour content.
68265         DO 310 JT=1,NQ
68266           KFL1(JT)=KFLO(JT)
68267   310   CONTINUE
68268         IF(ND.EQ.NP+NQ/2) GOTO 330
68269         DO 320 I=N+NP+1,N+ND-NQ/2
68270 C.. Stick to started popcorn system, else pick side at random
68271           JT=JTMO
68272           IF(JT.EQ.0) JT=1+INT((NQ-1)*PYR(0))
68273           CALL PYDCYK(KFL1(JT),0,KFL2,K(I,2))
68274           IF(K(I,2).EQ.0) GOTO 300
68275           MSTU(125)=MSTU(125)-1
68276           JTMO=0
68277           IF(MSTU(121).GT.0) JTMO=JT
68278           KFL1(JT)=-KFL2
68279   320   CONTINUE
68280   330   JT=2
68281         JT2=3
68282         JT3=4
68283         IF(NQ.EQ.4.AND.PYR(0).LT.PARJ(66)) JT=4
68284         IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))*
68285      &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3
68286         IF(JT.EQ.3) JT2=2
68287         IF(JT.EQ.4) JT3=2
68288         CALL PYDCYK(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2))
68289         IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 300
68290         IF(NQ.EQ.4) CALL PYDCYK(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2))
68291         IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 300
68292  
68293 C...Check that sum of decay product masses not too large.
68294         PS=PSP
68295         DO 340 I=N+NP+1,N+ND
68296           K(I,1)=1
68297           K(I,3)=IP
68298           K(I,4)=0
68299           K(I,5)=0
68300           P(I,5)=PYMASS(K(I,2))
68301           PS=PS+P(I,5)
68302   340   CONTINUE
68303         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 300
68304  
68305 C...Rescale energy to subtract off spectator quark mass.
68306       ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44)
68307      &  .AND.NP.GE.3) THEN
68308         PS=PS-P(N+NP,5)
68309         PQT=(P(N+NP,5)+PARJ(65))/PV(1,5)
68310         DO 350 J=1,5
68311           P(N+NP,J)=PQT*PV(1,J)
68312           PV(1,J)=(1D0-PQT)*PV(1,J)
68313   350   CONTINUE
68314         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
68315         ND=NP-1
68316         MREM=1
68317  
68318 C...Fully specified final state: check mass broadening effects.
68319       ELSE
68320         IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 260
68321         ND=NP
68322       ENDIF
68323  
68324 C...Determine position of grandmother, number of sisters.
68325       NM=0
68326       KFAS=0
68327       MSGN=0
68328       IF(MMAT.EQ.3) THEN
68329         IM=K(IP,3)
68330         IF(IM.LT.0.OR.IM.GE.IP) IM=0
68331         IF(IM.NE.0) KFAM=IABS(K(IM,2))
68332         IF(IM.NE.0) THEN
68333           DO 360 IL=MAX(IP-2,IM+1),MIN(IP+2,N)
68334             IF(K(IL,3).EQ.IM) NM=NM+1
68335             IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL
68336   360     CONTINUE
68337           IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR.
68338      &    MOD(KFAM/1000,10).NE.0) NM=0
68339           IF(NM.EQ.2) THEN
68340             KFAS=IABS(K(ISIS,2))
68341             IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR.
68342      &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0
68343           ENDIF
68344         ENDIF
68345       ENDIF
68346  
68347 C...Kinematics of one-particle decays.
68348       IF(ND.EQ.1) THEN
68349         DO 370 J=1,4
68350           P(N+1,J)=P(IP,J)
68351   370   CONTINUE
68352         GOTO 630
68353       ENDIF
68354  
68355 C...Calculate maximum weight ND-particle decay.
68356       PV(ND,5)=P(N+ND,5)
68357       IF(ND.GE.3) THEN
68358         WTMAX=1D0/WTCOR(ND-2)
68359         PMAX=PV(1,5)-PS+P(N+ND,5)
68360         PMIN=0D0
68361         DO 380 IL=ND-1,1,-1
68362           PMAX=PMAX+P(N+IL,5)
68363           PMIN=PMIN+P(N+IL+1,5)
68364           WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5))
68365   380   CONTINUE
68366       ENDIF
68367  
68368 C...Find virtual gamma mass in Dalitz decay.
68369   390 IF(ND.EQ.2) THEN
68370       ELSEIF(MMAT.EQ.2) THEN
68371         PMES=4D0*PMAS(11,1)**2
68372         PMRHO2=PMAS(131,1)**2
68373         PGRHO2=PMAS(131,2)**2
68374   400   PMST=PMES*(P(IP,5)**2/PMES)**PYR(0)
68375         WT=(1+0.5D0*PMES/PMST)*SQRT(MAX(0D0,1D0-PMES/PMST))*
68376      &  (1D0-PMST/P(IP,5)**2)**3*(1D0+PGRHO2/PMRHO2)/
68377      &  ((1D0-PMST/PMRHO2)**2+PGRHO2/PMRHO2)
68378         IF(WT.LT.PYR(0)) GOTO 400
68379         PV(2,5)=MAX(2.00001D0*PMAS(11,1),SQRT(PMST))
68380  
68381 C...M-generator gives weight. If rejected, try again.
68382       ELSE
68383   410   RORD(1)=1D0
68384         DO 440 IL1=2,ND-1
68385           RSAV=PYR(0)
68386           DO 420 IL2=IL1-1,1,-1
68387             IF(RSAV.LE.RORD(IL2)) GOTO 430
68388             RORD(IL2+1)=RORD(IL2)
68389   420     CONTINUE
68390   430     RORD(IL2+1)=RSAV
68391   440   CONTINUE
68392         RORD(ND)=0D0
68393         WT=1D0
68394         DO 450 IL=ND-1,1,-1
68395           PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*
68396      &    (PV(1,5)-PS)
68397           WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
68398   450   CONTINUE
68399         IF(WT.LT.PYR(0)*WTMAX) GOTO 410
68400       ENDIF
68401  
68402 C...Perform two-particle decays in respective CM frame.
68403   460 DO 480 IL=1,ND-1
68404         PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
68405         UE(3)=2D0*PYR(0)-1D0
68406         PHI=PARU(2)*PYR(0)
68407         UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
68408         UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
68409         DO 470 J=1,3
68410           P(N+IL,J)=PA*UE(J)
68411           PV(IL+1,J)=-PA*UE(J)
68412   470   CONTINUE
68413         P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2)
68414         PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2)
68415   480 CONTINUE
68416  
68417 C...Lorentz transform decay products to lab frame.
68418       DO 490 J=1,4
68419         P(N+ND,J)=PV(ND,J)
68420   490 CONTINUE
68421       DO 530 IL=ND-1,1,-1
68422         DO 500 J=1,3
68423           BE(J)=PV(IL,J)/PV(IL,4)
68424   500   CONTINUE
68425         GA=PV(IL,4)/PV(IL,5)
68426         DO 520 I=N+IL,N+ND
68427           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
68428           DO 510 J=1,3
68429             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
68430   510     CONTINUE
68431           P(I,4)=GA*(P(I,4)+BEP)
68432   520   CONTINUE
68433   530 CONTINUE
68434  
68435 C...Check that no infinite loop in matrix element weight.
68436       NTRY=NTRY+1
68437       IF(NTRY.GT.800) GOTO 560
68438  
68439 C...Matrix elements for omega and phi decays.
68440       IF(MMAT.EQ.1) THEN
68441         WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2
68442      &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2
68443      &  +2D0*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3)
68444         IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001D0).LT.PYR(0)) GOTO 390
68445  
68446 C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-.
68447       ELSEIF(MMAT.EQ.2) THEN
68448         FOUR12=FOUR(N+1,N+2)
68449         FOUR13=FOUR(N+1,N+3)
68450         WT=(PMST-0.5D0*PMES)*(FOUR12**2+FOUR13**2)+
68451      &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2)
68452         IF(WT.LT.PYR(0)*0.25D0*PMST*(P(IP,5)**2-PMST)**2) GOTO 460
68453  
68454 C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar,
68455 C...V vector), of form cos**2(theta02) in V1 rest frame, and for
68456 C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02).
68457       ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN
68458         FOUR10=FOUR(IP,IM)
68459         FOUR12=FOUR(IP,N+1)
68460         FOUR02=FOUR(IM,N+1)
68461         PMS1=P(IP,5)**2
68462         PMS0=P(IM,5)**2
68463         PMS2=P(N+1,5)**2
68464         IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2
68465         IF(KFAS.EQ.22) HNUM=PMS1*(2D0*FOUR10*FOUR12*FOUR02-
68466      &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2)
68467         HNUM=MAX(1D-6*PMS1**2*PMS0*PMS2,HNUM)
68468         HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2)
68469         IF(HNUM.LT.PYR(0)*HDEN) GOTO 460
68470  
68471 C...Matrix element for "onium" -> g + g + g or gamma + g + g.
68472       ELSEIF(MMAT.EQ.4) THEN
68473         HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
68474         HX2=2D0*FOUR(IP,N+2)/P(IP,5)**2
68475         HX3=2D0*FOUR(IP,N+3)/P(IP,5)**2
68476         WT=((1D0-HX1)/(HX2*HX3))**2+((1D0-HX2)/(HX1*HX3))**2+
68477      &  ((1D0-HX3)/(HX1*HX2))**2
68478         IF(WT.LT.2D0*PYR(0)) GOTO 390
68479         IF(K(IP+1,2).EQ.22.AND.(1D0-HX1)*P(IP,5)**2.LT.4D0*PARJ(32)**2)
68480      &  GOTO 390
68481  
68482 C...Effective matrix element for nu spectrum in tau -> nu + hadrons.
68483       ELSEIF(MMAT.EQ.41) THEN
68484         IF(MBST.EQ.0) HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
68485         IF(MBST.EQ.1) HX1=2D0*P(N+1,4)/P(IP,5)
68486         HXM=MIN(0.75D0,2D0*(1D0-PS/P(IP,5)))
68487         IF(HX1*(3D0-2D0*HX1).LT.PYR(0)*HXM*(3D0-2D0*HXM)) GOTO 390
68488  
68489 C...Matrix elements for weak decays (only semileptonic for c and b)
68490       ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
68491      &  .AND.ND.EQ.3) THEN
68492         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3)
68493         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3)
68494         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
68495       ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN
68496         DO 550 J=1,4
68497           P(N+NP+1,J)=0D0
68498           DO 540 IS=N+3,N+NP
68499             P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J)
68500   540     CONTINUE
68501   550   CONTINUE
68502         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1)
68503         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1)
68504         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
68505       ENDIF
68506  
68507 C...Scale back energy and reattach spectator.
68508   560 IF(MREM.EQ.1) THEN
68509         DO 570 J=1,5
68510           PV(1,J)=PV(1,J)/(1D0-PQT)
68511   570   CONTINUE
68512         ND=ND+1
68513         MREM=0
68514       ENDIF
68515  
68516 C...Low invariant mass for system with spectator quark gives particle,
68517 C...not two jets. Readjust momenta accordingly.
68518       IF(MMAT.EQ.31.AND.ND.EQ.3) THEN
68519         MSTJ(93)=1
68520         PM2=PYMASS(K(N+2,2))
68521         MSTJ(93)=1
68522         PM3=PYMASS(K(N+3,2))
68523         IF(P(N+2,5)**2+P(N+3,5)**2+2D0*FOUR(N+2,N+3).GE.
68524      &  (PARJ(32)+PM2+PM3)**2) GOTO 630
68525         K(N+2,1)=1
68526         KFTEMP=K(N+2,2)
68527         CALL PYKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2))
68528         IF(K(N+2,2).EQ.0) GOTO 260
68529         P(N+2,5)=PYMASS(K(N+2,2))
68530         PS=P(N+1,5)+P(N+2,5)
68531         PV(2,5)=P(N+2,5)
68532         MMAT=0
68533         ND=2
68534         GOTO 460
68535       ELSEIF(MMAT.EQ.44) THEN
68536         MSTJ(93)=1
68537         PM3=PYMASS(K(N+3,2))
68538         MSTJ(93)=1
68539         PM4=PYMASS(K(N+4,2))
68540         IF(P(N+3,5)**2+P(N+4,5)**2+2D0*FOUR(N+3,N+4).GE.
68541      &  (PARJ(32)+PM3+PM4)**2) GOTO 600
68542         K(N+3,1)=1
68543         KFTEMP=K(N+3,2)
68544         CALL PYKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2))
68545         IF(K(N+3,2).EQ.0) GOTO 260
68546         P(N+3,5)=PYMASS(K(N+3,2))
68547         DO 580 J=1,3
68548           P(N+3,J)=P(N+3,J)+P(N+4,J)
68549   580   CONTINUE
68550         P(N+3,4)=SQRT(P(N+3,1)**2+P(N+3,2)**2+P(N+3,3)**2+P(N+3,5)**2)
68551         HA=P(N+1,4)**2-P(N+2,4)**2
68552         HB=HA-(P(N+1,5)**2-P(N+2,5)**2)
68553         HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+
68554      &  (P(N+1,3)-P(N+2,3))**2
68555         HD=(PV(1,4)-P(N+3,4))**2
68556         HE=HA**2-2D0*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2
68557         HF=HD*HC-HB**2
68558         HG=HD*HC-HA*HB
68559         HH=(SQRT(HG**2+HE*HF)-HG)/(2D0*HF)
68560         DO 590 J=1,3
68561           PCOR=HH*(P(N+1,J)-P(N+2,J))
68562           P(N+1,J)=P(N+1,J)+PCOR
68563           P(N+2,J)=P(N+2,J)-PCOR
68564   590   CONTINUE
68565         P(N+1,4)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2+P(N+1,5)**2)
68566         P(N+2,4)=SQRT(P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2+P(N+2,5)**2)
68567         ND=ND-1
68568       ENDIF
68569  
68570 C...Check invariant mass of W jets. May give one particle or start over.
68571   600 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
68572      &.AND.IABS(K(N+1,2)).LT.10) THEN
68573         PMR=SQRT(MAX(0D0,P(N+1,5)**2+P(N+2,5)**2+2D0*FOUR(N+1,N+2)))
68574         MSTJ(93)=1
68575         PM1=PYMASS(K(N+1,2))
68576         MSTJ(93)=1
68577         PM2=PYMASS(K(N+2,2))
68578         IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 610
68579         KFLDUM=INT(1.5D0+PYR(0))
68580         CALL PYKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1)
68581         CALL PYKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2)
68582         IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 260
68583         PSM=PYMASS(KF1)+PYMASS(KF2)
68584         IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 610
68585         IF(MMAT.GE.43.AND.PMR.GT.0.2D0*PARJ(32)+PSM) GOTO 610
68586         IF(MMAT.EQ.48) GOTO 390
68587         IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 260
68588         K(N+1,1)=1
68589         KFTEMP=K(N+1,2)
68590         CALL PYKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2))
68591         IF(K(N+1,2).EQ.0) GOTO 260
68592         P(N+1,5)=PYMASS(K(N+1,2))
68593         K(N+2,2)=K(N+3,2)
68594         P(N+2,5)=P(N+3,5)
68595         PS=P(N+1,5)+P(N+2,5)
68596         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
68597         PV(2,5)=P(N+3,5)
68598         MMAT=0
68599         ND=2
68600         GOTO 460
68601       ENDIF
68602  
68603 C...Phase space decay of partons from W decay.
68604   610 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN
68605         KFLO(1)=K(N+1,2)
68606         KFLO(2)=K(N+2,2)
68607         K(N+1,1)=K(N+3,1)
68608         K(N+1,2)=K(N+3,2)
68609         DO 620 J=1,5
68610           PV(1,J)=P(N+1,J)+P(N+2,J)
68611           P(N+1,J)=P(N+3,J)
68612   620   CONTINUE
68613         PV(1,5)=PMR
68614         N=N+1
68615         NP=0
68616         NQ=2
68617         PS=0D0
68618         MSTJ(93)=2
68619         PSQ=PYMASS(KFLO(1))
68620         MSTJ(93)=2
68621         PSQ=PSQ+PYMASS(KFLO(2))
68622         MMAT=11
68623         GOTO 290
68624       ENDIF
68625  
68626 C...Boost back for rapidly moving particle.
68627   630 N=N+ND
68628       IF(MBST.EQ.1) THEN
68629         DO 640 J=1,3
68630           BE(J)=P(IP,J)/P(IP,4)
68631   640   CONTINUE
68632         GA=P(IP,4)/P(IP,5)
68633         DO 660 I=NSAV+1,N
68634           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
68635           DO 650 J=1,3
68636             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
68637   650     CONTINUE
68638           P(I,4)=GA*(P(I,4)+BEP)
68639   660   CONTINUE
68640       ENDIF
68641  
68642 C...Fill in position of decay vertex.
68643       DO 680 I=NSAV+1,N
68644         DO 670 J=1,4
68645           V(I,J)=VDCY(J)
68646   670   CONTINUE
68647         V(I,5)=0D0
68648   680 CONTINUE
68649  
68650 C...Set up for parton shower evolution from jets.
68651       IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN
68652         K(NSAV+1,1)=3
68653         K(NSAV+2,1)=3
68654         K(NSAV+3,1)=3
68655         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
68656         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
68657         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
68658         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
68659         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
68660         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
68661         MSTJ(92)=-(NSAV+1)
68662       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN
68663         K(NSAV+2,1)=3
68664         K(NSAV+3,1)=3
68665         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
68666         K(NSAV+2,5)=MSTU(5)*(NSAV+3)
68667         K(NSAV+3,4)=MSTU(5)*(NSAV+2)
68668         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
68669         MSTJ(92)=NSAV+2
68670       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
68671      &  IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN
68672         K(NSAV+1,1)=3
68673         K(NSAV+2,1)=3
68674         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
68675         K(NSAV+1,5)=MSTU(5)*(NSAV+2)
68676         K(NSAV+2,4)=MSTU(5)*(NSAV+1)
68677         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
68678         MSTJ(92)=NSAV+1
68679       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
68680      &  IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN
68681         MSTJ(92)=NSAV+1
68682       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21)
68683      &  THEN
68684         K(NSAV+1,1)=3
68685         K(NSAV+2,1)=3
68686         K(NSAV+3,1)=3
68687         KCP=PYCOMP(K(NSAV+1,2))
68688         KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2))
68689         JCON=4
68690         IF(KQP.LT.0) JCON=5
68691         K(NSAV+1,JCON)=MSTU(5)*(NSAV+2)
68692         K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1)
68693         K(NSAV+2,JCON)=MSTU(5)*(NSAV+3)
68694         K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2)
68695         MSTJ(92)=NSAV+1
68696       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN
68697         K(NSAV+1,1)=3
68698         K(NSAV+3,1)=3
68699         K(NSAV+1,4)=MSTU(5)*(NSAV+3)
68700         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
68701         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
68702         K(NSAV+3,5)=MSTU(5)*(NSAV+1)
68703         MSTJ(92)=NSAV+1
68704       ENDIF
68705  
68706 C...Mark decayed particle; special option for B-Bbar mixing.
68707       IF(K(IP,1).EQ.5) K(IP,1)=15
68708       IF(K(IP,1).LE.10) K(IP,1)=11
68709       IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12
68710       K(IP,4)=NSAV+1
68711       K(IP,5)=N
68712  
68713       RETURN
68714       END
68715  
68716  
68717 C*********************************************************************
68718  
68719 C...PYDCYK
68720 C...Handles flavour production in the decay of unstable particles
68721 C...and small string clusters.
68722  
68723       SUBROUTINE PYDCYK(KFL1,KFL2,KFL3,KF)
68724  
68725 C...Double precision and integer declarations.
68726       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
68727       IMPLICIT INTEGER(I-N)
68728       INTEGER PYK,PYCHGE,PYCOMP
68729 C...Commonblocks.
68730       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
68731       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
68732       SAVE /PYDAT1/,/PYDAT2/
68733  
68734  
68735 C.. Call PYKFDI directly if no popcorn option is on
68736       IF(MSTJ(12).LT.2) THEN
68737          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
68738          MSTU(124)=KFL3
68739          RETURN
68740       ENDIF
68741  
68742       KFL3=0
68743       KF=0
68744       IF(KFL1.EQ.0) RETURN
68745       KF1A=IABS(KFL1)
68746       KF2A=IABS(KFL2)
68747  
68748       NSTO=130
68749       NMAX=MIN(MSTU(125),10)
68750  
68751 C.. Identify rank 0 cluster qq
68752       IRANK=1
68753       IF(KF1A.GT.10.AND.KF1A.LT.10000) IRANK=0
68754  
68755       IF(KF2A.GT.0)THEN
68756 C.. Join jets: Fails if store not empty
68757          IF(MSTU(121).GT.0) THEN
68758             MSTU(121)=0
68759             RETURN
68760          ENDIF
68761          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
68762       ELSEIF(KF1A.GT.10.AND.MSTU(121).GT.0)THEN
68763 C.. Pick popcorn meson from store, return same qq, decrease store
68764          KF=MSTU(NSTO+MSTU(121))
68765          KFL3=-KFL1
68766          MSTU(121)=MSTU(121)-1
68767       ELSE
68768 C.. Generate new flavour. Then done if no diquark is generated
68769   100    CALL PYKFDI(KFL1,0,KFL3,KF)
68770          IF(MSTU(121).EQ.-1) GOTO 100
68771          MSTU(124)=KFL3
68772          IF(KF.EQ.0.OR.IABS(KFL3).LE.10) RETURN
68773  
68774 C.. Simple case if no dynamical popcorn suppressions are considered
68775          IF(MSTJ(12).LT.4) THEN
68776             IF(MSTU(121).EQ.0) RETURN
68777             NMES=1
68778             KFPREV=-KFL3
68779             CALL PYKFDI(KFPREV,0,KFL3,KFM)
68780 C.. Due to eta+eta' suppr., a qq->M+qq attempt might end as qq->B+q
68781             IF(IABS(KFL3).LE.10)THEN
68782                KFL3=-KFPREV
68783                RETURN
68784             ENDIF
68785             GOTO 120
68786          ENDIF
68787  
68788 C test output qq against fake Gamma, then return if no popcorn.
68789          GB=2D0
68790          IF(IRANK.NE.0)THEN
68791             CALL PYZDIS(1,2103,5D0,Z)
68792             GB=5D0*(1D0-Z)/Z
68793             IF(1D0-PARF(192)**GB.LT.PYR(0)) THEN
68794                MSTU(121)=0
68795                GOTO 100
68796             ENDIF
68797          ENDIF
68798          IF(MSTU(121).EQ.0) RETURN
68799  
68800 C..Set store size memory. Pick fake dynamical variables of qq.
68801          NMES=MSTU(121)
68802          CALL PYPTDI(1,PX3,PY3)
68803          X=1D0
68804          POPM=0D0
68805          G=GB
68806          POPG=GB
68807  
68808 C.. Pick next popcorn meson, test with fake dynamical variables
68809   110    KFPREV=-KFL3
68810          PX1=-PX3
68811          PY1=-PY3
68812          CALL PYKFDI(KFPREV,0,KFL3,KFM)
68813          IF(MSTU(121).EQ.-1) GOTO 100
68814          CALL PYPTDI(KFL3,PX3,PY3)
68815          PM=PYMASS(KFM)**2+(PX1+PX3)**2+(PY1+PY3)**2
68816          CALL PYZDIS(KFPREV,KFL3,PM,Z)
68817          G=(1D0-Z)*(G+PM/Z)
68818          X=(1D0-Z)*X
68819  
68820          PTST=1D0
68821          GTST=1D0
68822          RTST=PYR(0)
68823          IF(MSTJ(12).GT.4)THEN
68824             POPMN=SQRT((1D0-X)*(G/X-GB))
68825             POPM=POPM+PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
68826             PTST=EXP((POPM-POPMN)*PARF(193))
68827             POPM=POPMN
68828          ENDIF
68829          IF(IRANK.NE.0)THEN
68830             POPGN=X*GB
68831             GTST=(1D0-PARF(192)**POPGN)/(1D0-PARF(192)**POPG)
68832             POPG=POPGN
68833          ENDIF
68834          IF(RTST.GT.PTST*GTST)THEN
68835             MSTU(121)=0
68836             IF(RTST.GT.PTST) MSTU(121)=-1
68837             GOTO 100
68838          ENDIF
68839  
68840 C.. Store meson
68841   120    IF(NMES.LE.NMAX) MSTU(NSTO+MSTU(121)+1)=KFM
68842          IF(MSTU(121).GT.0) GOTO 110
68843  
68844 C.. Test accepted system size. If OK set global popcorn size variable.
68845          IF(NMES.GT.NMAX)THEN
68846             KF=0
68847             KFL3=0
68848             RETURN
68849          ENDIF
68850          MSTU(121)=NMES
68851       ENDIF
68852  
68853       RETURN
68854       END
68855  
68856 C********************************************************************
68857  
68858 C...PYKFDI
68859 C...Generates a new flavour pair and combines off a hadron
68860  
68861       SUBROUTINE PYKFDI(KFL1,KFL2,KFL3,KF)
68862  
68863 C...Double precision and integer declarations.
68864       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
68865       IMPLICIT INTEGER(I-N)
68866       INTEGER PYK,PYCHGE,PYCOMP
68867 C...Commonblocks.
68868       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
68869       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
68870       SAVE /PYDAT1/,/PYDAT2/
68871 C...Local arrays.
68872       DIMENSION PD(7)
68873  
68874       IF(MSTU(123).EQ.0.AND.MSTJ(12).GE.0)  CALL PYKFIN
68875  
68876 C...Default flavour values. Input consistency checks.
68877       KF1A=IABS(KFL1)
68878       KF2A=IABS(KFL2)
68879       KFL3=0
68880       KF=0
68881       IF(KF1A.EQ.0) RETURN
68882       IF(KF2A.NE.0)THEN
68883         IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN
68884         IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN
68885         IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN
68886       ENDIF
68887  
68888 C...Check if tabulated flavour probabilities are to be used.
68889       IF(MSTJ(15).EQ.1) THEN
68890         IF(MSTJ(12).GE.5)  CALL PYERRM(29,
68891      &        '(PYKFDI:) Sorry, option MSTJ(15)=1 not available' //
68892      &        ' together with MSTJ(12)>=5 modification')
68893         KTAB1=-1
68894         IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A
68895         KFL1A=MOD(KF1A/1000,10)
68896         KFL1B=MOD(KF1A/100,10)
68897         KFL1S=MOD(KF1A,10)
68898         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4)
68899      &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2
68900         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1
68901         IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A
68902         KTAB2=0
68903         IF(KF2A.NE.0) THEN
68904           KTAB2=-1
68905           IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A
68906           KFL2A=MOD(KF2A/1000,10)
68907           KFL2B=MOD(KF2A/100,10)
68908           KFL2S=MOD(KF2A,10)
68909           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4)
68910      &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2
68911           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1
68912         ENDIF
68913         IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 140
68914       ENDIF
68915  
68916 C.. Recognize rank 0 diquark case
68917   100 IRANK=1
68918       KFDIQ=MAX(KF1A,KF2A)
68919       IF(KFDIQ.GT.10.AND.KFDIQ.LT.10000) IRANK=0
68920  
68921 C.. Join two flavours to meson or baryon. Test for popcorn.
68922       IF(KF2A.GT.0)THEN
68923         MBARY=0
68924         IF(KFDIQ.GT.10) THEN
68925           IF(IRANK.EQ.0.AND.MSTJ(12).LT.5)
68926      &         CALL PYNMES(KFDIQ)
68927           IF(MSTU(121).NE.0) THEN
68928              MSTU(121)=0
68929              RETURN
68930           ENDIF
68931           MBARY=2
68932         ENDIF
68933         KFQOLD=KF1A
68934         KFQVER=KF2A
68935         GOTO 130
68936       ENDIF
68937  
68938 C.. Separate incoming flavours, curtain flavour consistency check
68939       KFIN=KFL1
68940       KFQOLD=KF1A
68941       KFQPOP=KF1A/10000
68942       IF(KF1A.GT.10)THEN
68943          KFIN=-KFL1
68944          KFL1A=MOD(KF1A/1000,10)
68945          KFL1B=MOD(KF1A/100,10)
68946          IF(IRANK.EQ.0)THEN
68947             QAWT=1D0
68948             IF(KFL1A.GE.3) QAWT=PARF(136+KFL1A/4)
68949             IF(KFL1B.GE.3) QAWT=QAWT/PARF(136+KFL1B/4)
68950             KFQPOP=KFL1A+(KFL1B-KFL1A)*INT(1D0/(QAWT+1D0)+PYR(0))
68951          ENDIF
68952          IF(KFQPOP.NE.KFL1B.AND.KFQPOP.NE.KFL1A) THEN
68953              MSTU(121)=0
68954              RETURN
68955           ENDIF
68956          KFQOLD=KFL1A+KFL1B-KFQPOP
68957       ENDIF
68958  
68959 C...Meson/baryon choice. Set number of mesons if starting a popcorn
68960 C...system.
68961   110 MBARY=0
68962       IF(KF1A.LE.10.AND.MSTJ(12).GT.0)THEN
68963          IF(MSTU(121).EQ.-1.OR.(1D0+PARJ(1))*PYR(0).GT.1D0)THEN
68964             MBARY=1
68965             CALL PYNMES(0)
68966          ENDIF
68967       ELSEIF(KF1A.GT.10)THEN
68968          MBARY=2
68969          IF(IRANK.EQ.0) CALL PYNMES(KF1A)
68970          IF(MSTU(121).GT.0) MBARY=-1
68971       ENDIF
68972  
68973 C..x->H+q: Choose single vertex quark. Jump to form hadron.
68974       IF(MBARY.EQ.0.OR.MBARY.EQ.2)THEN
68975          KFQVER=1+INT((2D0+PARJ(2))*PYR(0))
68976          KFL3=ISIGN(KFQVER,-KFIN)
68977          GOTO 130
68978       ENDIF
68979  
68980 C..x->H+qq: (IDW=proper PARF position for diquark weights)
68981       IDW=160
68982       IF(MBARY.EQ.1)THEN
68983          IF(MSTU(121).EQ.0) IDW=150
68984          SQWT=PARF(IDW+1)
68985          IF(MSTU(121).GT.0) SQWT=SQWT*PARF(135)*PARF(138)**MSTU(121)
68986          KFQPOP=1+INT((2D0+SQWT)*PYR(0))
68987 C..   Shift to s-curtain parameters if needed
68988          IF(KFQPOP.GE.3.AND.MSTJ(12).GE.5)THEN
68989             PARF(194)=PARF(138)*PARF(139)
68990             PARF(193)=PARJ(8)+PARJ(9)
68991          ENDIF
68992       ENDIF
68993  
68994 C.. x->H+qq: Get vertex quark
68995       IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
68996          IDW=MSTU(122)
68997          MSTU(121)=MSTU(121)-1
68998          IF(IDW.EQ.170) THEN
68999             IF(MSTU(121).EQ.0)THEN
69000                IPOS=3*MIN(KFQPOP-1,2)+MIN(KFQOLD-1,2)
69001             ELSE
69002                IPOS=3*3+3*MAX(0,MIN(KFQPOP-2,1))+MIN(KFQOLD-1,2)
69003             ENDIF
69004          ELSE
69005             IF(MSTU(121).EQ.0)THEN
69006                IPOS=3*5+5*MIN(KFQPOP-1,3)+MIN(KFQOLD-1,4)
69007             ELSE
69008                IPOS=3*5+5*4+MIN(KFQOLD-1,4)
69009             ENDIF
69010          ENDIF
69011          IPOS=200+30*IPOS+1
69012  
69013          IMES=-1
69014          RMES=PYR(0)*PARF(194)
69015   120    IMES=IMES+1
69016          RMES=RMES-PARF(IPOS+IMES)
69017          IF(IMES.EQ.30) THEN
69018             MSTU(121)=-1
69019             KF=-111
69020             RETURN
69021          ENDIF
69022          IF(RMES.GT.0D0) GOTO 120
69023          KMUL=IMES/5
69024          KFJ=2*KMUL+1
69025          IF(KMUL.EQ.2) KFJ=10003
69026          IF(KMUL.EQ.3) KFJ=10001
69027          IF(KMUL.EQ.4) KFJ=20003
69028          IF(KMUL.EQ.5) KFJ=5
69029          IDIAG=0
69030          KFQVER=MOD(IMES,5)+1
69031          IF(KFQVER.GE.KFQOLD) KFQVER=KFQVER+1
69032          IF(KFQVER.GT.3)THEN
69033             IDIAG=KFQVER-3
69034             KFQVER=KFQOLD
69035          ENDIF
69036       ELSE
69037          IF(MBARY.EQ.-1) IDW=170
69038          SQWT=PARF(IDW+2)
69039          IF(KFQPOP.EQ.3) SQWT=PARF(IDW+3)
69040          IF(KFQPOP.GT.3) SQWT=PARF(IDW+3)*(1D0/PARF(IDW+5)+1D0)/2D0
69041          KFQVER=MIN(3,1+INT((2D0+SQWT)*PYR(0)))
69042          IF(KFQPOP.LT.3.AND.KFQVER.LT.3)THEN
69043             KFQVER=KFQPOP
69044             IF(PYR(0).GT.PARF(IDW+4)) KFQVER=3-KFQPOP
69045          ENDIF
69046       ENDIF
69047  
69048 C..x->H+qq: form outgoing diquark with KFQPOP flag at 10000-pos
69049       KFLDS=3
69050       IF(KFQPOP.NE.KFQVER)THEN
69051          SWT=PARF(IDW+7)
69052          IF(KFQVER.EQ.3) SWT=PARF(IDW+6)
69053          IF(KFQPOP.GE.3) SWT=PARF(IDW+5)
69054          IF((1D0+SWT)*PYR(0).LT.1D0) KFLDS=1
69055       ENDIF
69056       KFDIQ=900*MAX(KFQVER,KFQPOP)+100*(KFQVER+KFQPOP)+KFLDS
69057      &      +10000*KFQPOP
69058       KFL3=ISIGN(KFDIQ,KFIN)
69059  
69060 C..x->M+y: flavour for meson.
69061   130 IF(MBARY.LE.0)THEN
69062         KFLA=MAX(KFQOLD,KFQVER)
69063         KFLB=MIN(KFQOLD,KFQVER)
69064         KFS=ISIGN(1,KFL1)
69065         IF(KFLA.NE.KFQOLD) KFS=-KFS
69066 C... Form meson, with spin and flavour mixing for diagonal states.
69067         IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
69068            IF(IDIAG.GT.0) KF=110*IDIAG+KFJ
69069            IF(IDIAG.EQ.0) KF=(100*KFLA+10*KFLB+KFJ)*KFS*(-1)**KFLA
69070            RETURN
69071         ENDIF
69072         IF(KFLA.LE.2) KMUL=INT(PARJ(11)+PYR(0))
69073         IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+PYR(0))
69074         IF(KFLA.GE.4) KMUL=INT(PARJ(13)+PYR(0))
69075         IF(KMUL.EQ.0.AND.PARJ(14).GT.0D0)THEN
69076           IF(PYR(0).LT.PARJ(14)) KMUL=2
69077         ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0D0)THEN
69078           RMUL=PYR(0)
69079           IF(RMUL.LT.PARJ(15)) KMUL=3
69080           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4
69081           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5
69082         ENDIF
69083         KFLS=3
69084         IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
69085         IF(KMUL.EQ.5) KFLS=5
69086         IF(KFLA.NE.KFLB)THEN
69087           KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA
69088         ELSE
69089           RMIX=PYR(0)
69090           IMIX=2*KFLA+10*KMUL
69091           IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+
69092      &    INT(RMIX+PARF(IMIX)))+KFLS
69093           IF(KFLA.GE.4) KF=110*KFLA+KFLS
69094         ENDIF
69095         IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF)
69096         IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF)
69097  
69098 C..Optional extra suppression of eta and eta'.
69099 C..Allow shift to qq->B+q in old version (set IRANK to 0)
69100         IF(KF.EQ.221.OR.KF.EQ.331)THEN
69101            IF(PYR(0).GT.PARJ(25+KF/300))THEN
69102               IF(KF2A.GT.0) GOTO 130
69103               IF(MSTJ(12).LT.4) IRANK=0
69104               GOTO 110
69105            ENDIF
69106         ENDIF
69107         MSTU(121)=0
69108  
69109 C.. x->B+y: Flavour for baryon
69110       ELSE
69111         KFLA=KFQVER
69112         IF(KF1A.LE.10) KFLA=KFQOLD
69113         KFLB=MOD(KFDIQ/1000,10)
69114         KFLC=MOD(KFDIQ/100,10)
69115         KFLDS=MOD(KFDIQ,10)
69116         KFLD=MAX(KFLA,KFLB,KFLC)
69117         KFLF=MIN(KFLA,KFLB,KFLC)
69118         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
69119  
69120 C...  SU(6) factors for formation of baryon.
69121         KBARY=3
69122         KDMAX=5
69123         KFLG=KFLB
69124         IF(KFLB.NE.KFLC)THEN
69125            KBARY=2*KFLDS-1
69126            KDMAX=1+KFLDS/2
69127            IF(KFLB.GT.2) KDMAX=KDMAX+2
69128         ENDIF
69129         IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC)THEN
69130            KBARY=KBARY+1
69131            KFLG=KFLA
69132         ENDIF
69133  
69134         SU6MAX=PARF(140+KDMAX)
69135         SU6DEC=PARJ(18)
69136         SU6S  =PARF(146)
69137         IF(MSTJ(12).GE.5.AND.IRANK.EQ.0) THEN
69138            SU6MAX=1D0
69139            SU6DEC=1D0
69140            SU6S  =1D0
69141         ENDIF
69142         SU6OCT=PARF(60+KBARY)
69143         IF(KFLG.GT.MAX(KFLA+KFLB-KFLG,2))THEN
69144            SU6OCT=SU6OCT*4*SU6S/(3*SU6S+1)
69145            IF(KBARY.EQ.2) SU6OCT=PARF(60+KBARY)*4/(3*SU6S+1)
69146         ELSE
69147            IF(KBARY.EQ.6) SU6OCT=SU6OCT*(3+SU6S)/(3*SU6S+1)
69148         ENDIF
69149         SU6WT=SU6OCT+SU6DEC*PARF(70+KBARY)
69150  
69151 C..   SU(6) test. Old options enforce new baryon if q->B+qq is rejected.
69152         IF(SU6WT.LT.PYR(0)*SU6MAX.AND.KF2A.EQ.0)THEN
69153            MSTU(121)=0
69154            IF(MSTJ(12).LE.2.AND.MBARY.EQ.1) MSTU(121)=-1
69155            GOTO 110
69156         ENDIF
69157  
69158 C.. Form baryon. Distinguish Lambda- and Sigmalike baryons.
69159         KSIG=1
69160         KFLS=2
69161         IF(SU6WT*PYR(0).GT.SU6OCT) KFLS=4
69162         IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF)THEN
69163           KSIG=KFLDS/3
69164           IF(KFLA.NE.KFLD) KSIG=INT(3*SU6S/(3*SU6S+KFLDS**2)+PYR(0))
69165         ENDIF
69166         KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1)
69167         IF(KSIG.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1)
69168       ENDIF
69169       RETURN
69170  
69171 C...Use tabulated probabilities to select new flavour and hadron.
69172   140 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN
69173         KT3L=1
69174         KT3U=6
69175       ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN
69176         KT3L=1
69177         KT3U=6
69178       ELSEIF(KTAB2.EQ.0) THEN
69179         KT3L=1
69180         KT3U=22
69181       ELSE
69182         KT3L=KTAB2
69183         KT3U=KTAB2
69184       ENDIF
69185       RFL=0D0
69186       DO 160 KTS=0,2
69187         DO 150 KT3=KT3L,KT3U
69188           RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3)
69189   150   CONTINUE
69190   160 CONTINUE
69191       RFL=PYR(0)*RFL
69192       DO 180 KTS=0,2
69193         KTABS=KTS
69194         DO 170 KT3=KT3L,KT3U
69195           KTAB3=KT3
69196           RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3)
69197           IF(RFL.LE.0D0) GOTO 190
69198   170   CONTINUE
69199   180 CONTINUE
69200   190 CONTINUE
69201  
69202 C...Reconstruct flavour of produced quark/diquark.
69203       IF(KTAB3.LE.6) THEN
69204         KFL3A=KTAB3
69205         KFL3B=0
69206         KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13))
69207       ELSE
69208         KFL3A=1
69209         IF(KTAB3.GE.8) KFL3A=2
69210         IF(KTAB3.GE.11) KFL3A=3
69211         IF(KTAB3.GE.16) KFL3A=4
69212         KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2
69213         KFL3=1000*KFL3A+100*KFL3B+1
69214         IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3=
69215      &  KFL3+2
69216         KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1))
69217       ENDIF
69218  
69219 C...Reconstruct meson code.
69220       IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR.
69221      &KFL3B.NE.0)) THEN
69222         RFL=PYR(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
69223      &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS))
69224         KF=110+2*KTABS+1
69225         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1
69226         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
69227      &  25*KTABS)) KF=330+2*KTABS+1
69228       ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN
69229         KFLA=MAX(KTAB1,KTAB3)
69230         KFLB=MIN(KTAB1,KTAB3)
69231         KFS=ISIGN(1,KFL1)
69232         IF(KFLA.NE.KF1A) KFS=-KFS
69233         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
69234       ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN
69235         KFS=ISIGN(1,KFL1)
69236         IF(KFL1A.EQ.KFL3A) THEN
69237           KFLA=MAX(KFL1B,KFL3B)
69238           KFLB=MIN(KFL1B,KFL3B)
69239           IF(KFLA.NE.KFL1B) KFS=-KFS
69240         ELSEIF(KFL1A.EQ.KFL3B) THEN
69241           KFLA=KFL3A
69242           KFLB=KFL1B
69243           KFS=-KFS
69244         ELSEIF(KFL1B.EQ.KFL3A) THEN
69245           KFLA=KFL1A
69246           KFLB=KFL3B
69247         ELSEIF(KFL1B.EQ.KFL3B) THEN
69248           KFLA=MAX(KFL1A,KFL3A)
69249           KFLB=MIN(KFL1A,KFL3A)
69250           IF(KFLA.NE.KFL1A) KFS=-KFS
69251         ELSE
69252           CALL PYERRM(2,'(PYKFDI:) no matching flavours for qq -> qq')
69253           GOTO 100
69254         ENDIF
69255         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
69256  
69257 C...Reconstruct baryon code.
69258       ELSE
69259         IF(KTAB1.GE.7) THEN
69260           KFLA=KFL3A
69261           KFLB=KFL1A
69262           KFLC=KFL1B
69263         ELSE
69264           KFLA=KFL1A
69265           KFLB=KFL3A
69266           KFLC=KFL3B
69267         ENDIF
69268         KFLD=MAX(KFLA,KFLB,KFLC)
69269         KFLF=MIN(KFLA,KFLB,KFLC)
69270         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
69271         IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1)
69272         IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1)
69273       ENDIF
69274  
69275 C...Check that constructed flavour code is an allowed one.
69276       IF(KFL2.NE.0) KFL3=0
69277       KC=PYCOMP(KF)
69278       IF(KC.EQ.0) THEN
69279         CALL PYERRM(2,'(PYKFDI:) user-defined flavour probabilities '//
69280      &  'failed')
69281         GOTO 100
69282       ENDIF
69283  
69284       RETURN
69285       END
69286  
69287 C*********************************************************************
69288  
69289 C...PYNMES
69290 C...Generates number of popcorn mesons and stores some relevant
69291 C...parameters.
69292  
69293       SUBROUTINE PYNMES(KFDIQ)
69294  
69295 C...Double precision and integer declarations.
69296       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69297       IMPLICIT INTEGER(I-N)
69298       INTEGER PYK,PYCHGE,PYCOMP
69299 C...Commonblocks.
69300       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69301       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69302       SAVE /PYDAT1/,/PYDAT2/
69303  
69304       MSTU(121)=0
69305       IF(MSTJ(12).LT.2) RETURN
69306  
69307 C..Old version: Get 1 or 0 popcorn mesons
69308       IF(MSTJ(12).LT.5)THEN
69309          POPWT=PARF(131)
69310          IF(KFDIQ.NE.0) THEN
69311             KFDIQA=IABS(KFDIQ)
69312             KFA=MOD(KFDIQA/1000,10)
69313             KFB=MOD(KFDIQA/100,10)
69314             KFS=MOD(KFDIQA,10)
69315             POPWT=PARF(132)
69316             IF(KFA.EQ.3) POPWT=PARF(133)
69317             IF(KFB.EQ.3) POPWT=PARF(134)
69318             IF(KFS.EQ.1) POPWT=POPWT*SQRT(PARJ(4))
69319          ENDIF
69320          MSTU(121)=INT(POPWT/(1D0+POPWT)+PYR(0))
69321          RETURN
69322       ENDIF
69323  
69324 C..New version: Store popcorn- or rank 0 diquark parameters
69325       MSTU(122)=170
69326       PARF(193)=PARJ(8)
69327       PARF(194)=PARF(139)
69328       IF(KFDIQ.NE.0) THEN
69329          MSTU(122)=180
69330          PARF(193)=PARJ(10)
69331          PARF(194)=PARF(140)
69332       ENDIF
69333       IF(PARF(194).LT.1D-5.OR.PARF(194).GT.1D0-1D-5) THEN
69334          IF(PARF(194).GT.1D0-1D-5) CALL PYERRM(9,
69335      &        '(PYNMES:) Neglecting too large popcorn possibility')
69336          RETURN
69337       ENDIF
69338  
69339 C..New version: Get number of popcorn mesons
69340   100 RTST=PYR(0)
69341       MSTU(121)=-1
69342   110 MSTU(121)=MSTU(121)+1
69343       RTST=RTST/PARF(194)
69344       IF(RTST.LT.1D0) GOTO 110
69345       IF(KFDIQ.EQ.0.AND.PYR(0)*(2D0+PARF(135)*PARF(161)).GT.
69346      &     (2D0+PARF(135)*PARF(161)*PARF(138)**MSTU(121))) GOTO 100
69347       RETURN
69348       END
69349  
69350 C***************************************************************
69351  
69352 C...PYKFIN
69353 C...Precalculates a set of diquark and popcorn weights.
69354  
69355       SUBROUTINE PYKFIN
69356  
69357 C...Double precision and integer declarations.
69358       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69359       IMPLICIT INTEGER(I-N)
69360       INTEGER PYK,PYCHGE,PYCOMP
69361 C...Commonblocks.
69362       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69363       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69364       SAVE /PYDAT1/,/PYDAT2/
69365  
69366       DIMENSION SU6(12),SU6M(7),QBB(7),QBM(7),DMB(14)
69367  
69368  
69369       MSTU(123)=1
69370 C..Diquark indices for dimensional variables
69371       IUD1=1
69372       IUU1=2
69373       IUS0=3
69374       ISU0=4
69375       IUS1=5
69376       ISU1=6
69377       ISS1=7
69378  
69379 C.. *** SU(6) factors **
69380 C..Modify with decuplet- (and Sigma/Lambda-) suppression.
69381       PARF(146)=1D0
69382       IF(MSTJ(12).GE.5) PARF(146)=3D0*PARJ(18)/(2D0*PARJ(18)+1D0)
69383       IF(PARJ(18).LT.1D0-1D-5.AND.MSTJ(12).LT.5) CALL PYERRM(9,
69384      &     '(PYKFIN:) PARJ(18)<1 combined with 0<MSTJ(12)<5 option')
69385       DO 100 I=1,6
69386          SU6(I)=PARF(60+I)
69387          SU6(6+I)=SU6(I)*4*PARF(146)/(3*PARF(146)+1)
69388   100 CONTINUE
69389       SU6(8)=SU6(2)*4/(3*PARF(146)+1)
69390       SU6(6)=SU6(6)*(3+PARF(146))/(3*PARF(146)+1)
69391       DO 110 I=1,6
69392          SU6(I)=SU6(I)+PARJ(18)*PARF(70+I)
69393          SU6(6+I)=SU6(6+I)+PARJ(18)*PARF(70+I)
69394   110 CONTINUE
69395  
69396 C..SU(6)max            q       q'     s,c,b
69397       SU6MUD    =MAX(SU6(1) ,       SU6(8) )
69398       SU6M(IUD1)=MAX(SU6(5) ,       SU6(12))
69399       SU6M(ISU0)=MAX(SU6(7) ,SU6(2),SU6MUD )
69400       SU6M(IUU1)=MAX(SU6(3) ,SU6(4),SU6(10))
69401       SU6M(ISU1)=MAX(SU6(11),SU6(6),SU6M(IUD1))
69402       SU6M(IUS0)=SU6M(ISU0)
69403       SU6M(ISS1)=SU6M(IUU1)
69404       SU6M(IUS1)=SU6M(ISU1)
69405  
69406 C..Store SU(6)max, in order UD0,UD1,US0,US1,QQ1
69407       PARF(141)=SU6MUD
69408       PARF(142)=SU6M(IUD1)
69409       PARF(143)=SU6M(ISU0)
69410       PARF(144)=SU6M(ISU1)
69411       PARF(145)=SU6M(ISS1)
69412  
69413 C..diquark SU(6) survival =
69414 C..sum over quark (quark tunnel weight)*(SU(6)).
69415       PUD0=(2D0*SU6(1)+PARJ(2)*SU6(8))
69416       DMB(ISU0)=(SU6(7)+SU6(2)+PARJ(2)*SU6(1))/PUD0
69417       DMB(IUS0)=DMB(ISU0)
69418       DMB(ISS1)=(2D0*SU6(4)+PARJ(2)*SU6(3))/PUD0
69419       DMB(IUU1)=(SU6(3)+SU6(4)+PARJ(2)*SU6(10))/PUD0
69420       DMB(ISU1)=(SU6(11)+SU6(6)+PARJ(2)*SU6(5))/PUD0
69421       DMB(IUS1)=DMB(ISU1)
69422       DMB(IUD1)=(2D0*SU6(5)+PARJ(2)*SU6(12))/PUD0
69423  
69424 C.. *** Tunneling factors for Diquark production***
69425 C.. T: half a curtain pair = sqrt(curtain pair factor)
69426       IF(MSTJ(12).GE.5) THEN
69427          PMUD0=PYMASS(2101)
69428          PMUD1=PYMASS(2103)-PMUD0
69429          PMUS0=PYMASS(3201)-PMUD0
69430          PMUS1=PYMASS(3203)-PMUS0-PMUD0
69431          PMSS1=PYMASS(3303)-PMUS0-PMUD0
69432          QBB(ISU0)=EXP(-(PARJ(9)+PARJ(8))*PMUS0-PARJ(9)*PARF(191))
69433          QBB(IUS0)=EXP(-PARJ(8)*PMUS0)
69434          QBB(ISS1)=EXP(-(PARJ(9)+PARJ(8))*PMSS1)*QBB(ISU0)
69435          QBB(IUU1)=EXP(-PARJ(8)*PMUD1)
69436          QBB(ISU1)=EXP(-(PARJ(9)+PARJ(8))*PMUS1)*QBB(ISU0)
69437          QBB(IUS1)=EXP(-PARJ(8)*PMUS1)*QBB(IUS0)
69438          QBB(IUD1)=QBB(IUU1)
69439       ELSE
69440          PAR2M=SQRT(PARJ(2))
69441          PAR3M=SQRT(PARJ(3))
69442          PAR4M=SQRT(PARJ(4))
69443          QBB(ISU0)=PAR2M*PAR3M
69444          QBB(IUS0)=PAR3M
69445          QBB(ISS1)=PAR2M*PARJ(3)*PAR4M
69446          QBB(IUU1)=PAR4M
69447          QBB(ISU1)=PAR4M*QBB(ISU0)
69448          QBB(IUS1)=PAR4M*QBB(IUS0)
69449          QBB(IUD1)=PAR4M
69450       ENDIF
69451  
69452 C.. tau: spin*(vertex factor)*(T = half-curtain factor)
69453       QBM(ISU0)=QBB(ISU0)
69454       QBM(IUS0)=PARJ(2)*QBB(IUS0)
69455       QBM(ISS1)=PARJ(2)*6D0*QBB(ISS1)
69456       QBM(IUU1)=6D0*QBB(IUU1)
69457       QBM(ISU1)=3D0*QBB(ISU1)
69458       QBM(IUS1)=PARJ(2)*3D0*QBB(IUS1)
69459       QBM(IUD1)=3D0*QBB(IUD1)
69460  
69461 C.. Combine T and tau to diquark weight for q-> B+B+..
69462       DO 120 I=1,7
69463          QBB(I)=QBB(I)*QBM(I)
69464   120 CONTINUE
69465  
69466       IF(MSTJ(12).GE.5)THEN
69467 C..New version: tau  for rank 0 diquark.
69468          DMB(7+ISU0)=EXP(-PARJ(10)*PMUS0)
69469          DMB(7+IUS0)=PARJ(2)*DMB(7+ISU0)
69470          DMB(7+ISS1)=6D0*PARJ(2)*EXP(-PARJ(10)*PMSS1)*DMB(7+ISU0)
69471          DMB(7+IUU1)=6D0*EXP(-PARJ(10)*PMUD1)
69472          DMB(7+ISU1)=3D0*EXP(-PARJ(10)*PMUS1)*DMB(7+ISU0)
69473          DMB(7+IUS1)=PARJ(2)*DMB(7+ISU1)
69474          DMB(7+IUD1)=DMB(7+IUU1)/2D0
69475  
69476 C..New version: curtain flavour ratios.
69477 C.. s/u for q->B+M+...
69478 C.. s/u for rank 0 diquark: su -> ...M+B+...
69479 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
69480          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
69481          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
69482          WU=1D0+DMB(7+IUD1)+DMB(7+IUS0)+DMB(7+IUS1)+DMB(7+IUU1)
69483          PARF(136)=(2D0*(DMB(7+ISU0)+DMB(7+ISU1))+DMB(7+ISS1))/WU
69484          PARF(137)=(DMB(7+ISU0)+DMB(7+ISU1))*
69485      &        (2D0+DMB(7+ISS1)/(2D0*DMB(7+ISU1)))/WU
69486       ELSE
69487 C..Old version: reset unused rank 0 diquark weights and
69488 C..             unused diquark SU(6) survival weights
69489          DO 130 I=1,7
69490             IF(MSTJ(12).LT.3) DMB(I)=1D0
69491             DMB(7+I)=1D0
69492   130    CONTINUE
69493  
69494 C..Old version: Shuffle PARJ(7) into tau
69495          QBM(IUS0)=QBM(IUS0)*PARJ(7)
69496          QBM(ISS1)=QBM(ISS1)*PARJ(7)
69497          QBM(IUS1)=QBM(IUS1)*PARJ(7)
69498  
69499 C..Old version: curtain flavour ratios.
69500 C.. s/u for q->B+M+...
69501 C.. s/u for rank 0 diquark: su -> ...M+B+...
69502 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
69503          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
69504          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
69505          PARF(136)=PARF(135)*PARJ(6)*QBM(ISU0)/QBM(IUS0)
69506          PARF(137)=(1D0+QBM(IUD1))*(2D0+QBM(IUS0))/WU
69507       ENDIF
69508  
69509 C..Combine diquark SU(6) survival, SU(6)max, tau and T into factors for:
69510 C..  rank0 D->M+B+..; D->M+B+..; q->B+M+..; q->B+B..
69511       DO 140 I=1,7
69512          DMB(7+I)=DMB(7+I)*DMB(I)
69513          DMB(I)=DMB(I)*QBM(I)
69514          QBM(I)=QBM(I)*SU6M(I)/SU6MUD
69515          QBB(I)=QBB(I)*SU6M(I)/SU6MUD
69516   140 CONTINUE
69517  
69518 C.. *** Popcorn factors ***
69519  
69520       IF(MSTJ(12).LT.5)THEN
69521 C.. Old version: Resulting popcorn weights.
69522          PARF(138)=PARJ(6)
69523          WS=PARF(135)*PARF(138)
69524          WQ=WU*PARJ(5)/3D0
69525          PARF(132)=WQ*QBM(IUD1)/QBB(IUD1)
69526          PARF(133)=WQ*
69527      &        (QBM(IUS1)/QBB(IUS1)+WS*QBM(ISU1)/QBB(ISU1))/2D0
69528          PARF(134)=WQ*WS*QBM(ISS1)/QBB(ISS1)
69529          PARF(131)=WQ*(1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1)+
69530      &                 WS*(QBM(ISU0)+QBM(ISU1)+QBM(ISS1)/2D0))/
69531      &        (1D0+QBB(IUD1)+QBB(IUU1)+
69532      &        2D0*(QBB(IUS0)+QBB(IUS1))+QBB(ISS1)/2D0)
69533       ELSE
69534 C..New version: Store weights for popcorn mesons,
69535 C..get prel. popcorn weights.
69536          DO 150 IPOS=201,1400
69537             PARF(IPOS)=0D0
69538   150    CONTINUE
69539          DO 160 I=138,140
69540             PARF(I)=0D0
69541   160    CONTINUE
69542          IPOS=200
69543          PARF(193)=PARJ(8)
69544          DO 240 MR=0,7,7
69545            IF(MR.EQ.7) PARF(193)=PARJ(10)
69546            SQWT=2D0*(DMB(MR+IUS0)+DMB(MR+IUS1))/
69547      &          (1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
69548            QQWT=DMB(MR+IUU1)/(1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
69549            DO 230 NMES=0,1
69550              IF(NMES.EQ.1) SQWT=PARJ(2)
69551              DO 220 KFQPOP=1,4
69552                IF(MR.EQ.0.AND.KFQPOP.GT.3) GOTO 220
69553                IF(NMES.EQ.0.AND.KFQPOP.GE.3)THEN
69554                   SQWT=DMB(MR+ISS1)/(DMB(MR+ISU0)+DMB(MR+ISU1))
69555                   QQWT=0.5D0
69556                   IF(MR.EQ.0) PARF(193)=PARJ(8)+PARJ(9)
69557                   IF(KFQPOP.EQ.4) SQWT=SQWT*(1D0/DMB(7+ISU1)+1D0)/2D0
69558                ENDIF
69559                DO 210 KFQOLD =1,5
69560                   IF(MR.EQ.0.AND.KFQOLD.GT.3) GOTO 210
69561                   IF(NMES.EQ.1) THEN
69562                      IF(MR.EQ.0.AND.KFQPOP.EQ.1) GOTO 210
69563                      IF(MR.EQ.7.AND.KFQPOP.NE.1) GOTO 210
69564                   ENDIF
69565                   WTTOT=0D0
69566                   WTFAIL=0D0
69567       DO 190 KMUL=0,5
69568          PJWT=PARJ(12+KMUL)
69569          IF(KMUL.EQ.0) PJWT=1D0-PARJ(14)
69570          IF(KMUL.EQ.1) PJWT=1D0-PARJ(15)-PARJ(16)-PARJ(17)
69571          IF(PJWT.LE.0D0) GOTO 190
69572          IF(PJWT.GT.1D0) PJWT=1D0
69573          IMES=5*KMUL
69574          IMIX=2*KFQOLD+10*KMUL
69575          KFJ=2*KMUL+1
69576          IF(KMUL.EQ.2) KFJ=10003
69577          IF(KMUL.EQ.3) KFJ=10001
69578          IF(KMUL.EQ.4) KFJ=20003
69579          IF(KMUL.EQ.5) KFJ=5
69580          DO 180 KFQVER =1,3
69581             KFLA=MAX(KFQOLD,KFQVER)
69582             KFLB=MIN(KFQOLD,KFQVER)
69583             SWT=PARJ(11+KFLA/3+KFLA/4)
69584             IF(KMUL.EQ.0.OR.KMUL.EQ.2) SWT=1D0-SWT
69585             SWT=SWT*PJWT
69586             QWT=SQWT/(2D0+SQWT)
69587             IF(KFQVER.LT.3)THEN
69588                IF(KFQVER.EQ.KFQPOP) QWT=(1D0-QWT)*QQWT
69589                IF(KFQVER.NE.KFQPOP) QWT=(1D0-QWT)*(1D0-QQWT)
69590             ENDIF
69591             IF(KFQVER.NE.KFQOLD)THEN
69592                IMES=IMES+1
69593                KFM=100*KFLA+10*KFLB+KFJ
69594                PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
69595                PARF(IPOS+IMES)=QWT*SWT*EXP(-PARF(193)*PMM)
69596                WTTOT=WTTOT+PARF(IPOS+IMES)
69597             ELSE
69598                DO 170 ID=3,5
69599                   IF(ID.EQ.3) DWT=1D0-PARF(IMIX-1)
69600                   IF(ID.EQ.4) DWT=PARF(IMIX-1)-PARF(IMIX)
69601                   IF(ID.EQ.5) DWT=PARF(IMIX)
69602                   KFM=110*(ID-2)+KFJ
69603                   PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
69604                   PARF(IPOS+5*KMUL+ID)=QWT*SWT*DWT*EXP(-PARF(193)*PMM)
69605                   IF(KMUL.EQ.0.AND.ID.GT.3) THEN
69606                      WTFAIL=WTFAIL+QWT*SWT*DWT*(1D0-PARJ(21+ID))
69607                      PARF(IPOS+5*KMUL+ID)=
69608      &                    PARF(IPOS+5*KMUL+ID)*PARJ(21+ID)
69609                   ENDIF
69610                   WTTOT=WTTOT+PARF(IPOS+5*KMUL+ID)
69611   170          CONTINUE
69612             ENDIF
69613   180    CONTINUE
69614   190 CONTINUE
69615                   DO 200 IMES=1,30
69616                      PARF(IPOS+IMES)=PARF(IPOS+IMES)/(1D0-WTFAIL)
69617   200             CONTINUE
69618                   IF(MR.EQ.7) PARF(140)=
69619      &                 MAX(PARF(140),WTTOT/(1D0-WTFAIL))
69620                   IF(MR.EQ.0) PARF(139-KFQPOP/3)=
69621      &                 MAX(PARF(139-KFQPOP/3),WTTOT/(1D0-WTFAIL))
69622                   IPOS=IPOS+30
69623   210           CONTINUE
69624   220         CONTINUE
69625   230       CONTINUE
69626   240    CONTINUE
69627          IF(PARF(139).GT.1D-10) PARF(138)=PARF(138)/PARF(139)
69628          MSTU(121)=0
69629  
69630       ENDIF
69631  
69632 C..Recombine diquark weights to flavour and spin ratios
69633       PARF(151)=(2D0*(QBB(ISU0)+QBB(ISU1))+QBB(ISS1))/
69634      &        (1D0+QBB(IUD1)+QBB(IUU1)+QBB(IUS0)+QBB(IUS1))
69635       PARF(152)=2D0*(QBB(IUS0)+QBB(IUS1))/(1D0+QBB(IUD1)+QBB(IUU1))
69636       PARF(153)=QBB(ISS1)/(QBB(ISU0)+QBB(ISU1))
69637       PARF(154)=QBB(IUU1)/(1D0+QBB(IUD1)+QBB(IUU1))
69638       PARF(155)=QBB(ISU1)/QBB(ISU0)
69639       PARF(156)=QBB(IUS1)/QBB(IUS0)
69640       PARF(157)=QBB(IUD1)
69641  
69642       PARF(161)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/
69643      &        (1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1))
69644       PARF(162)=2D0*(QBM(IUS0)+QBM(IUS1))/(1D0+QBM(IUD1)+QBM(IUU1))
69645       PARF(163)=QBM(ISS1)/(QBM(ISU0)+QBM(ISU1))
69646       PARF(164)=QBM(IUU1)/(1D0+QBM(IUD1)+QBM(IUU1))
69647       PARF(165)=QBM(ISU1)/QBM(ISU0)
69648       PARF(166)=QBM(IUS1)/QBM(IUS0)
69649       PARF(167)=QBM(IUD1)
69650  
69651       PARF(171)=(2D0*(DMB(ISU0)+DMB(ISU1))+DMB(ISS1))/
69652      &        (1D0+DMB(IUD1)+DMB(IUU1)+DMB(IUS0)+DMB(IUS1))
69653       PARF(172)=2D0*(DMB(IUS0)+DMB(IUS1))/(1D0+DMB(IUD1)+DMB(IUU1))
69654       PARF(173)=DMB(ISS1)/(DMB(ISU0)+DMB(ISU1))
69655       PARF(174)=DMB(IUU1)/(1D0+DMB(IUD1)+DMB(IUU1))
69656       PARF(175)=DMB(ISU1)/DMB(ISU0)
69657       PARF(176)=DMB(IUS1)/DMB(IUS0)
69658       PARF(177)=DMB(IUD1)
69659  
69660       PARF(185)=DMB(7+ISU1)/DMB(7+ISU0)
69661       PARF(186)=DMB(7+IUS1)/DMB(7+IUS0)
69662       PARF(187)=DMB(7+IUD1)
69663  
69664       RETURN
69665       END
69666  
69667  
69668 C*********************************************************************
69669  
69670 C...PYPTDI
69671 C...Generates transverse momentum according to a Gaussian.
69672  
69673       SUBROUTINE PYPTDI(KFL,PX,PY)
69674  
69675 C...Double precision and integer declarations.
69676       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69677       IMPLICIT INTEGER(I-N)
69678       INTEGER PYK,PYCHGE,PYCOMP
69679 C...Commonblocks.
69680       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69681       SAVE /PYDAT1/
69682  
69683 C...Generate p_T and azimuthal angle, gives p_x and p_y.
69684       KFLA=IABS(KFL)
69685       PT=PARJ(21)*SQRT(-LOG(MAX(1D-10,PYR(0))))
69686       IF(PARJ(23).GT.PYR(0)) PT=PARJ(24)*PT
69687       IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT
69688       IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0D0
69689       PHI=PARU(2)*PYR(0)
69690       PX=PT*COS(PHI)
69691       PY=PT*SIN(PHI)
69692  
69693       RETURN
69694       END
69695  
69696 C*********************************************************************
69697  
69698 C...PYZDIS
69699 C...Generates the longitudinal splitting variable z.
69700  
69701       SUBROUTINE PYZDIS(KFL1,KFL2,PR,Z)
69702  
69703 C...Double precision and integer declarations.
69704       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69705       IMPLICIT INTEGER(I-N)
69706       INTEGER PYK,PYCHGE,PYCOMP
69707 C...Commonblocks.
69708       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69709       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69710       SAVE /PYDAT1/,/PYDAT2/
69711  
69712 C...Check if heavy flavour fragmentation.
69713       KFLA=IABS(KFL1)
69714       KFLB=IABS(KFL2)
69715       KFLH=KFLA
69716       IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10)
69717  
69718 C...Lund symmetric scaling function: determine parameters of shape.
69719       IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR.
69720      &MSTJ(11).GE.4) THEN
69721         FA=PARJ(41)
69722         IF(MSTJ(91).EQ.1) FA=PARJ(43)
69723         IF(KFLB.GE.10) FA=FA+PARJ(45)
69724         FBB=PARJ(42)
69725         IF(MSTJ(91).EQ.1) FBB=PARJ(44)
69726         FB=FBB*PR
69727         FC=1D0
69728         IF(KFLA.GE.10) FC=FC-PARJ(45)
69729         IF(KFLB.GE.10) FC=FC+PARJ(45)
69730         IF(MSTJ(11).GE.4.AND.(KFLH.EQ.4.OR.KFLH.EQ.5)) THEN
69731           FRED=PARJ(46)
69732           IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47)
69733           FC=FC+FRED*FBB*PARF(100+KFLH)**2
69734         ENDIF
69735         MC=1
69736         IF(ABS(FC-1D0).GT.0.01D0) MC=2
69737  
69738 C...Determine position of maximum. Special cases for a = 0 or a = c.
69739         IF(FA.LT.0.02D0) THEN
69740           MA=1
69741           ZMAX=1D0
69742           IF(FC.GT.FB) ZMAX=FB/FC
69743         ELSEIF(ABS(FC-FA).LT.0.01D0) THEN
69744           MA=2
69745           ZMAX=FB/(FB+FC)
69746         ELSE
69747           MA=3
69748           ZMAX=0.5D0*(FB+FC-SQRT((FB-FC)**2+4D0*FA*FB))/(FC-FA)
69749           IF(ZMAX.GT.0.9999D0.AND.FB.GT.100D0) ZMAX=MIN(ZMAX,1D0-FA/FB)
69750         ENDIF
69751  
69752 C...Subdivide z range if distribution very peaked near endpoint.
69753         MMAX=2
69754         IF(ZMAX.LT.0.1D0) THEN
69755           MMAX=1
69756           ZDIV=2.75D0*ZMAX
69757           IF(MC.EQ.1) THEN
69758             FINT=1D0-LOG(ZDIV)
69759           ELSE
69760             ZDIVC=ZDIV**(1D0-FC)
69761             FINT=1D0+(1D0-1D0/ZDIVC)/(FC-1D0)
69762           ENDIF
69763         ELSEIF(ZMAX.GT.0.85D0.AND.FB.GT.1D0) THEN
69764           MMAX=3
69765           FSCB=SQRT(4D0+(FC/FB)**2)
69766           ZDIV=FSCB-1D0/ZMAX-(FC/FB)*LOG(ZMAX*0.5D0*(FSCB+FC/FB))
69767           IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1D0-ZMAX)
69768           ZDIV=MIN(ZMAX,MAX(0D0,ZDIV))
69769           FINT=1D0+FB*(1D0-ZDIV)
69770         ENDIF
69771  
69772 C...Choice of z, preweighted for peaks at low or high z.
69773   100   Z=PYR(0)
69774         FPRE=1D0
69775         IF(MMAX.EQ.1) THEN
69776           IF(FINT*PYR(0).LE.1D0) THEN
69777             Z=ZDIV*Z
69778           ELSEIF(MC.EQ.1) THEN
69779             Z=ZDIV**Z
69780             FPRE=ZDIV/Z
69781           ELSE
69782             Z=(ZDIVC+Z*(1D0-ZDIVC))**(1D0/(1D0-FC))
69783             FPRE=(ZDIV/Z)**FC
69784           ENDIF
69785         ELSEIF(MMAX.EQ.3) THEN
69786           IF(FINT*PYR(0).LE.1D0) THEN
69787             Z=ZDIV+LOG(Z)/FB
69788             FPRE=EXP(FB*(Z-ZDIV))
69789           ELSE
69790             Z=ZDIV+Z*(1D0-ZDIV)
69791           ENDIF
69792         ENDIF
69793  
69794 C...Weighting according to correct formula.
69795         IF(Z.LE.0D0.OR.Z.GE.1D0) GOTO 100
69796         FEXP=FC*LOG(ZMAX/Z)+FB*(1D0/ZMAX-1D0/Z)
69797         IF(MA.GE.2) FEXP=FEXP+FA*LOG((1D0-Z)/(1D0-ZMAX))
69798         FVAL=EXP(MAX(-50D0,MIN(50D0,FEXP)))
69799         IF(FVAL.LT.PYR(0)*FPRE) GOTO 100
69800  
69801 C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c.
69802       ELSE
69803         FC=PARJ(50+MAX(1,KFLH))
69804         IF(MSTJ(91).EQ.1) FC=PARJ(59)
69805   110   Z=PYR(0)
69806         IF(FC.GE.0D0.AND.FC.LE.1D0) THEN
69807           IF(FC.GT.PYR(0)) Z=1D0-Z**(1D0/3D0)
69808         ELSEIF(FC.GT.-1.AND.FC.LT.0D0) THEN
69809           IF(-4D0*FC*Z*(1D0-Z)**2.LT.PYR(0)*((1D0-Z)**2-FC*Z)**2)
69810      &    GOTO 110
69811         ELSE
69812           IF(FC.GT.0D0) Z=1D0-Z**(1D0/FC)
69813           IF(FC.LT.0D0) Z=Z**(-1D0/FC)
69814         ENDIF
69815       ENDIF
69816  
69817       RETURN
69818       END
69819  
69820 C*********************************************************************
69821  
69822 C...PYSHOW
69823 C...Generates timelike parton showers from given partons.
69824  
69825       SUBROUTINE PYSHOW(IP1,IP2,QMAX)
69826  
69827 C...Double precision and integer declarations.
69828       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69829       IMPLICIT INTEGER(I-N)
69830       INTEGER PYK,PYCHGE,PYCOMP
69831 C...Parameter statement to help give large particle numbers.
69832       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
69833      &KEXCIT=4000000,KDIMEN=5000000)
69834       PARAMETER (MAXNUR=1000)
69835 C...Commonblocks.
69836       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
69837       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
69838       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69839       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69840       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
69841       COMMON/PYINT1/MINT(400),VINT(400)
69842       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
69843 C...Local arrays.
69844       DIMENSION PMTH(5,140),PS(5),PMA(100),PMSD(100),IEP(100),IPA(100),
69845      &KFLA(100),KFLD(100),KFL(100),ITRY(100),ISI(100),ISL(100),DP(100),
69846      &DPT(5,4),KSH(0:140),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),
69847      &PHIIIS(2,2),ISII(2),ISSET(2),ISCOL(0:140),ISCHG(0:140),
69848      &IREF(1000)
69849  
69850 C...Check that QMAX not too low.
69851       IF(MSTJ(41).LE.0) THEN
69852         RETURN
69853       ELSEIF(MSTJ(41).EQ.1.OR.MSTJ(41).EQ.11) THEN
69854         IF(QMAX.LE.PARJ(82).AND.IP2.GE.-80) RETURN
69855       ELSE
69856         IF(QMAX.LE.MIN(PARJ(82),PARJ(83),PARJ(90)).AND.IP2.GE.-80)
69857      &  RETURN
69858       ENDIF
69859  
69860 C...Store positions of shower initiating partons.
69861       MPSPD=0
69862       IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN
69863         NPA=1
69864         IPA(1)=IP1
69865       ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)-
69866      &  MSTU(32))) THEN
69867         NPA=2
69868         IPA(1)=IP1
69869         IPA(2)=IP2
69870       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0
69871      &  .AND.IP2.GE.-80) THEN
69872         NPA=IABS(IP2)
69873         DO 100 I=1,NPA
69874           IPA(I)=IP1+I-1
69875   100   CONTINUE
69876       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.
69877      &IP2.EQ.-100) THEN
69878         MPSPD=1
69879         NPA=2
69880         IPA(1)=IP1+6
69881         IPA(2)=IP1+7
69882       ELSE
69883         CALL PYERRM(12,
69884      &  '(PYSHOW:) failed to reconstruct showering system')
69885         IF(MSTU(21).GE.1) RETURN
69886       ENDIF
69887  
69888 C...Send off to PYPTFS for pT-ordered evolution if requested,
69889 C...if at least 2 partons, and without predefined shower branchings.
69890       IF((MSTJ(41).EQ.11.OR.MSTJ(41).EQ.12).AND.NPA.GE.2.AND.
69891      &MPSPD.EQ.0) THEN
69892         NPART=NPA
69893         DO 110 II=1,NPART
69894           IPART(II)=IPA(II)
69895           PTPART(II)=0.5D0*QMAX
69896   110   CONTINUE
69897         CALL PYPTFS(2,0.5D0*QMAX,0D0,PTGEN)
69898         RETURN
69899       ENDIF
69900  
69901 C...Initialization of cutoff masses etc.
69902       DO 120 IFL=0,40
69903         ISCOL(IFL)=0
69904         ISCHG(IFL)=0
69905         KSH(IFL)=0
69906   120 CONTINUE
69907       ISCOL(21)=1
69908       KSH(21)=1
69909       PMTH(1,21)=PYMASS(21)
69910       PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25D0*PARJ(82)**2)
69911       PMTH(3,21)=2D0*PMTH(2,21)
69912       PMTH(4,21)=PMTH(3,21)
69913       PMTH(5,21)=PMTH(3,21)
69914       PMTH(1,22)=PYMASS(22)
69915       PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25D0*PARJ(83)**2)
69916       PMTH(3,22)=2D0*PMTH(2,22)
69917       PMTH(4,22)=PMTH(3,22)
69918       PMTH(5,22)=PMTH(3,22)
69919       PMQTH1=PARJ(82)
69920       IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83))
69921       PMQT1E=MIN(PMQTH1,PARJ(90))
69922       PMQTH2=PMTH(2,21)
69923       IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22))
69924       PMQT2E=MIN(PMQTH2,0.5D0*PARJ(90))
69925       DO 130 IFL=1,5
69926         ISCOL(IFL)=1
69927         IF(MSTJ(41).GE.2) ISCHG(IFL)=1
69928         KSH(IFL)=1
69929         PMTH(1,IFL)=PYMASS(IFL)
69930         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PMQTH1**2)
69931         PMTH(3,IFL)=PMTH(2,IFL)+PMQTH2
69932         PMTH(4,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
69933         PMTH(5,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
69934   130 CONTINUE
69935       DO 140 IFL=11,15,2
69936         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IFL)=1
69937         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) KSH(IFL)=1
69938         PMTH(1,IFL)=PYMASS(IFL)
69939         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(90)**2)
69940         PMTH(3,IFL)=PMTH(2,IFL)+0.5D0*PARJ(90)
69941         PMTH(4,IFL)=PMTH(3,IFL)
69942         PMTH(5,IFL)=PMTH(3,IFL)
69943   140 CONTINUE
69944       PT2MIN=MAX(0.5D0*PARJ(82),1.1D0*PARJ(81))**2
69945       ALAMS=PARJ(81)**2
69946       ALFM=LOG(PT2MIN/ALAMS)
69947  
69948 C...Check on phase space available for emission.
69949       IREJ=0
69950       DO 150 J=1,5
69951         PS(J)=0D0
69952   150 CONTINUE
69953       PM=0D0
69954       KFLA(2)=0
69955       DO 170 I=1,NPA
69956         KFLA(I)=IABS(K(IPA(I),2))
69957         PMA(I)=P(IPA(I),5)
69958 C...Special cutoff masses for initial partons (may be a heavy quark,
69959 C...squark, ..., and need not be on the mass shell).
69960         IR=30+I
69961         IF(NPA.LE.1) IREF(I)=IR
69962         IF(NPA.GE.2) IREF(I+1)=IR
69963         ISCOL(IR)=0
69964         ISCHG(IR)=0
69965         KSH(IR)=0
69966         IF(KFLA(I).LE.8) THEN
69967           ISCOL(IR)=1
69968           IF(MSTJ(41).GE.2) ISCHG(IR)=1
69969         ELSEIF(KFLA(I).EQ.11.OR.KFLA(I).EQ.13.OR.KFLA(I).EQ.15.OR.
69970      &  KFLA(I).EQ.17) THEN
69971           IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IR)=1
69972         ELSEIF(KFLA(I).EQ.21) THEN
69973           ISCOL(IR)=1
69974         ELSEIF((KFLA(I).GE.KSUSY1+1.AND.KFLA(I).LE.KSUSY1+8).OR.
69975      &  (KFLA(I).GE.KSUSY2+1.AND.KFLA(I).LE.KSUSY2+8)) THEN
69976           ISCOL(IR)=1
69977         ELSEIF(KFLA(I).EQ.KSUSY1+21) THEN
69978           ISCOL(IR)=1
69979 C...QUARKONIA+++
69980 C...same for QQ~[3S18]
69981         ELSEIF(MSTP(148).GE.1.AND.(KFLA(I).EQ.9900443.OR.
69982      &  KFLA(I).EQ.9900553)) THEN
69983           ISCOL(IR)=1
69984 C...QUARKONIA---
69985         ENDIF
69986 
69987 C...Option to switch off radiation from particle KF = MSTJ(39) entirely
69988 C...(only intended for studying the effects of switching such rad on/off)
69989         IF (MSTJ(39).GT.0.AND.KFLA(I).EQ.MSTJ(39)) THEN
69990           ISCOL(IR)=0
69991           ISCHG(IR)=0
69992         ENDIF
69993 
69994         IF(ISCOL(IR).EQ.1.OR.ISCHG(IR).EQ.1) KSH(IR)=1
69995         PMTH(1,IR)=PMA(I)
69996         IF(ISCOL(IR).EQ.1.AND.ISCHG(IR).EQ.1) THEN
69997           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PMQTH1**2)
69998           PMTH(3,IR)=PMTH(2,IR)+PMQTH2
69999           PMTH(4,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
70000           PMTH(5,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
70001         ELSEIF(ISCOL(IR).EQ.1) THEN
70002           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)
70003           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(82)
70004           PMTH(4,IR)=PMTH(3,IR)
70005           PMTH(5,IR)=PMTH(3,IR)
70006         ELSEIF(ISCHG(IR).EQ.1) THEN
70007           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(90)**2)
70008           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(90)
70009           PMTH(4,IR)=PMTH(3,IR)
70010           PMTH(5,IR)=PMTH(3,IR)
70011         ENDIF
70012         IF(KSH(IR).EQ.1) PMA(I)=PMTH(3,IR)
70013         PM=PM+PMA(I)
70014         IF(KSH(IR).EQ.0.OR.PMA(I).GT.10D0*QMAX) IREJ=IREJ+1
70015         DO 160 J=1,4
70016           PS(J)=PS(J)+P(IPA(I),J)
70017   160   CONTINUE
70018   170 CONTINUE
70019       IF(IREJ.EQ.NPA.AND.IP2.GE.-7) RETURN
70020       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
70021       IF(NPA.EQ.1) PS(5)=PS(4)
70022       IF(PS(5).LE.PM+PMQT1E) RETURN
70023  
70024 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
70025       KFSRCE=0
70026       IF(IP2.LE.0) THEN
70027       ELSEIF(K(IP1,3).EQ.K(IP2,3).AND.K(IP1,3).GT.0) THEN
70028         KFSRCE=IABS(K(K(IP1,3),2))
70029       ELSE
70030         IPAR1=MAX(1,K(IP1,3))
70031         IPAR2=MAX(1,K(IP2,3))
70032         IF(K(IPAR1,3).EQ.K(IPAR2,3).AND.K(IPAR1,3).GT.0)
70033      &       KFSRCE=IABS(K(K(IPAR1,3),2))
70034       ENDIF
70035       ITYPES=0
70036       IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
70037       IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
70038       IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
70039       IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
70040       IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
70041       IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
70042       IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
70043       IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
70044  
70045 C...Identify two primary showerers.
70046       ITYPE1=0
70047       IF(KFLA(1).GE.1.AND.KFLA(1).LE.8) ITYPE1=1
70048       IF(KFLA(1).GE.KSUSY1+1.AND.KFLA(1).LE.KSUSY1+8) ITYPE1=2
70049       IF(KFLA(1).GE.KSUSY2+1.AND.KFLA(1).LE.KSUSY2+8) ITYPE1=2
70050       IF(KFLA(1).GE.21.AND.KFLA(1).LE.24) ITYPE1=3
70051       IF(KFLA(1).GE.32.AND.KFLA(1).LE.34) ITYPE1=3
70052       IF(KFLA(1).EQ.25.OR.(KFLA(1).GE.35.AND.KFLA(1).LE.37)) ITYPE1=4
70053       IF(KFLA(1).GE.KSUSY1+22.AND.KFLA(1).LE.KSUSY1+37) ITYPE1=5
70054       IF(KFLA(1).EQ.KSUSY1+21) ITYPE1=6
70055       ITYPE2=0
70056       IF(KFLA(2).GE.1.AND.KFLA(2).LE.8) ITYPE2=1
70057       IF(KFLA(2).GE.KSUSY1+1.AND.KFLA(2).LE.KSUSY1+8) ITYPE2=2
70058       IF(KFLA(2).GE.KSUSY2+1.AND.KFLA(2).LE.KSUSY2+8) ITYPE2=2
70059       IF(KFLA(2).GE.21.AND.KFLA(2).LE.24) ITYPE2=3
70060       IF(KFLA(2).GE.32.AND.KFLA(2).LE.34) ITYPE2=3
70061       IF(KFLA(2).EQ.25.OR.(KFLA(2).GE.35.AND.KFLA(2).LE.37)) ITYPE2=4
70062       IF(KFLA(2).GE.KSUSY1+22.AND.KFLA(2).LE.KSUSY1+37) ITYPE2=5
70063       IF(KFLA(2).EQ.KSUSY1+21) ITYPE2=6
70064  
70065 C...Order of showerers. Presence of gluino.
70066       ITYPMN=MIN(ITYPE1,ITYPE2)
70067       ITYPMX=MAX(ITYPE1,ITYPE2)
70068       IORD=1
70069       IF(ITYPE1.GT.ITYPE2) IORD=2
70070       IGLUI=0
70071       IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
70072  
70073 C...Check if 3-jet matrix elements to be used.
70074       M3JC=0
70075       ALPHA=0.5D0
70076       IF(NPA.EQ.2.AND.MSTJ(47).GE.1.AND.MPSPD.EQ.0) THEN
70077         IF(MSTJ(38).NE.0) THEN
70078           M3JC=MSTJ(38)
70079           ALPHA=PARJ(80)
70080           MSTJ(38)=0
70081         ELSEIF(MSTJ(47).GE.6) THEN
70082           M3JC=MSTJ(47)
70083         ELSE
70084           ICLASS=1
70085           ICOMBI=4
70086  
70087 C...Vector/axial vector -> q + qbar; q -> q + V.
70088           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
70089      &    ITYPES.EQ.3)) THEN
70090             ICLASS=2
70091             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
70092               ICOMBI=1
70093             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
70094      &      K(IPA(1),2)+K(IPA(2),2).EQ.0)) THEN
70095 C...gamma*/Z0: assume e+e- initial state if unknown.
70096               EI=-1D0
70097               IF(KFSRCE.EQ.23) THEN
70098                 IANNFL=K(K(IP1,3),3)
70099                 IF(IANNFL.NE.0) THEN
70100                   KANNFL=IABS(K(IANNFL,2))
70101                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
70102                 ENDIF
70103               ENDIF
70104               AI=SIGN(1D0,EI+0.1D0)
70105               VI=AI-4D0*EI*PARU(102)
70106               EF=KCHG(KFLA(1),1)/3D0
70107               AF=SIGN(1D0,EF+0.1D0)
70108               VF=AF-4D0*EF*PARU(102)
70109               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
70110               SH=PS(5)**2
70111               SQMZ=PMAS(23,1)**2
70112               SQWZ=PS(5)*PMAS(23,2)
70113               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
70114               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
70115      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
70116               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
70117               ICOMBI=3
70118               ALPHA=VECT/(VECT+AXIV)
70119             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
70120               ICOMBI=4
70121             ENDIF
70122 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
70123           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
70124             ICLASS=2
70125           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
70126      &    ITYPES.EQ.1)) THEN
70127             ICLASS=3
70128  
70129 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
70130           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
70131             ICLASS=4
70132             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
70133               ICOMBI=1
70134             ELSEIF(KFSRCE.EQ.36) THEN
70135               ICOMBI=2
70136             ENDIF
70137           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
70138      &    ITYPES.EQ.1)) THEN
70139             ICLASS=5
70140  
70141 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
70142           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
70143      &    ITYPES.EQ.3)) THEN
70144             ICLASS=6
70145           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
70146      &    ITYPES.EQ.2)) THEN
70147             ICLASS=7
70148           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
70149             ICLASS=8
70150           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
70151      &    ITYPES.EQ.2)) THEN
70152             ICLASS=9
70153  
70154 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
70155           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
70156      &    ITYPES.EQ.5)) THEN
70157             ICLASS=10
70158           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
70159      &    ITYPES.EQ.2)) THEN
70160             ICLASS=11
70161           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
70162      &    ITYPES.EQ.1)) THEN
70163             ICLASS=12
70164  
70165 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
70166           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
70167             ICLASS=13
70168           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
70169      &    ITYPES.EQ.2)) THEN
70170             ICLASS=14
70171           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
70172      &    ITYPES.EQ.1)) THEN
70173             ICLASS=15
70174  
70175 C...g -> ~g + ~g (eikonal approximation).
70176           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
70177             ICLASS=16
70178           ENDIF
70179           M3JC=5*ICLASS+ICOMBI
70180         ENDIF
70181       ENDIF
70182  
70183 C...Find if interference with initial state partons.
70184       MIIS=0
70185       IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2.AND.KFSRCE.EQ.0
70186      &.AND.MPSPD.EQ.0) MIIS=MSTJ(50)
70187       IF(MSTJ(50).GE.4.AND.MSTJ(50).LE.6.AND.NPA.EQ.2.AND.MPSPD.EQ.0)
70188      &MIIS=MSTJ(50)-3
70189       IF(MIIS.NE.0) THEN
70190         DO 190 I=1,2
70191           KCII(I)=0
70192           KCA=PYCOMP(KFLA(I))
70193           IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2))
70194           NIIS(I)=0
70195           IF(KCII(I).NE.0) THEN
70196             DO 180 J=1,2
70197               ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5))
70198               IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND.
70199      &        (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN
70200                 NIIS(I)=NIIS(I)+1
70201                 IIIS(I,NIIS(I))=ICSI
70202               ENDIF
70203   180       CONTINUE
70204           ENDIF
70205   190   CONTINUE
70206         IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0
70207       ENDIF
70208  
70209 C...Boost interfering initial partons to rest frame
70210 C...and reconstruct their polar and azimuthal angles.
70211       IF(MIIS.NE.0) THEN
70212         DO 210 I=1,2
70213           DO 200 J=1,5
70214             K(N+I,J)=K(IPA(I),J)
70215             P(N+I,J)=P(IPA(I),J)
70216             V(N+I,J)=0D0
70217   200     CONTINUE
70218   210   CONTINUE
70219         DO 230 I=3,2+NIIS(1)
70220           DO 220 J=1,5
70221             K(N+I,J)=K(IIIS(1,I-2),J)
70222             P(N+I,J)=P(IIIS(1,I-2),J)
70223             V(N+I,J)=0D0
70224   220     CONTINUE
70225   230   CONTINUE
70226         DO 250 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
70227           DO 240 J=1,5
70228             K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J)
70229             P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J)
70230             V(N+I,J)=0D0
70231   240     CONTINUE
70232   250   CONTINUE
70233         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,0D0,-PS(1)/PS(4),
70234      &  -PS(2)/PS(4),-PS(3)/PS(4))
70235         PHI=PYANGL(P(N+1,1),P(N+1,2))
70236         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,-PHI,0D0,0D0,0D0)
70237         THE=PYANGL(P(N+1,3),P(N+1,1))
70238         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),-THE,0D0,0D0,0D0,0D0)
70239         DO 260 I=3,2+NIIS(1)
70240           THEIIS(1,I-2)=PYANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2))
70241           PHIIIS(1,I-2)=PYANGL(P(N+I,1),P(N+I,2))
70242   260   CONTINUE
70243         DO 270 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
70244           THEIIS(2,I-2-NIIS(1))=PARU(1)-PYANGL(P(N+I,3),
70245      &    SQRT(P(N+I,1)**2+P(N+I,2)**2))
70246           PHIIIS(2,I-2-NIIS(1))=PYANGL(P(N+I,1),P(N+I,2))
70247   270   CONTINUE
70248       ENDIF
70249  
70250 C...Boost 3 or more partons to their rest frame.
70251       IF(NPA.GE.3) CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,-PS(1)/PS(4),
70252      &-PS(2)/PS(4),-PS(3)/PS(4))
70253  
70254 C...Define imagined single initiator of shower for parton system.
70255       NS=N
70256       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
70257         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
70258         IF(MSTU(21).GE.1) RETURN
70259       ENDIF
70260   280 N=NS
70261       IF(NPA.GE.2) THEN
70262         K(N+1,1)=11
70263         K(N+1,2)=21
70264         K(N+1,3)=0
70265         K(N+1,4)=0
70266         K(N+1,5)=0
70267         P(N+1,1)=0D0
70268         P(N+1,2)=0D0
70269         P(N+1,3)=0D0
70270         P(N+1,4)=PS(5)
70271         P(N+1,5)=PS(5)
70272         V(N+1,5)=PS(5)**2
70273         N=N+1
70274         IREF(1)=21
70275       ENDIF
70276  
70277 C...Loop over partons that may branch.
70278       NEP=NPA
70279       IM=NS
70280       IF(NPA.EQ.1) IM=NS-1
70281   290 IM=IM+1
70282       IF(N.GT.NS) THEN
70283         IF(IM.GT.N) GOTO 600
70284         KFLM=IABS(K(IM,2))
70285         IR=IREF(IM-NS)
70286         IF(KSH(IR).EQ.0) GOTO 290
70287         IF(P(IM,5).LT.PMTH(2,IR)) GOTO 290
70288         IGM=K(IM,3)
70289       ELSE
70290         IGM=-1
70291       ENDIF
70292       IF(N+NEP.GT.MSTU(4)-MSTU(32)-10) THEN
70293         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
70294         IF(MSTU(21).GE.1) RETURN
70295       ENDIF
70296  
70297 C...Position of aunt (sister to branching parton).
70298 C...Origin and flavour of daughters.
70299       IAU=0
70300       IF(IGM.GT.0) THEN
70301         IF(K(IM-1,3).EQ.IGM) IAU=IM-1
70302         IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1
70303       ENDIF
70304       IF(IGM.GE.0) THEN
70305         K(IM,4)=N+1
70306         DO 300 I=1,NEP
70307           K(N+I,3)=IM
70308   300   CONTINUE
70309       ELSE
70310         K(N+1,3)=IPA(1)
70311       ENDIF
70312       IF(IGM.LE.0) THEN
70313         DO 310 I=1,NEP
70314           K(N+I,2)=K(IPA(I),2)
70315   310   CONTINUE
70316       ELSEIF(KFLM.NE.21) THEN
70317         K(N+1,2)=K(IM,2)
70318         K(N+2,2)=K(IM,5)
70319         IREF(N+1-NS)=IREF(IM-NS)
70320         IREF(N+2-NS)=IABS(K(N+2,2))
70321       ELSEIF(K(IM,5).EQ.21) THEN
70322         K(N+1,2)=21
70323         K(N+2,2)=21
70324         IREF(N+1-NS)=21
70325         IREF(N+2-NS)=21
70326       ELSE
70327         K(N+1,2)=K(IM,5)
70328         K(N+2,2)=-K(IM,5)
70329         IREF(N+1-NS)=IABS(K(N+1,2))
70330         IREF(N+2-NS)=IABS(K(N+2,2))
70331       ENDIF
70332  
70333 C...Reset flags on daughters and tries made.
70334       DO 320 IP=1,NEP
70335         K(N+IP,1)=3
70336         K(N+IP,4)=0
70337         K(N+IP,5)=0
70338         KFLD(IP)=IABS(K(N+IP,2))
70339         IF(KCHG(PYCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1
70340         ITRY(IP)=0
70341         ISL(IP)=0
70342         ISI(IP)=0
70343         IF(KSH(IREF(N+IP-NS)).EQ.1) ISI(IP)=1
70344   320 CONTINUE
70345       ISLM=0
70346  
70347 C...Maximum virtuality of daughters.
70348       IF(IGM.LE.0) THEN
70349         DO 330 I=1,NPA
70350           IF(NPA.GE.3) P(N+I,4)=P(IPA(I),4)
70351           P(N+I,5)=MIN(QMAX,PS(5))
70352           IR=IREF(N+I-NS)
70353           IF(IP2.LE.-8) P(N+I,5)=MAX(P(N+I,5),2D0*PMTH(3,IR))
70354           IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5)
70355   330   CONTINUE
70356       ELSE
70357         IF(MSTJ(43).LE.2) PEM=V(IM,2)
70358         IF(MSTJ(43).GE.3) PEM=P(IM,4)
70359         P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM)
70360         P(N+2,5)=MIN(P(IM,5),(1D0-V(IM,1))*PEM)
70361         IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22)
70362       ENDIF
70363       DO 340 I=1,NEP
70364         PMSD(I)=P(N+I,5)
70365         IF(ISI(I).EQ.1) THEN
70366           IR=IREF(N+I-NS)
70367           IF(P(N+I,5).LE.PMTH(3,IR)) P(N+I,5)=PMTH(1,IR)
70368         ENDIF
70369         V(N+I,5)=P(N+I,5)**2
70370   340 CONTINUE
70371  
70372 C...Choose one of the daughters for evolution.
70373   350 INUM=0
70374       IF(NEP.EQ.1) INUM=1
70375       DO 360 I=1,NEP
70376         IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I
70377   360 CONTINUE
70378       DO 370 I=1,NEP
70379         IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN
70380           IR=IREF(N+I-NS)
70381           IF(P(N+I,5).GE.PMTH(2,IR)) INUM=I
70382         ENDIF
70383   370 CONTINUE
70384       IF(INUM.EQ.0) THEN
70385         RMAX=0D0
70386         DO 380 I=1,NEP
70387           IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQT2E) THEN
70388             RPM=P(N+I,5)/PMSD(I)
70389             IR=IREF(N+I-NS)
70390             IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,IR)) THEN
70391               RMAX=RPM
70392               INUM=I
70393             ENDIF
70394           ENDIF
70395   380   CONTINUE
70396       ENDIF
70397  
70398 C...Cancel choice of predetermined daughter already treated.
70399       INUM=MAX(1,INUM)
70400       INUMT=INUM
70401       IF(MPSPD.EQ.1.AND.IGM.EQ.0.AND.ITRY(INUMT).GE.1) THEN
70402         IF(K(IP1-1+INUM,4).GT.0) INUM=3-INUM
70403       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2.AND.ITRY(INUMT).GE.1) THEN
70404         IF(KFLD(INUMT).NE.21.AND.K(IP1+2,4).GT.0) INUM=3-INUM
70405         IF(KFLD(INUMT).EQ.21.AND.K(IP1+3,4).GT.0) INUM=3-INUM
70406       ENDIF
70407  
70408 C...Store information on choice of evolving daughter.
70409       IEP(1)=N+INUM
70410       DO 390 I=2,NEP
70411         IEP(I)=IEP(I-1)+1
70412         IF(IEP(I).GT.N+NEP) IEP(I)=N+1
70413   390 CONTINUE
70414       DO 400 I=1,NEP
70415         KFL(I)=IABS(K(IEP(I),2))
70416   400 CONTINUE
70417       ITRY(INUM)=ITRY(INUM)+1
70418       IF(ITRY(INUM).GT.200) THEN
70419         CALL PYERRM(14,'(PYSHOW:) caught in infinite loop')
70420         IF(MSTU(21).GE.1) RETURN
70421       ENDIF
70422       Z=0.5D0
70423       IR=IREF(IEP(1)-NS)
70424       IF(KSH(IR).EQ.0) GOTO 450
70425       IF(P(IEP(1),5).LT.PMTH(2,IR)) GOTO 450
70426  
70427 C...Check if evolution already predetermined for daughter.
70428       IPSPD=0
70429       IF(MPSPD.EQ.1.AND.IGM.EQ.0) THEN
70430         IF(K(IP1-1+INUM,4).GT.0) IPSPD=IP1-1+INUM
70431       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2) THEN
70432         IF(KFL(1).NE.21.AND.K(IP1+2,4).GT.0) IPSPD=IP1+2
70433         IF(KFL(1).EQ.21.AND.K(IP1+3,4).GT.0) IPSPD=IP1+3
70434       ENDIF
70435       IF(INUM.EQ.1.OR.INUM.EQ.2) THEN
70436         ISSET(INUM)=0
70437         IF(IPSPD.NE.0) ISSET(INUM)=1
70438       ENDIF
70439  
70440 C...Select side for interference with initial state partons.
70441       IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN
70442         III=IEP(1)-NS-1
70443         ISII(III)=0
70444         IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN
70445           ISII(III)=1
70446         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN
70447           IF(PYR(0).GT.0.5D0) ISII(III)=1
70448         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN
70449           ISII(III)=1
70450           IF(PYR(0).GT.0.5D0) ISII(III)=2
70451         ENDIF
70452       ENDIF
70453  
70454 C...Calculate allowed z range.
70455       IF(NEP.EQ.1) THEN
70456         PMED=PS(4)
70457       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
70458         PMED=P(IM,5)
70459       ELSE
70460         IF(INUM.EQ.1) PMED=V(IM,1)*PEM
70461         IF(INUM.EQ.2) PMED=(1D0-V(IM,1))*PEM
70462       ENDIF
70463       IF(MOD(MSTJ(43),2).EQ.1) THEN
70464         ZC=PMTH(2,21)/PMED
70465         ZCE=PMTH(2,22)/PMED
70466         IF(ISCOL(IR).EQ.0) ZCE=0.5D0*PARJ(90)/PMED
70467       ELSE
70468         ZC=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTH(2,21)/PMED)**2)))
70469         IF(ZC.LT.1D-6) ZC=(PMTH(2,21)/PMED)**2
70470         PMTMPE=PMTH(2,22)
70471         IF(ISCOL(IR).EQ.0) PMTMPE=0.5D0*PARJ(90)
70472         ZCE=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTMPE/PMED)**2)))
70473         IF(ZCE.LT.1D-6) ZCE=(PMTMPE/PMED)**2
70474       ENDIF
70475       ZC=MIN(ZC,0.491D0)
70476       ZCE=MIN(ZCE,0.49991D0)
70477       IF(((MSTJ(41).EQ.1.AND.ZC.GT.0.49D0).OR.(MSTJ(41).GE.2.AND.
70478      &MIN(ZC,ZCE).GT.0.4999D0)).AND.IPSPD.EQ.0) THEN
70479         P(IEP(1),5)=PMTH(1,IR)
70480         V(IEP(1),5)=P(IEP(1),5)**2
70481         GOTO 450
70482       ENDIF
70483  
70484 C...Integral of Altarelli-Parisi z kernel for QCD.
70485 C...(Includes squark and gluino; with factor N_C/C_F extra for latter).
70486       IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN
70487         FBR=6D0*LOG((1D0-ZC)/ZC)+MSTJ(45)*0.5D0
70488 C...QUARKONIA+++
70489 C...Evolution of QQ~[3S18] state if MSTP(148)=1.
70490       ELSEIF(MSTJ(49).EQ.0.AND.MSTP(149).GE.0.AND.
70491      &       (KFL(1).EQ.9900443.OR.KFL(1).EQ.9900553)) THEN
70492         FBR=6D0*LOG((1D0-ZC)/ZC)
70493 C...QUARKONIA---
70494       ELSEIF(MSTJ(49).EQ.0) THEN
70495         FBR=(8D0/3D0)*LOG((1D0-ZC)/ZC)
70496         IF(IGLUI.EQ.1.AND.IR.GE.31) FBR=FBR*(9D0/4D0)
70497  
70498 C...Integral of Altarelli-Parisi z kernel for scalar gluon.
70499       ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN
70500         FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1D0-2D0*ZC)
70501       ELSEIF(MSTJ(49).EQ.1) THEN
70502         FBR=(1D0-2D0*ZC)/3D0
70503         IF(IGM.EQ.0.AND.M3JC.GE.1) FBR=4D0*FBR
70504  
70505 C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon.
70506       ELSEIF(KFL(1).EQ.21) THEN
70507         FBR=6D0*MSTJ(45)*(0.5D0-ZC)
70508       ELSE
70509         FBR=2D0*LOG((1D0-ZC)/ZC)
70510       ENDIF
70511  
70512 C...Reset QCD probability for colourless.
70513       IF(ISCOL(IR).EQ.0) FBR=0D0
70514  
70515 C...Integral of Altarelli-Parisi kernel for photon emission.
70516       FBRE=0D0
70517       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1) THEN
70518         IF(KFL(1).LE.18) THEN
70519           FBRE=(KCHG(KFL(1),1)/3D0)**2*2D0*LOG((1D0-ZCE)/ZCE)
70520         ENDIF
70521         IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE
70522       ENDIF
70523  
70524 C...Inner veto algorithm starts. Find maximum mass for evolution.
70525   410 PMS=V(IEP(1),5)
70526       IF(IGM.GE.0) THEN
70527         PM2=0D0
70528         DO 420 I=2,NEP
70529           PM=P(IEP(I),5)
70530           IRI=IREF(IEP(I)-NS)
70531           IF(KSH(IRI).EQ.1) PM=PMTH(2,IRI)
70532           PM2=PM2+PM
70533   420   CONTINUE
70534         PMS=MIN(PMS,(P(IM,5)-PM2)**2)
70535       ENDIF
70536  
70537 C...Select mass for daughter in QCD evolution.
70538       B0=27D0/6D0
70539       DO 430 IFF=4,MSTJ(45)
70540         IF(PMS.GT.4D0*PMTH(2,IFF)**2) B0=(33D0-2D0*IFF)/6D0
70541   430 CONTINUE
70542 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
70543       PMSC=MAX(0.5D0*PARJ(82),PMS-PMTH(1,IR)**2)
70544 C...Already predetermined choice.
70545       IF(IPSPD.NE.0) THEN
70546         PMSQCD=P(IPSPD,5)**2
70547       ELSEIF(FBR.LT.1D-3) THEN
70548         PMSQCD=0D0
70549       ELSEIF(MSTJ(44).LE.0) THEN
70550         PMSQCD=PMSC*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/(PARU(111)*FBR)))
70551       ELSEIF(MSTJ(44).EQ.1) THEN
70552         PMSQCD=4D0*ALAMS*(0.25D0*PMSC/ALAMS)**(PYR(0)**(B0/FBR))
70553       ELSE
70554         PMSQCD=PMSC*EXP(MAX(-50D0,ALFM*B0*LOG(PYR(0))/FBR))
70555       ENDIF
70556 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
70557       IF(IPSPD.EQ.0) PMSQCD=PMSQCD+PMTH(1,IR)**2
70558       IF(ZC.GT.0.49D0.OR.PMSQCD.LE.PMTH(4,IR)**2) PMSQCD=PMTH(2,IR)**2
70559       V(IEP(1),5)=PMSQCD
70560       MCE=1
70561  
70562 C...Select mass for daughter in QED evolution.
70563       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1.AND.IPSPD.EQ.0) THEN
70564 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
70565         PMSE=MAX(0.5D0*PARJ(83),PMS-PMTH(1,IR)**2)
70566         IF(FBRE.LT.1D-3) THEN
70567           PMSQED=0D0
70568         ELSE
70569           PMSQED=PMSE*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
70570      &    (PARU(101)*FBRE)))
70571         ENDIF
70572 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
70573         PMSQED=PMSQED+PMTH(1,IR)**2
70574         IF(ZCE.GT.0.4999D0.OR.PMSQED.LE.PMTH(5,IR)**2) PMSQED=
70575      &  PMTH(2,IR)**2
70576         IF(PMSQED.GT.PMSQCD) THEN
70577           V(IEP(1),5)=PMSQED
70578           MCE=2
70579         ENDIF
70580       ENDIF
70581  
70582 C...Check whether daughter mass below cutoff.
70583       P(IEP(1),5)=SQRT(V(IEP(1),5))
70584       IF(P(IEP(1),5).LE.PMTH(3,IR)) THEN
70585         P(IEP(1),5)=PMTH(1,IR)
70586         V(IEP(1),5)=P(IEP(1),5)**2
70587         GOTO 450
70588       ENDIF
70589  
70590 C...Already predetermined choice of z, and flavour in g -> qqbar.
70591       IF(IPSPD.NE.0) THEN
70592         IPSGD1=K(IPSPD,4)
70593         IPSGD2=K(IPSPD,5)
70594         PMSGD1=P(IPSGD1,5)**2
70595         PMSGD2=P(IPSGD2,5)**2
70596         ALAMPS=SQRT(MAX(1D-10,(PMSQCD-PMSGD1-PMSGD2)**2-
70597      &  4D0*PMSGD1*PMSGD2))
70598         Z=0.5D0*(PMSQCD*(2D0*P(IPSGD1,4)/P(IPSPD,4)-1D0)+ALAMPS-
70599      &  PMSGD1+PMSGD2)/ALAMPS
70600         Z=MAX(0.00001D0,MIN(0.99999D0,Z))
70601         IF(KFL(1).NE.21) THEN
70602           K(IEP(1),5)=21
70603         ELSE
70604           K(IEP(1),5)=IABS(K(IPSGD1,2))
70605         ENDIF
70606  
70607 C...Select z value of branching: q -> qgamma.
70608       ELSEIF(MCE.EQ.2) THEN
70609         Z=1D0-(1D0-ZCE)*(ZCE/(1D0-ZCE))**PYR(0)
70610         IF(1D0+Z**2.LT.2D0*PYR(0)) GOTO 410
70611         K(IEP(1),5)=22
70612  
70613 C...QUARKONIA+++
70614 C...Select z value of branching: QQ~[3S18] -> QQ~[3S18]g.
70615       ELSEIF(MSTJ(49).EQ.0.AND.
70616      &       (KFL(1).EQ.9900443.OR.KFL(1).EQ.9900553)) THEN
70617         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
70618 C...Select always the harder 'gluon' if the switch MSTP(149)<=0.
70619         IF(MSTP(149).LE.0.OR.PYR(0).GT.0.5D0) Z=1D0-Z
70620         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 410
70621         K(IEP(1),5)=21
70622 C...QUARKONIA---
70623  
70624 C...Select z value of branching: q -> qg, g -> gg, g -> qqbar.
70625       ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN
70626         Z=1D0-(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
70627 C...Only do z weighting when no ME correction afterwards.
70628         IF(M3JC.EQ.0.AND.1D0+Z**2.LT.2D0*PYR(0)) GOTO 410
70629         K(IEP(1),5)=21
70630       ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*0.5D0.LT.PYR(0)*FBR) THEN
70631         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
70632         IF(PYR(0).GT.0.5D0) Z=1D0-Z
70633         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 410
70634         K(IEP(1),5)=21
70635       ELSEIF(MSTJ(49).NE.1) THEN
70636         Z=PYR(0)
70637         IF(Z**2+(1D0-Z)**2.LT.PYR(0)) GOTO 410
70638         KFLB=1+INT(MSTJ(45)*PYR(0))
70639         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
70640         IF(PMQ.GE.1D0) GOTO 410
70641         IF(MSTJ(44).LE.2.OR.MSTJ(44).EQ.4) THEN
70642           IF(Z.LT.ZC.OR.Z.GT.1D0-ZC) GOTO 410
70643           PMQ0=4D0*PMTH(2,21)**2/V(IEP(1),5)
70644           IF(MOD(MSTJ(43),2).EQ.0.AND.(1D0+0.5D0*PMQ)*SQRT(1D0-PMQ)
70645      &    .LT.PYR(0)*(1D0+0.5D0*PMQ0)*SQRT(1D0-PMQ0)) GOTO 410
70646         ELSE
70647           IF((1D0+0.5D0*PMQ)*SQRT(1D0-PMQ).LT.PYR(0)) GOTO 410
70648         ENDIF
70649         K(IEP(1),5)=KFLB
70650  
70651 C...Ditto for scalar gluon model.
70652       ELSEIF(KFL(1).NE.21) THEN
70653         Z=1D0-SQRT(ZC**2+PYR(0)*(1D0-2D0*ZC))
70654         K(IEP(1),5)=21
70655       ELSEIF(PYR(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN
70656         Z=ZC+(1D0-2D0*ZC)*PYR(0)
70657         K(IEP(1),5)=21
70658       ELSE
70659         Z=ZC+(1D0-2D0*ZC)*PYR(0)
70660         KFLB=1+INT(MSTJ(45)*PYR(0))
70661         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
70662         IF(PMQ.GE.1D0) GOTO 410
70663         K(IEP(1),5)=KFLB
70664       ENDIF
70665  
70666 C...Correct to alpha_s(pT^2) (optionally m^2/4 for g -> q qbar).
70667       IF(MCE.EQ.1.AND.MSTJ(44).GE.2.AND.IPSPD.EQ.0) THEN
70668         IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
70669      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
70670           IF(ALFM/LOG(V(IEP(1),5)*0.25D0/ALAMS).LT.PYR(0)) GOTO 410
70671         ELSE
70672           PT2APP=Z*(1D0-Z)*V(IEP(1),5)
70673           IF(MSTJ(44).GE.4) PT2APP=PT2APP*
70674      &    (1D0-PMTH(1,IR)**2/V(IEP(1),5))**2
70675           IF(PT2APP.LT.PT2MIN) GOTO 410
70676           IF(ALFM/LOG(PT2APP/ALAMS).LT.PYR(0)) GOTO 410
70677         ENDIF
70678       ENDIF
70679  
70680 C...Check if z consistent with chosen m.
70681       IF(KFL(1).EQ.21) THEN
70682         IRGD1=IABS(K(IEP(1),5))
70683         IRGD2=IRGD1
70684       ELSE
70685         IRGD1=IR
70686         IRGD2=IABS(K(IEP(1),5))
70687       ENDIF
70688       IF(NEP.EQ.1) THEN
70689         PED=PS(4)
70690       ELSEIF(NEP.GE.3) THEN
70691         PED=P(IEP(1),4)
70692       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
70693         PED=0.5D0*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5)
70694       ELSE
70695         IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM
70696         IF(IEP(1).EQ.N+2) PED=(1D0-V(IM,1))*PEM
70697       ENDIF
70698       IF(MOD(MSTJ(43),2).EQ.1) THEN
70699         PMQTH3=0.5D0*PARJ(82)
70700         IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
70701         IF(IRGD2.EQ.22.AND.ISCOL(IR).EQ.0) PMQTH3=0.5D0*PARJ(90)
70702         PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(IEP(1),5)
70703         PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(IEP(1),5)
70704         ZD=SQRT(MAX(0D0,(1D0-V(IEP(1),5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
70705      &  4D0*PMQ1*PMQ2)))
70706         ZH=1D0+PMQ1-PMQ2
70707       ELSE
70708         ZD=SQRT(MAX(0D0,1D0-V(IEP(1),5)/PED**2))
70709         ZH=1D0
70710       ENDIF
70711       IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
70712      &(MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
70713       ELSEIF(IPSPD.NE.0) THEN
70714       ELSE
70715         ZL=0.5D0*(ZH-ZD)
70716         ZU=0.5D0*(ZH+ZD)
70717         IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 410
70718       ENDIF
70719       IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1D0-ZL)/MAX(1D-20,ZL*
70720      &(1D0-ZU)))
70721       IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
70722  
70723 C...Width suppression for q -> q + g.
70724       IF(MSTJ(40).NE.0.AND.KFL(1).NE.21.AND.IPSPD.EQ.0) THEN
70725         IF(IGM.EQ.0) THEN
70726           EGLU=0.5D0*PS(5)*(1D0-Z)*(1D0+V(IEP(1),5)/V(NS+1,5))
70727         ELSE
70728           EGLU=PMED*(1D0-Z)
70729         ENDIF
70730         CHI=PARJ(89)**2/(PARJ(89)**2+EGLU**2)
70731         IF(MSTJ(40).EQ.1) THEN
70732           IF(CHI.LT.PYR(0)) GOTO 410
70733         ELSEIF(MSTJ(40).EQ.2) THEN
70734           IF(1D0-CHI.LT.PYR(0)) GOTO 410
70735         ENDIF
70736       ENDIF
70737  
70738 C...Three-jet matrix element correction.
70739       IF(M3JC.GE.1) THEN
70740         WME=1D0
70741         WSHOW=1D0
70742  
70743 C...QED matrix elements: only for massless case so far.
70744         IF(MCE.EQ.2.AND.IGM.EQ.0) THEN
70745           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
70746           X2=1D0-V(IEP(1),5)/V(NS+1,5)
70747           X3=(1D0-X1)+(1D0-X2)
70748           KI1=K(IPA(INUM),2)
70749           KI2=K(IPA(3-INUM),2)
70750           QF1=KCHG(PYCOMP(KI1),1)*ISIGN(1,KI1)/3D0
70751           QF2=KCHG(PYCOMP(KI2),1)*ISIGN(1,KI2)/3D0
70752           WSHOW=QF1**2*(1D0-X1)/X3*(1D0+(X1/(2D0-X2))**2)+
70753      &    QF2**2*(1D0-X2)/X3*(1D0+(X2/(2D0-X1))**2)
70754           WME=(QF1*(1D0-X1)/X3-QF2*(1D0-X2)/X3)**2*(X1**2+X2**2)
70755         ELSEIF(MCE.EQ.2) THEN
70756  
70757 C...QCD matrix elements, including mass effects.
70758         ELSEIF(MSTJ(49).NE.1.AND.K(IEP(1),2).NE.21) THEN
70759           PS1ME=V(IEP(1),5)
70760           PM1ME=PMTH(1,IR)
70761           M3JCC=M3JC
70762           IF(IR.GE.31.AND.IGM.EQ.0) THEN
70763 C...QCD ME: original parton, first branching.
70764             PM2ME=PMTH(1,63-IR)
70765             ECMME=PS(5)
70766           ELSEIF(IR.GE.31) THEN
70767 C...QCD ME: original parton, subsequent branchings.
70768             PM2ME=PMTH(1,63-IR)
70769             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
70770             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
70771           ELSEIF(K(IM,2).EQ.21) THEN
70772 C...QCD ME: secondary partons, first branching.
70773             PM2ME=PM1ME
70774             ZMME=V(IM,1)
70775             IF(IEP(1).GT.IEP(2)) ZMME=1D0-ZMME
70776             PMLME=SQRT(MAX(0D0,(V(IM,5)-PS1ME-PM2ME**2)**2-
70777      &      4D0*PS1ME*PM2ME**2))
70778             PEDME=PEM*(0.5D0*(V(IM,5)-PMLME+PS1ME-PM2ME**2)+PMLME*ZMME)/
70779      &      V(IM,5)
70780             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
70781             M3JCC=66
70782           ELSE
70783 C...QCD ME: secondary partons, subsequent branchings.
70784             PM2ME=PM1ME
70785             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
70786             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
70787             M3JCC=66
70788           ENDIF
70789 C...Construct ME variables.
70790           R1ME=PM1ME/ECMME
70791           R2ME=PM2ME/ECMME
70792           X1=(1D0+PS1ME/ECMME**2-R2ME**2)*(Z+(1D0-Z)*PM1ME**2/PS1ME)
70793           X2=1D0+R2ME**2-PS1ME/ECMME**2
70794 C...Call ME, with right order important for two inequivalent showerers.
70795           IF(IR.EQ.IORD+30) THEN
70796             WME=PYMAEL(M3JCC,X1,X2,R1ME,R2ME,ALPHA)
70797           ELSE
70798             WME=PYMAEL(M3JCC,X2,X1,R2ME,R1ME,ALPHA)
70799           ENDIF
70800 C...Split up total ME when two radiating partons.
70801           ISPRAD=1
70802           IF((M3JCC.GE.16.AND.M3JCC.LE.19).OR.
70803      &    (M3JCC.GE.26.AND.M3JCC.LE.29).OR.
70804      &    (M3JCC.GE.36.AND.M3JCC.LE.39).OR.
70805      &    (M3JCC.GE.46.AND.M3JCC.LE.49).OR.
70806      &    (M3JCC.GE.56.AND.M3JCC.LE.64)) ISPRAD=0
70807           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
70808      &    MAX(1D-10,2D0-X1-X2)
70809 C...Evaluate shower rate to be compared with.
70810           WSHOW=2D0/(MAX(1D-10,2D0-X1-X2)*
70811      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
70812           IF(IGLUI.EQ.1.AND.IR.GE.31) WSHOW=(9D0/4D0)*WSHOW
70813         ELSEIF(MSTJ(49).NE.1) THEN
70814  
70815 C...Toy model scalar theory matrix elements; no mass effects.
70816         ELSE
70817           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
70818           X2=1D0-V(IEP(1),5)/V(NS+1,5)
70819           X3=(1D0-X1)+(1D0-X2)
70820           WSHOW=4D0*X3*((1D0-X1)/(2D0-X2)**2+(1D0-X2)/(2D0-X1)**2)
70821           WME=X3**2
70822           IF(MSTJ(102).GE.2) WME=X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*
70823      &    PARJ(171)
70824         ENDIF
70825  
70826         IF(WME.LT.PYR(0)*WSHOW) GOTO 410
70827       ENDIF
70828  
70829 C...Impose angular ordering by rejection of nonordered emission.
70830       IF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2.AND.IPSPD.EQ.0) THEN
70831         PEMAO=V(IM,1)*P(IM,4)
70832         IF(IEP(1).EQ.N+2) PEMAO=(1D0-V(IM,1))*P(IM,4)
70833         IF(IR.GE.31.AND.MSTJ(42).GE.5) THEN
70834           MAOD=0
70835         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.4
70836      &  .OR.MSTJ(42).EQ.7)) THEN
70837           MAOD=0
70838         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.3
70839      &  .OR.MSTJ(42).EQ.6)) THEN
70840           MAOD=1
70841           PMDAO=PMTH(2,K(IEP(1),5))
70842           THE2ID=Z*(1D0-Z)*PEMAO**2/(V(IEP(1),5)-4D0*PMDAO**2)
70843         ELSE
70844           MAOD=1
70845           THE2ID=Z*(1D0-Z)*PEMAO**2/V(IEP(1),5)
70846           IF(MSTJ(42).GE.3.AND.MSTJ(42).NE.5) THE2ID=THE2ID*
70847      &    (1D0+PMTH(1,IR)**2*(1D0-Z)/(V(IEP(1),5)*Z))**2
70848         ENDIF
70849         MAOM=1
70850         IAOM=IM
70851   440   IF(K(IAOM,5).EQ.22) THEN
70852           IAOM=K(IAOM,3)
70853           IF(K(IAOM,3).LE.NS) MAOM=0
70854           IF(MAOM.EQ.1) GOTO 440
70855         ENDIF
70856         IF(MAOM.EQ.1.AND.MAOD.EQ.1) THEN
70857           THE2IM=V(IAOM,1)*(1D0-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5)
70858           IF(THE2ID.LT.THE2IM) GOTO 410
70859         ENDIF
70860       ENDIF
70861  
70862 C...Impose user-defined maximum angle at first branching.
70863       IF(MSTJ(48).EQ.1.AND.IPSPD.EQ.0) THEN
70864         IF(NEP.EQ.1.AND.IM.EQ.NS) THEN
70865           THE2ID=Z*(1D0-Z)*PS(4)**2/V(IEP(1),5)
70866           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 410
70867         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN
70868           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
70869           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 410
70870         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN
70871           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
70872           IF(PARJ(86)**2*THE2ID.LT.1D0) GOTO 410
70873         ENDIF
70874       ENDIF
70875  
70876 C...Impose angular constraint in first branching from interference
70877 C...with initial state partons.
70878       IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN
70879         THE2D=MAX((1D0-Z)/Z,Z/(1D0-Z))*V(IEP(1),5)/(0.5D0*P(IM,4))**2
70880         IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN
70881           IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 410
70882         ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN
70883           IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 410
70884         ENDIF
70885       ENDIF
70886  
70887 C...End of inner veto algorithm. Check if only one leg evolved so far.
70888   450 V(IEP(1),1)=Z
70889       ISL(1)=0
70890       ISL(2)=0
70891       IF(NEP.EQ.1) GOTO 490
70892       IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 350
70893       DO 460 I=1,NEP
70894         IR=IREF(N+I-NS)
70895         IF(ITRY(I).EQ.0.AND.KSH(IR).EQ.1) THEN
70896           IF(P(N+I,5).GE.PMTH(2,IR)) GOTO 350
70897         ENDIF
70898   460 CONTINUE
70899  
70900 C...Check if chosen multiplet m1,m2,z1,z2 is physical.
70901       IF(NEP.GE.3) THEN
70902         PMSUM=0D0
70903         DO 470 I=1,NEP
70904           PMSUM=PMSUM+P(N+I,5)
70905   470   CONTINUE
70906         IF(PMSUM.GE.PS(5)) GOTO 350
70907       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN
70908         DO 480 I1=N+1,N+2
70909           IRDA=IREF(I1-NS)
70910           IF(KSH(IRDA).EQ.0) GOTO 480
70911           IF(P(I1,5).LT.PMTH(2,IRDA)) GOTO 480
70912           IF(IRDA.EQ.21) THEN
70913             IRGD1=IABS(K(I1,5))
70914             IRGD2=IRGD1
70915           ELSE
70916             IRGD1=IRDA
70917             IRGD2=IABS(K(I1,5))
70918           ENDIF
70919           I2=2*N+3-I1
70920           IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
70921             PED=0.5D0*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5)
70922           ELSE
70923             IF(I1.EQ.N+1) ZM=V(IM,1)
70924             IF(I1.EQ.N+2) ZM=1D0-V(IM,1)
70925             PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2-
70926      &      4D0*V(N+1,5)*V(N+2,5))
70927             PED=PEM*(0.5D0*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/
70928      &      V(IM,5)
70929           ENDIF
70930           IF(MOD(MSTJ(43),2).EQ.1) THEN
70931             PMQTH3=0.5D0*PARJ(82)
70932             IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
70933             IF(IRGD2.EQ.22.AND.ISCOL(IRDA).EQ.0) PMQTH3=0.5D0*PARJ(90)
70934             PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(I1,5)
70935             PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(I1,5)
70936             ZD=SQRT(MAX(0D0,(1D0-V(I1,5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
70937      &      4D0*PMQ1*PMQ2)))
70938             ZH=1D0+PMQ1-PMQ2
70939           ELSE
70940             ZD=SQRT(MAX(0D0,1D0-V(I1,5)/PED**2))
70941             ZH=1D0
70942           ENDIF
70943           IF(IRDA.EQ.21.AND.IRGD1.LT.10.AND.
70944      &    (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
70945           ELSE
70946             ZL=0.5D0*(ZH-ZD)
70947             ZU=0.5D0*(ZH+ZD)
70948             IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
70949      &      ISSET(1).EQ.0) THEN
70950               ISL(1)=1
70951             ELSEIF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
70952      &      ISSET(2).EQ.0) THEN
70953               ISL(2)=1
70954             ENDIF
70955           ENDIF
70956           IF(IRDA.EQ.21) V(I1,4)=LOG(ZU*(1D0-ZL)/MAX(1D-20,
70957      &    ZL*(1D0-ZU)))
70958           IF(IRDA.NE.21) V(I1,4)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
70959   480   CONTINUE
70960         IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN
70961           ISL(3-ISLM)=0
70962           ISLM=3-ISLM
70963         ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN
70964           ZDR1=MAX(0D0,V(N+1,3)/MAX(1D-6,V(N+1,4))-1D0)
70965           ZDR2=MAX(0D0,V(N+2,3)/MAX(1D-6,V(N+2,4))-1D0)
70966           IF(ZDR2.GT.PYR(0)*(ZDR1+ZDR2)) ISL(1)=0
70967           IF(ISL(1).EQ.1) ISL(2)=0
70968           IF(ISL(1).EQ.0) ISLM=1
70969           IF(ISL(2).EQ.0) ISLM=2
70970         ENDIF
70971         IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 350
70972       ENDIF
70973       IRD1=IREF(N+1-NS)
70974       IRD2=IREF(N+2-NS)
70975       IF(IGM.GT.0) THEN
70976         IF(MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE.
70977      &  PMTH(2,IRD1).OR.P(N+2,5).GE.PMTH(2,IRD2))) THEN
70978           PMQ1=V(N+1,5)/V(IM,5)
70979           PMQ2=V(N+2,5)/V(IM,5)
70980           ZD=SQRT(MAX(0D0,(1D0-V(IM,5)/PEM**2)*((1D0-PMQ1-PMQ2)**2-
70981      &    4D0*PMQ1*PMQ2)))
70982           ZH=1D0+PMQ1-PMQ2
70983           ZL=0.5D0*(ZH-ZD)
70984           ZU=0.5D0*(ZH+ZD)
70985           IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 350
70986         ENDIF
70987       ENDIF
70988  
70989 C...Accepted branch. Construct four-momentum for initial partons.
70990   490 MAZIP=0
70991       MAZIC=0
70992       IF(NEP.EQ.1) THEN
70993         P(N+1,1)=0D0
70994         P(N+1,2)=0D0
70995         P(N+1,3)=SQRT(MAX(0D0,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)-
70996      &  P(N+1,5))))
70997         P(N+1,4)=P(IPA(1),4)
70998         V(N+1,2)=P(N+1,4)
70999       ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN
71000         PED1=0.5D0*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5)
71001         P(N+1,1)=0D0
71002         P(N+1,2)=0D0
71003         P(N+1,3)=SQRT(MAX(0D0,(PED1+P(N+1,5))*(PED1-P(N+1,5))))
71004         P(N+1,4)=PED1
71005         P(N+2,1)=0D0
71006         P(N+2,2)=0D0
71007         P(N+2,3)=-P(N+1,3)
71008         P(N+2,4)=P(IM,5)-PED1
71009         V(N+1,2)=P(N+1,4)
71010         V(N+2,2)=P(N+2,4)
71011       ELSEIF(NEP.GE.3) THEN
71012 C...Rescale all momenta for energy conservation.
71013         LOOP=0
71014         PES=0D0
71015         PQS=0D0
71016         DO 510 I=1,NEP
71017           DO 500 J=1,4
71018             P(N+I,J)=P(IPA(I),J)
71019   500     CONTINUE
71020           PES=PES+P(N+I,4)
71021           PQS=PQS+P(N+I,5)**2/P(N+I,4)
71022   510   CONTINUE
71023   520   LOOP=LOOP+1
71024         FAC=(PS(5)-PQS)/(PES-PQS)
71025         PES=0D0
71026         PQS=0D0
71027         DO 540 I=1,NEP
71028           DO 530 J=1,3
71029             P(N+I,J)=FAC*P(N+I,J)
71030   530     CONTINUE
71031           P(N+I,4)=SQRT(P(N+I,5)**2+P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2)
71032           V(N+I,2)=P(N+I,4)
71033           PES=PES+P(N+I,4)
71034           PQS=PQS+P(N+I,5)**2/P(N+I,4)
71035   540   CONTINUE
71036         IF(LOOP.LT.10.AND.ABS(PES-PS(5)).GT.1D-12*PS(5)) GOTO 520
71037  
71038 C...Construct transverse momentum for ordinary branching in shower.
71039       ELSE
71040         ZM=V(IM,1)
71041         LOOPPT=0
71042   550   LOOPPT=LOOPPT+1
71043         PZM=SQRT(MAX(0D0,(PEM+P(IM,5))*(PEM-P(IM,5))))
71044         PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4D0*V(N+1,5)*V(N+2,5)
71045         IF(PZM.LE.0D0) THEN
71046           PTS=0D0
71047         ELSEIF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
71048      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
71049           PTS=PMLS*ZM*(1D0-ZM)/V(IM,5)
71050         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
71051           PTS=(PEM**2*(ZM*(1D0-ZM)*V(IM,5)-(1D0-ZM)*V(N+1,5)-
71052      &    ZM*V(N+2,5))-0.25D0*PMLS)/PZM**2
71053         ELSE
71054           PTS=PMLS*(ZM*(1D0-ZM)*PEM**2/V(IM,5)-0.25D0)/PZM**2
71055         ENDIF
71056         IF(PTS.LT.0D0.AND.LOOPPT.LT.10) THEN
71057           ZM=0.05D0+0.9D0*ZM
71058           GOTO 550
71059         ELSEIF(PTS.LT.0D0) THEN
71060           GOTO 280
71061         ENDIF
71062         PT=SQRT(MAX(0D0,PTS))
71063  
71064 C...Global statistics.
71065         MINT(353)=MINT(353)+1
71066         VINT(353)=VINT(353)+PT
71067         IF (MINT(353).EQ.1) VINT(358)=PT
71068  
71069 C...Find coefficient of azimuthal asymmetry due to gluon polarization.
71070         HAZIP=0D0
71071         IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21
71072      &  .AND.IAU.NE.0) THEN
71073           IF(K(IGM,3).NE.0) MAZIP=1
71074           ZAU=V(IGM,1)
71075           IF(IAU.EQ.IM+1) ZAU=1D0-V(IGM,1)
71076           IF(MAZIP.EQ.0) ZAU=0D0
71077           IF(K(IGM,2).NE.21) THEN
71078             HAZIP=2D0*ZAU/(1D0+ZAU**2)
71079           ELSE
71080             HAZIP=(ZAU/(1D0-ZAU*(1D0-ZAU)))**2
71081           ENDIF
71082           IF(K(N+1,2).NE.21) THEN
71083             HAZIP=HAZIP*(-2D0*ZM*(1D0-ZM))/(1D0-2D0*ZM*(1D0-ZM))
71084           ELSE
71085             HAZIP=HAZIP*(ZM*(1D0-ZM)/(1D0-ZM*(1D0-ZM)))**2
71086           ENDIF
71087         ENDIF
71088  
71089 C...Find coefficient of azimuthal asymmetry due to soft gluon
71090 C...interference.
71091         HAZIC=0D0
71092         IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR.
71093      &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN
71094           IF(K(IGM,3).NE.0) MAZIC=N+1
71095           IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2
71096           IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
71097      &    ZM.GT.0.5D0) MAZIC=N+2
71098           IF(K(IAU,2).EQ.22) MAZIC=0
71099           ZS=ZM
71100           IF(MAZIC.EQ.N+2) ZS=1D0-ZM
71101           ZGM=V(IGM,1)
71102           IF(IAU.EQ.IM-1) ZGM=1D0-V(IGM,1)
71103           IF(MAZIC.EQ.0) ZGM=1D0
71104           IF(MAZIC.NE.0) HAZIC=(P(IM,5)/P(IGM,5))*
71105      &    SQRT((1D0-ZS)*(1D0-ZGM)/(ZS*ZGM))
71106           HAZIC=MIN(0.95D0,HAZIC)
71107         ENDIF
71108       ENDIF
71109  
71110 C...Construct energies for ordinary branching in shower.
71111   560 IF(NEP.EQ.2.AND.IGM.GT.0) THEN
71112         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
71113      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
71114           P(N+1,4)=0.5D0*(PEM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
71115      &    PZM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
71116         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
71117           P(N+1,4)=PEM*V(IM,1)
71118         ELSE
71119           P(N+1,4)=PEM*(0.5D0*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+
71120      &    SQRT(PMLS)*ZM)/V(IM,5)
71121         ENDIF
71122  
71123 C...Already predetermined choice of phi angle or not
71124         PHI=PARU(2)*PYR(0)
71125         IF(MPSPD.EQ.1.AND.IGM.EQ.NS+1) THEN
71126           IPSPD=IP1+IM-NS-2
71127           IF(K(IPSPD,4).GT.0) THEN
71128             IPSGD1=K(IPSPD,4)
71129             IF(IM.EQ.NS+2) THEN
71130               PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
71131             ELSE
71132               PHI=PYANGL(-P(IPSGD1,1),P(IPSGD1,2))
71133             ENDIF
71134           ENDIF
71135         ELSEIF(MPSPD.EQ.1.AND.IGM.EQ.NS+2) THEN
71136           IPSPD=IP1+IM-NS-2
71137           IF(K(IPSPD,4).GT.0) THEN
71138             IPSGD1=K(IPSPD,4)
71139             PHIPSM=PYANGL(P(IPSPD,1),P(IPSPD,2))
71140             THEPSM=PYANGL(P(IPSPD,3),SQRT(P(IPSPD,1)**2+P(IPSPD,2)**2))
71141             CALL PYROBO(IPSGD1,IPSGD1,0D0,-PHIPSM,0D0,0D0,0D0)
71142             CALL PYROBO(IPSGD1,IPSGD1,-THEPSM,0D0,0D0,0D0,0D0)
71143             PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
71144             CALL PYROBO(IPSGD1,IPSGD1,THEPSM,PHIPSM,0D0,0D0,0D0)
71145           ENDIF
71146         ENDIF
71147  
71148 C...Construct momenta for ordinary branching in shower.
71149         P(N+1,1)=PT*COS(PHI)
71150         P(N+1,2)=PT*SIN(PHI)
71151         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
71152      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
71153           P(N+1,3)=0.5D0*(PZM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
71154      &    PEM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
71155         ELSEIF(PZM.GT.0D0) THEN
71156           P(N+1,3)=0.5D0*(V(N+2,5)-V(N+1,5)-V(IM,5)+
71157      &    2D0*PEM*P(N+1,4))/PZM
71158         ELSE
71159           P(N+1,3)=0D0
71160         ENDIF
71161         P(N+2,1)=-P(N+1,1)
71162         P(N+2,2)=-P(N+1,2)
71163         P(N+2,3)=PZM-P(N+1,3)
71164         P(N+2,4)=PEM-P(N+1,4)
71165         IF(MSTJ(43).LE.2) THEN
71166           V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5)
71167           V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5)
71168         ENDIF
71169       ENDIF
71170  
71171 C...Rotate and boost daughters.
71172       IF(IGM.GT.0) THEN
71173         IF(MSTJ(43).LE.2) THEN
71174           BEX=P(IGM,1)/P(IGM,4)
71175           BEY=P(IGM,2)/P(IGM,4)
71176           BEZ=P(IGM,3)/P(IGM,4)
71177           GA=P(IGM,4)/P(IGM,5)
71178           GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1D0+GA)-
71179      &    P(IM,4))
71180         ELSE
71181           BEX=0D0
71182           BEY=0D0
71183           BEZ=0D0
71184           GA=1D0
71185           GABEP=0D0
71186         ENDIF
71187         PTIMB=SQRT((P(IM,1)+GABEP*BEX)**2+(P(IM,2)+GABEP*BEY)**2)
71188         THE=PYANGL(P(IM,3)+GABEP*BEZ,PTIMB)
71189         IF(PTIMB.GT.1D-4) THEN
71190           PHI=PYANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY)
71191         ELSE
71192           PHI=0D0
71193         ENDIF
71194         DO 570 I=N+1,N+2
71195           DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+
71196      &    SIN(THE)*COS(PHI)*P(I,3)
71197           DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+
71198      &    SIN(THE)*SIN(PHI)*P(I,3)
71199           DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3)
71200           DP(4)=P(I,4)
71201           DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3)
71202           DGABP=GA*(GA*DBP/(1D0+GA)+DP(4))
71203           P(I,1)=DP(1)+DGABP*BEX
71204           P(I,2)=DP(2)+DGABP*BEY
71205           P(I,3)=DP(3)+DGABP*BEZ
71206           P(I,4)=GA*(DP(4)+DBP)
71207   570   CONTINUE
71208       ENDIF
71209  
71210 C...Weight with azimuthal distribution, if required.
71211       IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN
71212         DO 580 J=1,3
71213           DPT(1,J)=P(IM,J)
71214           DPT(2,J)=P(IAU,J)
71215           DPT(3,J)=P(N+1,J)
71216   580   CONTINUE
71217         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
71218         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
71219         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
71220         DO 590 J=1,3
71221           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
71222           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
71223   590   CONTINUE
71224         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
71225         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
71226         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
71227           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
71228      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
71229           IF(MAZIP.NE.0) THEN
71230             IF(1D0+HAZIP*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(HAZIP)))
71231      &      GOTO 560
71232           ENDIF
71233           IF(MAZIC.NE.0) THEN
71234             IF(MAZIC.EQ.N+2) CAD=-CAD
71235             IF((1D0-HAZIC)*(1D0-HAZIC*CAD)/(1D0+HAZIC**2-2D0*HAZIC*CAD)
71236      &      .LT.PYR(0)) GOTO 560
71237           ENDIF
71238         ENDIF
71239       ENDIF
71240  
71241 C...Azimuthal anisotropy due to interference with initial state partons.
71242       IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR.
71243      &K(N+2,2).EQ.21)) THEN
71244         III=IM-NS-1
71245         IF(ISII(III).GE.1) THEN
71246           IAZIID=N+1
71247           IF(K(N+1,2).NE.21) IAZIID=N+2
71248           IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
71249      &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2
71250           THEIID=PYANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2))
71251           IF(III.EQ.2) THEIID=PARU(1)-THEIID
71252           PHIIID=PYANGL(P(IAZIID,1),P(IAZIID,2))
71253           HAZII=MIN(0.95D0,THEIID/THEIIS(III,ISII(III)))
71254           CAD=COS(PHIIID-PHIIIS(III,ISII(III)))
71255           PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III)))
71256           IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL
71257           IF((1D0-HAZII)*(1D0-HAZII*CAD)/(1D0+HAZII**2-2D0*HAZII*CAD)
71258      &    .LT.PYR(0)) GOTO 560
71259         ENDIF
71260       ENDIF
71261  
71262 C...Continue loop over partons that may branch, until none left.
71263       IF(IGM.GE.0) K(IM,1)=14
71264       N=N+NEP
71265       NEP=2
71266       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
71267         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
71268         IF(MSTU(21).GE.1) N=NS
71269         IF(MSTU(21).GE.1) RETURN
71270       ENDIF
71271       GOTO 290
71272  
71273 C...Set information on imagined shower initiator.
71274   600 IF(NPA.GE.2) THEN
71275         K(NS+1,1)=11
71276         K(NS+1,2)=94
71277         K(NS+1,3)=IP1
71278         IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2
71279         K(NS+1,4)=NS+2
71280         K(NS+1,5)=NS+1+NPA
71281         IIM=1
71282       ELSE
71283         IIM=0
71284       ENDIF
71285  
71286 C...Reconstruct string drawing information.
71287       DO 610 I=NS+1+IIM,N
71288         KQ=KCHG(PYCOMP(K(I,2)),2)
71289         IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN
71290           K(I,1)=1
71291         ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND.
71292      &    IABS(K(I,2)).LE.18) THEN
71293           K(I,1)=1
71294         ELSEIF(K(I,1).LE.10) THEN
71295           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))
71296           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))
71297         ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN
71298           ID1=MOD(K(I,4),MSTU(5))
71299           IF(KQ.EQ.1.AND.K(I,2).GT.0) ID1=MOD(K(I,4),MSTU(5))+1
71300           IF(KQ.EQ.2.AND.(K(ID1,2).EQ.21.OR.K(ID1+1,2).EQ.21).AND.
71301      &    PYR(0).GT.0.5D0) ID1=MOD(K(I,4),MSTU(5))+1
71302           ID2=2*MOD(K(I,4),MSTU(5))+1-ID1
71303           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
71304           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2
71305           K(ID1,4)=K(ID1,4)+MSTU(5)*I
71306           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
71307           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
71308           K(ID2,5)=K(ID2,5)+MSTU(5)*I
71309         ELSE
71310           ID1=MOD(K(I,4),MSTU(5))
71311           ID2=ID1+1
71312           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
71313           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1
71314           IF(KQ.EQ.1.OR.K(ID1,1).GE.11) THEN
71315             K(ID1,4)=K(ID1,4)+MSTU(5)*I
71316             K(ID1,5)=K(ID1,5)+MSTU(5)*I
71317           ELSE
71318             K(ID1,4)=0
71319             K(ID1,5)=0
71320           ENDIF
71321           K(ID2,4)=0
71322           K(ID2,5)=0
71323         ENDIF
71324   610 CONTINUE
71325  
71326 C...Transformation from CM frame.
71327       IF(NPA.EQ.1) THEN
71328         THE=PYANGL(P(IPA(1),3),SQRT(P(IPA(1),1)**2+P(IPA(1),2)**2))
71329         PHI=PYANGL(P(IPA(1),1),P(IPA(1),2))
71330         MSTU(33)=1
71331         CALL PYROBO(NS+1,N,THE,PHI,0D0,0D0,0D0)
71332       ELSEIF(NPA.EQ.2) THEN
71333         BEX=PS(1)/PS(4)
71334         BEY=PS(2)/PS(4)
71335         BEZ=PS(3)/PS(4)
71336         GA=PS(4)/PS(5)
71337         GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3))
71338      &  /(1D0+GA)-P(IPA(1),4))
71339         THE=PYANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1)
71340      &  +GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2))
71341         PHI=PYANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY)
71342         MSTU(33)=1
71343         CALL PYROBO(NS+1,N,THE,PHI,BEX,BEY,BEZ)
71344       ELSE
71345         CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),
71346      &  PS(3)/PS(4))
71347         MSTU(33)=1
71348         CALL PYROBO(NS+1,N,0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),PS(3)/PS(4))
71349       ENDIF
71350  
71351 C...Decay vertex of shower.
71352       DO 630 I=NS+1,N
71353         DO 620 J=1,5
71354           V(I,J)=V(IP1,J)
71355   620   CONTINUE
71356   630 CONTINUE
71357  
71358 C...Delete trivial shower, else connect initiators.
71359       IF(N.LE.NS+NPA+IIM) THEN
71360         N=NS
71361       ELSE
71362         DO 640 IP=1,NPA
71363           K(IPA(IP),1)=14
71364           K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP
71365           K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP
71366           K(NS+IIM+IP,3)=IPA(IP)
71367           IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1
71368           IF(K(NS+IIM+IP,1).NE.1) THEN
71369             K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4)
71370             K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5)
71371           ENDIF
71372   640   CONTINUE
71373       ENDIF
71374  
71375       RETURN
71376       END
71377  
71378 C*********************************************************************
71379  
71380 C...PYPTFS
71381 C...Generates pT-ordered timelike final-state parton showers.
71382  
71383 C...MODE defines how to find radiators and recoilers.
71384 C... = 0 : based on colour flow between undecayed partons.
71385 C... = 1 : for IPART <= NPARTD only consider primary partons,
71386 C...       whether decayed or not; else as above.
71387 C... = 2 : based on common history, whether decayed or not.
71388 C... = 3 : use (or create) MCT color information to shower partons
71389  
71390       SUBROUTINE PYPTFS(MODE,PTMAX,PTMIN,PTGEN)
71391  
71392 C...Double precision and integer declarations.
71393       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71394       IMPLICIT INTEGER(I-N)
71395       INTEGER PYK,PYCHGE,PYCOMP
71396 C...Parameter statement to help give large particle numbers.
71397       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
71398      &KEXCIT=4000000,KDIMEN=5000000)
71399 C...Parameter statement for maximum size of showers.
71400       PARAMETER (MAXNUR=1000)
71401 C...Commonblocks.
71402       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
71403       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
71404       COMMON/PYCTAG/NCT,MCT(4000,2)
71405       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71406       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71407       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
71408       COMMON/PYINT1/MINT(400),VINT(400)
71409       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYPARS/,
71410      &/PYINT1/
71411 C...Local arrays.
71412       DIMENSION IPOS(2*MAXNUR),IREC(2*MAXNUR),IFLG(2*MAXNUR),
71413      &ISCOL(2*MAXNUR),ISCHG(2*MAXNUR),PTSCA(2*MAXNUR),IMESAV(2*MAXNUR),
71414      &PT2SAV(2*MAXNUR),ZSAV(2*MAXNUR),SHTSAV(2*MAXNUR),
71415      &MESYS(MAXNUR,0:2),PSUM(5),DPT(5,4)
71416 C...Statement functions.
71417       SHAT(L,J)=(P(L,4)+P(J,4))**2-(P(L,1)+P(J,1))**2-
71418      &(P(L,2)+P(J,2))**2-(P(L,3)+P(J,3))**2
71419       DOTP(L,J)=P(L,4)*P(J,4)-P(L,1)*P(J,1)-P(L,2)*P(J,2)-P(L,3)*P(J,3)
71420  
71421 C...Initial values. Check that valid system.
71422       PTGEN=0D0
71423       IF(MSTJ(41).NE.1.AND.MSTJ(41).NE.2.AND.MSTJ(41).NE.11.AND.
71424      &MSTJ(41).NE.12) RETURN
71425       IF(NPART.LE.0) THEN
71426         CALL PYERRM(2,'(PYPTFS:) showering system too small')
71427         RETURN
71428       ENDIF
71429       PT2CMX=PTMAX**2
71430       IORD=1
71431  
71432 C...Mass thresholds and Lambda for QCD evolution.
71433       PMB=PMAS(5,1)
71434       PMC=PMAS(4,1)
71435       ALAM5=PARJ(81)
71436       ALAM4=ALAM5*(PMB/ALAM5)**(2D0/25D0)
71437       ALAM3=ALAM4*(PMC/ALAM4)**(2D0/27D0)
71438       PMBS=PMB**2
71439       PMCS=PMC**2
71440       ALAM5S=ALAM5**2
71441       ALAM4S=ALAM4**2
71442       ALAM3S=ALAM3**2
71443  
71444 C...Cutoff scale for QCD evolution. Starting pT2.
71445       NFLAV=MAX(0,MIN(5,MSTJ(45)))
71446       PT0C=0.5D0*PARJ(82)
71447       PT2CMN=MAX(PTMIN,PT0C,1.1D0*ALAM3)**2
71448  
71449 C...Parameters for QED evolution.
71450       AEM2PI=PARU(101)/PARU(2)
71451       PT0EQ=0.5D0*PARJ(83)
71452       PT0EL=0.5D0*PARJ(90)
71453  
71454 C...Reset. Remove irrelevant colour tags.
71455       NEVOL=0
71456       DO 100 J=1,4
71457         PSUM(J)=0D0
71458   100 CONTINUE
71459       DO 110 I=MINT(84)+1,N
71460         IF(K(I,2).GT.0.AND.K(I,2).LT.6) THEN
71461           K(I,5)=0
71462           MCT(I,2)=0
71463         ENDIF
71464         IF(K(I,2).LT.0.AND.K(I,2).GT.-6) THEN
71465           K(I,4)=0
71466           MCT(I,1)=0
71467         ENDIF
71468   110 CONTINUE
71469       NPARTS=NPART
71470  
71471 C...Begin loop to set up showering partons. Sum four-momenta.
71472       DO 230 IP=1,NPART
71473         I=IPART(IP)
71474         IF(MODE.NE.1.OR.I.GT.NPARTD) THEN
71475           IF(K(I,1).GT.10) GOTO 230
71476         ELSEIF(K(I,3).GT.MINT(84)) THEN
71477           IF(K(I,3).GT.MINT(84)+2) GOTO 230
71478         ELSE
71479           IF(K(K(I,3),3).GT.MINT(83)+6) GOTO 230
71480         ENDIF
71481         DO 120 J=1,4
71482           PSUM(J)=PSUM(J)+P(I,J)
71483   120   CONTINUE
71484  
71485 C...Find colour and charge, but skip diquarks.
71486         IF(IABS(K(I,2)).GT.1000.AND.IABS(K(I,2)).LT.10000) GOTO 230
71487         KCOL=PYK(I,12)
71488         KCHA=PYK(I,6)
71489  
71490 C...QUARKONIA++
71491         IF (IABS(K(I,2)).GE.9900101.AND.IABS(K(I,2)).LE.9910555) THEN
71492           IF (MSTP(148).GE.1) THEN
71493 C...Temporary: force no radiation from quarkonia since not yet treated
71494             CALL PYERRM(11,'(PYPTFS:) quarkonia showers not yet in'
71495      &          //' PYPTFS, switched off')
71496             CALL PYGIVE('MSTP(148)=0')
71497           ENDIF
71498           IF (MSTP(148).EQ.0) THEN
71499 C...Skip quarkonia if radiation switched off
71500             GOTO 230
71501           ENDIF
71502         ENDIF
71503 C...QUARKONIA--
71504  
71505 C...Option to switch off radiation from particle KF = MSTJ(39) entirely
71506 C...(only intended for studying the effects of switching such rad on/off)
71507         IF (MSTJ(39).GT.0.AND.IABS(K(I,2)).EQ.MSTJ(39)) THEN
71508           GOTO 230
71509         ENDIF
71510  
71511 C...Either colour or anticolour charge radiates; for gluon both.
71512         DO 180 JSGCOL=1,-1,-2
71513           IF(KCOL.EQ.JSGCOL.OR.KCOL.EQ.2) THEN
71514             JCOL=4+(1-JSGCOL)/2
71515             JCOLR=9-JCOL
71516  
71517 C...Basic info about radiating parton.
71518             NEVOL=NEVOL+1
71519             IPOS(NEVOL)=I
71520             IFLG(NEVOL)=0
71521             ISCOL(NEVOL)=JSGCOL
71522             ISCHG(NEVOL)=0
71523             PTSCA(NEVOL)=PTPART(IP)
71524  
71525 C...Begin search for colour recoiler when MODE = 0 or 1.
71526             IF(MODE.LE.1) THEN
71527 C...Find sister with matching anticolour to the radiating parton.
71528               IROLD=I
71529               IRNEW=K(IROLD,JCOL)/MSTU(5)
71530               MOVE=1
71531  
71532 C...Skip radiation off loose colour ends.
71533   130         IF(IRNEW.EQ.0) THEN
71534                 NEVOL=NEVOL-1
71535                 GOTO 180
71536  
71537 C...Optionally skip radiation on dipole to beam remnant.
71538               ELSEIF(MSTP(72).LE.1.AND.IRNEW.GT.MINT(53)) THEN
71539                 NEVOL=NEVOL-1
71540                 GOTO 180
71541  
71542 C...For now always skip radiation on dipole to junction.
71543               ELSEIF(K(IRNEW,2).EQ.88) THEN
71544                 NEVOL=NEVOL-1
71545                 GOTO 180
71546  
71547 C...For MODE=1: if reached primary then done.
71548               ELSEIF(MODE.EQ.1.AND.IRNEW.GT.MINT(84)+2.AND.
71549      &        IRNEW.LE.NPARTD) THEN
71550  
71551 C...If sister stable and points back then done.
71552               ELSEIF(MOVE.EQ.1.AND.K(IRNEW,JCOLR)/MSTU(5).EQ.IROLD)
71553      &        THEN
71554                 IF(K(IRNEW,1).LT.10) THEN
71555  
71556 C...If sister unstable then go to her daughter.
71557                 ELSE
71558                   IROLD=IRNEW
71559                   IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
71560                   MOVE=2
71561                   GOTO 130
71562                ENDIF
71563  
71564 C...If found mother then look for aunt.
71565               ELSEIF(MOVE.EQ.1.AND.MOD(K(IRNEW,JCOL),MSTU(5)).EQ.
71566      &        IROLD) THEN
71567                 IROLD=IRNEW
71568                 IRNEW=K(IROLD,JCOL)/MSTU(5)
71569                 GOTO 130
71570  
71571 C...If daughter stable then done.
71572               ELSEIF(MOVE.EQ.2.AND.K(IRNEW,JCOLR)/MSTU(5).EQ.IROLD)
71573      &        THEN
71574                 IF(K(IRNEW,1).LT.10) THEN
71575  
71576 C...If daughter unstable then go to granddaughter.
71577                 ELSE
71578                   IROLD=IRNEW
71579                   IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
71580                   MOVE=2
71581                   GOTO 130
71582                 ENDIF
71583  
71584 C...If daughter points to another daughter then done or move up.
71585               ELSEIF(MOVE.EQ.2.AND.MOD(K(IRNEW,JCOL),MSTU(5)).EQ.
71586      &        IROLD) THEN
71587                 IF(K(IRNEW,1).LT.10) THEN
71588                 ELSE
71589                   IROLD=IRNEW
71590                   IRNEW=K(IRNEW,JCOL)/MSTU(5)
71591                   MOVE=1
71592                   GOTO 130
71593                 ENDIF
71594               ENDIF
71595  
71596 C...Begin search for colour recoiler when MODE = 2.
71597             ELSEIF (MODE.EQ.2) THEN
71598               IROLD=I
71599               IRNEW=K(IROLD,JCOL)/MSTU(5)
71600   140         IF (IRNEW.LE.0.OR.IRNEW.GT.N) THEN
71601 C...If no color partner found, pick at random among other primaries
71602 C...(e.g., when the color line is traced all the way to the beam)
71603                 ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
71604                 IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
71605               ELSEIF(K(IRNEW,JCOLR)/MSTU(5).NE.IROLD) THEN
71606 C...Step up to mother if radiating parton already branched.
71607                 IF(K(IRNEW,2).EQ.K(IROLD,2)) THEN
71608                   IROLD=IRNEW
71609                   IRNEW=K(IROLD,JCOL)/MSTU(5)
71610                   GOTO 140
71611 C...Pick sister by history if no anticolour available.
71612                 ELSE
71613                   IF(IROLD.GT.1.AND.K(IROLD-1,3).EQ.K(IROLD,3)) THEN
71614                     IRNEW=IROLD-1
71615                   ELSEIF(IROLD.LT.N.AND.K(IROLD+1,3).EQ.K(IROLD,3))
71616      &            THEN
71617                     IRNEW=IROLD+1
71618 C...Last resort: pick at random among other primaries.
71619                   ELSE
71620                     ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
71621                     IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
71622                   ENDIF
71623                 ENDIF
71624               ENDIF
71625 C...Trace down if sister branched.
71626   150         IF(K(IRNEW,1).GT.10) THEN
71627                 IRTMP=MOD(K(IRNEW,JCOLR),MSTU(5))
71628 C...If no correct color-daughter found, swap.
71629                 IF (IRTMP.EQ.0) THEN
71630                   JCOL=9-JCOL
71631                   JCOLR=9-JCOLR
71632                   IRTMP=MOD(K(IRNEW,JCOLR),MSTU(5))
71633                 ENDIF
71634                 IRNEW=IRTMP
71635                 GOTO 150
71636               ENDIF
71637             ELSEIF (MODE.EQ.3) THEN
71638 C...The following will add MCT colour tracing for unprepped events
71639 C...If not done, trace Les Houches colour tags for this dipole
71640               JCOLSV=JCOL
71641               IF (MCT(I,JCOL-3).EQ.0) THEN
71642 C...Special end code -1 : trace to color partner or 0, return in IEND
71643                 IEND=-1
71644                 CALL PYCTTR(I,JCOL,IEND)
71645 C...Clean up mother/daughter 'read' tags set by PYCTTR
71646                 JCOL=JCOLSV
71647                 DO 160 IR=1,N
71648                   K(IR,4)=MOD(K(IR,4),MSTU(5)**2)
71649                   K(IR,5)=MOD(K(IR,5),MSTU(5)**2)
71650                   MCT(IR,1)=0
71651                   MCT(IR,2)=0
71652   160           CONTINUE
71653               ELSE
71654                 IEND=0
71655                 DO 170 IR=1,N
71656                   IF (K(IR,1).GT.0.AND.MCT(IR,6-JCOL).EQ.MCT(I,JCOL-3))
71657      &                IEND=IR
71658   170           CONTINUE
71659               ENDIF
71660 C...If no color partner, then we hit beam
71661               IF (IEND.LE.0) THEN
71662 C...For MSTP(72) <= 1, do not allow dipoles stretched to beam to radiate
71663                 IF (MSTP(72).LE.1) THEN
71664                   NEVOL=NEVOL-1
71665                   GOTO 180
71666                 ELSE
71667 C...Else try a random partner
71668                   ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
71669                   IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
71670                 ENDIF
71671               ELSE
71672 C...Else save recoiling colour partner
71673                 IRNEW=IEND
71674               ENDIF
71675  
71676             ENDIF
71677  
71678 C...Now found other end of colour dipole.
71679             IREC(NEVOL)=IRNEW
71680           ENDIF
71681   180   CONTINUE
71682  
71683 C...Also electrical charge may radiate; so far only quarks and leptons.
71684         IF((MSTJ(41).EQ.2.OR.MSTJ(41).EQ.12).AND.KCHA.NE.0.AND.
71685      &  IABS(K(I,2)).LE.18) THEN
71686  
71687 C...Basic info about radiating parton.
71688           NEVOL=NEVOL+1
71689           IPOS(NEVOL)=I
71690           IFLG(NEVOL)=0
71691           ISCOL(NEVOL)=0
71692           ISCHG(NEVOL)=KCHA
71693           PTSCA(NEVOL)=PTPART(IP)
71694  
71695 C...Pick nearest (= smallest invariant mass) charged particle
71696 C...as recoiler when MODE = 0 or 1 (but for latter among primaries).
71697           IF(MODE.LE.1) THEN
71698             IRNEW=0
71699             PM2MIN=VINT(2)
71700             DO 190 IP2=1,NPART+N-MINT(53)
71701               IF(IP2.EQ.IP) GOTO 190
71702               IF(IP2.LE.NPART) THEN
71703                 I2=IPART(IP2)
71704                 IF(MODE.NE.1.OR.I2.GT.NPARTD) THEN
71705                   IF(K(I2,1).GT.10) GOTO 190
71706                 ELSEIF(K(I2,3).GT.MINT(84)) THEN
71707                   IF(K(I2,3).GT.MINT(84)+2) GOTO 190
71708                 ELSE
71709                   IF(K(K(I2,3),3).GT.MINT(83)+6) GOTO 190
71710                 ENDIF
71711               ELSE
71712                 I2=MINT(53)+IP2-NPART
71713               ENDIF
71714               IF(KCHG(PYCOMP(K(I2,2)),1).EQ.0) GOTO 190
71715               PM2INV=(P(I,4)+P(I2,4))**2-(P(I,1)+P(I2,1))**2-
71716      &        (P(I,2)+P(I2,2))**2-(P(I,3)+P(I2,3))**2
71717               IF(PM2INV.LT.PM2MIN) THEN
71718                 IRNEW=I2
71719                 PM2MIN=PM2INV
71720               ENDIF
71721   190       CONTINUE
71722             IF(IRNEW.EQ.0) THEN
71723               NEVOL=NEVOL-1
71724               GOTO 230
71725             ENDIF
71726  
71727 C...Begin search for charge recoiler when MODE = 2.
71728           ELSE
71729             IROLD=I
71730 C...Pick sister by history; step up if parton already branched.
71731   200       IF(K(IROLD,3).GT.0.AND.K(K(IROLD,3),2).EQ.K(IROLD,2)) THEN
71732               IROLD=K(IROLD,3)
71733               GOTO 200
71734             ENDIF
71735             IF(IROLD.GT.1.AND.K(IROLD-1,3).EQ.K(IROLD,3)) THEN
71736               IRNEW=IROLD-1
71737             ELSEIF(IROLD.LT.N.AND.K(IROLD+1,3).EQ.K(IROLD,3)) THEN
71738               IRNEW=IROLD+1
71739 C...Last resort: pick at random among other primaries.
71740             ELSE
71741               ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
71742               IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
71743             ENDIF
71744 C...Trace down if sister branched.
71745   210       IF(K(IRNEW,1).GT.10) THEN
71746               DO 220 IR=IRNEW+1,N
71747                 IF(K(IR,3).EQ.IRNEW.AND.K(IR,2).EQ.K(IRNEW,2)) THEN
71748                   IRNEW=IR
71749                   GOTO 210
71750                 ENDIF
71751   220         CONTINUE
71752             ENDIF
71753           ENDIF
71754           IREC(NEVOL)=IRNEW
71755         ENDIF
71756  
71757 C...End loop to set up showering partons. System invariant mass.
71758   230 CONTINUE
71759       IF(NEVOL.LE.0) RETURN
71760       IF (MODE.EQ.3.AND.NEVOL.LE.1) RETURN
71761       PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
71762  
71763 C...Check if 3-jet matrix elements to be used.
71764       M3JC=0
71765       ALPHA=0.5D0
71766       NMESYS=0
71767       IF(MSTJ(47).GE.1) THEN
71768  
71769 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
71770         KFSRCE=0
71771         IPART1=K(IPART(1),3)
71772         IPART2=K(IPART(2),3)
71773   240   IF(IPART1.EQ.IPART2.AND.IPART1.GT.0) THEN
71774           KFSRCE=IABS(K(IPART1,2))
71775         ELSEIF(IPART1.GT.IPART2.AND.IPART2.GT.0) THEN
71776           IPART1=K(IPART1,3)
71777           GOTO 240
71778         ELSEIF(IPART2.GT.IPART1.AND.IPART1.GT.0) THEN
71779           IPART2=K(IPART2,3)
71780           GOTO 240
71781         ENDIF
71782         ITYPES=0
71783         IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
71784         IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
71785         IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
71786         IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
71787         IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
71788         IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
71789         IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
71790         IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
71791  
71792 C...Identify two primary showerers.
71793         KFLA1=IABS(K(IPART(1),2))
71794         ITYPE1=0
71795         IF(KFLA1.GE.1.AND.KFLA1.LE.8) ITYPE1=1
71796         IF(KFLA1.GE.KSUSY1+1.AND.KFLA1.LE.KSUSY1+8) ITYPE1=2
71797         IF(KFLA1.GE.KSUSY2+1.AND.KFLA1.LE.KSUSY2+8) ITYPE1=2
71798         IF(KFLA1.GE.21.AND.KFLA1.LE.24) ITYPE1=3
71799         IF(KFLA1.GE.32.AND.KFLA1.LE.34) ITYPE1=3
71800         IF(KFLA1.EQ.25.OR.(KFLA1.GE.35.AND.KFLA1.LE.37)) ITYPE1=4
71801         IF(KFLA1.GE.KSUSY1+22.AND.KFLA1.LE.KSUSY1+37) ITYPE1=5
71802         IF(KFLA1.EQ.KSUSY1+21) ITYPE1=6
71803         KFLA2=IABS(K(IPART(2),2))
71804         ITYPE2=0
71805         IF(KFLA2.GE.1.AND.KFLA2.LE.8) ITYPE2=1
71806         IF(KFLA2.GE.KSUSY1+1.AND.KFLA2.LE.KSUSY1+8) ITYPE2=2
71807         IF(KFLA2.GE.KSUSY2+1.AND.KFLA2.LE.KSUSY2+8) ITYPE2=2
71808         IF(KFLA2.GE.21.AND.KFLA2.LE.24) ITYPE2=3
71809         IF(KFLA2.GE.32.AND.KFLA2.LE.34) ITYPE2=3
71810         IF(KFLA2.EQ.25.OR.(KFLA2.GE.35.AND.KFLA2.LE.37)) ITYPE2=4
71811         IF(KFLA2.GE.KSUSY1+22.AND.KFLA2.LE.KSUSY1+37) ITYPE2=5
71812         IF(KFLA2.EQ.KSUSY1+21) ITYPE2=6
71813  
71814 C...Order of showerers. Presence of gluino.
71815         ITYPMN=MIN(ITYPE1,ITYPE2)
71816         ITYPMX=MAX(ITYPE1,ITYPE2)
71817         IORD=1
71818         IF(ITYPE1.GT.ITYPE2) IORD=2
71819         IGLUI=0
71820         IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
71821  
71822 C...Require exactly two primary showerers for ME corrections.
71823         NPRIM=0
71824         IF(IPART1.GT.0) THEN
71825           DO 250 I=1,N
71826             IF(K(I,3).EQ.IPART1.AND.K(I,2).NE.K(IPART1,2)) NPRIM=NPRIM+1
71827   250     CONTINUE
71828         ENDIF
71829         IF(NPRIM.NE.2) THEN
71830  
71831 C...Predetermined and default matrix element kinds.
71832         ELSEIF(MSTJ(38).NE.0) THEN
71833           M3JC=MSTJ(38)
71834           ALPHA=PARJ(80)
71835           MSTJ(38)=0
71836         ELSEIF(MSTJ(47).GE.6) THEN
71837           M3JC=MSTJ(47)
71838         ELSE
71839           ICLASS=1
71840           ICOMBI=4
71841  
71842 C...Vector/axial vector -> q + qbar; q -> q + V.
71843           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
71844      &    ITYPES.EQ.3)) THEN
71845             ICLASS=2
71846             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
71847               ICOMBI=1
71848             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
71849      &      K(IPART(1),2)+K(IPART(2),2).EQ.0)) THEN
71850 C...gamma*/Z0: assume e+e- initial state if unknown.
71851               EI=-1D0
71852               IF(KFSRCE.EQ.23) THEN
71853                 IANNFL=IPART1
71854                 IF(K(IANNFL,2).EQ.23) IANNFL=K(IANNFL,3)
71855                 IF(IANNFL.GT.0) THEN
71856                   IF(K(IANNFL,2).EQ.23) IANNFL=K(IANNFL,3)
71857                 ENDIF
71858                 IF(IANNFL.NE.0) THEN
71859                   KANNFL=IABS(K(IANNFL,2))
71860                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
71861                 ENDIF
71862               ENDIF
71863               AI=SIGN(1D0,EI+0.1D0)
71864               VI=AI-4D0*EI*PARU(102)
71865               EF=KCHG(KFLA1,1)/3D0
71866               AF=SIGN(1D0,EF+0.1D0)
71867               VF=AF-4D0*EF*PARU(102)
71868               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
71869               SH=PSUM(5)**2
71870               SQMZ=PMAS(23,1)**2
71871               SQWZ=PSUM(5)*PMAS(23,2)
71872               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
71873               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
71874      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
71875               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
71876               ICOMBI=3
71877               ALPHA=VECT/(VECT+AXIV)
71878             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
71879               ICOMBI=4
71880             ENDIF
71881 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
71882           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
71883             ICLASS=2
71884           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
71885      &    ITYPES.EQ.1)) THEN
71886             ICLASS=3
71887  
71888 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
71889           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
71890             ICLASS=4
71891             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
71892               ICOMBI=1
71893             ELSEIF(KFSRCE.EQ.36) THEN
71894               ICOMBI=2
71895             ENDIF
71896           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
71897      &    ITYPES.EQ.1)) THEN
71898             ICLASS=5
71899  
71900 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
71901           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
71902      &    ITYPES.EQ.3)) THEN
71903             ICLASS=6
71904           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
71905      &    ITYPES.EQ.2)) THEN
71906             ICLASS=7
71907           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
71908             ICLASS=8
71909           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
71910      &    ITYPES.EQ.2)) THEN
71911             ICLASS=9
71912  
71913 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
71914           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
71915      &    ITYPES.EQ.5)) THEN
71916             ICLASS=10
71917           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
71918      &    ITYPES.EQ.2)) THEN
71919             ICLASS=11
71920           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
71921      &    ITYPES.EQ.1)) THEN
71922             ICLASS=12
71923  
71924 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
71925           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
71926             ICLASS=13
71927           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
71928      &    ITYPES.EQ.2)) THEN
71929             ICLASS=14
71930           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
71931      &    ITYPES.EQ.1)) THEN
71932             ICLASS=15
71933  
71934 C...g -> ~g + ~g (eikonal approximation).
71935           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
71936             ICLASS=16
71937           ENDIF
71938           M3JC=5*ICLASS+ICOMBI
71939         ENDIF
71940  
71941 C...Store pair that together define matrix element treatment.
71942         IF(M3JC.NE.0) THEN
71943           NMESYS=1
71944           MESYS(NMESYS,0)=M3JC
71945           MESYS(NMESYS,1)=IPART(1)
71946           MESYS(NMESYS,2)=IPART(2)
71947         ENDIF
71948  
71949 C...Store qqbar or l+l- pairs for QED radiation.
71950         IF(KFLA1.LE.18.AND.KFLA2.LE.18) THEN
71951           NMESYS=NMESYS+1
71952           MESYS(NMESYS,0)=101
71953           IF(K(IPART(1),2)+K(IPART(2),2).EQ.0) MESYS(NMESYS,0)=102
71954           MESYS(NMESYS,1)=IPART(1)
71955           MESYS(NMESYS,2)=IPART(2)
71956         ENDIF
71957  
71958 C...Store other qqbar/l+l- pairs from g/gamma branchings.
71959         DO 290 I1=1,N
71960           IF(K(I1,1).GT.10.OR.IABS(K(I1,2)).GT.18) GOTO 290
71961           I1M=K(I1,3)
71962   260     IF(I1M.GT.0) THEN
71963             IF(K(I1M,2).EQ.K(I1,2)) THEN
71964               I1M=K(I1M,3)
71965               GOTO 260
71966             ENDIF
71967           ENDIF
71968 C...Move up this check to avoid out-of-bounds.
71969           IF(I1M.EQ.0) GOTO 290
71970           IF(K(I1M,2).NE.21.AND.K(I1M,2).NE.22) GOTO 290
71971           DO 280 I2=I1+1,N
71972             IF(K(I2,1).GT.10.OR.K(I2,2)+K(I1,2).NE.0) GOTO 280
71973             I2M=K(I2,3)
71974   270       IF(I2M.GT.0) THEN
71975               IF(K(I2M,2).EQ.K(I2,2)) THEN
71976                 I2M=K(I2M,3)
71977                 GOTO 270
71978               ENDIF
71979             ENDIF
71980             IF(I1M.EQ.I2M.AND.I1M.GT.0) THEN
71981               NMESYS=NMESYS+1
71982               MESYS(NMESYS,0)=66
71983               MESYS(NMESYS,1)=I1
71984               MESYS(NMESYS,2)=I2
71985               NMESYS=NMESYS+1
71986               MESYS(NMESYS,0)=102
71987               MESYS(NMESYS,1)=I1
71988               MESYS(NMESYS,2)=I2
71989             ENDIF
71990   280     CONTINUE
71991   290   CONTINUE
71992       ENDIF
71993  
71994 C..Loopback point for counting number of emissions.
71995       NGEN=0
71996   300 NGEN=NGEN+1
71997  
71998 C...Begin loop to evolve all existing partons, if required.
71999   310 IMX=0
72000       PT2MX=0D0
72001       DO 380 IEVOL=1,NEVOL
72002         IF(IFLG(IEVOL).EQ.0) THEN
72003  
72004 C...Basic info on radiator and recoil.
72005           I=IPOS(IEVOL)
72006           IR=IREC(IEVOL)
72007           SHT=SHAT(I,IR)
72008           PM2I=P(I,5)**2
72009           PM2R=P(IR,5)**2
72010  
72011 C...Skip any particles that are "turned off"
72012           IF (MSTJ(39).GT.0.AND.IABS(K(I,2)).EQ.MSTJ(39)) GOTO 380
72013 
72014 C...Invariant mass of "dipole".Starting value for pT evolution.
72015           SHTCOR=(SQRT(SHT)-P(IR,5))**2-PM2I
72016           PT2=MIN(PT2CMX,0.25D0*SHTCOR,PTSCA(IEVOL)**2)
72017  
72018 C...Case of evolution by QCD branching.
72019           IF(ISCOL(IEVOL).NE.0) THEN
72020  
72021 C...Parton-by-parton maximum scale from initial conditions.
72022           IF(MSTP(72).EQ.0) THEN
72023             DO 320 IPRT=1,NPARTS
72024               IF(IR.EQ.IPART(IPRT)) PT2=MIN(PT2,PTPART(IPRT)**2)
72025   320       CONTINUE
72026           ENDIF
72027  
72028 C...If kinematically impossible then do not evolve.
72029             IF(PT2.LT.PT2CMN) THEN
72030               IFLG(IEVOL)=-1
72031               GOTO 380
72032             ENDIF
72033  
72034 C...Check if part of system for which ME corrections should be applied.
72035             IMESYS=0
72036             DO 330 IME=1,NMESYS
72037               IF((I.EQ.MESYS(IME,1).OR.I.EQ.MESYS(IME,2)).AND.
72038      &        MESYS(IME,0).LT.100) IMESYS=IME
72039   330       CONTINUE
72040  
72041 C...Special flag for colour octet states.
72042 C...MOCT=1: can do gluon splitting g->qqbar; MOCT=2: cannot.
72043             MOCT=0
72044             KC = PYCOMP(K(I,2))
72045             IF(K(I,2).EQ.21) THEN
72046               MOCT=1
72047             ELSEIF(KCHG(KC,2).EQ.2) THEN
72048               MOCT=2
72049             ENDIF
72050 C...QUARKONIA++
72051             IF(MSTP(148).GE.1.AND.IABS(K(I,2)).EQ.9900101.AND.
72052      &          IABS(K(I,2)).LE.9910555) MOCT=2
72053 C...QUARKONIA--
72054  
72055  
72056 C...Upper estimate for matrix element weighting and colour factor.
72057 C...Note that g->gg and g->qqbar is split on two sides = "dipoles".
72058             WTPSGL=2D0
72059             COLFAC=4D0/3D0
72060             IF(MOCT.GE.1) COLFAC=3D0/2D0
72061             IF(IGLUI.EQ.1.AND.IMESYS.EQ.1.AND.MOCT.EQ.0) COLFAC=3D0
72062             WTPSQQ=0.5D0*0.5D0*NFLAV
72063  
72064 C...Determine overestimated z range: switch at c and b masses.
72065   340       IZRG=1
72066             PT2MNE=PT2CMN
72067             B0=27D0/6D0
72068             ALAMS=ALAM3S
72069             IF(PT2.GT.1.01D0*PMCS) THEN
72070               IZRG=2
72071               PT2MNE=PMCS
72072               B0=25D0/6D0
72073               ALAMS=ALAM4S
72074             ENDIF
72075             IF(PT2.GT.1.01D0*PMBS) THEN
72076               IZRG=3
72077               PT2MNE=PMBS
72078               B0=23D0/6D0
72079               ALAMS=ALAM5S
72080             ENDIF
72081             ZMNCUT=0.5D0-SQRT(MAX(0D0,0.25D0-PT2MNE/SHTCOR))
72082             IF(ZMNCUT.LT.1D-8) ZMNCUT=PT2MNE/SHTCOR
72083  
72084 C...Find evolution coefficients for q->qg/g->gg and g->qqbar.
72085             EVEMGL=WTPSGL*COLFAC*LOG(1D0/ZMNCUT-1D0)/B0
72086             EVCOEF=EVEMGL
72087             IF(MOCT.EQ.1) THEN
72088               EVEMQQ=WTPSQQ*(1D0-2D0*ZMNCUT)/B0
72089               EVCOEF=EVCOEF+EVEMQQ
72090             ENDIF
72091  
72092 C...Pick pT2 (in overestimated z range).
72093   350       PT2=ALAMS*(PT2/ALAMS)**(PYR(0)**(1D0/EVCOEF))
72094  
72095 C...Loopback if crossed c/b mass thresholds.
72096             IF(IZRG.EQ.3.AND.PT2.LT.PMBS) THEN
72097               PT2=PMBS
72098               GOTO 340
72099             ENDIF
72100             IF(IZRG.EQ.2.AND.PT2.LT.PMCS) THEN
72101               PT2=PMCS
72102               GOTO 340
72103             ENDIF
72104  
72105 C...Finish if below lower cutoff.
72106             IF(PT2.LT.PT2CMN) THEN
72107               IFLG(IEVOL)=-1
72108               GOTO 380
72109             ENDIF
72110  
72111 C...Pick kind of branching: q->qg/g->gg/X->Xg or g->qqbar.
72112 C...IFLAG=1: gluon emission; IFLAG=2: gluon splitting
72113             IFLAG=1
72114             IF(MOCT.EQ.1.AND.EVEMGL.LT.PYR(0)*EVCOEF) IFLAG=2
72115  
72116 C...Pick z: dz/(1-z) or dz.
72117             IF(IFLAG.EQ.1) THEN
72118               Z=1D0-ZMNCUT*(1D0/ZMNCUT-1D0)**PYR(0)
72119             ELSE
72120               Z=ZMNCUT+PYR(0)*(1D0-2D0*ZMNCUT)
72121             ENDIF
72122  
72123 C...Loopback if outside allowed range for given pT2.
72124             ZMNNOW=0.5D0-SQRT(MAX(0D0,0.25D0-PT2/SHTCOR))
72125             IF(ZMNNOW.LT.1D-8) ZMNNOW=PT2/SHTCOR
72126             IF(Z.LE.ZMNNOW.OR.Z.GE.1D0-ZMNNOW) GOTO 350
72127             PM2=PM2I+PT2/(Z*(1D0-Z))
72128             IF(Z*(1D0-Z).LE.PM2*SHT/(SHT+PM2-PM2R)**2) GOTO 350
72129  
72130 C...No weighting for primary partons; to be done later on.
72131             IF(IMESYS.GT.0) THEN
72132  
72133 C...Weighting of q->qg/X->Xg branching.
72134             ELSEIF(IFLAG.EQ.1.AND.MOCT.NE.1) THEN
72135               IF(1D0+Z**2.LT.WTPSGL*PYR(0)) GOTO 350
72136  
72137 C...Weighting of g->gg branching.
72138             ELSEIF(IFLAG.EQ.1) THEN
72139               IF(1D0+Z**3.LT.WTPSGL*PYR(0)) GOTO 350
72140  
72141 C...Flavour choice and weighting of g->qqbar branching.
72142             ELSE
72143               KFQ=MIN(5,1+INT(NFLAV*PYR(0)))
72144               PMQ=PMAS(KFQ,1)
72145               ROOTQQ=SQRT(MAX(0D0,1D0-4D0*PMQ**2/PM2))
72146               WTME=ROOTQQ*(Z**2+(1D0-Z)**2)
72147               IF(WTME.LT.PYR(0)) GOTO 350
72148               IFLAG=10+KFQ
72149             ENDIF
72150  
72151 C...Case of evolution by QED branching.
72152           ELSEIF(ISCHG(IEVOL).NE.0) THEN
72153  
72154 C...If kinematically impossible then do not evolve.
72155             PT2EMN=PT0EQ**2
72156             IF(IABS(K(I,2)).GT.10) PT2EMN=PT0EL**2
72157             IF(PT2.LT.PT2EMN) THEN
72158               IFLG(IEVOL)=-1
72159               GOTO 380
72160             ENDIF
72161  
72162 C...Check if part of system for which ME corrections should be applied.
72163            IMESYS=0
72164             DO 360 IME=1,NMESYS
72165               IF((I.EQ.MESYS(IME,1).OR.I.EQ.MESYS(IME,2)).AND.
72166      &        MESYS(IME,0).GT.100) IMESYS=IME
72167   360      CONTINUE
72168  
72169 C...Charge. Matrix element weighting factor.
72170             CHG=ISCHG(IEVOL)/3D0
72171             WTPSGA=2D0
72172  
72173 C...Determine overestimated z range. Find evolution coefficient.
72174             ZMNCUT=0.5D0-SQRT(MAX(0D0,0.25D0-PT2EMN/SHTCOR))
72175             IF(ZMNCUT.LT.1D-8) ZMNCUT=PT2EMN/SHTCOR
72176             EVCOEF=AEM2PI*CHG**2*WTPSGA*LOG(1D0/ZMNCUT-1D0)
72177  
72178 C...Pick pT2 (in overestimated z range).
72179   370       PT2=PT2*PYR(0)**(1D0/EVCOEF)
72180  
72181 C...Finish if below lower cutoff.
72182             IF(PT2.LT.PT2EMN) THEN
72183               IFLG(IEVOL)=-1
72184               GOTO 380
72185             ENDIF
72186  
72187 C...Pick z: dz/(1-z).
72188             Z=1D0-ZMNCUT*(1D0/ZMNCUT-1D0)**PYR(0)
72189  
72190 C...Loopback if outside allowed range for given pT2.
72191             ZMNNOW=0.5D0-SQRT(MAX(0D0,0.25D0-PT2/SHTCOR))
72192             IF(ZMNNOW.LT.1D-8) ZMNNOW=PT2/SHTCOR
72193             IF(Z.LE.ZMNNOW.OR.Z.GE.1D0-ZMNNOW) GOTO 370
72194             PM2=PM2I+PT2/(Z*(1D0-Z))
72195             IF(Z*(1D0-Z).LE.PM2*SHT/(SHT+PM2-PM2R)**2) GOTO 370
72196  
72197 C...Weighting by branching kernel, except if ME weighting later.
72198             IF(IMESYS.EQ.0) THEN
72199               IF(1D0+Z**2.LT.WTPSGA*PYR(0)) GOTO 370
72200             ENDIF
72201             IFLAG=3
72202           ENDIF
72203  
72204 C...Save acceptable branching.
72205           IFLG(IEVOL)=IFLAG
72206           IMESAV(IEVOL)=IMESYS
72207           PT2SAV(IEVOL)=PT2
72208           ZSAV(IEVOL)=Z
72209           SHTSAV(IEVOL)=SHT
72210         ENDIF
72211  
72212 C...Check if branching has highest pT.
72213         IF(IFLG(IEVOL).GE.1.AND.PT2SAV(IEVOL).GT.PT2MX) THEN
72214           IMX=IEVOL
72215           PT2MX=PT2SAV(IEVOL)
72216         ENDIF
72217   380 CONTINUE
72218  
72219 C...Finished if no more branchings to be done.
72220       IF(IMX.EQ.0) GOTO 520
72221  
72222 C...Restore info on hardest branching to be processed.
72223       I=IPOS(IMX)
72224       IR=IREC(IMX)
72225       KCOL=ISCOL(IMX)
72226       KCHA=ISCHG(IMX)
72227       IMESYS=IMESAV(IMX)
72228       PT2=PT2SAV(IMX)
72229       Z=ZSAV(IMX)
72230       SHT=SHTSAV(IMX)
72231       PM2I=P(I,5)**2
72232       PM2R=P(IR,5)**2
72233       PM2=PM2I+PT2/(Z*(1D0-Z))
72234  
72235 C...Special flag for colour octet states.
72236       MOCT=0
72237       KC = PYCOMP(K(I,2))
72238       IF(K(I,2).EQ.21) THEN
72239         MOCT=1
72240       ELSEIF(KCHG(KC,2).EQ.2) THEN
72241         MOCT=2
72242       ENDIF
72243 C...QUARKONIA++
72244       IF(MSTP(148).GE.1.AND.IABS(K(I,2)).GE.9900101.AND.
72245      &    IABS(K(I,2)).LE.9910555) MOCT=2
72246 C...QUARKONIA--
72247  
72248 C...Restore further info for g->qqbar branching.
72249       KFQ=0
72250       IF(IFLG(IMX).GT.10) THEN
72251         KFQ=IFLG(IMX)-10
72252         PMQ=PMAS(KFQ,1)
72253         ROOTQQ=SQRT(MAX(0D0,1D0-4D0*PMQ**2/PM2))
72254       ENDIF
72255  
72256 C...For branching g include azimuthal asymmetries from polarization.
72257       ASYPOL=0D0
72258       IF(MOCT.EQ.1.AND.MOD(MSTJ(46),2).EQ.1) THEN
72259 C...Trace grandmother via intermediate recoil copies.
72260         KFGM=0
72261         IM=I
72262   390   IF(K(IM,3).NE.K(IM-1,3).AND.K(IM,3).NE.K(IM+1,3).AND.
72263      &  K(IM,3).GT.0) THEN
72264           IM=K(IM,3)
72265           IF(IM.GT.MINT(84)) GOTO 390
72266         ENDIF
72267         IGM=K(IM,3)
72268         IF(IGM.GT.MINT(84).AND.IGM.LT.IM.AND.IM.LE.I)
72269      &  KFGM=IABS(K(IGM,2))
72270 C...Define approximate energy sharing by identifying aunt.
72271         IAU=IM+1
72272         IF(IAU.GT.N-3.OR.K(IAU,3).NE.IGM) IAU=IM-1
72273         IF(KFGM.NE.0.AND.(KFGM.LE.6.OR.KFGM.EQ.21)) THEN
72274           ZOLD=P(IM,4)/(P(IM,4)+P(IAU,4))
72275 C...Coefficient from gluon production.
72276           IF(KFGM.LE.6) THEN
72277             ASYPOL=2D0*(1D0-ZOLD)/(1D0+(1D0-ZOLD)**2)
72278           ELSE
72279             ASYPOL=((1D0-ZOLD)/(1D0-ZOLD*(1D0-ZOLD)))**2
72280           ENDIF
72281 C...Coefficient from gluon decay.
72282           IF(KFQ.EQ.0) THEN
72283             ASYPOL=ASYPOL*(Z*(1D0-Z)/(1D0-Z*(1D0-Z)))**2
72284           ELSE
72285             ASYPOL=-ASYPOL*2D0*Z*(1D0-Z)/(1D0-2D0*Z*(1D0-Z))
72286           ENDIF
72287         ENDIF
72288       ENDIF
72289  
72290 C...Create new slots for branching products and recoil.
72291       INEW=N+1
72292       IGNEW=N+2
72293       IRNEW=N+3
72294       N=N+3
72295  
72296 C...Set status, flavour and mother of new ones.
72297       K(INEW,1)=K(I,1)
72298       K(IGNEW,1)=3
72299       IF(KCHA.NE.0)  K(IGNEW,1)=1
72300       K(IRNEW,1)=K(IR,1)
72301       IF(KFQ.EQ.0) THEN
72302         K(INEW,2)=K(I,2)
72303         K(IGNEW,2)=21
72304         IF(KCHA.NE.0)  K(IGNEW,2)=22
72305       ELSE
72306         K(INEW,2)=-ISIGN(KFQ,KCOL)
72307         K(IGNEW,2)=-K(INEW,2)
72308       ENDIF
72309       K(IRNEW,2)=K(IR,2)
72310       K(INEW,3)=I
72311       K(IGNEW,3)=I
72312       K(IRNEW,3)=IR
72313  
72314 C...Find rest frame and angles of branching+recoil.
72315       DO 400 J=1,5
72316         P(INEW,J)=P(I,J)
72317         P(IGNEW,J)=0D0
72318         P(IRNEW,J)=P(IR,J)
72319   400 CONTINUE
72320       BETAX=(P(INEW,1)+P(IRNEW,1))/(P(INEW,4)+P(IRNEW,4))
72321       BETAY=(P(INEW,2)+P(IRNEW,2))/(P(INEW,4)+P(IRNEW,4))
72322       BETAZ=(P(INEW,3)+P(IRNEW,3))/(P(INEW,4)+P(IRNEW,4))
72323       CALL PYROBO(INEW,IRNEW,0D0,0D0,-BETAX,-BETAY,-BETAZ)
72324       PHI=PYANGL(P(INEW,1),P(INEW,2))
72325       THETA=PYANGL(P(INEW,3),SQRT(P(INEW,1)**2+P(INEW,2)**2))
72326  
72327 C...Derive kinematics of branching: generics (like g->gg).
72328       DO 410 J=1,4
72329         P(INEW,J)=0D0
72330         P(IRNEW,J)=0D0
72331   410 CONTINUE
72332       PEM=0.5D0*(SHT+PM2-PM2R)/SQRT(SHT)
72333       PZM=0.5D0*SQRT(MAX(0D0,(SHT-PM2-PM2R)**2-4D0*PM2*PM2R)/SHT)
72334       PT2COR=PM2*(PEM**2*Z*(1D0-Z)-0.25D0*PM2)/PZM**2
72335       PTCOR=SQRT(MAX(0D0,PT2COR))
72336       PZN=(PEM**2*Z-0.5D0*PM2)/PZM
72337       PZG=(PEM**2*(1D0-Z)-0.5D0*PM2)/PZM
72338 C...Specific kinematics reduction for q->qg with m_q > 0.
72339       IF(MOCT.NE.1) THEN
72340         PTCOR=(1D0-PM2I/PM2)*PTCOR
72341         PZN=PZN+PM2I*PZG/PM2
72342         PZG=(1D0-PM2I/PM2)*PZG
72343 C...Specific kinematics reduction for g->qqbar with m_q > 0.
72344       ELSEIF(KFQ.NE.0) THEN
72345         P(INEW,5)=PMQ
72346         P(IGNEW,5)=PMQ
72347         PTCOR=ROOTQQ*PTCOR
72348         PZN=0.5D0*((1D0+ROOTQQ)*PZN+(1D0-ROOTQQ)*PZG)
72349         PZG=PZM-PZN
72350       ENDIF
72351  
72352 C...Pick phi and construct kinematics of branching.
72353   420 PHIROT=PARU(2)*PYR(0)
72354       P(INEW,1)=PTCOR*COS(PHIROT)
72355       P(INEW,2)=PTCOR*SIN(PHIROT)
72356       P(INEW,3)=PZN
72357       P(INEW,4)=SQRT(PTCOR**2+P(INEW,3)**2+P(INEW,5)**2)
72358       P(IGNEW,1)=-P(INEW,1)
72359       P(IGNEW,2)=-P(INEW,2)
72360       P(IGNEW,3)=PZG
72361       P(IGNEW,4)=SQRT(PTCOR**2+P(IGNEW,3)**2+P(IGNEW,5)**2)
72362       P(IRNEW,1)=0D0
72363       P(IRNEW,2)=0D0
72364       P(IRNEW,3)=-PZM
72365       P(IRNEW,4)=0.5D0*(SHT+PM2R-PM2)/SQRT(SHT)
72366  
72367 C...Boost branching system to lab frame.
72368       CALL PYROBO(INEW,IRNEW,THETA,PHI,BETAX,BETAY,BETAZ)
72369  
72370 C...Renew choice of phi angle according to polarization asymmetry.
72371       IF(ABS(ASYPOL).GT.1D-3) THEN
72372         DO 430 J=1,3
72373           DPT(1,J)=P(I,J)
72374           DPT(2,J)=P(IAU,J)
72375           DPT(3,J)=P(INEW,J)
72376   430   CONTINUE
72377         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
72378         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
72379         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
72380         DO 440 J=1,3
72381           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
72382           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
72383   440   CONTINUE
72384         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
72385         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
72386         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
72387           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
72388      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
72389           IF(1D0+ASYPOL*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(ASYPOL)))
72390      &    GOTO 420
72391         ENDIF
72392       ENDIF
72393  
72394 C...Matrix element corrections for primary partons when requested.
72395       IF(IMESYS.GT.0) THEN
72396         M3JC=MESYS(IMESYS,0)
72397  
72398 C...Identify recoiling partner and set up three-body kinematics.
72399         IRP=MESYS(IMESYS,1)
72400         IF(IRP.EQ.I) IRP=MESYS(IMESYS,2)
72401         IF(IRP.EQ.IR) IRP=IRNEW
72402         DO 450 J=1,4
72403           PSUM(J)=P(INEW,J)+P(IRP,J)+P(IGNEW,J)
72404   450   CONTINUE
72405         PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
72406      &  PSUM(3)**2))
72407         X1=2D0*(PSUM(4)*P(INEW,4)-PSUM(1)*P(INEW,1)-PSUM(2)*P(INEW,2)-
72408      &  PSUM(3)*P(INEW,3))/PSUM(5)**2
72409         X2=2D0*(PSUM(4)*P(IRP,4)-PSUM(1)*P(IRP,1)-PSUM(2)*P(IRP,2)-
72410      &  PSUM(3)*P(IRP,3))/PSUM(5)**2
72411         X3=2D0-X1-X2
72412         R1ME=P(INEW,5)/PSUM(5)
72413         R2ME=P(IRP,5)/PSUM(5)
72414  
72415 C...Matrix elements for gluon emission.
72416         IF(M3JC.LT.100) THEN
72417  
72418 C...Call ME, with right order important for two inequivalent showerers.
72419           IF(MESYS(IMESYS,IORD).EQ.I) THEN
72420             WME=PYMAEL(M3JC,X1,X2,R1ME,R2ME,ALPHA)
72421           ELSE
72422             WME=PYMAEL(M3JC,X2,X1,R2ME,R1ME,ALPHA)
72423           ENDIF
72424  
72425 C...Split up total ME when two radiating partons.
72426           ISPRAD=1
72427           IF((M3JC.GE.16.AND.M3JC.LE.19).OR.(M3JC.GE.26.AND.M3JC.LE.29)
72428      &    .OR.(M3JC.GE.36.AND.M3JC.LE.39).OR.(M3JC.GE.46.AND.M3JC.LE.49)
72429      &    .OR.(M3JC.GE.56.AND.M3JC.LE.64)) ISPRAD=0
72430           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
72431      &    MAX(1D-10,2D0-X1-X2)
72432  
72433 C...Evaluate shower rate.
72434           WPS=2D0/(MAX(1D-10,2D0-X1-X2)*
72435      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
72436           IF(IGLUI.EQ.1) WPS=(9D0/4D0)*WPS
72437  
72438 C...Matrix elements for photon emission: still rather primitive.
72439         ELSE
72440  
72441 C...For generic charge combination currently only massless expression.
72442           IF(M3JC.EQ.101) THEN
72443             CHG1=KCHG(PYCOMP(K(I,2)),1)*ISIGN(1,K(I,2))/3D0
72444             CHG2=KCHG(PYCOMP(K(IRP,2)),1)*ISIGN(1,K(IRP,2))/3D0
72445             WME=(CHG1*(1D0-X1)/X3-CHG2*(1D0-X2)/X3)**2*(X1**2+X2**2)
72446             WPS=2D0*(CHG1**2*(1D0-X1)/X3+CHG2**2*(1D0-X2)/X3)
72447  
72448 C...For flavour neutral system assume vector source and include masses.
72449           ELSE
72450             WME=PYMAEL(11,X1,X2,R1ME,R2ME,0D0)*MAX(1D-10,
72451      &      1D0+R1ME**2-R2ME**2-X1)/MAX(1D-10,2D0-X1-X2)
72452             WPS=2D0/(MAX(1D-10,2D0-X1-X2)*
72453      &      MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
72454           ENDIF
72455         ENDIF
72456  
72457 C...Perform weighting with W_ME/W_PS.
72458         IF(WME.LT.PYR(0)*WPS) THEN
72459           N=N-3
72460           IFLG(IMX)=0
72461           PT2CMX=PT2
72462           GOTO 310
72463         ENDIF
72464       ENDIF
72465  
72466 C...Now for sure accepted branching. Save highest pT.
72467       IF(NGEN.EQ.1) PTGEN=SQRT(PT2)
72468  
72469 C...Update status for obsolete ones. Bookkkep the moved original parton
72470 C...and new daughter (arbitrary choice for g->gg or g->qqbar).
72471 C...Do not bookkeep radiated photon, since it cannot radiate further.
72472       K(I,1)=K(I,1)+10
72473       K(IR,1)=K(IR,1)+10
72474       DO 460 IP=1,NPART
72475         IF(IPART(IP).EQ.I) IPART(IP)=INEW
72476         IF(IPART(IP).EQ.IR) IPART(IP)=IRNEW
72477   460 CONTINUE
72478       IF(KCHA.EQ.0) THEN
72479         NPART=NPART+1
72480         IPART(NPART)=IGNEW
72481       ENDIF
72482  
72483 C...Initialize colour flow of branching.
72484 C...Use both old and new style colour tags for flexibility.
72485       K(INEW,4)=0
72486       K(IGNEW,4)=0
72487       K(INEW,5)=0
72488       K(IGNEW,5)=0
72489       JCOLP=4+(1-KCOL)/2
72490       JCOLN=9-JCOLP
72491       MCT(INEW,1)=0
72492       MCT(INEW,2)=0
72493       MCT(IGNEW,1)=0
72494       MCT(IGNEW,2)=0
72495       MCT(IRNEW,1)=0
72496       MCT(IRNEW,2)=0
72497  
72498 C...Trivial colour flow for l->lgamma and q->qgamma.
72499       IF(IABS(KCHA).EQ.3) THEN
72500         K(I,4)=INEW
72501         K(I,5)=IGNEW
72502       ELSEIF(KCHA.NE.0) THEN
72503         IF(K(I,4).NE.0) THEN
72504           K(I,4)=K(I,4)+INEW
72505           K(INEW,4)=MSTU(5)*I
72506           MCT(INEW,1)=MCT(I,1)
72507         ENDIF
72508         IF(K(I,5).NE.0) THEN
72509           K(I,5)=K(I,5)+INEW
72510           K(INEW,5)=MSTU(5)*I
72511           MCT(INEW,2)=MCT(I,2)
72512         ENDIF
72513  
72514 C...Set colour flow for q->qg and g->gg.
72515       ELSEIF(KFQ.EQ.0) THEN
72516         K(I,JCOLP)=K(I,JCOLP)+IGNEW
72517         K(IGNEW,JCOLP)=MSTU(5)*I
72518         K(INEW,JCOLP)=MSTU(5)*IGNEW
72519         K(IGNEW,JCOLN)=MSTU(5)*INEW
72520         MCT(IGNEW,JCOLP-3)=MCT(I,JCOLP-3)
72521         NCT=NCT+1
72522         MCT(INEW,JCOLP-3)=NCT
72523         MCT(IGNEW,JCOLN-3)=NCT
72524         IF(MOCT.GE.1) THEN
72525           K(I,JCOLN)=K(I,JCOLN)+INEW
72526           K(INEW,JCOLN)=MSTU(5)*I
72527           MCT(INEW,JCOLN-3)=MCT(I,JCOLN-3)
72528         ENDIF
72529  
72530 C...Set colour flow for g->qqbar.
72531       ELSE
72532         K(I,JCOLN)=K(I,JCOLN)+INEW
72533         K(INEW,JCOLN)=MSTU(5)*I
72534         K(I,JCOLP)=K(I,JCOLP)+IGNEW
72535         K(IGNEW,JCOLP)=MSTU(5)*I
72536         MCT(INEW,JCOLN-3)=MCT(I,JCOLN-3)
72537         MCT(IGNEW,JCOLP-3)=MCT(I,JCOLP-3)
72538       ENDIF
72539  
72540 C...Daughter info for colourless recoiling parton.
72541       IF(K(IR,4).EQ.0.AND.K(IR,5).EQ.0) THEN
72542         K(IR,4)=IRNEW
72543         K(IR,5)=IRNEW
72544         K(IRNEW,4)=0
72545         K(IRNEW,5)=0
72546  
72547 C...Colour of recoiling parton sails through unchanged.
72548       ELSE
72549         IF(K(IR,4).NE.0) THEN
72550           K(IR,4)=K(IR,4)+IRNEW
72551           K(IRNEW,4)=MSTU(5)*IR
72552           MCT(IRNEW,1)=MCT(IR,1)
72553         ENDIF
72554         IF(K(IR,5).NE.0) THEN
72555           K(IR,5)=K(IR,5)+IRNEW
72556           K(IRNEW,5)=MSTU(5)*IR
72557           MCT(IRNEW,2)=MCT(IR,2)
72558         ENDIF
72559       ENDIF
72560  
72561 C...Vertex information trivial.
72562       DO 470 J=1,5
72563         V(INEW,J)=V(I,J)
72564         V(IGNEW,J)=V(I,J)
72565         V(IRNEW,J)=V(IR,J)
72566   470 CONTINUE
72567  
72568 C...Update list of old radiators.
72569       DO 480 IEVOL=1,NEVOL
72570 C...  A) radiator-recoiler mother pair for this branching
72571         IF(IPOS(IEVOL).EQ.I.AND.IREC(IEVOL).EQ.IR) THEN
72572           IPOS(IEVOL)=INEW
72573 C...  A2) QCD branching and color side matches, radiated parton follows recoiler
72574           IF(KCOL.NE.0.AND.ISCOL(IEVOL).EQ.KCOL) IPOS(IEVOL)=IGNEW
72575           IREC(IEVOL)=IRNEW
72576           IFLG(IEVOL)=0
72577         ELSEIF(IPOS(IEVOL).EQ.I) THEN
72578 C...  B) other dipoles with I as radiator simply get INEW as new radiator
72579           IPOS(IEVOL)=INEW
72580           IFLG(IEVOL)=0
72581         ELSEIF(IPOS(IEVOL).EQ.IR.AND.IREC(IEVOL).EQ.I) THEN
72582 C...  C) the "mirror image" of the parent dipole
72583           IPOS(IEVOL)=IRNEW
72584           IREC(IEVOL)=INEW
72585 C...  C2) QCD branching and color side matches, radiated parton follows recoiler
72586           IF(KCOL.NE.0.AND.ISCOL(IEVOL).NE.KCOL.AND.ISCOL(IEVOL).NE.0)
72587      &         IREC(IEVOL)=IGNEW
72588           IFLG(IEVOL)=0
72589         ELSEIF(IPOS(IEVOL).EQ.IR) THEN
72590 C...  D) other dipoles with IR as radiator simply get IRNEW as new radiator
72591           IPOS(IEVOL)=IRNEW
72592           IFLG(IEVOL)=0
72593         ENDIF
72594 C...  Update links of old connected partons.
72595         IF(IREC(IEVOL).EQ.I) THEN
72596           IREC(IEVOL)=INEW
72597           IFLG(IEVOL)=0
72598         ELSEIF(IREC(IEVOL).EQ.IR) THEN
72599           IREC(IEVOL)=IRNEW
72600           IFLG(IEVOL)=0
72601         ENDIF
72602   480 CONTINUE
72603  
72604 C...q->qg or g->gg: create new gluon radiators.
72605       IF(KCOL.NE.0.AND.KFQ.EQ.0) THEN
72606         NEVOL=NEVOL+1
72607         IPOS(NEVOL)=INEW
72608         IREC(NEVOL)=IGNEW
72609         IFLG(NEVOL)=0
72610         ISCOL(NEVOL)=KCOL
72611         ISCHG(NEVOL)=0
72612         PTSCA(NEVOL)=SQRT(PT2)
72613         NEVOL=NEVOL+1
72614         IPOS(NEVOL)=IGNEW
72615         IREC(NEVOL)=INEW
72616         IFLG(NEVOL)=0
72617         ISCOL(NEVOL)=-KCOL
72618         ISCHG(NEVOL)=0
72619         PTSCA(NEVOL)=PTSCA(NEVOL-1)
72620 C...g->qqbar: create new photon radiators.
72621       ELSEIF(KCOL.EQ.2.AND.KFQ.NE.0) THEN
72622         NEVOL=NEVOL+1
72623         IPOS(NEVOL)=INEW
72624         IREC(NEVOL)=IGNEW
72625         IFLG(NEVOL)=0
72626         ISCOL(NEVOL)=0
72627         ISCHG(NEVOL)=PYK(INEW,6)
72628         PTSCA(NEVOL)=SQRT(PT2)
72629         NEVOL=NEVOL+1
72630         IPOS(NEVOL)=IGNEW
72631         IREC(NEVOL)=INEW
72632         IFLG(NEVOL)=0
72633         ISCOL(NEVOL)=0
72634         ISCHG(NEVOL)=PYK(IGNEW,6)
72635         PTSCA(NEVOL)=SQRT(PT2)
72636         CALL PYLIST(4)
72637         print*, 'created new QED dipole ',INEW,'<->',IGNEW
72638       ENDIF
72639  
72640 C...Check color and charge connections,
72641 C...Rewire if better partners can be found (screening, etc)
72642       DO 500 IEVOL=1,NEVOL
72643         KCOL  = ISCOL(IEVOL)
72644         KCHA  = ISCHG(IEVOL)
72645         IRTMP = IREC(IEVOL)
72646         ITMP  = IPOS(IEVOL)
72647 C...Do not modify QED dipoles
72648         IF (KCHA.NE.0) THEN
72649           GOTO 500
72650 C...Also skip dipole ends that are switched off
72651         ELSEIF (IFLG(IEVOL).LE.-1) THEN
72652           GOTO 500
72653         ELSEIF (KCOL.NE.0) THEN
72654 C...QCD dipoles. Check if current recoiler has appropriate color charge
72655           KCOLR = PYK(IRTMP,12)
72656           IF (KCOLR.EQ.2.OR.KCOLR.EQ.-KCOL) GOTO 500
72657 C...If not, look for closest recoiler with appropriate color charge
72658           RM2MIN = PSUM(5)**2
72659           JMX    = 0
72660           ISGOOD = 0
72661           DO 490 JEVOL=1,NEVOL
72662 C...Skip self
72663             IF (JEVOL.EQ.IEVOL) GOTO 490
72664             JTMP = IPOS(JEVOL)
72665             IF (JTMP.EQ.ITMP) GOTO 490
72666             JCOL = ISCOL(JEVOL)
72667 C...Skip dipole ends that are switched off
72668             IF (IFLG(JEVOL).LE.-1) GOTO 490
72669 C...Skip QED dipole ends
72670             IF (ISCHG(JEVOL).NE.0) GOTO 490
72671 C...  Skip wrong-color if at least one correct-color partner already found
72672             IF (ISGOOD.NE.0.AND.JCOL.NE.-KCOL.AND.JCOL.NE.2) GOTO 490
72673 C...Accept if smallest m2 so far, or if first with correct color
72674             RM2 = DOTP(ITMP,JTMP)
72675             ISGNOW = 0
72676             IF (JCOL.EQ.-KCOL.OR.JCOL.EQ.2) ISGNOW=1
72677             IF (RM2.LT.RM2MIN.OR.ISGNOW.GT.ISGOOD) THEN
72678               ISGOOD = ISGNOW
72679               RM2MIN = RM2
72680               JMX    = JEVOL
72681             ENDIF
72682   490     CONTINUE
72683 C...Update recoiler and reset dipole if new best partner found
72684           IF (JMX.NE.0) THEN
72685             IREC(IEVOL) = IPOS(JMX)             
72686             IFLG(IEVOL) = 0
72687           ENDIF
72688         ENDIF
72689   500 CONTINUE
72690  
72691 C...TMP! print out list of dipoles
72692 C      DO 580 IEVOL=1,NEVOL
72693 C        KCHA  = ISCHG(IEVOL)
72694 C        IF (KCHA.NE.0) THEN
72695 C          print*, 'qed dip',IPOS(IEVOL),IREC(IEVOL)
72696 C        ELSE
72697 C          print*, 'qcd dip',IPOS(IEVOL),IREC(IEVOL)
72698 C        ENDIF
72699 C 580  CONTINUE
72700  
72701 C...Update matrix elements parton list and add new for g/gamma->qqbar.
72702       DO 510 IME=1,NMESYS
72703         IF(MESYS(IME,1).EQ.I) MESYS(IME,1)=INEW
72704         IF(MESYS(IME,2).EQ.I) MESYS(IME,2)=INEW
72705         IF(MESYS(IME,1).EQ.IR) MESYS(IME,1)=IRNEW
72706         IF(MESYS(IME,2).EQ.IR) MESYS(IME,2)=IRNEW
72707   510 CONTINUE
72708       IF(KFQ.NE.0) THEN
72709         NMESYS=NMESYS+1
72710         MESYS(NMESYS,0)=66
72711         MESYS(NMESYS,1)=INEW
72712         MESYS(NMESYS,2)=IGNEW
72713         NMESYS=NMESYS+1
72714         MESYS(NMESYS,0)=102
72715         MESYS(NMESYS,1)=INEW
72716         MESYS(NMESYS,2)=IGNEW
72717       ENDIF
72718  
72719 C...Global statistics.
72720       MINT(353)=MINT(353)+1
72721       VINT(353)=VINT(353)+PTCOR
72722       IF (MINT(353).EQ.1) VINT(358)=PTCOR
72723  
72724 C...Loopback for more emissions if enough space.
72725       PT2CMX=PT2
72726       IF(NPART.LT.MAXNUR-1.AND.NEVOL.LT.2*MAXNUR-2.AND.
72727      &NMESYS.LT.MAXNUR-2.AND.N.LT.MSTU(4)-MSTU(32)-5) THEN
72728         GOTO 300
72729       ELSE
72730         CALL PYERRM(11,'(PYPTFS:) no more memory left for shower')
72731       ENDIF
72732  
72733 C...Done.
72734   520 CONTINUE
72735  
72736       RETURN
72737       END
72738  
72739 C*********************************************************************
72740  
72741 C...PYMAEL
72742 C...Auxiliary to PYSHOW and PYPTFS.
72743 C...Matrix elements for gluon (or photon) emission from
72744 C...a two-body state; to be used by the parton shower routine.
72745 C...Here X_i = 2 E_i/E_cm, R_i = m_i/E_cm and
72746 C...1/sigma_0 d(sigma)/d(x_1)d(x_2) =
72747 C...      = (alpha-strong/2 pi) * CF * PYMAEL,
72748 C...i.e. normalization is such that one recovers the familiar
72749 C...(X1**2+X2**2)/((1-X1)*(1-X2)) for the massless case.
72750 C...Coupling structure:
72751 C...NI =  6- 9 : eikonal soft-gluon expression (spin-independent)
72752 C...   = 11-14 : V -> q qbar (V = vector/axial vector colour singlet)
72753 C...   = 16-19 : q -> q V
72754 C...   = 21-24 : S -> q qbar (S = scalar/pseudoscalar colour singlet)
72755 C...   = 26-29 : q -> q S
72756 C...   = 31-34 : V -> ~q ~qbar  (~q = squark)
72757 C...   = 36-39 : ~q -> ~q V
72758 C...   = 41-44 : S -> ~q ~qbar
72759 C...   = 46-49 : ~q -> ~q S
72760 C...   = 51-54 : chi -> q ~qbar (chi = neutralino/chargino)
72761 C...   = 56-59 : ~q -> q chi
72762 C...   = 61-64 : q -> ~q chi
72763 C...   = 66-69 : ~g -> q ~qbar
72764 C...   = 71-74 : ~q -> q ~g
72765 C...   = 76-79 : q -> ~q ~g
72766 C...   = 81-84 : (9/4)*(eikonal) for gg -> ~g ~g
72767 C...Note that the order of the decay products is important.
72768 C...In each set of four, the variants are ordered as:
72769 C...ICOMBI = 1 : pure non-gamma5, i.e. vector/scalar/...
72770 C...       = 2 : pure gamma5, i.e. axial vector/pseudoscalar/....
72771 C...       = 3 : mixture alpha*(ICOMBI=1) + (1-alpha)*(ICOMBI=2)
72772 C...       = 4 : mixture (ICOMBI=1) +- (ICOMBI=2)
72773  
72774       FUNCTION PYMAEL(NI,X1,X2,R1,R2,ALPHA)
72775  
72776 C...Double precision and integer declarations.
72777       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72778       IMPLICIT INTEGER(I-N)
72779  
72780 C...Check input values. Return zero outside allowed phase space.
72781       PYMAEL=0D0
72782       IF(X1.LE.2D0*R1.OR.X1.GE.1D0+R1**2-R2**2) RETURN
72783       IF(X2.LE.2D0*R2.OR.X2.GE.1D0+R2**2-R1**2) RETURN
72784       IF(X1+X2.LE.1D0+(R1+R2)**2) RETURN
72785       IF((2D0-2D0*X1-2D0*X2+X1*X2+2D0*R1**2+2D0*R2**2)**2.GE.
72786      &(X1**2-4D0*R1**2)*(X2**2-4D0*R2**2)) RETURN
72787       ALPCOR=MAX(0D0,MIN(1D0,ALPHA))
72788  
72789 C...Initial values and flags.
72790       ICLASS=NI/5
72791       ICOMBI=NI-5*ICLASS
72792       ISSET1=0
72793       ISSET2=0
72794       ISSET4=0
72795  
72796 C... Phase space.
72797       PS=SQRT((1D0-(R1+R2)**2)*(1D0-(R1-R2)**2))
72798  
72799 C...Eikonal expression; also acts as default.
72800       IF(ICLASS.LE.1.OR.ICLASS.GE.17.OR.ICOMBI.EQ.0) THEN
72801         RLO=PS
72802         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
72803           ANUM=0D0
72804         ELSEIF(ICOMBI.EQ.2) THEN
72805           ANUM=(2D0-X1-X2)**2
72806         ELSEIF(ICOMBI.EQ.3) THEN
72807           ANUM=ALPCOR*(2D0-X1-X2)**2
72808         ELSE
72809           ANUM=0.5D0*(2D0-X1-X2)**2
72810         ENDIF
72811         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
72812      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
72813      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
72814      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
72815         ICOMBI=0
72816  
72817 C...V -> q qbar (V = gamma*/Z0/W+-/...).
72818       ELSEIF(ICLASS.EQ.2) THEN
72819         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
72820         RLO1=PS*(2-R1**2-R1**4+6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
72821         RFO1=-1.D0*(3+6*R1**2+R1**4-6*R1*R2+6*R1**3*R2-2*R2**2
72822      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-3*X1+6*R1*R2*X1
72823      &       +2*R2**2*X1+X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)
72824      &       +6*R1*R2*(2-X1-X2)-R2**2*(2-X1-X2)-2*X1*(2-X1-X2)
72825      &       -5*R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
72826      &       -3*(2-X1-X2)**2-3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2
72827      &       +2*X1*(2-X1-X2)**2+(2-X1-X2)**3-X2)/
72828      &       (-1+R1**2-R2**2+X2)**2
72829         RFO1=RFO1-2*(-3+R1**2-6*R1*R2+6*R1**3*R2+3*R2**2-4*R1**2*R2**2
72830      &       +6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
72831      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)+3*R1*R2*(2-X1
72832      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
72833      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2+R1*R2*(2
72834      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
72835      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
72836         RFO1=RFO1-1.D0*(-1+2*R1**2+R1**4+6*R1*R2+6*R1**3*R2-2*R2**2
72837      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-X1-2*R1**2*X1-6*R1*R2*X1
72838      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2
72839      &       -X1-X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*
72840      &       (2-X1-X2)+X2)/(-1-R1**2+R2**2+X1)**2
72841         RFO1=RFO1/2.D0
72842         ISSET1=1
72843         ENDIF
72844         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
72845         RLO2=PS*(2-R1**2-R1**4-6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
72846         RFO2=-1*(3+6*R1**2+R1**4+6*R1*R2-6*R1**3*R2-2*R2**2
72847      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-3*X1-6*R1*R2*X1+2*R2**2*X1
72848      &       +X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)-6*R1*R2*(2-X1-X2)
72849      &       -R2**2*(2-X1-X2)-2*X1*(2-X1-X2)-5*R1**2*X1*(2-X1-X2)
72850      &       +R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)-3*(2-X1-X2)**2
72851      &       -3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2+2*X1*(2-X1-X2)**2
72852      &       +(2-X1-X2)**3-X2)/(-1+R1**2-R2**2+X2)**2
72853         RFO2=RFO2-2*(-3+R1**2+6*R1*R2-6*R1**3*R2+3*R2**2-4*R1**2*R2**2
72854      &       -6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
72855      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)-3*R1*R2*(2-X1
72856      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
72857      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2-R1*R2*(2
72858      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
72859      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
72860         RFO2=RFO2-1*(-1+2*R1**2+R1**4-6*R1*R2-6*R1**3*R2-2*R2**2
72861      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-X1-2*R1**2*X1+6*R1*R2*X1
72862      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2-X1
72863      &       -X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
72864      &       +X2)/(-1-R1**2+R2**2+X1)**2
72865         RFO2=RFO2/2.D0
72866         ISSET2=1
72867         ENDIF
72868         IF(ICOMBI.EQ.4) THEN
72869         RLO4=PS*(2D0-R1**2-R1**4-R2**2+2D0*R1**2*R2**2-R2**4)/2D0
72870         RFO4=(1-R1**4+6*R1**2*R2**2-R2**4+X1+3*R1**2*X1-9*R2**2*X1
72871      &       -3*X1**2-R1**2*X1**2+3*R2**2*X1**2+X1**3-X2-R1**2*X2
72872      &       +R2**2*X2-R1**2*X1*X2+R2**2*X1*X2+X1**2*X2)/
72873      &       (-1-R1**2+R2**2+X1)**2
72874         RFO4=RFO4
72875      &       -2*(1+R1**2+R2**2-4*R1**2*R2**2+R1**2*X1+2*R2**2*X1-X1**2
72876      &       -R2**2*X1**2+2*R1**2*X2+R2**2*X2-3*X1*X2+X1**2*X2-X2**2
72877      &       -R1**2*X2**2+X1*X2**2)/
72878      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
72879         RFO4=RFO4+(1-R1**4+6*R1**2*R2**2-R2**4-X1+R1**2*X1-R2**2*X1+X2
72880      &       -9*R1**2*X2+3*R2**2*X2+R1**2*X1*X2-R2**2*X1*X2-3*X2**2
72881      &       +3*R1**2*X2**2-R2**2*X2**2+X1*X2**2+X2**3)/
72882      &       (-1+R1**2-R2**2+X2)**2
72883         RFO4=RFO4/2.D0
72884         ISSET4=1
72885         ENDIF
72886  
72887 C...q -> q V.
72888       ELSEIF(ICLASS.EQ.3) THEN
72889         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
72890         RLO1=PS*(1D0-2D0*R1**2+R1**4+R2**2-6D0*R1*R2**2
72891      &        +R1**2*R2**2-2D0*R2**4)
72892         RFO1=2*(-1+R1-2*R1**2+2*R1**3-R1**4+R1**5-R2**2+R1*R2**2
72893      &       -5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4+2*X1-2*R1*X1
72894      &       +2*R1**2*X1-2*R1**3*X1+2*R2**2*X1+5*R1*R2**2*X1
72895      &       +R1**2*R2**2*X1+2*R2**4*X1-X1**2+R1*X1**2-R2**2*X1**2+3*X2
72896      &       +4*R1**2*X2+R1**4*X2+2*R2**2*X2+2*R1**2*R2**2*X2-4*X1*X2
72897      &       -2*R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-2*X2**2
72898      &       -2*R1**2*X2**2+X1*X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
72899         RFO1=RFO1+(2*R2**2+6*R1*R2**2-6*R1**2*R2**2+6*R1**3*R2**2
72900      &       +2*R2**4+6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
72901      &       -R1**4*X2-3*R2**2*X2-6*R1*R2**2*X2+9*R1**2*R2**2*X2
72902      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
72903      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
72904         RFO1=RFO1+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4
72905      &       +9*X1+10*R1**2*X1+R1**4*X1-3*R2**2*X1+6*R1*R2**2*X1
72906      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
72907      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2+6*R1*R2**2*X2
72908      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
72909      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2
72910      &       +2*R2**2*X2**2+X1*X2**2)/(-2+X1+X2)**2
72911         ISSET1=1
72912         ENDIF
72913         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
72914         RLO2=PS*(1D0-2D0*R1**2+R1**4+R2**2+6D0*R1*R2**2
72915      &        +R1**2*R2**2-2D0*R2**4)
72916         RFO2=2*(1+R1+2*R1**2+2*R1**3+R1**4+R1**5+R2**2+R1*R2**2
72917      &       +5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4-2*X1-2*R1*X1
72918      &       -2*R1**2*X1-2*R1**3*X1-2*R2**2*X1+5*R1*R2**2*X1
72919      &       -R1**2*R2**2*X1-2*R2**4*X1+X1**2+R1*X1**2+R2**2*X1**2-3*X2
72920      &       -4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2+4*X1*X2
72921      &       +2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2+2*R1**2*X2**2
72922      &       -X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
72923         RFO2=RFO2+(2*R2**2-6*R1*R2**2-6*R1**2*R2**2-6*R1**3*R2**2
72924      &       +2*R2**4-6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
72925      &       -R1**4*X2-3*R2**2*X2+6*R1*R2**2*X2+9*R1**2*R2**2*X2
72926      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
72927      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
72928         RFO2=RFO2+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
72929      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1-6*R1*R2**2*X1
72930      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
72931      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2-6*R1*R2**2*X2
72932      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
72933      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
72934      &       +X1*X2**2)/(-2+X1+X2)**2
72935         ISSET2=1
72936         ENDIF
72937         IF(ICOMBI.EQ.4) THEN
72938         RLO4=PS*(1.D0-2.D0*R1**2+R1**4+R2**2+R1**2*R2**2-2.D0*R2**4)
72939         RFO4=2*(1+2*R1**2+R1**4+R2**2+5*R1**2*R2**2-2*X1-2*R1**2*X1
72940      &       -2*R2**2*X1-R1**2*R2**2*X1-2*R2**4*X1+X1**2+R2**2*X1**2
72941      &       -3*X2-4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2
72942      &       +4*X1*X2+2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2
72943      &       +2*R1**2*X2**2-X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
72944         RFO4=RFO4+(2*R2**2-6*R1**2*R2**2+2*R2**4-R2**2*X1+R1**2*R2**2*X1
72945      &       -R2**4*X1+X2-R1**4*X2-3*R2**2*X2+9*R1**2*R2**2*X2
72946      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
72947      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
72948         RFO4=RFO4+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
72949      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1+R1**2*R2**2*X1-2*R2**4*X1
72950      &       -6*X1**2-2*R1**2*X1**2+X1**3+7*X2+8*R1**2*X2+R1**4*X2
72951      &       -7*R2**2*X2+R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
72952      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
72953      &       +X1*X2**2)/(2-X1-X2)**2
72954         ISSET4=1
72955         ENDIF
72956  
72957 C...S -> q qbar    (S = h0/H0/A0/H+-/...).
72958       ELSEIF(ICLASS.EQ.4) THEN
72959         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
72960         RLO1=PS*(1D0-R1**2-R2**2-2D0*R1*R2)
72961         RFO1=-(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
72962      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
72963      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
72964      &       -2*(R1**2+R1**4-2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3
72965      &       +R2**4-R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2
72966      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
72967      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
72968      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
72969      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
72970         ISSET1=1
72971         ENDIF
72972         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
72973         RLO2=PS*(1D0-R1**2-R2**2+2D0*R1*R2)
72974         RFO2=-(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
72975      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
72976      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
72977      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
72978      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
72979      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
72980      &       +2*(-R1**2-R1**4-2*R1**3*R2-R2**2+6*R1**2*R2**2
72981      &       -2*R1*R2**3-R2**4+R1**2*X1+R1*R2*X1-2*R2**2*X1
72982      &       -2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
72983      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
72984         ISSET2=1
72985         ENDIF
72986         IF(ICOMBI.EQ.4) THEN
72987         RLO4=PS*(1D0-R1**2-R2**2)
72988         RFO4=-(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
72989      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
72990      &       -2*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
72991      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
72992      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
72993      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1
72994      &       +X2+3*R1**2*X2-R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
72995         ISSET4=1
72996         ENDIF
72997  
72998 C...q -> q S.
72999       ELSEIF(ICLASS.EQ.5) THEN
73000         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
73001         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
73002         RFO1=(4-4*R1**2+4*R2**2-3*X1-2*R1*X1+R1**2*X1-R2**2*X1-5*X2
73003      &       -2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
73004      &       +2*(3-R1-5*R1**2-R1**3+3*R2**2+R1*R2**2-2*X1-R1*X1
73005      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73006      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
73007      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
73008      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73009      &       (-1+R1**2-R2**2+X2)**2
73010         ISSET1=1
73011         ENDIF
73012         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
73013         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
73014         RFO2=(4-4*R1**2+4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2
73015      &       +2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
73016      &       +2*(3+R1-5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1
73017      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73018      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
73019      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
73020      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73021      &       (-1+R1**2-R2**2+X2)**2
73022         ISSET2=1
73023         ENDIF
73024         IF(ICOMBI.EQ.4) THEN
73025         RLO4=PS*(1D0+R1**2-R2**2)
73026         RFO4=(4-4*R1**2+4*R2**2-3*X1+R1**2*X1-R2**2*X1-5*X2+R1**2*X2
73027      &       -R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
73028      &       +2*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2+2*R1**2*X2
73029      &       -R2**2*X2+X1*X2+X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
73030      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
73031      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
73032         ISSET4=1
73033         ENDIF
73034  
73035 C...V -> ~q ~qbar  (~q = squark).
73036       ELSEIF(ICLASS.EQ.6) THEN
73037         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
73038         RFO1=2D0*3D0+(1+R1**2+R2**2-X1)*(4*R1**2-X1**2)/
73039      &       (-1-R1**2+R2**2+X1)**2
73040      &       -2D0*(-1-3*R1**2-R2**2+X1+X1**2/2+X2-X1*X2/2)/
73041      &       (-1-R1**2+R2**2+X1)
73042      &       +(1+R1**2+R2**2-X2)*(4*R2**2-X2**2)
73043      &       /(-1+R1**2-R2**2+X2)**2
73044      &       -2D0*(-1-R1**2-3*R2**2+X1+X2-X1*X2/2+X2**2/2)/
73045      &       (-1+R1**2-R2**2+X2)
73046      &       -(-4*R1**2-4*R1**4-4*R2**2-8*R1**2*R2**2-4*R2**4+2*X1
73047      &       +6*R1**2*X1+6*R2**2*X1-2*X1**2+2*X2+6*R1**2*X2+6*R2**2*X2
73048      &       -4*X1*X2-2*R1**2*X1*X2-2*R2**2*X1*X2+X1**2*X2-2*X2**2
73049      &       +X1*X2**2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
73050         ISSET1=1
73051  
73052 C...~q -> ~q V.
73053       ELSEIF(ICLASS.EQ.7) THEN
73054         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
73055         RFO1=16*R2**2+8*(4*R2**2+2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2
73056      &       -2*X2**2)/(3*(-1+R1**2-R2**2+X2))+8*(1+R1**2+R2**2-X2)*
73057      &       (4*R2**2-X2**2)/(3*(-1+R1**2-R2**2+X2)**2)+8*(X1+X2)*
73058      &       (-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
73059      &       +2*R1**2*X1+2*R2**2*X1-X1**2+2*X2+2*R1**2*X2+2*R2**2*X2
73060      &       -2*X1*X2-X2**2)/(3*(-2+X1+X2)**2)+8*(-1-R1**2+R2**2-X1)*
73061      &       (2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2-X2**2)/
73062      &       (3*(-1+R1**2-R2**2+X2)*(-2+X1+X2))+8*(1+2*R1**2+R1**4
73063      &       +2*R2**2-2*R1**2*R2**2+R2**4-2*X1-2*R1**2*X1-4*R2**2*X1
73064      &       +X1**2-3*X2-3*R1**2*X2-3*R2**2*X2+3*X1*X2+2*X2**2)/
73065      &       (3*(-2+X1+X2))
73066         RFO1=3D0*RFO1/8D0
73067         ISSET1=1
73068  
73069 C...S -> ~q ~qbar.
73070       ELSEIF(ICLASS.EQ.8) THEN
73071         RLO1=PS
73072         RFO1=(-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
73073      &       +2*R1**2*X1+2*R2**2*X1-X1**2-R2**2*X1**2+2*X2+2*R1**2*X2
73074      &       +2*R2**2*X2-3*X1*X2-R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-X2**2
73075      &       -R1**2*X2**2+X1*X2**2)/
73076      &       (1+R1**2-R2**2-X1)**2/(-1+R1**2-R2**2+X2)**2
73077         RFO1=2D0*RFO1
73078         ISSET1=1
73079  
73080 C...~q -> ~q S.
73081       ELSEIF(ICLASS.EQ.9) THEN
73082         RLO1=PS
73083         RFO1=(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
73084      &       +(1+R1**2-R2**2+X1)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
73085      &       -(X1+X2)/(-2+X1+X2)**2
73086         ISSET1=1
73087  
73088 C...chi -> q ~qbar   (chi = neutralino/chargino).
73089       ELSEIF(ICLASS.EQ.10) THEN
73090         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
73091         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
73092         RFO1=(2*R1+X1)*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
73093      &       +2*(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1
73094      &       -R1**2*X1/2-R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
73095      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
73096      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
73097      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73098      &       (-1+R1**2-R2**2+X2)**2
73099         ISSET1=1
73100         ENDIF
73101         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
73102         RLO2=PS*(1D0-2D0*R1+R1**2-R2**2)
73103         RFO2=(2*R1-X1)*(1+R1**2+R2**2-X1)/(-1-R1**2+R2**2+X1)**2
73104      &       +2*(-1-R1**2+2*R1**3-R2**2+2*R1*R2**2+3*X1/2-R1*X1
73105      &       -R1**2*X1/2-R2**2*X1/2+X2-R1*X2+R1**2*X2-X1*X2/2)/
73106      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
73107      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
73108      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73109      &       (-1+R1**2-R2**2+X2)**2
73110         ISSET2=1
73111         ENDIF
73112         IF(ICOMBI.EQ.4) THEN
73113         RLO4=PS*(1+R1**2-R2**2)
73114         RFO4=X1*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
73115      &       +2D0*(-1-R1**2-R2**2+3*X1/2-R1**2*X1/2-R2**2*X1/2
73116      &       +X2+R1**2*X2-X1*X2/2)/
73117      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
73118      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
73119      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
73120         ISSET4=1
73121         ENDIF
73122  
73123 C...~q -> q chi.
73124       ELSEIF(ICLASS.EQ.11) THEN
73125         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
73126         RLO1=PS*(1D0-(R1+R2)**2)
73127         RFO1=(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
73128      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
73129      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
73130      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
73131      &       +(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
73132      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
73133      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
73134         ISSET1=1
73135         ENDIF
73136         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
73137         RLO2=PS*(1D0-(R1-R2)**2)
73138         RFO2=(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/
73139      &       (-2+X1+X2)**2
73140      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
73141      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
73142      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
73143      &       +(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3+R2**4
73144      &       +X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
73145      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
73146         ISSET2=1
73147         ENDIF
73148         IF(ICOMBI.EQ.4) THEN
73149         RLO4=PS*(1D0-R1**2-R2**2)
73150         RFO4=(1+R1**2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
73151      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2
73152      &       +3*R1**2*X2-R2**2*X2-X1*X2)/
73153      &       (-1+R1**2-R2**2+X2)**2
73154      &       -(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
73155      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
73156      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
73157         ISSET4=1
73158         ENDIF
73159  
73160 C...q -> ~q chi.
73161       ELSEIF(ICLASS.EQ.12) THEN
73162         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
73163         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
73164         RFO1=(2*R2+X2)*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
73165      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1-2*R2*X1+R2**2*X1+X1**2
73166      &       -3*X2-R1**2*X2-2*R2*X2+R2**2*X2+X1*X2)/
73167      &       (-2+X1+X2)**2-2*(-1-R1**2+R2+R1**2*R2-R2**2-R2**3+X1
73168      &       +R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
73169      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
73170         ISSET1=1
73171         END IF
73172         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
73173         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
73174         RFO2=(2*R2-X2)*(1+R1**2+R2**2-X2)/(-1+R1**2-R2**2+X2)**2
73175      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1+X1**2
73176      &       -3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
73177      &       (-2+X1+X2)**2-2*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
73178      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
73179      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
73180         ISSET2=1
73181         END IF
73182         IF(ICOMBI.EQ.4) THEN
73183         RLO4=PS*(1D0-R1**2+R2**2)
73184         RFO4=X2*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
73185      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2
73186      &       -3*X2-R1**2*X2+R2**2*X2+X1*X2)/
73187      &       (-2+X1+X2)**2-2*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2
73188      &       +R1**2*X2-X1*X2/2-X2**2/2)/
73189      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
73190         ISSET4=1
73191         END IF
73192  
73193 C...~g -> q ~qbar.
73194       ELSEIF(ICLASS.EQ.13) THEN
73195         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
73196         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
73197         RFO1=4*(2*R1+X1)*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)
73198      &       -(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1-R1**2*X1/2
73199      &       -R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/(3*(-1-R1**2+R2**2
73200      &       +X1)*(-1+R1**2-R2**2+X2))-3*(-1+R1-R1**2-R1**3-R2**2
73201      &       +R1*R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
73202      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+3*(4-4*R1**2+4*R2**2-3*X1
73203      &       -2*R1*X1+R1**2*X1-R2**2*X1-5*X2-2*R1*X2+R1**2*X2-R2**2*X2
73204      &       +X1*X2+X2**2)/(-2+X1+X2)**2+3*(3-R1-5*R1**2-R1**3+3*R2**2
73205      &       +R1*R2**2-2*X1-R1*X1+R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2
73206      &       +X1*X2+X2**2)/((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2-2*R1
73207      &       -6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1-R2**2*X1
73208      &       -3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73209      &       (3*(-1+R1**2-R2**2+X2)**2)
73210         RFO1=3D0*RFO1/4D0
73211         ISSET1=1
73212         ENDIF
73213         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
73214         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
73215         RFO2=4*(2*R1-X1)*(1+R1**2+R2**2-X1)/(3*(-1-R1**2+R2**2+X1)**2)
73216      &       -3*(-1-R1-R1**2+R1**3-R2**2-R1*R2**2+2*X1+R2**2*X1-X1**2/2
73217      &       +X2-R1*X2+R1**2*X2-X1*X2/2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
73218      &       +(2+2*R1**2-4*R1**3+2*R2**2-4*R1*R2**2-3*X1+2*R1*X1
73219      &       +R1**2*X1+R2**2*X1-2*X2+2*R1*X2-2*R1**2*X2+X1*X2)/
73220      &       (6*(-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+3*(4-4*R1**2
73221      &       +4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2+2*R1*X2
73222      &       +R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2+3*(3+R1
73223      &       -5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1+R1**2*X1-4*X2
73224      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73225      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2+2*R1-6*R1**2+2*R1**3
73226      &       +2*R2**2+2*R1*R2**2-X1+R1**2*X1-R2**2*X1-3*X2-2*R1*X2
73227      &       +3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73228      &       (3*(-1+R1**2-R2**2+X2)**2)
73229         RFO2=3D0*RFO2/4D0
73230         ISSET2=1
73231         ENDIF
73232         IF(ICOMBI.EQ.4) THEN
73233         RLO4=PS*(1D0+R1**2-R2**2)
73234         RFO4=8*X1*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)-6*(-1
73235      &       -R1**2-R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1**2*X2-X1*X2/2)/
73236      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+(2+2*R1**2+2*R2**2-3*X1
73237      &       +R1**2*X1+R2**2*X1-2*X2-2*R1**2*X2+X1*X2)/(3*(-1-R1**2
73238      &       +R2**2+X1)*(-1+R1**2-R2**2+X2))+6*(4-4*R1**2+4*R2**2-3*X1
73239      &       +R1**2*X1-R2**2*X1-5*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73240      &       (-2+X1+X2)**2+6*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2
73241      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73242      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+8*(2-6*R1**2+2*R2**2-X1
73243      &       +R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
73244      &       (3*(-1+R1**2-R2**2+X2)**2)
73245         RFO4=3D0*RFO4/8D0
73246         ISSET4=1
73247         ENDIF
73248  
73249 C...~q -> q ~g.
73250       ELSEIF(ICLASS.EQ.14) THEN
73251         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
73252         RLO1=PS*(1-R1**2-R2**2-2D0*R1*R2)
73253         RFO1=64*(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
73254      &       -16*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
73255      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
73256      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-16*(R1**2+R1**4
73257      &       -2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3+R2**4
73258      &       -R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2-R2**2*X2
73259      &       -X1*X2)/((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
73260      &       -64*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
73261      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
73262      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
73263      &       +8*(-1+R1**4-2*R1*R2+2*R1**3*R2-2*R2**2-2*R1*R2**3-R2**4
73264      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2-2*R1*R2*X2
73265      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
73266         RFO1=RFO1
73267      &       +8*(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
73268      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
73269      &       +X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
73270         RFO1=9D0*RFO1/64D0
73271         ISSET1=1
73272         ENDIF
73273         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
73274         RLO2=PS*(1-R1**2-R2**2+2D0*R1*R2)
73275         RFO2=64*(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
73276      &       -16*(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
73277      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
73278      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-64*(-1+R1**4
73279      &       +2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3+R2**4+X1
73280      &       -R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2-R2**2*X2
73281      &       -X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)+16*(-R1**2-R1**4
73282      &       -2*R1**3*R2-R2**2+6*R1**2*R2**2-2*R1*R2**3-R2**4+R1**2*X1
73283      &       +R1*R2*X1-2*R2**2*X1-2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
73284      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
73285         RFO2=RFO2
73286      &       +8*(-1+R1**4+2*R1*R2-2*R1**3*R2-2*R2**2+2*R1*R2**3-R2**4
73287      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2+2*R1*R2*X2
73288      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
73289      &       +8*(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3
73290      &       +R2**4+X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2
73291      &       -2*R2**2*X2+X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
73292         RFO2=9D0*RFO2/64D0
73293         ISSET2=1
73294         ENDIF
73295         IF(ICOMBI.EQ.4) THEN
73296         RLO4=PS*(1-R1**2-R2**2)
73297         RFO4=128*(1+R1**2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)-32*(-1
73298      &       +R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
73299      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
73300      &       -32*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
73301      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
73302      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))-128*(-1+R1**4
73303      &       -6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2
73304      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
73305      &       +16*(-1+R1**4-2*R2**2-R2**4-2*R1**2*X1+2*R2**2*X1+X1**2
73306      &       +X2-3*R1**2*X2+R2**2*X2+X1*X2)/
73307      &       ((-1-R1**2+R2**2+X1)*(-2+X1+ X2))
73308         RFO4=RFO4+16*(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
73309      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
73310      &       (9*(1-R1**2+R2**2-X2)*(-2+X1+X2))
73311         RFO4=9D0*RFO4/128D0
73312         ISSET4=1
73313         ENDIF
73314  
73315 C...q -> ~q ~g.
73316       ELSEIF(ICLASS.EQ.15) THEN
73317         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
73318         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
73319         RFO1=32*(2*R2+X2)*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
73320      &       +8*(-1-R1**2-2*R1**2*R2-R2**2-2*R2**3+X1+R2*X1+R2**2*X1
73321      &       +3*X2/2-R1**2*X2/2+R2*X2-R2**2*X2/2-X1*X2/2)/
73322      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2-2*R2
73323      &       -2*R1**2*R2-6*R2**2-2*R2**3-3*X1-R1**2*X1+2*R2*X1
73324      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
73325      &       (-1-R1**2+R2**2+X1)**2+32*(4+4*R1**2-4*R2**2-5*X1
73326      &       -R1**2*X1-2*R2*X1+R2**2*X1+X1**2-3*X2-R1**2*X2-2*R2*X2
73327      &       +R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
73328         RFO1=RFO1+8*(3+3*R1**2-R2+R1**2*R2-5*R2**2-R2**3-4*X1-R1**2*X1
73329      &       +2*R2**2*X1+X1**2-2*X2-R2*X2+R2**2*X2+X1*X2)/
73330      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+8*(-1-R1**2+R2+R1**2*R2
73331      &       -R2**2-R2**3+X1+R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
73332      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
73333         RFO1=9D0*RFO1/32D0
73334         ISSET1=1
73335         END IF
73336         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
73337         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
73338         RFO2=32*(2*R2-X2)*(1+R1**2+R2**2-X2)/(9*(-1+R1**2-R2**2+X2)**2)
73339      &       +8*(-1-R1**2+2*R1**2*R2-R2**2+2*R2**3+X1-R2*X1+R2**2*X1
73340      &       +3*X2/2-R1**2*X2/2-R2*X2-R2**2*X2/2-X1*X2/2)/
73341      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2+2*R2
73342      &       +2*R1**2*R2-6*R2**2+2*R2**3-3*X1-R1**2*X1-2*R2*X1
73343      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
73344      &       (-1-R1**2+R2**2+X1)**2+8*(3+3*R1**2+R2-R1**2*R2-5*R2**2
73345      &       +R2**3-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2*X2+R2**2*X2
73346      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
73347         RFO2=RFO2+32*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1
73348      &       +X1**2-3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
73349      &       (9*(-2+X1+X2)**2)+8*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
73350      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
73351      &       (9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
73352         RFO2=9D0*RFO2/32D0
73353         ISSET2=1
73354         END IF
73355         IF(ICOMBI.EQ.4) THEN
73356         RLO4=PS*(1D0-R1**2+R2**2)
73357         RFO4=64*X2*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
73358      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+3*X2/2-R1**2*X2/2
73359      &       -R2**2*X2/2-X1*X2/2)/
73360      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+16*(3+3*R1**2
73361      &       -5*R2**2-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2**2*X2
73362      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
73363      &       +64*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2-3*X2
73364      &       -R1**2*X2+R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
73365         RFO4=RFO4+16*(2+2*R1**2-6*R2**2-3*X1-R1**2*X1+3*R2**2*X1+X1**2
73366      &       -X2-R1**2*X2+R2**2*X2+X1*X2)/(-1-R1**2+R2**2+X1)**2
73367      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
73368      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
73369         RFO4=9D0*RFO4/64D0
73370         ISSET4=1
73371         END IF
73372  
73373 C...g -> ~g ~g. Use (9/4)*eikonal. May be changed in the future.
73374       ELSEIF(ICLASS.EQ.16) THEN
73375         RLO=PS
73376         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
73377           ANUM=0D0
73378         ELSEIF(ICOMBI.EQ.2) THEN
73379           ANUM=(2D0-X1-X2)**2
73380         ELSEIF(ICOMBI.EQ.3) THEN
73381           ANUM=ALPCOR*(2D0-X1-X2)**2
73382         ELSE
73383           ANUM=0.5D0*(2D0-X1-X2)**2
73384         ENDIF
73385         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
73386      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
73387      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
73388      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
73389         RFO=9D0*RFO/4D0
73390         ICOMBI=0
73391       ENDIF
73392  
73393 C...Find relevant LO and FO expression.
73394       IF(ICOMBI.EQ.0) THEN
73395       ELSEIF(ICOMBI.EQ.1.AND.ISSET1.EQ.1) THEN
73396         RLO=RLO1
73397         RFO=RFO1
73398       ELSEIF(ICOMBI.EQ.2.AND.ISSET2.EQ.1) THEN
73399         RLO=RLO2
73400         RFO=RFO2
73401       ELSEIF(ICOMBI.EQ.3.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
73402         RLO=ALPCOR*RLO1+(1D0-ALPCOR)*RLO2
73403         RFO=ALPCOR*RFO1+(1D0-ALPCOR)*RFO2
73404       ELSEIF(ISSET4.EQ.1) THEN
73405         RLO=RLO4
73406         RFO=RFO4
73407       ELSEIF(ICOMBI.EQ.4.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
73408         RLO=0.5D0*(RLO1+RLO2)
73409         RFO=0.5D0*(RFO1+RFO2)
73410       ELSEIF(ISSET1.EQ.1) THEN
73411         RLO=RLO1
73412         RFO=RFO1
73413       ELSE
73414         CALL PYERRM(16,'(PYMAEL:) not implemented ME code')
73415         RLO=1D0
73416         RFO=0D0
73417       ENDIF
73418  
73419 C...Output.
73420       PYMAEL=RFO/RLO
73421  
73422       RETURN
73423       END
73424  
73425 C*********************************************************************
73426  
73427 C...PYBOEI
73428 C...Modifies an event so as to approximately take into account
73429 C...Bose-Einstein effects according to a simple phenomenological
73430 C...parametrization.
73431  
73432       SUBROUTINE PYBOEI(NSAV)
73433  
73434 C...Double precision and integer declarations.
73435       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73436       IMPLICIT INTEGER(I-N)
73437       INTEGER PYK,PYCHGE,PYCOMP
73438 C...Parameter statement to help give large particle numbers.
73439       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
73440      &KEXCIT=4000000,KDIMEN=5000000)
73441 C...Commonblocks.
73442       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
73443       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73444       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
73445       COMMON/PYINT1/MINT(400),VINT(400)
73446       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/
73447 C...Local arrays and data.
73448       DIMENSION DPS(4),KFBE(9),NBE(0:10),BEI(100),BEI3(100),
73449      &BEIW(100),BEI3W(100)
73450       DATA KFBE/211,-211,111,321,-321,130,310,221,331/
73451 C...Statement function: squared invariant mass.
73452       SDIP(I,J)=((P(I,4)+P(J,4))**2-(P(I,3)+P(J,3))**2-
73453      &(P(I,2)+P(J,2))**2-(P(I,1)+P(J,1))**2)
73454  
73455 C...Boost event to overall CM frame. Calculate CM energy.
73456       IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN
73457       DO 100 J=1,4
73458         DPS(J)=0D0
73459   100 CONTINUE
73460       DO 120 I=1,N
73461         KFA=IABS(K(I,2))
73462         IF(K(I,1).LE.10.AND.((KFA.GT.10.AND.KFA.LE.20).OR.KFA.EQ.22)
73463      &  .AND.K(I,3).GT.0) THEN
73464           KFMA=IABS(K(K(I,3),2))
73465           IF(KFMA.GT.10.AND.KFMA.LE.80) K(I,1)=-K(I,1)
73466         ENDIF
73467         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120
73468         DO 110 J=1,4
73469           DPS(J)=DPS(J)+P(I,J)
73470   110   CONTINUE
73471   120 CONTINUE
73472       CALL PYROBO(0,0,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
73473      &-DPS(3)/DPS(4))
73474       PECM=0D0
73475       DO 130 I=1,N
73476         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4)
73477   130 CONTINUE
73478  
73479 C...Check if we have separated strings
73480  
73481 C...Reserve copy of particles by species at end of record.
73482       IWP=0
73483       IWN=0
73484       NBE(0)=N+MSTU(3)
73485       NMAX=NBE(0)
73486       SMMIN=PECM
73487       DO 190 IBE=1,MIN(10,MSTJ(52)+1)
73488         NBE(IBE)=NBE(IBE-1)
73489         DO 180 I=NSAV+1,N
73490           IF(IBE.EQ.MIN(10,MSTJ(52)+1)) THEN
73491             DO 140 IIBE=1,IBE-1
73492               IF(K(I,2).EQ.KFBE(IIBE)) GOTO 180
73493   140       CONTINUE
73494           ELSE
73495             IF(K(I,2).NE.KFBE(IBE)) GOTO 180
73496           ENDIF
73497           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 180
73498           IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN
73499             CALL PYERRM(11,'(PYBOEI:) no more memory left in PYJETS')
73500             RETURN
73501           ENDIF
73502           NBE(IBE)=NBE(IBE)+1
73503           NMAX=NBE(IBE)
73504           K(NBE(IBE),1)=I
73505           K(NBE(IBE),2)=0
73506           K(NBE(IBE),3)=0
73507           K(NBE(IBE),4)=0
73508           K(NBE(IBE),5)=0
73509           P(NBE(IBE),1)=0.0D0
73510           P(NBE(IBE),2)=0.0D0
73511           P(NBE(IBE),3)=0.0D0
73512           P(NBE(IBE),4)=0.0D0
73513           P(NBE(IBE),5)=0.0D0
73514           SMMIN=MIN(SMMIN,P(I,5))
73515 C...Check if particles comes from different W's or Z's
73516           IF((MSTJ(53).NE.0.OR.MSTJ(56).GT.0).AND.MINT(32).EQ.0) THEN
73517             IM=I
73518   150       IF(K(IM,3).GT.0) THEN
73519               IM=K(IM,3)
73520               IF(ABS(K(IM,2)).NE.24.AND.K(IM,2).NE.23) GOTO 150
73521               K(NBE(IBE),5)=IM
73522               IF(IWP.EQ.0.AND.K(IM,2).EQ.24) IWP=IM
73523               IF(IWN.EQ.0.AND.K(IM,2).EQ.-24) IWN=IM
73524               IF(IWP.EQ.0.AND.K(IM,2).EQ.23) IWP=IM
73525               IF(IWN.EQ.0.AND.K(IM,2).EQ.23.AND.IM.NE.IWP) IWN=IM
73526             ENDIF
73527           ENDIF
73528 C...Check if particles comes from different strings.
73529           IF(PARJ(94).GT.0.0D0) THEN
73530             IM=I
73531   160       IF(K(IM,3).GT.0) THEN
73532               IM=K(IM,3)
73533               IF(K(IM,2).NE.92.AND.K(IM,2).NE.91) GOTO 160
73534               K(NBE(IBE),5)=IM
73535             ENDIF
73536           ENDIF
73537           DO 170 J=1,3
73538             P(NBE(IBE),J)=0D0
73539             V(NBE(IBE),J)=0D0
73540   170     CONTINUE
73541           P(NBE(IBE),5)=-1.0D0
73542   180   CONTINUE
73543   190 CONTINUE
73544       IF(NBE(MIN(9,MSTJ(52)))-NBE(0).LE.1) GOTO 510
73545  
73546 C...Calculate separation between W+ and W- or between two Z0's.
73547 C...No separation if there has been re-connections.
73548       SIGW=PARJ(93)
73549       IF(IWP.GT.0.AND.IWN.GT.0.AND.MSTJ(56).GT.0.AND.MINT(32).EQ.0) THEN
73550         IF(K(IWP,2).EQ.23) THEN
73551           DMW=PMAS(23,1)
73552           DGW=PMAS(23,2)
73553         ELSE
73554           DMW=PMAS(24,1)
73555           DGW=PMAS(24,2)
73556         ENDIF
73557         DMP=P(IWP,5)
73558         DMN=P(IWN,5)
73559         TAUPD=DMP/SQRT((DMP**2-DMW**2)**2+(DGW*(DMP**2)/DMW)**2)
73560         TAUND=DMN/SQRT((DMN**2-DMW**2)**2+(DGW*(DMN**2)/DMW)**2)
73561         TAUP=-TAUPD*LOG(PYR(IDUM))
73562         TAUN=-TAUND*LOG(PYR(IDUM))
73563         DXP=TAUP*PYP(IWP,8)/DMP
73564         DXN=TAUN*PYP(IWN,8)/DMN
73565         DX=DXP+DXN
73566         SIGW=1.0D0/(1.0D0/PARJ(93)+REAL(MSTJ(56))*DX)
73567         IF(PARJ(94).LT.0.0D0) SIGW=1.0D0/(1.0D0/SIGW-1.0D0/PARJ(94))
73568       ENDIF
73569  
73570 C...Add separation between strings.
73571       IF(PARJ(94).GT.0.0D0) THEN
73572         SIGW=1.0D0/(1.0D0/SIGW+1.0D0/PARJ(94))
73573         IWP=-1
73574         IWN=-1
73575       ENDIF
73576  
73577       IF(MSTJ(57).EQ.1.AND.MSTJ(54).LT.0) THEN
73578         DO 220 IBE=1,MIN(9,MSTJ(52))
73579           DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)
73580             Q2MIN=PECM**2
73581             I1=K(I1M,1)
73582             DO 200 I2M=NBE(IBE-1)+1,NBE(IBE)
73583               IF(I2M.EQ.I1M) GOTO 200
73584               I2=K(I2M,1)
73585               Q2=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-
73586      &        (P(I1,2)+P(I2,2))**2-(P(I1,3)+P(I2,3))**2-
73587      &        (P(I1,5)+P(I2,5))**2
73588               IF(Q2.GT.0.0D0.AND.Q2.LT.Q2MIN) THEN
73589                 Q2MIN=Q2
73590               ENDIF
73591   200       CONTINUE
73592             P(I1M,5)=Q2MIN
73593   210     CONTINUE
73594   220   CONTINUE
73595       ENDIF
73596  
73597 C...Tabulate integral for subsequent momentum shift.
73598       DO 400 IBE=1,MIN(9,MSTJ(52))
73599         IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 270
73600         IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2))
73601      &  .LE.1) GOTO 270
73602         IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5),
73603      &  NBE(7)-NBE(6)).LE.1) GOTO 270
73604         IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 270
73605         IF(IBE.EQ.1) PMHQ=2D0*PYMASS(211)
73606         IF(IBE.EQ.4) PMHQ=2D0*PYMASS(321)
73607         IF(IBE.EQ.8) PMHQ=2D0*PYMASS(221)
73608         IF(IBE.EQ.9) PMHQ=2D0*PYMASS(331)
73609         QDEL=0.1D0*MIN(PMHQ,PARJ(93))
73610         QDEL3=0.1D0*MIN(PMHQ,PARJ(93)*3.0D0)
73611         QDELW=0.1D0*MIN(PMHQ,SIGW)
73612         QDEL3W=0.1D0*MIN(PMHQ,SIGW*3.0D0)
73613         IF(MSTJ(51).EQ.1) THEN
73614           NBIN=MIN(100,NINT(9D0*PARJ(93)/QDEL))
73615           NBIN3=MIN(100,NINT(27D0*PARJ(93)/QDEL3))
73616           NBINW=MIN(100,NINT(9D0*SIGW/QDELW))
73617           NBIN3W=MIN(100,NINT(27D0*SIGW/QDEL3W))
73618           BEEX=EXP(0.5D0*QDEL/PARJ(93))
73619           BEEX3=EXP(0.5D0*QDEL3/(3.0D0*PARJ(93)))
73620           BEEXW=EXP(0.5D0*QDELW/SIGW)
73621           BEEX3W=EXP(0.5D0*QDEL3W/(3.0D0*SIGW))
73622           BERT=EXP(-QDEL/PARJ(93))
73623           BERT3=EXP(-QDEL3/(3.0D0*PARJ(93)))
73624           BERTW=EXP(-QDELW/SIGW)
73625           BERT3W=EXP(-QDEL3W/(3.0D0*SIGW))
73626         ELSE
73627           NBIN=MIN(100,NINT(3D0*PARJ(93)/QDEL))
73628           NBIN3=MIN(100,NINT(9D0*PARJ(93)/QDEL3))
73629           NBINW=MIN(100,NINT(3D0*SIGW/QDELW))
73630           NBIN3W=MIN(100,NINT(9D0*SIGW/QDEL3W))
73631         ENDIF
73632         DO 230 IBIN=1,NBIN
73633           QBIN=QDEL*(IBIN-0.5D0)
73634           BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12D0)/SQRT(QBIN**2+PMHQ**2)
73635           IF(MSTJ(51).EQ.1) THEN
73636             BEEX=BEEX*BERT
73637             BEI(IBIN)=BEI(IBIN)*BEEX
73638           ELSE
73639             BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2)
73640           ENDIF
73641           IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1)
73642   230   CONTINUE
73643         DO 240 IBIN=1,NBIN3
73644           QBIN=QDEL3*(IBIN-0.5D0)
73645           BEI3(IBIN)=QDEL3*(QBIN**2+QDEL3**2/12D0)/SQRT(QBIN**2+PMHQ**2)
73646           IF(MSTJ(51).EQ.1) THEN
73647             BEEX3=BEEX3*BERT3
73648             BEI3(IBIN)=BEI3(IBIN)*BEEX3
73649           ELSE
73650             BEI3(IBIN)=BEI3(IBIN)*EXP(-(QBIN/(3.0D0*PARJ(93)))**2)
73651           ENDIF
73652           IF(IBIN.GE.2) BEI3(IBIN)=BEI3(IBIN)+BEI3(IBIN-1)
73653   240   CONTINUE
73654         DO 250 IBIN=1,NBINW
73655           QBIN=QDELW*(IBIN-0.5D0)
73656           BEIW(IBIN)=QDELW*(QBIN**2+QDELW**2/12D0)/SQRT(QBIN**2+PMHQ**2)
73657           IF(MSTJ(51).EQ.1) THEN
73658             BEEXW=BEEXW*BERTW
73659             BEIW(IBIN)=BEIW(IBIN)*BEEXW
73660           ELSE
73661             BEIW(IBIN)=BEIW(IBIN)*EXP(-(QBIN/SIGW)**2)
73662           ENDIF
73663           IF(IBIN.GE.2) BEIW(IBIN)=BEIW(IBIN)+BEIW(IBIN-1)
73664   250   CONTINUE
73665         DO 260 IBIN=1,NBIN3W
73666           QBIN=QDEL3W*(IBIN-0.5D0)
73667           BEI3W(IBIN)=QDEL3W*(QBIN**2+QDEL3W**2/12D0)/
73668      &    SQRT(QBIN**2+PMHQ**2)
73669           IF(MSTJ(51).EQ.1) THEN
73670             BEEX3W=BEEX3W*BERT3W
73671             BEI3W(IBIN)=BEI3W(IBIN)*BEEX3W
73672           ELSE
73673             BEI3W(IBIN)=BEI3W(IBIN)*EXP(-(QBIN/(3.0D0*SIGW))**2)
73674           ENDIF
73675           IF(IBIN.GE.2) BEI3W(IBIN)=BEI3W(IBIN)+BEI3W(IBIN-1)
73676   260   CONTINUE
73677  
73678 C...Loop through particle pairs and find old relative momentum.
73679   270   DO 390 I1M=NBE(IBE-1)+1,NBE(IBE)-1
73680           I1=K(I1M,1)
73681           DO 380 I2M=I1M+1,NBE(IBE)
73682             IF(MSTJ(53).EQ.1.AND.K(I1M,5).NE.K(I2M,5)) GOTO 380
73683             IF(MSTJ(53).EQ.2.AND.K(I1M,5).EQ.K(I2M,5)) GOTO 380
73684             I2=K(I2M,1)
73685             Q2OLD=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+
73686      &      P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2
73687             IF(Q2OLD.LE.0.0D0) GOTO 380
73688             QOLD=SQRT(Q2OLD)
73689  
73690 C...Calculate new relative momentum.
73691             QMOV=0.0D0
73692             QMOV3=0.0D0
73693             QMOVW=0.0D0
73694             QMOV3W=0.0D0
73695             IF(QOLD.LT.1D-3*QDEL) THEN
73696               GOTO 280
73697             ELSEIF(QOLD.LE.QDEL) THEN
73698               QMOV=QOLD/3D0
73699             ELSEIF(QOLD.LT.(NBIN-0.1D0)*QDEL) THEN
73700               RBIN=QOLD/QDEL
73701               IBIN=RBIN
73702               RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1)
73703               QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))*
73704      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
73705             ELSE
73706               QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
73707             ENDIF
73708   280       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV))**(2D0/3D0)
73709             IF(QOLD.LT.1D-3*QDEL3) THEN
73710               GOTO 290
73711             ELSEIF(QOLD.LE.QDEL3) THEN
73712               QMOV3=QOLD/3D0
73713             ELSEIF(QOLD.LT.(NBIN3-0.1D0)*QDEL3) THEN
73714               RBIN3=QOLD/QDEL3
73715               IBIN3=RBIN3
73716               RINP3=(RBIN3**3-IBIN3**3)/(3*IBIN3*(IBIN3+1)+1)
73717               QMOV3=(BEI3(IBIN3)+RINP3*(BEI3(IBIN3+1)-BEI3(IBIN3)))*
73718      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
73719             ELSE
73720               QMOV3=BEI3(NBIN3)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
73721             ENDIF
73722   290       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3))**(2D0/3D0)
73723             RSCALE=1.0D0
73724             IF(MSTJ(54).EQ.2)
73725      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*PARJ(93)))**2)
73726             IF((IWP.NE.-1.AND.MSTJ(56).LE.0).OR.IWP.EQ.0.OR.IWN.EQ.0.OR.
73727      &      K(I1M,5).EQ.K(I2M,5)) GOTO 320
73728  
73729             IF(QOLD.LT.1D-3*QDELW) THEN
73730               GOTO 300
73731             ELSEIF(QOLD.LE.QDELW) THEN
73732               QMOVW=QOLD/3D0
73733             ELSEIF(QOLD.LT.(NBINW-0.1D0)*QDELW) THEN
73734               RBINW=QOLD/QDELW
73735               IBINW=RBINW
73736               RINPW=(RBINW**3-IBINW**3)/(3*IBINW*(IBINW+1)+1)
73737               QMOVW=(BEIW(IBINW)+RINPW*(BEIW(IBINW+1)-BEIW(IBINW)))*
73738      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
73739             ELSE
73740               QMOVW=BEIW(NBINW)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
73741             ENDIF
73742   300       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOVW))**(2D0/3D0)
73743             IF(QOLD.LT.1D-3*QDEL3W) THEN
73744               GOTO 310
73745             ELSEIF(QOLD.LE.QDEL3W) THEN
73746               QMOV3W=QOLD/3D0
73747             ELSEIF(QOLD.LT.(NBIN3W-0.1D0)*QDEL3W) THEN
73748               RBIN3W=QOLD/QDEL3W
73749               IBIN3W=RBIN3W
73750               RINP3W=(RBIN3W**3-IBIN3W**3)/(3*IBIN3W*(IBIN3W+1)+1)
73751               QMOV3W=(BEI3W(IBIN3W)+RINP3W*(BEI3W(IBIN3W+1)-
73752      &        BEI3W(IBIN3W)))*SQRT(Q2OLD+PMHQ**2)/Q2OLD
73753             ELSE
73754               QMOV3W=BEI3W(NBIN3W)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
73755             ENDIF
73756   310       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3W))**(2D0/3D0)
73757             IF(MSTJ(54).EQ.2)
73758      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*SIGW))**2)
73759  
73760   320       CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW)
73761             DO 330 J=1,3
73762               P(I1M,J)=P(I1M,J)+P(NMAX+1,J)
73763               P(I2M,J)=P(I2M,J)+P(NMAX+2,J)
73764   330       CONTINUE
73765             IF(MSTJ(54).GE.1) THEN
73766               CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW3)
73767               DO 340 J=1,3
73768                 V(I1M,J)=V(I1M,J)+P(NMAX+1,J)*RSCALE
73769                 V(I2M,J)=V(I2M,J)+P(NMAX+2,J)*RSCALE
73770   340         CONTINUE
73771             ELSEIF(MSTJ(54).LE.-1) THEN
73772               EDEL=P(I1,4)+P(I2,4)-
73773      &        SQRT(MAX(Q2NEW-Q2OLD+(P(I1,4)+P(I2,4))**2,0.0D0))
73774               A2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
73775      &        (P(I1,3)-P(I2,3))**2
73776               WMAX=-1.0D20
73777               MI3=0
73778               MI4=0
73779               S12=SDIP(I1,I2)
73780               SM1=(P(I1,5)+SMMIN)**2
73781               DO 360 I3M=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
73782                 IF(I3M.EQ.I1M.OR.I3M.EQ.I2M) GOTO 360
73783                 IF(MSTJ(53).EQ.1.AND.K(I3M,5).NE.K(I1M,5)) GOTO 360
73784                 IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
73785      &          K(I3M,5).NE.K(I1M,5)) GOTO 360
73786                 I3=K(I3M,1)
73787                 IF(K(I3,2).EQ.K(I1,2)) GOTO 360
73788                 S13=SDIP(I1,I3)
73789                 S23=SDIP(I2,I3)
73790                 SM3=(P(I3,5)+SMMIN)**2
73791                 IF(MSTJ(54).EQ.-2) THEN
73792                   WI=(MIN(S12*SM3,S13*MIN(SM1,SM3),
73793      &            S23*MIN(SM1,SM3))*SM1)
73794                 ELSE
73795                   WI=((P(I1,4)+P(I2,4)+P(I3,4))**2-
73796      &            (P(I1,3)+P(I2,3)+P(I3,3))**2-
73797      &            (P(I1,2)+P(I2,2)+P(I3,2))**2-
73798      &            (P(I1,1)+P(I2,1)+P(I3,1))**2)
73799                 ENDIF
73800                 IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0) THEN
73801                   IF (WMAX*WI.GE.(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2))))
73802      &                 GOTO 360
73803                 ELSE
73804                   IF(WMAX*WI.GE.1.0) GOTO 360
73805                 ENDIF
73806                 DO 350 I4M=I3M+1,NBE(MIN(10,MSTJ(52)+1))
73807                   IF(I4M.EQ.I1M.OR.I4M.EQ.I2M) GOTO 350
73808                   IF(MSTJ(53).EQ.1.AND.K(I4M,5).NE.K(I1M,5)) GOTO 350
73809                   IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
73810      &            K(I4M,5).NE.K(I1M,5)) GOTO 350
73811                   I4=K(I4M,1)
73812                   IF(K(I3,2).EQ.K(I4,2).OR.K(I4,2).EQ.K(I1,2))
73813      &            GOTO 350
73814                   IF((P(I3,4)+P(I4,4)+EDEL)**2.LT.
73815      &            (P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
73816      &            (P(I3,3)+P(I4,3))**2+(P(I3,5)+P(I4,5))**2)
73817      &            GOTO 350
73818                   IF(MSTJ(54).EQ.-2) THEN
73819                     S14=SDIP(I1,I4)
73820                     S24=SDIP(I2,I4)
73821                     S34=SDIP(I3,I4)
73822                     W=S12*MIN(MIN(S23,S24),MIN(S13,S14))*S34
73823                     W=MIN(W,S13*MIN(MIN(S23,S34),S12)*S24)
73824                     W=MIN(W,S14*MIN(MIN(S24,S34),S12)*S23)
73825                     W=MIN(W,MIN(S23,S24)*S13*S14)
73826                     W=1.0D0/W
73827                   ELSE
73828 C...weight=1-cos(theta)/mtot2
73829                     S1234=(P(I1,4)+P(I2,4)+P(I3,4)+P(I4,4))**2-
73830      &              (P(I1,3)+P(I2,3)+P(I3,3)+P(I4,3))**2-
73831      &              (P(I1,2)+P(I2,2)+P(I3,2)+P(I4,2))**2-
73832      &              (P(I1,1)+P(I2,1)+P(I3,1)+P(I4,1))**2
73833                     W=1.0D0/S1234
73834                     IF(W.LE.WMAX) GOTO 350
73835                   ENDIF
73836                   IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0)
73837      &            W=W*(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2)))
73838                   IF(MSTJ(57).EQ.1.AND.P(I4M,5).GT.0)
73839      &            W=W*(1.0D0-EXP(-P(I4M,5)/(PARJ(93)**2)))
73840                   IF(W.LE.WMAX) GOTO 350
73841                   MI3=I3M
73842                   MI4=I4M
73843                   WMAX=W
73844   350           CONTINUE
73845   360         CONTINUE
73846               IF(MI4.EQ.0) GOTO 380
73847               I3=K(MI3,1)
73848               I4=K(MI4,1)
73849               EOLD=P(I3,4)+P(I4,4)
73850               ENEW=EOLD+EDEL
73851               P2=(P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
73852      &        (P(I3,3)+P(I4,3))**2
73853               Q2NEWP=MAX(0.0D0,ENEW**2-P2-(P(I3,5)+P(I4,5))**2)
73854               Q2OLDP=MAX(0.0D0,EOLD**2-P2-(P(I3,5)+P(I4,5))**2)
73855               CALL PYBESQ(I3,I4,NMAX,Q2OLDP,Q2NEWP)
73856               DO 370 J=1,3
73857                 V(MI3,J)=V(MI3,J)+P(NMAX+1,J)
73858                 V(MI4,J)=V(MI4,J)+P(NMAX+2,J)
73859   370         CONTINUE
73860             ENDIF
73861   380     CONTINUE
73862   390   CONTINUE
73863   400 CONTINUE
73864  
73865 C...Shift momenta and recalculate energies.
73866       ESUMP=0.0D0
73867       ESUM=0.0D0
73868       PROD=0.0D0
73869       DO 430 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
73870         I=K(IM,1)
73871         ESUMP=ESUMP+P(I,4)
73872         DO 410 J=1,3
73873           P(I,J)=P(I,J)+P(IM,J)
73874   410   CONTINUE
73875         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
73876         ESUM=ESUM+P(I,4)
73877         DO 420 J=1,3
73878           PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
73879   420   CONTINUE
73880   430 CONTINUE
73881  
73882       PARJ(96)=0.0D0
73883       IF(MSTJ(54).NE.0.AND.PROD.NE.0.0D0) THEN
73884   440   ALPHA=(ESUMP-ESUM)/PROD
73885         PARJ(96)=PARJ(96)+ALPHA
73886         PROD=0.0D0
73887         ESUM=0.0D0
73888         DO 470 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
73889           I=K(IM,1)
73890           DO 450 J=1,3
73891             P(I,J)=P(I,J)+ALPHA*V(IM,J)
73892   450     CONTINUE
73893           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
73894           ESUM=ESUM+P(I,4)
73895           DO 460 J=1,3
73896             PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
73897   460     CONTINUE
73898   470   CONTINUE
73899         IF(PROD.NE.0.0D0.AND.ABS(ESUMP-ESUM)/PECM.GT.0.00001D0)
73900      &  GOTO 440
73901       ENDIF
73902  
73903 C...Rescale all momenta for energy conservation.
73904       PES=0D0
73905       PQS=0D0
73906       DO 480 I=1,N
73907         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 480
73908         PES=PES+P(I,4)
73909         PQS=PQS+P(I,5)**2/P(I,4)
73910   480 CONTINUE
73911       PARJ(95)=PES-PECM
73912       FAC=(PECM-PQS)/(PES-PQS)
73913       DO 500 I=1,N
73914         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 500
73915         DO 490 J=1,3
73916           P(I,J)=FAC*P(I,J)
73917   490   CONTINUE
73918         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
73919   500 CONTINUE
73920  
73921 C...Boost back to correct reference frame.
73922   510 CALL PYROBO(0,0,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4))
73923       DO 520 I=1,N
73924         IF(K(I,1).LT.0) K(I,1)=-K(I,1)
73925   520 CONTINUE
73926  
73927       RETURN
73928       END
73929  
73930 C*********************************************************************
73931  
73932 C...PYBESQ
73933 C...Calculates the momentum shift in a system of two particles assuming
73934 C...the relative momentum squared should be shifted to Q2NEW. NI is the
73935 C...last position occupied in /PYJETS/.
73936  
73937       SUBROUTINE PYBESQ(I1,I2,NI,Q2OLD,Q2NEW)
73938  
73939 C...Double precision and integer declarations.
73940       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73941       IMPLICIT INTEGER(I-N)
73942       INTEGER PYK,PYCHGE,PYCOMP
73943 C...Parameter statement to help give large particle numbers.
73944       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
73945      &KEXCIT=4000000,KDIMEN=5000000)
73946 C...Commonblocks.
73947       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
73948       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73949       SAVE /PYJETS/,/PYDAT1/
73950 C...Local arrays and data.
73951       DIMENSION DP(5)
73952       SAVE HC1
73953  
73954       IF(MSTJ(55).EQ.0) THEN
73955         DQ2=Q2NEW-Q2OLD
73956         DP2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
73957      &  (P(I1,3)-P(I2,3))**2
73958         DP12=P(I1,1)**2+P(I1,2)**2+P(I1,3)**2
73959      &  -P(I2,1)**2-P(I2,2)**2-P(I2,3)**2
73960         SE=P(I1,4)+P(I2,4)
73961         DE=P(I1,4)-P(I2,4)
73962         DQ2SE=DQ2+SE**2
73963         DA=SE*DE*DP12-DP2*DQ2SE
73964         DB=DP2*DQ2SE-DP12**2
73965         HA=(DA+SQRT(MAX(DA**2+DQ2*(DQ2+SE**2-DE**2)*DB,0D0)))/(2D0*DB)
73966         DO 100 J=1,3
73967           PD=HA*(P(I1,J)-P(I2,J))
73968           P(NI+1,J)=PD
73969           P(NI+2,J)=-PD
73970   100   CONTINUE
73971         RETURN
73972       ENDIF
73973  
73974       K(NI+1,1)=1
73975       K(NI+2,1)=1
73976       DO 110 J=1,5
73977         P(NI+1,J)=P(I1,J)
73978         P(NI+2,J)=P(I2,J)
73979         DP(J)=P(I1,J)+P(I2,J)
73980   110 CONTINUE
73981  
73982 C...Boost to cms and rotate first particle to z-axis
73983       CALL PYROBO(NI+1,NI+2,0.0D0,0.0D0,
73984      &-DP(1)/DP(4),-DP(2)/DP(4),-DP(3)/DP(4))
73985       PHI=PYANGL(P(NI+1,1),P(NI+1,2))
73986       THE=PYANGL(P(NI+1,3),SQRT(P(NI+1,1)**2+P(NI+1,2)**2))
73987       S=Q2NEW+(P(I1,5)+P(I2,5))**2
73988       PZ=0.5D0*SQRT(Q2NEW*(S-(P(I1,5)-P(I2,5))**2)/S)
73989       P(NI+1,1)=0.0D0
73990       P(NI+1,2)=0.0D0
73991       P(NI+1,3)=PZ
73992       P(NI+1,4)=SQRT(PZ**2+P(I1,5)**2)
73993       P(NI+2,1)=0.0D0
73994       P(NI+2,2)=0.0D0
73995       P(NI+2,3)=-PZ
73996       P(NI+2,4)=SQRT(PZ**2+P(I2,5)**2)
73997       DP(4)=SQRT(DP(1)**2+DP(2)**2+DP(3)**2+S)
73998       CALL PYROBO(NI+1,NI+2,THE,PHI,
73999      &DP(1)/DP(4),DP(2)/DP(4),DP(3)/DP(4))
74000  
74001       DO 120 J=1,3
74002         P(NI+1,J)=P(NI+1,J)-P(I1,J)
74003         P(NI+2,J)=P(NI+2,J)-P(I2,J)
74004   120 CONTINUE
74005  
74006       RETURN
74007       END
74008  
74009 C*********************************************************************
74010  
74011 C...PYMASS
74012 C...Gives the mass of a particle/parton.
74013  
74014       FUNCTION PYMASS(KF)
74015  
74016 C...Double precision and integer declarations.
74017       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74018       IMPLICIT INTEGER(I-N)
74019       INTEGER PYK,PYCHGE,PYCOMP
74020 C...Commonblocks.
74021       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74022       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74023       SAVE /PYDAT1/,/PYDAT2/
74024  
74025 C...Reset variables. Compressed code. Special case for popcorn diquarks.
74026       PYMASS=0D0
74027       KFA=IABS(KF)
74028       KC=PYCOMP(KF)
74029       IF(KC.EQ.0) THEN
74030         MSTJ(93)=0
74031         RETURN
74032       ENDIF
74033  
74034 C...Guarantee use of constituent masses for internal checks.
74035       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.
74036      &(KFA.LE.10.OR.MOD(KFA/10,10).EQ.0)) THEN
74037         IF(KFA.LE.5) THEN
74038           PYMASS=PARF(100+KFA)
74039           IF(MSTJ(93).EQ.2) PYMASS=MAX(0D0,PYMASS-PARF(121))
74040         ELSEIF(KFA.LE.10) THEN
74041           PYMASS=PMAS(KFA,1)
74042         ELSEIF(MSTJ(93).EQ.1) THEN
74043           PYMASS=PARF(100+MOD(KFA/1000,10))+PARF(100+MOD(KFA/100,10))
74044         ELSE
74045           PYMASS=MAX(0D0,PMAS(KC,1)-PARF(122)-2D0*PARF(112)/3D0)
74046         ENDIF
74047  
74048 C...Other masses can be read directly off table.
74049       ELSE
74050         PYMASS=PMAS(KC,1)
74051       ENDIF
74052  
74053 C...Optional mass broadening according to truncated Breit-Wigner
74054 C...(either in m or in m^2).
74055       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1D-4) THEN
74056         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN
74057           PYMASS=PYMASS+0.5D0*PMAS(KC,2)*TAN((2D0*PYR(0)-1D0)*
74058      &    ATAN(2D0*PMAS(KC,3)/PMAS(KC,2)))
74059         ELSE
74060           PM0=PYMASS
74061           PMLOW=ATAN((MAX(0D0,PM0-PMAS(KC,3))**2-PM0**2)/
74062      &    (PM0*PMAS(KC,2)))
74063           PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2)))
74064           PYMASS=SQRT(MAX(0D0,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+
74065      &    (PMUPP-PMLOW)*PYR(0))))
74066         ENDIF
74067       ENDIF
74068       MSTJ(93)=0
74069  
74070       RETURN
74071       END
74072  
74073 C*********************************************************************
74074  
74075 C...PYMRUN
74076 C...Gives the running, current-algebra mass of a d, u, s, c or b quark,
74077 C...for Higgs couplings. Everything else sent on to PYMASS.
74078  
74079       FUNCTION PYMRUN(KF,Q2)
74080  
74081 C...Double precision and integer declarations.
74082       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74083       IMPLICIT INTEGER(I-N)
74084       INTEGER PYK,PYCHGE,PYCOMP
74085 C...Commonblocks.
74086       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74087       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74088       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
74089       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/
74090  
74091 C...Most masses not handled here.
74092       KFA=IABS(KF)
74093       IF(KFA.EQ.0.OR.KFA.GT.6) THEN
74094         PYMRUN=PYMASS(KF)
74095  
74096 C...Current-algebra masses, but no Q2 dependence.
74097       ELSEIF(MSTP(37).NE.1.OR.MSTP(2).LE.0) THEN
74098         PYMRUN=PARF(90+KFA)
74099  
74100 C...Running current-algebra masses.
74101       ELSE
74102         AS=PYALPS(Q2)
74103         PYMRUN=PARF(90+KFA)*
74104      &  (LOG(MAX(4D0,PARP(37)**2*PARF(90+KFA)**2/PARU(117)**2))/
74105      &  LOG(MAX(4D0,Q2/PARU(117)**2)))**(12D0/(33D0-2D0*MSTU(118)))
74106       ENDIF
74107  
74108       RETURN
74109       END
74110  
74111 C*********************************************************************
74112  
74113 C...PYNAME
74114 C...Gives the particle/parton name as a character string.
74115  
74116       SUBROUTINE PYNAME(KF,CHAU)
74117  
74118 C...Double precision and integer declarations.
74119       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74120       IMPLICIT INTEGER(I-N)
74121       INTEGER PYK,PYCHGE,PYCOMP
74122 C...Commonblocks.
74123       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74124       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74125       COMMON/PYDAT4/CHAF(500,2)
74126       CHARACTER CHAF*16
74127       SAVE /PYDAT1/,/PYDAT2/,/PYDAT4/
74128 C...Local character variable.
74129       CHARACTER CHAU*16
74130  
74131 C...Read out code with distinction particle/antiparticle.
74132       CHAU=' '
74133       KC=PYCOMP(KF)
74134       IF(KC.NE.0) CHAU=CHAF(KC,(3-ISIGN(1,KF))/2)
74135  
74136  
74137       RETURN
74138       END
74139  
74140 C*********************************************************************
74141  
74142 C...PYCHGE
74143 C...Gives three times the charge for a particle/parton.
74144  
74145       FUNCTION PYCHGE(KF)
74146  
74147 C...Double precision and integer declarations.
74148       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74149       IMPLICIT INTEGER(I-N)
74150       INTEGER PYK,PYCHGE,PYCOMP
74151 C...Commonblocks.
74152       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74153       SAVE /PYDAT2/
74154  
74155 C...Read out charge and change sign for antiparticle.
74156       PYCHGE=0
74157       KC=PYCOMP(KF)
74158       IF(KC.NE.0) PYCHGE=KCHG(KC,1)*ISIGN(1,KF)
74159  
74160       RETURN
74161       END
74162  
74163 C*********************************************************************
74164  
74165 C...PYCOMP
74166 C...Compress the standard KF codes for use in mass and decay arrays;
74167 C...also checks whether a given code actually is defined.
74168  
74169       FUNCTION PYCOMP(KF)
74170  
74171 C...Double precision and integer declarations.
74172       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74173       IMPLICIT INTEGER(I-N)
74174       INTEGER PYK,PYCHGE,PYCOMP
74175 C...Commonblocks.
74176       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74177       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74178       SAVE /PYDAT1/,/PYDAT2/
74179 C...Local arrays and saved data.
74180       DIMENSION KFORD(100:500),KCORD(101:500)
74181       SAVE KFORD,KCORD,NFORD,KFLAST,KCLAST
74182  
74183 C...Whenever necessary reorder codes for faster search.
74184       IF(MSTU(20).EQ.0) THEN
74185         NFORD=100
74186         KFORD(100)=0
74187         DO 120 I=101,500
74188           KFA=KCHG(I,4)
74189           IF(KFA.LE.100) GOTO 120
74190           NFORD=NFORD+1
74191           DO 100 I1=NFORD-1,0,-1
74192             IF(KFA.GE.KFORD(I1)) GOTO 110
74193             KFORD(I1+1)=KFORD(I1)
74194             KCORD(I1+1)=KCORD(I1)
74195   100     CONTINUE
74196   110     KFORD(I1+1)=KFA
74197           KCORD(I1+1)=I
74198   120   CONTINUE
74199         MSTU(20)=1
74200         KFLAST=0
74201         KCLAST=0
74202       ENDIF
74203  
74204 C...Fast action if same code as in latest call.
74205       IF(KF.EQ.KFLAST) THEN
74206         PYCOMP=KCLAST
74207         RETURN
74208       ENDIF
74209  
74210 C...Starting values. Remove internal diquark flags.
74211       PYCOMP=0
74212       KFA=IABS(KF)
74213       IF(MOD(KFA/10,10).EQ.0.AND.KFA.LT.100000
74214      &     .AND.MOD(KFA/1000,10).GT.0) KFA=MOD(KFA,10000)
74215  
74216 C...Simple cases: direct translation.
74217       IF(KFA.GT.KFORD(NFORD)) THEN
74218       ELSEIF(KFA.LE.100) THEN
74219         PYCOMP=KFA
74220  
74221 C...Else binary search.
74222       ELSE
74223         IMIN=100
74224         IMAX=NFORD+1
74225   130   IAVG=(IMIN+IMAX)/2
74226         IF(KFORD(IAVG).GT.KFA) THEN
74227           IMAX=IAVG
74228           IF(IMAX.GT.IMIN+1) GOTO 130
74229         ELSEIF(KFORD(IAVG).LT.KFA) THEN
74230           IMIN=IAVG
74231           IF(IMAX.GT.IMIN+1) GOTO 130
74232         ELSE
74233           PYCOMP=KCORD(IAVG)
74234         ENDIF
74235       ENDIF
74236  
74237 C...Check if antiparticle allowed.
74238       IF(PYCOMP.NE.0.AND.KF.LT.0) THEN
74239         IF(KCHG(PYCOMP,3).EQ.0) PYCOMP=0
74240       ENDIF
74241  
74242 C...Save codes for possible future fast action.
74243       KFLAST=KF
74244       KCLAST=PYCOMP
74245  
74246       RETURN
74247       END
74248  
74249 C*********************************************************************
74250  
74251 C...PYERRM
74252 C...Informs user of errors in program execution.
74253  
74254       SUBROUTINE PYERRM(MERR,CHMESS)
74255  
74256 C...Double precision and integer declarations.
74257       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74258       IMPLICIT INTEGER(I-N)
74259       INTEGER PYK,PYCHGE,PYCOMP
74260 C...Commonblocks.
74261       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
74262       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74263       SAVE /PYJETS/,/PYDAT1/
74264 C...Local character variable.
74265       CHARACTER CHMESS*(*)
74266  
74267 C...Write first few warnings, then be silent.
74268       IF(MERR.LE.10) THEN
74269         MSTU(27)=MSTU(27)+1
74270         MSTU(28)=MERR
74271         IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000)
74272      &  MERR,MSTU(31),CHMESS
74273  
74274 C...Write first few errors, then be silent or stop program.
74275       ELSEIF(MERR.LE.20) THEN
74276         IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)+1
74277         MSTU(30)=MSTU(30)+1
74278         MSTU(24)=MERR-10
74279         IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100)
74280      &  MERR-10,MSTU(31),CHMESS
74281         IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN
74282           WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS
74283           WRITE(MSTU(11),5200)
74284           IF(MERR.NE.17) CALL PYLIST(2)
74285           CALL PYSTOP(3)
74286         ENDIF
74287  
74288 C...Stop program in case of irreparable error.
74289       ELSE
74290         WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS
74291         CALL PYSTOP(3)
74292       ENDIF
74293  
74294 C...Formats for output.
74295  5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I9,
74296      &' PYEXEC calls:'/5X,A)
74297  5100 FORMAT(/5X,'Error type',I2,' has occured after',I9,
74298      &' PYEXEC calls:'/5X,A)
74299  5200 FORMAT(5X,'Execution will be stopped after listing of last ',
74300      &'event!')
74301  5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I9,
74302      &' PYEXEC calls:'/5X,A/5X,'Execution will now be stopped!')
74303  
74304       RETURN
74305       END
74306  
74307 C*********************************************************************
74308  
74309 C...PYALEM
74310 C...Calculates the running alpha_electromagnetic.
74311  
74312       FUNCTION PYALEM(Q2)
74313  
74314 C...Double precision and integer declarations.
74315       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74316       IMPLICIT INTEGER(I-N)
74317       INTEGER PYK,PYCHGE,PYCOMP
74318 C...Commonblocks.
74319       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74320       SAVE /PYDAT1/
74321  
74322 C...Calculate real part of photon vacuum polarization.
74323 C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions.
74324 C...For hadrons use parametrization of H. Burkhardt et al.
74325 C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131.
74326       AEMPI=PARU(101)/(3D0*PARU(1))
74327       IF(MSTU(101).LE.0.OR.Q2.LT.2D-6) THEN
74328         RPIGG=0D0
74329       ELSEIF(MSTU(101).EQ.2.AND.Q2.LT.PARU(104)) THEN
74330         RPIGG=0D0
74331       ELSEIF(MSTU(101).EQ.2) THEN
74332         RPIGG=1D0-PARU(101)/PARU(103)
74333       ELSEIF(Q2.LT.0.09D0) THEN
74334         RPIGG=AEMPI*(13.4916D0+LOG(Q2))+0.00835D0*LOG(1D0+Q2)
74335       ELSEIF(Q2.LT.9D0) THEN
74336         RPIGG=AEMPI*(16.3200D0+2D0*LOG(Q2))+
74337      &  0.00238D0*LOG(1D0+3.927D0*Q2)
74338       ELSEIF(Q2.LT.1D4) THEN
74339         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00165D0+
74340      &  0.00299D0*LOG(1D0+Q2)
74341       ELSE
74342         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00221D0+
74343      &  0.00293D0*LOG(1D0+Q2)
74344       ENDIF
74345  
74346 C...Calculate running alpha_em.
74347       PYALEM=PARU(101)/(1D0-RPIGG)
74348       PARU(108)=PYALEM
74349  
74350       RETURN
74351       END
74352  
74353 C*********************************************************************
74354  
74355 C...PYALPS
74356 C...Gives the value of alpha_strong.
74357  
74358       FUNCTION PYALPS(Q2)
74359  
74360 C...Double precision and integer declarations.
74361       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74362       IMPLICIT INTEGER(I-N)
74363       INTEGER PYK,PYCHGE,PYCOMP
74364 C...Commonblocks.
74365       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74366       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74367       SAVE /PYDAT1/,/PYDAT2/
74368 C...Coefficients for second-order threshold matching.
74369 C...From W.J. Marciano, Phys. Rev. D29 (1984) 580.
74370       DIMENSION STEPDN(6),STEPUP(6)
74371 c      DATA STEPDN/0D0,0D0,(2D0*107D0/2025D0),(2D0*963D0/14375D0),
74372 c     &(2D0*321D0/3703D0),0D0/
74373 c      DATA STEPUP/0D0,0D0,0D0,(-2D0*107D0/1875D0),
74374 c     &(-2D0*963D0/13225D0),(-2D0*321D0/3381D0)/
74375       DATA STEPDN/0D0,0D0,0.10568D0,0.13398D0,0.17337D0,0D0/
74376       DATA STEPUP/0D0,0D0,0D0,-0.11413D0,-0.14563D0,-0.18988D0/
74377  
74378 C...Constant alpha_strong trivial. Pick artificial Lambda.
74379       IF(MSTU(111).LE.0) THEN
74380         PYALPS=PARU(111)
74381         MSTU(118)=MSTU(112)
74382         PARU(117)=0.2D0
74383         IF(Q2.GT.0.04D0) PARU(117)=SQRT(Q2)*EXP(-6D0*PARU(1)/
74384      &  ((33D0-2D0*MSTU(112))*PARU(111)))
74385         PARU(118)=PARU(111)
74386         RETURN
74387       ENDIF
74388  
74389 C...Find effective Q2, number of flavours and Lambda.
74390       Q2EFF=Q2
74391       IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114))
74392       NF=MSTU(112)
74393       ALAM2=PARU(112)**2
74394   100 IF(NF.GT.MAX(3,MSTU(113))) THEN
74395         Q2THR=PARU(113)*PMAS(NF,1)**2
74396         IF(Q2EFF.LT.Q2THR) THEN
74397           NF=NF-1
74398           Q2RAT=Q2THR/ALAM2
74399           ALAM2=ALAM2*Q2RAT**(2D0/(33D0-2D0*NF))
74400           IF(MSTU(111).EQ.2) ALAM2=ALAM2*LOG(Q2RAT)**STEPDN(NF)
74401           GOTO 100
74402         ENDIF
74403       ENDIF
74404   110 IF(NF.LT.MIN(6,MSTU(114))) THEN
74405         Q2THR=PARU(113)*PMAS(NF+1,1)**2
74406         IF(Q2EFF.GT.Q2THR) THEN
74407           NF=NF+1
74408           Q2RAT=Q2THR/ALAM2
74409           ALAM2=ALAM2*Q2RAT**(-2D0/(33D0-2D0*NF))
74410           IF(MSTU(111).EQ.2) ALAM2=ALAM2*LOG(Q2RAT)**STEPUP(NF)
74411           GOTO 110
74412         ENDIF
74413       ENDIF
74414       IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2
74415       PARU(117)=SQRT(ALAM2)
74416  
74417 C...Evaluate first or second order alpha_strong.
74418       B0=(33D0-2D0*NF)/6D0
74419       ALGQ=LOG(MAX(1.0001D0,Q2EFF/ALAM2))
74420       IF(MSTU(111).EQ.1) THEN
74421         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ))
74422       ELSE
74423         B1=(153D0-19D0*NF)/6D0
74424         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1D0-B1*LOG(ALGQ)/
74425      &  (B0**2*ALGQ)))
74426       ENDIF
74427       MSTU(118)=NF
74428       PARU(118)=PYALPS
74429  
74430       RETURN
74431       END
74432  
74433 C*********************************************************************
74434  
74435 C...PYANGL
74436 C...Reconstructs an angle from given x and y coordinates.
74437  
74438       FUNCTION PYANGL(X,Y)
74439  
74440 C...Double precision and integer declarations.
74441       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74442       IMPLICIT INTEGER(I-N)
74443       INTEGER PYK,PYCHGE,PYCOMP
74444 C...Commonblocks.
74445       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74446       SAVE /PYDAT1/
74447  
74448       PYANGL=0D0
74449       R=SQRT(X**2+Y**2)
74450       IF(R.LT.1D-20) RETURN
74451       IF(ABS(X)/R.LT.0.8D0) THEN
74452         PYANGL=SIGN(ACOS(X/R),Y)
74453       ELSE
74454         PYANGL=ASIN(Y/R)
74455         IF(X.LT.0D0.AND.PYANGL.GE.0D0) THEN
74456           PYANGL=PARU(1)-PYANGL
74457         ELSEIF(X.LT.0D0) THEN
74458           PYANGL=-PARU(1)-PYANGL
74459         ENDIF
74460       ENDIF
74461  
74462       RETURN
74463       END
74464  
74465 C*********************************************************************
74466  
74467 C...PYR
74468 C...Generates random numbers uniformly distributed between
74469 C...0 and 1, excluding the endpoints.
74470  
74471       FUNCTION PYR(IDUMMY)
74472  
74473 C...Double precision and integer declarations.
74474       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74475       IMPLICIT INTEGER(I-N)
74476       INTEGER PYK,PYCHGE,PYCOMP
74477 C...Commonblocks.
74478       COMMON/PYDATR/MRPY(6),RRPY(100)
74479       SAVE /PYDATR/
74480 C...Equivalence between commonblock and local variables.
74481       EQUIVALENCE (MRPY1,MRPY(1)),(MRPY2,MRPY(2)),(MRPY3,MRPY(3)),
74482      &(MRPY4,MRPY(4)),(MRPY5,MRPY(5)),(MRPY6,MRPY(6)),
74483      &(RRPY98,RRPY(98)),(RRPY99,RRPY(99)),(RRPY00,RRPY(100))
74484  
74485 C...Initialize generation from given seed.
74486       IF(MRPY2.EQ.0) THEN
74487         IJ=MOD(MRPY1/30082,31329)
74488         KL=MOD(MRPY1,30082)
74489         I=MOD(IJ/177,177)+2
74490         J=MOD(IJ,177)+2
74491         K=MOD(KL/169,178)+1
74492         L=MOD(KL,169)
74493         DO 110 II=1,97
74494           S=0D0
74495           T=0.5D0
74496           DO 100 JJ=1,48
74497             M=MOD(MOD(I*J,179)*K,179)
74498             I=J
74499             J=K
74500             K=M
74501             L=MOD(53*L+1,169)
74502             IF(MOD(L*M,64).GE.32) S=S+T
74503             T=0.5D0*T
74504   100     CONTINUE
74505           RRPY(II)=S
74506   110   CONTINUE
74507         TWOM24=1D0
74508         DO 120 I24=1,24
74509           TWOM24=0.5D0*TWOM24
74510   120   CONTINUE
74511         RRPY98=362436D0*TWOM24
74512         RRPY99=7654321D0*TWOM24
74513         RRPY00=16777213D0*TWOM24
74514         MRPY2=1
74515         MRPY3=0
74516         MRPY4=97
74517         MRPY5=33
74518       ENDIF
74519  
74520 C...Generate next random number.
74521   130 RUNI=RRPY(MRPY4)-RRPY(MRPY5)
74522       IF(RUNI.LT.0D0) RUNI=RUNI+1D0
74523       RRPY(MRPY4)=RUNI
74524       MRPY4=MRPY4-1
74525       IF(MRPY4.EQ.0) MRPY4=97
74526       MRPY5=MRPY5-1
74527       IF(MRPY5.EQ.0) MRPY5=97
74528       RRPY98=RRPY98-RRPY99
74529       IF(RRPY98.LT.0D0) RRPY98=RRPY98+RRPY00
74530       RUNI=RUNI-RRPY98
74531       IF(RUNI.LT.0D0) RUNI=RUNI+1D0
74532       IF(RUNI.LE.0D0.OR.RUNI.GE.1D0) GOTO 130
74533  
74534 C...Update counters. Random number to output.
74535       MRPY3=MRPY3+1
74536       IF(MRPY3.EQ.1000000000) THEN
74537         MRPY2=MRPY2+1
74538         MRPY3=0
74539       ENDIF
74540       PYR=RUNI
74541  
74542       RETURN
74543       END
74544  
74545 C*********************************************************************
74546  
74547 C...PYRGET
74548 C...Dumps the state of the random number generator on a file
74549 C...for subsequent startup from this state onwards.
74550  
74551       SUBROUTINE PYRGET(LFN,MOVE)
74552  
74553 C...Double precision and integer declarations.
74554       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74555       IMPLICIT INTEGER(I-N)
74556       INTEGER PYK,PYCHGE,PYCOMP
74557 C...Commonblocks.
74558       COMMON/PYDATR/MRPY(6),RRPY(100)
74559       SAVE /PYDATR/
74560 C...Local character variable.
74561       CHARACTER CHERR*8
74562  
74563 C...Backspace required number of records (or as many as there are).
74564       IF(MOVE.LT.0) THEN
74565         NBCK=MIN(MRPY(6),-MOVE)
74566         DO 100 IBCK=1,NBCK
74567           BACKSPACE(LFN,ERR=110,IOSTAT=IERR)
74568   100   CONTINUE
74569         MRPY(6)=MRPY(6)-NBCK
74570       ENDIF
74571  
74572 C...Unformatted write on unit LFN.
74573       WRITE(LFN,ERR=110,IOSTAT=IERR) (MRPY(I1),I1=1,5),
74574      &(RRPY(I2),I2=1,100)
74575       MRPY(6)=MRPY(6)+1
74576       RETURN
74577  
74578 C...Write error.
74579   110 WRITE(CHERR,'(I8)') IERR
74580       CALL PYERRM(18,'(PYRGET:) error when accessing file, IOSTAT ='//
74581      &CHERR)
74582  
74583       RETURN
74584       END
74585  
74586 C*********************************************************************
74587  
74588 C...PYRSET
74589 C...Reads a state of the random number generator from a file
74590 C...for subsequent generation from this state onwards.
74591  
74592       SUBROUTINE PYRSET(LFN,MOVE)
74593  
74594 C...Double precision and integer declarations.
74595       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74596       IMPLICIT INTEGER(I-N)
74597       INTEGER PYK,PYCHGE,PYCOMP
74598 C...Commonblocks.
74599       COMMON/PYDATR/MRPY(6),RRPY(100)
74600       SAVE /PYDATR/
74601 C...Local character variable.
74602       CHARACTER CHERR*8
74603  
74604 C...Backspace required number of records (or as many as there are).
74605       IF(MOVE.LT.0) THEN
74606         NBCK=MIN(MRPY(6),-MOVE)
74607         DO 100 IBCK=1,NBCK
74608           BACKSPACE(LFN,ERR=120,IOSTAT=IERR)
74609   100   CONTINUE
74610         MRPY(6)=MRPY(6)-NBCK
74611       ENDIF
74612  
74613 C...Unformatted read from unit LFN.
74614       NFOR=1+MAX(0,MOVE)
74615       DO 110 IFOR=1,NFOR
74616         READ(LFN,ERR=120,IOSTAT=IERR) (MRPY(I1),I1=1,5),
74617      &  (RRPY(I2),I2=1,100)
74618   110 CONTINUE
74619       MRPY(6)=MRPY(6)+NFOR
74620       RETURN
74621  
74622 C...Write error.
74623   120 WRITE(CHERR,'(I8)') IERR
74624       CALL PYERRM(18,'(PYRSET:) error when accessing file, IOSTAT ='//
74625      &CHERR)
74626  
74627       RETURN
74628       END
74629  
74630 C*********************************************************************
74631  
74632 C...PYROBO
74633 C...Performs rotations and boosts.
74634  
74635       SUBROUTINE PYROBO(IMI,IMA,THE,PHI,BEX,BEY,BEZ)
74636  
74637 C...Double precision and integer declarations.
74638       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74639       IMPLICIT INTEGER(I-N)
74640       INTEGER PYK,PYCHGE,PYCOMP
74641 C...Commonblocks.
74642       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
74643       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74644       SAVE /PYJETS/,/PYDAT1/
74645 C...Local arrays.
74646       DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4)
74647  
74648 C...Find and check range of rotation/boost.
74649       IMIN=IMI
74650       IF(IMIN.LE.0) IMIN=1
74651       IF(MSTU(1).GT.0) IMIN=MSTU(1)
74652       IMAX=IMA
74653       IF(IMAX.LE.0) IMAX=N
74654       IF(MSTU(2).GT.0) IMAX=MSTU(2)
74655       IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN
74656         CALL PYERRM(11,'(PYROBO:) range outside PYJETS memory')
74657         RETURN
74658       ENDIF
74659  
74660 C...Optional resetting of V (when not set before.)
74661       IF(MSTU(33).NE.0) THEN
74662         DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4))
74663           DO 100 J=1,5
74664             V(I,J)=0D0
74665   100     CONTINUE
74666   110   CONTINUE
74667         MSTU(33)=0
74668       ENDIF
74669  
74670 C...Rotate, typically from z axis to direction (theta,phi).
74671       IF(THE**2+PHI**2.GT.1D-20) THEN
74672         ROT(1,1)=COS(THE)*COS(PHI)
74673         ROT(1,2)=-SIN(PHI)
74674         ROT(1,3)=SIN(THE)*COS(PHI)
74675         ROT(2,1)=COS(THE)*SIN(PHI)
74676         ROT(2,2)=COS(PHI)
74677         ROT(2,3)=SIN(THE)*SIN(PHI)
74678         ROT(3,1)=-SIN(THE)
74679         ROT(3,2)=0D0
74680         ROT(3,3)=COS(THE)
74681         DO 140 I=IMIN,IMAX
74682           IF(K(I,1).LE.0) GOTO 140
74683           DO 120 J=1,3
74684             PR(J)=P(I,J)
74685             VR(J)=V(I,J)
74686   120     CONTINUE
74687           DO 130 J=1,3
74688             P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3)
74689             V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3)
74690   130     CONTINUE
74691   140   CONTINUE
74692       ENDIF
74693  
74694 C...Boost, typically from rest to momentum/energy=beta.
74695       IF(BEX**2+BEY**2+BEZ**2.GT.1D-20) THEN
74696         DBX=BEX
74697         DBY=BEY
74698         DBZ=BEZ
74699         DB=SQRT(DBX**2+DBY**2+DBZ**2)
74700         EPS1=1D0-1D-12
74701         IF(DB.GT.EPS1) THEN
74702 C...Rescale boost vector if too close to unity.
74703           CALL PYERRM(3,'(PYROBO:) boost vector too large')
74704           DBX=DBX*(EPS1/DB)
74705           DBY=DBY*(EPS1/DB)
74706           DBZ=DBZ*(EPS1/DB)
74707           DB=EPS1
74708         ENDIF
74709         DGA=1D0/SQRT(1D0-DB**2)
74710         DO 160 I=IMIN,IMAX
74711           IF(K(I,1).LE.0) GOTO 160
74712           DO 150 J=1,4
74713             DP(J)=P(I,J)
74714             DV(J)=V(I,J)
74715   150     CONTINUE
74716           DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3)
74717           DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4))
74718           P(I,1)=DP(1)+DGABP*DBX
74719           P(I,2)=DP(2)+DGABP*DBY
74720           P(I,3)=DP(3)+DGABP*DBZ
74721           P(I,4)=DGA*(DP(4)+DBP)
74722           DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3)
74723           DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4))
74724           V(I,1)=DV(1)+DGABV*DBX
74725           V(I,2)=DV(2)+DGABV*DBY
74726           V(I,3)=DV(3)+DGABV*DBZ
74727           V(I,4)=DGA*(DV(4)+DBV)
74728   160   CONTINUE
74729       ENDIF
74730  
74731       RETURN
74732       END
74733  
74734 C*********************************************************************
74735  
74736 C...PYEDIT
74737 C...Performs global manipulations on the event record, in particular
74738 C...to exclude unstable or undetectable partons/particles.
74739  
74740       SUBROUTINE PYEDIT(MEDIT)
74741  
74742 C...Double precision and integer declarations.
74743       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74744       IMPLICIT INTEGER(I-N)
74745       INTEGER PYK,PYCHGE,PYCOMP
74746 C...Parameter statement to help give large particle numbers.
74747       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
74748      &KEXCIT=4000000,KDIMEN=5000000)
74749 C...Commonblocks.
74750       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
74751       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74752       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74753       COMMON/PYCTAG/NCT,MCT(4000,2)
74754       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYCTAG/
74755 C...Local arrays.
74756       DIMENSION NS(2),PTS(2),PLS(2)
74757  
74758 C...Remove unwanted partons/particles.
74759       IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN
74760         IMAX=N
74761         IF(MSTU(2).GT.0) IMAX=MSTU(2)
74762         I1=MAX(1,MSTU(1))-1
74763         DO 110 I=MAX(1,MSTU(1)),IMAX
74764           IF(K(I,1).EQ.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40)) GOTO 110
74765           IF(MEDIT.EQ.1) THEN
74766             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
74767           ELSEIF(MEDIT.EQ.2) THEN
74768             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
74769             KC=PYCOMP(K(I,2))
74770             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
74771      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
74772      &      K(I,2).EQ.KSUSY1+39) GOTO 110
74773           ELSEIF(MEDIT.EQ.3) THEN
74774             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
74775             KC=PYCOMP(K(I,2))
74776             IF(KC.EQ.0) GOTO 110
74777             IF(KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0) GOTO 110
74778           ELSEIF(MEDIT.EQ.5) THEN
74779             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.K(I,1).EQ.52) GOTO 110
74780             KC=PYCOMP(K(I,2))
74781             IF(KC.EQ.0) GOTO 110
74782             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42.AND.
74783      &      KCHG(KC,2).EQ.0) GOTO 110
74784           ENDIF
74785  
74786 C...Pack remaining partons/particles. Origin no longer known.
74787           I1=I1+1
74788           DO 100 J=1,5
74789             K(I1,J)=K(I,J)
74790             P(I1,J)=P(I,J)
74791             V(I1,J)=V(I,J)
74792   100     CONTINUE
74793           K(I1,3)=0
74794   110   CONTINUE
74795         IF(I1.LT.N) MSTU(3)=0
74796         IF(I1.LT.N) MSTU(70)=0
74797         N=I1
74798  
74799 C...Selective removal of class of entries. New position of retained.
74800       ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN
74801         I1=0
74802         DO 120 I=1,N
74803           K(I,3)=MOD(K(I,3),MSTU(5))
74804           IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120
74805           IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120
74806           IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR.
74807      &    K(I,1).EQ.15.OR.K(I,1).EQ.51).AND.K(I,2).NE.94) GOTO 120
74808           IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.
74809      &    K(I,1).EQ.52.OR.K(I,2).EQ.94)) GOTO 120
74810           IF(MEDIT.EQ.15.AND.K(I,1).GE.21.AND.K(I,1).LE.40) GOTO 120
74811           I1=I1+1
74812           K(I,3)=K(I,3)+MSTU(5)*I1
74813   120   CONTINUE
74814  
74815 C...Find new event history information and replace old.
74816         DO 140 I=1,N
74817           IF(K(I,1).LE.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40).OR.
74818      &    K(I,3)/MSTU(5).EQ.0) GOTO 140
74819           ID=I
74820   130     IM=MOD(K(ID,3),MSTU(5))
74821           IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN
74822             IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15.OR.
74823      &      K(IM,1).EQ.51).AND.K(IM,2).NE.94) THEN
74824               ID=IM
74825               GOTO 130
74826             ENDIF
74827           ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN
74828             IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,1).EQ.52.OR.
74829      &      K(IM,2).EQ.94) THEN
74830               ID=IM
74831               GOTO 130
74832             ENDIF
74833           ENDIF
74834           K(I,3)=MSTU(5)*(K(I,3)/MSTU(5))
74835           IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5)
74836           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14.AND.
74837      &      K(I,1).NE.42.AND.K(I,1).NE.52) THEN
74838             IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)=
74839      &      K(K(I,4),3)/MSTU(5)
74840             IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)=
74841      &      K(K(I,5),3)/MSTU(5)
74842           ELSE
74843             KCM=MOD(K(I,4)/MSTU(5),MSTU(5))
74844             IF(KCM.GT.0.AND.KCM.LE.MSTU(4).AND.K(I,1).NE.42.AND.
74845      &      K(I,1).NE.52) KCM=K(KCM,3)/MSTU(5)
74846             KCD=MOD(K(I,4),MSTU(5))
74847             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
74848             K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD
74849             KCM=MOD(K(I,5)/MSTU(5),MSTU(5))
74850             IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5)
74851             KCD=MOD(K(I,5),MSTU(5))
74852             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
74853             K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD
74854           ENDIF
74855   140   CONTINUE
74856  
74857 C...Pack remaining entries.
74858         I1=0
74859         MSTU90=MSTU(90)
74860         MSTU(90)=0
74861         DO 170 I=1,N
74862           IF(K(I,3)/MSTU(5).EQ.0) GOTO 170
74863           I1=I1+1
74864           DO 150 J=1,5
74865             K(I1,J)=K(I,J)
74866             P(I1,J)=P(I,J)
74867             V(I1,J)=V(I,J)
74868   150     CONTINUE
74869 C...Also update LHA1 colour tags
74870           MCT(I1,1)=MCT(I,1)
74871           MCT(I1,2)=MCT(I,2)
74872           K(I1,3)=MOD(K(I1,3),MSTU(5))
74873           DO 160 IZ=1,MSTU90
74874             IF(I.EQ.MSTU(90+IZ)) THEN
74875               MSTU(90)=MSTU(90)+1
74876               MSTU(90+MSTU(90))=I1
74877               PARU(90+MSTU(90))=PARU(90+IZ)
74878             ENDIF
74879   160     CONTINUE
74880   170   CONTINUE
74881         IF(I1.LT.N) MSTU(3)=0
74882         IF(I1.LT.N) MSTU(70)=0
74883         N=I1
74884  
74885 C...Fill in some missing daughter pointers (lost in colour flow).
74886       ELSEIF(MEDIT.EQ.16) THEN
74887         DO 220 I=1,N
74888           IF(K(I,1).LE.10.OR.(K(I,1).GE.21.AND.K(I,1).LE.50)) GOTO 220
74889           IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 220
74890 C...Find daughters who point to mother.
74891           DO 180 I1=I+1,N
74892             IF(K(I1,3).NE.I) THEN
74893             ELSEIF(K(I,4).EQ.0) THEN
74894               K(I,4)=I1
74895             ELSE
74896               K(I,5)=I1
74897             ENDIF
74898   180     CONTINUE
74899           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
74900           IF(K(I,4).NE.0) GOTO 220
74901 C...Find daughters who point to documentation version of mother.
74902           IM=K(I,3)
74903           IF(IM.LE.0.OR.IM.GE.I) GOTO 220
74904           IF(K(IM,1).LE.20.OR.K(IM,1).GT.30) GOTO 220
74905           IF(K(IM,2).NE.K(I,2).OR.ABS(P(IM,5)-P(I,5)).GT.1D-2) GOTO 220
74906           DO 190 I1=I+1,N
74907             IF(K(I1,3).NE.IM) THEN
74908             ELSEIF(K(I,4).EQ.0) THEN
74909               K(I,4)=I1
74910             ELSE
74911               K(I,5)=I1
74912             ENDIF
74913   190     CONTINUE
74914           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
74915           IF(K(I,4).NE.0) GOTO 220
74916 C...Find daughters who point to documentation daughters who,
74917 C...in their turn, point to documentation mother.
74918           ID1=IM
74919           ID2=IM
74920           DO 200 I1=IM+1,I-1
74921             IF(K(I1,3).EQ.IM.AND.K(I1,1).GE.21.AND.K(I1,1).LE.30) THEN
74922               ID2=I1
74923               IF(ID1.EQ.IM) ID1=I1
74924             ENDIF
74925   200     CONTINUE
74926           DO 210 I1=I+1,N
74927             IF(K(I1,3).NE.ID1.AND.K(I1,3).NE.ID2) THEN
74928             ELSEIF(K(I,4).EQ.0) THEN
74929               K(I,4)=I1
74930             ELSE
74931               K(I,5)=I1
74932             ENDIF
74933   210     CONTINUE
74934           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
74935   220   CONTINUE
74936  
74937 C...Save top entries at bottom of PYJETS commonblock.
74938       ELSEIF(MEDIT.EQ.21) THEN
74939         IF(2*N.GE.MSTU(4)) THEN
74940           CALL PYERRM(11,'(PYEDIT:) no more memory left in PYJETS')
74941           RETURN
74942         ENDIF
74943         DO 240 I=1,N
74944           DO 230 J=1,5
74945             K(MSTU(4)-I,J)=K(I,J)
74946             P(MSTU(4)-I,J)=P(I,J)
74947             V(MSTU(4)-I,J)=V(I,J)
74948   230     CONTINUE
74949   240   CONTINUE
74950         MSTU(32)=N
74951  
74952 C...Restore bottom entries of commonblock PYJETS to top.
74953       ELSEIF(MEDIT.EQ.22) THEN
74954         DO 260 I=1,MSTU(32)
74955           DO 250 J=1,5
74956             K(I,J)=K(MSTU(4)-I,J)
74957             P(I,J)=P(MSTU(4)-I,J)
74958             V(I,J)=V(MSTU(4)-I,J)
74959   250     CONTINUE
74960   260   CONTINUE
74961         N=MSTU(32)
74962  
74963 C...Mark primary entries at top of commonblock PYJETS as untreated.
74964       ELSEIF(MEDIT.EQ.23) THEN
74965         I1=0
74966         DO 270 I=1,N
74967           KH=K(I,3)
74968           IF(KH.GE.1) THEN
74969             IF(K(KH,1).GE.21.AND.K(KH,1).LE.30) KH=0
74970           ENDIF
74971           IF(KH.NE.0) GOTO 280
74972           I1=I1+1
74973           IF(K(I,1).GE.11.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10
74974           IF(K(I,1).GE.51.AND.K(I,1).LE.60) K(I,1)=K(I,1)-10
74975   270   CONTINUE
74976   280   N=I1
74977  
74978 C...Place largest axis along z axis and second largest in xy plane.
74979       ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN
74980         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61),1),
74981      &  P(MSTU(61),2)),0D0,0D0,0D0)
74982         CALL PYROBO(1,N+MSTU(3),-PYANGL(P(MSTU(61),3),
74983      &  P(MSTU(61),1)),0D0,0D0,0D0,0D0)
74984         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61)+1,1),
74985      &  P(MSTU(61)+1,2)),0D0,0D0,0D0)
74986         IF(MEDIT.EQ.31) RETURN
74987  
74988 C...Rotate to put slim jet along +z axis.
74989         DO 290 IS=1,2
74990           NS(IS)=0
74991           PTS(IS)=0D0
74992           PLS(IS)=0D0
74993   290   CONTINUE
74994         DO 300 I=1,N
74995           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 300
74996           IF(MSTU(41).GE.2) THEN
74997             KC=PYCOMP(K(I,2))
74998             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
74999      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
75000      &      K(I,2).EQ.KSUSY1+39) GOTO 300
75001             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
75002      &      .EQ.0) GOTO 300
75003           ENDIF
75004           IS=2D0-SIGN(0.5D0,P(I,3))
75005           NS(IS)=NS(IS)+1
75006           PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2)
75007   300   CONTINUE
75008         IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2)
75009      &  CALL PYROBO(1,N+MSTU(3),PARU(1),0D0,0D0,0D0,0D0)
75010  
75011 C...Rotate to put second largest jet into -z,+x quadrant.
75012         DO 310 I=1,N
75013           IF(P(I,3).GE.0D0) GOTO 310
75014           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 310
75015           IF(MSTU(41).GE.2) THEN
75016             KC=PYCOMP(K(I,2))
75017             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
75018      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
75019      &      K(I,2).EQ.KSUSY1+39) GOTO 310
75020             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
75021      &      .EQ.0) GOTO 310
75022           ENDIF
75023           IS=2D0-SIGN(0.5D0,P(I,1))
75024           PLS(IS)=PLS(IS)-P(I,3)
75025   310   CONTINUE
75026         IF(PLS(2).GT.PLS(1)) CALL PYROBO(1,N+MSTU(3),0D0,PARU(1),
75027      &  0D0,0D0,0D0)
75028       ENDIF
75029  
75030       RETURN
75031       END
75032  
75033 C*********************************************************************
75034  
75035 C...PYLIST
75036 C...Gives program heading, or lists an event, or particle
75037 C...data, or current parameter values.
75038  
75039       SUBROUTINE PYLIST(MLIST)
75040  
75041 C...Double precision and integer declarations.
75042       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75043       IMPLICIT INTEGER(I-N)
75044       INTEGER PYK,PYCHGE,PYCOMP
75045 C...Parameter statement to help give large particle numbers.
75046       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
75047      &KEXCIT=4000000,KDIMEN=5000000)
75048  
75049 C...HEPEVT commonblock.
75050       PARAMETER (NMXHEP=4000)
75051       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
75052      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
75053       DOUBLE PRECISION PHEP,VHEP
75054       SAVE /HEPEVT/
75055  
75056 C...User process event common block.
75057       INTEGER MAXNUP
75058       PARAMETER (MAXNUP=500)
75059       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
75060       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
75061       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
75062      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
75063      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
75064       SAVE /HEPEUP/
75065  
75066 C...Commonblocks.
75067       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
75068       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75069       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
75070       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
75071       COMMON/PYCTAG/NCT,MCT(4000,2)
75072       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYCTAG/
75073 C...Local arrays, character variables and data.
75074       CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4
75075       DIMENSION PS(6)
75076       DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/
75077  
75078 C...Initialization printout: version number and date of last change.
75079       IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN
75080         CALL PYLOGO
75081         MSTU(12)=12345
75082         IF(MLIST.EQ.0) RETURN
75083       ENDIF
75084  
75085 C...List event data, including additional lines after N.
75086       IF(MLIST.GE.1.AND.MLIST.LE.4) THEN
75087         IF(MLIST.EQ.1) WRITE(MSTU(11),5100)
75088         IF(MLIST.EQ.2) WRITE(MSTU(11),5200)
75089         IF(MLIST.EQ.3) WRITE(MSTU(11),5300)
75090         IF(MLIST.EQ.4) WRITE(MSTU(11),5400)
75091         LMX=12
75092         IF(MLIST.GE.2) LMX=16
75093         ISTR=0
75094         IMAX=N
75095         IF(MSTU(2).GT.0) IMAX=MSTU(2)
75096         DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3)))
75097           IF(I.GT.IMAX.AND.I.LE.N) GOTO 120
75098           IF(MSTU(15).EQ.0.AND.K(I,1).LE.0) GOTO 120
75099           IF(MSTU(15).EQ.1.AND.K(I,1).LT.0) GOTO 120
75100  
75101 C...Get particle name, pad it and check it is not too long.
75102           CALL PYNAME(K(I,2),CHAP)
75103           LEN=0
75104           DO 100 LEM=1,16
75105             IF(CHAP(LEM:LEM).NE.' ') LEN=LEM
75106   100     CONTINUE
75107           MDL=(K(I,1)+19)/10
75108           LDL=0
75109           IF(MDL.EQ.2.OR.MDL.GE.8) THEN
75110             CHAC=CHAP
75111             IF(LEN.GT.LMX) CHAC(LMX:LMX)='?'
75112           ELSE
75113             LDL=1
75114             IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2
75115             IF(LEN.EQ.0) THEN
75116               CHAC=CHDL(MDL)(1:2*LDL)//' '
75117             ELSE
75118               CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))//
75119      &        CHDL(MDL)(LDL+1:2*LDL)//' '
75120               IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?'
75121             ENDIF
75122           ENDIF
75123  
75124 C...Add information on string connection.
75125           IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12)
75126      &    THEN
75127             KC=PYCOMP(K(I,2))
75128             KCC=0
75129             IF(KC.NE.0) KCC=KCHG(KC,2)
75130             IF(IABS(K(I,2)).EQ.39) THEN
75131               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X'
75132             ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN
75133               ISTR=1
75134               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A'
75135             ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN
75136               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I'
75137             ELSEIF(KCC.NE.0) THEN
75138               ISTR=0
75139               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V'
75140             ENDIF
75141           ENDIF
75142           IF((K(I,1).EQ.41.OR.K(I,1).EQ.51).AND.LEN+2*LDL+3.LE.LMX)
75143      &    CHAC(LMX-1:LMX-1)='I'
75144  
75145 C...Write data for particle/jet.
75146           IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999D0) THEN
75147             WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3),
75148      &      (P(I,J2),J2=1,5)
75149           ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999D0) THEN
75150             WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3),
75151      &      (P(I,J2),J2=1,5)
75152           ELSEIF(MLIST.EQ.1) THEN
75153             WRITE(MSTU(11),5700) I,CHAC(1:12),(K(I,J1),J1=1,3),
75154      &      (P(I,J2),J2=1,5)
75155           ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.
75156      &      K(I,1).EQ.14.OR.K(I,1).EQ.42.OR.K(I,1).EQ.52)) THEN
75157             IF(MLIST.NE.4) WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,3),
75158      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
75159      &      K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000),
75160      &      (P(I,J2),J2=1,5)
75161             IF(MLIST.EQ.4) WRITE(MSTU(11),5900) I,CHAC,(K(I,J1),J1=1,3),
75162      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
75163      &           K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5)
75164      &           ,10000),MCT(I,1),MCT(I,2)
75165           ELSE
75166             IF(MLIST.NE.4) WRITE(MSTU(11),6000) I,CHAC,(K(I,J1),J1=1,5),
75167      &      (P(I,J2),J2=1,5)
75168             IF(MLIST.EQ.4) WRITE(MSTU(11),6100) I,CHAC,(K(I,J1),J1=1,5)
75169      &           ,MCT(I,1),MCT(I,2)
75170           ENDIF
75171           IF(MLIST.EQ.3) WRITE(MSTU(11),6200) (V(I,J),J=1,5)
75172  
75173 C...Insert extra separator lines specified by user.
75174           IF(MSTU(70).GE.1) THEN
75175             ISEP=0
75176             DO 110 J=1,MIN(10,MSTU(70))
75177               IF(I.EQ.MSTU(70+J)) ISEP=1
75178   110       CONTINUE
75179             IF(ISEP.EQ.1) THEN
75180               IF(MLIST.EQ.1) WRITE(MSTU(11),6300)
75181               IF(MLIST.EQ.2.OR.MLIST.EQ.3) WRITE(MSTU(11),6400)
75182               IF(MLIST.EQ.4) WRITE(MSTU(11),6500)
75183             ENDIF
75184           ENDIF
75185   120   CONTINUE
75186  
75187 C...Sum of charges and momenta.
75188         DO 130 J=1,6
75189           PS(J)=PYP(0,J)
75190   130   CONTINUE
75191         IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999D0) THEN
75192           WRITE(MSTU(11),6600) PS(6),(PS(J),J=1,5)
75193         ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999D0) THEN
75194           WRITE(MSTU(11),6700) PS(6),(PS(J),J=1,5)
75195         ELSEIF(MLIST.EQ.1) THEN
75196           WRITE(MSTU(11),6800) PS(6),(PS(J),J=1,5)
75197         ELSEIF(MLIST.LE.3) THEN
75198           WRITE(MSTU(11),6900) PS(6),(PS(J),J=1,5)
75199         ELSE
75200           WRITE(MSTU(11),7000) PS(6)
75201         ENDIF
75202  
75203 C...Simple listing of HEPEVT entries (mainly for test purposes).
75204       ELSEIF(MLIST.EQ.5) THEN
75205         WRITE(MSTU(11),7100)
75206         DO 140 I=1,NHEP
75207           IF(ISTHEP(I).EQ.0) GOTO 140
75208           WRITE(MSTU(11),7200) I,ISTHEP(I),IDHEP(I),JMOHEP(1,I),
75209      &    JMOHEP(2,I),JDAHEP(1,I),JDAHEP(2,I),(PHEP(J,I),J=1,5)
75210   140   CONTINUE
75211  
75212  
75213 C...Simple listing of user-process entries (mainly for test purposes).
75214       ELSEIF(MLIST.EQ.7) THEN
75215         WRITE(MSTU(11),7300)
75216         DO 150 I=1,NUP
75217           WRITE(MSTU(11),7400) I,ISTUP(I),IDUP(I),MOTHUP(1,I),
75218      &    MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5)
75219   150   CONTINUE
75220  
75221 C...Give simple list of KF codes defined in program.
75222       ELSEIF(MLIST.EQ.11) THEN
75223         WRITE(MSTU(11),7500)
75224         DO 160 KF=1,80
75225           CALL PYNAME(KF,CHAP)
75226           CALL PYNAME(-KF,CHAN)
75227           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),7600) KF,CHAP
75228           IF(CHAN.NE.' ') WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
75229   160   CONTINUE
75230         DO 190 KFLS=1,3,2
75231           DO 180 KFLA=1,5
75232             DO 170 KFLB=1,KFLA-(3-KFLS)/2
75233               KF=1000*KFLA+100*KFLB+KFLS
75234               CALL PYNAME(KF,CHAP)
75235               CALL PYNAME(-KF,CHAN)
75236               WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
75237   170       CONTINUE
75238   180     CONTINUE
75239   190   CONTINUE
75240         DO 220 KMUL=0,5
75241           KFLS=3
75242           IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
75243           IF(KMUL.EQ.5) KFLS=5
75244           KFLR=0
75245           IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1
75246           IF(KMUL.EQ.4) KFLR=2
75247           DO 210 KFLB=1,5
75248             DO 200 KFLC=1,KFLB-1
75249               KF=10000*KFLR+100*KFLB+10*KFLC+KFLS
75250               CALL PYNAME(KF,CHAP)
75251               CALL PYNAME(-KF,CHAN)
75252               WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
75253               IF(KF.EQ.311) THEN
75254                 KFK=130
75255                 CALL PYNAME(KFK,CHAP)
75256                 WRITE(MSTU(11),7600) KFK,CHAP
75257                 KFK=310
75258                 CALL PYNAME(KFK,CHAP)
75259                 WRITE(MSTU(11),7600) KFK,CHAP
75260               ENDIF
75261   200       CONTINUE
75262             KF=10000*KFLR+110*KFLB+KFLS
75263             CALL PYNAME(KF,CHAP)
75264             WRITE(MSTU(11),7600) KF,CHAP
75265   210     CONTINUE
75266   220   CONTINUE
75267         KF=100443
75268         CALL PYNAME(KF,CHAP)
75269         WRITE(MSTU(11),7600) KF,CHAP
75270         KF=100553
75271         CALL PYNAME(KF,CHAP)
75272         WRITE(MSTU(11),7600) KF,CHAP
75273         DO 260 KFLSP=1,3
75274           KFLS=2+2*(KFLSP/3)
75275           DO 250 KFLA=1,5
75276             DO 240 KFLB=1,KFLA
75277               DO 230 KFLC=1,KFLB
75278                 IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC))
75279      &          GOTO 230
75280                 IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 230
75281                 IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS
75282                 IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS
75283                 CALL PYNAME(KF,CHAP)
75284                 CALL PYNAME(-KF,CHAN)
75285                 WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
75286   230         CONTINUE
75287   240       CONTINUE
75288   250     CONTINUE
75289   260   CONTINUE
75290         DO 270 KC=1,500
75291           KF=KCHG(KC,4)
75292           IF(KF.LT.1000000) GOTO 270
75293           CALL PYNAME(KF,CHAP)
75294           CALL PYNAME(-KF,CHAN)
75295           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),7600) KF,CHAP
75296           IF(CHAN.NE.' ') WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
75297   270   CONTINUE
75298  
75299 C...List parton/particle data table. Check whether to be listed.
75300       ELSEIF(MLIST.EQ.12) THEN
75301         WRITE(MSTU(11),7700)
75302         DO 300 KC=1,MSTU(6)
75303           KF=KCHG(KC,4)
75304           IF(KF.EQ.0) GOTO 300
75305           IF(KF.LT.MSTU(1).OR.(MSTU(2).GT.0.AND.KF.GT.MSTU(2)))
75306      &    GOTO 300
75307  
75308 C...Find particle name and mass. Print information.
75309           CALL PYNAME(KF,CHAP)
75310           IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 300
75311           CALL PYNAME(-KF,CHAN)
75312           WRITE(MSTU(11),7800) KF,KC,CHAP,CHAN,(KCHG(KC,J1),J1=1,3),
75313      &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1)
75314  
75315 C...Particle decay: channel number, branching ratios, matrix element,
75316 C...decay products.
75317           DO 290 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
75318             DO 280 J=1,5
75319               CALL PYNAME(KFDP(IDC,J),CHAD(J))
75320   280       CONTINUE
75321             WRITE(MSTU(11),7900) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
75322      &      (CHAD(J),J=1,5)
75323   290     CONTINUE
75324   300   CONTINUE
75325  
75326 C...List parameter value table.
75327       ELSEIF(MLIST.EQ.13) THEN
75328         WRITE(MSTU(11),8000)
75329         DO 310 I=1,200
75330           WRITE(MSTU(11),8100) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I)
75331   310   CONTINUE
75332       ENDIF
75333  
75334 C...Format statements for output on unit MSTU(11) (by default 6).
75335  5100 FORMAT(///28X,'Event listing (summary)'//4X,'I particle/jet KS',
75336      &5X,'KF  orig    p_x      p_y      p_z       E        m'/)
75337  5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet',
75338      &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
75339      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/)
75340  5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j',
75341      &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
75342      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X,
75343      &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/)
75344  5400 FORMAT(///28X,'Event listing (no momenta)'//4X,'I  particle/jet',
75345      &     '  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)',1X
75346      &     ,'   C tag  AC tag'/)
75347  5500 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.3)
75348  5600 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.2)
75349  5700 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.1)
75350  5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),5F13.5)
75351  5900 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),1X,2I8)
75352  6000 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),5F13.5)
75353  6100 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),1X,2I8)
75354  6200 FORMAT(66X,5(1X,F12.3))
75355  6300 FORMAT(1X,78('='))
75356  6400 FORMAT(1X,130('='))
75357  6500 FORMAT(1X,65('='))
75358  6600 FORMAT(19X,'sum:',F6.2,5X,5F9.3)
75359  6700 FORMAT(19X,'sum:',F6.2,5X,5F9.2)
75360  6800 FORMAT(19X,'sum:',F6.2,5X,5F9.1)
75361  6900 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:',
75362      &5F13.5)
75363  7000 FORMAT(19X,'sum charge:',F6.2)
75364  7100 FORMAT(/10X,'Event listing of HEPEVT common block (simplified)'
75365      &//'    I IST    ID   Mothers Daughters    p_x      p_y      p_z',
75366      &'       E        m')
75367  7200 FORMAT(1X,I4,I2,I8,4I5,5F9.3)
75368  7300 FORMAT(/10X,'Event listing of user process at input (simplified)'
75369      &//'   I IST     ID Mothers   Colours    p_x      p_y      p_z',
75370      &'       E        m')
75371  7400 FORMAT(1X,I3,I3,I8,2I4,2I5,5F9.3)
75372  7500 FORMAT(///20X,'List of KF codes in program'/)
75373  7600 FORMAT(4X,I9,4X,A16,6X,I9,4X,A16)
75374  7700 FORMAT(///30X,'Particle/parton data table'//8X,'KF',5X,'KC',4X,
75375      &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X,
75376      &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off',
75377      &1X,'ME',3X,'Br.rat.',4X,'decay products')
75378  7800 FORMAT(/1X,I9,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5),
75379      &1X,1P,E13.5,3X,I2)
75380  7900 FORMAT(10X,I4,2X,I3,2X,I3,2X,F10.6,4X,5A16)
75381  8000 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)',
75382      &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)')
75383  8100 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5)
75384  
75385       RETURN
75386       END
75387  
75388 C*********************************************************************
75389  
75390 C...PYLOGO
75391 C...Writes a logo for the program.
75392  
75393       SUBROUTINE PYLOGO
75394  
75395 C...Double precision and integer declarations.
75396       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75397       IMPLICIT INTEGER(I-N)
75398       INTEGER PYK,PYCHGE,PYCOMP
75399 C...Parameter for length of information block.
75400       PARAMETER (IREFER=19)
75401 C...Commonblocks.
75402       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75403       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
75404       SAVE /PYDAT1/,/PYPARS/
75405 C...Local arrays and character variables.
75406       INTEGER IDATI(6)
75407       CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(2*IREFER)*36, LINE*79,
75408      &VERS*1, SUBV*3, DATE*2, YEAR*4, HOUR*2, MINU*2, SECO*2
75409  
75410 C...Data on months, logo, titles, and references.
75411       DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep',
75412      &'Oct','Nov','Dec'/
75413       DATA (LOGO(J),J=1,19)/
75414      &'            *......*            ',
75415      &'       *:::!!:::::::::::*       ',
75416      &'    *::::::!!::::::::::::::*    ',
75417      &'  *::::::::!!::::::::::::::::*  ',
75418      &' *:::::::::!!:::::::::::::::::* ',
75419      &' *:::::::::!!:::::::::::::::::* ',
75420      &'  *::::::::!!::::::::::::::::*! ',
75421      &'    *::::::!!::::::::::::::* !! ',
75422      &'    !! *:::!!:::::::::::*    !! ',
75423      &'    !!     !* -><- *         !! ',
75424      &'    !!     !!                !! ',
75425      &'    !!     !!                !! ',
75426      &'    !!                       !! ',
75427      &'    !!        lh             !! ',
75428      &'    !!                       !! ',
75429      &'    !!                 hh    !! ',
75430      &'    !!    ll                 !! ',
75431      &'    !!                       !! ',
75432      &'    !!                          '/
75433       DATA (LOGO(J),J=20,38)/
75434      &'Welcome to the Lund Monte Carlo!',
75435      &'                                ',
75436      &'PPP  Y   Y TTTTT H   H III   A  ',
75437      &'P  P  Y Y    T   H   H  I   A A ',
75438      &'PPP    Y     T   HHHHH  I  AAAAA',
75439      &'P      Y     T   H   H  I  A   A',
75440      &'P      Y     T   H   H III A   A',
75441      &'                                ',
75442      &'This is PYTHIA version x.xxx    ',
75443      &'Last date of change: xx xxx 201x',
75444      &'                                ',
75445      &'Now is xx xxx 201x at xx:xx:xx  ',
75446      &'                                ',
75447      &'Disclaimer: this program comes  ',
75448      &'without any guarantees. Beware  ',
75449      &'of errors and use common sense  ',
75450      &'when interpreting results.      ',
75451      &'                                ',
75452      &'Copyright T. Sjostrand (2011)   '/
75453       DATA (REFER(J),J=1,14)/
75454      &'An archive of program versions and d',
75455      &'ocumentation is found on the web:   ',
75456      &'http://www.thep.lu.se/~torbjorn/Pyth',
75457      &'ia.html                             ',
75458      &'                                    ',
75459      &'                                    ',
75460      &'When you cite this program, the offi',
75461      &'cial reference is to the 6.4 manual:',
75462      &'T. Sjostrand, S. Mrenna and P. Skand',
75463      &'s, JHEP05 (2006) 026                ',
75464      &'(LU TP 06-13, FERMILAB-PUB-06-052-CD',
75465      &'-T) [hep-ph/0603175].               ',
75466      &'                                    ',
75467      &'                                    '/
75468       DATA (REFER(J),J=15,32)/
75469      &'Also remember that the program, to a',
75470      &' large extent, represents original  ',
75471      &'physics research. Other publications',
75472      &' of special relevance to your       ',
75473      &'studies may therefore deserve separa',
75474      &'te mention.                         ',
75475      &'                                    ',
75476      &'                                    ',
75477      &'Main author: Torbjorn Sjostrand; Dep',
75478      &'artment of Theoretical Physics,     ',
75479      &'  Lund University, Solvegatan 14A, S',
75480      &'-223 62 Lund, Sweden;               ',
75481      &'  phone: + 46 - 46 - 222 48 16; e-ma',
75482      &'il: torbjorn@thep.lu.se             ',
75483      &'Author: Stephen Mrenna; Computing Di',
75484      &'vision, GDS Group,                  ',
75485      &'  Fermi National Accelerator Laborat',
75486      &'ory, MS 234, Batavia, IL 60510, USA;'/
75487       DATA (REFER(J),J=33,2*IREFER)/
75488      &'  phone: + 1 - 630 - 840 - 2556; e-m',
75489      &'ail: mrenna@fnal.gov                ',
75490      &'Author: Peter Skands; CERN/PH-TH, CH',
75491      &'-1211 Geneva, Switzerland           ',
75492      &'  phone: + 41 - 22 - 767 24 47; e-ma',
75493      &'il: peter.skands@cern.ch            '/
75494  
75495 C...Check that PYDATA linked (check we are in the year 20xx)
75496       IF(MSTP(183)/100.NE.20) THEN
75497         WRITE(*,'(1X,A)')
75498      &  'Error: PYDATA has not been linked.'
75499         WRITE(*,'(1X,A)') 'Execution stopped!'
75500         CALL PYSTOP(8)
75501  
75502 C...Write current version number and current date+time.
75503       ELSE
75504         WRITE(VERS,'(I1)') MSTP(181)
75505         LOGO(28)(24:24)=VERS
75506         WRITE(SUBV,'(I3)') MSTP(182)
75507         LOGO(28)(26:28)=SUBV
75508         IF(MSTP(182).LT.100) LOGO(28)(26:26)='0'
75509         WRITE(DATE,'(I2)') MSTP(185)
75510         LOGO(29)(22:23)=DATE
75511         LOGO(29)(25:27)=MONTH(MSTP(184))
75512         WRITE(YEAR,'(I4)') MSTP(183)
75513         LOGO(29)(29:32)=YEAR
75514         CALL PYTIME(IDATI)
75515         IF(IDATI(1).LE.0) THEN
75516           LOGO(31)='                                '
75517         ELSE
75518           WRITE(DATE,'(I2)') IDATI(3)
75519           LOGO(31)(8:9)=DATE
75520           LOGO(31)(11:13)=MONTH(MAX(1,MIN(12,IDATI(2))))
75521           WRITE(YEAR,'(I4)') IDATI(1)
75522           LOGO(31)(15:18)=YEAR
75523           WRITE(HOUR,'(I2)') IDATI(4)
75524           LOGO(31)(23:24)=HOUR
75525           WRITE(MINU,'(I2)') IDATI(5)
75526           LOGO(31)(26:27)=MINU
75527           IF(IDATI(5).LT.10) LOGO(31)(26:26)='0'
75528           WRITE(SECO,'(I2)') IDATI(6)
75529           LOGO(31)(29:30)=SECO
75530           IF(IDATI(6).LT.10) LOGO(31)(29:29)='0'
75531         ENDIF
75532       ENDIF
75533 
75534 
75535       WRITE(MSTU(11),'(A79)')
75536      &'+++++++++++++++++++++++++++++++++++++++++++++++++'//
75537      &'+++++++++++++++++++++++++++++' 
75538       WRITE(MSTU(11),'(A79)')
75539      &'++  This is a modified version of PYTHIA that may'//
75540      & ' only be used with JEWEL.  ++' 
75541       WRITE(MSTU(11),'(A79)')
75542      &'+++++++++++++++++++++++++++++++++++++++++++++++++'//
75543      &'+++++++++++++++++++++++++++++' 
75544  
75545 C...Loop over lines in header. Define page feed and side borders.
75546       DO 100 ILIN=1,29+IREFER
75547         LINE=' '
75548         IF(ILIN.EQ.1) THEN
75549           LINE(1:1)='1'
75550         ELSE
75551           LINE(2:3)='**'
75552           LINE(78:79)='**'
75553         ENDIF
75554  
75555 C...Separator lines and logos.
75556         IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.GE.28+IREFER) THEN
75557           LINE(4:77)='***********************************************'//
75558      &    '***************************'
75559         ELSEIF(ILIN.GE.6.AND.ILIN.LE.24) THEN
75560           LINE(6:37)=LOGO(ILIN-5)
75561           LINE(44:75)=LOGO(ILIN+14)
75562         ELSEIF(ILIN.GE.26.AND.ILIN.LE.25+IREFER) THEN
75563           LINE(5:40)=REFER(2*ILIN-51)
75564           LINE(41:76)=REFER(2*ILIN-50)
75565         ENDIF
75566  
75567 C...Write lines to appropriate unit.
75568         WRITE(MSTU(11),'(A79)') LINE
75569   100 CONTINUE
75570  
75571       RETURN
75572       END
75573  
75574 C*********************************************************************
75575  
75576 C...PYUPDA
75577 C...Facilitates the updating of particle and decay data
75578 C...by allowing it to be done in an external file.
75579  
75580       SUBROUTINE PYUPDA(MUPDA,LFN)
75581  
75582 C...Double precision and integer declarations.
75583       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75584       IMPLICIT INTEGER(I-N)
75585       INTEGER PYK,PYCHGE,PYCOMP
75586 C...Commonblocks.
75587       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75588       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
75589       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
75590       COMMON/PYDAT4/CHAF(500,2)
75591       CHARACTER CHAF*16
75592       COMMON/PYINT4/MWID(500),WIDS(500,5)
75593       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYINT4/
75594 C...Local arrays, character variables and data.
75595       CHARACTER CHINL*120,CHKF*9,CHVAR(22)*9,CHLIN*72,
75596      &CHBLK(20)*72,CHOLD*16,CHTMP*16,CHNEW*16,CHCOM*24
75597       DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','KCHG(I,4)',
75598      &'PMAS(I,1)','PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)',
75599      &'MDCY(I,2)','MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ',
75600      &'KFDP(I,1)','KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)',
75601      &'CHAF(I,1)','CHAF(I,2)','MWID(I)  '/
75602  
75603 C...Write header if not yet done.
75604       IF(MSTU(12).NE.12345) CALL PYLIST(0)
75605  
75606 C...Write information on file for editing.
75607       IF(MUPDA.EQ.1) THEN
75608         DO 110 KC=1,500
75609           WRITE(LFN,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
75610      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
75611      &    MWID(KC),MDCY(KC,1)
75612           DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
75613             WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
75614      &      (KFDP(IDC,J),J=1,5)
75615   100     CONTINUE
75616   110   CONTINUE
75617  
75618 C...Read complete set of information from edited file or
75619 C...read partial set of new or updated information from edited file.
75620       ELSEIF(MUPDA.EQ.2.OR.MUPDA.EQ.3) THEN
75621  
75622 C...Reset counters.
75623         KCC=100
75624         NDC=0
75625         CHKF='         '
75626         IF(MUPDA.EQ.2) THEN
75627           DO 120 I=1,MSTU(6)
75628             KCHG(I,4)=0
75629   120     CONTINUE
75630         ELSE
75631           DO 130 KC=1,MSTU(6)
75632             IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
75633             NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
75634   130     CONTINUE
75635         ENDIF
75636  
75637 C...Begin of loop: read new line; unknown whether particle or
75638 C...decay data.
75639   140   READ(LFN,5200,END=190) CHINL
75640  
75641 C...Identify particle code and whether already defined  (for MUPDA=3).
75642         IF(CHINL(2:10).NE.'         ') THEN
75643           CHKF=CHINL(2:10)
75644           READ(CHKF,5300) KF
75645           IF(MUPDA.EQ.2) THEN
75646             IF(KF.LE.100) THEN
75647               KC=KF
75648             ELSE
75649               KCC=KCC+1
75650               KC=KCC
75651             ENDIF
75652           ELSE
75653             KCREP=0
75654             IF(KF.LE.100) THEN
75655               KCREP=KF
75656             ELSE
75657               DO 150 KCR=101,KCC
75658                 IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
75659   150         CONTINUE
75660             ENDIF
75661 C...Remove duplicate old decay data.
75662             IF(KCREP.NE.0.AND.MDCY(KCREP,3).GT.0) THEN
75663               IDCREP=MDCY(KCREP,2)
75664               NDCREP=MDCY(KCREP,3)
75665               DO 160 I=1,KCC
75666                 IF(MDCY(I,2).GT.IDCREP) MDCY(I,2)=MDCY(I,2)-NDCREP
75667   160         CONTINUE
75668               DO 180 I=IDCREP,NDC-NDCREP
75669                 MDME(I,1)=MDME(I+NDCREP,1)
75670                 MDME(I,2)=MDME(I+NDCREP,2)
75671                 BRAT(I)=BRAT(I+NDCREP)
75672                 DO 170 J=1,5
75673                   KFDP(I,J)=KFDP(I+NDCREP,J)
75674   170           CONTINUE
75675   180         CONTINUE
75676               NDC=NDC-NDCREP
75677               KC=KCREP
75678             ELSEIF(KCREP.NE.0) THEN
75679               KC=KCREP
75680             ELSE
75681               KCC=KCC+1
75682               KC=KCC
75683             ENDIF
75684           ENDIF
75685  
75686 C...Study line with particle data.
75687           IF(KC.GT.MSTU(6)) CALL PYERRM(27,
75688      &    '(PYUPDA:) Particle arrays full by KF ='//CHKF)
75689           READ(CHINL,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
75690      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
75691      &    MWID(KC),MDCY(KC,1)
75692           MDCY(KC,2)=0
75693           MDCY(KC,3)=0
75694  
75695 C...Study line with decay data.
75696         ELSE
75697           NDC=NDC+1
75698           IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
75699      &    '(PYUPDA:) Decay data arrays full by KF ='//CHKF)
75700           IF(MDCY(KC,2).EQ.0) MDCY(KC,2)=NDC
75701           MDCY(KC,3)=MDCY(KC,3)+1
75702           READ(CHINL,5100) MDME(NDC,1),MDME(NDC,2),BRAT(NDC),
75703      &    (KFDP(NDC,J),J=1,5)
75704         ENDIF
75705  
75706 C...End of loop; ensure that PYCOMP tables are updated.
75707         GOTO 140
75708   190   CONTINUE
75709         MSTU(20)=0
75710  
75711 C...Perform possible tests that new information is consistent.
75712         DO 220 KC=1,MSTU(6)
75713           KF=KCHG(KC,4)
75714           IF(KF.EQ.0) GOTO 220
75715           WRITE(CHKF,5300) KF
75716           IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3),
75717      &    PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0) CALL PYERRM(17,
75718      &    '(PYUPDA:) Mass/width/life/(# channels) wrong for KF ='//CHKF)
75719           BRSUM=0D0
75720           DO 210 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
75721             IF(MDME(IDC,2).GT.80) GOTO 210
75722             KQ=KCHG(KC,1)
75723             PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
75724             MERR=0
75725             DO 200 J=1,5
75726               KP=KFDP(IDC,J)
75727               IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
75728                 IF(KP.EQ.81) KQ=0
75729               ELSEIF(PYCOMP(KP).EQ.0) THEN
75730                 MERR=3
75731               ELSE
75732                 KQ=KQ-PYCHGE(KP)
75733                 KPC=PYCOMP(KP)
75734                 PMS=PMS-PMAS(KPC,1)
75735                 IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
75736      &          PMAS(KPC,3))
75737               ENDIF
75738   200       CONTINUE
75739             IF(KQ.NE.0) MERR=MAX(2,MERR)
75740             IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
75741      &      MERR=MAX(1,MERR)
75742             IF(MERR.EQ.3) CALL PYERRM(17,
75743      &      '(PYUPDA:) Unknown particle code in decay of KF ='//CHKF)
75744             IF(MERR.EQ.2) CALL PYERRM(17,
75745      &      '(PYUPDA:) Charge not conserved in decay of KF ='//CHKF)
75746             IF(MERR.EQ.1) CALL PYERRM(7,
75747      &      '(PYUPDA:) Kinematically unallowed decay of KF ='//CHKF)
75748             BRSUM=BRSUM+BRAT(IDC)
75749   210     CONTINUE
75750           WRITE(CHTMP,5500) BRSUM
75751           IF(ABS(BRSUM).GT.0.0005D0.AND.ABS(BRSUM-1D0).GT.0.0005D0)
75752      &    CALL PYERRM(7,'(PYUPDA:) Sum of branching ratios is '//
75753      &    CHTMP(9:16)//' for KF ='//CHKF)
75754   220   CONTINUE
75755  
75756 C...Write DATA statements for inclusion in program.
75757       ELSEIF(MUPDA.EQ.4) THEN
75758  
75759 C...Find out how many codes and decay channels are actually used.
75760         KCC=0
75761         NDC=0
75762         DO 230 I=1,MSTU(6)
75763           IF(KCHG(I,4).NE.0) THEN
75764             KCC=I
75765             NDC=MAX(NDC,MDCY(I,2)+MDCY(I,3)-1)
75766           ENDIF
75767   230   CONTINUE
75768  
75769 C...Initialize writing of DATA statements for inclusion in program.
75770         DO 300 IVAR=1,22
75771           NDIM=MSTU(6)
75772           IF(IVAR.GE.12.AND.IVAR.LE.19) NDIM=MSTU(7)
75773           NLIN=1
75774           CHLIN=' '
75775           CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/'
75776           LLIN=35
75777           CHOLD='START'
75778  
75779 C...Loop through variables for conversion to characters.
75780           DO 280 IDIM=1,NDIM
75781             IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1)
75782             IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2)
75783             IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3)
75784             IF(IVAR.EQ.4) WRITE(CHTMP,5400) KCHG(IDIM,4)
75785             IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,1)
75786             IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,2)
75787             IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,3)
75788             IF(IVAR.EQ.8) WRITE(CHTMP,5500) PMAS(IDIM,4)
75789             IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,1)
75790             IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,2)
75791             IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDCY(IDIM,3)
75792             IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,1)
75793             IF(IVAR.EQ.13) WRITE(CHTMP,5400) MDME(IDIM,2)
75794             IF(IVAR.EQ.14) WRITE(CHTMP,5600) BRAT(IDIM)
75795             IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,1)
75796             IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,2)
75797             IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,3)
75798             IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,4)
75799             IF(IVAR.EQ.19) WRITE(CHTMP,5400) KFDP(IDIM,5)
75800             IF(IVAR.EQ.20) CHTMP=CHAF(IDIM,1)
75801             IF(IVAR.EQ.21) CHTMP=CHAF(IDIM,2)
75802             IF(IVAR.EQ.22) WRITE(CHTMP,5400) MWID(IDIM)
75803  
75804 C...Replace variables beyond what is properly defined.
75805             IF(IVAR.LE.4) THEN
75806               IF(IDIM.GT.KCC) CHTMP='               0'
75807             ELSEIF(IVAR.LE.8) THEN
75808               IF(IDIM.GT.KCC) CHTMP='             0.0'
75809             ELSEIF(IVAR.LE.11) THEN
75810               IF(IDIM.GT.KCC) CHTMP='               0'
75811             ELSEIF(IVAR.LE.13) THEN
75812               IF(IDIM.GT.NDC) CHTMP='               0'
75813             ELSEIF(IVAR.LE.14) THEN
75814               IF(IDIM.GT.NDC) CHTMP='             0.0'
75815             ELSEIF(IVAR.LE.19) THEN
75816               IF(IDIM.GT.NDC) CHTMP='               0'
75817             ELSEIF(IVAR.LE.21) THEN
75818               IF(IDIM.GT.KCC) CHTMP='                '
75819             ELSE
75820               IF(IDIM.GT.KCC) CHTMP='               0'
75821             ENDIF
75822  
75823 C...Length of variable, trailing decimal zeros, quotation marks.
75824             LLOW=1
75825             LHIG=1
75826             DO 240 LL=1,16
75827               IF(CHTMP(17-LL:17-LL).NE.' ') LLOW=17-LL
75828               IF(CHTMP(LL:LL).NE.' ') LHIG=LL
75829   240       CONTINUE
75830             CHNEW=CHTMP(LLOW:LHIG)//' '
75831             LNEW=1+LHIG-LLOW
75832             IF((IVAR.GE.5.AND.IVAR.LE.8).OR.IVAR.EQ.14) THEN
75833               LNEW=LNEW+1
75834   250         LNEW=LNEW-1
75835               IF(LNEW.GE.2.AND.CHNEW(LNEW:LNEW).EQ.'0') GOTO 250
75836               IF(CHNEW(LNEW:LNEW).EQ.'.') LNEW=LNEW-1
75837               IF(LNEW.EQ.0) THEN
75838                 CHNEW(1:3)='0D0'
75839                 LNEW=3
75840               ELSE
75841                 CHNEW(LNEW+1:LNEW+2)='D0'
75842                 LNEW=LNEW+2
75843               ENDIF
75844             ELSEIF(IVAR.EQ.20.OR.IVAR.EQ.21) THEN
75845               DO 260 LL=LNEW,1,-1
75846                 IF(CHNEW(LL:LL).EQ.'''') THEN
75847                   CHTMP=CHNEW
75848                   CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11)
75849                   LNEW=LNEW+1
75850                 ENDIF
75851   260         CONTINUE
75852               LNEW=MIN(14,LNEW)
75853               CHTMP=CHNEW
75854               CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//''''
75855               LNEW=LNEW+2
75856             ENDIF
75857  
75858 C...Form composite character string, often including repetition counter.
75859             IF(CHNEW.NE.CHOLD) THEN
75860               NRPT=1
75861               CHOLD=CHNEW
75862               CHCOM=CHNEW
75863               LCOM=LNEW
75864             ELSE
75865               LRPT=LNEW+1
75866               IF(NRPT.GE.2) LRPT=LNEW+3
75867               IF(NRPT.GE.10) LRPT=LNEW+4
75868               IF(NRPT.GE.100) LRPT=LNEW+5
75869               IF(NRPT.GE.1000) LRPT=LNEW+6
75870               LLIN=LLIN-LRPT
75871               NRPT=NRPT+1
75872               WRITE(CHTMP,5400) NRPT
75873               LRPT=1
75874               IF(NRPT.GE.10) LRPT=2
75875               IF(NRPT.GE.100) LRPT=3
75876               IF(NRPT.GE.1000) LRPT=4
75877               CHCOM(1:LRPT+1+LNEW)=CHTMP(17-LRPT:16)//'*'//CHNEW(1:LNEW)
75878               LCOM=LRPT+1+LNEW
75879             ENDIF
75880  
75881 C...Add characters to end of line, to new line (after storing old line),
75882 C...or to new block of lines (after writing old block).
75883             IF(LLIN+LCOM.LE.70) THEN
75884               CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//','
75885               LLIN=LLIN+LCOM+1
75886             ELSEIF(NLIN.LE.19) THEN
75887               CHLIN(LLIN+1:72)=' '
75888               CHBLK(NLIN)=CHLIN
75889               NLIN=NLIN+1
75890               CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//','
75891               LLIN=6+LCOM+1
75892             ELSE
75893               CHLIN(LLIN:72)='/'//' '
75894               CHBLK(NLIN)=CHLIN
75895               WRITE(CHTMP,5400) IDIM-NRPT
75896               CHBLK(1)(30:33)=CHTMP(13:16)
75897               DO 270 ILIN=1,NLIN
75898                 WRITE(LFN,5700) CHBLK(ILIN)
75899   270         CONTINUE
75900               NLIN=1
75901               CHLIN=' '
75902               CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//
75903      &        ',I=    ,    )/'//CHCOM(1:LCOM)//','
75904               WRITE(CHTMP,5400) IDIM-NRPT+1
75905               CHLIN(25:28)=CHTMP(13:16)
75906               LLIN=35+LCOM+1
75907             ENDIF
75908   280     CONTINUE
75909  
75910 C...Write final block of lines.
75911           CHLIN(LLIN:72)='/'//' '
75912           CHBLK(NLIN)=CHLIN
75913           WRITE(CHTMP,5400) NDIM
75914           CHBLK(1)(30:33)=CHTMP(13:16)
75915           DO 290 ILIN=1,NLIN
75916             WRITE(LFN,5700) CHBLK(ILIN)
75917   290     CONTINUE
75918   300   CONTINUE
75919       ENDIF
75920  
75921 C...Formats for reading and writing particle data.
75922  5000 FORMAT(1X,I9,2X,A16,2X,A16,3I3,3F12.5,1P,E13.5,2I3)
75923  5100 FORMAT(10X,2I5,F12.6,5I10)
75924  5200 FORMAT(A120)
75925  5300 FORMAT(I9)
75926  5400 FORMAT(I16)
75927  5500 FORMAT(F16.5)
75928  5600 FORMAT(F16.6)
75929  5700 FORMAT(A72)
75930  
75931       RETURN
75932       END
75933  
75934 C*********************************************************************
75935  
75936 C...PYK
75937 C...Provides various integer-valued event related data.
75938  
75939       FUNCTION PYK(I,J)
75940  
75941 C...Double precision and integer declarations.
75942       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75943       IMPLICIT INTEGER(I-N)
75944       INTEGER PYK,PYCHGE,PYCOMP
75945 C...Commonblocks.
75946       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
75947       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75948       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
75949       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
75950  
75951 C...Default value. For I=0 number of entries, number of stable entries
75952 C...or 3 times total charge.
75953       PYK=0
75954       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
75955       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN
75956         PYK=N
75957       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN
75958         DO 100 I1=1,N
75959           IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+1
75960           IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+
75961      &    PYCHGE(K(I1,2))
75962   100   CONTINUE
75963       ELSEIF(I.EQ.0) THEN
75964  
75965 C...For I > 0 direct readout of K matrix or charge.
75966       ELSEIF(J.LE.5) THEN
75967         PYK=K(I,J)
75968       ELSEIF(J.EQ.6) THEN
75969         PYK=PYCHGE(K(I,2))
75970  
75971 C...Status (existing/fragmented/decayed), parton/hadron separation.
75972       ELSEIF(J.LE.8) THEN
75973         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PYK=1
75974         IF(J.EQ.8) PYK=PYK*K(I,2)
75975       ELSEIF(J.LE.12) THEN
75976         KFA=IABS(K(I,2))
75977         KC=PYCOMP(KFA)
75978         KQ=0
75979         IF(KC.NE.0) KQ=KCHG(KC,2)
75980         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) PYK=K(I,2)
75981         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) PYK=K(I,2)
75982         IF(J.EQ.11) PYK=KC
75983         IF(J.EQ.12) PYK=KQ*ISIGN(1,K(I,2))
75984  
75985 C...Heaviest flavour in hadron/diquark.
75986       ELSEIF(J.EQ.13) THEN
75987         KFA=IABS(K(I,2))
75988         PYK=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10)
75989         IF(KFA.LT.10) PYK=KFA
75990         IF(MOD(KFA/1000,10).NE.0) PYK=MOD(KFA/1000,10)
75991         PYK=PYK*ISIGN(1,K(I,2))
75992  
75993 C...Particle history: generation, ancestor, rank.
75994       ELSEIF(J.LE.15) THEN
75995         I2=I
75996         I1=I
75997   110   PYK=PYK+1
75998         I2=I1
75999         I1=K(I1,3)
76000         IF(I1.GT.0) THEN
76001           IF(K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110
76002         ENDIF
76003         IF(J.EQ.15) PYK=I2
76004       ELSEIF(J.EQ.16) THEN
76005         KFA=IABS(K(I,2))
76006         IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.
76007      &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN
76008           I1=I
76009   120     I2=I1
76010           I1=K(I1,3)
76011           IF(I1.GT.0) THEN
76012             KFAM=IABS(K(I1,2))
76013             ILP=1
76014             IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
76015             IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93)
76016      &      ILP=0
76017             IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
76018             IF(ILP.EQ.1) GOTO 120
76019           ENDIF
76020           IF(K(I1,1).EQ.12) THEN
76021             DO 130 I3=I1+1,I2
76022               IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
76023      &        .AND.K(I3,2).NE.93) PYK=PYK+1
76024   130       CONTINUE
76025           ELSE
76026             I3=I2
76027   140       PYK=PYK+1
76028             I3=I3+1
76029             IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140
76030           ENDIF
76031         ENDIF
76032  
76033 C...Particle coming from collapsing jet system or not.
76034       ELSEIF(J.EQ.17) THEN
76035         I1=I
76036   150   PYK=PYK+1
76037         I3=I1
76038         I1=K(I1,3)
76039         I0=MAX(1,I1)
76040         KC=PYCOMP(K(I0,2))
76041         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN
76042           IF(PYK.EQ.1) PYK=-1
76043           IF(PYK.GT.1) PYK=0
76044           RETURN
76045         ENDIF
76046         IF(KCHG(KC,2).EQ.0) GOTO 150
76047         IF(K(I1,1).NE.12) PYK=0
76048         IF(K(I1,1).NE.12) RETURN
76049         I2=I1
76050   160   I2=I2+1
76051         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160
76052         K3M=K(I3-1,3)
76053         IF(K3M.GE.I1.AND.K3M.LE.I2) PYK=0
76054         K3P=K(I3+1,3)
76055         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) PYK=0
76056  
76057 C...Number of decay products. Colour flow.
76058       ELSEIF(J.EQ.18) THEN
76059         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) PYK=MAX(0,K(I,5)-K(I,4)+1)
76060         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) PYK=0
76061       ELSEIF(J.LE.22) THEN
76062         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN
76063         IF(J.EQ.19) PYK=MOD(K(I,4)/MSTU(5),MSTU(5))
76064         IF(J.EQ.20) PYK=MOD(K(I,5)/MSTU(5),MSTU(5))
76065         IF(J.EQ.21) PYK=MOD(K(I,4),MSTU(5))
76066         IF(J.EQ.22) PYK=MOD(K(I,5),MSTU(5))
76067       ELSE
76068       ENDIF
76069  
76070       RETURN
76071       END
76072  
76073 C*********************************************************************
76074  
76075 C...PYP
76076 C...Provides various real-valued event related data.
76077  
76078       FUNCTION PYP(I,J)
76079  
76080 C...Double precision and integer declarations.
76081       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76082       IMPLICIT INTEGER(I-N)
76083       INTEGER PYK,PYCHGE,PYCOMP
76084 C...Commonblocks.
76085       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
76086       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76087       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
76088       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
76089 C...Local array.
76090       DIMENSION PSUM(4)
76091  
76092 C...Set default value. For I = 0 sum of momenta or charges,
76093 C...or invariant mass of system.
76094       PYP=0D0
76095       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
76096       ELSEIF(I.EQ.0.AND.J.LE.4) THEN
76097         DO 100 I1=1,N
76098           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+P(I1,J)
76099   100   CONTINUE
76100       ELSEIF(I.EQ.0.AND.J.EQ.5) THEN
76101         DO 120 J1=1,4
76102           PSUM(J1)=0D0
76103           DO 110 I1=1,N
76104             IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+
76105      &      P(I1,J1)
76106   110     CONTINUE
76107   120   CONTINUE
76108         PYP=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
76109       ELSEIF(I.EQ.0.AND.J.EQ.6) THEN
76110         DO 130 I1=1,N
76111           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+PYCHGE(K(I1,2))/3D0
76112   130   CONTINUE
76113       ELSEIF(I.EQ.0) THEN
76114  
76115 C...Direct readout of P matrix.
76116       ELSEIF(J.LE.5) THEN
76117         PYP=P(I,J)
76118  
76119 C...Charge, total momentum, transverse momentum, transverse mass.
76120       ELSEIF(J.LE.12) THEN
76121         IF(J.EQ.6) PYP=PYCHGE(K(I,2))/3D0
76122         IF(J.EQ.7.OR.J.EQ.8) PYP=P(I,1)**2+P(I,2)**2+P(I,3)**2
76123         IF(J.EQ.9.OR.J.EQ.10) PYP=P(I,1)**2+P(I,2)**2
76124         IF(J.EQ.11.OR.J.EQ.12) PYP=P(I,5)**2+P(I,1)**2+P(I,2)**2
76125         IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PYP=SQRT(PYP)
76126  
76127 C...Theta and phi angle in radians or degrees.
76128       ELSEIF(J.LE.16) THEN
76129         IF(J.LE.14) PYP=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
76130         IF(J.GE.15) PYP=PYANGL(P(I,1),P(I,2))
76131         IF(J.EQ.14.OR.J.EQ.16) PYP=PYP*180D0/PARU(1)
76132  
76133 C...True rapidity, rapidity with pion mass, pseudorapidity.
76134       ELSEIF(J.LE.19) THEN
76135         PMR=0D0
76136         IF(J.EQ.17) PMR=P(I,5)
76137         IF(J.EQ.18) PMR=PYMASS(211)
76138         PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
76139         PYP=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
76140      &  1D20)),P(I,3))
76141  
76142 C...Energy and momentum fractions (only to be used in CM frame).
76143       ELSEIF(J.LE.25) THEN
76144         IF(J.EQ.20) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21)
76145         IF(J.EQ.21) PYP=2D0*P(I,3)/PARU(21)
76146         IF(J.EQ.22) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21)
76147         IF(J.EQ.23) PYP=2D0*P(I,4)/PARU(21)
76148         IF(J.EQ.24) PYP=(P(I,4)+P(I,3))/PARU(21)
76149         IF(J.EQ.25) PYP=(P(I,4)-P(I,3))/PARU(21)
76150       ENDIF
76151  
76152       RETURN
76153       END
76154  
76155 C*********************************************************************
76156  
76157 C...PYSPHE
76158 C...Performs sphericity tensor analysis to give sphericity,
76159 C...aplanarity and the related event axes.
76160  
76161       SUBROUTINE PYSPHE(SPH,APL)
76162  
76163 C...Double precision and integer declarations.
76164       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76165       IMPLICIT INTEGER(I-N)
76166       INTEGER PYK,PYCHGE,PYCOMP
76167 C...Parameter statement to help give large particle numbers.
76168       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
76169      &KEXCIT=4000000,KDIMEN=5000000)
76170 C...Commonblocks.
76171       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
76172       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76173       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
76174       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
76175 C...Local arrays.
76176       DIMENSION SM(3,3),SV(3,3)
76177  
76178 C...Calculate matrix to be diagonalized.
76179       NP=0
76180       DO 110 J1=1,3
76181         DO 100 J2=J1,3
76182           SM(J1,J2)=0D0
76183   100   CONTINUE
76184   110 CONTINUE
76185       PS=0D0
76186       DO 140 I=1,N
76187         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
76188         IF(MSTU(41).GE.2) THEN
76189           KC=PYCOMP(K(I,2))
76190           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
76191      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
76192      &    K(I,2).EQ.KSUSY1+39) GOTO 140
76193           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
76194      &    GOTO 140
76195         ENDIF
76196         NP=NP+1
76197         PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
76198         PWT=1D0
76199         IF(ABS(PARU(41)-2D0).GT.0.001D0) PWT=
76200      &  MAX(1D-10,PA)**(PARU(41)-2D0)
76201         DO 130 J1=1,3
76202           DO 120 J2=J1,3
76203             SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2)
76204   120     CONTINUE
76205   130   CONTINUE
76206         PS=PS+PWT*PA**2
76207   140 CONTINUE
76208  
76209 C...Very low multiplicities (0 or 1) not considered.
76210       IF(NP.LE.1) THEN
76211         CALL PYERRM(8,'(PYSPHE:) too few particles for analysis')
76212         SPH=-1D0
76213         APL=-1D0
76214         RETURN
76215       ENDIF
76216       DO 160 J1=1,3
76217         DO 150 J2=J1,3
76218           SM(J1,J2)=SM(J1,J2)/PS
76219   150   CONTINUE
76220   160 CONTINUE
76221  
76222 C...Find eigenvalues to matrix (third degree equation).
76223       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
76224      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
76225       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
76226      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
76227      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
76228       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
76229       P(N+1,4)=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
76230       P(N+3,4)=1D0/3D0+SQRT(-SQ)*MIN(2D0*SP,-SQRT(3D0*(1D0-SP**2))-SP)
76231       P(N+2,4)=1D0-P(N+1,4)-P(N+3,4)
76232       IF(P(N+2,4).LT.1D-5) THEN
76233         CALL PYERRM(8,'(PYSPHE:) all particles back-to-back')
76234         SPH=-1D0
76235         APL=-1D0
76236         RETURN
76237       ENDIF
76238  
76239 C...Find first and last eigenvector by solving equation system.
76240       DO 240 I=1,3,2
76241         DO 180 J1=1,3
76242           SV(J1,J1)=SM(J1,J1)-P(N+I,4)
76243           DO 170 J2=J1+1,3
76244             SV(J1,J2)=SM(J1,J2)
76245             SV(J2,J1)=SM(J1,J2)
76246   170     CONTINUE
76247   180   CONTINUE
76248         SMAX=0D0
76249         DO 200 J1=1,3
76250           DO 190 J2=1,3
76251             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190
76252             JA=J1
76253             JB=J2
76254             SMAX=ABS(SV(J1,J2))
76255   190     CONTINUE
76256   200   CONTINUE
76257         SMAX=0D0
76258         DO 220 J3=JA+1,JA+2
76259           J1=J3-3*((J3-1)/3)
76260           RL=SV(J1,JB)/SV(JA,JB)
76261           DO 210 J2=1,3
76262             SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2)
76263             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210
76264             JC=J1
76265             SMAX=ABS(SV(J1,J2))
76266   210     CONTINUE
76267   220   CONTINUE
76268         JB1=JB+1-3*(JB/3)
76269         JB2=JB+2-3*((JB+1)/3)
76270         P(N+I,JB1)=-SV(JC,JB2)
76271         P(N+I,JB2)=SV(JC,JB1)
76272         P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/
76273      &  SV(JA,JB)
76274         PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2)
76275         SGN=(-1D0)**INT(PYR(0)+0.5D0)
76276         DO 230 J=1,3
76277           P(N+I,J)=SGN*P(N+I,J)/PA
76278   230   CONTINUE
76279   240 CONTINUE
76280  
76281 C...Middle axis orthogonal to other two. Fill other codes.
76282       SGN=(-1D0)**INT(PYR(0)+0.5D0)
76283       P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2))
76284       P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3))
76285       P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1))
76286       DO 260 I=1,3
76287         K(N+I,1)=31
76288         K(N+I,2)=95
76289         K(N+I,3)=I
76290         K(N+I,4)=0
76291         K(N+I,5)=0
76292         P(N+I,5)=0D0
76293         DO 250 J=1,5
76294           V(I,J)=0D0
76295   250   CONTINUE
76296   260 CONTINUE
76297  
76298 C...Calculate sphericity and aplanarity. Select storing option.
76299       SPH=1.5D0*(P(N+2,4)+P(N+3,4))
76300       APL=1.5D0*P(N+3,4)
76301       MSTU(61)=N+1
76302       MSTU(62)=NP
76303       IF(MSTU(43).LE.1) MSTU(3)=3
76304       IF(MSTU(43).GE.2) N=N+3
76305  
76306       RETURN
76307       END
76308  
76309 C*********************************************************************
76310  
76311 C...PYTHRU
76312 C...Performs thrust analysis to give thrust, oblateness
76313 C...and the related event axes.
76314  
76315       SUBROUTINE PYTHRU(THR,OBL)
76316  
76317 C...Double precision and integer declarations.
76318       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76319       IMPLICIT INTEGER(I-N)
76320       INTEGER PYK,PYCHGE,PYCOMP
76321 C...Parameter statement to help give large particle numbers.
76322       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
76323      &KEXCIT=4000000,KDIMEN=5000000)
76324 C...Commonblocks.
76325       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
76326       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76327       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
76328       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
76329 C...Local arrays.
76330       DIMENSION TDI(3),TPR(3)
76331  
76332 C...Take copy of particles that are to be considered in thrust analysis.
76333       NP=0
76334       PS=0D0
76335       DO 100 I=1,N
76336         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
76337         IF(MSTU(41).GE.2) THEN
76338           KC=PYCOMP(K(I,2))
76339           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
76340      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
76341      &    K(I,2).EQ.KSUSY1+39) GOTO 100
76342           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
76343      &    GOTO 100
76344         ENDIF
76345         IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN
76346           CALL PYERRM(11,'(PYTHRU:) no more memory left in PYJETS')
76347           THR=-2D0
76348           OBL=-2D0
76349           RETURN
76350         ENDIF
76351         NP=NP+1
76352         K(N+NP,1)=23
76353         P(N+NP,1)=P(I,1)
76354         P(N+NP,2)=P(I,2)
76355         P(N+NP,3)=P(I,3)
76356         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
76357         P(N+NP,5)=1D0
76358         IF(ABS(PARU(42)-1D0).GT.0.001D0) P(N+NP,5)=
76359      &  P(N+NP,4)**(PARU(42)-1D0)
76360         PS=PS+P(N+NP,4)*P(N+NP,5)
76361   100 CONTINUE
76362  
76363 C...Very low multiplicities (0 or 1) not considered.
76364       IF(NP.LE.1) THEN
76365         CALL PYERRM(8,'(PYTHRU:) too few particles for analysis')
76366         THR=-1D0
76367         OBL=-1D0
76368         RETURN
76369       ENDIF
76370  
76371 C...Loop over thrust and major. T axis along z direction in latter case.
76372       DO 320 ILD=1,2
76373         IF(ILD.EQ.2) THEN
76374           K(N+NP+1,1)=31
76375           PHI=PYANGL(P(N+NP+1,1),P(N+NP+1,2))
76376           MSTU(33)=1
76377           CALL PYROBO(N+1,N+NP+1,0D0,-PHI,0D0,0D0,0D0)
76378           THE=PYANGL(P(N+NP+1,3),P(N+NP+1,1))
76379           CALL PYROBO(N+1,N+NP+1,-THE,0D0,0D0,0D0,0D0)
76380         ENDIF
76381  
76382 C...Find and order particles with highest p (pT for major).
76383         DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4
76384           P(ILF,4)=0D0
76385   110   CONTINUE
76386         DO 160 I=N+1,N+NP
76387           IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2)
76388           DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1
76389             IF(P(I,4).LE.P(ILF,4)) GOTO 140
76390             DO 120 J=1,5
76391               P(ILF+1,J)=P(ILF,J)
76392   120       CONTINUE
76393   130     CONTINUE
76394           ILF=N+NP+3
76395   140     DO 150 J=1,5
76396             P(ILF+1,J)=P(I,J)
76397   150     CONTINUE
76398   160   CONTINUE
76399  
76400 C...Find and order initial axes with highest thrust (major).
76401         DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15
76402           P(ILG,4)=0D0
76403   170   CONTINUE
76404         NC=2**(MIN(MSTU(44),NP)-1)
76405         DO 250 ILC=1,NC
76406           DO 180 J=1,3
76407             TDI(J)=0D0
76408   180     CONTINUE
76409           DO 200 ILF=1,MIN(MSTU(44),NP)
76410             SGN=P(N+NP+ILF+3,5)
76411             IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN
76412             DO 190 J=1,4-ILD
76413               TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J)
76414   190       CONTINUE
76415   200     CONTINUE
76416           TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2
76417           DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1
76418             IF(TDS.LE.P(ILG,4)) GOTO 230
76419             DO 210 J=1,4
76420               P(ILG+1,J)=P(ILG,J)
76421   210       CONTINUE
76422   220     CONTINUE
76423           ILG=N+NP+MSTU(44)+4
76424   230     DO 240 J=1,3
76425             P(ILG+1,J)=TDI(J)
76426   240     CONTINUE
76427           P(ILG+1,4)=TDS
76428   250   CONTINUE
76429  
76430 C...Iterate direction of axis until stable maximum.
76431         P(N+NP+ILD,4)=0D0
76432         ILG=0
76433   260   ILG=ILG+1
76434         THP=0D0
76435   270   THPS=THP
76436         DO 280 J=1,3
76437           IF(THP.LE.1D-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J)
76438           IF(THP.GT.1D-10) TDI(J)=TPR(J)
76439           TPR(J)=0D0
76440   280   CONTINUE
76441         DO 300 I=N+1,N+NP
76442           SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3))
76443           DO 290 J=1,4-ILD
76444             TPR(J)=TPR(J)+SGN*P(I,J)
76445   290     CONTINUE
76446   300   CONTINUE
76447         THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS
76448         IF(THP.GE.THPS+PARU(48)) GOTO 270
76449  
76450 C...Save good axis. Try new initial axis until a number of tries agree.
76451         IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260
76452         IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN
76453           IAGR=0
76454           SGN=(-1D0)**INT(PYR(0)+0.5D0)
76455           DO 310 J=1,3
76456             P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP)
76457   310     CONTINUE
76458           P(N+NP+ILD,4)=THP
76459           P(N+NP+ILD,5)=0D0
76460         ENDIF
76461         IAGR=IAGR+1
76462         IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260
76463   320 CONTINUE
76464  
76465 C...Find minor axis and value by orthogonality.
76466       SGN=(-1D0)**INT(PYR(0)+0.5D0)
76467       P(N+NP+3,1)=-SGN*P(N+NP+2,2)
76468       P(N+NP+3,2)=SGN*P(N+NP+2,1)
76469       P(N+NP+3,3)=0D0
76470       THP=0D0
76471       DO 330 I=N+1,N+NP
76472         THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2))
76473   330 CONTINUE
76474       P(N+NP+3,4)=THP/PS
76475       P(N+NP+3,5)=0D0
76476  
76477 C...Fill axis information. Rotate back to original coordinate system.
76478       DO 350 ILD=1,3
76479         K(N+ILD,1)=31
76480         K(N+ILD,2)=96
76481         K(N+ILD,3)=ILD
76482         K(N+ILD,4)=0
76483         K(N+ILD,5)=0
76484         DO 340 J=1,5
76485           P(N+ILD,J)=P(N+NP+ILD,J)
76486           V(N+ILD,J)=0D0
76487   340   CONTINUE
76488   350 CONTINUE
76489       CALL PYROBO(N+1,N+3,THE,PHI,0D0,0D0,0D0)
76490  
76491 C...Calculate thrust and oblateness. Select storing option.
76492       THR=P(N+1,4)
76493       OBL=P(N+2,4)-P(N+3,4)
76494       MSTU(61)=N+1
76495       MSTU(62)=NP
76496       IF(MSTU(43).LE.1) MSTU(3)=3
76497       IF(MSTU(43).GE.2) N=N+3
76498  
76499       RETURN
76500       END
76501  
76502 C*********************************************************************
76503  
76504 C...PYCLUS
76505 C...Subdivides the particle content of an event into jets/clusters.
76506  
76507       SUBROUTINE PYCLUS(NJET)
76508  
76509 C...Double precision and integer declarations.
76510       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76511       IMPLICIT INTEGER(I-N)
76512       INTEGER PYK,PYCHGE,PYCOMP
76513 C...Parameter statement to help give large particle numbers.
76514       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
76515      &KEXCIT=4000000,KDIMEN=5000000)
76516 C...Commonblocks.
76517       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
76518       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76519       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
76520       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
76521 C...Local arrays and saved variables.
76522       DIMENSION PS(5)
76523       SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM
76524  
76525 C...Functions: distance measure in pT, (pseudo)mass or Durham pT.
76526       R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
76527      &P(I1,3)*P(I2,3))*2D0*P(I1,5)*P(I2,5)/(0.0001D0+P(I1,5)+P(I2,5))**2
76528       R2M(I1,I2)=2D0*P(I1,4)*P(I2,4)*(1D0-(P(I1,1)*P(I2,1)+P(I1,2)*
76529      &P(I2,2)+P(I1,3)*P(I2,3))/MAX(1D-10,P(I1,5)*P(I2,5)))
76530       R2D(I1,I2)=2D0*MIN(P(I1,4),P(I2,4))**2*(1D0-(P(I1,1)*P(I2,1)+
76531      &P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/MAX(1D-10,P(I1,5)*P(I2,5)))
76532  
76533 C...If first time, reset. If reentering, skip preliminaries.
76534       IF(MSTU(48).LE.0) THEN
76535         NP=0
76536         DO 100 J=1,5
76537           PS(J)=0D0
76538   100   CONTINUE
76539         PSS=0D0
76540         PIMASS=PMAS(PYCOMP(211),1)
76541       ELSE
76542         NJET=NSAV
76543         IF(MSTU(43).GE.2) N=N-NJET
76544         DO 110 I=N+1,N+NJET
76545           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
76546   110   CONTINUE
76547         IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
76548           R2ACC=PARU(44)**2
76549         ELSE
76550           R2ACC=PARU(45)*PS(5)**2
76551         ENDIF
76552         NLOOP=0
76553         GOTO 300
76554       ENDIF
76555  
76556 C...Find which particles are to be considered in cluster search.
76557       DO 140 I=1,N
76558         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
76559         IF(MSTU(41).GE.2) THEN
76560           KC=PYCOMP(K(I,2))
76561           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
76562      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
76563      &    K(I,2).EQ.KSUSY1+39) GOTO 140
76564           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
76565      &    GOTO 140
76566         ENDIF
76567         IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN
76568           CALL PYERRM(11,'(PYCLUS:) no more memory left in PYJETS')
76569           NJET=-1
76570           RETURN
76571         ENDIF
76572  
76573 C...Take copy of these particles, with space left for jets later on.
76574         NP=NP+1
76575         K(N+NP,3)=I
76576         DO 120 J=1,5
76577           P(N+NP,J)=P(I,J)
76578   120   CONTINUE
76579         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
76580         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
76581         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
76582         P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
76583         DO 130 J=1,4
76584           PS(J)=PS(J)+P(N+NP,J)
76585   130   CONTINUE
76586         PSS=PSS+P(N+NP,5)
76587   140 CONTINUE
76588       DO 160 I=N+1,N+NP
76589         K(I+NP,3)=K(I,3)
76590         DO 150 J=1,5
76591           P(I+NP,J)=P(I,J)
76592   150   CONTINUE
76593   160 CONTINUE
76594       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
76595  
76596 C...Very low multiplicities not considered.
76597       IF(NP.LT.MSTU(47)) THEN
76598         CALL PYERRM(8,'(PYCLUS:) too few particles for analysis')
76599         NJET=-1
76600         RETURN
76601       ENDIF
76602  
76603 C...Find precluster configuration. If too few jets, make harder cuts.
76604       NLOOP=0
76605       IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
76606         R2ACC=PARU(44)**2
76607       ELSE
76608         R2ACC=PARU(45)*PS(5)**2
76609       ENDIF
76610       RINIT=1.25D0*PARU(43)
76611       IF(NP.LE.MSTU(47)+2) RINIT=0D0
76612   170 RINIT=0.8D0*RINIT
76613       NPRE=0
76614       NREM=NP
76615       DO 180 I=N+NP+1,N+2*NP
76616         K(I,4)=0
76617   180 CONTINUE
76618  
76619 C...Sum up small momentum region. Jet if enough absolute momentum.
76620       IF(MSTU(46).LE.2) THEN
76621         DO 190 J=1,4
76622           P(N+1,J)=0D0
76623   190   CONTINUE
76624         DO 210 I=N+NP+1,N+2*NP
76625           IF(P(I,5).GT.2D0*RINIT) GOTO 210
76626           NREM=NREM-1
76627           K(I,4)=1
76628           DO 200 J=1,4
76629             P(N+1,J)=P(N+1,J)+P(I,J)
76630   200     CONTINUE
76631   210   CONTINUE
76632         P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
76633         IF(P(N+1,5).GT.2D0*RINIT) NPRE=1
76634         IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
76635         IF(NREM.EQ.0) GOTO 170
76636       ENDIF
76637  
76638 C...Find fastest remaining particle.
76639   220 NPRE=NPRE+1
76640       PMAX=0D0
76641       DO 230 I=N+NP+1,N+2*NP
76642         IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230
76643         IMAX=I
76644         PMAX=P(I,5)
76645   230 CONTINUE
76646       DO 240 J=1,5
76647         P(N+NPRE,J)=P(IMAX,J)
76648   240 CONTINUE
76649       NREM=NREM-1
76650       K(IMAX,4)=NPRE
76651  
76652 C...Sum up precluster around it according to pT separation.
76653       IF(MSTU(46).LE.2) THEN
76654         DO 260 I=N+NP+1,N+2*NP
76655           IF(K(I,4).NE.0) GOTO 260
76656           R2=R2T(I,IMAX)
76657           IF(R2.GT.RINIT**2) GOTO 260
76658           NREM=NREM-1
76659           K(I,4)=NPRE
76660           DO 250 J=1,4
76661             P(N+NPRE,J)=P(N+NPRE,J)+P(I,J)
76662   250     CONTINUE
76663   260   CONTINUE
76664         P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
76665  
76666 C...Sum up precluster around it according to mass or
76667 C...Durham pT separation.
76668       ELSE
76669   270   IMIN=0
76670         R2MIN=RINIT**2
76671         DO 280 I=N+NP+1,N+2*NP
76672           IF(K(I,4).NE.0) GOTO 280
76673           IF(MSTU(46).LE.4) THEN
76674             R2=R2M(I,N+NPRE)
76675           ELSE
76676             R2=R2D(I,N+NPRE)
76677           ENDIF
76678           IF(R2.GE.R2MIN) GOTO 280
76679           IMIN=I
76680           R2MIN=R2
76681   280   CONTINUE
76682         IF(IMIN.NE.0) THEN
76683           DO 290 J=1,4
76684             P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J)
76685   290     CONTINUE
76686           P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
76687           NREM=NREM-1
76688           K(IMIN,4)=NPRE
76689           GOTO 270
76690         ENDIF
76691       ENDIF
76692  
76693 C...Check if more preclusters to be found. Start over if too few.
76694       IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
76695       IF(NREM.GT.0) GOTO 220
76696       NJET=NPRE
76697  
76698 C...Reassign all particles to nearest jet. Sum up new jet momenta.
76699   300 TSAV=0D0
76700       PSJT=0D0
76701   310 IF(MSTU(46).LE.1) THEN
76702         DO 330 I=N+1,N+NJET
76703           DO 320 J=1,4
76704             V(I,J)=0D0
76705   320     CONTINUE
76706   330   CONTINUE
76707         DO 360 I=N+NP+1,N+2*NP
76708           R2MIN=PSS**2
76709           DO 340 IJET=N+1,N+NJET
76710             IF(P(IJET,5).LT.RINIT) GOTO 340
76711             R2=R2T(I,IJET)
76712             IF(R2.GE.R2MIN) GOTO 340
76713             IMIN=IJET
76714             R2MIN=R2
76715   340     CONTINUE
76716           K(I,4)=IMIN-N
76717           DO 350 J=1,4
76718             V(IMIN,J)=V(IMIN,J)+P(I,J)
76719   350     CONTINUE
76720   360   CONTINUE
76721         PSJT=0D0
76722         DO 380 I=N+1,N+NJET
76723           DO 370 J=1,4
76724             P(I,J)=V(I,J)
76725   370     CONTINUE
76726           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
76727           PSJT=PSJT+P(I,5)
76728   380   CONTINUE
76729       ENDIF
76730  
76731 C...Find two closest jets.
76732       R2MIN=2D0*MAX(R2ACC,PS(5)**2)
76733       DO 400 ITRY1=N+1,N+NJET-1
76734         DO 390 ITRY2=ITRY1+1,N+NJET
76735           IF(MSTU(46).LE.2) THEN
76736             R2=R2T(ITRY1,ITRY2)
76737           ELSEIF(MSTU(46).LE.4) THEN
76738             R2=R2M(ITRY1,ITRY2)
76739           ELSE
76740             R2=R2D(ITRY1,ITRY2)
76741           ENDIF
76742           IF(R2.GE.R2MIN) GOTO 390
76743           IMIN1=ITRY1
76744           IMIN2=ITRY2
76745           R2MIN=R2
76746   390   CONTINUE
76747   400 CONTINUE
76748  
76749 C...If allowed, join two closest jets and start over.
76750       IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN
76751         IREC=MIN(IMIN1,IMIN2)
76752         IDEL=MAX(IMIN1,IMIN2)
76753         DO 410 J=1,4
76754           P(IREC,J)=P(IMIN1,J)+P(IMIN2,J)
76755   410   CONTINUE
76756         P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2)
76757         DO 430 I=IDEL+1,N+NJET
76758           DO 420 J=1,5
76759             P(I-1,J)=P(I,J)
76760   420     CONTINUE
76761   430   CONTINUE
76762         IF(MSTU(46).GE.2) THEN
76763           DO 440 I=N+NP+1,N+2*NP
76764             IORI=N+K(I,4)
76765             IF(IORI.EQ.IDEL) K(I,4)=IREC-N
76766             IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1
76767   440     CONTINUE
76768         ENDIF
76769         NJET=NJET-1
76770         GOTO 300
76771  
76772 C...Divide up broad jet if empty cluster in list of final ones.
76773       ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN
76774         DO 450 I=N+1,N+NJET
76775           K(I,5)=0
76776   450   CONTINUE
76777         DO 460 I=N+NP+1,N+2*NP
76778           K(N+K(I,4),5)=K(N+K(I,4),5)+1
76779   460   CONTINUE
76780         IEMP=0
76781         DO 470 I=N+1,N+NJET
76782           IF(K(I,5).EQ.0) IEMP=I
76783   470   CONTINUE
76784         IF(IEMP.NE.0) THEN
76785           NLOOP=NLOOP+1
76786           ISPL=0
76787           R2MAX=0D0
76788           DO 480 I=N+NP+1,N+2*NP
76789             IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480
76790             IJET=N+K(I,4)
76791             R2=R2T(I,IJET)
76792             IF(R2.LE.R2MAX) GOTO 480
76793             ISPL=I
76794             R2MAX=R2
76795   480     CONTINUE
76796           IF(ISPL.NE.0) THEN
76797             IJET=N+K(ISPL,4)
76798             DO 490 J=1,4
76799               P(IEMP,J)=P(ISPL,J)
76800               P(IJET,J)=P(IJET,J)-P(ISPL,J)
76801   490       CONTINUE
76802             P(IEMP,5)=P(ISPL,5)
76803             P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2)
76804             IF(NLOOP.LE.2) GOTO 300
76805           ENDIF
76806         ENDIF
76807       ENDIF
76808  
76809 C...If generalized thrust has not yet converged, continue iteration.
76810       IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48))
76811      &THEN
76812         TSAV=PSJT/PSS
76813         GOTO 310
76814       ENDIF
76815  
76816 C...Reorder jets according to energy.
76817       DO 510 I=N+1,N+NJET
76818         DO 500 J=1,5
76819           V(I,J)=P(I,J)
76820   500   CONTINUE
76821   510 CONTINUE
76822       DO 540 INEW=N+1,N+NJET
76823         PEMAX=0D0
76824         DO 520 ITRY=N+1,N+NJET
76825           IF(V(ITRY,4).LE.PEMAX) GOTO 520
76826           IMAX=ITRY
76827           PEMAX=V(ITRY,4)
76828   520   CONTINUE
76829         K(INEW,1)=31
76830         K(INEW,2)=97
76831         K(INEW,3)=INEW-N
76832         K(INEW,4)=0
76833         DO 530 J=1,5
76834           P(INEW,J)=V(IMAX,J)
76835   530   CONTINUE
76836         V(IMAX,4)=-1D0
76837         K(IMAX,5)=INEW
76838   540 CONTINUE
76839  
76840 C...Clean up particle-jet assignments and jet information.
76841       DO 550 I=N+NP+1,N+2*NP
76842         IORI=K(N+K(I,4),5)
76843         K(I,4)=IORI-N
76844         IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N
76845         K(IORI,4)=K(IORI,4)+1
76846   550 CONTINUE
76847       IEMP=0
76848       PSJT=0D0
76849       DO 570 I=N+1,N+NJET
76850         K(I,5)=0
76851         PSJT=PSJT+P(I,5)
76852         P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0D0))
76853         DO 560 J=1,5
76854           V(I,J)=0D0
76855   560   CONTINUE
76856         IF(K(I,4).EQ.0) IEMP=I
76857   570 CONTINUE
76858  
76859 C...Select storing option. Output variables. Check for failure.
76860       MSTU(61)=N+1
76861       MSTU(62)=NP
76862       MSTU(63)=NPRE
76863       PARU(61)=PS(5)
76864       PARU(62)=PSJT/PSS
76865       PARU(63)=SQRT(R2MIN)
76866       IF(NJET.LE.1) PARU(63)=0D0
76867       IF(IEMP.NE.0) THEN
76868         CALL PYERRM(8,'(PYCLUS:) failed to reconstruct as requested')
76869         NJET=-1
76870         RETURN
76871       ENDIF
76872       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
76873       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
76874       NSAV=NJET
76875  
76876       RETURN
76877       END
76878  
76879 C*********************************************************************
76880  
76881 C...PYCELL
76882 C...Provides a simple way of jet finding in eta-phi-ET coordinates,
76883 C...as used for calorimeters at hadron colliders.
76884  
76885       SUBROUTINE PYCELL(NJET)
76886  
76887 C...Double precision and integer declarations.
76888       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76889       IMPLICIT INTEGER(I-N)
76890       INTEGER PYK,PYCHGE,PYCOMP
76891 C...Parameter statement to help give large particle numbers.
76892       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
76893      &KEXCIT=4000000,KDIMEN=5000000)
76894 C...Commonblocks.
76895       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
76896       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76897       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
76898       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
76899  
76900 C...Loop over all particles. Find cell that was hit by given particle.
76901       PTLRAT=1D0/SINH(PARU(51))**2
76902       NP=0
76903       NC=N
76904       DO 110 I=1,N
76905         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
76906         IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110
76907         IF(MSTU(41).GE.2) THEN
76908           KC=PYCOMP(K(I,2))
76909           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
76910      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
76911      &    K(I,2).EQ.KSUSY1+39) GOTO 110
76912           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
76913      &    GOTO 110
76914         ENDIF
76915         NP=NP+1
76916         PT=SQRT(P(I,1)**2+P(I,2)**2)
76917         ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3))
76918         IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5D0*
76919      &  (ETA/PARU(51)+1D0))))
76920         PHI=PYANGL(P(I,1),P(I,2))
76921         IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5D0*
76922      &  (PHI/PARU(1)+1D0))))
76923         IETPH=MSTU(52)*IETA+IPHI
76924  
76925 C...Add to cell already hit, or book new cell.
76926         DO 100 IC=N+1,NC
76927           IF(IETPH.EQ.K(IC,3)) THEN
76928             K(IC,4)=K(IC,4)+1
76929             P(IC,5)=P(IC,5)+PT
76930             GOTO 110
76931           ENDIF
76932   100   CONTINUE
76933         IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN
76934           CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
76935           NJET=-2
76936           RETURN
76937         ENDIF
76938         NC=NC+1
76939         K(NC,3)=IETPH
76940         K(NC,4)=1
76941         K(NC,5)=2
76942         P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51))
76943         P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52))
76944         P(NC,5)=PT
76945   110 CONTINUE
76946  
76947 C...Smear true bin content by calorimeter resolution.
76948       IF(MSTU(53).GE.1) THEN
76949         DO 130 IC=N+1,NC
76950           PEI=P(IC,5)
76951           IF(MSTU(53).EQ.2) PEI=P(IC,5)*COSH(P(IC,1))
76952   120     PEF=PEI+PARU(55)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0)))*PEI)*
76953      &    COS(PARU(2)*PYR(0))
76954           IF(PEF.LT.0D0.OR.PEF.GT.PARU(56)*PEI) GOTO 120
76955           P(IC,5)=PEF
76956           IF(MSTU(53).EQ.2) P(IC,5)=PEF/COSH(P(IC,1))
76957   130   CONTINUE
76958       ENDIF
76959  
76960 C...Remove cells below threshold.
76961       IF(PARU(58).GT.0D0) THEN
76962         NCC=NC
76963         NC=N
76964         DO 140 IC=N+1,NCC
76965           IF(P(IC,5).GT.PARU(58)) THEN
76966             NC=NC+1
76967             K(NC,3)=K(IC,3)
76968             K(NC,4)=K(IC,4)
76969             K(NC,5)=K(IC,5)
76970             P(NC,1)=P(IC,1)
76971             P(NC,2)=P(IC,2)
76972             P(NC,5)=P(IC,5)
76973           ENDIF
76974   140   CONTINUE
76975       ENDIF
76976  
76977 C...Find initiator cell: the one with highest pT of not yet used ones.
76978       NJ=NC
76979   150 ETMAX=0D0
76980       DO 160 IC=N+1,NC
76981         IF(K(IC,5).NE.2) GOTO 160
76982         IF(P(IC,5).LE.ETMAX) GOTO 160
76983         ICMAX=IC
76984         ETA=P(IC,1)
76985         PHI=P(IC,2)
76986         ETMAX=P(IC,5)
76987   160 CONTINUE
76988       IF(ETMAX.LT.PARU(52)) GOTO 220
76989       IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN
76990         CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
76991         NJET=-2
76992         RETURN
76993       ENDIF
76994       K(ICMAX,5)=1
76995       NJ=NJ+1
76996       K(NJ,4)=0
76997       K(NJ,5)=1
76998       P(NJ,1)=ETA
76999       P(NJ,2)=PHI
77000       P(NJ,3)=0D0
77001       P(NJ,4)=0D0
77002       P(NJ,5)=0D0
77003  
77004 C...Sum up unused cells within required distance of initiator.
77005       DO 170 IC=N+1,NC
77006         IF(K(IC,5).EQ.0) GOTO 170
77007         IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170
77008         DPHIA=ABS(P(IC,2)-PHI)
77009         IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170
77010         PHIC=P(IC,2)
77011         IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI)
77012         IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170
77013         K(IC,5)=-K(IC,5)
77014         K(NJ,4)=K(NJ,4)+K(IC,4)
77015         P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1)
77016         P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC
77017         P(NJ,5)=P(NJ,5)+P(IC,5)
77018   170 CONTINUE
77019  
77020 C...Reject cluster below minimum ET, else accept.
77021       IF(P(NJ,5).LT.PARU(53)) THEN
77022         NJ=NJ-1
77023         DO 180 IC=N+1,NC
77024           IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5)
77025   180   CONTINUE
77026       ELSEIF(MSTU(54).LE.2) THEN
77027         P(NJ,3)=P(NJ,3)/P(NJ,5)
77028         P(NJ,4)=P(NJ,4)/P(NJ,5)
77029         IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2),
77030      &  P(NJ,4))
77031         DO 190 IC=N+1,NC
77032           IF(K(IC,5).LT.0) K(IC,5)=0
77033   190   CONTINUE
77034       ELSE
77035         DO 200 J=1,4
77036           P(NJ,J)=0D0
77037   200   CONTINUE
77038         DO 210 IC=N+1,NC
77039           IF(K(IC,5).GE.0) GOTO 210
77040           P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2))
77041           P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2))
77042           P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1))
77043           P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1))
77044           K(IC,5)=0
77045   210   CONTINUE
77046       ENDIF
77047       GOTO 150
77048  
77049 C...Arrange clusters in falling ET sequence.
77050   220 DO 250 I=1,NJ-NC
77051         ETMAX=0D0
77052         DO 230 IJ=NC+1,NJ
77053           IF(K(IJ,5).EQ.0) GOTO 230
77054           IF(P(IJ,5).LT.ETMAX) GOTO 230
77055           IJMAX=IJ
77056           ETMAX=P(IJ,5)
77057   230   CONTINUE
77058         K(IJMAX,5)=0
77059         K(N+I,1)=31
77060         K(N+I,2)=98
77061         K(N+I,3)=I
77062         K(N+I,4)=K(IJMAX,4)
77063         K(N+I,5)=0
77064         DO 240 J=1,5
77065           P(N+I,J)=P(IJMAX,J)
77066           V(N+I,J)=0D0
77067   240   CONTINUE
77068   250 CONTINUE
77069       NJET=NJ-NC
77070  
77071 C...Convert to massless or massive four-vectors.
77072       IF(MSTU(54).EQ.2) THEN
77073         DO 260 I=N+1,N+NJET
77074           ETA=P(I,3)
77075           P(I,1)=P(I,5)*COS(P(I,4))
77076           P(I,2)=P(I,5)*SIN(P(I,4))
77077           P(I,3)=P(I,5)*SINH(ETA)
77078           P(I,4)=P(I,5)*COSH(ETA)
77079           P(I,5)=0D0
77080   260   CONTINUE
77081       ELSEIF(MSTU(54).GE.3) THEN
77082         DO 270 I=N+1,N+NJET
77083           P(I,5)=SQRT(MAX(0D0,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2))
77084   270   CONTINUE
77085       ENDIF
77086  
77087 C...Information about storage.
77088       MSTU(61)=N+1
77089       MSTU(62)=NP
77090       MSTU(63)=NC-N
77091       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
77092       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
77093  
77094       RETURN
77095       END
77096  
77097 C*********************************************************************
77098  
77099 C...PYJMAS
77100 C...Determines, approximately, the two jet masses that minimize
77101 C...the sum m_H^2 + m_L^2, a la Clavelli and Wyler.
77102  
77103       SUBROUTINE PYJMAS(PMH,PML)
77104  
77105 C...Double precision and integer declarations.
77106       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77107       IMPLICIT INTEGER(I-N)
77108       INTEGER PYK,PYCHGE,PYCOMP
77109 C...Parameter statement to help give large particle numbers.
77110       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
77111      &KEXCIT=4000000,KDIMEN=5000000)
77112 C...Commonblocks.
77113       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
77114       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
77115       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
77116       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
77117 C...Local arrays.
77118       DIMENSION SM(3,3),SAX(3),PS(3,5)
77119  
77120 C...Reset.
77121       NP=0
77122       DO 120 J1=1,3
77123         DO 100 J2=J1,3
77124           SM(J1,J2)=0D0
77125   100   CONTINUE
77126         DO 110 J2=1,4
77127           PS(J1,J2)=0D0
77128   110   CONTINUE
77129   120 CONTINUE
77130       PSS=0D0
77131       PIMASS=PMAS(PYCOMP(211),1)
77132  
77133 C...Take copy of particles that are to be considered in mass analysis.
77134       DO 170 I=1,N
77135         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170
77136         IF(MSTU(41).GE.2) THEN
77137           KC=PYCOMP(K(I,2))
77138           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
77139      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
77140      &    K(I,2).EQ.KSUSY1+39) GOTO 170
77141           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
77142      &    GOTO 170
77143         ENDIF
77144         IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN
77145           CALL PYERRM(11,'(PYJMAS:) no more memory left in PYJETS')
77146           PMH=-2D0
77147           PML=-2D0
77148           RETURN
77149         ENDIF
77150         NP=NP+1
77151         DO 130 J=1,5
77152           P(N+NP,J)=P(I,J)
77153   130   CONTINUE
77154         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
77155         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
77156         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
77157  
77158 C...Fill information in sphericity tensor and total momentum vector.
77159         DO 150 J1=1,3
77160           DO 140 J2=J1,3
77161             SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2)
77162   140     CONTINUE
77163   150   CONTINUE
77164         PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2)
77165         DO 160 J=1,4
77166           PS(3,J)=PS(3,J)+P(N+NP,J)
77167   160   CONTINUE
77168   170 CONTINUE
77169  
77170 C...Very low multiplicities (0 or 1) not considered.
77171       IF(NP.LE.1) THEN
77172         CALL PYERRM(8,'(PYJMAS:) too few particles for analysis')
77173         PMH=-1D0
77174         PML=-1D0
77175         RETURN
77176       ENDIF
77177       PARU(61)=SQRT(MAX(0D0,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-
77178      &PS(3,3)**2))
77179  
77180 C...Find largest eigenvalue to matrix (third degree equation).
77181       DO 190 J1=1,3
77182         DO 180 J2=J1,3
77183           SM(J1,J2)=SM(J1,J2)/PSS
77184   180   CONTINUE
77185   190 CONTINUE
77186       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
77187      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
77188       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
77189      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
77190      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
77191       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
77192       SMA=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
77193  
77194 C...Find largest eigenvector by solving equation system.
77195       DO 210 J1=1,3
77196         SM(J1,J1)=SM(J1,J1)-SMA
77197         DO 200 J2=J1+1,3
77198           SM(J2,J1)=SM(J1,J2)
77199   200   CONTINUE
77200   210 CONTINUE
77201       SMAX=0D0
77202       DO 230 J1=1,3
77203         DO 220 J2=1,3
77204           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220
77205           JA=J1
77206           JB=J2
77207           SMAX=ABS(SM(J1,J2))
77208   220   CONTINUE
77209   230 CONTINUE
77210       SMAX=0D0
77211       DO 250 J3=JA+1,JA+2
77212         J1=J3-3*((J3-1)/3)
77213         RL=SM(J1,JB)/SM(JA,JB)
77214         DO 240 J2=1,3
77215           SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2)
77216           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240
77217           JC=J1
77218           SMAX=ABS(SM(J1,J2))
77219   240   CONTINUE
77220   250 CONTINUE
77221       JB1=JB+1-3*(JB/3)
77222       JB2=JB+2-3*((JB+1)/3)
77223       SAX(JB1)=-SM(JC,JB2)
77224       SAX(JB2)=SM(JC,JB1)
77225       SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB)
77226  
77227 C...Divide particles into two initial clusters by hemisphere.
77228       DO 270 I=N+1,N+NP
77229         PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3)
77230         IS=1
77231         IF(PSAX.LT.0D0) IS=2
77232         K(I,3)=IS
77233         DO 260 J=1,4
77234           PS(IS,J)=PS(IS,J)+P(I,J)
77235   260   CONTINUE
77236   270 CONTINUE
77237       PMS=MAX(1D-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+
77238      &MAX(1D-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)
77239  
77240 C...Reassign one particle at a time; find maximum decrease of m^2 sum.
77241   280 PMD=0D0
77242       IM=0
77243       DO 290 J=1,4
77244         PS(3,J)=PS(1,J)-PS(2,J)
77245   290 CONTINUE
77246       DO 300 I=N+1,N+NP
77247         PPS=P(I,4)*PS(3,4)-P(I,1)*PS(3,1)-P(I,2)*PS(3,2)-P(I,3)*PS(3,3)
77248         IF(K(I,3).EQ.1) PMDI=2D0*(P(I,5)**2-PPS)
77249         IF(K(I,3).EQ.2) PMDI=2D0*(P(I,5)**2+PPS)
77250         IF(PMDI.LT.PMD) THEN
77251           PMD=PMDI
77252           IM=I
77253         ENDIF
77254   300 CONTINUE
77255  
77256 C...Loop back if significant reduction in sum of m^2.
77257       IF(PMD.LT.-PARU(48)*PMS) THEN
77258         PMS=PMS+PMD
77259         IS=K(IM,3)
77260         DO 310 J=1,4
77261           PS(IS,J)=PS(IS,J)-P(IM,J)
77262           PS(3-IS,J)=PS(3-IS,J)+P(IM,J)
77263   310   CONTINUE
77264         K(IM,3)=3-IS
77265         GOTO 280
77266       ENDIF
77267  
77268 C...Final masses and output.
77269       MSTU(61)=N+1
77270       MSTU(62)=NP
77271       PS(1,5)=SQRT(MAX(0D0,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2))
77272       PS(2,5)=SQRT(MAX(0D0,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2))
77273       PMH=MAX(PS(1,5),PS(2,5))
77274       PML=MIN(PS(1,5),PS(2,5))
77275  
77276       RETURN
77277       END
77278  
77279 C*********************************************************************
77280  
77281 C...PYFOWO
77282 C...Calculates the first few Fox-Wolfram moments.
77283  
77284       SUBROUTINE PYFOWO(H10,H20,H30,H40)
77285  
77286 C...Double precision and integer declarations.
77287       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77288       IMPLICIT INTEGER(I-N)
77289       INTEGER PYK,PYCHGE,PYCOMP
77290 C...Parameter statement to help give large particle numbers.
77291       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
77292      &KEXCIT=4000000,KDIMEN=5000000)
77293 C...Commonblocks.
77294       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
77295       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
77296       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
77297       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
77298  
77299 C...Copy momenta for particles and calculate H0.
77300       NP=0
77301       H0=0D0
77302       HD=0D0
77303       DO 110 I=1,N
77304         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
77305         IF(MSTU(41).GE.2) THEN
77306           KC=PYCOMP(K(I,2))
77307           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
77308      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
77309      &    K(I,2).EQ.KSUSY1+39) GOTO 110
77310           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
77311      &    GOTO 110
77312         ENDIF
77313         IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN
77314           CALL PYERRM(11,'(PYFOWO:) no more memory left in PYJETS')
77315           H10=-1D0
77316           H20=-1D0
77317           H30=-1D0
77318           H40=-1D0
77319           RETURN
77320         ENDIF
77321         NP=NP+1
77322         DO 100 J=1,3
77323           P(N+NP,J)=P(I,J)
77324   100   CONTINUE
77325         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
77326         H0=H0+P(N+NP,4)
77327         HD=HD+P(N+NP,4)**2
77328   110 CONTINUE
77329       H0=H0**2
77330  
77331 C...Very low multiplicities (0 or 1) not considered.
77332       IF(NP.LE.1) THEN
77333         CALL PYERRM(8,'(PYFOWO:) too few particles for analysis')
77334         H10=-1D0
77335         H20=-1D0
77336         H30=-1D0
77337         H40=-1D0
77338         RETURN
77339       ENDIF
77340  
77341 C...Calculate H1 - H4.
77342       H10=0D0
77343       H20=0D0
77344       H30=0D0
77345       H40=0D0
77346       DO 130 I1=N+1,N+NP
77347         DO 120 I2=I1+1,N+NP
77348           CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
77349      &    (P(I1,4)*P(I2,4))
77350           H10=H10+P(I1,4)*P(I2,4)*CTHE
77351           H20=H20+P(I1,4)*P(I2,4)*(1.5D0*CTHE**2-0.5D0)
77352           H30=H30+P(I1,4)*P(I2,4)*(2.5D0*CTHE**3-1.5D0*CTHE)
77353           H40=H40+P(I1,4)*P(I2,4)*(4.375D0*CTHE**4-3.75D0*CTHE**2+
77354      &    0.375D0)
77355   120   CONTINUE
77356   130 CONTINUE
77357  
77358 C...Calculate H1/H0 - H4/H0. Output.
77359       MSTU(61)=N+1
77360       MSTU(62)=NP
77361       H10=(HD+2D0*H10)/H0
77362       H20=(HD+2D0*H20)/H0
77363       H30=(HD+2D0*H30)/H0
77364       H40=(HD+2D0*H40)/H0
77365  
77366       RETURN
77367       END
77368  
77369 C*********************************************************************
77370  
77371 C...PYTABU
77372 C...Evaluates various properties of an event, with statistics
77373 C...accumulated during the course of the run and
77374 C...printed at the end.
77375  
77376       SUBROUTINE PYTABU(MTABU)
77377  
77378 C...Double precision and integer declarations.
77379       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77380       IMPLICIT INTEGER(I-N)
77381       INTEGER PYK,PYCHGE,PYCOMP
77382 C...Parameter statement to help give large particle numbers.
77383       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
77384      &KEXCIT=4000000,KDIMEN=5000000)
77385 C...Commonblocks.
77386       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
77387       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
77388       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
77389       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
77390       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
77391 C...Local arrays, character variables, saved variables and data.
77392       DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4),
77393      &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4),
77394      &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25),
77395      &KFDM(8),KFDC(200,0:8),NPDC(200)
77396       SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS,
77397      &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA,
77398      &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC
77399       CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12
77400       DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/,
77401      &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0D0/,FM2FM/120*0D0/,
77402      &NEVEE/0/,FE1EC/50*0D0/,FE2EC/50*0D0/,FE1EA/25*0D0/,FE2EA/25*0D0/,
77403      &NEVDC/0/,NKFDC/0/,NREDC/0/
77404  
77405 C...Reset statistics on initial parton state.
77406       IF(MTABU.EQ.10) THEN
77407         NEVIS=0
77408         NKFIS=0
77409  
77410 C...Identify and order flavour content of initial state.
77411       ELSEIF(MTABU.EQ.11) THEN
77412         NEVIS=NEVIS+1
77413         KFM1=2*IABS(MSTU(161))
77414         IF(MSTU(161).GT.0) KFM1=KFM1-1
77415         KFM2=2*IABS(MSTU(162))
77416         IF(MSTU(162).GT.0) KFM2=KFM2-1
77417         KFMN=MIN(KFM1,KFM2)
77418         KFMX=MAX(KFM1,KFM2)
77419         DO 100 I=1,NKFIS
77420           IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN
77421             IKFIS=-I
77422             GOTO 110
77423           ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND.
77424      &      KFMX.LT.KFIS(I,2))) THEN
77425             IKFIS=I
77426             GOTO 110
77427           ENDIF
77428   100   CONTINUE
77429         IKFIS=NKFIS+1
77430   110   IF(IKFIS.LT.0) THEN
77431           IKFIS=-IKFIS
77432         ELSE
77433           IF(NKFIS.GE.100) RETURN
77434           DO 130 I=NKFIS,IKFIS,-1
77435             KFIS(I+1,1)=KFIS(I,1)
77436             KFIS(I+1,2)=KFIS(I,2)
77437             DO 120 J=0,10
77438               NPIS(I+1,J)=NPIS(I,J)
77439   120       CONTINUE
77440   130     CONTINUE
77441           NKFIS=NKFIS+1
77442           KFIS(IKFIS,1)=KFMN
77443           KFIS(IKFIS,2)=KFMX
77444           DO 140 J=0,10
77445             NPIS(IKFIS,J)=0
77446   140     CONTINUE
77447         ENDIF
77448         NPIS(IKFIS,0)=NPIS(IKFIS,0)+1
77449  
77450 C...Count number of partons in initial state.
77451         NP=0
77452         DO 160 I=1,N
77453           IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN
77454           ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN
77455           ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0)
77456      &      THEN
77457           ELSE
77458             IM=I
77459   150       IM=K(IM,3)
77460             IF(IM.LE.0.OR.IM.GT.N) THEN
77461               NP=NP+1
77462             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
77463               NP=NP+1
77464             ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN
77465             ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10)
77466      &        .NE.0) THEN
77467             ELSE
77468               GOTO 150
77469             ENDIF
77470           ENDIF
77471   160   CONTINUE
77472         NPCO=MAX(NP,1)
77473         IF(NP.GE.6) NPCO=6
77474         IF(NP.GE.8) NPCO=7
77475         IF(NP.GE.11) NPCO=8
77476         IF(NP.GE.16) NPCO=9
77477         IF(NP.GE.26) NPCO=10
77478         NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1
77479         MSTU(62)=NP
77480  
77481 C...Write statistics on initial parton state.
77482       ELSEIF(MTABU.EQ.12) THEN
77483         FAC=1D0/MAX(1,NEVIS)
77484         WRITE(MSTU(11),5000) NEVIS
77485         DO 170 I=1,NKFIS
77486           KFMN=KFIS(I,1)
77487           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
77488           KFM1=(KFMN+1)/2
77489           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
77490           CALL PYNAME(KFM1,CHAU)
77491           CHIS(1)=CHAU(1:12)
77492           IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?'
77493           KFMX=KFIS(I,2)
77494           IF(KFIS(I,1).EQ.0) KFMX=0
77495           KFM2=(KFMX+1)/2
77496           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
77497           CALL PYNAME(KFM2,CHAU)
77498           CHIS(2)=CHAU(1:12)
77499           IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?'
77500           WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0),
77501      &    (NPIS(I,J)/DBLE(NPIS(I,0)),J=1,10)
77502   170   CONTINUE
77503  
77504 C...Copy statistics on initial parton state into /PYJETS/.
77505       ELSEIF(MTABU.EQ.13) THEN
77506         FAC=1D0/MAX(1,NEVIS)
77507         DO 190 I=1,NKFIS
77508           KFMN=KFIS(I,1)
77509           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
77510           KFM1=(KFMN+1)/2
77511           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
77512           KFMX=KFIS(I,2)
77513           IF(KFIS(I,1).EQ.0) KFMX=0
77514           KFM2=(KFMX+1)/2
77515           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
77516           K(I,1)=32
77517           K(I,2)=99
77518           K(I,3)=KFM1
77519           K(I,4)=KFM2
77520           K(I,5)=NPIS(I,0)
77521           DO 180 J=1,5
77522             P(I,J)=FAC*NPIS(I,J)
77523             V(I,J)=FAC*NPIS(I,J+5)
77524   180     CONTINUE
77525   190   CONTINUE
77526         N=NKFIS
77527         DO 200 J=1,5
77528           K(N+1,J)=0
77529           P(N+1,J)=0D0
77530           V(N+1,J)=0D0
77531   200   CONTINUE
77532         K(N+1,1)=32
77533         K(N+1,2)=99
77534         K(N+1,5)=NEVIS
77535         MSTU(3)=1
77536  
77537 C...Reset statistics on number of particles/partons.
77538       ELSEIF(MTABU.EQ.20) THEN
77539         NEVFS=0
77540         NPRFS=0
77541         NFIFS=0
77542         NCHFS=0
77543         NKFFS=0
77544  
77545 C...Identify whether particle/parton is primary or not.
77546       ELSEIF(MTABU.EQ.21) THEN
77547         NEVFS=NEVFS+1
77548         MSTU(62)=0
77549         DO 260 I=1,N
77550           IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260
77551           MSTU(62)=MSTU(62)+1
77552           KC=PYCOMP(K(I,2))
77553           MPRI=0
77554           IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN
77555             MPRI=1
77556           ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN
77557             MPRI=1
77558           ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN
77559             MPRI=1
77560           ELSEIF(KC.EQ.0) THEN
77561           ELSEIF(K(K(I,3),1).EQ.13) THEN
77562             IM=K(K(I,3),3)
77563             IF(IM.LE.0.OR.IM.GT.N) THEN
77564               MPRI=1
77565             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
77566               MPRI=1
77567             ENDIF
77568           ELSEIF(KCHG(KC,2).EQ.0) THEN
77569             KCM=PYCOMP(K(K(I,3),2))
77570             IF(KCM.NE.0) THEN
77571               IF(KCHG(KCM,2).NE.0) MPRI=1
77572             ENDIF
77573           ENDIF
77574           IF(KC.NE.0.AND.MPRI.EQ.1) THEN
77575             IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1
77576           ENDIF
77577           IF(K(I,1).LE.10) THEN
77578             NFIFS=NFIFS+1
77579             IF(PYCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1
77580           ENDIF
77581  
77582 C...Fill statistics on number of particles/partons in event.
77583           KFA=IABS(K(I,2))
77584           KFS=3-ISIGN(1,K(I,2))-MPRI
77585           DO 210 IP=1,NKFFS
77586             IF(KFA.EQ.KFFS(IP)) THEN
77587               IKFFS=-IP
77588               GOTO 220
77589             ELSEIF(KFA.LT.KFFS(IP)) THEN
77590               IKFFS=IP
77591               GOTO 220
77592             ENDIF
77593   210     CONTINUE
77594           IKFFS=NKFFS+1
77595   220     IF(IKFFS.LT.0) THEN
77596             IKFFS=-IKFFS
77597           ELSE
77598             IF(NKFFS.GE.400) RETURN
77599             DO 240 IP=NKFFS,IKFFS,-1
77600               KFFS(IP+1)=KFFS(IP)
77601               DO 230 J=1,4
77602                 NPFS(IP+1,J)=NPFS(IP,J)
77603   230         CONTINUE
77604   240       CONTINUE
77605             NKFFS=NKFFS+1
77606             KFFS(IKFFS)=KFA
77607             DO 250 J=1,4
77608               NPFS(IKFFS,J)=0
77609   250       CONTINUE
77610           ENDIF
77611           NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1
77612   260   CONTINUE
77613  
77614 C...Write statistics on particle/parton composition of events.
77615       ELSEIF(MTABU.EQ.22) THEN
77616         FAC=1D0/MAX(1,NEVFS)
77617         WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS
77618         DO 270 I=1,NKFFS
77619           CALL PYNAME(KFFS(I),CHAU)
77620           KC=PYCOMP(KFFS(I))
77621           MDCYF=0
77622           IF(KC.NE.0) MDCYF=MDCY(KC,1)
77623           WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4),
77624      &    FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4))
77625   270   CONTINUE
77626  
77627 C...Copy particle/parton composition information into /PYJETS/.
77628       ELSEIF(MTABU.EQ.23) THEN
77629         FAC=1D0/MAX(1,NEVFS)
77630         DO 290 I=1,NKFFS
77631           K(I,1)=32
77632           K(I,2)=99
77633           K(I,3)=KFFS(I)
77634           K(I,4)=0
77635           K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)
77636           DO 280 J=1,4
77637             P(I,J)=FAC*NPFS(I,J)
77638             V(I,J)=0D0
77639   280     CONTINUE
77640           P(I,5)=FAC*K(I,5)
77641           V(I,5)=0D0
77642   290   CONTINUE
77643         N=NKFFS
77644         DO 300 J=1,5
77645           K(N+1,J)=0
77646           P(N+1,J)=0D0
77647           V(N+1,J)=0D0
77648   300   CONTINUE
77649         K(N+1,1)=32
77650         K(N+1,2)=99
77651         K(N+1,5)=NEVFS
77652         P(N+1,1)=FAC*NPRFS
77653         P(N+1,2)=FAC*NFIFS
77654         P(N+1,3)=FAC*NCHFS
77655         MSTU(3)=1
77656  
77657 C...Reset factorial moments statistics.
77658       ELSEIF(MTABU.EQ.30) THEN
77659         NEVFM=0
77660         NMUFM=0
77661         DO 330 IM=1,3
77662           DO 320 IB=1,10
77663             DO 310 IP=1,4
77664               FM1FM(IM,IB,IP)=0D0
77665               FM2FM(IM,IB,IP)=0D0
77666   310       CONTINUE
77667   320     CONTINUE
77668   330   CONTINUE
77669  
77670 C...Find particles to include, with (pion,pseudo)rapidity and azimuth.
77671       ELSEIF(MTABU.EQ.31) THEN
77672         NEVFM=NEVFM+1
77673         NLOW=N+MSTU(3)
77674         NUPP=NLOW
77675         DO 410 I=1,N
77676           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410
77677           IF(MSTU(41).GE.2) THEN
77678             KC=PYCOMP(K(I,2))
77679             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
77680      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
77681      &      K(I,2).EQ.KSUSY1+39) GOTO 410
77682             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
77683      &      PYCHGE(K(I,2)).EQ.0) GOTO 410
77684           ENDIF
77685           PMR=0D0
77686           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
77687           IF(MSTU(42).GE.2) PMR=P(I,5)
77688           PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
77689           YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
77690      &    1D20)),P(I,3))
77691           IF(ABS(YETA).GT.PARU(57)) GOTO 410
77692           PHI=PYANGL(P(I,1),P(I,2))
77693           IYETA=512D0*(YETA+PARU(57))/(2D0*PARU(57))
77694           IYETA=MAX(0,MIN(511,IYETA))
77695           IPHI=512D0*(PHI+PARU(1))/PARU(2)
77696           IPHI=MAX(0,MIN(511,IPHI))
77697           IYEP=0
77698           DO 340 IB=0,9
77699             IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2))
77700   340     CONTINUE
77701  
77702 C...Order particles in (pseudo)rapidity and/or azimuth.
77703           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
77704             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
77705             RETURN
77706           ENDIF
77707           NUPP=NUPP+1
77708           IF(NUPP.EQ.NLOW+1) THEN
77709             K(NUPP,1)=IYETA
77710             K(NUPP,2)=IPHI
77711             K(NUPP,3)=IYEP
77712           ELSE
77713             DO 350 I1=NUPP-1,NLOW+1,-1
77714               IF(IYETA.GE.K(I1,1)) GOTO 360
77715               K(I1+1,1)=K(I1,1)
77716   350       CONTINUE
77717   360       K(I1+1,1)=IYETA
77718             DO 370 I1=NUPP-1,NLOW+1,-1
77719               IF(IPHI.GE.K(I1,2)) GOTO 380
77720               K(I1+1,2)=K(I1,2)
77721   370       CONTINUE
77722   380       K(I1+1,2)=IPHI
77723             DO 390 I1=NUPP-1,NLOW+1,-1
77724               IF(IYEP.GE.K(I1,3)) GOTO 400
77725               K(I1+1,3)=K(I1,3)
77726   390       CONTINUE
77727   400       K(I1+1,3)=IYEP
77728           ENDIF
77729   410   CONTINUE
77730         K(NUPP+1,1)=2**10
77731         K(NUPP+1,2)=2**10
77732         K(NUPP+1,3)=4**10
77733  
77734 C...Calculate sum of factorial moments in event.
77735         DO 480 IM=1,3
77736           DO 430 IB=1,10
77737             DO 420 IP=1,4
77738               FEVFM(IB,IP)=0D0
77739   420       CONTINUE
77740   430     CONTINUE
77741           DO 450 IB=1,10
77742             IF(IM.LE.2) IBIN=2**(10-IB)
77743             IF(IM.EQ.3) IBIN=4**(10-IB)
77744             IAGR=K(NLOW+1,IM)/IBIN
77745             NAGR=1
77746             DO 440 I=NLOW+2,NUPP+1
77747               ICUT=K(I,IM)/IBIN
77748               IF(ICUT.EQ.IAGR) THEN
77749                 NAGR=NAGR+1
77750               ELSE
77751                 IF(NAGR.EQ.1) THEN
77752                 ELSEIF(NAGR.EQ.2) THEN
77753                   FEVFM(IB,1)=FEVFM(IB,1)+2D0
77754                 ELSEIF(NAGR.EQ.3) THEN
77755                   FEVFM(IB,1)=FEVFM(IB,1)+6D0
77756                   FEVFM(IB,2)=FEVFM(IB,2)+6D0
77757                 ELSEIF(NAGR.EQ.4) THEN
77758                   FEVFM(IB,1)=FEVFM(IB,1)+12D0
77759                   FEVFM(IB,2)=FEVFM(IB,2)+24D0
77760                   FEVFM(IB,3)=FEVFM(IB,3)+24D0
77761                 ELSE
77762                   FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1D0)
77763                   FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1D0)*(NAGR-2D0)
77764                   FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
77765      &            (NAGR-3D0)
77766                   FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
77767      &            (NAGR-3D0)*(NAGR-4D0)
77768                 ENDIF
77769                 IAGR=ICUT
77770                 NAGR=1
77771               ENDIF
77772   440       CONTINUE
77773   450     CONTINUE
77774  
77775 C...Add results to total statistics.
77776           DO 470 IB=10,1,-1
77777             DO 460 IP=1,4
77778               IF(FEVFM(1,IP).LT.0.5D0) THEN
77779                 FEVFM(IB,IP)=0D0
77780               ELSEIF(IM.LE.2) THEN
77781                 FEVFM(IB,IP)=2D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
77782               ELSE
77783                 FEVFM(IB,IP)=4D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
77784               ENDIF
77785               FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP)
77786               FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2
77787   460       CONTINUE
77788   470     CONTINUE
77789   480   CONTINUE
77790         NMUFM=NMUFM+(NUPP-NLOW)
77791         MSTU(62)=NUPP-NLOW
77792  
77793 C...Write accumulated statistics on factorial moments.
77794       ELSEIF(MTABU.EQ.32) THEN
77795         FAC=1D0/MAX(1,NEVFM)
77796         IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta'
77797         IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi'
77798         IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  '
77799         DO 510 IM=1,3
77800           WRITE(MSTU(11),5500)
77801           DO 500 IB=1,10
77802             BYETA=2D0*PARU(57)
77803             IF(IM.NE.2) BYETA=BYETA/2**(IB-1)
77804             BPHI=PARU(2)
77805             IF(IM.NE.1) BPHI=BPHI/2**(IB-1)
77806             IF(IM.LE.2) BNAVE=FAC*NMUFM/DBLE(2**(IB-1))
77807             IF(IM.EQ.3) BNAVE=FAC*NMUFM/DBLE(4**(IB-1))
77808             DO 490 IP=1,4
77809               FMOMA(IP)=FAC*FM1FM(IM,IB,IP)
77810               FMOMS(IP)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
77811      &        FMOMA(IP)**2)))
77812   490       CONTINUE
77813             WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP),
77814      &      IP=1,4)
77815   500     CONTINUE
77816   510   CONTINUE
77817  
77818 C...Copy statistics on factorial moments into /PYJETS/.
77819       ELSEIF(MTABU.EQ.33) THEN
77820         FAC=1D0/MAX(1,NEVFM)
77821         DO 540 IM=1,3
77822           DO 530 IB=1,10
77823             I=10*(IM-1)+IB
77824             K(I,1)=32
77825             K(I,2)=99
77826             K(I,3)=1
77827             IF(IM.NE.2) K(I,3)=2**(IB-1)
77828             K(I,4)=1
77829             IF(IM.NE.1) K(I,4)=2**(IB-1)
77830             K(I,5)=0
77831             P(I,1)=2D0*PARU(57)/K(I,3)
77832             V(I,1)=PARU(2)/K(I,4)
77833             DO 520 IP=1,4
77834               P(I,IP+1)=FAC*FM1FM(IM,IB,IP)
77835               V(I,IP+1)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
77836      &        P(I,IP+1)**2)))
77837   520       CONTINUE
77838   530     CONTINUE
77839   540   CONTINUE
77840         N=30
77841         DO 550 J=1,5
77842           K(N+1,J)=0
77843           P(N+1,J)=0D0
77844           V(N+1,J)=0D0
77845   550   CONTINUE
77846         K(N+1,1)=32
77847         K(N+1,2)=99
77848         K(N+1,5)=NEVFM
77849         MSTU(3)=1
77850  
77851 C...Reset statistics on Energy-Energy Correlation.
77852       ELSEIF(MTABU.EQ.40) THEN
77853         NEVEE=0
77854         DO 560 J=1,25
77855           FE1EC(J)=0D0
77856           FE2EC(J)=0D0
77857           FE1EC(51-J)=0D0
77858           FE2EC(51-J)=0D0
77859           FE1EA(J)=0D0
77860           FE2EA(J)=0D0
77861   560   CONTINUE
77862  
77863 C...Find particles to include, with proper assumed mass.
77864       ELSEIF(MTABU.EQ.41) THEN
77865         NEVEE=NEVEE+1
77866         NLOW=N+MSTU(3)
77867         NUPP=NLOW
77868         ECM=0D0
77869         DO 570 I=1,N
77870           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570
77871           IF(MSTU(41).GE.2) THEN
77872             KC=PYCOMP(K(I,2))
77873             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
77874      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
77875      &      K(I,2).EQ.KSUSY1+39) GOTO 570
77876             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
77877      &      PYCHGE(K(I,2)).EQ.0) GOTO 570
77878           ENDIF
77879           PMR=0D0
77880           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
77881           IF(MSTU(42).GE.2) PMR=P(I,5)
77882           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
77883             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
77884             RETURN
77885           ENDIF
77886           NUPP=NUPP+1
77887           P(NUPP,1)=P(I,1)
77888           P(NUPP,2)=P(I,2)
77889           P(NUPP,3)=P(I,3)
77890           P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
77891           P(NUPP,5)=MAX(1D-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2))
77892           ECM=ECM+P(NUPP,4)
77893   570   CONTINUE
77894         IF(NUPP.EQ.NLOW) RETURN
77895  
77896 C...Analyze Energy-Energy Correlation in event.
77897         FAC=(2D0/ECM**2)*50D0/PARU(1)
77898         DO 580 J=1,50
77899           FEVEE(J)=0D0
77900   580   CONTINUE
77901         DO 600 I1=NLOW+2,NUPP
77902           DO 590 I2=NLOW+1,I1-1
77903             CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
77904      &      (P(I1,5)*P(I2,5))
77905             THE=ACOS(MAX(-1D0,MIN(1D0,CTHE)))
77906             ITHE=MAX(1,MIN(50,1+INT(50D0*THE/PARU(1))))
77907             FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4)
77908   590     CONTINUE
77909   600   CONTINUE
77910         DO 610 J=1,25
77911           FE1EC(J)=FE1EC(J)+FEVEE(J)
77912           FE2EC(J)=FE2EC(J)+FEVEE(J)**2
77913           FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J)
77914           FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2
77915           FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J))
77916           FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2
77917   610   CONTINUE
77918         MSTU(62)=NUPP-NLOW
77919  
77920 C...Write statistics on Energy-Energy Correlation.
77921       ELSEIF(MTABU.EQ.42) THEN
77922         FAC=1D0/MAX(1,NEVEE)
77923         WRITE(MSTU(11),5700) NEVEE
77924         DO 620 J=1,25
77925           FEEC1=FAC*FE1EC(J)
77926           FEES1=SQRT(MAX(0D0,FAC*(FAC*FE2EC(J)-FEEC1**2)))
77927           FEEC2=FAC*FE1EC(51-J)
77928           FEES2=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-J)-FEEC2**2)))
77929           FEECA=FAC*FE1EA(J)
77930           FEESA=SQRT(MAX(0D0,FAC*(FAC*FE2EA(J)-FEECA**2)))
77931           WRITE(MSTU(11),5800) 3.6D0*(J-1),3.6D0*J,FEEC1,FEES1,
77932      &    FEEC2,FEES2,FEECA,FEESA
77933   620   CONTINUE
77934  
77935 C...Copy statistics on Energy-Energy Correlation into /PYJETS/.
77936       ELSEIF(MTABU.EQ.43) THEN
77937         FAC=1D0/MAX(1,NEVEE)
77938         DO 630 I=1,25
77939           K(I,1)=32
77940           K(I,2)=99
77941           K(I,3)=0
77942           K(I,4)=0
77943           K(I,5)=0
77944           P(I,1)=FAC*FE1EC(I)
77945           V(I,1)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(I)-P(I,1)**2)))
77946           P(I,2)=FAC*FE1EC(51-I)
77947           V(I,2)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-I)-P(I,2)**2)))
77948           P(I,3)=FAC*FE1EA(I)
77949           V(I,3)=SQRT(MAX(0D0,FAC*(FAC*FE2EA(I)-P(I,3)**2)))
77950           P(I,4)=PARU(1)*(I-1)/50D0
77951           P(I,5)=PARU(1)*I/50D0
77952           V(I,4)=3.6D0*(I-1)
77953           V(I,5)=3.6D0*I
77954   630   CONTINUE
77955         N=25
77956         DO 640 J=1,5
77957           K(N+1,J)=0
77958           P(N+1,J)=0D0
77959           V(N+1,J)=0D0
77960   640   CONTINUE
77961         K(N+1,1)=32
77962         K(N+1,2)=99
77963         K(N+1,5)=NEVEE
77964         MSTU(3)=1
77965  
77966 C...Reset statistics on decay channels.
77967       ELSEIF(MTABU.EQ.50) THEN
77968         NEVDC=0
77969         NKFDC=0
77970         NREDC=0
77971  
77972 C...Identify and order flavour content of final state.
77973       ELSEIF(MTABU.EQ.51) THEN
77974         NEVDC=NEVDC+1
77975         NDS=0
77976         DO 670 I=1,N
77977           IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670
77978           NDS=NDS+1
77979           IF(NDS.GT.8) THEN
77980             NREDC=NREDC+1
77981             RETURN
77982           ENDIF
77983           KFM=2*IABS(K(I,2))
77984           IF(K(I,2).LT.0) KFM=KFM-1
77985           DO 650 IDS=NDS-1,1,-1
77986             IIN=IDS+1
77987             IF(KFM.LT.KFDM(IDS)) GOTO 660
77988             KFDM(IDS+1)=KFDM(IDS)
77989   650     CONTINUE
77990           IIN=1
77991   660     KFDM(IIN)=KFM
77992   670   CONTINUE
77993  
77994 C...Find whether old or new final state.
77995         DO 690 IDC=1,NKFDC
77996           IF(NDS.LT.KFDC(IDC,0)) THEN
77997             IKFDC=IDC
77998             GOTO 700
77999           ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN
78000             DO 680 I=1,NDS
78001               IF(KFDM(I).LT.KFDC(IDC,I)) THEN
78002                 IKFDC=IDC
78003                 GOTO 700
78004               ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN
78005                 GOTO 690
78006               ENDIF
78007   680       CONTINUE
78008             IKFDC=-IDC
78009             GOTO 700
78010           ENDIF
78011   690   CONTINUE
78012         IKFDC=NKFDC+1
78013   700   IF(IKFDC.LT.0) THEN
78014           IKFDC=-IKFDC
78015         ELSEIF(NKFDC.GE.200) THEN
78016           NREDC=NREDC+1
78017           RETURN
78018         ELSE
78019           DO 720 IDC=NKFDC,IKFDC,-1
78020             NPDC(IDC+1)=NPDC(IDC)
78021             DO 710 I=0,8
78022               KFDC(IDC+1,I)=KFDC(IDC,I)
78023   710       CONTINUE
78024   720     CONTINUE
78025           NKFDC=NKFDC+1
78026           KFDC(IKFDC,0)=NDS
78027           DO 730 I=1,NDS
78028             KFDC(IKFDC,I)=KFDM(I)
78029   730     CONTINUE
78030           NPDC(IKFDC)=0
78031         ENDIF
78032         NPDC(IKFDC)=NPDC(IKFDC)+1
78033  
78034 C...Write statistics on decay channels.
78035       ELSEIF(MTABU.EQ.52) THEN
78036         FAC=1D0/MAX(1,NEVDC)
78037         WRITE(MSTU(11),5900) NEVDC
78038         DO 750 IDC=1,NKFDC
78039           DO 740 I=1,KFDC(IDC,0)
78040             KFM=KFDC(IDC,I)
78041             KF=(KFM+1)/2
78042             IF(2*KF.NE.KFM) KF=-KF
78043             CALL PYNAME(KF,CHAU)
78044             CHDC(I)=CHAU(1:12)
78045             IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?'
78046   740     CONTINUE
78047           WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0))
78048   750   CONTINUE
78049         IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC
78050  
78051 C...Copy statistics on decay channels into /PYJETS/.
78052       ELSEIF(MTABU.EQ.53) THEN
78053         FAC=1D0/MAX(1,NEVDC)
78054         DO 780 IDC=1,NKFDC
78055           K(IDC,1)=32
78056           K(IDC,2)=99
78057           K(IDC,3)=0
78058           K(IDC,4)=0
78059           K(IDC,5)=KFDC(IDC,0)
78060           DO 760 J=1,5
78061             P(IDC,J)=0D0
78062             V(IDC,J)=0D0
78063   760     CONTINUE
78064           DO 770 I=1,KFDC(IDC,0)
78065             KFM=KFDC(IDC,I)
78066             KF=(KFM+1)/2
78067             IF(2*KF.NE.KFM) KF=-KF
78068             IF(I.LE.5) P(IDC,I)=KF
78069             IF(I.GE.6) V(IDC,I-5)=KF
78070   770     CONTINUE
78071           V(IDC,5)=FAC*NPDC(IDC)
78072   780   CONTINUE
78073         N=NKFDC
78074         DO 790 J=1,5
78075           K(N+1,J)=0
78076           P(N+1,J)=0D0
78077           V(N+1,J)=0D0
78078   790   CONTINUE
78079         K(N+1,1)=32
78080         K(N+1,2)=99
78081         K(N+1,5)=NEVDC
78082         V(N+1,5)=FAC*NREDC
78083         MSTU(3)=1
78084       ENDIF
78085  
78086 C...Format statements for output on unit MSTU(11) (default 6).
78087  5000 FORMAT(///20X,'Event statistics - initial state'/
78088      &20X,'based on an analysis of ',I6,' events'//
78089      &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ',
78090      &'according to fragmenting system multiplicity'/
78091      &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5',
78092      &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/)
78093  5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4)
78094  5200 FORMAT(///20X,'Event statistics - final state'/
78095      &20X,'based on an analysis of ',I7,' events'//
78096      &5X,'Mean primary multiplicity =',F10.4/
78097      &5X,'Mean final   multiplicity =',F10.4/
78098      &5X,'Mean charged multiplicity =',F10.4//
78099      &5X,'Number of particles produced per event (directly and via ',
78100      &'decays/branchings)'/
78101      &8X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles',
78102      &8X,'Total'/35X,'prim        seco        prim        seco'/)
78103  5300 FORMAT(1X,I9,4X,A16,I2,5(1X,F11.6))
78104  5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/
78105      &20X,'based on an analysis of ',I6,' events'//
78106      &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>',
78107      &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  '))
78108  5500 FORMAT(10X)
78109  5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4))
78110  5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/
78111      &20X,'based on an analysis of ',I6,' events'//
78112      &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X,
78113      &'EECA(theta)'/2X,'in degrees ',3('      value    error')/)
78114  5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4))
78115  5900 FORMAT(///20X,'Decay channel analysis - final state'/
78116      &20X,'based on an analysis of ',I6,' events'//
78117      &2X,'Probability',10X,'Complete final state'/)
78118  6000 FORMAT(2X,F9.5,5X,8(A12,1X))
78119  6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ',
78120      &'or table overflow)')
78121  
78122       RETURN
78123       END
78124  
78125 C*********************************************************************
78126  
78127 C...PYEEVT
78128 C...Handles the generation of an e+e- annihilation jet event.
78129  
78130       SUBROUTINE PYEEVT(KFL,ECM)
78131  
78132 C...Double precision and integer declarations.
78133       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78134       IMPLICIT INTEGER(I-N)
78135       INTEGER PYK,PYCHGE,PYCOMP
78136 C...Commonblocks.
78137       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
78138       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78139       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
78140       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
78141  
78142 C...Check input parameters.
78143       IF(MSTU(12).NE.12345) CALL PYLIST(0)
78144       IF(KFL.LT.0.OR.KFL.GT.8) THEN
78145         CALL PYERRM(16,'(PYEEVT:) called with unknown flavour code')
78146         IF(MSTU(21).GE.1) RETURN
78147       ENDIF
78148       IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02D0*PARF(100+MAX(1,KFL))
78149       IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02D0*PMAS(KFL,1)
78150       IF(ECM.LT.ECMMIN) THEN
78151         CALL PYERRM(16,'(PYEEVT:) called with too small CM energy')
78152         IF(MSTU(21).GE.1) RETURN
78153       ENDIF
78154  
78155 C...Check consistency of MSTJ options set.
78156       IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
78157         CALL PYERRM(6,
78158      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(110) = 1')
78159         MSTJ(110)=1
78160       ENDIF
78161       IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
78162         CALL PYERRM(6,
78163      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(111) = 0')
78164         MSTJ(111)=0
78165       ENDIF
78166  
78167 C...Initialize alpha_strong and total cross-section.
78168       MSTU(111)=MSTJ(108)
78169       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
78170      &MSTU(111)=1
78171       PARU(112)=PARJ(121)
78172       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
78173       IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE.
78174      &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL PYXTEE(KFL,ECM,
78175      &XTOT)
78176       IF(MSTJ(116).GE.3) MSTJ(116)=1
78177       PARJ(171)=0D0
78178  
78179 C...Add initial e+e- to event record (documentation only).
78180       NTRY=0
78181   100 NTRY=NTRY+1
78182       IF(NTRY.GT.100) THEN
78183         CALL PYERRM(14,'(PYEEVT:) caught in an infinite loop')
78184         RETURN
78185       ENDIF
78186       MSTU(24)=0
78187       NC=0
78188       IF(MSTJ(115).GE.2) THEN
78189         NC=NC+2
78190         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
78191         K(NC-1,1)=21
78192         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
78193         K(NC,1)=21
78194       ENDIF
78195  
78196 C...Radiative photon (in initial state).
78197       MK=0
78198       ECMC=ECM
78199       IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL PYRADK(ECM,MK,PAK,
78200      &THEK,PHIK,ALPK)
78201       IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2D0*PAK))
78202       IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN
78203         NC=NC+1
78204         CALL PY1ENT(NC,22,PAK,THEK,PHIK)
78205         K(NC,3)=MIN(MSTJ(115)/2,1)
78206       ENDIF
78207  
78208 C...Virtual exchange boson (gamma or Z0).
78209       IF(MSTJ(115).GE.3) THEN
78210         NC=NC+1
78211         KF=22
78212         IF(MSTJ(102).EQ.2) KF=23
78213         MSTU10=MSTU(10)
78214         MSTU(10)=1
78215         P(NC,5)=ECMC
78216         CALL PY1ENT(NC,KF,ECMC,0D0,0D0)
78217         K(NC,1)=21
78218         K(NC,3)=1
78219         MSTU(10)=MSTU10
78220       ENDIF
78221  
78222 C...Choice of flavour and jet configuration.
78223       CALL PYXKFL(KFL,ECM,ECMC,KFLC)
78224       IF(KFLC.EQ.0) GOTO 100
78225       CALL PYXJET(ECMC,NJET,CUT)
78226       KFLN=21
78227       IF(NJET.EQ.4) CALL PYX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4,
78228      &X12,X14)
78229       IF(NJET.EQ.3) CALL PYX3JT(NJET,CUT,KFLC,ECMC,X1,X3)
78230       IF(NJET.EQ.2) MSTJ(120)=1
78231  
78232 C...Fill jet configuration and origin.
78233       IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL PY2ENT(NC+1,KFLC,-KFLC,ECMC)
78234       IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL PY2ENT(-(NC+1),KFLC,-KFLC,
78235      &ECMC)
78236       IF(NJET.EQ.3) CALL PY3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3)
78237       IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,
78238      &-KFLC,ECMC,X1,X2,X4,X12,X14)
78239       IF(NJET.EQ.4.AND.KFLN.NE.21) CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,
78240      &-KFLC,ECMC,X1,X2,X4,X12,X14)
78241       IF(MSTU(24).NE.0) GOTO 100
78242       DO 110 IP=NC+1,N
78243         K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1)
78244   110 CONTINUE
78245  
78246 C...Angular orientation according to matrix element.
78247       IF(MSTJ(106).EQ.1) THEN
78248         CALL PYXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI)
78249         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
78250         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
78251       ENDIF
78252  
78253 C...Rotation and boost from radiative photon.
78254       IF(MK.EQ.1) THEN
78255         DBEK=-PAK/(ECM-PAK)
78256         NMIN=NC+1-MSTJ(115)/3
78257         CALL PYROBO(NMIN,N,0D0,-PHIK,0D0,0D0,0D0)
78258         CALL PYROBO(NMIN,N,ALPK,0D0,DBEK*SIN(THEK),0D0,DBEK*COS(THEK))
78259         CALL PYROBO(NMIN,N,0D0,PHIK,0D0,0D0,0D0)
78260       ENDIF
78261  
78262 C...Generate parton shower. Rearrange along strings and check.
78263       IF(MSTJ(101).EQ.5) THEN
78264         CALL PYSHOW(N-1,N,ECMC)
78265         MSTJ14=MSTJ(14)
78266         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
78267         IF(MSTJ(105).GE.0) MSTU(28)=0
78268         CALL PYPREP(0)
78269         MSTJ(14)=MSTJ14
78270         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
78271       ENDIF
78272  
78273 C...Fragmentation/decay generation. Information for PYTABU.
78274       IF(MSTJ(105).EQ.1) CALL PYEXEC
78275       MSTU(161)=KFLC
78276       MSTU(162)=-KFLC
78277  
78278       RETURN
78279       END
78280  
78281 C*********************************************************************
78282  
78283 C...PYXTEE
78284 C...Calculates total cross-section, including initial state
78285 C...radiation effects.
78286  
78287       SUBROUTINE PYXTEE(KFL,ECM,XTOT)
78288  
78289 C...Double precision and integer declarations.
78290       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78291       IMPLICIT INTEGER(I-N)
78292       INTEGER PYK,PYCHGE,PYCOMP
78293 C...Commonblocks.
78294       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78295       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
78296       SAVE /PYDAT1/,/PYDAT2/
78297  
78298 C...Status, (optimized) Q^2 scale, alpha_strong.
78299       PARJ(151)=ECM
78300       MSTJ(119)=10*MSTJ(102)+KFL
78301       IF(MSTJ(111).EQ.0) THEN
78302         Q2R=ECM**2
78303       ELSEIF(MSTU(111).EQ.0) THEN
78304         PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
78305      &  ((33D0-2D0*MSTU(112))*PARU(111)))))
78306         Q2R=PARJ(168)*ECM**2
78307       ELSE
78308         PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
78309      &  (2D0*PARU(112)/ECM)**2))
78310         Q2R=PARJ(168)*ECM**2
78311       ENDIF
78312       ALSPI=PYALPS(Q2R)/PARU(1)
78313  
78314 C...QCD corrections factor in R.
78315       IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN
78316         RQCD=1D0
78317       ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN
78318         RQCD=1D0+ALSPI
78319       ELSEIF(MSTJ(109).EQ.0) THEN
78320         RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
78321         IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+(33D0-2D0*MSTU(112))/12D0*
78322      &  LOG(PARJ(168))*ALSPI**2)
78323       ELSEIF(IABS(MSTJ(101)).EQ.1) THEN
78324         RQCD=1D0+(3D0/4D0)*ALSPI
78325       ELSE
78326         RQCD=1D0+(3D0/4D0)*ALSPI-(3D0/32D0+0.519D0*MSTU(118))*ALSPI**2
78327       ENDIF
78328  
78329 C...Calculate Z0 width if default value not acceptable.
78330       IF(MSTJ(102).GE.3) THEN
78331         RVA=3D0*(3D0+(4D0*PARU(102)-1D0)**2)+6D0*RQCD*(2D0+
78332      &  (1D0-8D0*PARU(102)/3D0)**2+(4D0*PARU(102)/3D0-1D0)**2)
78333         DO 100 KFLC=5,6
78334           VQ=1D0
78335           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-
78336      &    (2D0*PYMASS(KFLC)/ ECM)**2))
78337           IF(KFLC.EQ.5) VF=4D0*PARU(102)/3D0-1D0
78338           IF(KFLC.EQ.6) VF=1D0-8D0*PARU(102)/3D0
78339           RVA=RVA+3D0*RQCD*(0.5D0*VQ*(3D0-VQ**2)*VF**2+VQ**3)
78340   100   CONTINUE
78341         PARJ(124)=PARU(101)*PARJ(123)*RVA/(48D0*PARU(102)*
78342      &  (1D0-PARU(102)))
78343       ENDIF
78344  
78345 C...Calculate propagator and related constants for QFD case.
78346       POLL=1D0-PARJ(131)*PARJ(132)
78347       IF(MSTJ(102).GE.2) THEN
78348         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
78349         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
78350         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
78351         VE=4D0*PARU(102)-1D0
78352         SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131))
78353         SF1W=SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
78354         HF1I=SFI*SF1I
78355         HF1W=SFW*SF1W
78356       ENDIF
78357  
78358 C...Loop over different flavours: charge, velocity.
78359       RTOT=0D0
78360       RQQ=0D0
78361       RQV=0D0
78362       RVA=0D0
78363       DO 110 KFLC=1,MAX(MSTJ(104),KFL)
78364         IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110
78365         MSTJ(93)=1
78366         PMQ=PYMASS(KFLC)
78367         IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 110
78368         QF=KCHG(KFLC,1)/3D0
78369         VQ=1D0
78370         IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1D0-(2D0*PMQ/ECM)**2)
78371  
78372 C...Calculate R and sum of charges for QED or QFD case.
78373         RQQ=RQQ+3D0*QF**2*POLL
78374         IF(MSTJ(102).LE.1) THEN
78375           RTOT=RTOT+3D0*0.5D0*VQ*(3D0-VQ**2)*QF**2*POLL
78376         ELSE
78377           VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
78378           RQV=RQV-6D0*QF*VF*SF1I
78379           RVA=RVA+3D0*(VF**2+1D0)*SF1W
78380           RTOT=RTOT+3D0*(0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-
78381      &    2D0*QF*VF*HF1I+VF**2*HF1W)+VQ**3*HF1W)
78382         ENDIF
78383   110 CONTINUE
78384       RSUM=RQQ
78385       IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA
78386  
78387 C...Calculate cross-section, including QCD corrections.
78388       PARJ(141)=RQQ
78389       PARJ(142)=RTOT
78390       PARJ(143)=RTOT*RQCD
78391       PARJ(144)=PARJ(143)
78392       PARJ(145)=PARJ(141)*86.8D0/ECM**2
78393       PARJ(146)=PARJ(142)*86.8D0/ECM**2
78394       PARJ(147)=PARJ(143)*86.8D0/ECM**2
78395       PARJ(148)=PARJ(147)
78396       PARJ(157)=RSUM*RQCD
78397       PARJ(158)=0D0
78398       PARJ(159)=0D0
78399       XTOT=PARJ(147)
78400       IF(MSTJ(107).LE.0) RETURN
78401  
78402 C...Virtual cross-section.
78403       XKL=PARJ(135)
78404       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
78405       ALE=2D0*LOG(ECM/PYMASS(11))-1D0
78406       SIGV=ALE/3D0+2D0*LOG(ECM**2/(PYMASS(13)*PYMASS(15)))/3D0-4D0/3D0+
78407      &1.526D0*LOG(ECM**2/0.932D0)
78408  
78409 C...Soft and hard radiative cross-section in QED case.
78410       IF(MSTJ(102).LE.1) THEN
78411         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+2D0*SIGV
78412         SIGS=ALE*(2D0*LOG(XKL)-LOG(1D0-XKL)-XKL)
78413         SIGH=ALE*(2D0*LOG(XKU/XKL)-LOG((1D0-XKU)/(1D0-XKL))-(XKU-XKL))
78414  
78415 C...Soft and hard radiative cross-section in QFD case.
78416       ELSE
78417         SZM=1D0-(PARJ(123)/ECM)**2
78418         SZW=PARJ(123)*PARJ(124)/ECM**2
78419         PARJ(161)=-RQQ/RSUM
78420         PARJ(162)=-(RQQ+RQV+RVA)/RSUM
78421         PARJ(163)=(RQV*(1D0-0.5D0*SZM-SFI)+RVA*(1.5D0-SZM-SFW))/RSUM
78422         PARJ(164)=(RQV*SZW**2*(1D0-2D0*SFW)+RVA*(2D0*SFI+SZW**2-
78423      &  4D0+3D0*SZM-SZM**2))/(SZW*RSUM)
78424         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+((2D0*RQQ+SFI*RQV)/
78425      &  RSUM)*SIGV+(SZW*SFW*RQV/RSUM)*PARU(1)*20D0/9D0
78426         SIGS=ALE*(2D0*LOG(XKL)+PARJ(161)*LOG(1D0-XKL)+PARJ(162)*XKL+
78427      &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+
78428      &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW)))
78429         SIGH=ALE*(2D0*LOG(XKU/XKL)+PARJ(161)*LOG((1D0-XKU)/
78430      &  (1D0-XKL))+PARJ(162)*(XKU-XKL)+PARJ(163)*
78431      &  LOG(((XKU-SZM)**2+SZW**2)/((XKL-SZM)**2+SZW**2))+
78432      &  PARJ(164)*(ATAN((XKU-SZM)/SZW)-ATAN((XKL-SZM)/SZW)))
78433       ENDIF
78434  
78435 C...Total cross-section and fraction of hard photon events.
78436       PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH)
78437       PARJ(157)=RSUM*(1D0+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD
78438       PARJ(144)=PARJ(157)
78439       PARJ(148)=PARJ(144)*86.8D0/ECM**2
78440       XTOT=PARJ(148)
78441  
78442       RETURN
78443       END
78444  
78445 C*********************************************************************
78446  
78447 C...PYRADK
78448 C...Generates initial state photon radiation.
78449  
78450       SUBROUTINE PYRADK(ECM,MK,PAK,THEK,PHIK,ALPK)
78451  
78452 C...Double precision and integer declarations.
78453       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78454       IMPLICIT INTEGER(I-N)
78455       INTEGER PYK,PYCHGE,PYCOMP
78456 C...Commonblocks.
78457       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78458       SAVE /PYDAT1/
78459  
78460 C...Function: cumulative hard photon spectrum in QFD case.
78461       FXK(XX)=2D0*LOG(XX)+PARJ(161)*LOG(1D0-XX)+PARJ(162)*XX+
78462      &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW)
78463  
78464 C...Determine whether radiative photon or not.
78465       MK=0
78466       PAK=0D0
78467       IF(PARJ(160).LT.PYR(0)) RETURN
78468       MK=1
78469  
78470 C...Photon energy range. Find photon momentum in QED case.
78471       XKL=PARJ(135)
78472       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
78473       IF(MSTJ(102).LE.1) THEN
78474   100   XK=1D0/(1D0+(1D0/XKL-1D0)*((1D0/XKU-1D0)/(1D0/XKL-1D0))**PYR(0))
78475         IF(1D0+(1D0-XK)**2.LT.2D0*PYR(0)) GOTO 100
78476  
78477 C...Ditto in QFD case, by numerical inversion of integrated spectrum.
78478       ELSE
78479         SZM=1D0-(PARJ(123)/ECM)**2
78480         SZW=PARJ(123)*PARJ(124)/ECM**2
78481         FXKL=FXK(XKL)
78482         FXKU=FXK(XKU)
78483         FXKD=1D-4*(FXKU-FXKL)
78484         FXKR=FXKL+PYR(0)*(FXKU-FXKL)
78485         NXK=0
78486   110   NXK=NXK+1
78487         XK=0.5D0*(XKL+XKU)
78488         FXKV=FXK(XK)
78489         IF(FXKV.GT.FXKR) THEN
78490           XKU=XK
78491           FXKU=FXKV
78492         ELSE
78493           XKL=XK
78494           FXKL=FXKV
78495         ENDIF
78496         IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110
78497         XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL)
78498       ENDIF
78499       PAK=0.5D0*ECM*XK
78500  
78501 C...Photon polar and azimuthal angle.
78502       PME=2D0*(PYMASS(11)/ECM)**2
78503   120 CTHM=PME*(2D0/PME)**PYR(0)
78504       IF(1D0-(XK**2*CTHM*(1D0-0.5D0*CTHM)+2D0*(1D0-XK)*PME/MAX(PME,
78505      &CTHM*(1D0-0.5D0*CTHM)))/(1D0+(1D0-XK)**2).LT.PYR(0)) GOTO 120
78506       CTHE=1D0-CTHM
78507       IF(PYR(0).GT.0.5D0) CTHE=-CTHE
78508       STHE=SQRT(MAX(0D0,(CTHM-PME)*(2D0-CTHM)))
78509       THEK=PYANGL(CTHE,STHE)
78510       PHIK=PARU(2)*PYR(0)
78511  
78512 C...Rotation angle for hadronic system.
78513       SGN=1D0
78514       IF(0.5D0*(2D0-XK*(1D0-CTHE))**2/((2D0-XK)**2+(XK*CTHE)**2).GT.
78515      &PYR(0)) SGN=-1D0
78516       ALPK=ASIN(SGN*STHE*(XK-SGN*(2D0*SQRT(1D0-XK)-2D0+XK)*CTHE)/
78517      &(2D0-XK*(1D0-SGN*CTHE)))
78518  
78519       RETURN
78520       END
78521  
78522 C*********************************************************************
78523  
78524 C...PYXKFL
78525 C...Selects flavour for produced qqbar pair.
78526  
78527       SUBROUTINE PYXKFL(KFL,ECM,ECMC,KFLC)
78528  
78529 C...Double precision and integer declarations.
78530       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78531       IMPLICIT INTEGER(I-N)
78532       INTEGER PYK,PYCHGE,PYCOMP
78533 C...Commonblocks.
78534       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78535       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
78536       SAVE /PYDAT1/,/PYDAT2/
78537  
78538 C...Calculate maximum weight in QED or QFD case.
78539       IF(MSTJ(102).LE.1) THEN
78540         RFMAX=4D0/9D0
78541       ELSE
78542         POLL=1D0-PARJ(131)*PARJ(132)
78543         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
78544         SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
78545         SFI=SFW*(1D0-(PARJ(123)/ECMC)**2)
78546         VE=4D0*PARU(102)-1D0
78547         HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
78548         HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
78549         RFMAX=MAX(4D0/9D0*POLL-4D0/3D0*(1D0-8D0*PARU(102)/3D0)*HF1I+
78550      &  ((1D0-8D0*PARU(102)/3D0)**2+1D0)*HF1W,1D0/9D0*POLL+2D0/3D0*
78551      &  (-1D0+4D0*PARU(102)/3D0)*HF1I+((-1D0+4D0*PARU(102)/3D0)**2+
78552      &  1D0)*HF1W)
78553       ENDIF
78554  
78555 C...Choose flavour. Gives charge and velocity.
78556       NTRY=0
78557   100 NTRY=NTRY+1
78558       IF(NTRY.GT.100) THEN
78559         CALL PYERRM(14,'(PYXKFL:) caught in an infinite loop')
78560         KFLC=0
78561         RETURN
78562       ENDIF
78563       KFLC=KFL
78564       IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*PYR(0))
78565       MSTJ(93)=1
78566       PMQ=PYMASS(KFLC)
78567       IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 100
78568       QF=KCHG(KFLC,1)/3D0
78569       VQ=1D0
78570       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-(2D0*PMQ/ECMC)**2))
78571  
78572 C...Calculate weight in QED or QFD case.
78573       IF(MSTJ(102).LE.1) THEN
78574         RF=QF**2
78575         RFV=0.5D0*VQ*(3D0-VQ**2)*QF**2
78576       ELSE
78577         VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
78578         RF=QF**2*POLL-2D0*QF*VF*HF1I+(VF**2+1D0)*HF1W
78579         RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+VF**2*HF1W)+
78580      &  VQ**3*HF1W
78581         IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
78582       ENDIF
78583  
78584 C...Weighting or new event (radiative photon). Cross-section update.
78585       IF(KFL.LE.0.AND.RF.LT.PYR(0)*RFMAX) GOTO 100
78586       PARJ(158)=PARJ(158)+1D0
78587       IF(ECMC.LT.2D0*PMQ+PARJ(127).OR.RFV.LT.PYR(0)*RF) KFLC=0
78588       IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100
78589       IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1D0
78590       PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158)
78591       PARJ(148)=PARJ(144)*86.8D0/ECM**2
78592  
78593       RETURN
78594       END
78595  
78596 C*********************************************************************
78597  
78598 C...PYXJET
78599 C...Selects number of jets in matrix element approach.
78600  
78601       SUBROUTINE PYXJET(ECM,NJET,CUT)
78602  
78603 C...Double precision and integer declarations.
78604       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78605       IMPLICIT INTEGER(I-N)
78606       INTEGER PYK,PYCHGE,PYCOMP
78607 C...Commonblocks.
78608       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78609       SAVE /PYDAT1/
78610 C...Local array and data.
78611       DIMENSION ZHUT(5)
78612       DATA ZHUT/3.0922D0, 6.2291D0, 7.4782D0, 7.8440D0, 8.2560D0/
78613  
78614 C...Trivial result for two-jets only, including parton shower.
78615       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
78616         CUT=0D0
78617  
78618 C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R.
78619       ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN
78620         CF=4D0/3D0
78621         IF(MSTJ(109).EQ.2) CF=1D0
78622         IF(MSTJ(111).EQ.0) THEN
78623           Q2=ECM**2
78624           Q2R=ECM**2
78625         ELSEIF(MSTU(111).EQ.0) THEN
78626           PARJ(169)=MIN(1D0,PARJ(129))
78627           Q2=PARJ(169)*ECM**2
78628           PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
78629      &    ((33D0-2D0*MSTU(112))*PARU(111)))))
78630           Q2R=PARJ(168)*ECM**2
78631         ELSE
78632           PARJ(169)=MIN(1D0,MAX(PARJ(129),(2D0*PARU(112)/ECM)**2))
78633           Q2=PARJ(169)*ECM**2
78634           PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
78635      &    (2D0*PARU(112)/ECM)**2))
78636           Q2R=PARJ(168)*ECM**2
78637         ENDIF
78638  
78639 C...alpha_strong for R and R itself.
78640         ALSPI=(3D0/4D0)*CF*PYALPS(Q2R)/PARU(1)
78641         IF(IABS(MSTJ(101)).EQ.1) THEN
78642           RQCD=1D0+ALSPI
78643         ELSEIF(MSTJ(109).EQ.0) THEN
78644           RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
78645           IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+
78646      &    (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(168))*ALSPI**2)
78647         ELSE
78648           RQCD=1D0+ALSPI-(3D0/32D0+0.519D0*MSTU(118))*(4D0*ALSPI/3D0)**2
78649         ENDIF
78650  
78651 C...alpha_strong for jet rate. Initial value for y cut.
78652         ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
78653         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2)
78654         IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0))
78655      &  CUT=MAX(CUT,EXP(-SQRT(0.75D0/ALSPI))/2D0)
78656         IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
78657  
78658 C...Parametrization of first order three-jet cross-section.
78659   100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25D0) THEN
78660           PARJ(152)=0D0
78661         ELSE
78662           PARJ(152)=(2D0*ALSPI/3D0)*((3D0-6D0*CUT+2D0*LOG(CUT))*
78663      &    LOG(CUT/(1D0-2D0*CUT))+(2.5D0+1.5D0*CUT-6.571D0)*
78664      &    (1D0-3D0*CUT)+5.833D0*(1D0-3D0*CUT)**2-3.894D0*
78665      &    (1D0-3D0*CUT)**3+1.342D0*(1D0-3D0*CUT)**4)/RQCD
78666           IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2))
78667      &    PARJ(152)=0D0
78668         ENDIF
78669  
78670 C...Parametrization of second order three-jet cross-section.
78671         IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR.
78672      &  CUT.GE.0.25D0) THEN
78673           PARJ(153)=0D0
78674         ELSEIF(MSTJ(110).LE.1) THEN
78675           CT=LOG(1D0/CUT-2D0)
78676           PARJ(153)=ALSPI**2*CT**2*(2.419D0+0.5989D0*CT+0.6782D0*CT**2-
78677      &    0.2661D0*CT**3+0.01159D0*CT**4)/RQCD
78678  
78679 C...Interpolation in second/first order ratio for Zhu parametrization.
78680         ELSEIF(MSTJ(110).EQ.2) THEN
78681           IZA=0
78682           DO 110 IY=1,5
78683             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
78684   110     CONTINUE
78685           IF(IZA.NE.0) THEN
78686             ZHURAT=ZHUT(IZA)
78687           ELSE
78688             IZ=100D0*CUT
78689             ZHURAT=ZHUT(IZ)+(100D0*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ))
78690           ENDIF
78691           PARJ(153)=ALSPI*PARJ(152)*ZHURAT
78692         ENDIF
78693  
78694 C...Shift in second order three-jet cross-section with optimized Q^2.
78695         IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3
78696      &  .AND.CUT.LT.0.25D0) PARJ(153)=PARJ(153)+
78697      &  (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(169))*ALSPI*PARJ(152)
78698  
78699 C...Parametrization of second order four-jet cross-section.
78700         IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125D0) THEN
78701           PARJ(154)=0D0
78702         ELSE
78703           CT=LOG(1D0/CUT-5D0)
78704           IF(CUT.LE.0.018D0) THEN
78705             XQQGG=6.349D0-4.330D0*CT+0.8304D0*CT**2
78706             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(3.035D0-2.091D0*CT+
78707      &      0.4059D0*CT**2)
78708             XQQQQ=1.25D0*(-0.1080D0+0.01486D0*CT+0.009364D0*CT**2)
78709             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
78710           ELSE
78711             XQQGG=-0.09773D0+0.2959D0*CT-0.2764D0*CT**2+0.08832D0*CT**3
78712             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(-0.04079D0+
78713      &      0.1340D0*CT-0.1326D0*CT**2+0.04365D0*CT**3)
78714             XQQQQ=1.25D0*(0.003661D0-0.004888D0*CT-0.001081D0*CT**2+
78715      &      0.002093D0*CT**3)
78716             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
78717           ENDIF
78718           PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD
78719           PARJ(155)=XQQQQ/(XQQGG+XQQQQ)
78720         ENDIF
78721  
78722 C...If negative three-jet rate, change y' optimization parameter.
78723         IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0D0.AND.
78724      &  PARJ(169).LT.0.99D0) THEN
78725           PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
78726           Q2=PARJ(169)*ECM**2
78727           ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
78728           GOTO 100
78729         ENDIF
78730  
78731 C...If too high cross-section, use harder cuts, or fail.
78732         IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN
78733           IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0.AND.MSTJ(111).EQ.1.AND.
78734      &    PARJ(169).LT.0.99D0) THEN
78735             PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
78736             Q2=PARJ(169)*ECM**2
78737             ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
78738             GOTO 100
78739           ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0) THEN
78740             CALL PYERRM(26,
78741      &      '(PYXJET:) no allowed y cut value for Zhu parametrization')
78742           ENDIF
78743           CUT=0.26D0*(4D0*CUT)**(PARJ(152)+PARJ(153)+
78744      &    PARJ(154))**(-1D0/3D0)
78745           IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
78746           GOTO 100
78747         ENDIF
78748  
78749 C...Scalar gluon (first order only).
78750       ELSE
78751         ALSPI=PYALPS(ECM**2)/PARU(1)
78752         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3D0/ALSPI))
78753         PARJ(152)=0D0
78754         IF(CUT.LT.0.25D0) PARJ(152)=(ALSPI/3D0)*((1D0-2D0*CUT)*
78755      &  LOG((1D0-2D0*CUT)/CUT)+0.5D0*(9D0*CUT**2-1D0))
78756         PARJ(153)=0D0
78757         PARJ(154)=0D0
78758       ENDIF
78759  
78760 C...Select number of jets.
78761       PARJ(150)=CUT
78762       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
78763         NJET=2
78764       ELSEIF(MSTJ(101).LE.0) THEN
78765         NJET=MIN(4,2-MSTJ(101))
78766       ELSE
78767         RNJ=PYR(0)
78768         NJET=2
78769         IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3
78770         IF(PARJ(154).GT.RNJ) NJET=4
78771       ENDIF
78772  
78773       RETURN
78774       END
78775  
78776 C*********************************************************************
78777  
78778 C...PYX3JT
78779 C...Selects the kinematical variables of three-jet events.
78780  
78781       SUBROUTINE PYX3JT(NJET,CUT,KFL,ECM,X1,X2)
78782  
78783 C...Double precision and integer declarations.
78784       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78785       IMPLICIT INTEGER(I-N)
78786       INTEGER PYK,PYCHGE,PYCOMP
78787 C...Commonblocks.
78788       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78789       SAVE /PYDAT1/
78790 C...Local array.
78791       DIMENSION ZHUP(5,12)
78792  
78793 C...Coefficients of Zhu second order parametrization.
78794       DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/
78795      &18.29D0,  89.56D0,  4.541D0,  -52.09D0, -109.8D0,  24.90D0,
78796      &11.63D0,  3.683D0,  17.50D0,0.002440D0, -1.362D0,-0.3537D0,
78797      &11.42D0,  6.299D0, -22.55D0,  -8.915D0,  59.25D0, -5.855D0,
78798      &-32.85D0, -1.054D0, -16.90D0,0.006489D0,-0.8156D0,0.01095D0,
78799      &7.847D0, -3.964D0, -35.83D0,   1.178D0,  29.39D0, 0.2806D0,
78800      &47.82D0, -12.36D0, -56.72D0, 0.04054D0,-0.4365D0, 0.6062D0,
78801      &5.441D0, -56.89D0, -50.27D0,   15.13D0,  114.3D0, -18.19D0,
78802      &97.05D0, -1.890D0, -139.9D0, 0.08153D0,-0.4984D0, 0.9439D0,
78803      &-17.65D0,  51.44D0, -58.32D0,   70.95D0, -255.7D0, -78.99D0,
78804      &476.9D0,  29.65D0, -239.3D0,  0.4745D0, -1.174D0,  6.081D0/
78805  
78806 C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick).
78807       DILOG(X)=X+X**2/4D0+X**3/9D0+X**4/16D0+X**5/25D0+X**6/36D0+
78808      &X**7/49D0
78809  
78810 C...Event type. Mass effect factors and other common constants.
78811       MSTJ(120)=2
78812       MSTJ(121)=0
78813       PMQ=PYMASS(KFL)
78814       QME=(2D0*PMQ/ECM)**2
78815       IF(MSTJ(109).NE.1) THEN
78816         CUTL=LOG(CUT)
78817         CUTD=LOG(1D0/CUT-2D0)
78818         IF(MSTJ(109).EQ.0) THEN
78819           CF=4D0/3D0
78820           CN=3D0
78821           TR=2D0
78822           WTMX=MIN(20D0,37D0-6D0*CUTD)
78823           IF(MSTJ(110).EQ.2) WTMX=2D0*(7.5D0+80D0*CUT)
78824         ELSE
78825           CF=1D0
78826           CN=0D0
78827           TR=12D0
78828           WTMX=0D0
78829         ENDIF
78830  
78831 C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight.
78832         ALS2PI=PARU(118)/PARU(2)
78833         WTOPT=0D0
78834         IF(MSTJ(111).EQ.1) WTOPT=(33D0-2D0*MSTU(112))/6D0*
78835      &  LOG(PARJ(169))*ALS2PI
78836         WTMAX=MAX(0D0,1D0+WTOPT+ALS2PI*WTMX)
78837  
78838 C...Choose three-jet events in allowed region.
78839   100   NJET=3
78840   110   Y13L=CUTL+CUTD*PYR(0)
78841         Y23L=CUTL+CUTD*PYR(0)
78842         Y13=EXP(Y13L)
78843         Y23=EXP(Y23L)
78844         Y12=1D0-Y13-Y23
78845         IF(Y12.LE.CUT) GOTO 110
78846         IF(Y13**2+Y23**2+2D0*Y12.LE.2D0*PYR(0)) GOTO 110
78847  
78848 C...Second order corrections.
78849         IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN
78850           Y12L=LOG(Y12)
78851           Y13M=LOG(1D0-Y13)
78852           Y23M=LOG(1D0-Y23)
78853           Y12M=LOG(1D0-Y12)
78854           IF(Y13.LE.0.5D0) Y13I=DILOG(Y13)
78855           IF(Y13.GE.0.5D0) Y13I=1.644934D0-Y13L*Y13M-DILOG(1D0-Y13)
78856           IF(Y23.LE.0.5D0) Y23I=DILOG(Y23)
78857           IF(Y23.GE.0.5D0) Y23I=1.644934D0-Y23L*Y23M-DILOG(1D0-Y23)
78858           IF(Y12.LE.0.5D0) Y12I=DILOG(Y12)
78859           IF(Y12.GE.0.5D0) Y12I=1.644934D0-Y12L*Y12M-DILOG(1D0-Y12)
78860           WT1=(Y13**2+Y23**2+2D0*Y12)/(Y13*Y23)
78861           WT2=CF*(-2D0*(CUTL-Y12L)**2-3D0*CUTL-1D0+3.289868D0+
78862      &    2D0*(2D0*CUTL-Y12L)*CUT/Y12)+
78863      &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-
78864      &    11D0*CUTL/6D0+67D0/18D0+1.644934D0-(2D0*CUTL-Y12L)*CUT/Y12+
78865      &    (2D0*CUTL-Y13L)*CUT/Y13+(2D0*CUTL-Y23L)*CUT/Y23)+
78866      &    TR*(2D0*CUTL/3D0-10D0/9D0)+
78867      &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+
78868      &    Y13L*(4D0*Y12**2+2D0*Y12*Y13+4D0*Y12*Y23+Y13*Y23)/
78869      &    (Y12+Y23)**2+Y23L*(4D0*Y12**2+2D0*Y12*Y23+4D0*Y12*Y13+
78870      &    Y13*Y23)/(Y12+Y13)**2)/WT1+
78871      &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+(CN-2D0*CF)*
78872      &    ((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L*
78873      &    Y23M+1.644934D0-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)*
78874      &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934D0-Y12I-Y13I)/
78875      &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))-
78876      &    2D0*Y12L*Y12**2/(Y13+Y23)**2-4D0*Y12L*Y12/(Y13+Y23))/WT1-
78877      &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934D0-Y13I-Y23I)
78878           IF(1D0+WTOPT+ALS2PI*WT2.LE.0D0) MSTJ(121)=1
78879           IF(1D0+WTOPT+ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
78880           PARJ(156)=(WTOPT+ALS2PI*WT2)/(1D0+WTOPT+ALS2PI*WT2)
78881  
78882         ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN
78883 C...Second order corrections; Zhu parametrization of ERT.
78884           ZX=(Y23-Y13)**2
78885           ZY=1D0-Y12
78886           IZA=0
78887           DO 120 IY=1,5
78888             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
78889   120     CONTINUE
78890           IF(IZA.NE.0) THEN
78891             IZ=IZA
78892             WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
78893      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
78894      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
78895      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
78896           ELSE
78897             IZ=100D0*CUT
78898             WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
78899      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
78900      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
78901      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
78902             IZ=IZ+1
78903             WTU=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
78904      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
78905      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
78906      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
78907             WT2=WTL+(WTU-WTL)*(100D0*CUT+1D0-IZ)
78908           ENDIF
78909           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.0D0) MSTJ(121)=1
78910           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
78911           PARJ(156)=(WTOPT+2D0*ALS2PI*WT2)/(1D0+WTOPT+2D0*ALS2PI*WT2)
78912         ENDIF
78913  
78914 C...Impose mass cuts (gives two jets). For fixed jet number new try.
78915         X1=1D0-Y23
78916         X2=1D0-Y13
78917         X3=1D0-Y12
78918         IF(4D0*Y23*Y13*Y12/X3**2.LE.QME) NJET=2
78919         IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+
78920      &  0.5D0*QME**2+(0.5D0*QME+0.25D0*QME**2)*((1D0-X2)/(1D0-X1)+
78921      &  (1D0-X1)/(1D0-X2)).GT.(X1**2+X2**2)*PYR(0)) NJET=2
78922         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100
78923  
78924 C...Scalar gluon model (first order only, no mass effects).
78925       ELSE
78926   130   NJET=3
78927   140   X3=SQRT(4D0*CUT**2+PYR(0)*((1D0-CUT)**2-4D0*CUT**2))
78928         IF(LOG((X3-CUT)/CUT).LE.PYR(0)*LOG((1D0-2D0*CUT)/CUT)) GOTO 140
78929         YD=SIGN(2D0*CUT*((X3-CUT)/CUT)**PYR(0)-X3,PYR(0)-0.5D0)
78930         X1=1D0-0.5D0*(X3+YD)
78931         X2=1D0-0.5D0*(X3-YD)
78932         IF(4D0*(1D0-X1)*(1D0-X2)*(1D0-X3)/X3**2.LE.QME) NJET=2
78933         IF(MSTJ(102).GE.2) THEN
78934           IF(X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*PARJ(171).LT.
78935      &    X3**2*PYR(0)) NJET=2
78936         ENDIF
78937         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130
78938       ENDIF
78939  
78940       RETURN
78941       END
78942  
78943 C*********************************************************************
78944  
78945 C...PYX4JT
78946 C...Selects the kinematical variables of four-jet events.
78947  
78948       SUBROUTINE PYX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14)
78949  
78950 C...Double precision and integer declarations.
78951       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78952       IMPLICIT INTEGER(I-N)
78953       INTEGER PYK,PYCHGE,PYCOMP
78954 C...Commonblocks.
78955       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78956       SAVE /PYDAT1/
78957 C...Local arrays.
78958       DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4)
78959  
78960 C...Common constants. Colour factors for QCD and Abelian gluon theory.
78961       PMQ=PYMASS(KFL)
78962       QME=(2D0*PMQ/ECM)**2
78963       CT=LOG(1D0/CUT-5D0)
78964       IF(MSTJ(109).EQ.0) THEN
78965         CF=4D0/3D0
78966         CN=3D0
78967         TR=2.5D0
78968       ELSE
78969         CF=1D0
78970         CN=0D0
78971         TR=15D0
78972       ENDIF
78973  
78974 C...Choice of process (qqbargg or qqbarqqbar).
78975   100 NJET=4
78976       IT=1
78977       IF(PARJ(155).GT.PYR(0)) IT=2
78978       IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2
78979       IF(IT.EQ.1) WTMX=0.7D0/CUT**2
78980       IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6D0/CUT**2
78981       IF(IT.EQ.2) WTMX=0.1125D0*CF*TR/CUT**2
78982       ID=1
78983  
78984 C...Sample the five kinematical variables (for qqgg preweighted in y34).
78985   110 Y134=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
78986       Y234=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
78987       IF(IT.EQ.1) Y34=(1D0-5D0*CUT)*EXP(-CT*PYR(0))
78988       IF(IT.EQ.2) Y34=CUT+(1D0-6D0*CUT)*PYR(0)
78989       IF(Y34.LE.Y134+Y234-1D0.OR.Y34.GE.Y134*Y234) GOTO 110
78990       VT=PYR(0)
78991       CP=COS(PARU(1)*PYR(0))
78992       Y14=(Y134-Y34)*VT
78993       Y13=Y134-Y14-Y34
78994       VB=Y34*(1D0-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34))
78995       Y24=0.5D0*(Y234-Y34)*(1D0-4D0*SQRT(MAX(0D0,VT*(1D0-VT)*
78996      &VB*(1D0-VB)))*CP-(1D0-2D0*VT)*(1D0-2D0*VB))
78997       Y23=Y234-Y34-Y24
78998       Y12=1D0-Y134-Y23-Y24
78999       IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110
79000       Y123=Y12+Y13+Y23
79001       Y124=Y12+Y14+Y24
79002  
79003 C...Calculate matrix elements for qqgg or qqqq process.
79004       IC=0
79005       WTTOT=0D0
79006   120 IC=IC+1
79007       IF(IT.EQ.1) THEN
79008         WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3D0*Y12*Y23*Y34+
79009      &  3D0*Y12*Y14*Y34+4D0*Y12**2*Y34-Y13*Y23*Y24+2D0*Y12*Y23*Y24-
79010      &  Y13*Y14*Y24-2D0*Y12*Y13*Y24+2D0*Y12**2*Y24+Y14*Y23**2+2D0*Y12*
79011      &  Y23**2+Y14**2*Y23+4D0*Y12*Y14*Y23+4D0*Y12**2*Y23+2D0*Y12*Y14**2+
79012      &  2D0*Y12*Y13*Y14+4D0*Y12**2*Y14+2D0*Y12**2*Y13+2D0*Y12**3)/
79013      &  (2D0*Y13*Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-
79014      &  Y14*Y23+Y12*Y13)/(Y13*Y134**2)+2D0*Y23*(1D0-Y13)/
79015      &  (Y13*Y134*Y24)+Y34/(2D0*Y13*Y24)
79016         WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2D0*Y12*
79017      &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1D0+Y34)*Y124/(Y134*Y234*Y14*
79018      &  Y24)-(2D0*Y13*Y24+Y14**2+Y13*Y23+2D0*Y12*Y13)/(Y13*Y134*Y14)+
79019      &  Y12*Y123*Y124/(2D0*Y13*Y14*Y23*Y24)
79020         WTC(IC)=-(5D0*Y12*Y34**2+2D0*Y12*Y24*Y34+2D0*Y12*Y23*Y34+
79021      &  2D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+4D0*Y12**2*Y34-Y13*Y24**2+
79022      &  Y14*Y23*Y24+Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-
79023      &  3D0*Y12*Y13*Y24-Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-
79024      &  3D0*Y12*Y14*Y23-Y12*Y13*Y23)/(4D0*Y134*Y234*Y34**2)+
79025      &  (3D0*Y12*Y34**2-3D0*Y13*Y24*Y34+3D0*Y12*Y24*Y34+
79026      &  3D0*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6D0*Y12*Y14*Y34+
79027      &  2D0*Y12*Y13*Y34-2D0*Y12**2*Y34+Y14*Y23*Y24-3D0*Y13*Y23*Y24-
79028      &  2D0*Y13*Y14*Y24+4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+
79029      &  3D0*Y14*Y23**2+2D0*Y14**2*Y23+2D0*Y14**2*Y12+
79030      &  2D0*Y12**2*Y14+6D0*Y12*Y14*Y23-2D0*Y12*Y13**2-
79031      &  2D0*Y12**2*Y13)/(4D0*Y13*Y134*Y234*Y34)
79032         WTC(IC)=WTC(IC)+(2D0*Y12*Y34**2-2D0*Y13*Y24*Y34+Y12*Y24*Y34+
79033      &  4D0*Y13*Y23*Y34+4D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+2D0*Y12**2*Y34-
79034      &  Y13*Y24**2+3D0*Y14*Y23*Y24+4D0*Y13*Y23*Y24-2D0*Y13*Y14*Y24+
79035      &  4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+2D0*Y14*Y23**2+4D0*Y13*Y23**2+
79036      &  2D0*Y13*Y14*Y23+2D0*Y12*Y14*Y23+4D0*Y12*Y13*Y23+2D0*Y12*Y14**2+
79037      &  4D0*Y12**2*Y13+4D0*Y12*Y13*Y14+2D0*Y12**2*Y14)/
79038      &  (4D0*Y13*Y134*Y24*Y34)-(Y12*Y34**2-2D0*Y14*Y24*Y34-
79039      &  2D0*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23*Y34+Y12*Y14*Y34+
79040      &  2D0*Y12*Y13*Y34-2D0*Y14**2*Y24-4D0*Y13*Y14*Y24-
79041      &  4D0*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-
79042      &  Y12*Y13**2)/(2D0*Y13*Y34*Y134**2)+(Y12*Y34**2-
79043      &  4D0*Y14*Y24*Y34-2D0*Y13*Y24*Y34-2D0*Y14*Y23*Y34-
79044      &  4D0*Y13*Y23*Y34-4D0*Y12*Y14*Y34-4D0*Y12*Y13*Y34-
79045      &  2D0*Y13*Y14*Y24+2D0*Y13**2*Y24+2D0*Y14**2*Y23-
79046      &  2D0*Y13*Y14*Y23-Y12*Y14**2-6D0*Y12*Y13*Y14-
79047      &  Y12*Y13**2)/(4D0*Y34**2*Y134**2)
79048         WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5D0*CN)*WTB(IC)+
79049      &  CN*WTC(IC))/8D0
79050       ELSE
79051         WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2D0*Y12*
79052      &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2*
79053      &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12*
79054      &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14*
79055      &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+
79056      &  Y13*Y14*Y24+2D0*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+
79057      &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24*
79058      &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24-
79059      &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123)
79060         WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13*
79061      &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23*
79062      &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13*
79063      &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+
79064      &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+
79065      &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134*
79066      &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14*
79067      &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124)
79068         WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5D0*CN)*WTE(IC))/16D0
79069       ENDIF
79070  
79071 C...Permutations of momenta in matrix element. Weighting.
79072   130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN
79073         YSAV=Y13
79074         Y13=Y14
79075         Y14=YSAV
79076         YSAV=Y23
79077         Y23=Y24
79078         Y24=YSAV
79079         YSAV=Y123
79080         Y123=Y124
79081         Y124=YSAV
79082       ENDIF
79083       IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN
79084         YSAV=Y13
79085         Y13=Y23
79086         Y23=YSAV
79087         YSAV=Y14
79088         Y14=Y24
79089         Y24=YSAV
79090         YSAV=Y134
79091         Y134=Y234
79092         Y234=YSAV
79093       ENDIF
79094       IF(IC.LE.3) GOTO 120
79095       IF(ID.EQ.1.AND.WTTOT.LT.PYR(0)*WTMX) GOTO 110
79096       IC=5
79097  
79098 C...qqgg events: string configuration and event type.
79099       IF(IT.EQ.1) THEN
79100         IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN
79101           PARJ(156)=Y34*(2D0*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4D0*(WTC(1)+
79102      &    WTC(2)+WTC(3)+WTC(4)))/(9D0*WTTOT)
79103           IF(WTA(2)+WTA(4)+2D0*(WTC(2)+WTC(4)).GT.PYR(0)*(WTA(1)+WTA(2)+
79104      &    WTA(3)+WTA(4)+2D0*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2
79105           IF(ID.EQ.2) GOTO 130
79106         ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN
79107           PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8D0*WTTOT)
79108           IF(WTA(2)+WTA(4).GT.PYR(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2
79109           IF(ID.EQ.2) GOTO 130
79110         ENDIF
79111         MSTJ(120)=3
79112         IF(MSTJ(109).EQ.0.AND.0.5D0*Y34*(WTC(1)+WTC(2)+WTC(3)+
79113      &  WTC(4)).GT.PYR(0)*WTTOT) MSTJ(120)=4
79114         KFLN=21
79115  
79116 C...Mass cuts. Kinematical variables out.
79117         IF(Y12.LE.CUT+QME) NJET=2
79118         IF(NJET.EQ.2) GOTO 150
79119         Q12=0.5D0*(1D0-SQRT(1D0-QME/Y12))
79120         X1=1D0-(1D0-Q12)*Y234-Q12*Y134
79121         X4=1D0-(1D0-Q12)*Y134-Q12*Y234
79122         X2=1D0-Y124
79123         X12=(1D0-Q12)*Y13+Q12*Y23
79124         X14=Y12-0.5D0*QME
79125         IF(Y134*Y234/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
79126  
79127 C...qqbarqqbar events: string configuration, choose new flavour.
79128       ELSE
79129         IF(ID.EQ.1) THEN
79130           WTR=PYR(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4))
79131           IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2
79132           IF(WTR.LT.WTD(3)+WTD(4)) ID=3
79133           IF(WTR.LT.WTD(4)) ID=4
79134           IF(ID.GE.2) GOTO 130
79135         ENDIF
79136         MSTJ(120)=5
79137         PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16D0*WTTOT)
79138   140   KFLN=1+INT(5D0*PYR(0))
79139         IF(KFLN.NE.KFL.AND.0.2D0*PARJ(156).LE.PYR(0)) GOTO 140
79140         IF(KFLN.EQ.KFL.AND.1D0-0.8D0*PARJ(156).LE.PYR(0)) GOTO 140
79141         IF(KFLN.GT.MSTJ(104)) NJET=2
79142         PMQN=PYMASS(KFLN)
79143         QMEN=(2D0*PMQN/ECM)**2
79144  
79145 C...Mass cuts. Kinematical variables out.
79146         IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1D0*QMEN) NJET=2
79147         IF(NJET.EQ.2) GOTO 150
79148         Q24=0.5D0*(1D0-SQRT(1D0-QME/Y24))
79149         Q13=0.5D0*(1D0-SQRT(1D0-QMEN/Y13))
79150         X1=1D0-(1D0-Q24)*Y123-Q24*Y134
79151         X4=1D0-(1D0-Q24)*Y134-Q24*Y123
79152         X2=1D0-(1D0-Q13)*Y234-Q13*Y124
79153         X12=(1D0-Q24)*((1D0-Q13)*Y14+Q13*Y34)+Q24*((1D0-Q13)*Y12+
79154      &  Q13*Y23)
79155         X14=Y24-0.5D0*QME
79156         X34=(1D0-Q24)*((1D0-Q13)*Y23+Q13*Y12)+Q24*((1D0-Q13)*Y34+
79157      &  Q13*Y14)
79158         IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE.
79159      &  (PARJ(127)+PMQ+PMQN)**2) NJET=2
79160         IF(Y123*Y134/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
79161       ENDIF
79162   150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100
79163  
79164       RETURN
79165       END
79166  
79167 C*********************************************************************
79168  
79169 C...PYXDIF
79170 C...Gives the angular orientation of events.
79171  
79172       SUBROUTINE PYXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI)
79173  
79174 C...Double precision and integer declarations.
79175       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79176       IMPLICIT INTEGER(I-N)
79177       INTEGER PYK,PYCHGE,PYCOMP
79178 C...Commonblocks.
79179       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
79180       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
79181       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
79182       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
79183  
79184 C...Charge. Factors depending on polarization for QED case.
79185       QF=KCHG(KFL,1)/3D0
79186       POLL=1D0-PARJ(131)*PARJ(132)
79187       POLD=PARJ(132)-PARJ(131)
79188       IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN
79189         HF1=POLL
79190         HF2=0D0
79191         HF3=PARJ(133)**2
79192         HF4=0D0
79193  
79194 C...Factors depending on flavour, energy and polarization for QFD case.
79195       ELSE
79196         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
79197         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
79198         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
79199         AE=-1D0
79200         VE=4D0*PARU(102)-1D0
79201         AF=SIGN(1D0,QF)
79202         VF=AF-4D0*QF*PARU(102)
79203         HF1=QF**2*POLL-2D0*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+
79204      &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2D0*VE*AE*POLD)
79205         HF2=-2D0*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2D0*VF*AF*SFW*SFF**2*
79206      &  (2D0*VE*AE*POLL-(VE**2+AE**2)*POLD)
79207         HF3=PARJ(133)**2*(QF**2-2D0*QF*VF*SFI*SFF*VE+(VF**2+AF**2)*
79208      &  SFW*SFF**2*(VE**2-AE**2))
79209         HF4=-PARJ(133)**2*2D0*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)*
79210      &  SFF*AE
79211       ENDIF
79212  
79213 C...Mass factor. Differential cross-sections for two-jet events.
79214       SQ2=SQRT(2D0)
79215       QME=0D0
79216       IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND.
79217      &MSTJ(109).NE.1) QME=(2D0*PYMASS(KFL)/ECM)**2
79218       IF(NJET.EQ.2) THEN
79219         SIGU=4D0*SQRT(1D0-QME)
79220         SIGL=2D0*QME*SQRT(1D0-QME)
79221         SIGT=0D0
79222         SIGI=0D0
79223         SIGA=0D0
79224         SIGP=4D0
79225  
79226 C...Kinematical variables. Reduce four-jet event to three-jet one.
79227       ELSE
79228         IF(NJET.EQ.3) THEN
79229           X1=2D0*P(NC+1,4)/ECM
79230           X2=2D0*P(NC+3,4)/ECM
79231         ELSE
79232           ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+
79233      &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2)
79234           X1=2D0*P(NC+1,4)/ECMR
79235           X2=2D0*P(NC+4,4)/ECMR
79236         ENDIF
79237  
79238 C...Differential cross-sections for three-jet (or reduced four-jet).
79239         XQ=(1D0-X1)/(1D0-X2)
79240         CT12=(X1*X2-2D0*X1-2D0*X2+2D0+QME)/SQRT((X1**2-QME)*(X2**2-QME))
79241         ST12=SQRT(1D0-CT12**2)
79242         IF(MSTJ(109).NE.1) THEN
79243           SIGU=2D0*X1**2+X2**2*(1D0+CT12**2)-QME*(3D0+CT12**2-X1-X2)-
79244      &    QME*X1/XQ+0.5D0*QME*((X2**2-QME)*ST12**2-2D0*X2)*XQ
79245           SIGL=(X2*ST12)**2-QME*(3D0-CT12**2-2.5D0*(X1+X2)+X1*X2+QME)+
79246      &    0.5D0*QME*(X1**2-X1-QME)/XQ+0.5D0*QME*((X2**2-QME)*CT12**2-
79247      &    X2)*XQ
79248           SIGT=0.5D0*(X2**2-QME-0.5D0*QME*(X2**2-QME)/XQ)*ST12**2
79249           SIGI=((1D0-0.5D0*QME*XQ)*(X2**2-QME)*ST12*CT12+
79250      &    QME*(1D0-X1-X2+0.5D0*X1*X2+0.5D0*QME)*ST12/CT12)/SQ2
79251           SIGA=X2**2*ST12/SQ2
79252           SIGP=2D0*(X1**2-X2**2*CT12)
79253  
79254 C...Differential cross-sect for scalar gluons (no mass effects).
79255         ELSE
79256           X3=2D0-X1-X2
79257           XT=X2*ST12
79258           CT13=SQRT(MAX(0D0,1D0-(XT/X3)**2))
79259           SIGU=(1D0-PARJ(171))*(X3**2-0.5D0*XT**2)+
79260      &    PARJ(171)*(X3**2-0.5D0*XT**2-4D0*(1D0-X1)*(1D0-X2)**2/X1)
79261           SIGL=(1D0-PARJ(171))*0.5D0*XT**2+
79262      &    PARJ(171)*0.5D0*(1D0-X1)**2*XT**2
79263           SIGT=(1D0-PARJ(171))*0.25D0*XT**2+
79264      &    PARJ(171)*0.25D0*XT**2*(1D0-2D0*X1)
79265           SIGI=-(0.5D0/SQ2)*((1D0-PARJ(171))*XT*X3*CT13+
79266      &    PARJ(171)*XT*((1D0-2D0*X1)*X3*CT13-X1*(X1-X2)))
79267           SIGA=(0.25D0/SQ2)*XT*(2D0*(1D0-X1)-X1*X3)
79268           SIGP=X3**2-2D0*(1D0-X1)*(1D0-X2)/X1
79269         ENDIF
79270       ENDIF
79271  
79272 C...Upper bounds for differential cross-section.
79273       HF1A=ABS(HF1)
79274       HF2A=ABS(HF2)
79275       HF3A=ABS(HF3)
79276       HF4A=ABS(HF4)
79277       SIGMAX=(2D0*HF1A+HF3A+HF4A)*ABS(SIGU)+2D0*(HF1A+HF3A+HF4A)*
79278      &ABS(SIGL)+2D0*(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGT)+2D0*SQ2*
79279      &(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGI)+4D0*SQ2*HF2A*ABS(SIGA)+
79280      &2D0*HF2A*ABS(SIGP)
79281  
79282 C...Generate angular orientation according to differential cross-sect.
79283   100 CHI=PARU(2)*PYR(0)
79284       CTHE=2D0*PYR(0)-1D0
79285       PHI=PARU(2)*PYR(0)
79286       CCHI=COS(CHI)
79287       SCHI=SIN(CHI)
79288       C2CHI=COS(2D0*CHI)
79289       S2CHI=SIN(2D0*CHI)
79290       THE=ACOS(CTHE)
79291       STHE=SIN(THE)
79292       C2PHI=COS(2D0*(PHI-PARJ(134)))
79293       S2PHI=SIN(2D0*(PHI-PARJ(134)))
79294       SIG=((1D0+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+
79295      &2D0*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+
79296      &2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*C2CHI*C2PHI-2D0*CTHE*S2CHI*
79297      &S2PHI)*HF3-((1D0+CTHE**2)*C2CHI*S2PHI+2D0*CTHE*S2CHI*C2PHI)*HF4)*
79298      &SIGT-2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*(CTHE*CCHI*C2PHI-
79299      &SCHI*S2PHI)*HF3+2D0*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+
79300      &4D0*SQ2*STHE*CCHI*HF2*SIGA+2D0*CTHE*HF2*SIGP
79301       IF(SIG.LT.SIGMAX*PYR(0)) GOTO 100
79302  
79303       RETURN
79304       END
79305  
79306 C*********************************************************************
79307  
79308 C...PYONIA
79309 C...Generates Upsilon and toponium decays into three gluons
79310 C...or two gluons and a photon.
79311  
79312       SUBROUTINE PYONIA(KFL,ECM)
79313  
79314 C...Double precision and integer declarations.
79315       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79316       IMPLICIT INTEGER(I-N)
79317       INTEGER PYK,PYCHGE,PYCOMP
79318 C...Commonblocks.
79319       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
79320       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
79321       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
79322       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
79323  
79324 C...Printout. Check input parameters.
79325       IF(MSTU(12).NE.12345) CALL PYLIST(0)
79326       IF(KFL.LT.0.OR.KFL.GT.8) THEN
79327         CALL PYERRM(16,'(PYONIA:) called with unknown flavour code')
79328         IF(MSTU(21).GE.1) RETURN
79329       ENDIF
79330       IF(ECM.LT.PARJ(127)+2.02D0*PARF(101)) THEN
79331         CALL PYERRM(16,'(PYONIA:) called with too small CM energy')
79332         IF(MSTU(21).GE.1) RETURN
79333       ENDIF
79334  
79335 C...Initial e+e- and onium state (optional).
79336       NC=0
79337       IF(MSTJ(115).GE.2) THEN
79338         NC=NC+2
79339         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
79340         K(NC-1,1)=21
79341         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
79342         K(NC,1)=21
79343       ENDIF
79344       KFLC=IABS(KFL)
79345       IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN
79346         NC=NC+1
79347         KF=110*KFLC+3
79348         MSTU10=MSTU(10)
79349         MSTU(10)=1
79350         P(NC,5)=ECM
79351         CALL PY1ENT(NC,KF,ECM,0D0,0D0)
79352         K(NC,1)=21
79353         K(NC,3)=1
79354         MSTU(10)=MSTU10
79355       ENDIF
79356  
79357 C...Choose x1 and x2 according to matrix element.
79358       NTRY=0
79359   100 X1=PYR(0)
79360       X2=PYR(0)
79361       X3=2D0-X1-X2
79362       IF(X3.GE.1D0.OR.((1D0-X1)/(X2*X3))**2+((1D0-X2)/(X1*X3))**2+
79363      &((1D0-X3)/(X1*X2))**2.LE.2D0*PYR(0)) GOTO 100
79364       NTRY=NTRY+1
79365       NJET=3
79366       IF(MSTJ(101).LE.4) CALL PY3ENT(NC+1,21,21,21,ECM,X1,X3)
79367       IF(MSTJ(101).GE.5) CALL PY3ENT(-(NC+1),21,21,21,ECM,X1,X3)
79368  
79369 C...Photon-gluon-gluon events. Small system modifications. Jet origin.
79370       MSTU(111)=MSTJ(108)
79371       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
79372      &MSTU(111)=1
79373       PARU(112)=PARJ(121)
79374       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
79375       QF=0D0
79376       IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3D0
79377       RGAM=7.2D0*QF**2*PARU(101)/PYALPS(ECM**2)
79378       MK=0
79379       ECMC=ECM
79380       IF(PYR(0).GT.RGAM/(1D0+RGAM)) THEN
79381         IF(1D0-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125)))
79382      &  NJET=2
79383         IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL PY2ENT(NC+1,21,21,ECM)
79384         IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL PY2ENT(-(NC+1),21,21,ECM)
79385       ELSE
79386         MK=1
79387         ECMC=SQRT(1D0-X1)*ECM
79388         IF(ECMC.LT.2D0*PARJ(127)) GOTO 100
79389         K(NC+1,1)=1
79390         K(NC+1,2)=22
79391         K(NC+1,4)=0
79392         K(NC+1,5)=0
79393         IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3)
79394         IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3)
79395         IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2)
79396         IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2)
79397         NJET=2
79398         IF(ECMC.LT.4D0*PARJ(127)) THEN
79399           MSTU10=MSTU(10)
79400           MSTU(10)=1
79401           P(NC+2,5)=ECMC
79402           CALL PY1ENT(NC+2,83,0.5D0*(X2+X3)*ECM,PARU(1),0D0)
79403           MSTU(10)=MSTU10
79404           NJET=0
79405         ENDIF
79406       ENDIF
79407       DO 110 IP=NC+1,N
79408         K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1)
79409   110 CONTINUE
79410  
79411 C...Differential cross-sections. Upper limit for cross-section.
79412       IF(MSTJ(106).EQ.1) THEN
79413         SQ2=SQRT(2D0)
79414         HF1=1D0-PARJ(131)*PARJ(132)
79415         HF3=PARJ(133)**2
79416         CT13=(X1*X3-2D0*X1-2D0*X3+2D0)/(X1*X3)
79417         ST13=SQRT(1D0-CT13**2)
79418         SIGL=0.5D0*X3**2*((1D0-X2)**2+(1D0-X3)**2)*ST13**2
79419         SIGU=(X1*(1D0-X1))**2+(X2*(1D0-X2))**2+(X3*(1D0-X3))**2-SIGL
79420         SIGT=0.5D0*SIGL
79421         SIGI=(SIGL*CT13/ST13+0.5D0*X1*X3*(1D0-X2)**2*ST13)/SQ2
79422         SIGMAX=(2D0*HF1+HF3)*ABS(SIGU)+2D0*(HF1+HF3)*ABS(SIGL)+2D0*(HF1+
79423      &  2D0*HF3)*ABS(SIGT)+2D0*SQ2*(HF1+2D0*HF3)*ABS(SIGI)
79424  
79425 C...Angular orientation of event.
79426   120   CHI=PARU(2)*PYR(0)
79427         CTHE=2D0*PYR(0)-1D0
79428         PHI=PARU(2)*PYR(0)
79429         CCHI=COS(CHI)
79430         SCHI=SIN(CHI)
79431         C2CHI=COS(2D0*CHI)
79432         S2CHI=SIN(2D0*CHI)
79433         THE=ACOS(CTHE)
79434         STHE=SIN(THE)
79435         C2PHI=COS(2D0*(PHI-PARJ(134)))
79436         S2PHI=SIN(2D0*(PHI-PARJ(134)))
79437         SIG=((1D0+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2D0*(STHE**2*HF1-
79438      &  STHE**2*C2PHI*HF3)*SIGL+2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*
79439      &  C2CHI*C2PHI-2D0*CTHE*S2CHI*S2PHI)*HF3)*SIGT-
79440      &  2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*
79441      &  (CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI
79442         IF(SIG.LT.SIGMAX*PYR(0)) GOTO 120
79443         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
79444         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
79445       ENDIF
79446  
79447 C...Generate parton shower. Rearrange along strings and check.
79448       IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN
79449         CALL PYSHOW(NC+MK+1,-NJET,ECMC)
79450         MSTJ14=MSTJ(14)
79451         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
79452         IF(MSTJ(105).GE.0) MSTU(28)=0
79453         CALL PYPREP(0)
79454         MSTJ(14)=MSTJ14
79455         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
79456       ENDIF
79457  
79458 C...Generate fragmentation. Information for PYTABU:
79459       IF(MSTJ(105).EQ.1) CALL PYEXEC
79460       MSTU(161)=110*KFLC+3
79461       MSTU(162)=0
79462  
79463       RETURN
79464       END
79465  
79466 C*********************************************************************
79467  
79468 C...PYBOOK
79469 C...Books a histogram.
79470  
79471       SUBROUTINE PYBOOK(ID,TITLE,NX,XL,XU)
79472  
79473 C...Double precision declaration.
79474       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79475       IMPLICIT INTEGER(I-N)
79476 C...Commonblock.
79477       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
79478       SAVE /PYBINS/
79479 C...Local character variables.
79480       CHARACTER TITLE*(*), TITFX*60
79481  
79482 C...Check that input is sensible. Find initial address in memory.
79483       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
79484      &'(PYBOOK:) not allowed histogram number')
79485       IF(NX.LE.0.OR.NX.GT.100) CALL PYERRM(28,
79486      &'(PYBOOK:) not allowed number of bins')
79487       IF(XL.GE.XU) CALL PYERRM(28,
79488      &'(PYBOOK:) x limits in wrong order')
79489       INDX(ID)=IHIST(4)
79490       IHIST(4)=IHIST(4)+28+NX
79491       IF(IHIST(4).GT.IHIST(2)) CALL PYERRM(28,
79492      &'(PYBOOK:) out of histogram space')
79493       IS=INDX(ID)
79494  
79495 C...Store histogram size and reset contents.
79496       BIN(IS+1)=NX
79497       BIN(IS+2)=XL
79498       BIN(IS+3)=XU
79499       BIN(IS+4)=(XU-XL)/NX
79500       CALL PYNULL(ID)
79501  
79502 C...Store title by conversion to integer to double precision.
79503       TITFX=TITLE//' '
79504       DO 100 IT=1,20
79505         BIN(IS+8+NX+IT)=256**2*ICHAR(TITFX(3*IT-2:3*IT-2))+
79506      &  256*ICHAR(TITFX(3*IT-1:3*IT-1))+ICHAR(TITFX(3*IT:3*IT))
79507   100 CONTINUE
79508  
79509       RETURN
79510       END
79511  
79512 C*********************************************************************
79513  
79514 C...PYFILL
79515 C...Fills entry in histogram.
79516  
79517       SUBROUTINE PYFILL(ID,X,W)
79518  
79519 C...Double precision declaration.
79520       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79521       IMPLICIT INTEGER(I-N)
79522 C...Commonblock.
79523       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
79524       SAVE /PYBINS/
79525  
79526 C...Find initial address in memory. Increase number of entries.
79527       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
79528      &'(PYFILL:) not allowed histogram number')
79529       IS=INDX(ID)
79530       IF(IS.EQ.0) CALL PYERRM(28,
79531      &'(PYFILL:) filling unbooked histogram')
79532       BIN(IS+5)=BIN(IS+5)+1D0
79533  
79534 C...Find bin in x, including under/overflow, and fill.
79535       IF(X.LT.BIN(IS+2)) THEN
79536         BIN(IS+6)=BIN(IS+6)+W
79537       ELSEIF(X.GE.BIN(IS+3)) THEN
79538         BIN(IS+8)=BIN(IS+8)+W
79539       ELSE
79540         BIN(IS+7)=BIN(IS+7)+W
79541         IX=(X-BIN(IS+2))/BIN(IS+4)
79542         IX=MAX(0,MIN(NINT(BIN(IS+1))-1,IX))
79543         BIN(IS+9+IX)=BIN(IS+9+IX)+W
79544       ENDIF
79545  
79546       RETURN
79547       END
79548  
79549 C*********************************************************************
79550  
79551 C...PYFACT
79552 C...Multiplies histogram contents by factor.
79553  
79554       SUBROUTINE PYFACT(ID,F)
79555  
79556 C...Double precision declaration.
79557       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79558       IMPLICIT INTEGER(I-N)
79559 C...Commonblock.
79560       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
79561       SAVE /PYBINS/
79562  
79563 C...Find initial address in memory. Multiply all contents bins.
79564       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
79565      &'(PYFACT:) not allowed histogram number')
79566       IS=INDX(ID)
79567       IF(IS.EQ.0) CALL PYERRM(28,
79568      &'(PYFACT:) scaling unbooked histogram')
79569       DO 100 IX=IS+6,IS+8+NINT(BIN(IS+1))
79570         BIN(IX)=F*BIN(IX)
79571   100 CONTINUE
79572  
79573       RETURN
79574       END
79575  
79576 C*********************************************************************
79577  
79578 C...PYOPER
79579 C...Performs operations between histograms.
79580  
79581       SUBROUTINE PYOPER(ID1,OPER,ID2,ID3,F1,F2)
79582  
79583 C...Double precision declaration.
79584       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79585       IMPLICIT INTEGER(I-N)
79586 C...Commonblock.
79587       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
79588       SAVE /PYBINS/
79589 C...Character variable.
79590       CHARACTER OPER*(*)
79591  
79592 C...Find initial addresses in memory, and histogram size.
79593       IF(ID1.LE.0.OR.ID1.GT.IHIST(1)) CALL PYERRM(28,
79594      &'(PYFACT:) not allowed histogram number')
79595       IS1=INDX(ID1)
79596       IS2=INDX(MIN(IHIST(1),MAX(1,ID2)))
79597       IS3=INDX(MIN(IHIST(1),MAX(1,ID3)))
79598       NX=NINT(BIN(IS3+1))
79599       IF(OPER.EQ.'M'.AND.ID3.EQ.0) NX=NINT(BIN(IS2+1))
79600  
79601 C...Update info on number of histogram entries.
79602       IF(OPER.EQ.'+'.OR.OPER.EQ.'-'.OR.OPER.EQ.'*'.OR.OPER.EQ.'/') THEN
79603         BIN(IS3+5)=BIN(IS1+5)+BIN(IS2+5)
79604       ELSEIF(OPER.EQ.'A'.OR.OPER.EQ.'S'.OR.OPER.EQ.'L') THEN
79605         BIN(IS3+5)=BIN(IS1+5)
79606       ENDIF
79607  
79608 C...Operations on pair of histograms: addition, subtraction,
79609 C...multiplication, division.
79610       IF(OPER.EQ.'+') THEN
79611         DO 100 IX=6,8+NX
79612           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2*BIN(IS2+IX)
79613   100   CONTINUE
79614       ELSEIF(OPER.EQ.'-') THEN
79615         DO 110 IX=6,8+NX
79616           BIN(IS3+IX)=F1*BIN(IS1+IX)-F2*BIN(IS2+IX)
79617   110   CONTINUE
79618       ELSEIF(OPER.EQ.'*') THEN
79619         DO 120 IX=6,8+NX
79620           BIN(IS3+IX)=F1*BIN(IS1+IX)*F2*BIN(IS2+IX)
79621   120   CONTINUE
79622       ELSEIF(OPER.EQ.'/') THEN
79623         DO 130 IX=6,8+NX
79624           FA2=F2*BIN(IS2+IX)
79625           IF(ABS(FA2).LE.1D-20) THEN
79626             BIN(IS3+IX)=0D0
79627           ELSE
79628             BIN(IS3+IX)=F1*BIN(IS1+IX)/FA2
79629           ENDIF
79630   130   CONTINUE
79631  
79632 C...Operations on single histogram: multiplication+addition,
79633 C...square root+addition, logarithm+addition.
79634       ELSEIF(OPER.EQ.'A') THEN
79635         DO 140 IX=6,8+NX
79636           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2
79637   140   CONTINUE
79638       ELSEIF(OPER.EQ.'S') THEN
79639         DO 150 IX=6,8+NX
79640           BIN(IS3+IX)=F1*SQRT(MAX(0D0,BIN(IS1+IX)))+F2
79641   150   CONTINUE
79642       ELSEIF(OPER.EQ.'L') THEN
79643         ZMIN=1D20
79644         DO 160 IX=9,8+NX
79645           IF(BIN(IS1+IX).LT.ZMIN.AND.BIN(IS1+IX).GT.1D-20)
79646      &    ZMIN=0.8D0*BIN(IS1+IX)
79647   160   CONTINUE
79648         DO 170 IX=6,8+NX
79649           BIN(IS3+IX)=F1*LOG10(MAX(ZMIN,BIN(IS1+IX)))+F2
79650   170   CONTINUE
79651  
79652 C...Operation on two or three histograms: average and
79653 C...standard deviation.
79654       ELSEIF(OPER.EQ.'M') THEN
79655         DO 180 IX=6,8+NX
79656           IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
79657             BIN(IS2+IX)=0D0
79658           ELSE
79659             BIN(IS2+IX)=BIN(IS2+IX)/BIN(IS1+IX)
79660           ENDIF
79661           IF(ID3.NE.0) THEN
79662             IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
79663               BIN(IS3+IX)=0D0
79664             ELSE
79665               BIN(IS3+IX)=SQRT(MAX(0D0,BIN(IS3+IX)/BIN(IS1+IX)-
79666      &        BIN(IS2+IX)**2))
79667             ENDIF
79668           ENDIF
79669           BIN(IS1+IX)=F1*BIN(IS1+IX)
79670   180   CONTINUE
79671       ENDIF
79672  
79673       RETURN
79674       END
79675  
79676 C*********************************************************************
79677  
79678 C...PYHIST
79679 C...Prints and resets all histograms.
79680  
79681       SUBROUTINE PYHIST
79682  
79683 C...Double precision declaration.
79684       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79685       IMPLICIT INTEGER(I-N)
79686 C...Commonblock.
79687       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
79688       SAVE /PYBINS/
79689  
79690 C...Loop over histograms, print and reset used ones.
79691       DO 100 ID=1,IHIST(1)
79692         IS=INDX(ID)
79693         IF(IS.NE.0.AND.NINT(BIN(IS+5)).GT.0) THEN
79694           CALL PYPLOT(ID)
79695           CALL PYNULL(ID)
79696         ENDIF
79697   100 CONTINUE
79698  
79699       RETURN
79700       END
79701  
79702 C*********************************************************************
79703  
79704 C...PYPLOT
79705 C...Prints a histogram (but does not reset it).
79706  
79707       SUBROUTINE PYPLOT(ID)
79708  
79709 C...Double precision declaration.
79710       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79711       IMPLICIT INTEGER(I-N)
79712 C...Commonblocks.
79713       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
79714       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
79715       SAVE /PYDAT1/,/PYBINS/
79716 C...Local arrays and character variables.
79717       DIMENSION IDATI(6), IROW(100), IFRA(100), DYAC(10)
79718       CHARACTER TITLE*60, OUT*100, CHA(0:11)*1
79719  
79720 C...Steps in histogram scale. Character sequence.
79721       DATA DYAC/.04,.05,.06,.08,.10,.12,.15,.20,.25,.30/
79722       DATA CHA/'0','1','2','3','4','5','6','7','8','9','X','-'/
79723  
79724 C...Find initial address in memory; skip if empty histogram.
79725       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
79726       IS=INDX(ID)
79727       IF(IS.EQ.0) RETURN
79728       IF(NINT(BIN(IS+5)).LE.0) THEN
79729         WRITE(MSTU(11),5000) ID
79730         RETURN
79731       ENDIF
79732  
79733 C...Number of histogram lines and x bins.
79734       LIN=IHIST(3)-18
79735       NX=NINT(BIN(IS+1))
79736  
79737 C...Extract title by conversion from double precision via integer.
79738       DO 100 IT=1,20
79739         IEQ=NINT(BIN(IS+8+NX+IT))
79740         TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//CHAR(MOD(IEQ,256**2)/256)
79741      &  //CHAR(MOD(IEQ,256))
79742   100 CONTINUE
79743  
79744 C...Find time; print title.
79745       CALL PYTIME(IDATI)
79746       IF(IDATI(1).GT.0) THEN
79747         WRITE(MSTU(11),5100) ID, TITLE, (IDATI(J),J=1,5)
79748       ELSE
79749         WRITE(MSTU(11),5200) ID, TITLE
79750       ENDIF
79751  
79752 C...Find minimum and maximum bin content.
79753       YMIN=BIN(IS+9)
79754       YMAX=BIN(IS+9)
79755       DO 110 IX=IS+10,IS+8+NX
79756         IF(BIN(IX).LT.YMIN) YMIN=BIN(IX)
79757         IF(BIN(IX).GT.YMAX) YMAX=BIN(IX)
79758   110 CONTINUE
79759  
79760 C...Determine scale and step size for y axis.
79761       IF(YMAX-YMIN.GT.LIN*DYAC(1)*1D-9) THEN
79762         IF(YMIN.GT.0D0.AND.YMIN.LT.0.1D0*YMAX) YMIN=0D0
79763         IF(YMAX.LT.0D0.AND.YMAX.GT.0.1D0*YMIN) YMAX=0D0
79764         IPOT=INT(LOG10(YMAX-YMIN)+10D0)-10
79765         IF(YMAX-YMIN.LT.LIN*DYAC(1)*10D0**IPOT) IPOT=IPOT-1
79766         IF(YMAX-YMIN.GT.LIN*DYAC(10)*10D0**IPOT) IPOT=IPOT+1
79767         DELY=DYAC(1)
79768         DO 120 IDEL=1,9
79769           IF(YMAX-YMIN.GE.LIN*DYAC(IDEL)*10D0**IPOT) DELY=DYAC(IDEL+1)
79770   120   CONTINUE
79771         DY=DELY*10D0**IPOT
79772  
79773 C...Convert bin contents to integer form; fractional fill in top row.
79774         DO 130 IX=1,NX
79775           CTA=ABS(BIN(IS+8+IX))/DY
79776           IROW(IX)=SIGN(CTA+0.95D0,BIN(IS+8+IX))
79777           IFRA(IX)=10D0*(CTA+1.05D0-DBLE(INT(CTA+0.95D0)))
79778   130   CONTINUE
79779         IRMI=SIGN(ABS(YMIN)/DY+0.95D0,YMIN)
79780         IRMA=SIGN(ABS(YMAX)/DY+0.95D0,YMAX)
79781  
79782 C...Print histogram row by row.
79783         DO 150 IR=IRMA,IRMI,-1
79784           IF(IR.EQ.0) GOTO 150
79785           OUT=' '
79786           DO 140 IX=1,NX
79787             IF(IR.EQ.IROW(IX)) OUT(IX:IX)=CHA(IFRA(IX))
79788             IF(IR*(IROW(IX)-IR).GT.0) OUT(IX:IX)=CHA(10)
79789   140     CONTINUE
79790           WRITE(MSTU(11),5300) IR*DELY, IPOT, OUT
79791   150   CONTINUE
79792  
79793 C...Print sign and value of bin contents.
79794         IPOT=INT(LOG10(MAX(YMAX,-YMIN))+10.0001D0)-10
79795         OUT=' '
79796         DO 160 IX=1,NX
79797           IF(BIN(IS+8+IX).LT.-10D0**(IPOT-4)) OUT(IX:IX)=CHA(11)
79798           IROW(IX)=NINT(10D0**(3-IPOT)*ABS(BIN(IS+8+IX)))
79799   160   CONTINUE
79800         WRITE(MSTU(11),5400) OUT
79801         DO 180 IR=4,1,-1
79802           DO 170 IX=1,NX
79803             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
79804   170     CONTINUE
79805           WRITE(MSTU(11),5500) IPOT+IR-4, OUT
79806   180   CONTINUE
79807  
79808 C...Print sign and value of lower bin edge.
79809         IPOT=INT(LOG10(MAX(-BIN(IS+2),BIN(IS+3)-BIN(IS+4)))+
79810      &  10.0001D0)-10
79811         OUT=' '
79812         DO 190 IX=1,NX
79813           IF(BIN(IS+2)+(IX-1)*BIN(IS+4).LT.-10D0**(IPOT-3))
79814      &    OUT(IX:IX)=CHA(11)
79815           IROW(IX)=NINT(10D0**(2-IPOT)*ABS(BIN(IS+2)+(IX-1)*BIN(IS+4)))
79816   190   CONTINUE
79817         WRITE(MSTU(11),5600) OUT
79818         DO 210 IR=3,1,-1
79819           DO 200 IX=1,NX
79820             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
79821   200     CONTINUE
79822           WRITE(MSTU(11),5500) IPOT+IR-3, OUT
79823   210   CONTINUE
79824       ENDIF
79825  
79826 C...Calculate and print statistics.
79827       CSUM=0D0
79828       CXSUM=0D0
79829       CXXSUM=0D0
79830       DO 220 IX=1,NX
79831         CTA=ABS(BIN(IS+8+IX))
79832         X=BIN(IS+2)+(IX-0.5D0)*BIN(IS+4)
79833         CSUM=CSUM+CTA
79834         CXSUM=CXSUM+CTA*X
79835         CXXSUM=CXXSUM+CTA*X**2
79836   220 CONTINUE
79837       XMEAN=CXSUM/MAX(CSUM,1D-20)
79838       XRMS=SQRT(MAX(0D0,CXXSUM/MAX(CSUM,1D-20)-XMEAN**2))
79839       WRITE(MSTU(11),5700) NINT(BIN(IS+5)),XMEAN,BIN(IS+6),
79840      &BIN(IS+2),BIN(IS+7),XRMS,BIN(IS+8),BIN(IS+3)
79841  
79842 C...Formats for output.
79843  5000 FORMAT(/5X,'Histogram no',I5,' : no entries')
79844  5100 FORMAT('1'/5X,'Histogram no',I5,6X,A60,5X,I4,'-',I2,'-',I2,1X,
79845      &I2,':',I2/)
79846  5200 FORMAT('1'/5X,'Histogram no',I5,6X,A60/)
79847  5300 FORMAT(2X,F7.2,'*10**',I2,3X,A100)
79848  5400 FORMAT(/8X,'Contents',3X,A100)
79849  5500 FORMAT(9X,'*10**',I2,3X,A100)
79850  5600 FORMAT(/8X,'Low edge',3X,A100)
79851  5700 FORMAT(/5X,'Entries  =',I12,1P,6X,'Mean =',D12.4,6X,'Underflow ='
79852      &,D12.4,6X,'Low edge  =',D12.4/5X,'All chan =',D12.4,6X,
79853      &'Rms  =',D12.4,6X,'Overflow  =',D12.4,6X,'High edge =',D12.4)
79854  
79855       RETURN
79856       END
79857  
79858 C*********************************************************************
79859  
79860 C...PYNULL
79861 C...Resets bin contents of a histogram.
79862  
79863       SUBROUTINE PYNULL(ID)
79864  
79865 C...Double precision declaration.
79866       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79867       IMPLICIT INTEGER(I-N)
79868 C...Commonblock.
79869       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
79870       SAVE /PYBINS/
79871  
79872       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
79873       IS=INDX(ID)
79874       IF(IS.EQ.0) RETURN
79875       DO 100 IX=IS+5,IS+8+NINT(BIN(IS+1))
79876         BIN(IX)=0D0
79877   100 CONTINUE
79878  
79879       RETURN
79880       END
79881  
79882 C*********************************************************************
79883  
79884 C...PYDUMP
79885 C...Dumps histogram contents on file for reading by other program.
79886 C...Can also read back own dump.
79887  
79888       SUBROUTINE PYDUMP(MDUMP,LFN,NHI,IHI)
79889  
79890 C...Double precision declaration.
79891       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
79892       IMPLICIT INTEGER(I-N)
79893 C...Commonblock.
79894       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
79895       SAVE /PYBINS/
79896 C...Local arrays and character variables.
79897       DIMENSION IHI(*),ISS(100),VAL(5)
79898       CHARACTER TITLE*60,FORMAT*13
79899  
79900 C...Dump all histograms that have been booked,
79901 C...including titles and ranges, one after the other.
79902       IF(MDUMP.EQ.1) THEN
79903  
79904 C...Loop over histograms and find which are wanted and booked.
79905         IF(NHI.LE.0) THEN
79906           NW=IHIST(1)
79907         ELSE
79908           NW=NHI
79909         ENDIF
79910         DO 130 IW=1,NW
79911           IF(NHI.EQ.0) THEN
79912             ID=IW
79913           ELSE
79914             ID=IHI(IW)
79915           ENDIF
79916           IS=INDX(ID)
79917           IF(IS.NE.0) THEN
79918  
79919 C...Write title, histogram size, filling statistics.
79920             NX=NINT(BIN(IS+1))
79921             DO 100 IT=1,20
79922               IEQ=NINT(BIN(IS+8+NX+IT))
79923               TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//
79924      &        CHAR(MOD(IEQ,256**2)/256)//CHAR(MOD(IEQ,256))
79925   100       CONTINUE
79926             WRITE(LFN,5100) ID,TITLE
79927             WRITE(LFN,5200) NX,BIN(IS+2),BIN(IS+3)
79928             WRITE(LFN,5300) NINT(BIN(IS+5)),BIN(IS+6),BIN(IS+7),
79929      &      BIN(IS+8)
79930  
79931  
79932 C...Write histogram contents, in groups of five.
79933             DO 120 IXG=1,(NX+4)/5
79934               DO 110 IXV=1,5
79935                 IX=5*IXG+IXV-5
79936                 IF(IX.LE.NX) THEN
79937                   VAL(IXV)=BIN(IS+8+IX)
79938                 ELSE
79939                   VAL(IXV)=0D0
79940                 ENDIF
79941   110         CONTINUE
79942               WRITE(LFN,5400) (VAL(IXV),IXV=1,5)
79943   120       CONTINUE
79944  
79945 C...Go to next histogram; finish.
79946           ELSEIF(NHI.GT.0) THEN
79947             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
79948           ENDIF
79949   130   CONTINUE
79950  
79951 C...Read back in histograms dumped MDUMP=1.
79952       ELSEIF(MDUMP.EQ.2) THEN
79953  
79954 C...Read histogram number, title and range, and book.
79955   140   READ(LFN,5100,END=170) ID,TITLE
79956         READ(LFN,5200) NX,XL,XU
79957         CALL PYBOOK(ID,TITLE,NX,XL,XU)
79958         IS=INDX(ID)
79959  
79960 C...Read filling statistics.
79961         READ(LFN,5300) NENTRY,BIN(IS+6),BIN(IS+7),BIN(IS+8)
79962         BIN(IS+5)=DBLE(NENTRY)
79963  
79964 C...Read histogram contents, in groups of five.
79965         DO 160 IXG=1,(NX+4)/5
79966           READ(LFN,5400) (VAL(IXV),IXV=1,5)
79967           DO 150 IXV=1,5
79968             IX=5*IXG+IXV-5
79969             IF(IX.LE.NX) BIN(IS+8+IX)=VAL(IXV)
79970   150     CONTINUE
79971   160   CONTINUE
79972  
79973 C...Go to next histogram; finish.
79974         GOTO 140
79975   170   CONTINUE
79976  
79977 C...Write histogram contents in column format,
79978 C...convenient e.g. for GNUPLOT input.
79979       ELSEIF(MDUMP.EQ.3) THEN
79980  
79981 C...Find addresses to wanted histograms.
79982         NSS=0
79983         IF(NHI.LE.0) THEN
79984           NW=IHIST(1)
79985         ELSE
79986           NW=NHI
79987         ENDIF
79988         DO 180 IW=1,NW
79989           IF(NHI.EQ.0) THEN
79990             ID=IW
79991           ELSE
79992             ID=IHI(IW)
79993           ENDIF
79994           IS=INDX(ID)
79995           IF(IS.NE.0.AND.NSS.LT.100) THEN
79996             NSS=NSS+1
79997             ISS(NSS)=IS
79998           ELSEIF(NSS.GE.100) THEN
79999             CALL PYERRM(8,'(PYDUMP:) too many histograms requested')
80000           ELSEIF(NHI.GT.0) THEN
80001             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
80002           ENDIF
80003   180   CONTINUE
80004  
80005 C...Check that they have common number of x bins. Fix format.
80006         NX=NINT(BIN(ISS(1)+1))
80007         DO 190 IW=2,NSS
80008           IF(NINT(BIN(ISS(IW)+1)).NE.NX) THEN
80009             CALL PYERRM(8,'(PYDUMP:) different number of bins')
80010             RETURN
80011           ENDIF
80012   190   CONTINUE
80013         FORMAT='(1P,000E12.4)'
80014         WRITE(FORMAT(5:7),'(I3)') NSS+1
80015  
80016 C...Write histogram contents; first column x values.
80017         DO 200 IX=1,NX
80018           X=BIN(ISS(1)+2)+(IX-0.5D0)*BIN(ISS(1)+4)
80019           WRITE(LFN,FORMAT) X, (BIN(ISS(IW)+8+IX),IW=1,NSS)
80020   200   CONTINUE
80021  
80022       ENDIF
80023  
80024 C...Formats for output.
80025  5100 FORMAT(I5,5X,A60)
80026  5200 FORMAT(I5,1P,2D12.4)
80027  5300 FORMAT(I12,1P,3D12.4)
80028  5400 FORMAT(1P,5D12.4)
80029  
80030       RETURN
80031       END
80032  
80033 C*********************************************************************
80034  
80035 C...PYSTOP
80036 C...Allows users to handle STOP statemens
80037  
80038       SUBROUTINE PYSTOP(MCOD)
80039  
80040 C...Double precision and integer declarations.
80041       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80042       IMPLICIT INTEGER(I-N)
80043       INTEGER PYK,PYCHGE,PYCOMP
80044 C...Commonblocks.
80045       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80046       SAVE /PYDAT1/
80047 
80048  
80049 C...Write message, then stop
80050       WRITE(MSTU(11),5000) MCOD
80051       STOP
80052 
80053  
80054 C...Formats for output.
80055  5000 FORMAT(/5X,'PYSTOP called with code: ',I4)
80056       END
80057  
80058 C*********************************************************************
80059  
80060 C...PYKCUT
80061 C...Dummy routine, which the user can replace in order to make cuts on
80062 C...the kinematics on the parton level before the matrix elements are
80063 C...evaluated and the event is generated. The cross-section estimates
80064 C...will automatically take these cuts into account, so the given
80065 C...values are for the allowed phase space region only. MCUT=0 means
80066 C...that the event has passed the cuts, MCUT=1 that it has failed.
80067  
80068       SUBROUTINE PYKCUT(MCUT)
80069  
80070 C...Double precision and integer declarations.
80071       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80072       IMPLICIT INTEGER(I-N)
80073       INTEGER PYK,PYCHGE,PYCOMP
80074 C...Commonblocks.
80075       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80076       COMMON/PYINT1/MINT(400),VINT(400)
80077       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
80078       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
80079  
80080 C...Set default value (accepting event) for MCUT.
80081       MCUT=0
80082  
80083 C...Read out subprocess number.
80084       ISUB=MINT(1)
80085       ISTSB=ISET(ISUB)
80086  
80087 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
80088       TAU=VINT(21)
80089       YST=VINT(22)
80090       CTH=0D0
80091       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
80092       TAUP=0D0
80093       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
80094  
80095 C...Calculate x_1, x_2, x_F.
80096       IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN
80097         X1=SQRT(TAU)*EXP(YST)
80098         X2=SQRT(TAU)*EXP(-YST)
80099       ELSE
80100         X1=SQRT(TAUP)*EXP(YST)
80101         X2=SQRT(TAUP)*EXP(-YST)
80102       ENDIF
80103       XF=X1-X2
80104  
80105 C...Calculate shat, that, uhat, p_T^2.
80106       SHAT=TAU*VINT(2)
80107       SQM3=VINT(63)
80108       SQM4=VINT(64)
80109       RM3=SQM3/SHAT
80110       RM4=SQM4/SHAT
80111       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
80112       RPTS=4D0*VINT(71)**2/SHAT
80113       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
80114       RM34=2D0*RM3*RM4
80115       RSQM=1D0+RM34
80116       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
80117       THAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
80118       UHAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
80119       PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2))
80120  
80121 C...Decisions by user to be put here.
80122  
80123 C...Stop program if this routine is ever called.
80124 C...You should not copy these lines to your own routine.
80125       WRITE(MSTU(11),5000)
80126       CALL PYSTOP(6)
80127  
80128 C...Format for error printout.
80129  5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
80130      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
80131      &1X,'Execution stopped!')
80132  
80133       RETURN
80134       END
80135  
80136 ! C*********************************************************************
80137 !  
80138 ! C...PYEVWT
80139 ! C...Dummy routine, which the user can replace in order to multiply the
80140 ! C...standard PYTHIA differential cross-section by a process- and
80141 ! C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds
80142 ! C...to generation of weighted events, with weight 1/WTXS, while for
80143 ! C...MSTP(142)=2 it corresponds to a modification of the underlying
80144 ! C...physics.
80145 !  
80146 !       SUBROUTINE PYEVWT(WTXS)
80147 !  
80148 ! C...Double precision and integer declarations.
80149 !       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80150 !       IMPLICIT INTEGER(I-N)
80151 !       INTEGER PYK,PYCHGE,PYCOMP
80152 ! C...Commonblocks.
80153 !       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80154 !       COMMON/PYINT1/MINT(400),VINT(400)
80155 !       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
80156 !       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
80157 !  
80158 ! C...Set default weight for WTXS.
80159 !       WTXS=1D0
80160 !  
80161 ! C...Read out subprocess number.
80162 !       ISUB=MINT(1)
80163 !       ISTSB=ISET(ISUB)
80164 !  
80165 ! C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
80166 !       TAU=VINT(21)
80167 !       YST=VINT(22)
80168 !       CTH=0D0
80169 !       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
80170 !       TAUP=0D0
80171 !       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
80172 !  
80173 ! C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2.
80174 !       X1=VINT(41)
80175 !       X2=VINT(42)
80176 !       XF=X1-X2
80177 !       SHAT=VINT(44)
80178 !       THAT=VINT(45)
80179 !       UHAT=VINT(46)
80180 !       PT2=VINT(48)
80181 !  
80182 ! C...Modifications by user to be put here.
80183 !  
80184 ! C...Stop program if this routine is ever called.
80185 ! C...You should not copy these lines to your own routine.
80186 !       WRITE(MSTU(11),5000)
80187 !       CALL PYSTOP(4)
80188 !  
80189 ! C...Format for error printout.
80190 !  5000 FORMAT(1X,'Error: you did not link your PYEVWT routine ',
80191 !      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
80192 !      &1X,'Execution stopped!')
80193 !  
80194 !       RETURN
80195 !       END
80196 
80197  
80198       SUBROUTINE PYEVWT(WTXS)
80199  
80200 C...Double precision and integer declarations.
80201       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80202       IMPLICIT INTEGER(I-N)
80203       INTEGER PYK,PYCHGE,PYCOMP
80204 C...Commonblocks.
80205       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80206       COMMON/PYINT1/MINT(400),VINT(400)
80207       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
80208       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
80209 C--event weight exponent
80210         COMMON/WEXPO/WEIGHTEX
80211         DOUBLE PRECISION WEIGHTEX
80212  
80213 C...Read out p_T^2
80214       PT2=VINT(48)
80215       WTXS=PT2**(WEIGHTEX/2.d0)
80216       RETURN
80217       END
80218  
80219 C*********************************************************************
80220  
80221 C...UPINIT
80222 C...Dummy routine, to be replaced by a user implementing external
80223 C...processes. Is supposed to fill the HEPRUP commonblock with info
80224 C...on incoming beams and allowed processes.
80225 
80226 C...New example: handles a standard Les Houches Events File.
80227 
80228       SUBROUTINE UPINIT
80229  
80230 C...Double precision and integer declarations.
80231       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80232       IMPLICIT INTEGER(I-N)
80233  
80234 C...PYTHIA commonblock: only used to provide read unit MSTP(161).
80235       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
80236       SAVE /PYPARS/
80237  
80238 C...User process initialization commonblock.
80239       INTEGER MAXPUP
80240       PARAMETER (MAXPUP=100)
80241       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
80242       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
80243       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
80244      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
80245      &LPRUP(MAXPUP)
80246       SAVE /HEPRUP/
80247 
80248 C...Lines to read in assumed never longer than 200 characters. 
80249       PARAMETER (MAXLEN=200)
80250       CHARACTER*(MAXLEN) STRING
80251 
80252 C...Format for reading lines.
80253       CHARACTER*6 STRFMT
80254       STRFMT='(A000)'
80255       WRITE(STRFMT(3:5),'(I3)') MAXLEN
80256 
80257 C...Loop until finds line beginning with "<init>" or "<init ". 
80258   100 READ(MSTP(161),STRFMT,END=130,ERR=130) STRING
80259       IBEG=0
80260   110 IBEG=IBEG+1
80261 C...Allow indentation.
80262       IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-5) GOTO 110 
80263       IF(STRING(IBEG:IBEG+5).NE.'<init>'.AND.
80264      &STRING(IBEG:IBEG+5).NE.'<init ') GOTO 100
80265 
80266 C...Read first line of initialization info.
80267       READ(MSTP(161),*,END=130,ERR=130) IDBMUP(1),IDBMUP(2),EBMUP(1),
80268      &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
80269 
80270 C...Read NPRUP subsequent lines with information on each process.
80271       DO 120 IPR=1,NPRUP
80272         READ(MSTP(161),*,END=130,ERR=130) XSECUP(IPR),XERRUP(IPR),
80273      &  XMAXUP(IPR),LPRUP(IPR)
80274   120 CONTINUE
80275       RETURN
80276 
80277 C...Error exit: give up if initalization does not work.
80278   130 WRITE(*,*) ' Failed to read LHEF initialization information.'
80279       WRITE(*,*) ' Event generation will be stopped.'
80280       CALL PYSTOP(12)
80281  
80282       RETURN
80283       END
80284 
80285 C...Old example: handles a simple Pythia 6.4 initialization file.
80286  
80287 c      SUBROUTINE UPINIT
80288  
80289 C...Double precision and integer declarations.
80290 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80291 c      IMPLICIT INTEGER(I-N)
80292  
80293 C...Commonblocks.
80294 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80295 c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
80296 c      SAVE /PYDAT1/,/PYPARS/
80297  
80298 C...User process initialization commonblock.
80299 c      INTEGER MAXPUP
80300 c      PARAMETER (MAXPUP=100)
80301 c      INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
80302 c      DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
80303 c      COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
80304 c     &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
80305 c     &LPRUP(MAXPUP)
80306 c      SAVE /HEPRUP/
80307  
80308 C...Read info from file.
80309 c      IF(MSTP(161).GT.0) THEN
80310 c        READ(MSTP(161),*,END=110,ERR=110) IDBMUP(1),IDBMUP(2),EBMUP(1),
80311 c     &  EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
80312 c        DO 100 IPR=1,NPRUP
80313 c          READ(MSTP(161),*,END=110,ERR=110) XSECUP(IPR),XERRUP(IPR),
80314 c     &    XMAXUP(IPR),LPRUP(IPR)
80315 c  100   CONTINUE
80316 c        RETURN
80317 C...Error or prematurely reached end of file.
80318 c  110   WRITE(MSTU(11),5000)
80319 c        STOP
80320  
80321 C...Else not implemented.
80322 c      ELSE
80323 c        WRITE(MSTU(11),5100)
80324 c        STOP
80325 c      ENDIF
80326  
80327 C...Format for error printout.
80328 c 5000 FORMAT(1X,'Error: UPINIT routine failed to read information'/
80329 c     &1X,'Execution stopped!')
80330 c 5100 FORMAT(1X,'Error: You have not implemented UPINIT routine'/
80331 c     &1X,'Dummy routine in PYTHIA file called instead.'/
80332 c     &1X,'Execution stopped!')
80333  
80334 c      RETURN
80335 c      END
80336  
80337 C*********************************************************************
80338  
80339 C...UPEVNT
80340 C...Dummy routine, to be replaced by a user implementing external
80341 C...processes. Depending on cross section model chosen, it either has
80342 C...to generate a process of the type IDPRUP requested, or pick a type
80343 C...itself and generate this event. The event is to be stored in the
80344 C...HEPEUP commonblock, including (often) an event weight.
80345 
80346 C...New example: handles a standard Les Houches Events File.
80347 
80348       SUBROUTINE UPEVNT
80349  
80350 C...Double precision and integer declarations.
80351       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80352       IMPLICIT INTEGER(I-N)
80353  
80354 C...PYTHIA commonblock: only used to provide read unit MSTP(162).
80355       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
80356       SAVE /PYPARS/
80357  
80358 C...User process event common block.
80359       INTEGER MAXNUP
80360       PARAMETER (MAXNUP=500)
80361       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
80362       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
80363       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
80364      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
80365      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
80366       SAVE /HEPEUP/
80367 
80368 C...Lines to read in assumed never longer than 200 characters. 
80369       PARAMETER (MAXLEN=200)
80370       CHARACTER*(MAXLEN) STRING
80371 
80372 C...Format for reading lines.
80373       CHARACTER*6 STRFMT
80374       STRFMT='(A000)'
80375       WRITE(STRFMT(3:5),'(I3)') MAXLEN
80376 
80377 C...Loop until finds line beginning with "<event>" or "<event ". 
80378   100 READ(MSTP(162),STRFMT,END=130,ERR=130) STRING
80379       IBEG=0
80380   110 IBEG=IBEG+1
80381 C...Allow indentation.
80382       IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-6) GOTO 110 
80383       IF(STRING(IBEG:IBEG+6).NE.'<event>'.AND.
80384      &STRING(IBEG:IBEG+6).NE.'<event ') GOTO 100
80385 
80386 C...Read first line of event info.
80387       READ(MSTP(162),*,END=130,ERR=130) NUP,IDPRUP,XWGTUP,SCALUP,
80388      &AQEDUP,AQCDUP
80389 
80390 C...Read NUP subsequent lines with information on each particle.
80391       DO 120 I=1,NUP
80392         READ(MSTP(162),*,END=130,ERR=130) IDUP(I),ISTUP(I),
80393      &  MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),
80394      &  (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I)
80395   120 CONTINUE
80396       RETURN
80397 
80398 C...Error exit, typically when no more events.
80399   130 WRITE(*,*) ' Failed to read LHEF event information.'
80400       WRITE(*,*) ' Will assume end of file has been reached.'
80401       NUP=0
80402       MSTI(51)=1
80403  
80404       RETURN
80405       END
80406 
80407 C...Old example: handles a simple Pythia 6.4 event file.
80408  
80409 c      SUBROUTINE UPEVNT
80410  
80411 C...Double precision and integer declarations.
80412 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80413 c      IMPLICIT INTEGER(I-N)
80414  
80415 C...Commonblocks.
80416 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80417 c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
80418 c      SAVE /PYDAT1/,/PYPARS/
80419  
80420 C...User process event common block.
80421 c      INTEGER MAXNUP
80422 c      PARAMETER (MAXNUP=500)
80423 c      INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
80424 c      DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
80425 c      COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
80426 c     &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
80427 c     &VTIMUP(MAXNUP),SPINUP(MAXNUP)
80428 c      SAVE /HEPEUP/
80429  
80430 C...Read info from file.
80431 c      IF(MSTP(162).GT.0) THEN
80432 c        READ(MSTP(162),*,END=110,ERR=110) NUP,IDPRUP,XWGTUP,SCALUP,
80433 c     &  AQEDUP,AQCDUP
80434 c        DO 100 I=1,NUP
80435 c          READ(MSTP(162),*,END=110,ERR=110) IDUP(I),ISTUP(I),
80436 c     &    MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),
80437 c     &    (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I)
80438 c  100   CONTINUE
80439 c        RETURN
80440 C...Special when reached end of file or other error.
80441 c  110   NUP=0
80442  
80443 C...Else not implemented.
80444 c      ELSE
80445 c        WRITE(MSTU(11),5000)
80446 c        STOP
80447 c      ENDIF
80448  
80449 C...Format for error printout.
80450 c 5000 FORMAT(1X,'Error: You have not implemented UPEVNT routine'/
80451 c     &1X,'Dummy routine in PYTHIA file called instead.'/
80452 c     &1X,'Execution stopped!')
80453  
80454 c      RETURN
80455 c      END
80456  
80457 C*********************************************************************
80458  
80459 C...UPVETO
80460 C...Dummy routine, to be replaced by user, to veto event generation
80461 C...on the parton level, after parton showers but before multiple
80462 C...interactions, beam remnants and hadronization is added.
80463 C...If resonances like W, Z, top, Higgs and SUSY particles are handed
80464 C...undecayed from UPEVNT, or are generated by PYTHIA, they will also
80465 C...be undecayed at this stage; if decayed their decay products will
80466 C...have been allowed to shower.
80467  
80468 C...All partons at the end of the shower phase are stored in the
80469 C...HEPEVT commonblock. The interesting information is
80470 C...NHEP = the number of such partons, in entries 1 <= i <= NHEP,
80471 C...IDHEP(I) = the particle ID code according to PDG conventions,
80472 C...PHEP(J,I) = the (p_x, p_y, p_z, E, m) of the particle.
80473 C...All ISTHEP entries are 1, while the rest is zeroed.
80474  
80475 C...The user decision is to be conveyed by the IVETO value.
80476 C...IVETO = 0 : retain current event and generate in full;
80477 C...      = 1 : abort generation of current event and move to next.
80478  
80479       SUBROUTINE UPVETO(IVETO)
80480  
80481 C...HEPEVT commonblock.
80482       PARAMETER (NMXHEP=4000)
80483       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
80484      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
80485       DOUBLE PRECISION PHEP,VHEP
80486       SAVE /HEPEVT/
80487  
80488 C...Next few lines allow you to see what info PYVETO extracted from
80489 C...the full event record for the first two events.
80490 C...Delete if you don't want it.
80491       DATA NLIST/0/
80492       SAVE NLIST
80493       IF(NLIST.LE.2) THEN
80494         WRITE(*,*) ' Full event record at time of UPVETO call:'
80495         CALL PYLIST(1)
80496         WRITE(*,*) ' Part of event record made available to UPVETO:'
80497         CALL PYLIST(5)
80498         NLIST=NLIST+1
80499       ENDIF
80500  
80501 C...Make decision here.
80502       IVETO = 0
80503  
80504       RETURN
80505       END
80506  
80507 ! C*********************************************************************
80508 !  
80509 ! C...PDFSET
80510 ! C...Dummy routine, to be removed when PDFLIB is to be linked.
80511 !  
80512 !       SUBROUTINE PDFSET(PARM,VALUE)
80513 !  
80514 ! C...Double precision and integer declarations.
80515 !       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80516 !       IMPLICIT INTEGER(I-N)
80517 !       INTEGER PYK,PYCHGE,PYCOMP
80518 ! C...Commonblocks.
80519 !       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80520 !       SAVE /PYDAT1/
80521 ! C...Local arrays and character variables.
80522 !       CHARACTER*20 PARM(20)
80523 !       DOUBLE PRECISION VALUE(20)
80524 !  
80525 ! C...Stop program if this routine is ever called.
80526 !       WRITE(MSTU(11),5000)
80527 !       CALL PYSTOP(5)
80528 !       PARM(20)=PARM(1)
80529 !       VALUE(20)=VALUE(1)
80530 !  
80531 ! C...Format for error printout.
80532 !  5000 FORMAT(1X,'Error: you did not link PDFLIB correctly.'/
80533 !      &1X,'Dummy routine PDFSET in PYTHIA file called instead.'/
80534 !      &1X,'Execution stopped!')
80535 !  
80536 !       RETURN
80537 !       END
80538 !  
80539 ! C*********************************************************************
80540 !  
80541 ! C...STRUCTM
80542 ! C...Dummy routine, to be removed when PDFLIB is to be linked.
80543 !  
80544 !       SUBROUTINE STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
80545 !  
80546 ! C...Double precision and integer declarations.
80547 !       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80548 !       IMPLICIT INTEGER(I-N)
80549 !       INTEGER PYK,PYCHGE,PYCOMP
80550 ! C...Commonblocks.
80551 !       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80552 !       SAVE /PYDAT1/
80553 ! C...Local variables
80554 !       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
80555 !  
80556 ! C...Stop program if this routine is ever called.
80557 !       WRITE(MSTU(11),5000)
80558 !       CALL PYSTOP(5)
80559 !       UPV=XX+QQ
80560 !       DNV=XX+2D0*QQ
80561 !       USEA=XX+3D0*QQ
80562 !       DSEA=XX+4D0*QQ
80563 !       STR=XX+5D0*QQ
80564 !       CHM=XX+6D0*QQ
80565 !       BOT=XX+7D0*QQ
80566 !       TOP=XX+8D0*QQ
80567 !       GLU=XX+9D0*QQ
80568 !  
80569 ! C...Format for error printout.
80570 !  5000 FORMAT(1X,'Error: you did not link PDFLIB correctly.'/
80571 !      &1X,'Dummy routine STRUCTM in PYTHIA file called instead.'/
80572 !      &1X,'Execution stopped!')
80573 !  
80574 !       RETURN
80575 !       END
80576 !  
80577 ! C*********************************************************************
80578 !  
80579 ! C...STRUCTP
80580 ! C...Dummy routine, to be removed when PDFLIB is to be linked.
80581 !  
80582 !       SUBROUTINE STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
80583 !      &BOT,TOP,GLU)
80584 !  
80585 ! C...Double precision and integer declarations.
80586 !       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80587 !       IMPLICIT INTEGER(I-N)
80588 !       INTEGER PYK,PYCHGE,PYCOMP
80589 ! C...Commonblocks.
80590 !       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80591 !       SAVE /PYDAT1/
80592 ! C...Local variables
80593 !       DOUBLE PRECISION XX,QQ2,P2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,
80594 !      &TOP,GLU
80595 !  
80596 ! C...Stop program if this routine is ever called.
80597 !       WRITE(MSTU(11),5000)
80598 !       CALL PYSTOP(5)
80599 !       UPV=XX+QQ2
80600 !       DNV=XX+2D0*QQ2
80601 !       USEA=XX+3D0*QQ2
80602 !       DSEA=XX+4D0*QQ2
80603 !       STR=XX+5D0*QQ2
80604 !       CHM=XX+6D0*QQ2
80605 !       BOT=XX+7D0*QQ2
80606 !       TOP=XX+8D0*QQ2
80607 !       GLU=XX+9D0*QQ2
80608 !  
80609 ! C...Format for error printout.
80610 !  5000 FORMAT(1X,'Error: you did not link PDFLIB correctly.'/
80611 !      &1X,'Dummy routine STRUCTP in PYTHIA file called instead.'/
80612 !      &1X,'Execution stopped!')
80613 !  
80614 !       RETURN
80615 !       END
80616  
80617 C*********************************************************************
80618  
80619 C...SUGRA
80620 C...Dummy routine, to be removed when ISAJET (ISASUSY) is to be linked.
80621  
80622       SUBROUTINE SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODL)
80623        IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80624       IMPLICIT INTEGER(I-N)
80625       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
80626       INTEGER IMODL
80627 C...Commonblocks.
80628       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80629       SAVE /PYDAT1/
80630  
80631 C...Stop program if this routine is ever called.
80632       WRITE(MSTU(11),5000)
80633       CALL PYSTOP(110)
80634  
80635 C...Format for error printout.
80636  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
80637      &1X,'Dummy routine SUGRA in PYTHIA file called instead.'/
80638      &1X,'Execution stopped!')
80639  
80640       RETURN
80641       END
80642  
80643 C*********************************************************************
80644  
80645 C...VISAJE
80646 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
80647  
80648       FUNCTION VISAJE()
80649       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80650       IMPLICIT INTEGER(I-N)
80651       CHARACTER*40 VISAJE
80652  
80653 C...Commonblocks.
80654       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80655       SAVE /PYDAT1/
80656  
80657 C...Assign default value.
80658       VISAJE='Undefined'
80659  
80660 C...Stop program if this routine is ever called.
80661       WRITE(MSTU(11),5000)
80662       CALL PYSTOP(110)
80663  
80664 C...Format for error printout.
80665  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
80666      &1X,'Dummy function VISAJE in PYTHIA file called instead.'/
80667      &1X,'Execution stopped!')
80668  
80669       RETURN
80670       END
80671  
80672 C*********************************************************************
80673  
80674 C...SSMSSM
80675 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
80676  
80677       SUBROUTINE SSMSSM(RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,
80678      &RDUM8,RDUM9,RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,
80679      &RDUM17,RDUM18,RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25,
80680      &IDUM1,IDUM2)
80681       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80682       IMPLICIT INTEGER(I-N)
80683       REAL RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,RDUM8,RDUM9,
80684      &RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,RDUM17,RDUM18,
80685      &RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25
80686 C...Commonblocks.
80687       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80688       SAVE /PYDAT1/
80689  
80690 C...Stop program if this routine is ever called.
80691       WRITE(MSTU(11),5000)
80692       CALL PYSTOP(110)
80693  
80694 C...Format for error printout.
80695  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
80696      &1X,'Dummy routine SSMSSM in PYTHIA file called instead.'/
80697      &1X,'Execution stopped!')
80698       RETURN
80699       END
80700  
80701 C*********************************************************************
80702  
80703 C...FHSETFLAGS
80704 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
80705  
80706       SUBROUTINE FHSETFLAGS(IERR,IMSP,IFR,ITBR,IHMX,IP2A,ILP,ITR,IBR)
80707       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80708       IMPLICIT INTEGER(I-N)
80709 Cmssmpart = 4     # full MSSM [recommended]
80710 Cfieldren = 0     # MSbar field ren. [strongly recommended]
80711 Ctanbren =  0     # MSbar TB-ren. [strongly recommended]
80712 Chiggsmix = 2     # 2x2 (h0-HH) mixing in the neutral Higgs sector
80713 Cp2approx = 0     # no approximation [recommended]
80714 Clooplevel= 2     # include 2-loop corrections
80715 Ctl_running_mt= 1 # running top mass in 2-loop corrections [recommended]
80716 Ctl_bot_resum = 1 # resummed MB in 2-loop corrections [recommended]
80717  
80718 C...Commonblocks.
80719       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80720       SAVE /PYDAT1/
80721  
80722 C...Stop program if this routine is ever called.
80723       WRITE(MSTU(11),5000)
80724       CALL PYSTOP(103)
80725  
80726 C...Format for error printout.
80727  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
80728      &1X,'Dummy routine FHSETFLAGS in PYTHIA file called instead.'/
80729      &1X,'Execution stopped!')
80730       RETURN
80731       END
80732  
80733 C*********************************************************************
80734  
80735 C...FHSETPARA
80736 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
80737  
80738       SUBROUTINE FHSETPARA(IER,SCF,DMT,DMB,DMW,DMZ,DTANB,DMA,DMH,DM3L,
80739      &     DM3E,DM3Q,DM3U,DM3D,DM2L,DM2E,DM2Q,DM2U, DM2D,DM1L,DM1E,DM1Q,
80740      &     DM1U,DM1D,DMU,AE33,AU33,AD33,AE22,AU22,AD22,AE11,AU11,AD11,
80741      &     DM1,DM2,DM3,RLT,RLB,QTAU,QT,QB)
80742       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80743       IMPLICIT INTEGER(I-N)
80744  
80745       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
80746       DOUBLE COMPLEX DMU,
80747      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
80748      &     DM1, DM2, DM3
80749 
80750 C...Commonblocks.
80751       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80752       SAVE /PYDAT1/
80753  
80754 C...Stop program if this routine is ever called.
80755       WRITE(MSTU(11),5000)
80756       CALL PYSTOP(103)
80757  
80758 C...Format for error printout.
80759  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
80760      &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/
80761      &1X,'Execution stopped!')
80762       RETURN
80763       END
80764  
80765 C*********************************************************************
80766  
80767 C...FHHIGGSCORR
80768 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
80769  
80770       SUBROUTINE FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS)
80771       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80772       IMPLICIT INTEGER(I-N)
80773  
80774 C...FeynHiggs variables
80775       DOUBLE PRECISION RMHIGG(4)
80776       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
80777       DOUBLE COMPLEX DMU,
80778      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
80779      &     DM1, DM2, DM3
80780 
80781 C...Commonblocks.
80782       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80783       SAVE /PYDAT1/
80784  
80785 C...Stop program if this routine is ever called.
80786       WRITE(MSTU(11),5000)
80787       CALL PYSTOP(103)
80788  
80789 C...Format for error printout.
80790  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
80791      &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/
80792      &1X,'Execution stopped!')
80793       RETURN
80794       END
80795   
80796 C*********************************************************************
80797  
80798 C...PYTAUD
80799 C...Dummy routine, to be replaced by user, to handle the decay of a
80800 C...polarized tau lepton.
80801 C...Input:
80802 C...ITAU is the position where the decaying tau is stored in /PYJETS/.
80803 C...IORIG is the position where the mother of the tau is stored;
80804 C...     is 0 when the mother is not stored.
80805 C...KFORIG is the flavour of the mother of the tau;
80806 C...     is 0 when the mother is not known.
80807 C...Note that IORIG=0 does not necessarily imply KFORIG=0;
80808 C...     e.g. in B hadron semileptonic decays the W  propagator
80809 C...     is not explicitly stored but the W code is still unambiguous.
80810 C...Output:
80811 C...NDECAY is the number of decay products in the current tau decay.
80812 C...These decay products should be added to the /PYJETS/ common block,
80813 C...in positions N+1 through N+NDECAY. For each product I you must
80814 C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2),
80815 C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically.
80816  
80817       SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
80818  
80819 C...Double precision and integer declarations.
80820       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80821       IMPLICIT INTEGER(I-N)
80822       INTEGER PYK,PYCHGE,PYCOMP
80823 C...Commonblocks.
80824       COMMON/PYJETS/N,NPAD,K(23000,5),P(23000,5),V(23000,5)
80825       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
80826       SAVE /PYJETS/,/PYDAT1/
80827  
80828 C...Stop program if this routine is ever called.
80829 C...You should not copy these lines to your own routine.
80830       NDECAY=ITAU+IORIG+KFORIG
80831       WRITE(MSTU(11),5000)
80832       CALL PYSTOP(10)
80833  
80834 C...Format for error printout.
80835  5000 FORMAT(1X,'Error: you did not link your PYTAUD routine ',
80836      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
80837      &1X,'Execution stopped!')
80838  
80839       RETURN
80840       END
80841  
80842 C*********************************************************************
80843  
80844 C...PYTIME
80845 C...Finds current date and time.
80846 C...Since this task is not standardized in Fortran 77, the routine
80847 C...is dummy, to be replaced by the user. Examples are given for
80848 C...the Fortran 90 routine and DEC Fortran 77, and what to do if
80849 C...you do not have access to suitable routines.
80850  
80851       SUBROUTINE PYTIME(IDATI)
80852  
80853 C...Double precision and integer declarations.
80854       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
80855       IMPLICIT INTEGER(I-N)
80856       INTEGER PYK,PYCHGE,PYCOMP
80857       CHARACTER*8 ATIME
80858 C...Local array.
80859       INTEGER IDATI(6),IDTEMP(3),IVAL(8)
80860  
80861 C...Example 0: if you do not have suitable routines.
80862       DO 100 J=1,6
80863       IDATI(J)=0
80864   100 CONTINUE
80865  
80866 C...Example 1: Fortran 90 routine.
80867 C      CALL DATE_AND_TIME(VALUES=IVAL)
80868 C      IDATI(1)=IVAL(1)
80869 C      IDATI(2)=IVAL(2)
80870 C      IDATI(3)=IVAL(3)
80871 C      IDATI(4)=IVAL(5)
80872 C      IDATI(5)=IVAL(6)
80873 C      IDATI(6)=IVAL(7)
80874  
80875 C...Example 2: DEC Fortran 77. AIX.
80876 C      CALL IDATE(IMON,IDAY,IYEAR)
80877 C      IDATI(1)=IYEAR
80878 C      IDATI(2)=IMON
80879 C      IDATI(3)=IDAY
80880 C      CALL ITIME(IHOUR,IMIN,ISEC)
80881 C      IDATI(4)=IHOUR
80882 C      IDATI(5)=IMIN
80883 C      IDATI(6)=ISEC
80884  
80885 C...Example 3: DEC Fortran, IRIX, IRIX64.
80886 C      CALL IDATE(IMON,IDAY,IYEAR)
80887 C      IDATI(1)=IYEAR
80888 C      IDATI(2)=IMON
80889 C      IDATI(3)=IDAY
80890 C      CALL TIME(ATIME)
80891 C      IHOUR=0
80892 C      IMIN=0
80893 C      ISEC=0
80894 C      READ(ATIME(1:2),'(I2)') IHOUR
80895 C      READ(ATIME(4:5),'(I2)') IMIN
80896 C      READ(ATIME(7:8),'(I2)') ISEC
80897 C      IDATI(4)=IHOUR
80898 C      IDATI(5)=IMIN
80899 C      IDATI(6)=ISEC
80900  
80901 C...Example 4: GNU LINUX libU77, SunOS.
80902 C      CALL IDATE(IDTEMP)
80903 C      IDATI(1)=IDTEMP(3)
80904 C      IDATI(2)=IDTEMP(2)
80905 C      IDATI(3)=IDTEMP(1)
80906 C      CALL ITIME(IDTEMP)
80907 C      IDATI(4)=IDTEMP(1)
80908 C      IDATI(5)=IDTEMP(2)
80909 C      IDATI(6)=IDTEMP(3)
80910  
80911 C...Common code to ensure right century.
80912       IDATI(1)=2000+MOD(IDATI(1),100)
80913  
80914       RETURN
80915       END