pythia-6.4.20.f

00001 C*********************************************************************
00002 C*********************************************************************
00003 C*                                                                  **
00004 C*                                                  February 2009   **
00005 C*                                                                  **
00006 C*                       The Lund Monte Carlo                       **
00007 C*                                                                  **
00008 C*                        PYTHIA version 6.4                        **
00009 C*                                                                  **
00010 C*                        Torbjorn Sjostrand                        **
00011 C*                 Department of Theoretical Physics                **
00012 C*                         Lund University                          **
00013 C*               Solvegatan 14A, S-223 62 Lund, Sweden              **
00014 C*                    E-mail torbjorn@thep.lu.se                    **
00015 C*                                                                  **
00016 C*                  SUSY and Technicolor parts by                   **
00017 C*                         Stephen Mrenna                           **
00018 C*                       Computing Division                         ** 
00019 C*            Generators and Detector Simulation Group              **
00020 C*              Fermi National Accelerator Laboratory               **
00021 C*                 MS 234, Batavia, IL  60510, USA                  **
00022 C*                   phone + 1 - 630 - 840 - 2556                   **
00023 C*                      E-mail mrenna@fnal.gov                      **
00024 C*                                                                  **
00025 C*         New multiple interactions and more SUSY parts by         **
00026 C*                          Peter Skands                            **
00027 C*                  Theoretical Physics Department                  **
00028 C*              Fermi National Accelerator Laboratory               **
00029 C*                 MS 106, Batavia, IL  60510, USA                  **
00030 C*                               and                                **
00031 C*               CERN/PH, CH-1211 Geneva, Switzerland               **
00032 C*                    phone +41 - 22 - 767 24 59                    **
00033 C*                      E-mail skands@fnal.gov                      **
00034 C*                                                                  **
00035 C*         Several parts are written by Hans-Uno Bengtsson          **
00036 C*          PYSHOW is written together with Mats Bengtsson          **
00037 C*               PYMAEL is written by Emanuel Norrbin               **
00038 C*     advanced popcorn baryon production written by Patrik Eden    **
00039 C*    code for virtual photons mainly written by Christer Friberg   **
00040 C*    code for low-mass strings mainly written by Emanuel Norrbin   **
00041 C*        Bose-Einstein code mainly written by Leif Lonnblad        **
00042 C*      CTEQ  parton distributions are by the CTEQ collaboration    **
00043 C*      GRV 94 parton distributions are by Glueck, Reya and Vogt    **
00044 C*   SaS photon parton distributions together with Gerhard Schuler  **
00045 C*     g + g and q + qbar -> t + tbar + H code by Zoltan Kunszt     **
00046 C*         MSSM Higgs mass calculation code by M. Carena,           **
00047 C*           J.R. Espinosa, M. Quiros and C.E.M. Wagner             **
00048 C*  UED implementation by M. Elkacimi, D. Goujdami, H. Przysiezniak **
00049 C*         PYGAUS adapted from CERN library (K.S. Kolbig)           **
00050 C*        NRQCD/colour octet production of onium by S. Wolf         **
00051 C*                                                                  **
00052 C*   The latest program version and documentation is found on WWW   **
00053 C*            http://www.thep.lu.se/~torbjorn/Pythia.html           **
00054 C*                                                                  **
00055 C*        Copyright Torbjorn Sjostrand, Lund (and CERN) 2008        **
00056 C*                                                                  **
00057 C*********************************************************************
00058 C*********************************************************************
00059 C                                                                    *
00060 C  List of subprograms in order of appearance, with main purpose     *
00061 C  (S = subroutine, F = function, B = block data)                    *
00062 C                                                                    *
00063 C  B   PYDATA   to contain all default values                        *
00064 C  S   PYCKBD   to check that BLOCK DATA has been correctly loaded   *
00065 C  S   PYTEST   to test the proper functioning of the package        *
00066 C  S   PYHEPC   to convert between /PYJETS/ and /HEPEVT/ records     *
00067 C                                                                    *
00068 C  S   PYINIT   to administer the initialization procedure           *
00069 C  S   PYEVNT   to administer the generation of an event             *
00070 C  S   PYEVNW   ditto, for new multiple interactions scenario        *
00071 C  S   PYSTAT   to print cross-section and other information         *
00072 C  S   PYUPEV   to administer the generation of an LHA hard process  *
00073 C  S   PYUPIN   to provide initialization needed for LHA input       *
00074 C  S   PYLHEF   to produce a Les Houches Event File from run         *
00075 C  S   PYINRE   to initialize treatment of resonances                *
00076 C  S   PYINBM   to read in beam, target and frame choices            *
00077 C  S   PYINKI   to initialize kinematics of incoming particles       *
00078 C  S   PYINPR   to set up the selection of included processes        *
00079 C  S   PYXTOT   to give total, elastic and diffractive cross-sect.   *
00080 C  S   PYMAXI   to find differential cross-section maxima            *
00081 C  S   PYPILE   to select multiplicity of pileup events              *
00082 C  S   PYSAVE   to save alternatives for gamma-p and gamma-gamma     *
00083 C  S   PYGAGA   to handle lepton -> lepton + gamma branchings        *
00084 C  S   PYRAND   to select subprocess and kinematics for event        *
00085 C  S   PYSCAT   to set up kinematics and colour flow of event        *
00086 C  S   PYEVOL   handler for pT-ordered ISR and multiple interactions *
00087 C  S   PYSSPA   to simulate initial state spacelike showers          *
00088 C  S   PYPTIS   to do pT-ordered initial state spacelike showers     *
00089 C  S   PYMEMX   auxiliary to PYSSPA/PYPTIS for ME correction maximum *
00090 C  S   PYMEWT   auxiliary to PYSSPA/.. for matrix element correction *
00091 C  S   PYPTMI   to do pT-ordered multiple interactions               *
00092 C  F   PYFCMP   to give companion quark x*f distribution             *
00093 C  F   PYPCMP   to calculate momentum integral for companion quarks  *
00094 C  S   PYUPRE   to rearranges contents of the HEPEUP commonblock     *
00095 C  S   PYADSH   to administrate sequential final-state showers       *
00096 C  S   PYVETO   to allow the generation of an event to be aborted    *
00097 C  S   PYRESD   to perform resonance decays                          *
00098 C  S   PYMULT   to generate multiple interactions - old scheme       *
00099 C  S   PYREMN   to add on target remnants - old scheme               *
00100 C  S   PYMIGN   to generate multiple interactions - new scheme       *
00101 C  S   PYMIHK   to connect colours in mult. int. - new scheme        *
00102 C  S   PYCTTR   to translate PYTHIA colour information to LHA1 tags  *
00103 C  S   PYMIHG   to collapse two pairs of LHA1 colour tags.           *
00104 C  S   PYMIRM   to add on target remnants in mult. int.- new scheme  *
00105 C  S   PYFSCR   to perform final state colour reconnections - -"-    *
00106 C  S   PYDIFF   to set up kinematics for diffractive events          *
00107 C  S   PYDISG   to set up kinematics, remnant and showers for DIS    *
00108 C  S   PYDOCU   to compute cross-sections and handle documentation   *
00109 C  S   PYFRAM   to perform boosts between different frames           *
00110 C  S   PYWIDT   to calculate full and partial widths of resonances   *
00111 C  S   PYOFSH   to calculate partial width into off-shell channels   *
00112 C  S   PYRECO   to handle colour reconnection in W+W- events         *
00113 C  S   PYKLIM   to calculate borders of allowed kinematical region   *
00114 C  S   PYKMAP   to construct value of kinematical variable           *
00115 C  S   PYSIGH   to calculate differential cross-sections             *
00116 C  S   PYSGQC   auxiliary to PYSIGH for QCD processes                *
00117 C  S   PYSGHF   auxiliary to PYSIGH for heavy flavour processes      *
00118 C  S   PYSGWZ   auxiliary to PYSIGH for W and Z processes            *
00119 C  S   PYSGHG   auxiliary to PYSIGH for Higgs processes              *
00120 C  S   PYSGSU   auxiliary to PYSIGH for supersymmetry processes      *
00121 C  S   PYSGTC   auxiliary to PYSIGH for technicolor processes        *
00122 C  S   PYSGEX   auxiliary to PYSIGH for various exotic processes     *
00123 C  S   PYPDFU   to evaluate parton distributions                     *
00124 C  S   PYPDFL   to evaluate parton distributions at low x and Q^2    *
00125 C  S   PYPDEL   to evaluate electron parton distributions            *
00126 C  S   PYPDGA   to evaluate photon parton distributions (generic)    *
00127 C  S   PYGGAM   to evaluate photon parton distributions (SaS sets)   *
00128 C  S   PYGVMD   to evaluate VMD part of photon parton distributions  *
00129 C  S   PYGANO   to evaluate anomalous part of photon PDFs            *
00130 C  S   PYGBEH   to evaluate Bethe-Heitler part of photon PDFs        *
00131 C  S   PYGDIR   to evaluate direct contribution to photon PDFs       *
00132 C  S   PYPDPI   to evaluate pion parton distributions                *
00133 C  S   PYPDPR   to evaluate proton parton distributions              *
00134 C  F   PYCTEQ   to evaluate the CTEQ 3 proton parton distributions   *
00135 C  S   PYGRVL   to evaluate the GRV 94L proton parton distributions  *
00136 C  S   PYGRVM   to evaluate the GRV 94M proton parton distributions  *
00137 C  S   PYGRVD   to evaluate the GRV 94D proton parton distributions  *
00138 C  F   PYGRVV   auxiliary to the PYGRV* routines                     *
00139 C  F   PYGRVW   auxiliary to the PYGRV* routines                     *
00140 C  F   PYGRVS   auxiliary to the PYGRV* routines                     *
00141 C  F   PYCT5L   to evaluate the CTEQ 5L proton parton distributions  *
00142 C  F   PYCT5M   to evaluate the CTEQ 5M1 proton parton distributions *
00143 C  S   PYPDPO   to evaluate old proton parton distributions          *
00144 C  F   PYHFTH   to evaluate threshold factor for heavy flavour       *
00145 C  S   PYSPLI   to find flavours left in hadron when one removed     *
00146 C  F   PYGAMM   to evaluate ordinary Gamma function Gamma(x)         *
00147 C  S   PYWAUX   to evaluate auxiliary functions W1(s) and W2(s)      *
00148 C  S   PYI3AU   to evaluate auxiliary function I3(s,t,u,v)           *
00149 C  F   PYSPEN   to evaluate Spence (dilogarithm) function Sp(x)      *
00150 C  S   PYQQBH   to evaluate matrix element for g + g -> Q + Qbar + H *
00151 C  S   PYSTBH   to evaluate matrix element for t + b + H processes   *
00152 C  S   PYTBHB   auxiliary to PYSTBH                                  *
00153 C  S   PYTBHG   auxiliary to PYSTBH                                  *
00154 C  S   PYTBHQ   auxiliary to PYSTBH                                  *
00155 C  F   PYTBHS   auxiliary to PYSTBH                                  *
00156 C                                                                    *
00157 C  S   PYMSIN   to initialize the supersymmetry simulation           *
00158 C  S   PYSLHA   to interface to SUSY spectrum and decay calculators  *
00159 C  S   PYAPPS   to determine MSSM parameters from SUGRA input        *
00160 C  S   PYSUGI   to determine MSSM parameters using ISASUSY           *
00161 C  S   PYFEYN   to determine MSSM Higgs parameters using FEYNHIGGS   *
00162 C  F   PYRNMQ   to determine running squark masses                   *
00163 C  S   PYTHRG   to calculate sfermion third-gen. mass eigenstates    *
00164 C  S   PYINOM   to calculate neutralino/chargino mass eigenstates    *
00165 C  F   PYRNM3   to determine running M3, gluino mass                 *
00166 C  S   PYEIG4   to calculate eigenvalues and -vectors in 4*4 matrix  *
00167 C  S   PYHGGM   to determine Higgs mass spectrum                     *
00168 C  S   PYSUBH   to determine Higgs masses in the MSSM                *
00169 C  S   PYPOLE   to determine Higgs masses in the MSSM                *
00170 C  S   PYRGHM   auxiliary to PYPOLE                                  *
00171 C  S   PYGFXX   auxiliary to PYRGHM                                  *
00172 C  F   PYFINT   auxiliary to PYPOLE                                  *
00173 C  F   PYFISB   auxiliary to PYFINT                                  *
00174 C  S   PYSFDC   to calculate sfermion decay partial widths           *
00175 C  S   PYGLUI   to calculate gluino decay partial widths             *
00176 C  S   PYTBBN   to calculate 3-body decay of gluino to neutralino    *
00177 C  S   PYTBBC   to calculate 3-body decay of gluino to chargino      *
00178 C  S   PYNJDC   to calculate neutralino decay partial widths         *
00179 C  S   PYCJDC   to calculate chargino decay partial widths           *
00180 C  F   PYXXZ6   auxiliary for ino 3-body decays                      *
00181 C  F   PYXXGA   auxiliary for ino -> ino + gamma decay               *
00182 C  F   PYX2XG   auxiliary for ino -> ino + gauge boson decay         *
00183 C  F   PYX2XH   auxiliary for ino -> ino + Higgs decay               *
00184 C  S   PYHEXT   to calculate non-SM Higgs decay partial widths       *
00185 C  F   PYH2XX   auxiliary for H -> ino + ino decay                   *
00186 C  F   PYGAUS   to perform Gaussian integration                      *
00187 C  F   PYGAU2   copy of PYGAUS to allow two-dimensional integration  *
00188 C  F   PYSIMP   to perform Simpson integration                       *
00189 C  F   PYLAMF   to evaluate the lambda kinematics function           *
00190 C  S   PYTBDY   to perform 3-body decay of gauginos                  *
00191 C  S   PYTECM   to calculate techni_rho/omega masses                 *
00192 C  S   PYXDIN   to initialize Universal Extra Dimensions             *
00193 C  S   PYUEDC   to compute UED mass radiative corrections            *
00194 C  S   PYXUED   to compute UED cross sections                        *
00195 C  S   PYGRAM   to generate UED G* (excited graviton) mass spectrum  *
00196 C  F   PYGRAW   to compute UED partial widths to G*                  *
00197 C  F   PYWDKK   to compute UED differential partial widths to G*     *
00198 C  S   PYEICG   to calculate eigenvalues of a 4*4 complex matrix     *
00199 C  S   PYCMQR   auxiliary to PYEICG                                  *
00200 C  S   PYCMQ2   auxiliary to PYEICG                                  *
00201 C  S   PYCDIV   auxiliary to PYCMQR                                  *
00202 C  S   PYCSRT   auxiliary to PYCMQR                                  *
00203 C  S   PYTHAG   auxiliary to PYCMQR                                  *
00204 C  S   PYCBAL   auxiliary to PYEICG                                  *
00205 C  S   PYCBA2   auxiliary to PYEICG                                  *
00206 C  S   PYCRTH   auxiliary to PYEICG                                  *
00207 C  S   PYLDCM   auxiliary to PYSIGH, for technicolor in QCD 2 -> 2   *
00208 C  S   PYBKSB   auxiliary to PYSIGH, for technicolor in QCD 2 -> 2   *
00209 C  S   PYWIDX   to calculate decay widths from within PYWIDT         *
00210 C  S   PYRVSF   to calculate R-violating sfermion decay widths       *
00211 C  S   PYRVNE   to calculate R-violating neutralino decay widths     *
00212 C  S   PYRVCH   to calculate R-violating chargino decay widths       *
00213 C  S   PYRVGL   to calculate R-violating gluino decay widths         *
00214 C  F   PYRVSB   auxiliary to PYRVSF                                  *
00215 C  S   PYRVGW   to calculate R-Violating 3-body widths               *
00216 C  F   PYRVI1   auxiliary to PYRVGW, to do PS integration for res.   *
00217 C  F   PYRVI2   auxiliary to PYRVGW, to do PS integration for LR-int.*
00218 C  F   PYRVI3   auxiliary to PYRVGW, to do PS X integral for int.    *
00219 C  F   PYRVG1   auxiliary to PYRVI1, general matrix element, res.    *
00220 C  F   PYRVG2   auxiliary to PYRVI2, general matrix element, LR-int. *
00221 C  F   PYRVG3   auxiliary to PYRVI3, to do PS Y integral for int.    *
00222 C  F   PYRVG4   auxiliary to PYRVG3, general matrix element, int.    *
00223 C  F   PYRVR    auxiliary to PYRVG1, Breit-Wigner                    *
00224 C  F   PYRVS    auxiliary to PYRVG2 & PYRVG4                         *
00225 C                                                                    *
00226 C  S   PY1ENT   to fill one entry (= parton or particle)             *
00227 C  S   PY2ENT   to fill two entries                                  *
00228 C  S   PY3ENT   to fill three entries                                *
00229 C  S   PY4ENT   to fill four entries                                 *
00230 C  S   PY2FRM   to interface to generic two-fermion generator        *
00231 C  S   PY4FRM   to interface to generic four-fermion generator       *
00232 C  S   PY6FRM   to interface to generic six-fermion generator        *
00233 C  S   PY4JET   to generate a shower from a given 4-parton config    *
00234 C  S   PY4JTW   to evaluate the weight od a shower history for above *
00235 C  S   PY4JTS   to set up the parton configuration for above         *
00236 C  S   PYJOIN   to connect entries with colour flow information      *
00237 C  S   PYGIVE   to fill (or query) commonblock variables             *
00238 C  S   PYONOF   to allow easy control of particle decay modes        *
00239 C  S   PYTUNE   to select a predefined 'tune' for min-bias and UE    *
00240 C  S   PYEXEC   to administrate fragmentation and decay chain        *
00241 C  S   PYPREP   to rearrange showered partons along strings          *
00242 C  S   PYSTRF   to do string fragmentation of jet system             *
00243 C  S   PYJURF   to find boost to string junction rest frame          *
00244 C  S   PYINDF   to do independent fragmentation of one or many jets  *
00245 C  S   PYDECY   to do the decay of a particle                        *
00246 C  S   PYDCYK   to select parton and hadron flavours in decays       *
00247 C  S   PYKFDI   to select parton and hadron flavours in fragm        *
00248 C  S   PYNMES   to select number of popcorn mesons                   *
00249 C  S   PYKFIN   to calculate falvour prod. ratios from input params. *
00250 C  S   PYPTDI   to select transverse momenta in fragm                *
00251 C  S   PYZDIS   to select longitudinal scaling variable in fragm     *
00252 C  S   PYSHOW   to do m-ordered timelike parton shower evolution     *
00253 C  S   PYPTFS   to do pT-ordered timelike parton shower evolution    *
00254 C  F   PYMAEL   auxiliary to PYSHOW & PYPTFS: gluon emission ME's    *
00255 C  S   PYBOEI   to include Bose-Einstein effects (crudely)           *
00256 C  S   PYBESQ   auxiliary to PYBOEI                                  *
00257 C  F   PYMASS   to give the mass of a particle or parton             *
00258 C  F   PYMRUN   to give the running MSbar mass of a quark            *
00259 C  S   PYNAME   to give the name of a particle or parton             *
00260 C  F   PYCHGE   to give three times the electric charge              *
00261 C  F   PYCOMP   to compress standard KF flavour code to internal KC  *
00262 C  S   PYERRM   to write error messages and abort faulty run         *
00263 C  F   PYALEM   to give the alpha_electromagnetic value              *
00264 C  F   PYALPS   to give the alpha_strong value                       *
00265 C  F   PYANGL   to give the angle from known x and y components      *
00266 C  F   PYR      to provide a random number generator                 *
00267 C  S   PYRGET   to save the state of the random number generator     *
00268 C  S   PYRSET   to set the state of the random number generator      *
00269 C  S   PYROBO   to rotate and/or boost an event                      *
00270 C  S   PYEDIT   to remove unwanted entries from record               *
00271 C  S   PYLIST   to list event record or particle data                *
00272 C  S   PYLOGO   to write a logo                                      *
00273 C  S   PYUPDA   to update particle data                              *
00274 C  F   PYK      to provide integer-valued event information          *
00275 C  F   PYP      to provide real-valued event information             *
00276 C  S   PYSPHE   to perform sphericity analysis                       *
00277 C  S   PYTHRU   to perform thrust analysis                           *
00278 C  S   PYCLUS   to perform three-dimensional cluster analysis        *
00279 C  S   PYCELL   to perform cluster analysis in (eta, phi, E_T)       *
00280 C  S   PYJMAS   to give high and low jet mass of event               *
00281 C  S   PYFOWO   to give Fox-Wolfram moments                          *
00282 C  S   PYTABU   to analyze events, with tabular output               *
00283 C                                                                    *
00284 C  S   PYEEVT   to administrate the generation of an e+e- event      *
00285 C  S   PYXTEE   to give the total cross-section at given CM energy   *
00286 C  S   PYRADK   to generate initial state photon radiation           *
00287 C  S   PYXKFL   to select flavour of primary qqbar pair              *
00288 C  S   PYXJET   to select (matrix element) jet multiplicity          *
00289 C  S   PYX3JT   to select kinematics of three-jet event              *
00290 C  S   PYX4JT   to select kinematics of four-jet event               *
00291 C  S   PYXDIF   to select angular orientation of event               *
00292 C  S   PYONIA   to perform generation of onium decay to gluons       *
00293 C                                                                    *
00294 C  S   PYBOOK   to book a histogram                                  *
00295 C  S   PYFILL   to fill an entry in a histogram                      *
00296 C  S   PYFACT   to multiply histogram contents by a factor           *
00297 C  S   PYOPER   to perform operations between histograms             *
00298 C  S   PYHIST   to print and reset all histograms                    *
00299 C  S   PYPLOT   to print a single histogram                          *
00300 C  S   PYNULL   to reset contents of a single histogram              *
00301 C  S   PYDUMP   to dump histogram contents onto a file               *
00302 C                                                                    *
00303 C  S   PYSTOP   routine to handle Fortran STOP condition             *
00304 C                                                                    *
00305 C  S   PYKCUT   dummy routine for user kinematical cuts              *
00306 C  S   PYEVWT   dummy routine for weighting events                   *
00307 C  S   UPINIT   dummy routine to initialize user processes           *
00308 C  S   UPEVNT   dummy routine to generate a user process event       *
00309 C  S   UPVETO   dummy routine to abort event at parton level         *
00310 C  S   PDFSET   dummy routine to be removed when using PDFLIB        *
00311 C  S   STRUCTM  dummy routine to be removed when using PDFLIB        *
00312 C  S   STRUCTP  dummy routine to be removed when using PDFLIB        *
00313 C  S   SUGRA    dummy routine to be removed when linking with ISAJET *
00314 C  F   VISAJE   dummy functn. to be removed when linking with ISAJET *
00315 C  S   SSMSSM   dummy routine to be removed when linking with ISAJET *
00316 C  S   FHSETFLAGS  dummy routine          -"-              FEYNHIGGS *
00317 C  S   FHSETPARA   dummy routine          -"-              FEYNHIGGS *
00318 C  S   FHHIGGSCORR dummy routine          -"-              FEYNHIGGS *
00319 C  S   PYTAUD   dummy routine for interface to tau decay libraries   *
00320 C  S   PYTIME   dummy routine for giving date and time               *
00321 C                                                                    *
00322 C*********************************************************************
00323  
00324 C...PYDATA
00325 C...Default values for switches and parameters,
00326 C...and particle, decay and process data.
00327  
00328       BLOCK DATA PYDATA
00329  
00330 C...Double precision and integer declarations.
00331       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
00332       IMPLICIT INTEGER(I-N)
00333       INTEGER PYK,PYCHGE,PYCOMP
00334 C...Commonblocks.
00335       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
00336       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
00337       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
00338       COMMON/PYDAT4/CHAF(500,2)
00339       CHARACTER CHAF*16
00340       COMMON/PYDATR/MRPY(6),RRPY(100)
00341       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
00342       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
00343       COMMON/PYINT1/MINT(400),VINT(400)
00344       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
00345       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
00346       COMMON/PYINT4/MWID(500),WIDS(500,5)
00347       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
00348       COMMON/PYINT6/PROC(0:500)
00349       CHARACTER PROC*28
00350       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
00351       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
00352       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
00353      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
00354       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
00355       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
00356       COMMON/PYPUED/IUED(0:99),RUED(0:99)
00357       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
00358       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
00359      &     AU(3,3),AD(3,3),AE(3,3)
00360       COMMON/PYLH3C/CPRO(2),CVER(2)
00361       CHARACTER CPRO*12,CVER*12
00362       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,/PYSUBS/,
00363      &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,
00364      &/PYINT6/,/PYINT7/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYTCSM/,/PYPUED/,
00365      &/PYBINS/,/PYLH3P/,/PYLH3C/
00366  
00367 C...PYDAT1, containing status codes and most parameters.
00368       DATA MSTU/
00369      &   0,    0,    0, 4000,10000,  500, 8000,    0,    0,    2,
00370      1   6,    0,    1,    0,    0,    1,    0,    0,    0,    0,
00371      2   2,   10,    0,    0,    1,   10,    0,    0,    0,    0,
00372      3   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00373      4   2,    2,    1,    4,    2,    1,    1,    0,    0,    0,
00374      5  25,   24,    0,    1,    0,    0,    0,    0,    0,    0,
00375      6   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00376      7  30*0,
00377      1   1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00378      2   1,    5,    3,    5,    0,    0,    0,    0,    0,    0,
00379      &  80*0/
00380       DATA (PARU(I),I=1,100)/
00381      &  3.141592653589793D0, 6.283185307179586D0,
00382      &  0.197327D0, 5.06773D0, 0.389380D0, 2.56819D0,  4*0D0,
00383      1  0.001D0, 0.09D0, 0.01D0, 2D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0,
00384      2  0D0,   0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,
00385      3  0D0,   0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,
00386      4  2.0D0,  1.0D0, 0.25D0,  2.5D0, 0.05D0,
00387      4  0D0,   0D0, 0.0001D0, 0D0,   0D0,
00388      5  2.5D0,1.5D0,7.0D0,1.0D0,0.5D0,2.0D0,3.2D0, 0D0, 0D0, 0D0,
00389      6  40*0D0/
00390       DATA (PARU(I),I=101,200)/
00391      &  0.00729735D0, 0.232D0, 0.007764D0, 1.0D0, 1.16639D-5,
00392      &  0D0, 0D0, 0D0, 0D0,  0D0,
00393      1  0.20D0, 0.25D0, 1.0D0, 4.0D0, 10D0, 0D0, 0D0,  0D0, 0D0, 0D0,
00394      2 -0.693D0, -1.0D0, 0.387D0, 1.0D0, -0.08D0,
00395      2 -1.0D0,  1.0D0,  1.0D0,  1.0D0,  0D0,
00396      3  1.0D0,-1.0D0, 1.0D0,-1.0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
00397      4  5.0D0, 1.0D0, 1.0D0,  0D0, 1.0D0, 1.0D0,  0D0, 0D0, 0D0, 0D0,
00398      5  1.0D0,   0D0,   0D0,   0D0,   0D0,   0D0, 0D0, 0D0, 0D0, 0D0,
00399      6  1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
00400      7  1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 1.0D0, 0D0,0D0,0D0,
00401      8  1.0D0, 1.0D0, 1.0D0, 0.0D0, 0.0D0, 1.0D0, 1.0D0, 0D0,0D0,0D0,
00402      9  0D0,  0D0,  0D0,  0D0, 1.0D0,  0D0,  0D0, 0D0, 0D0, 0D0/
00403       DATA MSTJ/
00404      &  1,    3,    0,    0,    0,    0,    0,    0,    0,    0,
00405      1  4,    2,    0,    1,    0,    2,    2,   20,    0,    0,
00406      2  2,    1,    1,    2,    1,    2,    2,    0,    0,    0,
00407      3  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00408      4  2,    2,    4,    2,    5,    3,    3,    0,    0,    3,
00409      5  0,    3,    0,    2,    0,    0,    1,    0,    0,    0,
00410      6  40*0,
00411      &  5,    2,    7,    5,    1,    1,    0,    2,    0,    2,
00412      1  0,    0,    0,    0,    1,    1,    0,    0,    0,    0,
00413      2  80*0/
00414       DATA PARJ/
00415      &  0.10D0, 0.30D0, 0.40D0, 0.05D0, 0.50D0,
00416      &  0.50D0, 0.50D0,   0.6D0,   1.2D0,   0.6D0,
00417      1  0.50D0,0.60D0,0.75D0, 0D0, 0D0, 0D0, 0D0, 1.0D0, 1.0D0, 0D0,
00418      2  0.36D0, 1.0D0,0.01D0, 2.0D0,1.0D0,0.4D0, 0D0, 0D0, 0D0, 0D0,
00419      3  0.10D0, 1.0D0, 0.8D0, 1.5D0,0D0,2.0D0,0.2D0, 0D0,0.08D0,1D0,
00420      4  0.3D0, 0.58D0, 0.5D0, 0.9D0,0.5D0,1.0D0,1.0D0,1.5D0,1D0,10D0,
00421      5  0.77D0, 0.77D0, 0.77D0, -0.05D0, -0.005D0,
00422      5  0D0, 0D0, 0D0, 1.0D0, 0D0,
00423      6  4.5D0, 0.7D0, 0D0,0.003D0, 0.5D0, 0.5D0, 0D0, 0D0, 0D0, 0D0,
00424      7  10D0, 1000D0, 100D0, 1000D0, 0D0, 0.7D0,10D0, 0D0,0D0,0.5D0,
00425      8  0.29D0, 1.0D0, 1.0D0,  0D0,  10D0, 10D0, 0D0, 0D0, 0D0,1D-4,
00426      9  0.02D0, 1.0D0, 0.2D0,  0D0,  0D0,  0D0,  0D0, 0D0, 0D0, 0D0,
00427      &  0D0,  0D0,  0D0,  0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,
00428      1  0D0,  0D0,  0D0,  0D0,   0D0,   0D0,  0D0,  0D0,  0D0,  0D0,
00429      2  1.0D0, 0.25D0,91.187D0,2.489D0, 0.01D0,
00430      2  2.0D0,  1.0D0, 0.25D0,0.002D0,   0D0,
00431      3  0D0, 0D0, 0D0, 0D0, 0.01D0, 0.99D0, 0D0, 0D0,  0.2D0,   0D0,
00432      4  10*0D0,
00433      5  10*0D0,
00434      6  10*0D0,
00435      7  0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, -0.693D0,
00436      8 -1.0D0, 0.387D0, 1.0D0, -0.08D0, -1.0D0,
00437      8  1.0D0,  1.0D0, -0.693D0, -1.0D0, 0.387D0,
00438      9  1.0D0, -0.08D0, -1.0D0,   1.0D0, 1.0D0,
00439      9  5*0D0/
00440  
00441 C...PYDAT2, with particle data and flavour treatment parameters.
00442       DATA (KCHG(I,1),I=   1, 500)/-1,2,-1,2,-1,2,-1,2,2*0,-3,0,-3,0,   
00443      &-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,  
00444      &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,  
00445      &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,   
00446      &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,    
00447      &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,  
00448      &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,  
00449      &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,  
00450      &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,  
00451      &7*0,3,
00452 C...UED singlet and doublet quarks, leptons, and KK g, gamma, Z, and W
00453      &81*0,-1,2,-1,2,-1,2,-1,2,-1,2,-1,2, 
00454      &3*-3,0,-3,0,-3,0,-3,
00455      &3*0,3, 
00456      &25*0/
00457       DATA (KCHG(I,2),I=   1, 500)/8*1,12*0,2,20*0,1,107*0,-1,0,2*-1,   
00458      &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,   
00459      &-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, 
00460      &6*1,9*0,2,3*0,2,0,5*2,2*1,17*0,6*2,
00461      &83*0,12*1,9*0,2,3*0,25*0/
00462       DATA (KCHG(I,3),I=   1, 500)/8*1,2*0,8*1,5*0,1,9*0,1,2*0,1,3*0,   
00463      &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, 
00464      &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, 
00465      &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,
00466      &81*0,21*1,3*0,1,25*0/
00467       DATA (KCHG(I,4),I=   1, 290)/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, 
00468      &16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,   
00469      &37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,   
00470      &58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,   
00471      &79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,   
00472      &100,110,111,113,115,130,211,213,215,221,223,225,310,311,313,315,  
00473      &321,323,325,331,333,335,411,413,415,421,423,425,431,433,435,441,  
00474      &443,445,511,513,515,521,523,525,531,533,535,541,543,545,551,553,  
00475      &555,990,1103,1114,2101,2103,2112,2114,2203,2212,2214,2224,3101,   
00476      &3103,3112,3114,3122,3201,3203,3212,3214,3222,3224,3303,3312,3314, 
00477      &3322,3324,3334,4101,4103,4112,4114,4122,4132,4201,4203,4212,4214, 
00478      &4222,4224,4232,4301,4303,4312,4314,4322,4324,4332,4334,4403,4412, 
00479      &4414,4422,4424,4432,4434,4444,5101,5103,5112,5114,5122,5132,5142, 
00480      &5201,5203,5212,5214,5222,5224,5232,5242,5301,5303,5312,5314,5322, 
00481      &5324,5332,5334,5342,5401,5403,5412,5414,5422,5424,5432,5434,5442, 
00482      &5444,5503,5512,5514,5522,5524,5532,5534,5542,5544,5554,10111,     
00483      &10113,10211,10213,10221,10223,10311,10313,10321,10323,10331,      
00484      &10333,10411,10413,10421,10423,10431,10433,10441,10443,10511,      
00485      &10513,10521,10523,10531,10533,10541,10543,10551,10553,20113,      
00486      &20213,20223,20313,20323,20333,20413,20423,20433,20443,20513/      
00487       DATA (KCHG(I,4),I= 291, 500)/20523,20533,20543,20553,100443,      
00488      &100553,1000001,1000002,1000003,1000004,1000005,1000006,1000011,   
00489      &1000012,1000013,1000014,1000015,1000016,1000021,1000022,1000023,  
00490      &1000024,1000025,1000035,1000037,1000039,2000001,2000002,2000003,  
00491      &2000004,2000005,2000006,2000011,2000012,2000013,2000014,2000015,  
00492      &2000016,3000111,3000211,3000221,3000331,3000113,3000213,3000223,  
00493      &3100021,3100111,3200111,3100113,3200113,3300113,3400113,4000001,  
00494      &4000002,4000011,4000012,5000039,9900012,9900014,9900016,9900023,  
00495      &9900024,9900041,9900042,9900110,9900210,9900220,9900330,9900440,  
00496      &9902110,9902210,9900443,9900441,9910441,9900553,9900551,9910551,  
00497      &3000115,3000215,
00498      &81*0,
00499 C...UED singlet and doublet quarks and leptons, and KK g, gamma, Z, and W.
00500      &6100001,6100002,6100003,6100004,6100005,6100006, 
00501      &5100001,5100002,5100003,5100004,5100005,5100006, 
00502      &6100011,6100013,6100015,
00503      &5100012,5100011,5100014,5100013,5100016,5100015, 
00504      &5100021,5100022,5100023,5100024,
00505      &25*0/ 
00506       DATA (PMAS(I,1),I=   1, 217)/2*0.33D0,0.5D0,1.5D0,4.8D0,175D0,    
00507      &2*400D0,2*0D0,0.00051D0,0D0,0.10566D0,0D0,1.777D0,0D0,400D0,      
00508      &5*0D0,91.188D0,80.45D0,115D0,6*0D0,500D0,900D0,500D0,3*300D0,     
00509      &3*0D0,5000D0,200D0,40*0D0,1D0,2D0,5D0,16*0D0,0.13498D0,0.7685D0,  
00510      &1.318D0,0.49767D0,0.13957D0,0.7669D0,1.318D0,0.54745D0,0.78194D0, 
00511      &1.275D0,2*0.49767D0,0.8961D0,1.432D0,0.4936D0,0.8916D0,1.425D0,   
00512      &0.95777D0,1.0194D0,1.525D0,1.8693D0,2.01D0,2.46D0,1.8645D0,       
00513      &2.0067D0,2.46D0,1.9685D0,2.1124D0,2.5735D0,2.9798D0,3.09688D0,    
00514      &3.5562D0,5.2792D0,5.3248D0,5.83D0,5.2789D0,5.3248D0,5.83D0,       
00515      &5.3693D0,5.4163D0,6.07D0,6.594D0,6.602D0,7.35D0,9.4D0,9.4603D0,   
00516      &9.9132D0,0D0,0.77133D0,1.234D0,0.57933D0,0.77133D0,0.93957D0,     
00517      &1.233D0,0.77133D0,0.93827D0,1.232D0,1.231D0,0.80473D0,0.92953D0,  
00518      &1.19744D0,1.3872D0,1.11568D0,0.80473D0,0.92953D0,1.19255D0,       
00519      &1.3837D0,1.18937D0,1.3828D0,1.09361D0,1.3213D0,1.535D0,1.3149D0,  
00520      &1.5318D0,1.67245D0,1.96908D0,2.00808D0,2.4521D0,2.5D0,2.2849D0,   
00521      &2.4703D0,1.96908D0,2.00808D0,2.4535D0,2.5D0,2.4529D0,2.5D0,       
00522      &2.4656D0,2.15432D0,2.17967D0,2.55D0,2.63D0,2.55D0,2.63D0,2.704D0, 
00523      &2.8D0,3.27531D0,3.59798D0,3.65648D0,3.59798D0,3.65648D0,          
00524      &3.78663D0,3.82466D0,4.91594D0,5.38897D0,5.40145D0,5.8D0,5.81D0,   
00525      &5.641D0,5.84D0,7.00575D0,5.38897D0,5.40145D0,5.8D0,5.81D0,5.8D0/  
00526       DATA (PMAS(I,1),I= 218, 500)/5.81D0,5.84D0,7.00575D0,5.56725D0,   
00527      &5.57536D0,5.96D0,5.97D0,5.96D0,5.97D0,6.12D0,6.13D0,7.19099D0,    
00528      &6.67143D0,6.67397D0,7.03724D0,7.0485D0,7.03724D0,7.0485D0,        
00529      &7.21101D0,7.219D0,8.30945D0,8.31325D0,10.07354D0,10.42272D0,      
00530      &10.44144D0,10.42272D0,10.44144D0,10.60209D0,10.61426D0,           
00531      &11.70767D0,11.71147D0,15.11061D0,0.9835D0,1.231D0,0.9835D0,       
00532      &1.231D0,1D0,1.17D0,1.429D0,1.29D0,1.429D0,1.29D0,2*1.4D0,2.272D0, 
00533      &2.424D0,2.272D0,2.424D0,2.5D0,2.536D0,3.4151D0,3.46D0,5.68D0,     
00534      &5.73D0,5.68D0,5.73D0,5.92D0,5.97D0,7.25D0,7.3D0,9.8598D0,9.875D0, 
00535      &2*1.23D0,1.282D0,2*1.402D0,1.427D0,2*2.372D0,2.56D0,3.5106D0,     
00536      &2*5.78D0,6.02D0,7.3D0,9.8919D0,3.686D0,10.0233D0,32*500D0,        
00537      &3*110D0,350D0,3*210D0,500D0,125D0,250D0,400D0,2*350D0,300D0,      
00538      &4*400D0,1000D0,3*500D0,1200D0,750D0,2*200D0,7*0D0,3*3.1D0,        
00539      &3*9.5D0,2*250D0,
00540      &81*0,
00541 C...UED
00542      &586.,588.,586.,588.,586.,586.,6*598.,
00543      &3*505.,6*516.,640.,501.,536.,536.,25*0.D0/
00544       DATA (PMAS(I,2),I=   1, 500)/5*0D0,1.39816D0,16*0D0,2.47813D0,    
00545      &2.07115D0,0.00367D0,6*0D0,14.54029D0,0D0,16.66099D0,8.38842D0,    
00546      &3.3752D0,4.17669D0,3*0D0,417.29147D0,0.39162D0,60*0D0,0.151D0,   
00547      &0.107D0,2*0D0,0.149D0,0.107D0,0D0,0.00843D0,0.185D0,2*0D0,        
00548      &0.0505D0,0.109D0,0D0,0.0498D0,0.098D0,0.0002D0,0.00443D0,0.076D0, 
00549      &2*0D0,0.023D0,2*0D0,0.023D0,2*0D0,0.015D0,0.0013D0,0D0,0.002D0,   
00550      &2*0D0,0.02D0,2*0D0,0.02D0,2*0D0,0.02D0,2*0D0,0.02D0,5*0D0,0.12D0, 
00551      &3*0D0,0.12D0,2*0D0,2*0.12D0,3*0D0,0.0394D0,4*0D0,0.036D0,0D0,     
00552      &0.0358D0,2*0D0,0.0099D0,0D0,0.0091D0,74*0D0,0.06D0,0.142D0,       
00553      &0.06D0,0.142D0,0D0,0.36D0,0.287D0,0.09D0,0.287D0,0.09D0,0.25D0,   
00554      &0.08D0,0.05D0,0.02D0,0.05D0,0.02D0,0.05D0,0D0,0.014D0,0.01D0,     
00555      &8*0.05D0,0D0,0.01D0,2*0.4D0,0.025D0,2*0.174D0,0.053D0,3*0.05D0,   
00556      &0.0009D0,4*0.05D0,3*0D0,19*1D0,0D0,7*1D0,0D0,1D0,0D0,1D0,0D0,     
00557      &0.0208D0,0.01195D0,0.03705D0,0.09511D0,1.89978D0,1.60746D0,       
00558      &0.13396D0,200.47294D0,0.02296D0,0.18886D0,94.66794D0,6.08718D0,   
00559      &0D0,2.17482D0,2.59359D0,2.59687D0,0.42896D0,0.41912D0,0.14153D0,  
00560      &2*0.00098D0,0.00097D0,26.7245D0,21.74916D0,0.88159D0,0.88001D0,   
00561      &7*0D0,6*0.01D0,0.25499D0,0.28446D0,131*0D0/                       
00562       DATA (PMAS(I,3),I=   1, 500)/5*0D0,13.98156D0,16*0D0,24.78129D0,  
00563      &20.71149D0,0.03669D0,6*0D0,145.40294D0,0D0,166.60993D0,           
00564      &83.88423D0,33.75195D0,41.76694D0,3*0D0,4172.91467D0,3.91621D0,    
00565      &60*0D0,0.4D0,0.25D0,2*0D0,0.4D0,0.25D0,0D0,0.1D0,0.17D0,2*0D0,    
00566      &0.2D0,0.12D0,0D0,0.2D0,0.12D0,0.002D0,0.015D0,0.2D0,2*0D0,0.12D0, 
00567      &2*0D0,0.12D0,2*0D0,0.05D0,0.005D0,0D0,0.01D0,2*0D0,0.05D0,2*0D0,  
00568      &0.05D0,2*0D0,0.05D0,2*0D0,0.05D0,5*0D0,0.14D0,3*0D0,0.14D0,2*0D0, 
00569      &2*0.14D0,3*0D0,0.04D0,4*0D0,0.035D0,0D0,0.035D0,2*0D0,0.05D0,0D0, 
00570      &0.05D0,74*0D0,0.05D0,0.25D0,0.05D0,0.25D0,0D0,0.2D0,0.4D0,        
00571      &0.005D0,0.4D0,0.01D0,0.35D0,0.001D0,0.1D0,0.08D0,0.1D0,0.08D0,    
00572      &0.1D0,0D0,0.05D0,0.02D0,6*0.1D0,0.05D0,0.1D0,0D0,0.02D0,2*0.3D0,  
00573      &0.05D0,2*0.3D0,0.02D0,2*0.1D0,0.03D0,0.001D0,4*0.1D0,3*0D0,       
00574      &19*10D0,0.00001D0,7*10D0,0.00001D0,10D0,0.00001D0,10D0,0.00001D0, 
00575      &0.20797D0,0.11949D0,0.37048D0,0.95114D0,18.99785D0,16.07463D0,    
00576      &1.33964D0,450D0,0.22959D0,1.88863D0,360D0,60.8718D0,0D0,          
00577      &21.74824D0,25.93594D0,25.96873D0,4.28961D0,4.19124D0,1.41528D0,   
00578      &0.00977D0,0.00976D0,0.00973D0,267.24501D0,217.49162D0,8.81592D0,  
00579      &8.80013D0,13*0D0,2.54987D0,2.84456D0,
00580      &81*0,
00581 C...UED
00582      &12*0.2D0,9*0.1D0,0.2,10.,0.07,0.3,25*0.D0/
00583       DATA (PMAS(I,4),I=   1, 500)/12*0D0,658654D0,0D0,0.0872D0,68*0D0, 
00584      &0.1D0,0.387D0,16*0D0,0.00003D0,2*0D0,15500D0,7804.5D0,5*0D0,      
00585      &26.762D0,3*0D0,3709D0,5*0D0,0.317D0,2*0D0,0.1244D0,2*0D0,0.14D0,  
00586      &5*0D0,0.468D0,2*0D0,0.462D0,2*0D0,0.483D0,2*0D0,0.15D0,18*0D0,    
00587      &44.34D0,0D0,78.88D0,4*0D0,23.96D0,2*0D0,49.1D0,0D0,87.1D0,0D0,    
00588      &24.6D0,4*0D0,0.0618D0,0.029D0,6*0D0,0.106D0,6*0D0,0.019D0,2*0D0,  
00589      &7*0.1D0,4*0D0,0.342D0,2*0.387D0,6*0D0,2*0.387D0,6*0D0,0.387D0,    
00590      &0D0,0.387D0,2*0D0,8*0.387D0,0D0,9*0.387D0,120*0D0,131*0D0/        
00591 
00592       DATA PARF/
00593      &  0.5D0,0.25D0, 0.5D0,0.25D0, 1D0, 0.5D0,  0D0,  0D0,  0D0, 0D0,
00594      1  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
00595      2  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
00596      3  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
00597      4  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
00598      5  0.5D0,  0D0, 0.5D0,  0D0,  1D0,  1D0,  0D0,  0D0,  0D0, 0D0,
00599      6  0.75D0, 0.5D0, 0D0,0.1667D0,0.0833D0,0.1667D0,0D0,0D0,0D0, 0D0,
00600      7  0D0,  0D0,  1D0,0.3333D0,0.6667D0,0.3333D0,0D0,0D0,0D0, 0D0,
00601      8  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
00602      9  0.0099D0, 0.0056D0, 0.199D0, 1.23D0, 4.17D0, 165D0,  4*0D0,
00603      & 0.325D0,0.325D0,0.5D0,1.6D0, 5.0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
00604      1 0D0,0.11D0,0.16D0,0.048D0,0.50D0,0.45D0,0.55D0,0.60D0,0D0,0D0,
00605      2 0.2D0, 0.1D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0,  0D0, 0D0,
00606      3 60*0D0,
00607      4 0.2D0,  0.5D0,  8*0D0,
00608      5 1800*0D0/
00609       DATA ((VCKM(I,J),J=1,4),I=1,4)/
00610      &  0.95113D0,  0.04884D0,  0.00003D0,  0.00000D0,
00611      &  0.04884D0,  0.94940D0,  0.00176D0,  0.00000D0,
00612      &  0.00003D0,  0.00176D0,  0.99821D0,  0.00000D0,
00613      &  0.00000D0,  0.00000D0,  0.00000D0,  1.00000D0/
00614  
00615 C...PYDAT3, with particle decay parameters and data.
00616       DATA (MDCY(I,1),I=   1, 500)/5*0,3*1,6*0,1,0,1,5*0,3*1,6*0,1,0,   
00617      &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, 
00618      &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,  
00619      &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,
00620      &81*0,
00621 C...UED
00622      &5*1,0,5*1,0,13*1,25*0/
00623       DATA (MDCY(I,2),I=   1, 351)/1,9,17,25,33,41,56,66,2*0,76,80,82,  
00624      &87,89,143,145,150,2*0,153,162,174,190,210,6*0,289,0,311,334,420,  
00625      &503,3*0,530,539,40*0,540,541,545,16*0,554,556,561,570,579,581,    
00626      &583,590,598,604,613,615,617,620,630,636,639,650,656,667,673,736,  
00627      &739,747,808,810,818,851,853,857,858,861,863,899,900,908,944,945,  
00628      &953,992,993,997,1028,1029,1033,1034,1043,2*0,1045,3*0,1046,2*0,   
00629      &1049,1052,2*0,1053,1055,1058,2*0,1062,1063,1066,1069,0,1072,1077, 
00630      &1079,1082,1084,2*0,1088,1089,1090,1166,2*0,1170,1171,1172,1173,   
00631      &1174,2*0,1178,1179,1181,1182,1184,1188,0,1189,1193,1197,1201,     
00632      &1205,1209,1213,2*0,1217,1218,1219,1236,1245,2*0,1254,1255,1256,   
00633      &1257,1258,1267,2*0,1276,1277,1278,1279,1280,1289,1290,2*0,1299,   
00634      &1308,1317,1326,1335,1344,1353,1362,0,1371,1380,1389,1398,1407,    
00635      &1416,1425,1434,1443,1452,1453,1454,1455,1456,1461,1464,1466,1471, 
00636      &1473,1478,1485,1489,1491,1493,1495,1497,1499,1501,1503,1504,1506, 
00637      &1508,1510,1512,1514,1516,1518,1520,1522,1523,1525,1527,1541,1543, 
00638      &1545,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1578,1592, 
00639      &1637,1661,1706,1730,1775,1802,1833,1859,1891,1917,1949,1975,2162, 
00640      &2331,2595,2826,3106,3402,0,3657,3706,3734,3783,3811,3860,3888,0,  
00641      &3924,0,3960,0,3996,4004,4012,4020,4217,4243,4270,4023,4029,4036,  
00642      &4043,4050,4056,4062,4071,4075,4079,4082,4084,4104,4126,4148,4170/ 
00643       DATA (MDCY(I,2),I= 352, 500)/4185,4197,4204,7*0,4211,4212,4213,   
00644      &4214,4215,4216,4296,4322,
00645      &81*0,
00646 C...UED
00647      %5001,5003,5005,5007,5009,5011,5013,5016,5019,5022,5025,5028,
00648      &5031,5032,5033,
00649      &5034,5035,5036,5037,5038,5039,5040,5064,5065,5083,
00650      &25*0/
00651       DATA (MDCY(I,3),I=   1, 500)/5*8,15,2*10,2*0,4,2,5,2,54,2,5,3,    
00652      &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, 
00653      &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,  
00654      &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,  
00655      &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, 
00656      &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, 
00657      &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,   
00658      &45,27,31,26,32,26,32,26,187,169,264,231,280,296,255,0,49,28,49,   
00659      &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,    
00660      &3*22,15,12,2*7,7*0,6*1,26,30,
00661      &81*0,
00662 C...UED
00663      &6*2,6*3,9*1,24,1,18,6,25*0/                                 
00664       DATA (MDME(I,1),I=   1,8000)/6*1,-1,7*1,-1,7*1,-1,7*1,-1,7*1,-1,  
00665      &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,  
00666      &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,  
00667      &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,   
00668      &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,    
00669      &3*1,-1,3*1,-1,1,18*1,4*1,2*-1,2*1,-1,1249*1,2*-1,377*1,2*-1,     
00670      &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, 
00671      &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,  
00672      &5*-1,3*1,-1,
00673      &649*0,
00674 C...UED
00675      &10*1,2*0,15*1,3*0,9*1,5*1,0,5*1,0,5*1,0,5*1,0,
00676      &1,24*1,2912*0/
00677       DATA (MDME(I,2),I=   1,8000)/43*102,4*0,102,0,6*53,3*102,4*0,102, 
00678      &2*0,3*102,4*0,102,2*0,6*102,42,6*102,2*42,2*0,8*41,2*0,36*41,     
00679      &8*102,0,102,0,102,2*0,21*102,8*32,8*0,16*32,4*0,8*32,9*0,62*53,   
00680      &8*32,14*0,16*32,7*0,8*32,16*0,62*53,8*32,13*0,62*53,4*32,5*0,     
00681      &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,    
00682      &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,  
00683      &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,     
00684      &14*42,16*0,48,3*13,2*42,9*0,14*42,16*0,48,3*13,2*42,9*0,14*42,    
00685      &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,   
00686      &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,    
00687      &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, 
00688      &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, 
00689      &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,   
00690      &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,   
00691      &9*32,17*0,6*51,10*0,8*32,15*0,16*32,14*0,8*32,18*0,8*32,18*0,     
00692      &16*32,
00693 C...UED
00694      &653*0,30*0,9*0,12*0,37*0,2912*0/
00695       DATA (BRAT(I)  ,I=   1, 348)/43*0D0,0.00003D0,0.001765D0,         
00696      &0.998205D0,35*0D0,1D0,6*0D0,0.1783D0,0.1735D0,0.1131D0,0.2494D0,  
00697      &0.003D0,0.09D0,0.0027D0,0.01D0,0.0014D0,0.0012D0,2*0.00025D0,     
00698      &0.0071D0,0.012D0,0.0004D0,0.00075D0,0.00006D0,2*0.00078D0,        
00699      &0.0034D0,0.08D0,0.011D0,0.0191D0,0.00006D0,0.005D0,0.0133D0,      
00700      &0.0067D0,0.0005D0,0.0035D0,0.0006D0,0.0015D0,0.00021D0,0.0002D0,  
00701      &0.00075D0,0.0001D0,0.0002D0,0.0011D0,3*0.0002D0,0.00022D0,        
00702      &0.0004D0,0.0001D0,2*0.00205D0,2*0.00069D0,0.00025D0,0.00051D0,    
00703      &0.00025D0,35*0D0,0.153995D0,0.11942D0,0.153984D0,0.119259D0,      
00704      &0.152272D0,3*0D0,0.033576D0,0.066806D0,0.033576D0,0.066806D0,     
00705      &0.0335D0,0.066806D0,2*0D0,0.321369D0,0.016494D0,2*0D0,0.016502D0, 
00706      &0.320615D0,2*0D0,0.00001D0,0.000591D0,6*0D0,2*0.108166D0,         
00707      &0.108087D0,0D0,0.000001D0,0D0,0.000353D0,0.04359D0,0.795274D0,    
00708      &4*0D0,0.000339D0,0.095746D0,0D0,0.060724D0,0.003054D0,0.000919D0, 
00709      &64*0D0,0.145835D0,0.113276D0,0.145835D0,0.113271D0,0.145781D0,    
00710      &0.049002D0,2*0D0,0.032025D0,0.063642D0,0.032025D0,0.063642D0,     
00711      &0.032022D0,0.063642D0,8*0D0,0.251225D0,0.0129D0,0.000006D0,0D0,   
00712      &0.0129D0,0.250764D0,0.00038D0,0D0,0.000008D0,0.000465D0,          
00713      &0.215418D0,5*0D0,2*0.085312D0,0.08531D0,7*0D0,0.000029D0,         
00714      &0.000536D0,5*0D0,0.000074D0,0D0,0.000417D0,0.000015D0,0.000061D0/ 
00715       DATA (BRAT(I)  ,I= 349, 655)/0.306789D0,0.689189D0,0D0,0.00289D0, 
00716      &69*0D0,0.000001D0,0.000072D0,0.001333D0,4*0D0,0.000001D0,         
00717      &0.000184D0,0D0,0.003108D0,0.000015D0,0.000003D0,2*0D0,0.995284D0, 
00718      &66*0D0,0.000014D0,0.082234D0,2*0D0,0.000013D0,0.003746D0,0D0,     
00719      &0.913992D0,18*0D0,3*0.215119D0,0.214724D0,2*0D0,0.06996D0,        
00720      &0.069959D0,0D0,2*1D0,2*0.08D0,0.76D0,0.08D0,2*0.105D0,0.04D0,     
00721      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,0.988D0,0.012D0,       
00722      &0.998739D0,0.00079D0,0.00038D0,0.000046D0,0.000045D0,2*0.34725D0, 
00723      &0.144D0,0.104D0,0.0245D0,2*0.01225D0,0.0028D0,0.0057D0,0.2112D0,  
00724      &0.1256D0,2*0.1939D0,2*0.1359D0,0.002D0,0.001D0,0.0006D0,          
00725      &0.999877D0,0.000123D0,0.99955D0,0.00045D0,2*0.34725D0,0.144D0,    
00726      &0.104D0,0.049D0,0.0028D0,0.0057D0,0.3923D0,0.321D0,0.2317D0,      
00727      &0.0478D0,0.0049D0,0.0013D0,0.0003D0,0.0007D0,0.89D0,0.08693D0,    
00728      &0.0221D0,0.00083D0,2*0.00007D0,0.564D0,0.282D0,0.072D0,0.028D0,   
00729      &0.023D0,2*0.0115D0,0.005D0,0.003D0,0.6861D0,0.3139D0,2*0.5D0,     
00730      &0.665D0,0.333D0,0.002D0,0.333D0,0.166D0,0.168D0,0.084D0,0.087D0,  
00731      &0.043D0,0.059D0,2*0.029D0,0.002D0,0.6352D0,0.2116D0,0.0559D0,     
00732      &0.0173D0,0.0482D0,0.0318D0,0.666D0,0.333D0,0.001D0,0.332D0,       
00733      &0.166D0,0.168D0,0.084D0,0.086D0,0.043D0,0.059D0,2*0.029D0,        
00734      &2*0.002D0,0.437D0,0.208D0,0.302D0,0.0302D0,0.0212D0,0.0016D0/     
00735       DATA (BRAT(I)  ,I= 656, 831)/0.48947D0,0.34D0,3*0.043D0,0.027D0,  
00736      &0.0126D0,0.0013D0,0.0003D0,0.00025D0,0.00008D0,0.444D0,2*0.222D0, 
00737      &0.104D0,2*0.004D0,0.07D0,0.065D0,2*0.005D0,2*0.011D0,5*0.001D0,   
00738      &0.07D0,0.065D0,2*0.005D0,2*0.011D0,5*0.001D0,0.026D0,0.019D0,     
00739      &0.066D0,0.041D0,0.045D0,0.076D0,0.0073D0,2*0.0047D0,0.026D0,      
00740      &0.001D0,0.0006D0,0.0066D0,0.005D0,2*0.003D0,2*0.0006D0,2*0.001D0, 
00741      &0.006D0,0.005D0,0.012D0,0.0057D0,0.067D0,0.008D0,0.0022D0,        
00742      &0.027D0,0.004D0,0.019D0,0.012D0,0.002D0,0.009D0,0.0218D0,0.001D0, 
00743      &0.022D0,0.087D0,0.001D0,0.0019D0,0.0015D0,0.0028D0,0.683D0,       
00744      &0.306D0,0.011D0,0.3D0,0.15D0,0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,  
00745      &0.04D0,0.034D0,0.027D0,2*0.002D0,2*0.004D0,2*0.002D0,0.034D0,     
00746      &0.027D0,2*0.002D0,2*0.004D0,2*0.002D0,0.0365D0,0.045D0,0.073D0,   
00747      &0.062D0,3*0.021D0,0.0061D0,0.015D0,0.025D0,0.0088D0,0.074D0,      
00748      &0.0109D0,0.0041D0,0.002D0,0.0035D0,0.0011D0,0.001D0,0.0027D0,     
00749      &2*0.0016D0,0.0018D0,0.011D0,0.0063D0,0.0052D0,0.018D0,0.016D0,    
00750      &0.0034D0,0.0036D0,0.0009D0,0.0006D0,0.015D0,0.0923D0,0.018D0,     
00751      &0.022D0,0.0077D0,0.009D0,0.0075D0,0.024D0,0.0085D0,0.067D0,       
00752      &0.0511D0,0.017D0,0.0004D0,0.0028D0,0.619D0,0.381D0,0.3D0,0.15D0,  
00753      &0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,0.01D0,2*0.02D0,0.03D0, 
00754      &2*0.005D0,2*0.02D0,0.03D0,2*0.005D0,0.015D0,0.037D0,0.028D0/      
00755       DATA (BRAT(I)  ,I= 832, 997)/0.079D0,0.095D0,0.052D0,0.0078D0,    
00756      &4*0.001D0,0.028D0,0.033D0,0.026D0,0.05D0,0.01D0,4*0.005D0,0.25D0, 
00757      &0.0952D0,0.94D0,0.06D0,2*0.4D0,2*0.1D0,1D0,0.0602D0,0.0601D0,     
00758      &0.8797D0,0.135D0,0.865D0,0.02D0,0.055D0,2*0.005D0,0.008D0,        
00759      &0.012D0,0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,0.01D0,0.03D0,   
00760      &0.0035D0,0.011D0,0.0055D0,0.0042D0,0.009D0,0.018D0,0.015D0,       
00761      &0.0185D0,0.0135D0,0.025D0,0.0004D0,0.0007D0,0.0008D0,0.0014D0,    
00762      &0.0019D0,0.0025D0,0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,  
00763      &1D0,0.3D0,0.15D0,0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,       
00764      &0.02D0,0.055D0,2*0.005D0,0.008D0,0.012D0,0.02D0,0.055D0,          
00765      &2*0.005D0,0.008D0,0.012D0,0.01D0,0.03D0,0.0035D0,0.011D0,         
00766      &0.0055D0,0.0042D0,0.009D0,0.018D0,0.015D0,0.0185D0,0.0135D0,      
00767      &0.025D0,0.0004D0,0.0007D0,0.0008D0,0.0014D0,0.0019D0,0.0025D0,    
00768      &0.4291D0,0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,1D0,0.3D0,0.15D0,   
00769      &0.16D0,0.08D0,0.13D0,0.06D0,0.08D0,0.04D0,0.02D0,0.055D0,         
00770      &2*0.005D0,0.008D0,0.012D0,0.02D0,0.055D0,2*0.005D0,0.008D0,       
00771      &0.012D0,0.01D0,0.03D0,0.0035D0,0.011D0,0.0055D0,0.0042D0,0.009D0, 
00772      &0.018D0,0.015D0,0.0185D0,0.0135D0,0.025D0,2*0.0002D0,0.0007D0,    
00773      &2*0.0004D0,0.0014D0,0.001D0,0.0009D0,0.0025D0,0.4291D0,0.08D0,    
00774      &0.07D0,0.02D0,0.015D0,0.005D0,1D0,2*0.3D0,2*0.2D0,0.047D0/        
00775       DATA (BRAT(I)  ,I= 998,1188)/0.122D0,0.006D0,0.012D0,0.035D0,     
00776      &0.012D0,0.035D0,0.003D0,0.007D0,0.15D0,0.037D0,0.008D0,0.002D0,   
00777      &0.05D0,0.015D0,0.003D0,0.001D0,0.014D0,0.042D0,0.014D0,0.042D0,   
00778      &0.24D0,0.065D0,0.012D0,0.003D0,0.001D0,0.002D0,0.001D0,0.002D0,   
00779      &0.014D0,0.003D0,1D0,2*0.3D0,2*0.2D0,1D0,0.0252D0,0.0248D0,        
00780      &0.0267D0,0.015D0,0.045D0,0.015D0,0.045D0,0.7743D0,0.029D0,0.22D0, 
00781      &0.78D0,1D0,0.331D0,0.663D0,0.006D0,0.663D0,0.331D0,0.006D0,1D0,   
00782      &0.999D0,0.001D0,0.88D0,2*0.06D0,0.639D0,0.358D0,0.002D0,0.001D0,  
00783      &1D0,0.88D0,2*0.06D0,0.516D0,0.483D0,0.001D0,0.88D0,2*0.06D0,      
00784      &0.9988D0,0.0001D0,0.0006D0,0.0004D0,0.0001D0,0.667D0,0.333D0,     
00785      &0.9954D0,0.0011D0,0.0035D0,0.333D0,0.667D0,0.676D0,0.234D0,       
00786      &0.085D0,0.005D0,2*1D0,0.018D0,2*0.005D0,0.003D0,0.002D0,          
00787      &2*0.006D0,0.018D0,2*0.005D0,0.003D0,0.002D0,2*0.006D0,0.0066D0,   
00788      &0.025D0,0.016D0,0.0088D0,2*0.005D0,0.0058D0,0.005D0,0.0055D0,     
00789      &4*0.004D0,2*0.002D0,2*0.004D0,0.003D0,0.002D0,2*0.003D0,          
00790      &3*0.002D0,2*0.001D0,0.002D0,2*0.001D0,2*0.002D0,0.0013D0,         
00791      &0.0018D0,5*0.001D0,4*0.003D0,2*0.005D0,2*0.002D0,2*0.001D0,       
00792      &2*0.002D0,2*0.001D0,0.2432D0,0.057D0,2*0.035D0,0.15D0,2*0.075D0,  
00793      &0.03D0,2*0.015D0,2*0.08D0,0.76D0,0.08D0,4*1D0,2*0.08D0,0.76D0,    
00794      &0.08D0,1D0,2*0.5D0,1D0,2*0.5D0,2*0.08D0,0.76D0,0.08D0,1D0/        
00795       DATA (BRAT(I)  ,I=1189,1381)/2*0.08D0,0.76D0,3*0.08D0,0.76D0,     
00796      &3*0.08D0,0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,3*0.08D0,0.76D0,  
00797      &3*0.08D0,0.76D0,0.08D0,2*1D0,2*0.105D0,0.04D0,0.0077D0,0.02D0,    
00798      &0.0235D0,0.0285D0,0.0435D0,0.0011D0,0.0022D0,0.0044D0,0.4291D0,   
00799      &0.08D0,0.07D0,0.02D0,0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,      
00800      &0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,      
00801      &0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,4*1D0,2*0.105D0,0.04D0,      
00802      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,0.04D0,      
00803      &0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,4*1D0,2*0.105D0,       
00804      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,1D0,2*0.105D0,  
00805      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00806      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00807      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00808      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00809      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00810      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00811      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00812      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00813      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0,      
00814      &0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,0.015D0,0.005D0,2*0.105D0/      
00815       DATA (BRAT(I)  ,I=1382,1582)/0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,   
00816      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
00817      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
00818      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
00819      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
00820      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
00821      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
00822      &0.015D0,0.005D0,2*0.105D0,0.04D0,0.5D0,0.08D0,0.14D0,0.01D0,      
00823      &0.015D0,0.005D0,4*1D0,0.52D0,0.26D0,0.11D0,2*0.055D0,0.333D0,     
00824      &0.334D0,0.333D0,0.667D0,0.333D0,0.28D0,0.14D0,0.313D0,0.157D0,    
00825      &0.11D0,0.667D0,0.333D0,0.28D0,0.14D0,0.313D0,0.157D0,0.11D0,      
00826      &0.36D0,0.18D0,0.03D0,2*0.015D0,2*0.2D0,4*0.25D0,0.667D0,0.333D0,  
00827      &0.667D0,0.333D0,0.667D0,0.333D0,0.667D0,0.333D0,4*0.5D0,0.007D0,  
00828      &0.993D0,1D0,0.667D0,0.333D0,0.667D0,0.333D0,0.667D0,0.333D0,      
00829      &0.667D0,0.333D0,8*0.5D0,0.02D0,0.98D0,1D0,4*0.5D0,3*0.146D0,      
00830      &3*0.05D0,0.15D0,2*0.05D0,4*0.024D0,0.066D0,0.667D0,0.333D0,       
00831      &0.667D0,0.333D0,4*0.25D0,0.667D0,0.333D0,0.667D0,0.333D0,2*0.5D0, 
00832      &0.273D0,0.727D0,0.667D0,0.333D0,0.667D0,0.333D0,4*0.5D0,0.35D0,   
00833      &0.65D0,2*0.0083D0,0.1866D0,0.324D0,0.184D0,0.027D0,0.001D0,       
00834      &0.093D0,0.087D0,0.078D0,0.0028D0,3*0.014D0,0.008D0,0.024D0/       
00835       DATA (BRAT(I)  ,I=1583,4150)/0.008D0,0.024D0,0.425D0,0.02D0,      
00836      &0.185D0,0.088D0,0.043D0,0.067D0,0.066D0,2404*0D0,0.024396D0,      
00837      &0.045285D0,0.83119D0,2*0D0,0.000349D0,0.09878D0,0D0,0.019884D0,   
00838      &0.02341D0,0.362776D0,0.550787D0,2*0D0,0.000152D0,0.042991D0,      
00839      &0.013695D0,0.025421D0,0.466595D0,2*0D0,0.000196D0,0.055451D0,     
00840      &0.438642D0,0.445781D0,0D0,0.554219D0,4*0.00335D0,0.522257D0,      
00841      &0.464343D0,6*0D0,1D0,6*0D0,1D0,4*0.013853D0,0.562703D0,           
00842      &0.376702D0,0.00518D0,4*0.006254D0,0.974985D0,7*0D0,4*0.148299D0,  
00843      &0.015351D0,0D0,0.182109D0,0.167099D0,0.042247D0,0.850973D0,       
00844      &0.005411D0,0.045025D0,0.098591D0,0.849898D0,0.021617D0,           
00845      &0.030018D0,0.098466D0,0.294448D0,0.10945D0,0.596102D0,0.389906D0, 
00846      &0.610094D0,3*0.0633D0,0.063299D0,0.063295D0,0.056281D0,2*0D0,     
00847      &6*0.020495D0,2*0D0,0.327919D0,0.04099D0,0.045236D0,0.090112D0,    
00848      &0.19874D0,0.010204D0,0.000003D0,0.010205D0,0.198356D0,0.000151D0, 
00849      &0.000006D0,0.000367D0,0.081967D0,0.19874D0,0.010204D0,0.000003D0, 
00850      &0.010205D0,0.198356D0,0.000151D0,0.000006D0,0.000367D0,           
00851      &0.081967D0,4*0D0,0.198776D0,0.010206D0,0.000003D0,0.010207D0,     
00852      &0.19839D0,0.000151D0,0.000006D0,0.000367D0,0.081893D0,0.198776D0, 
00853      &0.010206D0,0.000003D0,0.010207D0,0.19839D0,0.000151D0,0.000006D0, 
00854      &0.000367D0,0.081893D0,4*0D0,0.199344D0,0.010234D0,0.000003D0/     
00855       DATA (BRAT(I)  ,I=4151,4281)/0.010236D0,0.198928D0,0.000149D0,    
00856      &0.000006D0,0.000368D0,0.080733D0,0.199344D0,0.010234D0,           
00857      &0.000003D0,0.010236D0,0.198928D0,0.000149D0,0.000006D0,           
00858      &0.000368D0,0.080733D0,4*0D0,0.184738D0,0.104588D0,0.184738D0,     
00859      &0.104587D0,0.184731D0,0.09582D0,0.022902D0,0.008429D0,0.015602D0, 
00860      &0.022902D0,0.008429D0,0.015602D0,0.022902D0,0.008429D0,           
00861      &0.015602D0,0.28959D0,0.01487D0,0.000008D0,0.01487D0,0.289061D0,   
00862      &0.000492D0,0.000009D0,0.000536D0,0.27911D0,2*0.037151D0,          
00863      &0.03715D0,0.090266D0,2*0.001805D0,0.090266D0,0.001805D0,          
00864      &0.812263D0,0.00179D0,0.090428D0,0.001809D0,0.001808D0,0.090428D0, 
00865      &0.001808D0,0.81372D0,0D0,6*1D0,0.095602D0,2*0.338272D0,           
00866      &0.156896D0,0.019193D0,0.017993D0,0.001168D0,0.001462D0,           
00867      &0.009608D0,0.003306D0,0.002132D0,0.003127D0,0.002132D0,           
00868      &0.003127D0,0.00213D0,3*0D0,0.001411D0,0.00045D0,0.001411D0,       
00869      &0.00045D0,0.001411D0,0.00045D0,2*0D0,0.097996D0,0.399787D0,       
00870      &0.262464D0,0.185427D0,0.022683D0,0.007648D0,0.004259D0,           
00871      &0.005925D0,0.000304D0,2*0D0,0.000304D0,0.005914D0,0.000002D0,     
00872      &2*0D0,0.000011D0,0.001258D0,5*0D0,3*0.002005D0,0D0,0.272178D0,    
00873      &0.022112D0,0.255165D0,0.015534D0,2*0.108965D0,0.031557D0,         
00874      &0.005562D0,0.044965D0,0.004674D0,0.007637D0,0.020597D0/           
00875       DATA (BRAT(I)  ,I=4282,8000)/0.007636D0,0.020595D0,0.007616D0,    
00876      &3*0D0,0.017298D0,0.004782D0,0.017298D0,0.004782D0,0.017297D0,     
00877      &0.004782D0,2*0D0,0.055332D0,2*0.319757D0,0.121576D0,2*0.001556D0, 
00878      &4*0D0,0.0277D0,0.021481D0,0.027699D0,0.021477D0,0.027658D0,3*0D0, 
00879      &0.006071D0,0.01208D0,0.006071D0,0.01208D0,0.006069D0,0.01208D0,   
00880      &2*0D0,0.035891D0,0.209476D0,0.129084D0,0.286631D0,0.10742D0,      
00881      &0.109486D0,4*0D0,0.035282D0,0.001812D0,2*0D0,0.001812D0,          
00882      &0.035215D0,0.000021D0,0D0,0.000001D0,0.000065D0,0.011965D0,5*0D0, 
00883      &2*0.011947D0,0.011946D0,0D0,
00884      &649*0.D0,
00885 C....UED
00886      &0.001D0,0.999D0,0.001D0,0.999D0,0.001D0,0.999D0,
00887      &0.001D0,0.999D0,0.001D0,0.999D0,0.001D0,0.999D0, 
00888      &0.33D0,0.66D0,0.01D0,0.33D0,0.66D0,0.01D0,0.33D0,0.66D0,0.01D0,
00889      &0.33D0,0.66D0,0.01D0,0.98D0,0.D0,0.02D0,0.33D0,0.66D0,0.01D0,
00890      &9*1.D0,              
00891      &24*0.0416667,        
00892      &1.,                  
00893      &3*0.D0,6*0.08333D0, 
00894      &3*0.D0,6*0.08333D0,
00895      &6*0.166667D0,        
00896      &2912*0.D0/
00897       DATA (KFDP(I,1),I=   1, 377)/21,22,23,4*-24,25,21,22,23,4*24,25,  
00898      &21,22,23,4*-24,25,21,22,23,4*24,25,21,22,23,4*-24,25,21,22,23,    
00899      &4*24,25,37,1000022,1000023,1000025,1000035,1000021,1000039,21,22, 
00900      &23,4*-24,25,2*-37,21,22,23,4*24,25,2*37,22,23,-24,25,23,24,-12,   
00901      &22,23,-24,25,23,24,-12,-14,48*16,22,23,-24,25,23,24,22,23,-24,25, 
00902      &-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,  
00903      &3,4,5,6,7,8,11,12,13,14,15,16,17,18,4*-1,4*-3,4*-5,4*-7,-11,-13,  
00904      &-15,-17,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,24,1000022,        
00905      &2*1000023,3*1000025,4*1000035,2*1000024,2*1000037,1000001,        
00906      &2000001,1000001,-1000001,1000002,2000002,1000002,-1000002,        
00907      &1000003,2000003,1000003,-1000003,1000004,2000004,1000004,         
00908      &-1000004,1000005,2000005,1000005,-1000005,1000006,2000006,        
00909      &1000006,-1000006,1000011,2000011,1000011,-1000011,1000012,        
00910      &2000012,1000012,-1000012,1000013,2000013,1000013,-1000013,        
00911      &1000014,2000014,1000014,-1000014,1000015,2000015,1000015,         
00912      &-1000015,1000016,2000016,1000016,-1000016,1,2,3,4,5,6,7,8,11,12,  
00913      &13,14,15,16,17,18,24,37,2*23,25,35,4*-1,4*-3,4*-5,4*-7,-11,-13,   
00914      &-15,-17,3*24,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,24,23,25,24,  
00915      &37,23,25,36,1000022,2*1000023,3*1000025,4*1000035,2*1000024,      
00916      &2*1000037,1000001,2000001,1000001,-1000001,1000002,2000002/       
00917       DATA (KFDP(I,1),I= 378, 580)/1000002,-1000002,1000003,2000003,    
00918      &1000003,-1000003,1000004,2000004,1000004,-1000004,1000005,        
00919      &2000005,1000005,-1000005,1000006,2000006,1000006,-1000006,        
00920      &1000011,2000011,1000011,-1000011,1000012,2000012,1000012,         
00921      &-1000012,1000013,2000013,1000013,-1000013,1000014,2000014,        
00922      &1000014,-1000014,1000015,2000015,1000015,-1000015,1000016,        
00923      &2000016,1000016,-1000016,1,2,3,4,5,6,7,8,11,13,15,17,21,2*22,23,  
00924      &24,23,25,24,37,1000022,2*1000023,3*1000025,4*1000035,2*1000024,   
00925      &2*1000037,1000001,2000001,1000001,-1000001,1000002,2000002,       
00926      &1000002,-1000002,1000003,2000003,1000003,-1000003,1000004,        
00927      &2000004,1000004,-1000004,1000005,2000005,1000005,-1000005,        
00928      &1000006,2000006,1000006,-1000006,1000011,2000011,1000011,         
00929      &-1000011,1000012,2000012,1000012,-1000012,1000013,2000013,        
00930      &1000013,-1000013,1000014,2000014,1000014,-1000014,1000015,        
00931      &2000015,1000015,-1000015,1000016,2000016,1000016,-1000016,-1,-3,  
00932      &-5,-7,-11,-13,-15,-17,24,2*1000022,2*1000023,2*1000025,2*1000035, 
00933      &1000006,2000006,1000006,2000006,-1000001,-1000003,-1000011,       
00934      &-1000013,-1000015,-2000015,1,2,3,4,5,6,11,13,15,2,82,-11,-13,2*2, 
00935      &-12,-14,-16,2*-2,2*-4,-2,-4,2*22,211,111,221,13,11,213,-213,221,  
00936      &223,321,130,310,111,331,111,211,-12,12,-14,14,211,111,22,-13,-11/ 
00937       DATA (KFDP(I,1),I= 581, 992)/2*211,213,113,221,223,321,211,331,   
00938      &22,111,211,2*22,211,22,111,211,22,211,221,111,11,211,111,2*211,   
00939      &321,130,310,221,111,211,111,130,310,321,2*311,321,311,323,313,    
00940      &323,313,321,3*311,-13,3*211,12,14,311,2*321,311,321,313,323,313,  
00941      &323,311,4*321,211,111,3*22,111,321,130,-213,113,213,211,22,111,   
00942      &11,13,211,321,130,310,221,211,111,11*-11,11*-13,-311,-313,-311,   
00943      &-313,-20313,2*-311,-313,-311,-313,2*111,2*221,2*331,2*113,2*223,  
00944      &2*333,-311,-313,2*-321,211,-311,-321,333,-311,-313,-321,211,      
00945      &2*-321,2*-311,-321,211,113,421,2*411,421,411,423,413,423,413,421, 
00946      &411,8*-11,8*-13,-321,-323,-321,-323,-311,2*-313,-311,-313,2*-311, 
00947      &-321,-10323,-321,-323,-321,-311,2*-313,211,111,333,3*-321,-311,   
00948      &-313,-321,-313,310,333,211,2*-321,-311,-313,-311,211,-321,3*-311, 
00949      &211,113,321,2*421,411,421,413,423,413,423,411,421,-15,5*-11,      
00950      &5*-13,221,331,333,221,331,333,10221,211,213,211,213,321,323,321,  
00951      &323,2212,221,331,333,221,2*2,2*431,421,411,423,413,82,11,13,82,   
00952      &443,82,6*12,6*14,2*16,3*-411,3*-413,2*-411,2*-413,2*441,2*443,    
00953      &2*20443,2*2,2*4,2,4,511,521,511,523,513,523,513,521,511,6*12,     
00954      &6*14,2*16,3*-421,3*-423,2*-421,2*-423,2*441,2*443,2*20443,2*2,    
00955      &2*4,2,4,521,511,521,513,523,513,523,511,521,6*12,6*14,2*16,       
00956      &3*-431,3*-433,2*-431,2*-433,3*441,3*443,3*20443,2*2,2*4,2,4,531/  
00957       DATA (KFDP(I,1),I= 993,1402)/521,511,523,513,16,2*4,2*12,2*14,    
00958      &2*16,4*2,4*4,2*-11,2*-13,2*-1,2*-3,2*-11,2*-13,2*-1,541,511,521,  
00959      &513,523,21,11,13,15,1,2,3,4,21,22,553,21,2112,2212,2*2112,2212,   
00960      &2112,2*2212,2112,-12,3122,3212,3112,2212,2*2112,-12,2*3122,3222,  
00961      &3112,2212,2112,2212,3122,3222,3212,3122,3112,-12,-14,-12,3322,    
00962      &3312,2*3122,3212,3322,3312,3122,3322,3312,-12,2*4122,7*-11,7*-13, 
00963      &2*2224,2*2212,2*2214,2*3122,2*3212,2*3214,5*3222,4*3224,2*3322,   
00964      &3324,2*2224,7*2212,5*2214,2*2112,2*2114,2*3122,2*3212,2*3214,     
00965      &2*3222,2*3224,4*2,3,2*2,1,2*2,-11,-13,2*2,4*4122,-11,-13,2*2,     
00966      &3*4132,3*4232,-11,-13,2*2,4332,-11,-13,2*2,-11,-13,2*2,-11,-13,   
00967      &2*2,-11,-13,2*2,-11,-13,2*2,-11,-13,2*2,-11,-13,2*2,2*5122,-12,   
00968      &-14,-16,5*4122,441,443,20443,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,    
00969      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,4*5122,-12,-14,-16,2*-2,   
00970      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,2*5132,2*5232,-12,-14,-16, 
00971      &2*-2,2*-4,-2,-4,5332,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,     
00972      &2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,     
00973      &2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,  
00974      &-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,   
00975      &-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,  
00976      &2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2/     
00977       DATA (KFDP(I,1),I=1403,1713)/2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2, 
00978      &-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,-12,   
00979      &-14,-16,2*-2,2*-4,-2,-4,-12,-14,-16,2*-2,2*-4,-2,-4,221,223,221,  
00980      &223,211,111,321,130,310,213,113,-213,321,311,321,311,323,313,     
00981      &2*311,321,311,321,313,323,321,211,111,321,130,310,2*211,313,-313, 
00982      &323,-323,421,411,423,413,411,421,413,423,411,421,423,413,443,     
00983      &2*82,521,511,523,513,511,521,513,523,521,511,523,513,511,521,513, 
00984      &523,553,2*21,213,-213,113,213,10211,10111,-10211,2*221,213,2*113, 
00985      &-213,2*321,2*311,113,323,2*313,323,313,-313,323,-323,423,2*413,   
00986      &2*423,413,443,82,523,2*513,2*523,2*513,523,553,21,11,13,82,4*443, 
00987      &10441,20443,445,441,11,13,15,1,2,3,4,21,22,2*553,10551,20553,555, 
00988      &1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,        
00989      &1000002,2000002,1000002,2000002,1000021,3*-12,3*-14,3*-16,12,11,  
00990      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,   
00991      &1000039,1000024,1000037,1000022,1000023,1000025,1000035,1000001,  
00992      &2000001,1000001,2000001,1000021,3*-11,3*-13,3*-15,2*-1,-3,        
00993      &1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,        
00994      &1000004,2000004,1000004,2000004,1000021,3*-12,3*-14,3*-16,12,11,  
00995      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,   
00996      &1000039,1000024,1000037,1000022,1000023,1000025,1000035,1000003/  
00997       DATA (KFDP(I,1),I=1714,1984)/2000003,1000003,2000003,1000021,     
00998      &3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,-1000037,1000022,      
00999      &1000023,1000025,1000035,1000006,2000006,1000006,2000006,1000021,  
01000      &3*-12,3*-14,3*-16,12,11,12,11,12,11,14,13,14,13,14,13,16,15,16,   
01001      &15,16,15,2*-2,2*-4,2*-6,1000039,1000024,1000037,1000022,1000023,  
01002      &1000025,1000035,1000005,2000005,1000005,2000005,1000021,1000022,  
01003      &1000016,-1000015,3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,      
01004      &-1000037,1000022,1000023,1000025,1000035,1000012,2000012,1000012, 
01005      &2*12,2*14,2*16,3*-14,3*-16,3*-2,3*-4,3*-6,1000039,1000024,        
01006      &1000037,1000022,1000023,1000025,1000035,1000011,2000011,1000011,  
01007      &2000011,3*-13,3*-15,3*-1,3*-3,3*-5,1000039,-1000024,-1000037,     
01008      &1000022,1000023,1000025,1000035,1000014,2000014,1000014,2000014,  
01009      &2*12,2*14,2*16,3*-12,3*-16,3*-2,3*-4,3*-6,1000039,1000024,        
01010      &1000037,1000022,1000023,1000025,1000035,1000013,2000013,1000013,  
01011      &2000013,3*-11,3*-15,3*-1,3*-3,3*-5,1000039,-1000024,-1000037,     
01012      &1000022,1000023,1000025,1000035,1000016,2000016,1000016,2000016,  
01013      &2*12,2*14,2*16,3*-12,3*-14,3*-2,3*-4,3*-6,1000039,1000024,        
01014      &1000037,1000022,1000023,1000025,1000035,1000015,2000015,1000015,  
01015      &2000015,3*-11,3*-13,3*-1,3*-3,3*-5,1000039,1000001,-1000001,      
01016      &2000001,-2000001,1000002,-1000002,2000002,-2000002,1000003/       
01017       DATA (KFDP(I,1),I=1985,2321)/-1000003,2000003,-2000003,1000004,   
01018      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
01019      &1000006,-1000006,2000006,-2000006,6*1000022,6*1000023,6*1000025,  
01020      &6*1000035,1000024,-1000024,1000024,-1000024,1000024,-1000024,     
01021      &1000037,-1000037,1000037,-1000037,1000037,-1000037,-12,12,-11,11, 
01022      &-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,   
01023      &-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,14,-13,13,   
01024      &-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,   
01025      &-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,16,-15,15,   
01026      &-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,   
01027      &-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,-2,2,-2,2,  
01028      &-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,5*1000039,4,1,-12,12,-12,12,-12,12, 
01029      &-12,12,-12,12,-12,12,-14,14,-14,14,-14,14,-14,14,-14,14,-14,14,   
01030      &-16,16,-16,16,-16,16,-16,16,-16,16,-16,16,-12,12,-11,11,-12,12,   
01031      &-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,   
01032      &-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,14,-13,13,-14,14,   
01033      &-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,   
01034      &-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,16,-15,15,-16,16,   
01035      &-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,   
01036      &-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,-2,2,-2,2,-4,4,-4/ 
01037       DATA (KFDP(I,1),I=2322,2573)/4,-4,4,-6,6,-6,6,-6,6,5*1000039,     
01038      &16*1000022,1000024,-1000024,1000024,-1000024,1000024,-1000024,    
01039      &1000024,-1000024,1000024,-1000024,1000024,-1000024,1000037,       
01040      &-1000037,1000037,-1000037,1000037,-1000037,1000037,-1000037,      
01041      &1000037,-1000037,1000037,-1000037,1000024,-1000024,1000037,       
01042      &-1000037,1000001,-1000001,2000001,-2000001,1000002,-1000002,      
01043      &2000002,-2000002,1000003,-1000003,2000003,-2000003,1000004,       
01044      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
01045      &1000006,-1000006,2000006,-2000006,1000011,-1000011,2000011,       
01046      &-2000011,1000012,-1000012,2000012,-2000012,1000013,-1000013,      
01047      &2000013,-2000013,1000014,-1000014,2000014,-2000014,1000015,       
01048      &-1000015,2000015,-2000015,1000016,-1000016,2000016,-2000016,      
01049      &5*1000021,-12,12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,   
01050      &14,-14,14,-14,14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,   
01051      &16,-16,16,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
01052      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,   
01053      &12,-11,11,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
01054      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,   
01055      &14,-13,13,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
01056      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16/   
01057       DATA (KFDP(I,1),I=2574,2892)/16,-15,15,-2,2,-2,2,-2,2,-4,4,-4,4,  
01058      &-4,4,-6,6,-6,6,-6,6,2*1000039,6*1000022,6*1000023,6*1000025,      
01059      &6*1000035,1000022,1000023,1000025,1000035,1000002,2000002,        
01060      &-1000001,-2000001,1000004,2000004,-1000003,-2000003,1000006,      
01061      &2000006,-1000005,-2000005,1000012,2000012,-1000011,-2000011,      
01062      &1000014,2000014,-1000013,-2000013,1000016,2000016,-1000015,       
01063      &-2000015,2*1000021,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,   
01064      &-12,12,-11,-12,12,-11,-14,-13,-14,-13,-14,-13,-14,14,-13,-14,14,  
01065      &-13,-14,14,-13,-16,-15,-16,-15,-16,-15,-16,-15,-16,-15,-16,-15,   
01066      &-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12, 
01067      &-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-14,2*-13,14, 
01068      &-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14, 
01069      &-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-16,2*-15,16,-16,2*-15,16, 
01070      &-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16, 
01071      &-16,2*-15,16,-16,2*-15,16,2,-1,2,-1,2*2,-1,2,-1,3*2,-1,2*4,-3,    
01072      &3*4,-3,2*6,5*1000039,16*1000022,16*1000023,1000024,-1000024,      
01073      &1000024,-1000024,1000024,-1000024,1000024,-1000024,1000024,       
01074      &-1000024,1000024,-1000024,1000037,-1000037,1000037,-1000037,      
01075      &1000037,-1000037,1000037,-1000037,1000037,-1000037,1000037,       
01076      &-1000037,1000024,-1000024,1000037,-1000037,1000001,-1000001/      
01077       DATA (KFDP(I,1),I=2893,3182)/2000001,-2000001,1000002,-1000002,   
01078      &2000002,-2000002,1000003,-1000003,2000003,-2000003,1000004,       
01079      &-1000004,2000004,-2000004,1000005,-1000005,2000005,-2000005,      
01080      &1000006,-1000006,2000006,-2000006,1000011,-1000011,2000011,       
01081      &-2000011,1000012,-1000012,2000012,-2000012,1000013,-1000013,      
01082      &2000013,-2000013,1000014,-1000014,2000014,-2000014,1000015,       
01083      &-1000015,2000015,-2000015,1000016,-1000016,2000016,-2000016,      
01084      &5*1000021,-12,12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,   
01085      &14,-14,14,-14,14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,   
01086      &16,-16,16,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
01087      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,   
01088      &12,-11,11,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
01089      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,   
01090      &14,-13,13,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
01091      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,   
01092      &16,-15,15,-2,2,-2,2,-2,2,-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,5*1000039, 
01093      &16*1000022,16*1000023,16*1000025,1000024,-1000024,1000024,        
01094      &-1000024,1000024,-1000024,1000024,-1000024,1000024,-1000024,      
01095      &1000024,-1000024,1000037,-1000037,1000037,-1000037,1000037,       
01096      &-1000037,1000037,-1000037,1000037,-1000037,1000037,-1000037/      
01097       DATA (KFDP(I,1),I=3183,3459)/1000024,-1000024,1000037,-1000037,   
01098      &1000001,-1000001,2000001,-2000001,1000002,-1000002,2000002,       
01099      &-2000002,1000003,-1000003,2000003,-2000003,1000004,-1000004,      
01100      &2000004,-2000004,1000005,-1000005,2000005,-2000005,1000006,       
01101      &-1000006,2000006,-2000006,1000011,-1000011,2000011,-2000011,      
01102      &1000012,-1000012,2000012,-2000012,1000013,-1000013,2000013,       
01103      &-2000013,1000014,-1000014,2000014,-2000014,1000015,-1000015,      
01104      &2000015,-2000015,1000016,-1000016,2000016,-2000016,5*1000021,-12, 
01105      &12,-12,12,-12,12,-12,12,-12,12,-12,12,-14,14,-14,14,-14,14,-14,   
01106      &14,-14,14,-14,14,-16,16,-16,16,-16,16,-16,16,-16,16,-16,16,-12,   
01107      &12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,   
01108      &11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-12,12,-11,11,-14,   
01109      &14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,   
01110      &13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-14,14,-13,13,-16,   
01111      &16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,   
01112      &15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-16,16,-15,15,-2,2,  
01113      &-2,2,-2,2,-4,4,-4,4,-4,4,-6,6,-6,6,-6,6,2*1000039,15*1000024,     
01114      &6*1000022,6*1000023,6*1000025,6*1000035,1000022,1000023,1000025,  
01115      &1000035,1000002,2000002,-1000001,-2000001,1000004,2000004,        
01116      &-1000003,-2000003,1000006,2000006,-1000005,-2000005,1000012/      
01117       DATA (KFDP(I,1),I=3460,3782)/2000012,-1000011,-2000011,1000014,   
01118      &2000014,-1000013,-2000013,1000016,2000016,-1000015,-2000015,      
01119      &2*1000021,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11,-12,12,-11, 
01120      &-12,12,-11,-14,14,-13,-14,14,-13,-14,14,-13,-14,14,-13,-14,14,    
01121      &-13,-14,14,-13,-16,16,-15,-16,16,-15,-16,16,-15,-16,16,-15,-16,   
01122      &16,-15,-16,16,-15,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,     
01123      &2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12,2*-11,12,-12, 
01124      &2*-11,12,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14, 
01125      &2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-14,2*-13,14,-16, 
01126      &2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,-16, 
01127      &2*-15,16,-16,2*-15,16,-16,2*-15,16,-16,2*-15,16,2,-1,2,-1,2*2,-1, 
01128      &2,-1,3*2,-1,2*4,-3,3*4,-3,2*6,1000039,-1000024,-1000037,1000022,  
01129      &1000023,1000025,1000035,4*1000001,1000002,2000002,1000002,        
01130      &2000002,1000021,3*-12,3*-14,3*-16,12,11,12,11,12,11,14,13,14,13,  
01131      &14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,1000039,1000024,1000037,   
01132      &1000022,1000023,1000025,1000035,4*1000002,1000001,2000001,        
01133      &1000001,2000001,1000021,3*-11,3*-13,3*-15,2*-1,-3,1000039,        
01134      &-1000024,-1000037,1000022,1000023,1000025,1000035,4*1000003,      
01135      &1000004,2000004,1000004,2000004,1000021,3*-12,3*-14,3*-16,12,11,  
01136      &12,11,12,11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6/   
01137       DATA (KFDP(I,1),I=3783,4156)/1000039,1000024,1000037,1000022,     
01138      &1000023,1000025,1000035,4*1000004,1000003,2000003,1000003,        
01139      &2000003,1000021,3*-11,3*-13,3*-15,2*-1,-3,1000039,-1000024,       
01140      &-1000037,1000022,1000023,1000025,1000035,4*1000005,1000006,       
01141      &2000006,1000006,2000006,1000021,3*-12,3*-14,3*-16,12,11,12,11,12, 
01142      &11,14,13,14,13,14,13,16,15,16,15,16,15,2*-2,2*-4,2*-6,1000039,    
01143      &1000024,1000037,1000022,1000023,1000025,1000035,4*1000006,        
01144      &1000005,2000005,1000005,2000005,1000021,3*-11,3*-13,3*-15,2*-1,   
01145      &-3,1000039,-1000024,-1000037,1000022,1000023,1000025,1000035,     
01146      &4*1000011,1000012,2000012,1000012,2000012,2*12,2*14,2*16,3*-14,   
01147      &3*-16,3*-2,3*-4,3*-6,1000039,-1000024,-1000037,1000022,1000023,   
01148      &1000025,1000035,4*1000013,1000014,2000014,1000014,2000014,2*12,   
01149      &2*14,2*16,3*-12,3*-16,3*-2,3*-4,3*-6,1000039,-1000024,-1000037,   
01150      &1000022,1000023,1000025,1000035,4*1000015,1000016,2000016,        
01151      &1000016,2000016,2*12,2*14,2*16,3*-12,3*-14,3*-2,3*-4,3*-6,3,4,5,  
01152      &6,11,13,15,21,2*4,2,4,24,-11,-13,-15,3,4,5,6,11,13,15,21,5,6,21,  
01153      &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, 
01154      &5,6,1,2,3,4,5,6,1,2,3,4,5,6,21,3100111,3200111,21,22,23,-24,21,   
01155      &22,23,24,22,23,-24,23,24,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18, 
01156      &21,22,23,24,9*11,9*-11,2*11,2*-11,9*13,9*-13,2*13,2*-13,9*15/     
01157       DATA (KFDP(I,1),I=4157,8000)/9*-15,2*15,2*-15,1,2,3,4,5,6,11,12,  
01158      &9900012,13,14,9900014,15,16,9900016,3*-1,3*-3,3*-5,-11,-13,-15,   
01159      &3*-11,2*-13,-15,24,3*-11,2*-13,-15,9900024,3*443,3*553,2*24,      
01160      &2*3000211,2*22,2*23,22,23,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,   
01161      &18,2*24,3*3000211,2*24,4*-1,4*-3,4*-5,4*-7,-11,-13,-15,-17,22,23, 
01162      &22,23,24,3000211,24,3000211,22,23,1,2,3,4,5,6,7,8,11,12,13,14,15, 
01163      &16,17,18,2*24,-24,23,2*22,24,-24,2*23,1,2,3,4,5,6,7,8,11,12,13,   
01164      &14,15,16,17,18,2*22,23,2*24,23,22,2*24,23,4*-1,4*-3,4*-5,4*-7,    
01165      &-11,-13,-15,-17,
01166      &649*0,
01167 C...UED
01168      &5100023,5100022,5100023,5100022,5100023,5100022,
01169      &5100023,5100022,5100023,5100022,5100023,5100022, 
01170      &5100023,-5100024,5100022,5100023,5100024,5100022,
01171      &5100023,-5100024,5100022,5100023,5100024,5100022,
01172      &5100023,-5100024,5100022,5100023,5100024,5100022, 
01173      &9*5100022, 
01174      &6100001,6100002,6100003,6100004,6100005,6100006,
01175      &5100001,5100002,5100003,5100004,5100005,5100006,
01176      &-6100001,-6100002,-6100003,-6100004,-6100005,-6100006,
01177      &-5100001,-5100002,-5100003,-5100004,-5100005,-5100006, 
01178      &39, 
01179      &6100011,6100013,6100015,
01180      &5100011,5100013,5100015,
01181      %5100012,5100014,5100016,
01182      &-6100011,-6100013,-6100015,
01183      &-5100011,-5100013,-5100015,
01184      %-5100012,-5100014,-5100016,
01185      &-5100011,-5100013,-5100015,
01186      &5100012,5100014,5100016,
01187      &2912*0/
01188       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, 
01189      &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,  
01190      &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, 
01191      &13,11,13,-211,-213,-211,-213,-211,-213,-211,-213,2*-211,-321,     
01192      &-323,-321,2*-323,3*-321,4*-211,-213,-211,-213,-211,-213,-211,     
01193      &-213,-211,-213,3*-211,-213,4*-211,-323,-321,2*-211,2*-321,3*-211, 
01194      &2*15,16,15,16,15,2*17,18,17,2*18,2*17,-1,-2,-3,-4,-5,-6,-7,-8,21, 
01195      &-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,-1,-2,-3,-4,-5,-6,-7,-8,  
01196      &-11,-12,-13,-14,-15,-16,-17,-18,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,  
01197      &12,14,16,18,-1,-2,-3,-4,-5,-6,-7,-8,-11,-13,-15,-17,21,22,2*23,   
01198      &-24,2*1000022,1000023,1000022,1000023,1000025,1000022,1000023,    
01199      &1000025,1000035,-1000024,-1000037,-1000024,-1000037,-1000001,     
01200      &2*-2000001,2000001,-1000002,2*-2000002,2000002,-1000003,          
01201      &2*-2000003,2000003,-1000004,2*-2000004,2000004,-1000005,          
01202      &2*-2000005,2000005,-1000006,2*-2000006,2000006,-1000011,          
01203      &2*-2000011,2000011,-1000012,2*-2000012,2000012,-1000013,          
01204      &2*-2000013,2000013,-1000014,2*-2000014,2000014,-1000015,          
01205      &2*-2000015,2000015,-1000016,2*-2000016,2000016,-1,-2,-3,-4,-5,-6, 
01206      &-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24,-37,22,25,2*36,2,4,6,8, 
01207      &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/   
01208       DATA (KFDP(I,2),I= 340, 533)/-7,-8,-11,-13,-15,-17,21,22,2*23,    
01209      &-24,2*25,-37,-24,3*36,2*1000022,1000023,1000022,1000023,1000025,  
01210      &1000022,1000023,1000025,1000035,-1000024,-1000037,-1000024,       
01211      &-1000037,-1000001,2*-2000001,2000001,-1000002,2*-2000002,2000002, 
01212      &-1000003,2*-2000003,2000003,-1000004,2*-2000004,2000004,-1000005, 
01213      &2*-2000005,2000005,-1000006,2*-2000006,2000006,-1000011,          
01214      &2*-2000011,2000011,-1000012,2*-2000012,2000012,-1000013,          
01215      &2*-2000013,2000013,-1000014,2*-2000014,2000014,-1000015,          
01216      &2*-2000015,2000015,-1000016,2*-2000016,2000016,-1,-2,-3,-4,-5,-6, 
01217      &-7,-8,-11,-13,-15,-17,21,22,2*23,-24,2*25,-37,-24,2*1000022,      
01218      &1000023,1000022,1000023,1000025,1000022,1000023,1000025,1000035,  
01219      &-1000024,-1000037,-1000024,-1000037,-1000001,2*-2000001,2000001,  
01220      &-1000002,2*-2000002,2000002,-1000003,2*-2000003,2000003,-1000004, 
01221      &2*-2000004,2000004,-1000005,2*-2000005,2000005,-1000006,          
01222      &2*-2000006,2000006,-1000011,2*-2000011,2000011,-1000012,          
01223      &2*-2000012,2000012,-1000013,2*-2000013,2000013,-1000014,          
01224      &2*-2000014,2000014,-1000015,2*-2000015,2000015,-1000016,          
01225      &2*-2000016,2000016,2,4,6,8,12,14,16,18,25,1000024,1000037,        
01226      &1000024,1000037,1000024,1000037,1000024,1000037,2*-1000005,       
01227      &2*-2000005,1000002,1000004,1000012,1000014,2*1000016,-3,-4,-5,-6/ 
01228       DATA (KFDP(I,2),I= 534, 938)/-7,-8,-13,-15,-17,11,-82,12,14,-1,   
01229      &-3,11,13,15,1,4,3,4,1,3,22,11,-211,2*22,-13,-11,-211,211,111,211, 
01230      &-321,130,310,22,2*111,-211,11,-11,13,-13,-211,111,22,14,12,111,   
01231      &22,111,3*211,-311,22,211,22,111,-211,211,11,-211,13,22,-211,111,  
01232      &-211,22,111,-11,-211,111,2*-211,-321,130,310,221,111,-211,111,    
01233      &2*0,-211,111,22,-211,111,-211,111,-211,211,-213,113,223,221,14,   
01234      &111,211,111,-11,-13,211,111,22,211,111,211,111,2*211,213,113,223, 
01235      &221,22,-211,111,113,223,22,111,-321,310,211,111,2*-211,221,22,    
01236      &-11,-13,-211,-321,130,310,221,-211,111,11*12,11*14,2*211,2*213,   
01237      &211,20213,2*321,2*323,211,213,211,213,211,213,211,213,211,213,    
01238      &211,213,3*211,213,211,2*321,8*211,2*113,3*211,111,22,211,111,211, 
01239      &111,4*211,8*12,8*14,2*211,2*213,2*111,221,2*113,223,333,20213,    
01240      &211,2*321,323,2*311,313,-211,111,113,2*211,321,2*211,311,321,310, 
01241      &211,-211,4*211,321,4*211,113,2*211,-321,111,22,-211,111,-211,111, 
01242      &-211,211,-211,211,16,5*12,5*14,3*211,3*213,211,2*111,2*113,       
01243      &2*-311,2*-313,-2112,3*321,323,2*-1,22,111,321,311,321,311,-82,    
01244      &-11,-13,-82,22,-82,6*-11,6*-13,2*-15,211,213,20213,211,213,20213, 
01245      &431,433,431,433,311,313,311,313,311,313,-1,-4,-3,-4,-1,-3,22,     
01246      &-211,111,-211,111,-211,211,-211,211,6*-11,6*-13,2*-15,211,213,    
01247      &20213,211,213,20213,431,433,431,433,321,323,321,323,321,323,-1/   
01248       DATA (KFDP(I,2),I= 939,1352)/-4,-3,-4,-1,-3,22,211,111,211,111,   
01249      &4*211,6*-11,6*-13,2*-15,211,213,20213,211,213,20213,431,433,431,  
01250      &433,221,331,333,221,331,333,221,331,333,-1,-4,-3,-4,-1,-3,22,     
01251      &-321,-311,-321,-311,-15,-3,-1,2*-11,2*-13,2*-15,-1,-4,-3,-4,-3,   
01252      &-4,-1,-4,2*12,2*14,2,3,2,3,2*12,2*14,2,1,22,411,421,411,421,21,   
01253      &-11,-13,-15,-1,-2,-3,-4,2*21,22,21,2*-211,111,22,111,211,22,211,  
01254      &-211,11,2*-211,111,-211,111,22,11,22,111,-211,211,111,211,22,211, 
01255      &111,211,-211,22,11,13,11,-211,2*111,2*22,111,211,-321,-211,111,   
01256      &11,2*-211,7*12,7*14,-321,-323,-311,-313,-311,-313,211,213,211,    
01257      &213,211,213,111,221,331,113,223,111,221,113,223,321,323,321,-211, 
01258      &-213,111,221,331,113,223,333,10221,111,221,331,113,223,211,213,   
01259      &211,213,321,323,321,323,321,323,311,313,311,313,2*-1,-3,-1,2203,  
01260      &3201,3203,2203,2101,2103,12,14,-1,-3,2*111,2*211,12,14,-1,-3,22,  
01261      &111,2*22,111,22,12,14,-1,-3,22,12,14,-1,-3,12,14,-1,-3,12,14,-1,  
01262      &-3,12,14,-1,-3,12,14,-1,-3,12,14,-1,-3,12,14,-1,-3,2*-211,11,13,  
01263      &15,-211,-213,-20213,-431,-433,3*3122,1,4,3,4,1,3,11,13,15,1,4,3,  
01264      &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,   
01265      &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,  
01266      &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, 
01267      &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/ 
01268       DATA (KFDP(I,2),I=1353,1815)/11,13,15,1,4,3,4,1,3,11,13,15,1,4,3, 
01269      &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, 
01270      &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, 
01271      &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, 
01272      &2*111,2*211,-211,111,-321,130,310,-211,111,211,-211,111,-213,113, 
01273      &-211,111,223,211,111,213,113,211,111,223,-211,111,-321,130,310,   
01274      &2*-211,-311,311,-321,321,211,111,211,111,-211,111,-211,111,311,   
01275      &2*321,311,22,2*-82,-211,111,-211,111,211,111,211,111,-321,-311,   
01276      &-321,-311,411,421,411,421,22,2*21,-211,2*211,111,-211,111,2*211,  
01277      &111,-211,211,111,211,-321,2*-311,-321,22,-211,111,211,111,-311,   
01278      &311,-321,321,211,111,-211,111,321,311,22,-82,-211,111,211,111,    
01279      &-321,-311,411,421,22,21,-11,-13,-82,211,111,221,111,4*22,-11,-13, 
01280      &-15,-1,-2,-3,-4,2*21,211,111,3*22,1,2*2,4*1,2*-24,2*-37,2*1,3,5,  
01281      &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,   
01282      &-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,     
01283      &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,  
01284      &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, 
01285      &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, 
01286      &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,  
01287      &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/  
01288       DATA (KFDP(I,2),I=1816,2317)/11,13,11,13,15,11,13,15,1,3,5,1,3,5, 
01289      &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, 
01290      &13,2*14,4*13,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,13,15,1,3, 
01291      &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, 
01292      &5,1,3,5,15,2*16,4*15,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,   
01293      &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, 
01294      &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,  
01295      &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, 
01296      &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, 
01297      &-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, 
01298      &-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, 
01299      &-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, 
01300      &-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, 
01301      &-3,3,-1,1,-1,1,-3,3,22,23,25,35,36,-1,-3,-13,13,-13,13,-13,13,    
01302      &-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,   
01303      &-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1, 
01304      &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, 
01305      &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, 
01306      &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, 
01307      &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/ 
01308       DATA (KFDP(I,2),I=2318,2770)/3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,22,  
01309      &23,25,35,36,22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,-24,24,11, 
01310      &-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,-13,15,-15,1,-1,3,   
01311      &-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,-4,4,-5,5,-5, 
01312      &5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,-13,13,-14,14,-14, 
01313      &14,-15,15,-15,15,-16,16,-16,16,1,3,5,2,4,-13,13,-13,13,-13,13,    
01314      &-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,   
01315      &-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1, 
01316      &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, 
01317      &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, 
01318      &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, 
01319      &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, 
01320      &3,-1,1,-1,1,-3,3,-1,1,-1,1,-3,3,24,37,24,-11,-13,-15,-1,-3,24,    
01321      &-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,4*37, 
01322      &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,   
01323      &-3,-13,14,2*-13,14,2*-13,14,-13,-15,16,2*-15,16,2*-15,16,-15,     
01324      &6*-11,-15,16,2*-15,16,2*-15,16,-15,6*-11,6*-13,-1,-2,-1,2,-1,-2,  
01325      &-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,   
01326      &-6,-5,6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,   
01327      &-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,-1,-2,-1/  
01328       DATA (KFDP(I,2),I=2771,3221)/2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,  
01329      &-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,2,-1,2,-1, 
01330      &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,  
01331      &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, 
01332      &25,35,36,-24,24,11,-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,  
01333      &-13,15,-15,1,-1,3,-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3, 
01334      &-4,4,-4,4,-5,5,-5,5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13, 
01335      &-13,13,-14,14,-14,14,-15,15,-15,15,-16,16,-16,16,1,3,5,2,4,-13,   
01336      &13,-13,13,-13,13,-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,-15,   
01337      &15,-15,15,-15,15,-11,11,-11,11,-11,11,-13,13,-13,13,-13,13,-1,1,  
01338      &-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, 
01339      &-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, 
01340      &-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, 
01341      &-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, 
01342      &-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, 
01343      &22,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,22,23,11,13,15,12,14,  
01344      &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, 
01345      &-24,24,11,-11,13,-13,15,-15,1,-1,3,-3,-24,24,11,-11,13,-13,15,    
01346      &-15,1,-1,3,-3,-37,37,-37,37,-1,1,-1,1,-2,2,-2,2,-3,3,-3,3,-4,4,   
01347      &-4,4,-5,5,-5,5,-6,6,-6,6,-11,11,-11,11,-12,12,-12,12,-13,13,-13/  
01348       DATA (KFDP(I,2),I=3222,3669)/13,-14,14,-14,14,-15,15,-15,15,-16,  
01349      &16,-16,16,1,3,5,2,4,-13,13,-13,13,-13,13,-15,15,-15,15,-15,15,    
01350      &-11,11,-11,11,-11,11,-15,15,-15,15,-15,15,-11,11,-11,11,-11,11,   
01351      &-13,13,-13,13,-13,13,-1,1,-2,2,-1,1,-2,2,-1,1,-2,2,-3,3,-4,4,-3,  
01352      &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, 
01353      &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, 
01354      &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, 
01355      &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, 
01356      &1,-1,1,-3,3,24,37,23,11,13,15,12,14,16,1,3,5,2,4,25,35,36,24,-11, 
01357      &-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,-13,-15,-1,-3,24,-11,   
01358      &-13,-15,-1,-3,4*37,2*-1,2*2,2*-3,2*4,2*-5,2*6,2*-11,2*12,2*-13,   
01359      &2*14,2*-15,2*16,-1,-3,-13,14,2*-13,14,2*-13,14,-13,-15,16,2*-15,  
01360      &16,2*-15,16,-15,-11,12,2*-11,12,2*-11,12,-11,-15,16,2*-15,16,     
01361      &2*-15,16,-15,-11,12,2*-11,12,2*-11,12,-11,-13,14,2*-13,14,2*-13,  
01362      &14,-13,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3, 
01363      &-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,   
01364      &-1,-2,-1,2,-3,-4,-3,4,-3,-4,-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,  
01365      &6,-5,-6,-5,6,-1,-2,-1,2,-1,-2,-1,2,-1,-2,-1,2,-3,-4,-3,4,-3,-4,   
01366      &-3,4,-3,-4,-3,4,-5,-6,-5,6,-5,-6,-5,6,-5,-6,-5,6,2,-1,2,-1,2*4,   
01367      &-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/     
01368       DATA (KFDP(I,2),I=3670,4183)/2*-37,2*1,3,5,1,3,5,1,3,5,1,2,3,4,5, 
01369      &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,   
01370      &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,   
01371      &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,  
01372      &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,  
01373      &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,  
01374      &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,  
01375      &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,     
01376      &2*12,4*11,23,25,35,36,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,  
01377      &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,  
01378      &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,  
01379      &23,25,35,36,2*-24,2*-37,13,15,11,15,11,13,11,13,15,11,13,15,1,3,  
01380      &5,1,3,5,1,3,5,-3,-4,-5,-6,-11,-13,-15,21,-1,-3,2*-5,5,12,14,16,   
01381      &-3,-4,-5,-6,-11,-13,-15,21,-5,-6,21,-1,-2,-3,-4,-5,-6,-1,-2,-3,   
01382      &-4,-5,-6,21,-1,-2,-3,-4,-5,-6,21,-1,-2,-3,-4,-5,-6,21,-1,-2,-3,   
01383      &-4,-5,-6,-1,-2,-3,-4,-5,-6,-1,-2,-3,-4,-5,-6,3*21,3*1,4*2,1,2*11, 
01384      &2*12,11,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,  
01385      &21,22,23,-24,3*-1,3*-3,3*-5,3*1,3*3,3*5,2*-13,2*15,3*-1,3*-3,     
01386      &3*-5,3*1,3*3,3*5,2*-11,2*15,3*-1,3*-3,3*-5,3*1,3*3,3*5,2*-11,     
01387      &2*13,-1,-2,-3,-4,-5,-6,-11,-12,9900012,-13,-14,9900014,-15,-16/   
01388       DATA (KFDP(I,2),I=4184,8000)/9900016,2,4,6,2,4,6,2,4,6,9900012,   
01389      &9900014,9900016,-11,-13,-15,-13,2*-15,24,-11,-13,-15,-13,2*-15,   
01390      &9900024,6*21,-24,-3000211,-24,-3000211,3000111,3000221,3000111,   
01391      &3000221,2*23,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17, 
01392      &-18,23,3000111,23,3000111,22,3000221,22,2,4,6,8,2,4,6,8,2,4,6,8,  
01393      &2,4,6,8,12,14,16,18,2*3000111,2*3000221,-3000211,2*-24,-3000211,  
01394      &2*23,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,-17,-18,-24, 
01395      &-3000211,3000211,3000221,3000113,3000223,-3000213,3000213,        
01396      &3000113,3000223,-1,-2,-3,-4,-5,-6,-7,-8,-11,-12,-13,-14,-15,-16,  
01397      &-17,-18,24,3000211,24,3000111,3000221,3000211,3000213,3000113,    
01398      &3000223,3000213,2,4,6,8,2,4,6,8,2,4,6,8,2,4,6,8,12,14,16,18,      
01399      &649*0,
01400 C...UED     
01401      &1,1,2,2,3,3,4,4,5,5,6,6, 
01402      &1,2,1,2,1,2,3,4,3,4,3,4,5,6,5,6,5,6,
01403      &11,13,15,12,11,14,13,16,15, 
01404      &-1,-2,-3,-4,-5,-6,-1,-2,-3,-4,-5,-6,
01405      &1,2,3,4,5,6,1,2,3,4,5,6, 
01406      &22, 
01407      &-11,-13,-15,-11,-13,-15,-12,-14,-16,
01408      &11,13,15,11,13,15,12,14,16,
01409      &12,14,16,-11,-13,-15, 
01410      &2912*0/
01411       DATA (KFDP(I,3),I=   1,1021)/81*0,14,6*0,2*16,2*0,6*111,310,130,  
01412      &2*0,3*111,310,130,321,113,211,223,221,2*113,2*211,2*223,2*221,    
01413      &2*113,221,2*113,2*213,-213,113,2*111,310,130,310,130,2*310,130,   
01414      &402*0,4*3,4*4,1,4,3,2*2,0,-11,8*0,-211,5*0,2*111,211,-211,211,    
01415      &-211,10*0,111,4*0,2*111,-211,-11,11,-13,22,111,3*0,22,3*0,111,    
01416      &211,4*0,111,11*0,111,-211,6*0,-211,3*111,7*0,111,-211,5*0,2*221,  
01417      &3*0,111,5*0,111,11*0,-311,-313,-311,-321,-313,-323,111,221,331,   
01418      &113,223,-311,-313,-311,-321,-313,-323,111,221,331,113,223,22*0,   
01419      &111,113,2*211,-211,-311,211,111,3*211,-211,7*211,7*0,111,-211,    
01420      &111,-211,-321,-323,-311,-321,-313,-323,-211,-213,-321,-323,-311,  
01421      &-321,-313,-323,-211,-213,22*0,111,113,-311,2*-211,211,-211,310,   
01422      &-211,2*111,211,2*-211,-321,-211,2*211,-211,111,-211,2*211,6*0,    
01423      &111,-211,111,-211,0,221,331,333,321,311,221,331,333,321,311,20*0, 
01424      &3,13*0,-411,-413,-10413,-10411,-20413,-415,-411,-413,-10413,      
01425      &-10411,-20413,-415,-411,-413,16*0,-4,-1,-4,-3,2*-2,5*0,111,-211,  
01426      &111,-211,-421,-423,-10423,-10421,-20423,-425,-421,-423,-10423,    
01427      &-10421,-20423,-425,-421,-423,16*0,-4,-1,-4,-3,2*-2,5*0,111,-211,  
01428      &111,-211,-431,-433,-10433,-10431,-20433,-435,-431,-433,-10433,    
01429      &-10431,-20433,-435,-431,-433,19*0,-4,-1,-4,-3,2*-2,8*0,441,443,   
01430      &441,443,441,443,-4,-1,-4,-3,-4,-3,-4,-1,531,533,531,533,3,2,3,2/  
01431       DATA (KFDP(I,3),I=1022,2223)/511,513,511,513,1,2,13*0,2*21,11*0,  
01432      &2112,6*0,2212,12*0,2*3122,3212,10*0,3322,2*0,3122,3212,3214,2112, 
01433      &2114,2212,2112,3122,3212,3214,2112,2114,2212,2112,52*0,3*3,1,6*0, 
01434      &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,  
01435      &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,  
01436      &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,    
01437      &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,  
01438      &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,    
01439      &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,  
01440      &3,2*2,31*0,211,111,45*0,-211,2*111,-211,3*111,-211,111,211,30*0,  
01441      &-211,111,13*0,2*21,-211,111,199*0,2*5,210*0,-1,-3,-5,-2,-4,-6,-1, 
01442      &-3,-5,-2,-4,-6,-1,-3,-5,-2,-4,-6,-1,-3,-5,-2,-4,-6,-2,2,-4,4,-6,  
01443      &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,  
01444      &-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, 
01445      &-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, 
01446      &-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, 
01447      &-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,   
01448      &-5,5,-5,5,5*0,11,12,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11, 
01449      &-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,   
01450      &-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,-5,5,-5,1,-1,1,-1,3,-3,3/ 
01451       DATA (KFDP(I,3),I=2224,2783)/-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,  
01452      &-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, 
01453      &-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, 
01454      &-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,   
01455      &-5,5,-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,7*0,-11,-13,-15,-12,-14,  
01456      &-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,-2,2,-4,4,2*0,-12,12, 
01457      &-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,11,-11,13,-13,15,-15, 
01458      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
01459      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,  
01460      &-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, 
01461      &-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, 
01462      &-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, 
01463      &-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,   
01464      &-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, 
01465      &4,0,12,14,16,2,4,0,12,14,16,2,4,28*0,2,4,12,-11,11,14,-13,13,16,  
01466      &-15,15,12,-11,11,14,-13,13,16,-15,15,12,11,14,13,16,15,12,-11,11, 
01467      &14,-13,13,16,-15,15,12,11,14,13,16,15,12,11,14,13,16,15,2*2,1,-1, 
01468      &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,   
01469      &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,   
01470      &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/   
01471       DATA (KFDP(I,3),I=2784,3354)/2*4,3,-3,2*6,5,-5,2*2,1,-1,2*4,3,-3, 
01472      &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,  
01473      &-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,-11,-13,-15,-12,-14,   
01474      &-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,-2,2,-4,4,2*0,-12,12, 
01475      &-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4,11,-11,13,-13,15,-15, 
01476      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
01477      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1,-1,1,-1,3,-3,3,-3,5,  
01478      &-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, 
01479      &-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, 
01480      &-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, 
01481      &-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,   
01482      &-5,5,-3,3,-5,5,-5,5,-3,3,-5,5,-5,5,7*0,-11,-13,-15,-12,-14,-16,   
01483      &-1,-3,-5,-2,-4,5*0,-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,    
01484      &-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,5*0,-12,12,-14,14,-16,16,  
01485      &-2,2,-4,4,2*0,-12,12,-14,14,-16,16,-2,2,-4,4,52*0,-1,-3,-5,-2,-4, 
01486      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,   
01487      &11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,11,-11,13,-13,15,-15,1, 
01488      &-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, 
01489      &-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, 
01490      &-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/ 
01491       DATA (KFDP(I,3),I=3355,8000)/-3,5,-5,5,-5,1,-1,1,-1,3,-3,3,-3,5,  
01492      &-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,   
01493      &-5,5,-3,3,-5,5,-5,5,3*0,-11,-13,-15,-12,-14,-16,-1,-3,-5,-2,-4,   
01494      &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,    
01495      &28*0,2,4,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,    
01496      &-15,15,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,-15,  
01497      &15,12,-11,11,14,-13,13,16,-15,15,12,-11,11,14,-13,13,16,-15,15,   
01498      &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,   
01499      &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,   
01500      &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,   
01501      &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,  
01502      &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, 
01503      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900014,2*9900016,2,4,6,2,4, 
01504      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900012,2*9900016,2,4,6,2,4, 
01505      &6,2,4,6,-2,-4,-6,-2,-4,-6,-2,-4,-6,2*9900012,2*9900014,3831*0/    
01506       DATA (KFDP(I,4),I=   1,8000)/94*0,4*111,6*0,111,2*0,-211,0,-211,  
01507      &3*0,111,2*-211,0,111,0,2*111,113,221,2*111,-213,-211,211,113,     
01508      &6*111,310,2*130,402*0,13*81,41*0,-11,10*0,111,-211,4*0,111,62*0,  
01509      &111,211,111,211,7*0,111,211,111,211,35*0,2*-211,2*111,211,111,    
01510      &-211,2*211,2*-211,13*0,-211,111,-211,111,4*0,-211,111,-211,111,   
01511      &34*0,111,-211,3*111,3*-211,2*111,3*-211,14*0,-321,-311,3*0,-321,  
01512      &-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,    
01513      &2*-5,67*0,-211,111,5*0,-211,111,52*0,2101,2103,2*2101,6*0,4*81,   
01514      &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, 
01515      &162*81,31*0,-211,111,6516*0/                                      
01516       DATA (KFDP(I,5),I=   1,8000)/96*0,2*111,17*0,111,7*0,2*111,0,     
01517      &3*111,0,111,597*0,-211,2*111,-211,111,-211,111,65*0,111,-211,     
01518      &3*111,-211,111,7193*0/                                            
01519  
01520 C...PYDAT4, with particle names (character strings).
01521       DATA (CHAF(I,1),I=   1, 202)/'d','u','s','c','b','t','b''','t''', 
01522      &2*' ','e-','nu_e','mu-','nu_mu','tau-','nu_tau','tau''-',         
01523      &'nu''_tau',2*' ','g','gamma','Z0','W+','h0',6*' ','Z''0','Z"0',   
01524      &'W''+','H0','A0','H+',' ','Graviton',' ','R0','LQ_ue',38*' ',     
01525      &'specflav','rndmflav','phasespa','c-hadron','b-hadron',2*' ',     
01526      &'junction',' ','system','cluster','string','indep.','CMshower',   
01527      &'SPHEaxis','THRUaxis','CLUSjet','CELLjet','table',' ','reggeon',  
01528      &'pi0','rho0','a_20','K_L0','pi+','rho+','a_2+','eta','omega',     
01529      &'f_2','K_S0','K0','K*0','K*_20','K+','K*+','K*_2+','eta''','phi', 
01530      &'f''_2','D+','D*+','D*_2+','D0','D*0','D*_20','D_s+','D*_s+',     
01531      &'D*_2s+','eta_c','J/psi','chi_2c','B0','B*0','B*_20','B+','B*+',  
01532      &'B*_2+','B_s0','B*_s0','B*_2s0','B_c+','B*_c+','B*_2c+','eta_b',  
01533      &'Upsilon','chi_2b','pomeron','dd_1','Delta-','ud_0','ud_1','n0',  
01534      &'Delta0','uu_1','p+','Delta+','Delta++','sd_0','sd_1','Sigma-',   
01535      &'Sigma*-','Lambda0','su_0','su_1','Sigma0','Sigma*0','Sigma+',    
01536      &'Sigma*+','ss_1','Xi-','Xi*-','Xi0','Xi*0','Omega-','cd_0',       
01537      &'cd_1','Sigma_c0','Sigma*_c0','Lambda_c+','Xi_c0','cu_0','cu_1',  
01538      &'Sigma_c+','Sigma*_c+','Sigma_c++','Sigma*_c++','Xi_c+','cs_0',   
01539      &'cs_1','Xi''_c0','Xi*_c0','Xi''_c+','Xi*_c+','Omega_c0',          
01540      &'Omega*_c0','cc_1','Xi_cc+','Xi*_cc+','Xi_cc++','Xi*_cc++'/       
01541       DATA (CHAF(I,1),I= 203, 332)/'Omega_cc+','Omega*_cc+',            
01542      &'Omega*_ccc++','bd_0','bd_1','Sigma_b-','Sigma*_b-','Lambda_b0',  
01543      &'Xi_b-','Xi_bc0','bu_0','bu_1','Sigma_b0','Sigma*_b0','Sigma_b+', 
01544      &'Sigma*_b+','Xi_b0','Xi_bc+','bs_0','bs_1','Xi''_b-','Xi*_b-',    
01545      &'Xi''_b0','Xi*_b0','Omega_b-','Omega*_b-','Omega_bc0','bc_0',     
01546      &'bc_1','Xi''_bc0','Xi*_bc0','Xi''_bc+','Xi*_bc+','Omega''_bc0',   
01547      &'Omega*_bc0','Omega_bcc+','Omega*_bcc+','bb_1','Xi_bb-',          
01548      &'Xi*_bb-','Xi_bb0','Xi*_bb0','Omega_bb-','Omega*_bb-',            
01549      &'Omega_bbc0','Omega*_bbc0','Omega*_bbb-','a_00','b_10','a_0+',    
01550      &'b_1+','f_0','h_1','K*_00','K_10','K*_0+','K_1+','f''_0','h''_1', 
01551      &'D*_0+','D_1+','D*_00','D_10','D*_0s+','D_1s+','chi_0c','h_1c',   
01552      &'B*_00','B_10','B*_0+','B_1+','B*_0s0','B_1s0','B*_0c+','B_1c+',  
01553      &'chi_0b','h_1b','a_10','a_1+','f_1','K*_10','K*_1+','f''_1',      
01554      &'D*_1+','D*_10','D*_1s+','chi_1c','B*_10','B*_1+','B*_1s0',       
01555      &'B*_1c+','chi_1b','psi''','Upsilon''','~d_L','~u_L','~s_L',       
01556      &'~c_L','~b_1','~t_1','~e_L-','~nu_eL','~mu_L-','~nu_muL',         
01557      &'~tau_1-','~nu_tauL','~g','~chi_10','~chi_20','~chi_1+',          
01558      &'~chi_30','~chi_40','~chi_2+','~Gravitino','~d_R','~u_R','~s_R',  
01559      &'~c_R','~b_2','~t_2','~e_R-','~nu_eR','~mu_R-','~nu_muR',         
01560      &'~tau_2-','~nu_tauR','pi_tc0','pi_tc+','pi''_tc0','eta_tc0'/      
01561       DATA (CHAF(I,1),I= 333, 500)/'rho_tc0','rho_tc+','omega_tc',      
01562      &'V8_tc','pi_22_1_tc','pi_22_8_tc','rho_11_tc','rho_12_tc',        
01563      &'rho_21_tc','rho_22_tc','d*','u*','e*-','nu*_e0','Graviton*',     
01564      &'nu_Re','nu_Rmu','nu_Rtau','Z_R0','W_R+','H_L++','H_R++',         
01565      &'rho_diff0','pi_diffr+','omega_di','phi_diff','J/psi_di',         
01566      &'n_diffr0','p_diffr+','cc~[3S18]','cc~[1S08]','cc~[3P08]',        
01567      &'bb~[3S18]','bb~[1S08]','bb~[3P08]','a_tc0','a_tc+',
01568      &81*' ',
01569 C...UED    
01570      &'d*_S','u*_S','s*_S','c*_S','b*_S','t*_S',
01571      &'d*_D','u*_D','s*_D','c*_D','b*_D','t*_D',
01572      &'e*_S-','mu*_S-','tau*_S-',
01573      &'nu*_eD','e*_D-','nu*_muD','mu*_D-','nu*_tauD','tau*_D-',
01574      &'g*','gamma*','Z*0','W*+',25*' '/               
01575       DATA (CHAF(I,2),I=   1, 205)/'dbar','ubar','sbar','cbar','bbar',  
01576      &'tbar','b''bar','t''bar',2*' ','e+','nu_ebar','mu+','nu_mubar',   
01577      &'tau+','nu_taubar','tau''+','nu''_taubar',5*' ','W-',9*' ',       
01578      &'W''-',2*' ','H-',3*' ','Rbar0','LQ_uebar',39*' ','rndmflavbar',  
01579      &' ','c-hadronbar','b-hadronbar',20*' ','pi-','rho-','a_2-',4*' ', 
01580      &'Kbar0','K*bar0','K*_2bar0','K-','K*-','K*_2-',3*' ','D-','D*-',  
01581      &'D*_2-','Dbar0','D*bar0','D*_2bar0','D_s-','D*_s-','D*_2s-',      
01582      &3*' ','Bbar0','B*bar0','B*_2bar0','B-','B*-','B*_2-','B_sbar0',   
01583      &'B*_sbar0','B*_2sbar0','B_c-','B*_c-','B*_2c-',4*' ','dd_1bar',   
01584      &'Deltabar+','ud_0bar','ud_1bar','nbar0','Deltabar0','uu_1bar',    
01585      &'pbar-','Deltabar-','Deltabar--','sd_0bar','sd_1bar','Sigmabar+', 
01586      &'Sigma*bar+','Lambdabar0','su_0bar','su_1bar','Sigmabar0',        
01587      &'Sigma*bar0','Sigmabar-','Sigma*bar-','ss_1bar','Xibar+',         
01588      &'Xi*bar+','Xibar0','Xi*bar0','Omegabar+','cd_0bar','cd_1bar',     
01589      &'Sigma_cbar0','Sigma*_cbar0','Lambda_cbar-','Xi_cbar0','cu_0bar', 
01590      &'cu_1bar','Sigma_cbar-','Sigma*_cbar-','Sigma_cbar--',            
01591      &'Sigma*_cbar--','Xi_cbar-','cs_0bar','cs_1bar','Xi''_cbar0',      
01592      &'Xi*_cbar0','Xi''_cbar-','Xi*_cbar-','Omega_cbar0',               
01593      &'Omega*_cbar0','cc_1bar','Xi_ccbar-','Xi*_ccbar-','Xi_ccbar--',   
01594      &'Xi*_ccbar--','Omega_ccbar-','Omega*_ccbar-','Omega*_cccbar-'/    
01595       DATA (CHAF(I,2),I= 206, 325)/'bd_0bar','bd_1bar','Sigma_bbar+',   
01596      &'Sigma*_bbar+','Lambda_bbar0','Xi_bbar+','Xi_bcbar0','bu_0bar',   
01597      &'bu_1bar','Sigma_bbar0','Sigma*_bbar0','Sigma_bbar-',             
01598      &'Sigma*_bbar-','Xi_bbar0','Xi_bcbar-','bs_0bar','bs_1bar',        
01599      &'Xi''_bbar+','Xi*_bbar+','Xi''_bbar0','Xi*_bbar0','Omega_bbar+',  
01600      &'Omega*_bbar+','Omega_bcbar0','bc_0bar','bc_1bar','Xi''_bcbar0',  
01601      &'Xi*_bcbar0','Xi''_bcbar-','Xi*_bcbar-','Omega''_bcba',           
01602      &'Omega*_bcbar0','Omega_bccbar-','Omega*_bccbar-','bb_1bar',       
01603      &'Xi_bbbar+','Xi*_bbbar+','Xi_bbbar0','Xi*_bbbar0','Omega_bbbar+', 
01604      &'Omega*_bbbar+','Omega_bbcbar0','Omega*_bbcbar0',                 
01605      &'Omega*_bbbbar+',2*' ','a_0-','b_1-',2*' ','K*_0bar0','K_1bar0',  
01606      &'K*_0-','K_1-',2*' ','D*_0-','D_1-','D*_0bar0','D_1bar0',         
01607      &'D*_0s-','D_1s-',2*' ','B*_0bar0','B_1bar0','B*_0-','B_1-',       
01608      &'B*_0sbar0','B_1sbar0','B*_0c-','B_1c-',3*' ','a_1-',' ',         
01609      &'K*_1bar0','K*_1-',' ','D*_1-','D*_1bar0','D*_1s-',' ',           
01610      &'B*_1bar0','B*_1-','B*_1sbar0','B*_1c-',3*' ','~d_Lbar',          
01611      &'~u_Lbar','~s_Lbar','~c_Lbar','~b_1bar','~t_1bar','~e_L+',        
01612      &'~nu_eLbar','~mu_L+','~nu_muLbar','~tau_1+','~nu_tauLbar',3*' ',  
01613      &'~chi_1-',2*' ','~chi_2-',' ','~d_Rbar','~u_Rbar','~s_Rbar',      
01614      &'~c_Rbar','~b_2bar','~t_2bar','~e_R+','~nu_eRbar','~mu_R+'/       
01615       DATA (CHAF(I,2),I= 326, 500)/'~nu_muRbar','~tau_2+',              
01616      &'~nu_tauRbar',' ','pi_tc-',3*' ','rho_tc-',8*' ','d*bar','u*bar', 
01617      &'e*bar+','nu*_ebar0',5*' ','W_R-','H_L--','H_R--',' ',            
01618      &'pi_diffr-',3*' ','n_diffrbar0','p_diffrbar-',7*' ','a_tc-',     
01619      &81*' ',
01620 C...UED
01621      &'d*_Sbar','u*_Sbar','s*_Sbar','c*_Sbar','b*_Sbar','t*_Sbar',
01622      &'d*_Dbar','u*_Dbar','s*_Dbar','c*_Dbar','b*_Dbar','t*_Dbar',
01623      &'e*_Sbar+','mu*_Sbar+','tau*_Sbar+',
01624      &'nu*_eDbar','e*_Dbar+',
01625      &'nu*_muDbar','mu*_Dbar+',
01626      &'nu*_tauDbar','tau*_Dbar+',
01627      &'g*','gamma*','Z*0','W*-',25*' '/            
01628  
01629 C...PYDATR, with initial values for the random number generator.
01630       DATA MRPY/19780503,0,0,97,33,0/
01631  
01632 C...Default values for allowed processes and kinematics constraints.
01633       DATA MSEL/1/
01634       DATA MSUB/500*0/
01635       DATA ((KFIN(I,J),J=-40,40),I=1,2)/16*0,4*1,4*0,6*1,5*0,5*1,0,
01636      &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,
01637      &6*1,4*0,4*1,16*0/
01638       DATA CKIN/
01639      &  2.0D0, -1.0D0,  0.0D0, -1.0D0,  1.0D0,
01640      &  1.0D0,  -10D0,   10D0,  -40D0,   40D0,
01641      1  -40D0,   40D0,  -40D0,   40D0,  -40D0,
01642      1   40D0, -1.0D0,  1.0D0, -1.0D0,  1.0D0,
01643      2  0.0D0,  1.0D0,  0.0D0,  1.0D0, -1.0D0,
01644      2  1.0D0, -1.0D0,  1.0D0,    0D0,    0D0,
01645      3  2.0D0, -1.0D0,    0D0,    0D0,  0.0D0,
01646      3 -1.0D0,  0.0D0, -1.0D0,  4.0D0, -1.0D0,
01647      4 12.0D0, -1.0D0, 12.0D0, -1.0D0, 12.0D0,
01648      4 -1.0D0, 12.0D0, -1.0D0,    0D0,    0D0,
01649      5  0.0D0, -1.0D0,  0.0D0, -1.0D0,  0.0D0,
01650      5 -1.0D0,    0D0,    0D0,    0D0,    0D0,
01651      6 0.0001D0, 0.99D0, 0.0001D0, 0.99D0,    0D0,
01652      6   -1D0,    0D0,   -1D0,    0D0,   -1D0,
01653      7    0D0,   -1D0, 0.0001D0, 0.99D0, 0.0001D0,
01654      7 0.99D0,    2D0,   -1D0,    0D0,    0D0,
01655      8  120*0D0/
01656  
01657 C...Default values for main switches and parameters. Reset information.
01658       DATA (MSTP(I),I=1,100)/
01659      &  3,    1,    2,    0,    0,    0,    0,    0,    0,    0,
01660      1  1,    0,    1,   30,    0,    1,    4,    3,    4,    3,
01661      2  1,    0,    1,    0,    0,    0,    0,    0,    0,    1,
01662      3  1,    8,    0,    1,    0,    2,    1,    5,    2,    0,
01663      4  2,    1,    3,    7,    3,    1,    1,    0,    1,    0,
01664      5  7,    1,    3,    1,    5,    1,    1,    5,    1,    7,
01665      6  2,    3,    2,    2,    1,    5,    2,    3,    0,    0,
01666      7  1,    1,    0,    0,    0,    0,    0,    0,    0,    0,
01667      8  1,    4,  100,    1,    1,    2,    4,    1,    1,    0,
01668      9  1,    3,    1,    3,    1,    0,    0,    0,    0,    0/
01669       DATA (MSTP(I),I=101,200)/
01670      &  3,    1,    0,    0,    0,    0,    0,    0,    0,    0,
01671      1  1,    1,    1,    0,    0,    0,    0,    0,    0,    0,
01672      2  0,    1,    2,    1,    1,  100,    0,    0,   10,    0,
01673      3  0,    4,    0,    1,    0,    0,    0,    0,    0,    0,
01674      4  0,    0,    0,    0,    0,    1,    0,    0,    0,    0,
01675      5  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01676      6  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01677      7  0,    2,    0,    0,    0,    0,    0,    0,    0,    0,
01678      8  6,  420, 2009,   02,   20,    0,    0,    0,    0,    0,
01679      9  0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
01680       DATA (PARP(I),I=1,100)/
01681      &  0.25D0,  10D0, 8*0D0,
01682      1  0D0, 0D0, 1.0D0, 0.01D0, 0.5D0, 1.0D0, 1.0D0, 0.4D0, 2*0D0,
01683      2  10*0D0,
01684      3  1.5D0,2.0D0,0.075D0,1.0D0,0.2D0,0D0,1.0D0,0.70D0,0.006D0,0D0,
01685      4  0.02D0,2.0D0,0.10D0,1000D0,2054D0,123D0,246D0,50D0,0D0,0.054D0,
01686      5  10*0D0,
01687      6  0.25D0, 1.0D0,0.25D0, 1.0D0, 2.0D0,1D-3, 4.0D0,1D-3,2*0D0,
01688      7  4.0D0, 0.25D0, 5*0D0, 0.025D0, 2.0D0, 0.1D0,
01689      8  1.90D0, 2.0D0, 0.5D0, 0.4D0, 0.90D0,
01690      8  0.95D0, 0.7D0, 0.5D0, 1800D0, 0.16D0,
01691      9  2.0D0,0.40D0,5.0D0,1.0D0,0.0D0,3.0D0,1.0D0,0.75D0,1.0D0,5.0D0/
01692       DATA (PARP(I),I=101,200)/
01693      &  0.5D0, 0.28D0,  1.0D0, 0.8D0, 0D0, 0D0, 0D0, 0D0, 0D0, 1D0,
01694      1  2.0D0, 3*0D0, 1.5D0, 0.5D0, 0.6D0, 2.5D0, 2.0D0, 1.0D0,
01695      2  1.0D0,  0.4D0, 8*0D0,
01696      3  0.01D0, 9*0D0,
01697      4  1.16D0, 0.0119D0, 0.01D0, 0.01D0, 0.05D0, 
01698      4  9.28D0, 0.15D0, 0.02D0, 0.48D0, 0.09D0,
01699      5  0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0, 0D0,
01700      6  2.20D0, 23.6D0, 18.4D0, 11.5D0, 0.5D0, 0D0, 0D0, 0D0, 2*0D0,
01701      7  0D0,   0D0,   0D0,  1.0D0, 6*0D0,
01702      8  0.1D0, 0.01D0, 0.01D0, 0.01D0, 0.1D0, 0.01D0, 0.01D0, 0.01D0,
01703      8  0.3D0, 0.64D0,
01704      9  0.64D0, 5.0D0, 1.0D4, 1.0D4, 6*0D0/
01705       DATA MSTI/200*0/
01706       DATA PARI/200*0D0/
01707       DATA MINT/400*0/
01708       DATA VINT/400*0D0/
01709  
01710 C...Constants for the generation of the various processes.
01711       DATA (ISET(I),I=1,100)/
01712      &  1,    1,    1,   -1,    3,   -1,   -1,    3,   -2,    2,
01713      1  2,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
01714      2 -1,    2,    2,    2,    2,    2,   -1,    2,    2,    2,
01715      3  2,    2,    2,    2,    2,    2,   -1,   -1,   -1,   -1,
01716      4 -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
01717      5 -1,   -1,    2,    2,   -1,   -1,   -1,    2,   -1,   -1,
01718      6 -1,   -1,   -1,   -1,   -1,   -1,   -1,    2,    2,    2,
01719      7  4,    4,    4,   -1,   -1,    4,    4,   -1,   -1,    2,
01720      8  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
01721      9  0,    0,    0,    0,    0,    9,   -2,   -2,    8,   -2/
01722       DATA (ISET(I),I=101,200)/
01723      & -1,    1,    1,    1,    1,    2,    2,    2,   -2,    2,
01724      1  2,    2,    2,    2,    2,   -1,   -1,   -1,   -2,   -2,
01725      2  5,    5,    5,    5,   -2,   -2,   -2,   -2,   -2,   -2,
01726      3  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01727      4  1,    1,    1,    1,    1,    1,    1,    1,    1,   -2,
01728      5  1,    1,    1,   -2,   -2,    1,    1,    1,   -2,   -2,
01729      6  2,    2,    2,    2,    2,    2,    2,    2,    2,   -2,
01730      7  2,    2,    5,    5,   -2,    2,    2,    5,    5,   -2,
01731      8  5,    5,    2,    2,    2,    5,    5,    2,    2,    2,
01732      9  1,    1,    1,    2,    2,   -2,   -2,   -2,   -2,   -2/
01733       DATA (ISET(I),I=201,300)/
01734      &  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01735      1  2,    2,    2,    2,   -2,    2,    2,    2,    2,    2,
01736      2  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01737      3  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01738      4  2,    2,    2,    2,   -1,    2,    2,    2,    2,    2,
01739      5  2,    2,    2,    2,   -1,    2,   -1,    2,    2,   -2,
01740      6  2,    2,    2,    2,    2,   -1,   -1,   -1,   -1,   -1,
01741      7  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01742      8  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01743      9  2,    2,    2,    2,    2,    2,    2,    2,    2,    2/
01744       DATA (ISET(I),I=301,500)/
01745      &  2, 9*-2, 9*2, 21*-2,
01746      4  1,    1,    2,    2,    2,    2,    2,    2,    2,    2,
01747      5  5,    5,    1,    1,   -1,   -1,   -1,   -1,   -1,   -1,
01748      6  2,    2,    2,    2,    2,    2,    2,    2,   -1,    2,
01749      7  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01750      8  2,    2,    2,    2,    2,    2,    2,    2,   -2,   -2,
01751      9  1,    1,    2,    2,    2, 5*-2,
01752      &  5,    5, 18*-2,
01753      2  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01754      3  2,    2,    2,    2,    2,    2,    2,    2,    2, 21*-2,
01755      6  2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
01756      7  2,    2,    2,    2,    2,    2,    2,    2,    2, 21*-2/
01757       DATA ((KFPR(I,J),J=1,2),I=1,50)/
01758      &  23,    0,   24,    0,   25,    0,   24,    0,   25,    0,
01759      &  24,    0,   23,    0,   25,    0,    0,    0,    0,    0,
01760      1   0,    0,    0,    0,   21,   21,   21,   22,   21,   23,
01761      1  21,   24,   21,   25,   22,   22,   22,   23,   22,   24,
01762      2  22,   25,   23,   23,   23,   24,   23,   25,   24,   24,
01763      2  24,   25,   25,   25,    0,   21,    0,   22,    0,   23,
01764      3   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
01765      3   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
01766      4   0,   24,    0,   25,    0,   21,    0,   22,    0,   23,
01767      4   0,   24,    0,   25,    0,   21,    0,   22,    0,   23/
01768       DATA ((KFPR(I,J),J=1,2),I=51,100)/
01769      5   0,   24,    0,   25,    0,    0,    0,    0,    0,    0,
01770      5   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01771      6   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01772      6   0,    0,    0,    0,   21,   21,   24,   24,   23,   24,
01773      7  23,   23,   24,   24,   23,   24,   23,   25,   22,   22,
01774      7  23,   23,   24,   24,   24,   25,   25,   25,    0,  211,
01775      8   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01776      8 443,   21,10441,   21,20443,   21,  445,   21,    0,    0,
01777      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01778      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
01779       DATA ((KFPR(I,J),J=1,2),I=101,150)/
01780      &  23,    0,   25,    0,   25,    0,10441,    0,  445,    0,
01781      & 443,   22,  443,   21,  443,   22,    0,    0,   22,   25,
01782      1  21,   25,    0,   25,   21,   25,   22,   22,   21,   22,
01783      1  22,   23,   23,   23,   24,   24,    0,    0,    0,    0,
01784      2  25,    6,   25,    6,   25,    0,   25,    0,    0,    0,
01785      2   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01786      3   0,   21,    0,   21,    0,   22,    0,   22,    0,    0,
01787      3   0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01788      4  32,    0,   34,    0,   37,    0,   41,    0,   42,    0,
01789      4 4000011, 0, 4000001, 0, 4000002, 0, 3000331, 0,   0,    0/
01790       DATA ((KFPR(I,J),J=1,2),I=151,200)/
01791      5  35,    0,   35,    0,   35,    0,    0,    0,    0,    0,
01792      5  36,    0,   36,    0,   36,    0,    0,    0,    0,    0,
01793      6   6,   37,   42,    0,   42,   42,   42,   42,   11,    0,
01794      6  11,    0, 0, 4000001, 0, 4000002, 0, 4000011,    0,    0,
01795      7  23,   35,   24,   35,   35,    0,   35,    0,    0,    0,
01796      7  23,   36,   24,   36,   36,    0,   36,    0,    0,    0,
01797      8  35,    6,   35,    6,   21,   35,    0,   35,   21,   35,
01798      8  36,    6,   36,    6,   21,   36,    0,   36,   21,   36,
01799      9  3000113, 0, 3000213, 0, 3000223, 0, 11,    0,   11,    0,
01800      9   0,    0,    0,    0,    0,    0,    0,    0,    0,    0/
01801       DATA ((KFPR(I,J),J=1,2),I=201,240)/
01802      &  1000011,   1000011,   2000011,   2000011,   1000011,
01803      &  2000011,   1000013,   1000013,   2000013,   2000013,
01804      &  1000013,   2000013,   1000015,   1000015,   2000015,
01805      &  2000015,   1000015,   2000015,   1000011,   1000012,
01806      1  1000015,   1000016,   2000015,   1000016,   1000012,
01807      1  1000012,   1000016,   1000016,         0,         0,
01808      1  1000022,   1000022,   1000023,   1000023,   1000025,
01809      1  1000025,   1000035,   1000035,   1000022,   1000023,
01810      2  1000022,   1000025,   1000022,   1000035,   1000023,
01811      2  1000025,   1000023,   1000035,   1000025,   1000035,
01812      2  1000024,   1000024,   1000037,   1000037,   1000024,
01813      2  1000037,   1000022,   1000024,   1000023,   1000024,
01814      3  1000025,   1000024,   1000035,   1000024,   1000022,
01815      3  1000037,   1000023,   1000037,   1000025,   1000037,
01816      3  1000035,   1000037,   1000021,   1000022,   1000021,
01817      3  1000023,   1000021,   1000025,   1000021,   1000035/
01818       DATA ((KFPR(I,J),J=1,2),I=241,280)/
01819      4  1000021,   1000024,   1000021,   1000037,   1000021,
01820      4  1000021,   1000021,   1000021,         0,         0,
01821      4  1000002,   1000022,   2000002,   1000022,   1000002,
01822      4  1000023,   2000002,   1000023,   1000002,   1000025,
01823      5  2000002,   1000025,   1000002,   1000035,   2000002,
01824      5  1000035,   1000001,   1000024,   2000005,   1000024,
01825      5  1000001,   1000037,   2000005,   1000037,   1000002,
01826      5  1000021,   2000002,   1000021,         0,         0,
01827      6  1000006,   1000006,   2000006,   2000006,   1000006,
01828      6  2000006,   1000006,   1000006,   2000006,   2000006,
01829      6        0,         0,         0,         0,         0,
01830      6        0,         0,         0,         0,         0,
01831      7  1000002,   1000002,   2000002,   2000002,   1000002,
01832      7  2000002,   1000002,   1000002,   2000002,   2000002,
01833      7  1000002,   2000002,   1000002,   1000002,   2000002,
01834      7  2000002,   1000002,   1000002,   2000002,   2000002/
01835       DATA ((KFPR(I,J),J=1,2),I=281,350)/
01836      8  1000005,   1000002,   2000005,   2000002,   1000005,
01837      8  2000002,   1000005,   1000002,   2000005,   2000002,
01838      8  1000005,   2000002,   1000005,   1000005,   2000005,
01839      8  2000005,   1000005,   1000005,   2000005,   2000005,
01840      9  1000005,   1000005,   2000005,   2000005,   1000005,
01841      9  2000005,   1000005,   1000021,   2000005,   1000021,
01842      9  1000005,   2000005,        37,        25,        37,
01843      9       35,        36,        25,        36,        35,
01844      &       37,        37,      18*0,
01845 C...UED: 311-319
01846      &  5100021,   5100021, 
01847      &  5100002,   5100021, 
01848      &  5100002,   5100001,
01849      &  5100002,  -5100002, 
01850      &  5100002,  -5100002,
01851      &  5100002,  -6100001,
01852      &  5100002,  -5100001,
01853      &  5100002,   6100001,
01854      &  5100001,  -5100001,
01855      &  42*0,
01856      4  9900041,         0,   9900042,         0,   9900041,
01857      4       11,   9900042,        11,   9900041,        13,
01858      4  9900042,        13,   9900041,        15,   9900042,
01859      4       15,   9900041,   9900041,   9900042,   9900042/
01860       DATA ((KFPR(I,J),J=1,2),I=351,400)/
01861      5  9900041,         0,   9900042,         0,   9900023,
01862      5        0,   9900024,         0,         0,         0,
01863      5        0,         0,         0,         0,         0,
01864      5        0,         0,         0,         0,         0,
01865      6       24,        24,        24,   3000211,   3000211,
01866      6  3000211,        22,   3000111,        22,   3000221,
01867      6       23,   3000111,        23,   3000221,        24,
01868      6  3000211,         0,         0,        24,        23,
01869      7       24,   3000111,   3000211,        23,   3000211,
01870      7  3000111,        22,   3000211,        23,   3000211,
01871      7       24,   3000111,        24,   3000221,        22,
01872      7       24,        22,        23,        23,        23,
01873      8   0,    0,    0,    0,   21,   21,    0,   21,    0,    0,
01874      8  21,   21,    0,    0,    0,    0,    0,    0,    0,    0,
01875      9  5000039,         0,   5000039,         0,        21,
01876      9  5000039,         0,   5000039,        21,   5000039,
01877      9     10*0/
01878       DATA ((KFPR(I,J),J=1,2),I=401,500)/
01879      &  37,    6,   37,    6,    36*0,
01880      2      443,        21,   9900443,        21,   9900441,
01881      2       21,   9910441,        21,         0,   9900443,
01882      2        0,   9900441,         0,   9910441,        21,
01883      2  9900443,        21,   9900441,        21,   9910441,
01884      3 10441, 21, 20443,  21,  445,   21,    0, 10441,   0, 20443,
01885      3   0,  445,   21, 10441,  21, 20443,  21,  445,  42*0,
01886      6      553,        21,   9900553,        21,   9900551,
01887      6       21,   9910551,        21,         0,   9900553,
01888      6        0,   9900551,         0,   9910551,        21,
01889      6  9900553,        21,   9900551,        21,   9910551,
01890      7 10551, 21, 20553,  21,  555,   21,    0, 10551,   0, 20553,
01891      7   0,  555,   21, 10551,  21, 20553,  21,  555, 42*0/
01892       DATA COEF/10000*0D0/
01893       DATA (((ICOL(I,J,K),K=1,2),J=1,4),I=1,40)/
01894      &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,
01895      &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,
01896      &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,
01897      &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,
01898      &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,
01899      &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,
01900      &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,
01901      &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,
01902      &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,
01903      &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/
01904  
01905 C...Treatment of resonances.
01906       DATA (MWID(I)  ,I=   1, 500)/5*0,3*1,8*0,1,5*0,3*1,6*0,1,0,4*1,   
01907      &3*0,2*1,254*0,19*2,0,7*2,0,2,0,2,0,26*1,7*0,6*2,2*1,
01908      &81*0,21*1,4*1,25*0/
01909  
01910 C...Character constants: name of processes.
01911       DATA PROC(0)/                    'All included subprocesses   '/
01912       DATA (PROC(I),I=1,20)/
01913      &'f + fbar -> gamma*/Z0       ',  'f + fbar'' -> W+/-           ',
01914      &'f + fbar -> h0              ',  'gamma + W+/- -> W+/-        ',
01915      &'Z0 + Z0 -> h0               ',  'Z0 + W+/- -> W+/-           ',
01916      &'                            ',  'W+ + W- -> h0               ',
01917      &'                            ',  'f + f'' -> f + f'' (QFD)      ',
01918      1'f + f'' -> f + f'' (QCD)      ','f + fbar -> f'' + fbar''      ',
01919      1'f + fbar -> g + g           ',  'f + fbar -> g + gamma       ',
01920      1'f + fbar -> g + Z0          ',  'f + fbar'' -> g + W+/-       ',
01921      1'f + fbar -> g + h0          ',  'f + fbar -> gamma + gamma   ',
01922      1'f + fbar -> gamma + Z0      ',  'f + fbar'' -> gamma + W+/-   '/
01923       DATA (PROC(I),I=21,40)/
01924      2'f + fbar -> gamma + h0      ',  'f + fbar -> Z0 + Z0         ',
01925      2'f + fbar'' -> Z0 + W+/-      ', 'f + fbar -> Z0 + h0         ',
01926      2'f + fbar -> W+ + W-         ',  'f + fbar'' -> W+/- + h0      ',
01927      2'f + fbar -> h0 + h0         ',  'f + g -> f + g              ',
01928      2'f + g -> f + gamma          ',  'f + g -> f + Z0             ',
01929      3'f + g -> f'' + W+/-          ', 'f + g -> f + h0             ',
01930      3'f + gamma -> f + g          ',  'f + gamma -> f + gamma      ',
01931      3'f + gamma -> f + Z0         ',  'f + gamma -> f'' + W+/-      ',
01932      3'f + gamma -> f + h0         ',  'f + Z0 -> f + g             ',
01933      3'f + Z0 -> f + gamma         ',  'f + Z0 -> f + Z0            '/
01934       DATA (PROC(I),I=41,60)/
01935      4'f + Z0 -> f'' + W+/-         ', 'f + Z0 -> f + h0            ',
01936      4'f + W+/- -> f'' + g          ', 'f + W+/- -> f'' + gamma      ',
01937      4'f + W+/- -> f'' + Z0         ', 'f + W+/- -> f'' + W+/-       ',
01938      4'f + W+/- -> f'' + h0         ', 'f + h0 -> f + g             ',
01939      4'f + h0 -> f + gamma         ',  'f + h0 -> f + Z0            ',
01940      5'f + h0 -> f'' + W+/-         ', 'f + h0 -> f + h0            ',
01941      5'g + g -> f + fbar           ',  'g + gamma -> f + fbar       ',
01942      5'g + Z0 -> f + fbar          ',  'g + W+/- -> f + fbar''       ',
01943      5'g + h0 -> f + fbar          ',  'gamma + gamma -> f + fbar   ',
01944      5'gamma + Z0 -> f + fbar      ',  'gamma + W+/- -> f + fbar''   '/
01945       DATA (PROC(I),I=61,80)/
01946      6'gamma + h0 -> f + fbar      ',  'Z0 + Z0 -> f + fbar         ',
01947      6'Z0 + W+/- -> f + fbar''      ', 'Z0 + h0 -> f + fbar         ',
01948      6'W+ + W- -> f + fbar         ',  'W+/- + h0 -> f + fbar''      ',
01949      6'h0 + h0 -> f + fbar         ',  'g + g -> g + g              ',
01950      6'gamma + gamma -> W+ + W-    ',  'gamma + W+/- -> Z0 + W+/-   ',
01951      7'Z0 + Z0 -> Z0 + Z0          ',  'Z0 + Z0 -> W+ + W-          ',
01952      7'Z0 + W+/- -> Z0 + W+/-      ',  'Z0 + Z0 -> Z0 + h0          ',
01953      7'W+ + W- -> gamma + gamma    ',  'W+ + W- -> Z0 + Z0          ',
01954      7'W+/- + W+/- -> W+/- + W+/-  ',  'W+/- + h0 -> W+/- + h0      ',
01955      7'h0 + h0 -> h0 + h0          ',  'q + gamma -> q'' + pi+/-     '/
01956       DATA (PROC(I),I=81,100)/
01957      8'q + qbar -> Q + Qbar, mass  ',  'g + g -> Q + Qbar, massive  ',
01958      8'f + q -> f'' + Q, massive    ', 'g + gamma -> Q + Qbar, mass ',
01959      8'gamma + gamma -> F + Fbar, m',  'g + g -> J/Psi + g          ',
01960      8'g + g -> chi_0c + g         ',  'g + g -> chi_1c + g         ',
01961      8'g + g -> chi_2c + g         ',  '                            ',
01962      9'Elastic scattering          ',  'Single diffractive (XB)     ',
01963      9'Single diffractive (AX)     ',  'Double  diffractive         ',
01964      9'Low-pT scattering           ',  'Semihard QCD 2 -> 2         ',
01965      9'                            ',  '                            ',
01966      9'q + gamma* -> q             ',  '                            '/
01967       DATA (PROC(I),I=101,120)/
01968      &'g + g -> gamma*/Z0          ',  'g + g -> h0                 ',
01969      &'gamma + gamma -> h0         ',  'g + g -> chi_0c             ',
01970      &'g + g -> chi_2c             ',  'g + g -> J/Psi + gamma      ',
01971      &'gamma + g -> J/Psi + g      ',  'gamma+gamma -> J/Psi + gamma',
01972      &'                            ',  'f + fbar -> gamma + h0      ',
01973      1'q + qbar -> g + h0          ',  'q + g -> q + h0             ',
01974      1'g + g -> g + h0             ',  'g + g -> gamma + gamma      ',
01975      1'g + g -> g + gamma          ',  'g + g -> gamma + Z0         ',
01976      1'g + g -> Z0 + Z0            ',  'g + g -> W+ + W-            ',
01977      1'                            ',  '                            '/
01978       DATA (PROC(I),I=121,140)/
01979      2'g + g -> Q + Qbar + h0      ',  'q + qbar -> Q + Qbar + h0   ',
01980      2'f + f'' -> f + f'' + h0       ',
01981      2'f + f'' -> f" + f"'' + h0     ',
01982      2'                            ',  '                            ',
01983      2'                            ',  '                            ',
01984      2'                            ',  '                            ',
01985      3'f + gamma*_T -> f + g       ',  'f + gamma*_L -> f + g       ',
01986      3'f + gamma*_T -> f + gamma   ',  'f + gamma*_L -> f + gamma   ',
01987      3'g + gamma*_T -> f + fbar    ',  'g + gamma*_L -> f + fbar    ',
01988      3'gamma*_T+gamma*_T -> f+fbar ',  'gamma*_T+gamma*_L -> f+fbar ',
01989      3'gamma*_L+gamma*_T -> f+fbar ',  'gamma*_L+gamma*_L -> f+fbar '/
01990       DATA (PROC(I),I=141,160)/
01991      4'f + fbar -> gamma*/Z0/Z''0   ', 'f + fbar'' -> W''+/-          ',
01992      4'f + fbar'' -> H+/-           ', 'f + fbar'' -> R              ',
01993      4'q + l -> LQ                 ',  'e + gamma -> e*             ',
01994      4'd + g -> d*                 ',  'u + g -> u*                 ',
01995      4'g + g -> eta_tc             ',  '                            ',
01996      5'f + fbar -> H0              ',  'g + g -> H0                 ',
01997      5'gamma + gamma -> H0         ',  '                            ',
01998      5'                            ',  'f + fbar -> A0              ',
01999      5'g + g -> A0                 ',  'gamma + gamma -> A0         ',
02000      5'                            ',  '                            '/
02001       DATA (PROC(I),I=161,180)/
02002      6'f + g -> f'' + H+/-          ', 'q + g -> LQ + lbar          ',
02003      6'g + g -> LQ + LQbar         ',  'q + qbar -> LQ + LQbar      ',
02004      6'f + fbar -> f'' + fbar'' (g/Z)',
02005      6'f +fbar'' -> f" + fbar"'' (W) ',
02006      6'q + q'' -> q" + d*           ',  'q + q'' -> q" + u*           ',
02007      6'q + qbar -> e + e*          ',  '                            ',
02008      7'f + fbar -> Z0 + H0         ', 'f + fbar'' -> W+/- + H0      ',
02009      7'f + f'' -> f + f'' + H0       ',
02010      7'f + f'' -> f" + f"'' + H0     ',
02011      7'                            ',  'f + fbar -> Z0 + A0         ',
02012      7'f + fbar'' -> W+/- + A0      ',
02013      7'f + f'' -> f + f'' + A0       ',
02014      7'f + f'' -> f" + f"'' + A0     ',
02015      7'                            '/
02016       DATA (PROC(I),I=181,200)/
02017      8'g + g -> Q + Qbar + H0      ',  'q + qbar -> Q + Qbar + H0   ',
02018      8'q + qbar -> g + H0          ',  'q + g -> q + H0             ',
02019      8'g + g -> g + H0             ',  'g + g -> Q + Qbar + A0      ',
02020      8'q + qbar -> Q + Qbar + A0   ',  'q + qbar -> g + A0          ',
02021      8'q + g -> q + A0             ',  'g + g -> g + A0             ',
02022      9'f + fbar -> rho_tc0         ',  'f + f'' -> rho_tc+/-         ',
02023      9'f + fbar -> omega_tc0      ',  'f+fbar -> f''+fbar'' (ETC)  ',
02024      9'f+fbar'' -> f"+fbar"'' (ETC)','                          ',
02025      9'                            ',  '                            ',
02026      9'                            ',  '                            '/
02027       DATA (PROC(I),I=201,220)/
02028      &'f + fbar -> ~e_L + ~e_Lbar  ',  'f + fbar -> ~e_R + ~e_Rbar  ',
02029      &'f + fbar -> ~e_R + ~e_Lbar  ',  'f + fbar -> ~mu_L + ~mu_Lbar',
02030      &'f + fbar -> ~mu_R + ~mu_Rbar',  'f + fbar -> ~mu_L + ~mu_Rbar',
02031      &'f+fbar -> ~tau_1 + ~tau_1bar',  'f+fbar -> ~tau_2 + ~tau_2bar',
02032      &'f+fbar -> ~tau_1 + ~tau_2bar',  'q + qbar'' -> ~l_L + ~nulbar ',
02033      1'q+qbar''-> ~tau_1 + ~nutaubar', 'q+qbar''-> ~tau_2 + ~nutaubar',
02034      1'f + fbar -> ~nul + ~nulbar  ',  'f+fbar -> ~nutau + ~nutaubar',
02035      1'                            ',  'f + fbar -> ~chi1 + ~chi1   ',
02036      1'f + fbar -> ~chi2 + ~chi2   ',  'f + fbar -> ~chi3 + ~chi3   ',
02037      1'f + fbar -> ~chi4 + ~chi4   ',  'f + fbar -> ~chi1 + ~chi2   '/
02038       DATA (PROC(I),I=221,240)/
02039      2'f + fbar -> ~chi1 + ~chi3   ',  'f + fbar -> ~chi1 + ~chi4   ',
02040      2'f + fbar -> ~chi2 + ~chi3   ',  'f + fbar -> ~chi2 + ~chi4   ',
02041      2'f + fbar -> ~chi3 + ~chi4   ',  'f+fbar -> ~chi+-1 + ~chi-+1 ',
02042      2'f+fbar -> ~chi+-2 + ~chi-+2 ',  'f+fbar -> ~chi+-1 + ~chi-+2 ',
02043      2'q + qbar'' -> ~chi1 + ~chi+-1', 'q + qbar'' -> ~chi2 + ~chi+-1',
02044      3'q + qbar'' -> ~chi3 + ~chi+-1', 'q + qbar'' -> ~chi4 + ~chi+-1',
02045      3'q + qbar'' -> ~chi1 + ~chi+-2', 'q + qbar'' -> ~chi2 + ~chi+-2',
02046      3'q + qbar'' -> ~chi3 + ~chi+-2', 'q + qbar'' -> ~chi4 + ~chi+-2',
02047      3'q + qbar -> ~chi1 + ~g      ',  'q + qbar -> ~chi2 + ~g      ',
02048      3'q + qbar -> ~chi3 + ~g      ',  'q + qbar -> ~chi4 + ~g      '/
02049       DATA (PROC(I),I=241,260)/
02050      4'q + qbar'' -> ~chi+-1 + ~g   ', 'q + qbar'' -> ~chi+-2 + ~g  ',
02051      4'q + qbar -> ~g + ~g         ',  'g + g -> ~g + ~g            ',
02052      4'                            ',  'qj + g -> ~qj_L + ~chi1     ',
02053      4'qj + g -> ~qj_R + ~chi1     ',  'qj + g -> ~qj_L + ~chi2     ',
02054      4'qj + g -> ~qj_R + ~chi2     ',  'qj + g -> ~qj_L + ~chi3     ',
02055      5'qj + g -> ~qj_R + ~chi3     ',  'qj + g -> ~qj_L + ~chi4     ',
02056      5'qj + g -> ~qj_R + ~chi4     ',  'qj + g -> ~qk_L + ~chi+-1   ',
02057      5'qj + g -> ~qk_R + ~chi+-1   ',  'qj + g -> ~qk_L + ~chi+-2   ',
02058      5'qj + g -> ~qk_R + ~chi+-2   ',  'qj + g -> ~qj_L + ~g        ',
02059      5'qj + g -> ~qj_R + ~g        ',  '                            '/
02060       DATA (PROC(I),I=261,300)/
02061      6'f + fbar -> ~t_1 + ~t_1bar  ',  'f + fbar -> ~t_2 + ~t_2bar  ',
02062      6'f + fbar -> ~t_1 + ~t_2bar  ',  'g + g -> ~t_1 + ~t_1bar     ',
02063      6'g + g -> ~t_2 + ~t_2bar     ',  '                            ',
02064      6'                            ',  '                            ',
02065      6'                            ',  '                            ',
02066      7'qi + qj -> ~qi_L + ~qj_L    ',  'qi + qj -> ~qi_R + ~qj_R    ',
02067      7'qi + qj -> ~qi_L + ~qj_R    ',  'qi+qjbar -> ~qi_L + ~qj_Lbar',
02068      7'qi+qjbar -> ~qi_R + ~qj_Rbar',  'qi+qjbar -> ~qi_L + ~qj_Rbar',
02069      7'f + fbar -> ~qi_L + ~qi_Lbar',  'f + fbar -> ~qi_R + ~qi_Rbar',
02070      7'g + g -> ~qi_L + ~qi_Lbar   ',  'g + g -> ~qi_R + ~qi_Rbar   ',
02071      8'b + qj -> ~b_1 + ~qj_L      ',  'b + qj -> ~b_2 + ~qj_R      ',
02072      8'b + qj -> ~b_1 + ~qj_R      ',  'b + qjbar -> ~b_1 + ~qj_Lbar',
02073      8'b + qjbar -> ~b_2 + ~qj_Rbar',  'b + qjbar -> ~b_1 + ~qj_Rbar',
02074      8'f + fbar -> ~b_1 + ~b_1bar  ',  'f + fbar -> ~b_2 + ~b_2bar  ',
02075      8'g + g -> ~b_1 + ~b_1bar     ',  'g + g -> ~b_2 + ~b_2bar     ',
02076      9'b + b -> ~b_1 + ~b_1        ',  'b + b -> ~b_2 + ~b_2        ',
02077      9'b + b -> ~b_1 + ~b_2        ',  'b + g -> ~b_1 + ~g          ',
02078      9'b + g -> ~b_2 + ~g          ',  'b + bbar -> ~b_1 + ~b_2bar  ',
02079      9'f + fbar'' -> H+/- + h0     ',  'f + fbar -> H+/- + H0       ',
02080      9'f + fbar -> A0 + h0         ',  'f + fbar -> A0 + H0         '/
02081       DATA (PROC(I),I=301,340)/
02082      &'f + fbar -> H+ + H-         ',
02083      &9*'                          ',  'g + g -> g* + g*            ',
02084      &'q + g -> q*_D + g*          ',  'qi + qj -> q*_Di + q*_Dj    ',
02085      &'g + g -> q*_D + q*_Dbar     ',  'q  + qbar -> q*_D + q*_Dbar ',
02086      &'qi + qbarj -> q*Di + q*Sbarj',  'qi + qjbar -> q*Di + q*Dbarj',
02087      &'qi + qj -> q*_Di + q*_Sj    ',  'qi + qibar -> q*Dj + q*Dbarj',
02088      &21*'                          '/
02089       DATA (PROC(I),I=341,380)/
02090      4'l + l -> H_L++/--           ',  'l + l -> H_R++/--           ',
02091      4'l + gamma -> H_L++/-- e-/+  ',  'l + gamma -> H_R++/-- e-/+  ',
02092      4'l + gamma -> H_L++/-- mu-/+ ',  'l + gamma -> H_R++/-- mu-/+ ',
02093      4'l + gamma -> H_L++/-- tau-/+',  'l + gamma -> H_R++/-- tau-/+',
02094      4'f + fbar -> H_L++ + H_L--   ',  'f + fbar -> H_R++ + H_R--   ',
02095      5'f + f -> f'' + f'' + H_L++/-- ',
02096      5'f + f -> f'' + f'' + H_R++/-- ','f + fbar -> Z_R0            ',
02097      5'f + fbar'' -> W_R+/-         ',5*'                            ',
02098      6'                            ',  'f + fbar -> W_L+ W_L-       ',
02099      6'f + fbar -> W_L+/- pi_T-/+  ',  'f + fbar -> pi_T+ pi_T-     ',
02100      6'f + fbar -> gamma pi_T0     ',  'f + fbar -> gamma pi_T0''    ',
02101      6'f + fbar -> Z0 pi_T0        ',  'f + fbar -> Z0 pi_T0''       ',
02102      6'f + fbar -> W+/- pi_T-/+    ',  '                            ',
02103      7'f + fbar'' -> W_L+/- Z_L0    ', 'f + fbar'' -> W_L+/- pi_T0   ',
02104      7'f + fbar'' -> pi_T+/- Z_L0   ', 'f + fbar'' -> pi_T+/- pi_T0  ',
02105      7'f + fbar'' -> gamma pi_T+/-  ', 'f + fbar'' -> Z0 pi_T+/-     ',
02106      7'f + fbar'' -> W+/- pi_T0     ',
02107      7'f + fbar'' -> W+/- pi_T0''    ',
02108      7'f + fbar'' -> gamma W+/-(ETC)','f + fbar -> gamma Z0 (ETC)',
02109      7'f + fbar -> Z0 Z0 (ETC)     '/
02110       DATA (PROC(I),I=381,420)/
02111      8'f + f'' -> f + f'' (ETC)      ','f + fbar -> f'' + fbar'' (ETC)',
02112      8'f + fbar -> g + g (ETC)     ',  'f + g -> f + g (ETC)        ',
02113      8'g + g -> f + fbar (ETC)     ',  'g + g -> g + g (ETC)        ',
02114      8'q + qbar -> Q + Qbar (ETC)  ',  'g + g -> Q + Qbar (ETC)     ',
02115      8'                            ',  '                            ',
02116      9'f + fbar -> G*              ',  'g + g -> G*                 ',
02117      9'q + qbar -> g + G*          ',  'q + g -> q + G*             ',
02118      9'g + g -> g + G*             ',  '                            ',
02119      9 4*'                         ',
02120      &'g + g -> t + b + H+/-       ',  'q + qbar -> t + b + H+/-    ',
02121      & 18*'                            '/
02122       DATA (PROC(I),I=421,460)/
02123      2'g + g  -> cc~[3S1(1)] + g   ',  'g + g  -> cc~[3S1(8)] + g   ',
02124      2'g + g  -> cc~[1S0(8)] + g   ',  'g + g  -> cc~[3PJ(8)] + g   ',
02125      2'g + q  -> q + cc~[3S1(8)]   ',  'g + q  -> q + cc~[1S0(8)]   ',
02126      2'g + q  -> q + cc~[3PJ(8)]   ',  'q + q~ -> g + cc~[3S1(8)]   ',
02127      2'q + q~ -> g + cc~[1S0(8)]   ',  'q + q~ -> g + cc~[3PJ(8)]   ',
02128      3'g + g  -> cc~[3P0(1)] + g   ',  'g + g  -> cc~[3P1(1)] + g   ',
02129      3'g + g  -> cc~[3P2(1)] + g   ',  'q + g  -> q + cc~[3P0(1)]   ',
02130      3'q + g  -> q + cc~[3P1(1)]   ',  'q + g  -> q + cc~[3P2(1)]   ',
02131      3'q + q~ -> g + cc~[3P0(1)]   ',  'q + q~ -> g + cc~[3P1(1)]   ',
02132      3'q + q~ -> g + cc~[3P2(1)]   ',
02133      3     21 *'                            '/
02134       DATA (PROC(I),I=461,500)/
02135      6'g + g  -> bb~[3S1(1)] + g   ',  'g + g  -> bb~[3S1(8)] + g   ',
02136      6'g + g  -> bb~[1S0(8)] + g   ',  'g + g  -> bb~[3PJ(8)] + g   ',
02137      6'g + q  -> q + bb~[3S1(8)]   ',  'g + q  -> q + bb~[1S0(8)]   ',
02138      6'g + q  -> q + bb~[3PJ(8)]   ',  'q + q~ -> g + bb~[3S1(8)]   ',
02139      6'q + q~ -> g + bb~[1S0(8)]   ',  'q + q~ -> g + bb~[3PJ(8)]   ',
02140      7'g + g  -> bb~[3P0(1)] + g   ',  'g + g  -> bb~[3P1(1)] + g   ',
02141      7'g + g  -> bb~[3P2(1)] + g   ',  'q + g  -> q + bb~[3P0(1)]   ',
02142      7'q + g  -> q + bb~[3P1(1)]   ',  'q + g  -> q + bb~[3P2(1)]   ',
02143      7'q + q~ -> g + bb~[3P0(1)]   ',  'q + q~ -> g + bb~[3P1(1)]   ',
02144      7'q + q~ -> g + bb~[3P2(1)]   ',
02145      7     21 *'                            '/
02146  
02147 C...Cross sections and slope offsets.
02148       DATA SIGT/294*0D0/
02149  
02150 C...Supersymmetry switches and parameters.
02151       DATA IMSS/0,
02152      &  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,
02153      1  89*0/
02154       DATA RMSS/0D0,
02155      &  80D0,160D0,500D0,800D0,2D0,250D0,200D0,800D0,700D0,800D0,
02156      1  700D0,500D0,250D0,200D0,800D0,400D0,0D0,0.1D0,850D0,0.041D0,
02157      2   1D0,800D0,1D4,1D4,1D4,0D0,0D0,0D0,24D17,0D0,
02158      3  10*0D0,  
02159      4  0D0,1D0,8*0D0,  
02160      5  49*0D0/
02161 C...Initial values for R-violating SUSY couplings.
02162 C...Should not be changed here. See PYMSIN.
02163       DATA RVLAM/27*0D0/
02164       DATA RVLAMP/27*0D0/
02165       DATA RVLAMB/27*0D0/
02166  
02167 C...Technicolor switches and parameters
02168       DATA ITCM/0,
02169      &  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,
02170      1  89*0/
02171       DATA RTCM/0D0,
02172      &  82D0,1.333D0,.333D0,0.408D0,1D0,1D0,.0182D0,1D0,0D0,1.333D0,
02173      1  .05D0,200D0,200D0,0D0,0D0,0D0,0D0,0D0,0D0,0D0,
02174      2  .283D0,.707D0,0D0,0D0,0D0,1.667D0,250D0,250D0,.707D0,0D0,
02175      3  .707D0,0D0,1D0,0D0,0D0,0D0,0D0,0D0,0D0,0D0,
02176      4  1000D0, 1D0, 1D0, 1D0, 1D0, 0D0, 1D0, 3*200D0,
02177      4  200D0, 48*0D0/
02178  
02179 C...UED switches and parameters.
02180 C... IUED(0) empty IUED vector element
02181 C... IUED(1) UED ON(=1)/OFF(=0) switch
02182 C... IUED(2) ON(=1)/OFF(=0) switch for gravity mediated decays
02183 C... IUED(3) NFLAVOURS Number of KK excitation quark flavours
02184 C... IUED(4) N the number of large extra dimensions
02185 C... IUED(5) Selects whether the code takes Lambda (=0)
02186 C...         or Lambda*R (=1) as input.
02187 C... IUED(6) With radiative corrections to the masses (=1)
02188 C...         or without (=0)
02189 C...
02190 C... RUED(0) empty RUED vector element
02191 C... RUED(1) RINV (1/R) the curvature of the extra dimension
02192 C... RUED(2) XMD the (4+N)-dimensional Planck scale
02193 C... RUED(3) LAMUED (Lambda cutoff scale)
02194 C... RUED(4) LAMUED/RINV (feasible values are order of 10-20)
02195 C...
02196       DATA IUED/0,0,0,5,6,0,1,93*0/
02197       DATA RUED/0.D0,1000D0,5000D0,20000.,20.,95*0D0/
02198 
02199 C...Data for histogramming routines.
02200       DATA IHIST/1000,20000,55,1/
02201       DATA INDX/1000*0/
02202 
02203 C...Data for SUSY Les Houches Accord.
02204       DATA CPRO/'PYTHIA      ','PYTHIA      '/
02205       DATA CVER/'6.4         ','6.4         '/
02206       DATA MODSEL/200*0/
02207       DATA PARMIN/100*0D0/
02208       DATA RMSOFT/101*0D0/
02209       DATA AU/9*0D0/
02210       DATA AD/9*0D0/
02211       DATA AE/9*0D0/
02212  
02213       END
02214  
02215 C*********************************************************************
02216  
02217 C...PYCKBD
02218 C...Check that BLOCK DATA PYDATA has been loaded.
02219 C...Should not be required, except that some compilers/linkers
02220 C...are pretty buggy in this respect.
02221  
02222       SUBROUTINE PYCKBD
02223  
02224 C...Double precision and integer declarations.
02225       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
02226       IMPLICIT INTEGER(I-N)
02227       INTEGER PYK,PYCHGE,PYCOMP
02228 C...Commonblocks.
02229       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
02230       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
02231       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
02232       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
02233       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
02234       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
02235       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/
02236  
02237 C...Check a few variables to see they have been sensibly initialized.
02238       IF(MSTU(4).LT.10.OR.MSTU(4).GT.900000.OR.PMAS(2,1).LT.0.001D0
02239      &.OR.PMAS(2,1).GT.1D0.OR.CKIN(5).LT.0.01D0.OR.MSTP(1).LT.1.OR.
02240      &MSTP(1).GT.5) THEN
02241 C...If not, abort the run right away.
02242         WRITE(*,*) 'Fatal error: BLOCK DATA PYDATA has not been loaded!'
02243         WRITE(*,*) 'The program execution is stopped now!'
02244         CALL PYSTOP(8)
02245       ENDIF
02246  
02247       RETURN
02248       END
02249  
02250 C*********************************************************************
02251  
02252 C...PYTEST
02253 C...A simple program (disguised as subroutine) to run at installation
02254 C...as a check that the program works as intended.
02255  
02256       SUBROUTINE PYTEST(MTEST)
02257  
02258 C...Double precision and integer declarations.
02259       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
02260       IMPLICIT INTEGER(I-N)
02261       INTEGER PYK,PYCHGE,PYCOMP
02262 C...Commonblocks.
02263       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
02264       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
02265       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
02266       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
02267       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
02268       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
02269       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/
02270 C...Local arrays.
02271       DIMENSION PSUM(5),PINI(6),PFIN(6)
02272  
02273 C...Save defaults for values that are changed.
02274       MSTJ1=MSTJ(1)
02275       MSTJ3=MSTJ(3)
02276       MSTJ11=MSTJ(11)
02277       MSTJ42=MSTJ(42)
02278       MSTJ43=MSTJ(43)
02279       MSTJ44=MSTJ(44)
02280       PARJ17=PARJ(17)
02281       PARJ22=PARJ(22)
02282       PARJ43=PARJ(43)
02283       PARJ54=PARJ(54)
02284       MST101=MSTJ(101)
02285       MST104=MSTJ(104)
02286       MST105=MSTJ(105)
02287       MST107=MSTJ(107)
02288       MST116=MSTJ(116)
02289  
02290 C...First part: loop over simple events to be generated.
02291       IF(MTEST.GE.1) CALL PYTABU(20)
02292       NERR=0
02293       DO 180 IEV=1,500
02294  
02295 C...Reset parameter values. Switch on some nonstandard features.
02296         MSTJ(1)=1
02297         MSTJ(3)=0
02298         MSTJ(11)=1
02299         MSTJ(42)=2
02300         MSTJ(43)=4
02301         MSTJ(44)=2
02302         PARJ(17)=0.1D0
02303         PARJ(22)=1.5D0
02304         PARJ(43)=1D0
02305         PARJ(54)=-0.05D0
02306         MSTJ(101)=5
02307         MSTJ(104)=5
02308         MSTJ(105)=0
02309         MSTJ(107)=1
02310         IF(IEV.EQ.301.OR.IEV.EQ.351.OR.IEV.EQ.401) MSTJ(116)=3
02311  
02312 C...Ten events each for some single jets configurations.
02313         IF(IEV.LE.50) THEN
02314           ITY=(IEV+9)/10
02315           MSTJ(3)=-1
02316           IF(ITY.EQ.3.OR.ITY.EQ.4) MSTJ(11)=2
02317           IF(ITY.EQ.1) CALL PY1ENT(1,1,15D0,0D0,0D0)
02318           IF(ITY.EQ.2) CALL PY1ENT(1,3101,15D0,0D0,0D0)
02319           IF(ITY.EQ.3) CALL PY1ENT(1,-2203,15D0,0D0,0D0)
02320           IF(ITY.EQ.4) CALL PY1ENT(1,-4,30D0,0D0,0D0)
02321           IF(ITY.EQ.5) CALL PY1ENT(1,21,15D0,0D0,0D0)
02322  
02323 C...Ten events each for some simple jet systems; string fragmentation.
02324         ELSEIF(IEV.LE.130) THEN
02325           ITY=(IEV-41)/10
02326           IF(ITY.EQ.1) CALL PY2ENT(1,1,-1,40D0)
02327           IF(ITY.EQ.2) CALL PY2ENT(1,4,-4,30D0)
02328           IF(ITY.EQ.3) CALL PY2ENT(1,2,2103,100D0)
02329           IF(ITY.EQ.4) CALL PY2ENT(1,21,21,40D0)
02330           IF(ITY.EQ.5) CALL PY3ENT(1,2101,21,-3203,30D0,0.6D0,0.8D0)
02331           IF(ITY.EQ.6) CALL PY3ENT(1,5,21,-5,40D0,0.9D0,0.8D0)
02332           IF(ITY.EQ.7) CALL PY3ENT(1,21,21,21,60D0,0.7D0,0.5D0)
02333           IF(ITY.EQ.8) CALL PY4ENT(1,2,21,21,-2,40D0,
02334      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
02335  
02336 C...Seventy events with independent fragmentation and momentum cons.
02337         ELSEIF(IEV.LE.200) THEN
02338           ITY=1+(IEV-131)/16
02339           MSTJ(2)=1+MOD(IEV-131,4)
02340           MSTJ(3)=1+MOD((IEV-131)/4,4)
02341           IF(ITY.EQ.1) CALL PY2ENT(1,4,-5,40D0)
02342           IF(ITY.EQ.2) CALL PY3ENT(1,3,21,-3,40D0,0.9D0,0.4D0)
02343           IF(ITY.EQ.3) CALL PY4ENT(1,2,21,21,-2,40D0,
02344      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
02345           IF(ITY.GE.4) CALL PY4ENT(1,2,-3,3,-2,40D0,
02346      &    0.4D0,0.64D0,0.6D0,0.12D0,0.2D0)
02347  
02348 C...A hundred events with random jets (check invariant mass).
02349         ELSEIF(IEV.LE.300) THEN
02350   100     DO 110 J=1,5
02351             PSUM(J)=0D0
02352   110     CONTINUE
02353           NJET=2D0+6D0*PYR(0)
02354           DO 130 I=1,NJET
02355             KFL=21
02356             IF(I.EQ.1) KFL=INT(1D0+4D0*PYR(0))
02357             IF(I.EQ.NJET) KFL=-INT(1D0+4D0*PYR(0))
02358             EJET=5D0+20D0*PYR(0)
02359             THETA=ACOS(2D0*PYR(0)-1D0)
02360             PHI=6.2832D0*PYR(0)
02361             IF(I.LT.NJET) CALL PY1ENT(-I,KFL,EJET,THETA,PHI)
02362             IF(I.EQ.NJET) CALL PY1ENT(I,KFL,EJET,THETA,PHI)
02363             IF(I.EQ.1.OR.I.EQ.NJET) MSTJ(93)=1
02364             IF(I.EQ.1.OR.I.EQ.NJET) PSUM(5)=PSUM(5)+PYMASS(KFL)
02365             DO 120 J=1,4
02366               PSUM(J)=PSUM(J)+P(I,J)
02367   120       CONTINUE
02368   130     CONTINUE
02369           IF(PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2.LT.
02370      &    (PSUM(5)+PARJ(32))**2) GOTO 100
02371  
02372 C...Fifty e+e- continuum events with matrix elements.
02373         ELSEIF(IEV.LE.350) THEN
02374           MSTJ(101)=2
02375           CALL PYEEVT(0,40D0)
02376  
02377 C...Fifty e+e- continuum event with varying shower options.
02378         ELSEIF(IEV.LE.400) THEN
02379           MSTJ(42)=1+MOD(IEV,2)
02380           MSTJ(43)=1+MOD(IEV/2,4)
02381           MSTJ(44)=MOD(IEV/8,3)
02382           CALL PYEEVT(0,90D0)
02383  
02384 C...Fifty e+e- continuum events with coherent shower.
02385         ELSEIF(IEV.LE.450) THEN
02386           CALL PYEEVT(0,500D0)
02387  
02388 C...Fifty Upsilon decays to ggg or gammagg with coherent shower.
02389         ELSE
02390           CALL PYONIA(5,9.46D0)
02391         ENDIF
02392  
02393 C...Generate event. Find total momentum, energy and charge.
02394         DO 140 J=1,4
02395           PINI(J)=PYP(0,J)
02396   140   CONTINUE
02397         PINI(6)=PYP(0,6)
02398         CALL PYEXEC
02399         DO 150 J=1,4
02400           PFIN(J)=PYP(0,J)
02401   150   CONTINUE
02402         PFIN(6)=PYP(0,6)
02403  
02404 C...Check conservation of energy, momentum and charge;
02405 C...usually exact, but only approximate for single jets.
02406         MERR=0
02407         IF(IEV.LE.50) THEN
02408           IF((PFIN(1)-PINI(1))**2+(PFIN(2)-PINI(2))**2.GE.10D0)
02409      &    MERR=MERR+1
02410           EPZREM=PINI(4)+PINI(3)-PFIN(4)-PFIN(3)
02411           IF(EPZREM.LT.0D0.OR.EPZREM.GT.2D0*PARJ(31)) MERR=MERR+1
02412           IF(ABS(PFIN(6)-PINI(6)).GT.2.1D0) MERR=MERR+1
02413         ELSE
02414           DO 160 J=1,4
02415             IF(ABS(PFIN(J)-PINI(J)).GT.0.0001D0*PINI(4)) MERR=MERR+1
02416   160     CONTINUE
02417           IF(ABS(PFIN(6)-PINI(6)).GT.0.1D0) MERR=MERR+1
02418         ENDIF
02419         IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6),
02420      &  (PFIN(J),J=1,4),PFIN(6)
02421  
02422 C...Check that all KF codes are known ones, and that partons/particles
02423 C...satisfy energy-momentum-mass relation. Store particle statistics.
02424         DO 170 I=1,N
02425           IF(K(I,1).GT.20) GOTO 170
02426           IF(PYCOMP(K(I,2)).EQ.0) THEN
02427             WRITE(MSTU(11),5100) I
02428             MERR=MERR+1
02429           ENDIF
02430           PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
02431           IF(ABS(PD).GT.MAX(0.1D0,0.001D0*P(I,4)**2).OR.P(I,4).LT.0D0)
02432      &    THEN
02433             WRITE(MSTU(11),5200) I
02434             MERR=MERR+1
02435           ENDIF
02436   170   CONTINUE
02437         IF(MTEST.GE.1) CALL PYTABU(21)
02438  
02439 C...List all erroneous events and some normal ones.
02440         IF(MERR.NE.0.OR.MSTU(24).NE.0.OR.MSTU(28).NE.0) THEN
02441           IF(MERR.GE.1) WRITE(MSTU(11),6400)
02442           CALL PYLIST(2)
02443         ELSEIF(MTEST.GE.1.AND.MOD(IEV-5,100).EQ.0) THEN
02444           CALL PYLIST(1)
02445         ENDIF
02446  
02447 C...Stop execution if too many errors.
02448         IF(MERR.NE.0) NERR=NERR+1
02449         IF(NERR.GE.10) THEN
02450           WRITE(MSTU(11),6300)
02451           CALL PYLIST(1)
02452           CALL PYSTOP(9)
02453         ENDIF
02454   180 CONTINUE
02455  
02456 C...Summarize result of run.
02457       IF(MTEST.GE.1) CALL PYTABU(22)
02458  
02459 C...Reset commonblock variables changed during run.
02460       MSTJ(1)=MSTJ1
02461       MSTJ(3)=MSTJ3
02462       MSTJ(11)=MSTJ11
02463       MSTJ(42)=MSTJ42
02464       MSTJ(43)=MSTJ43
02465       MSTJ(44)=MSTJ44
02466       PARJ(17)=PARJ17
02467       PARJ(22)=PARJ22
02468       PARJ(43)=PARJ43
02469       PARJ(54)=PARJ54
02470       MSTJ(101)=MST101
02471       MSTJ(104)=MST104
02472       MSTJ(105)=MST105
02473       MSTJ(107)=MST107
02474       MSTJ(116)=MST116
02475  
02476 C...Second part: complete events of various kinds.
02477 C...Common initial values. Loop over initiating conditions.
02478       MSTP(122)=MAX(0,MIN(2,MTEST))
02479       MDCY(PYCOMP(111),1)=0
02480       DO 230 IPROC=1,8
02481  
02482 C...Reset process type, kinematics cuts, and the flags used.
02483         MSEL=0
02484         DO 190 ISUB=1,500
02485           MSUB(ISUB)=0
02486   190   CONTINUE
02487         CKIN(1)=2D0
02488         CKIN(3)=0D0
02489         MSTP(2)=1
02490         MSTP(11)=0
02491         MSTP(33)=0
02492         MSTP(81)=1
02493         MSTP(82)=1
02494         MSTP(111)=1
02495         MSTP(131)=0
02496         MSTP(133)=0
02497         PARP(131)=0.01D0
02498  
02499 C...Prompt photon production at fixed target.
02500         IF(IPROC.EQ.1) THEN
02501           PZSUM=300D0
02502           PESUM=SQRT(PZSUM**2+PYMASS(211)**2)+PYMASS(2212)
02503           PQSUM=2D0
02504           MSEL=10
02505           CKIN(3)=5D0
02506           CALL PYINIT('FIXT','pi+','p',PZSUM)
02507  
02508 C...QCD processes at ISR energies.
02509         ELSEIF(IPROC.EQ.2) THEN
02510           PESUM=63D0
02511           PZSUM=0D0
02512           PQSUM=2D0
02513           MSEL=1
02514           CKIN(3)=5D0
02515           CALL PYINIT('CMS','p','p',PESUM)
02516  
02517 C...W production + multiple interactions at CERN Collider.
02518         ELSEIF(IPROC.EQ.3) THEN
02519           PESUM=630D0
02520           PZSUM=0D0
02521           PQSUM=0D0
02522           MSEL=12
02523           CKIN(1)=20D0
02524           MSTP(82)=4
02525           MSTP(2)=2
02526           MSTP(33)=3
02527           CALL PYINIT('CMS','p','pbar',PESUM)
02528  
02529 C...W/Z gauge boson pairs + pileup events at the Tevatron.
02530         ELSEIF(IPROC.EQ.4) THEN
02531           PESUM=1800D0
02532           PZSUM=0D0
02533           PQSUM=0D0
02534           MSUB(22)=1
02535           MSUB(23)=1
02536           MSUB(25)=1
02537           CKIN(1)=200D0
02538           MSTP(111)=0
02539           MSTP(131)=1
02540           MSTP(133)=2
02541           PARP(131)=0.04D0
02542           CALL PYINIT('CMS','p','pbar',PESUM)
02543  
02544 C...Higgs production at LHC.
02545         ELSEIF(IPROC.EQ.5) THEN
02546           PESUM=15400D0
02547           PZSUM=0D0
02548           PQSUM=2D0
02549           MSUB(3)=1
02550           MSUB(102)=1
02551           MSUB(123)=1
02552           MSUB(124)=1
02553           PMAS(25,1)=300D0
02554           CKIN(1)=200D0
02555           MSTP(81)=0
02556           MSTP(111)=0
02557           CALL PYINIT('CMS','p','p',PESUM)
02558  
02559 C...Z' production at SSC.
02560         ELSEIF(IPROC.EQ.6) THEN
02561           PESUM=40000D0
02562           PZSUM=0D0
02563           PQSUM=2D0
02564           MSEL=21
02565           PMAS(32,1)=600D0
02566           CKIN(1)=400D0
02567           MSTP(81)=0
02568           MSTP(111)=0
02569           CALL PYINIT('CMS','p','p',PESUM)
02570  
02571 C...W pair production at 1 TeV e+e- collider.
02572         ELSEIF(IPROC.EQ.7) THEN
02573           PESUM=1000D0
02574           PZSUM=0D0
02575           PQSUM=0D0
02576           MSUB(25)=1
02577           MSUB(69)=1
02578           MSTP(11)=1
02579           CALL PYINIT('CMS','e+','e-',PESUM)
02580  
02581 C...Deep inelastic scattering at a LEP+LHC ep collider.
02582         ELSEIF(IPROC.EQ.8) THEN
02583           P(1,1)=0D0
02584           P(1,2)=0D0
02585           P(1,3)=8000D0
02586           P(2,1)=0D0
02587           P(2,2)=0D0
02588           P(2,3)=-80D0
02589           PESUM=8080D0
02590           PZSUM=7920D0
02591           PQSUM=0D0
02592           MSUB(10)=1
02593           CKIN(3)=50D0
02594           MSTP(111)=0
02595           CALL PYINIT('3MOM','p','e-',PESUM)
02596         ENDIF
02597  
02598 C...Generate 20 events of each required type.
02599         DO 220 IEV=1,20
02600           CALL PYEVNT
02601           PESUMM=PESUM
02602           IF(IPROC.EQ.4) PESUMM=MSTI(41)*PESUM
02603  
02604 C...Check conservation of energy/momentum/flavour.
02605           PINI(1)=0D0
02606           PINI(2)=0D0
02607           PINI(3)=PZSUM
02608           PINI(4)=PESUMM
02609           PINI(6)=PQSUM
02610           DO 200 J=1,4
02611             PFIN(J)=PYP(0,J)
02612   200     CONTINUE
02613           PFIN(6)=PYP(0,6)
02614           MERR=0
02615           DEVE=ABS(PFIN(4)-PINI(4))+ABS(PFIN(3)-PINI(3))
02616           DEVT=ABS(PFIN(1)-PINI(1))+ABS(PFIN(2)-PINI(2))
02617           DEVQ=ABS(PFIN(6)-PINI(6))
02618           IF(DEVE.GT.2D-3*PESUM.OR.DEVT.GT.MAX(0.01D0,1D-4*PESUM).OR.
02619      &    DEVQ.GT.0.1D0) MERR=1
02620           IF(MERR.NE.0) WRITE(MSTU(11),5000) (PINI(J),J=1,4),PINI(6),
02621      &    (PFIN(J),J=1,4),PFIN(6)
02622  
02623 C...Check that all KF codes are known ones, and that partons/particles
02624 C...satisfy energy-momentum-mass relation.
02625           DO 210 I=1,N
02626             IF(K(I,1).GT.20) GOTO 210
02627             IF(PYCOMP(K(I,2)).EQ.0) THEN
02628               WRITE(MSTU(11),5100) I
02629               MERR=MERR+1
02630             ENDIF
02631             PD=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2*
02632      &      SIGN(1D0,P(I,5))
02633             IF(ABS(PD).GT.MAX(0.1D0,0.002D0*P(I,4)**2,0.002D0*P(I,5)**2)
02634      &      .OR.(P(I,5).GE.0D0.AND.P(I,4).LT.0D0)) THEN
02635               WRITE(MSTU(11),5200) I
02636               MERR=MERR+1
02637             ENDIF
02638   210     CONTINUE
02639  
02640 C...Listing of erroneous events, and first event of each type.
02641           IF(MERR.GE.1) NERR=NERR+1
02642           IF(NERR.GE.10) THEN
02643             WRITE(MSTU(11),6300)
02644             CALL PYLIST(1)
02645             CALL PYSTOP(9)
02646           ENDIF
02647           IF(MTEST.GE.1.AND.(MERR.GE.1.OR.IEV.EQ.1)) THEN
02648             IF(MERR.GE.1) WRITE(MSTU(11),6400)
02649             CALL PYLIST(1)
02650           ENDIF
02651   220   CONTINUE
02652  
02653 C...List statistics for each process type.
02654         IF(MTEST.GE.1) CALL PYSTAT(1)
02655   230 CONTINUE
02656  
02657 C...Summarize result of run.
02658       IF(NERR.EQ.0) WRITE(MSTU(11),6500)
02659       IF(NERR.GT.0) WRITE(MSTU(11),6600) NERR
02660  
02661 C...Format statements for output.
02662  5000 FORMAT(/' Momentum, energy and/or charge were not conserved ',
02663      &'in following event'/' sum of',9X,'px',11X,'py',11X,'pz',11X,
02664      &'E',8X,'charge'/' before',2X,4(1X,F12.5),1X,F8.2/' after',3X,
02665      &4(1X,F12.5),1X,F8.2)
02666  5100 FORMAT(/5X,'Entry no.',I4,' in following event not known code')
02667  5200 FORMAT(/5X,'Entry no.',I4,' in following event has faulty ',
02668      &'kinematics')
02669  6300 FORMAT(/5X,'This is the tenth error experienced! Something is ',
02670      &'wrong.'/5X,'Execution will be stopped after listing of event.')
02671  6400 FORMAT(5X,'Faulty event follows:')
02672  6500 FORMAT(//5X,'End result of PYTEST: no errors detected.')
02673  6600 FORMAT(//5X,'End result of PYTEST:',I2,' errors detected.'/
02674      &5X,'This should not have happened!')
02675  
02676       RETURN
02677       END
02678  
02679 C*********************************************************************
02680  
02681 C...PYHEPC
02682 C...Converts PYTHIA event record contents to or from
02683 C...the standard event record commonblock.
02684  
02685       SUBROUTINE PYHEPC(MCONV)
02686  
02687 C...Double precision and integer declarations.
02688       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
02689       IMPLICIT INTEGER(I-N)
02690       INTEGER PYK,PYCHGE,PYCOMP
02691 C...Commonblocks.
02692       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
02693       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
02694       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
02695       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
02696 C...HEPEVT commonblock.
02697       PARAMETER (NMXHEP=4000)
02698       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
02699      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
02700       DOUBLE PRECISION PHEP,VHEP
02701       SAVE /HEPEVT/
02702 
02703 C...Store HEPEVT commonblock size (for interfacing issues).
02704       MSTU(8)=NMXHEP
02705  
02706 C...Conversion from PYTHIA to standard, the easy part.
02707       IF(MCONV.EQ.1) THEN
02708         NEVHEP=0
02709         IF(N.GT.NMXHEP) CALL PYERRM(8,
02710      &  '(PYHEPC:) no more space in /HEPEVT/')
02711         NHEP=MIN(N,NMXHEP)
02712         DO 150 I=1,NHEP
02713           ISTHEP(I)=0
02714           IF(K(I,1).GE.1.AND.K(I,1).LE.10) ISTHEP(I)=1
02715           IF(K(I,1).GE.11.AND.K(I,1).LE.20) ISTHEP(I)=2
02716           IF(K(I,1).GE.21.AND.K(I,1).LE.30) ISTHEP(I)=3
02717           IF(K(I,1).GE.31.AND.K(I,1).LE.100) ISTHEP(I)=K(I,1)
02718           IDHEP(I)=K(I,2)
02719           JMOHEP(1,I)=K(I,3)
02720           JMOHEP(2,I)=0
02721           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) THEN
02722             JDAHEP(1,I)=K(I,4)
02723             JDAHEP(2,I)=K(I,5)
02724           ELSE
02725             JDAHEP(1,I)=0
02726             JDAHEP(2,I)=0
02727           ENDIF
02728           DO 100 J=1,5
02729             PHEP(J,I)=P(I,J)
02730   100     CONTINUE
02731           DO 110 J=1,4
02732             VHEP(J,I)=V(I,J)
02733   110     CONTINUE
02734  
02735 C...Check if new event (from pileup).
02736           IF(I.EQ.1) THEN
02737             INEW=1
02738           ELSE
02739             IF(K(I,1).EQ.21.AND.K(I-1,1).NE.21) INEW=I
02740           ENDIF
02741  
02742 C...Fill in missing mother information.
02743           IF(I.GE.INEW+2.AND.K(I,1).EQ.21.AND.K(I,3).EQ.0) THEN
02744             IMO1=I-2
02745   120       IF(IMO1.GT.INEW.AND.K(IMO1+1,1).EQ.21.AND.K(IMO1+1,3).EQ.0)
02746      &      THEN
02747               IMO1=IMO1-1
02748               GOTO 120
02749             ENDIF
02750             JMOHEP(1,I)=IMO1
02751             JMOHEP(2,I)=IMO1+1
02752           ELSEIF(K(I,2).GE.91.AND.K(I,2).LE.93) THEN
02753             I1=K(I,3)-1
02754   130       I1=I1+1
02755             IF(I1.GE.I) CALL PYERRM(8,
02756      &      '(PYHEPC:) translation of inconsistent event history')
02757             IF(I1.LT.I.AND.K(I1,1).NE.1.AND.K(I1,1).NE.11) GOTO 130
02758             KC=PYCOMP(K(I1,2))
02759             IF(I1.LT.I.AND.KC.EQ.0) GOTO 130
02760             IF(I1.LT.I.AND.KCHG(KC,2).EQ.0) GOTO 130
02761             JMOHEP(2,I)=I1
02762           ELSEIF(K(I,2).EQ.94) THEN
02763             NJET=2
02764             IF(NHEP.GE.I+3.AND.K(I+3,3).LE.I) NJET=3
02765             IF(NHEP.GE.I+4.AND.K(I+4,3).LE.I) NJET=4
02766             JMOHEP(2,I)=MOD(K(I+NJET,4)/MSTU(5),MSTU(5))
02767             IF(JMOHEP(2,I).EQ.JMOHEP(1,I)) JMOHEP(2,I)=
02768      &      MOD(K(I+1,4)/MSTU(5),MSTU(5))
02769           ENDIF
02770  
02771 C...Fill in missing daughter information.
02772           IF(K(I,2).EQ.94.AND.MSTU(16).NE.2) THEN
02773             DO 140 I1=JDAHEP(1,I),JDAHEP(2,I)
02774               I2=MOD(K(I1,4)/MSTU(5),MSTU(5))
02775               JDAHEP(1,I2)=I
02776   140       CONTINUE
02777           ENDIF
02778           IF(K(I,2).GE.91.AND.K(I,2).LE.94) GOTO 150
02779           I1=JMOHEP(1,I)
02780           IF(I1.LE.0.OR.I1.GT.NHEP) GOTO 150
02781           IF(K(I1,1).NE.13.AND.K(I1,1).NE.14) GOTO 150
02782           IF(JDAHEP(1,I1).EQ.0) THEN
02783             JDAHEP(1,I1)=I
02784           ELSE
02785             JDAHEP(2,I1)=I
02786           ENDIF
02787   150   CONTINUE
02788         DO 160 I=1,NHEP
02789           IF(K(I,1).NE.13.AND.K(I,1).NE.14) GOTO 160
02790           IF(JDAHEP(2,I).EQ.0) JDAHEP(2,I)=JDAHEP(1,I)
02791   160   CONTINUE
02792  
02793 C...Conversion from standard to PYTHIA, the easy part.
02794       ELSE
02795         IF(NHEP.GT.MSTU(4)) CALL PYERRM(8,
02796      &  '(PYHEPC:) no more space in /PYJETS/')
02797         N=MIN(NHEP,MSTU(4))
02798         NKQ=0
02799         KQSUM=0
02800         DO 190 I=1,N
02801           K(I,1)=0
02802           IF(ISTHEP(I).EQ.1) K(I,1)=1
02803           IF(ISTHEP(I).EQ.2) K(I,1)=11
02804           IF(ISTHEP(I).EQ.3) K(I,1)=21
02805           K(I,2)=IDHEP(I)
02806           K(I,3)=JMOHEP(1,I)
02807           K(I,4)=JDAHEP(1,I)
02808           K(I,5)=JDAHEP(2,I)
02809           DO 170 J=1,5
02810             P(I,J)=PHEP(J,I)
02811   170     CONTINUE
02812           DO 180 J=1,4
02813             V(I,J)=VHEP(J,I)
02814   180     CONTINUE
02815           V(I,5)=0D0
02816           IF(ISTHEP(I).EQ.2.AND.PHEP(4,I).GT.PHEP(5,I)) THEN
02817             I1=JDAHEP(1,I)
02818             IF(I1.GT.0.AND.I1.LE.NHEP) V(I,5)=(VHEP(4,I1)-VHEP(4,I))*
02819      &      PHEP(5,I)/PHEP(4,I)
02820           ENDIF
02821  
02822 C...Fill in missing information on colour connection in jet systems.
02823           IF(ISTHEP(I).EQ.1) THEN
02824             KC=PYCOMP(K(I,2))
02825             KQ=0
02826             IF(KC.NE.0) KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
02827             IF(KQ.NE.0) NKQ=NKQ+1
02828             IF(KQ.NE.2) KQSUM=KQSUM+KQ
02829             IF(KQ.NE.0.AND.KQSUM.NE.0) THEN
02830               K(I,1)=2
02831             ELSEIF(KQ.EQ.2.AND.I.LT.N) THEN
02832               IF(K(I+1,2).EQ.21) K(I,1)=2
02833             ENDIF
02834           ENDIF
02835   190   CONTINUE
02836         IF(NKQ.EQ.1.OR.KQSUM.NE.0) CALL PYERRM(8,
02837      &  '(PYHEPC:) input parton configuration not colour singlet')
02838       ENDIF
02839  
02840       END
02841  
02842 C*********************************************************************
02843  
02844 C...PYINIT
02845 C...Initializes the generation procedure; finds maxima of the
02846 C...differential cross-sections to be used for weighting.
02847  
02848       SUBROUTINE PYINIT(FRAME,BEAM,TARGET,WIN)
02849  
02850 C...Double precision and integer declarations.
02851       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
02852       IMPLICIT INTEGER(I-N)
02853       INTEGER PYK,PYCHGE,PYCOMP
02854 C...Commonblocks.
02855       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
02856       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
02857       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
02858       COMMON/PYDAT4/CHAF(500,2)
02859       CHARACTER CHAF*16
02860       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
02861       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
02862       COMMON/PYINT1/MINT(400),VINT(400)
02863       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
02864       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
02865       COMMON/PYPUED/IUED(0:99),RUED(0:99)
02866       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
02867      &/PYINT1/,/PYINT2/,/PYINT5/,/PYPUED/
02868 C...Local arrays and character variables.
02869       DIMENSION ALAMIN(20),NFIN(20)
02870       CHARACTER*(*) FRAME,BEAM,TARGET
02871       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHLH(2)*6
02872  
02873 C...Interface to PDFLIB.
02874       COMMON/W50511/NPTYPE,NGROUP,NSET,MODE,NFL,LO,TMAS
02875       COMMON/W50512/QCDL4,QCDL5
02876       SAVE /W50511/,/W50512/
02877       DOUBLE PRECISION VALUE(20),TMAS,QCDL4,QCDL5
02878       CHARACTER*20 PARM(20)
02879       DATA VALUE/20*0D0/,PARM/20*' '/
02880  
02881 C...Data:Lambda and n_f values for parton distributions..
02882       DATA ALAMIN/0.177D0,0.239D0,0.247D0,0.2322D0,0.248D0,0.248D0,
02883      &0.192D0,0.326D0,2*0.2D0,0.2D0,0.2D0,0.29D0,0.2D0,0.4D0,5*0.2D0/,
02884      &NFIN/20*4/
02885       DATA CHLH/'lepton','hadron'/
02886  
02887 C...Check that BLOCK DATA PYDATA has been loaded.
02888       CALL PYCKBD
02889  
02890 C...Reset MINT and VINT arrays. Write headers.
02891       MSTI(53)=0
02892       DO 100 J=1,400
02893         MINT(J)=0
02894         VINT(J)=0D0
02895   100 CONTINUE
02896       IF(MSTU(12).NE.12345) CALL PYLIST(0)
02897       IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
02898  
02899 C...Reset error counters.
02900       MSTU(23)=0
02901       MSTU(27)=0
02902       MSTU(30)=0
02903  
02904 C...Reset processes that should not be on.
02905       MSUB(96)=0
02906       MSUB(97)=0
02907  
02908 C...Select global FSR/ISR/UE parameter set = 'tune' 
02909 C...See routine PYTUNE for details
02910       IF (MSTP(5).NE.0) THEN
02911         MSTP5=MSTP(5)
02912         CALL PYTUNE(MSTP5)
02913       ENDIF
02914 
02915 C...Call user process initialization routine.
02916       IF(FRAME(1:1).EQ.'u'.OR.FRAME(1:1).EQ.'U') THEN
02917         MSEL=0
02918         CALL UPINIT
02919         MSEL=0
02920       ENDIF
02921  
02922 C...Maximum 4 generations; set maximum number of allowed flavours.
02923       MSTP(1)=MIN(4,MSTP(1))
02924       MSTU(114)=MIN(MSTU(114),2*MSTP(1))
02925       MSTP(58)=MIN(MSTP(58),2*MSTP(1))
02926  
02927 C...Sum up Cabibbo-Kobayashi-Maskawa factors for each quark/lepton.
02928       DO 120 I=-20,20
02929         VINT(180+I)=0D0
02930         IA=IABS(I)
02931         IF(IA.GE.1.AND.IA.LE.2*MSTP(1)) THEN
02932           DO 110 J=1,MSTP(1)
02933             IB=2*J-1+MOD(IA,2)
02934             IF(IB.GE.6.AND.MSTP(9).EQ.0) GOTO 110
02935             IPM=(5-ISIGN(1,I))/2
02936             IDC=J+MDCY(IA,2)+2
02937             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) VINT(180+I)=
02938      &      VINT(180+I)+VCKM((IA+1)/2,(IB+1)/2)
02939   110     CONTINUE
02940         ELSEIF(IA.GE.11.AND.IA.LE.10+2*MSTP(1)) THEN
02941           VINT(180+I)=1D0
02942         ENDIF
02943   120 CONTINUE
02944  
02945 C...Initialize parton distributions: PDFLIB.
02946       IF(MSTP(52).EQ.2) THEN
02947         PARM(1)='NPTYPE'
02948         VALUE(1)=1
02949         PARM(2)='NGROUP'
02950         VALUE(2)=MSTP(51)/1000
02951         PARM(3)='NSET'
02952         VALUE(3)=MOD(MSTP(51),1000)
02953         PARM(4)='TMAS'
02954         VALUE(4)=PMAS(6,1)
02955         CALL PDFSET(PARM,VALUE)
02956         MINT(93)=1000000+MSTP(51)
02957       ENDIF
02958  
02959 C...Choose Lambda value to use in alpha-strong.
02960       MSTU(111)=MSTP(2)
02961       IF(MSTP(3).GE.2) THEN
02962         ALAM=0.2D0
02963         NF=4
02964         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
02965           ALAM=ALAMIN(MSTP(51))
02966           NF=NFIN(MSTP(51))
02967         ELSEIF(MSTP(52).EQ.2.AND.NFL.EQ.5) THEN
02968           ALAM=QCDL5
02969           NF=5
02970         ELSEIF(MSTP(52).EQ.2) THEN
02971           ALAM=QCDL4
02972           NF=4
02973         ENDIF
02974         PARP(1)=ALAM
02975         PARP(61)=ALAM
02976         PARP(72)=ALAM
02977         PARU(112)=ALAM
02978         MSTU(112)=NF
02979         IF(MSTP(3).EQ.3) PARJ(81)=ALAM
02980       ENDIF
02981  
02982 C...Initialize the UED masses and widths
02983       IF (IUED(1).EQ.1) CALL PYXDIN
02984 
02985 C...Initialize the SUSY generation: couplings, masses,
02986 C...decay modes, branching ratios, and so on.
02987       CALL PYMSIN
02988 C...Initialize widths and partial widths for resonances.
02989       CALL PYINRE
02990 C...Set Z0 mass and width for e+e- routines.
02991       PARJ(123)=PMAS(23,1)
02992       PARJ(124)=PMAS(23,2)
02993  
02994 C...Identify beam and target particles and frame of process.
02995       CHFRAM=FRAME//' '
02996       CHBEAM=BEAM//' '
02997       CHTARG=TARGET//' '
02998       CALL PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
02999       IF(MINT(65).EQ.1) GOTO 170
03000  
03001 C...For gamma-p or gamma-gamma allow many (3 or 6) alternatives.
03002 C...For e-gamma allow 2 alternatives.
03003       MINT(121)=1
03004       IF(MSTP(14).EQ.10.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
03005         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
03006      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=3
03007         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=6
03008         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
03009      &  (IABS(MINT(11)).EQ.11.OR.IABS(MINT(12)).EQ.11)) MINT(121)=2
03010       ELSEIF(MSTP(14).EQ.20.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
03011         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
03012      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=3
03013         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=9
03014       ELSEIF(MSTP(14).EQ.25.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
03015         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
03016      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=2
03017         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=4
03018       ELSEIF(MSTP(14).EQ.30.AND.(MSEL.EQ.1.OR.MSEL.EQ.2)) THEN
03019         IF((MINT(11).EQ.22.OR.MINT(12).EQ.22).AND.
03020      &  (IABS(MINT(11)).GT.100.OR.IABS(MINT(12)).GT.100)) MINT(121)=4
03021         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) MINT(121)=13
03022       ENDIF
03023       MINT(123)=MSTP(14)
03024       IF((MSTP(14).EQ.10.OR.MSTP(14).EQ.20.OR.MSTP(14).EQ.25.OR.
03025      &MSTP(14).EQ.30).AND.MSEL.NE.1.AND.MSEL.NE.2) MINT(123)=0
03026       IF(MSTP(14).GE.11.AND.MSTP(14).LE.19) THEN
03027         IF(MSTP(14).EQ.11) MINT(123)=0
03028         IF(MSTP(14).EQ.12.OR.MSTP(14).EQ.14) MINT(123)=5
03029         IF(MSTP(14).EQ.13.OR.MSTP(14).EQ.17) MINT(123)=6
03030         IF(MSTP(14).EQ.15) MINT(123)=2
03031         IF(MSTP(14).EQ.16.OR.MSTP(14).EQ.18) MINT(123)=7
03032         IF(MSTP(14).EQ.19) MINT(123)=3
03033       ELSEIF(MSTP(14).GE.21.AND.MSTP(14).LE.24) THEN
03034         IF(MSTP(14).EQ.21) MINT(123)=0
03035         IF(MSTP(14).EQ.22.OR.MSTP(14).EQ.23) MINT(123)=4
03036         IF(MSTP(14).EQ.24) MINT(123)=1
03037       ELSEIF(MSTP(14).GE.26.AND.MSTP(14).LE.29) THEN
03038         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28) MINT(123)=8
03039         IF(MSTP(14).EQ.27.OR.MSTP(14).EQ.29) MINT(123)=9
03040       ENDIF
03041  
03042 C...Set up kinematics of process.
03043       CALL PYINKI(0)
03044  
03045 C...Set up kinematics for photons inside leptons.
03046       IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(1,WTGAGA)
03047  
03048 C...Precalculate flavour selection weights.
03049       CALL PYKFIN
03050  
03051 C...Loop over gamma-p or gamma-gamma alternatives.
03052       CKIN3=CKIN(3)
03053       MSAV48=0
03054       DO 160 IGA=1,MINT(121)
03055         CKIN(3)=CKIN3
03056         MINT(122)=IGA
03057  
03058 C...Select partonic subprocesses to be included in the simulation.
03059         CALL PYINPR
03060         MINT(101)=1
03061         MINT(102)=1
03062         MINT(103)=MINT(11)
03063         MINT(104)=MINT(12)
03064  
03065 C...Count number of subprocesses on.
03066         MINT(48)=0
03067         DO 130 ISUB=1,500
03068           IF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
03069      &    MSUB(ISUB).EQ.1.AND.MINT(121).GT.1) THEN
03070             MSUB(ISUB)=0
03071           ELSEIF(MINT(50).EQ.0.AND.ISUB.GE.91.AND.ISUB.LE.96.AND.
03072      &    MSUB(ISUB).EQ.1) THEN
03073             WRITE(MSTU(11),5200) ISUB,CHLH(MINT(41)),CHLH(MINT(42))
03074             CALL PYSTOP(1)
03075           ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).EQ.-1) THEN
03076             WRITE(MSTU(11),5300) ISUB
03077             CALL PYSTOP(1)
03078           ELSEIF(MSUB(ISUB).EQ.1.AND.ISET(ISUB).LE.-2) THEN
03079             WRITE(MSTU(11),5400) ISUB
03080             CALL PYSTOP(1)
03081           ELSEIF(MSUB(ISUB).EQ.1) THEN
03082             MINT(48)=MINT(48)+1
03083           ENDIF
03084   130   CONTINUE
03085  
03086 C...Stop or raise warning flag if no subprocesses on.
03087         IF(MINT(121).EQ.1.AND.MINT(48).EQ.0) THEN
03088           IF(MSTP(127).NE.1) THEN
03089             WRITE(MSTU(11),5500)
03090             CALL PYSTOP(1)
03091           ELSE
03092             WRITE(MSTU(11),5700)
03093             MSTI(53)=1
03094           ENDIF
03095         ENDIF
03096         MINT(49)=MINT(48)-MSUB(91)-MSUB(92)-MSUB(93)-MSUB(94)
03097         MSAV48=MSAV48+MINT(48)
03098  
03099 C...Reset variables for cross-section calculation.
03100         DO 150 I=0,500
03101           DO 140 J=1,3
03102             NGEN(I,J)=0
03103             XSEC(I,J)=0D0
03104   140     CONTINUE
03105   150   CONTINUE
03106  
03107 C...Find parametrized total cross-sections.
03108         CALL PYXTOT
03109         VINT(318)=VINT(317)
03110  
03111 C...Maxima of differential cross-sections.
03112         IF(MSTP(121).LE.1) CALL PYMAXI
03113  
03114 C...Initialize possibility of pileup events.
03115         IF(MINT(121).GT.1) MSTP(131)=0
03116         IF(MSTP(131).NE.0) CALL PYPILE(1)
03117  
03118 C...Initialize multiple interactions with variable impact parameter.
03119         IF(MINT(50).EQ.1) THEN
03120           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
03121           IF(MOD(MSTP(81),10).EQ.0.AND.(CKIN(3).GT.PTMN.OR.
03122      &    ((MSEL.NE.1.AND.MSEL.NE.2)))) MSTP(82)=MIN(1,MSTP(82))
03123           IF((MINT(49).NE.0.OR.MSTP(131).NE.0).AND.MSTP(82).GE.2) THEN
03124             MINT(35)=1
03125             CALL PYMULT(1)
03126             MINT(35)=3
03127             CALL PYMIGN(1)
03128           ENDIF
03129         ENDIF
03130  
03131 C...Save results for gamma-p and gamma-gamma alternatives.
03132         IF(MINT(121).GT.1) CALL PYSAVE(1,IGA)
03133   160 CONTINUE
03134  
03135 C...Initialization finished.
03136       IF(MSAV48.EQ.0) THEN
03137         IF(MSTP(127).NE.1) THEN
03138           WRITE(MSTU(11),5500)
03139           CALL PYSTOP(1)
03140         ELSE
03141           WRITE(MSTU(11),5700)
03142           MSTI(53)=1
03143         ENDIF
03144       ENDIF
03145   170 IF(MSTP(122).GE.1) WRITE(MSTU(11),5600)
03146  
03147 C...Formats for initialization information.
03148  5100 FORMAT('1',18('*'),1X,'PYINIT: initialization of PYTHIA ',
03149      &'routines',1X,17('*'))
03150  5200 FORMAT(1X,'Error: process number ',I3,' not meaningful for ',A6,
03151      &'-',A6,' interactions.'/1X,'Execution stopped!')
03152  5300 FORMAT(1X,'Error: requested subprocess',I4,' not implemented.'/
03153      &1X,'Execution stopped!')
03154  5400 FORMAT(1X,'Error: requested subprocess',I4,' not existing.'/
03155      &1X,'Execution stopped!')
03156  5500 FORMAT(1X,'Error: no subprocess switched on.'/
03157      &1X,'Execution stopped.')
03158  5600 FORMAT(/1X,22('*'),1X,'PYINIT: initialization completed',1X,
03159      &22('*'))
03160  5700 FORMAT(1X,'Error: no subprocess switched on.'/
03161      &1X,'Execution will stop if you try to generate events.')
03162  
03163       RETURN
03164       END
03165  
03166 C*********************************************************************
03167  
03168 C...PYEVNT
03169 C...Administers the generation of a high-pT event via calls to
03170 C...a number of subroutines.
03171  
03172       SUBROUTINE PYEVNT
03173  
03174 C...Double precision and integer declarations.
03175       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
03176       IMPLICIT INTEGER(I-N)
03177       INTEGER PYK,PYCHGE,PYCOMP
03178       PARAMETER (MAXNUR=1000)
03179 C...Commonblocks.
03180       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
03181       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
03182       COMMON/PYCTAG/NCT,MCT(4000,2)
03183       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
03184       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
03185       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
03186       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
03187       COMMON/PYINT1/MINT(400),VINT(400)
03188       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
03189       COMMON/PYINT4/MWID(500),WIDS(500,5)
03190       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
03191       SAVE /PYJETS/,/PYDAT1/,/PYCTAG/,/PYDAT2/,/PYDAT3/,/PYPARS/,
03192      &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/
03193 C...Local array.
03194       DIMENSION VTX(4)
03195  
03196 C...Optionally let PYEVNW do the whole job.
03197       IF(MSTP(81).GE.20) THEN
03198         CALL PYEVNW
03199         RETURN
03200       ENDIF
03201  
03202 C...Stop if no subprocesses on.
03203       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
03204         WRITE(MSTU(11),5100)
03205         CALL PYSTOP(1)
03206       ENDIF
03207  
03208 C...Initial values for some counters.
03209       MSTU(1)=0
03210       MSTU(2)=0
03211       N=0
03212       MINT(5)=MINT(5)+1
03213       MINT(7)=0
03214       MINT(8)=0
03215       MINT(30)=0
03216       MINT(83)=0
03217       MINT(84)=MSTP(126)
03218       MSTU(24)=0
03219       MSTU70=0
03220       MSTJ14=MSTJ(14)
03221 C...Normally, use K(I,4:5) colour info rather than /PYCTAG/.
03222       NCT=0
03223       MINT(33)=0
03224  
03225 C...Let called routines know call is from PYEVNT (not PYEVNW).
03226       MINT(35)=1
03227       IF (MSTP(81).GE.10) MINT(35)=2
03228  
03229 C...If variable energies: redo incoming kinematics and cross-section.
03230       MSTI(61)=0
03231       IF(MSTP(171).EQ.1) THEN
03232         CALL PYINKI(1)
03233         IF(MSTI(61).EQ.1) THEN
03234           MINT(5)=MINT(5)-1
03235           RETURN
03236         ENDIF
03237         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
03238         CALL PYXTOT
03239       ENDIF
03240  
03241 C...Loop over number of pileup events; check space left.
03242       IF(MSTP(131).LE.0) THEN
03243         NPILE=1
03244       ELSE
03245         CALL PYPILE(2)
03246         NPILE=MINT(81)
03247       ENDIF
03248       DO 270 IPILE=1,NPILE
03249         IF(MINT(84)+100.GE.MSTU(4)) THEN
03250           CALL PYERRM(11,
03251      &    '(PYEVNT:) no more space in PYJETS for pileup events')
03252           IF(MSTU(21).GE.1) GOTO 280
03253         ENDIF
03254         MINT(82)=IPILE
03255  
03256 C...Generate variables of hard scattering.
03257         MINT(51)=0
03258         MSTI(52)=0
03259   100   CONTINUE
03260         IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
03261         MINT(31)=0
03262         MINT(39)=0
03263         MINT(51)=0
03264         MINT(57)=0
03265         CALL PYRAND
03266         IF(MSTI(61).EQ.1) THEN
03267           MINT(5)=MINT(5)-1
03268           RETURN
03269         ENDIF
03270         IF(MINT(51).EQ.2) RETURN
03271         ISUB=MINT(1)
03272         IF(MSTP(111).EQ.-1) GOTO 260
03273  
03274 C...Loopback point if PYPREP fails, especially for junction topologies.
03275         NPREP=0
03276         MNT31S=MINT(31)
03277   110   NPREP=NPREP+1
03278         MINT(31)=MNT31S
03279  
03280         IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
03281 C...Hard scattering (including low-pT):
03282 C...reconstruct kinematics and colour flow of hard scattering.
03283           MINT31=MINT(31)
03284   120     MINT(31)=MINT31
03285           MINT(51)=0
03286           CALL PYSCAT
03287           IF(MINT(51).EQ.1) GOTO 100
03288           IPU1=MINT(84)+1
03289           IPU2=MINT(84)+2
03290           IF(ISUB.EQ.95) GOTO 140
03291  
03292 C...Reset statistics on activity in event.
03293         DO 130 J=351,359
03294           MINT(J)=0
03295           VINT(J)=0D0
03296   130   CONTINUE
03297  
03298 C...Showering of initial state partons (optional).
03299           NFIN=N
03300           ALAMSV=PARJ(81)
03301           PARJ(81)=PARP(72)
03302           IF(MSTP(61).GE.1.AND.MINT(47).GE.2.AND.MINT(111).NE.12)
03303      &    CALL PYSSPA(IPU1,IPU2)
03304           PARJ(81)=ALAMSV
03305           IF(MINT(51).EQ.1) GOTO 100
03306 
03307 C...pT-ordered FSR off ISR (optional, must have at least 2 partons)
03308           IF (NPART.GE.2.AND.(MSTJ(41).EQ.11.OR.MSTJ(41).EQ.12)) THEN
03309             PTMAX=0.5*SQRT(PARP(71))*VINT(55)
03310             CALL PYPTFS(3,PTMAX,0D0,PTGEN)
03311           ENDIF
03312  
03313 C...Showering of final state partons (optional).
03314           ALAMSV=PARJ(81)
03315           PARJ(81)=PARP(72)
03316           IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.2.AND.ISET(ISUB).LE.10)
03317      &    THEN
03318             IPU3=MINT(84)+3
03319             IPU4=MINT(84)+4
03320             IF(ISET(ISUB).EQ.5) IPU4=-3
03321             QMAX=VINT(55)
03322             IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
03323             CALL PYSHOW(IPU3,IPU4,QMAX)
03324           ELSEIF(ISET(ISUB).EQ.11) THEN
03325             CALL PYADSH(NFIN)
03326           ENDIF
03327           PARJ(81)=ALAMSV
03328  
03329 C...Allow possibility for user to abort event generation.
03330           IVETO=0
03331           IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO)
03332           IF(IVETO.EQ.1) GOTO 100
03333  
03334 C...Decay of final state resonances.
03335           MINT(32)=0
03336           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) CALL PYRESD(0)
03337           IF(MINT(51).EQ.1) GOTO 100
03338           MINT(52)=N
03339  
03340  
03341 C...Multiple interactions - PYTHIA 6.3 intermediate style.
03342   140     IF(MSTP(81).GE.10.AND.MINT(50).EQ.1) THEN
03343             IF(ISUB.EQ.95) MINT(31)=MINT(31)+1
03344             CALL PYMIGN(6)
03345             IF(MINT(51).EQ.1) GOTO 100
03346             MINT(53)=N
03347  
03348 C...Beam remnant flavour and colour assignments - new scheme.
03349             CALL PYMIHK
03350             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
03351      &      GOTO 120
03352             IF(MINT(51).EQ.1) GOTO 100
03353  
03354 C...Primordial kT and beam remnant momentum sharing - new scheme.
03355             CALL PYMIRM
03356             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
03357      &      GOTO 120
03358             IF(MINT(51).EQ.1) GOTO 100
03359             IF(ISUB.EQ.95) MINT(31)=MINT(31)-1
03360  
03361 C...Multiple interactions - PYTHIA 6.2 style.
03362           ELSEIF(MINT(111).NE.12) THEN
03363             IF (MSTP(81).GE.1.AND.MINT(50).EQ.1.AND.ISUB.NE.95) THEN
03364               CALL PYMULT(6)
03365               MINT(53)=N
03366             ENDIF
03367  
03368 C...Hadron remnants and primordial kT.
03369             CALL PYREMN(IPU1,IPU2)
03370             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO
03371      &           110
03372             IF(MINT(51).EQ.1) GOTO 100
03373           ENDIF
03374  
03375         ELSEIF(ISUB.NE.99) THEN
03376 C...Diffractive and elastic scattering.
03377           CALL PYDIFF
03378  
03379         ELSE
03380 C...DIS scattering (photon flux external).
03381           CALL PYDISG
03382           IF(MINT(51).EQ.1) GOTO 100
03383         ENDIF
03384  
03385 C...Check that no odd resonance left undecayed.
03386         MINT(54)=N
03387         IF(MSTP(111).GE.1) THEN
03388           NFIX=N
03389           DO 150 I=MINT(84)+1,NFIX
03390             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
03391      &      K(I,2).NE.22) THEN
03392               KCA=PYCOMP(K(I,2))
03393               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
03394                 CALL PYRESD(I)
03395                 IF(MINT(51).EQ.1) GOTO 100
03396               ENDIF
03397             ENDIF
03398   150     CONTINUE
03399         ENDIF
03400  
03401 C...Boost hadronic subsystem to overall rest frame.
03402 C..(Only relevant when photon inside lepton beam.)
03403         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
03404  
03405 C...Recalculate energies from momenta and masses (if desired).
03406         IF(MSTP(113).GE.1) THEN
03407           DO 160 I=MINT(83)+1,N
03408             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
03409      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
03410   160     CONTINUE
03411           NRECAL=N
03412         ENDIF
03413  
03414 C...Colour reconnection before string formation
03415         IF (MSTP(95).GE.2) CALL PYFSCR(MINT(84)+1)
03416 
03417 C...Rearrange partons along strings, check invariant mass cuts.
03418         MSTU(28)=0
03419         IF(MSTP(111).LE.0) MSTJ(14)=-1
03420         CALL PYPREP(MINT(84)+1)
03421         MSTJ(14)=MSTJ14
03422         IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN
03423           MSTU(24)=0
03424           GOTO 100
03425         ENDIF
03426         IF (MINT(51).EQ.1.AND.NPREP.LE.5) GOTO 110
03427         IF (MINT(51).EQ.1) GOTO 100
03428         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
03429         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
03430           DO 190 I=MINT(84)+1,N
03431             IF(K(I,2).EQ.94) THEN
03432               DO 180 I1=I+1,MIN(N,I+10)
03433                 IF(K(I1,3).EQ.I) THEN
03434                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
03435                   IF(K(I1,3).EQ.0) THEN
03436                     DO 170 II=MINT(84)+1,I-1
03437                         IF(K(II,2).EQ.K(I1,2)) THEN
03438                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
03439      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
03440                         ENDIF
03441   170               CONTINUE
03442                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
03443                   ENDIF
03444                 ENDIF
03445   180         CONTINUE
03446             ENDIF
03447   190     CONTINUE
03448           CALL PYEDIT(12)
03449           CALL PYEDIT(14)
03450           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
03451           IF(MSTP(125).EQ.0) MINT(4)=0
03452           DO 210 I=MINT(83)+1,N
03453             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
03454               DO 200 I1=I+1,N
03455                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
03456                 IF(K(I1,3).EQ.I) K(I,5)=I1
03457   200         CONTINUE
03458             ENDIF
03459   210     CONTINUE
03460         ENDIF
03461  
03462 C...Introduce separators between sections in PYLIST event listing.
03463         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
03464           MSTU70=1
03465           MSTU(71)=N
03466         ELSEIF(IPILE.EQ.1) THEN
03467           MSTU70=3
03468           MSTU(71)=2
03469           MSTU(72)=MINT(4)
03470           MSTU(73)=N
03471         ENDIF
03472  
03473 C...Go back to lab frame (needed for vertices, also in fragmentation).
03474         CALL PYFRAM(1)
03475  
03476 C...Set nonvanishing production vertex (optional).
03477         IF(MSTP(151).EQ.1) THEN
03478           DO 220 J=1,4
03479             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
03480      &      SIN(PARU(2)*PYR(0))
03481   220     CONTINUE
03482           DO 240 I=MINT(83)+1,N
03483             DO 230 J=1,4
03484               V(I,J)=V(I,J)+VTX(J)
03485   230       CONTINUE
03486   240     CONTINUE
03487         ENDIF
03488  
03489 C...Perform hadronization (if desired).
03490         IF(MSTP(111).GE.1) THEN
03491           CALL PYEXEC
03492           IF(MSTU(24).NE.0) GOTO 100
03493         ENDIF
03494         IF(MSTP(113).GE.1) THEN
03495           DO 250 I=NRECAL,N
03496             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
03497      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
03498   250     CONTINUE
03499         ENDIF
03500         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
03501  
03502 C...Store event information and calculate Monte Carlo estimates of
03503 C...subprocess cross-sections.
03504   260   IF(IPILE.EQ.1) CALL PYDOCU
03505  
03506 C...Set counters for current pileup event and loop to next one.
03507         MSTI(41)=IPILE
03508         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
03509         IF(MSTU70.LT.10) THEN
03510           MSTU70=MSTU70+1
03511           MSTU(70+MSTU70)=N
03512         ENDIF
03513         MINT(83)=N
03514         MINT(84)=N+MSTP(126)
03515         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
03516   270 CONTINUE
03517  
03518 C...Generic information on pileup events. Reconstruct missing history.
03519       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
03520         PARI(91)=VINT(132)
03521         PARI(92)=VINT(133)
03522         PARI(93)=VINT(134)
03523         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
03524       ENDIF
03525       CALL PYEDIT(16)
03526  
03527 C...Transform to the desired coordinate frame.
03528   280 CALL PYFRAM(MSTP(124))
03529       MSTU(70)=MSTU70
03530       PARU(21)=VINT(1)
03531  
03532 C...Error messages
03533  5100 FORMAT(1X,'Error: no subprocess switched on.'/
03534      &1X,'Execution stopped.')
03535  
03536       RETURN
03537       END
03538  
03539 C*********************************************************************
03540  
03541 C...PYEVNW
03542 C...Administers the generation of a high-pT event via calls to
03543 C...a number of subroutines for the new multiple interactions and
03544 C...showering framework.
03545  
03546       SUBROUTINE PYEVNW
03547  
03548 C...Double precision and integer declarations.
03549       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
03550       IMPLICIT INTEGER(I-N)
03551       INTEGER PYK,PYCHGE,PYCOMP
03552       PARAMETER (MAXNUR=1000)
03553 C...Commonblocks.
03554       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
03555 C...Commonblocks.
03556       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
03557       COMMON/PYCTAG/NCT,MCT(4000,2)
03558       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
03559       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
03560       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
03561       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
03562       COMMON/PYINT1/MINT(400),VINT(400)
03563       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
03564       COMMON/PYINT4/MWID(500),WIDS(500,5)
03565       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
03566       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
03567      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
03568      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
03569       SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,
03570      &     /PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/,/PYINTM/
03571 C...Local arrays.
03572       DIMENSION VTX(4)
03573  
03574 C...Stop if no subprocesses on.
03575       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
03576         WRITE(MSTU(11),5100)
03577         CALL PYSTOP(1)
03578       ENDIF
03579  
03580 C...Initial values for some counters.
03581       MSTU(1)=0
03582       MSTU(2)=0
03583       N=0
03584       MINT(5)=MINT(5)+1
03585       MINT(7)=0
03586       MINT(8)=0
03587       MINT(30)=0
03588       MINT(83)=0
03589       MINT(84)=MSTP(126)
03590       MSTU(24)=0
03591       MSTU70=0
03592       MSTJ14=MSTJ(14)
03593 C...Normally, use K(I,4:5) colour info rather than /PYCT/.
03594       NCT=0
03595       MINT(33)=0
03596 C...Zero counters for pT-ordered showers (failsafe)
03597       NPART=0
03598       NPARTD=0
03599  
03600 C...Let called routines know call is from PYEVNW (not PYEVNT).
03601       MINT(35)=3
03602  
03603 C...If variable energies: redo incoming kinematics and cross-section.
03604       MSTI(61)=0
03605       IF(MSTP(171).EQ.1) THEN
03606         CALL PYINKI(1)
03607         IF(MSTI(61).EQ.1) THEN
03608           MINT(5)=MINT(5)-1
03609           RETURN
03610         ENDIF
03611         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
03612         CALL PYXTOT
03613       ENDIF
03614  
03615 C...Loop over number of pileup events; check space left.
03616       IF(MSTP(131).LE.0) THEN
03617         NPILE=1
03618       ELSE
03619         CALL PYPILE(2)
03620         NPILE=MINT(81)
03621       ENDIF
03622       DO 300 IPILE=1,NPILE
03623         IF(MINT(84)+100.GE.MSTU(4)) THEN
03624           CALL PYERRM(11,
03625      &    '(PYEVNW:) no more space in PYJETS for pileup events')
03626           IF(MSTU(21).GE.1) GOTO 310
03627         ENDIF
03628         MINT(82)=IPILE
03629  
03630 C...Generate variables of hard scattering.
03631         MINT(51)=0
03632         MSTI(52)=0
03633         LOOPHS  =0
03634   100   CONTINUE
03635         LOOPHS  = LOOPHS + 1
03636         IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
03637         IF(LOOPHS.GE.10) THEN
03638           CALL PYERRM(19,'(PYEVNW:) failed to evolve shower or '
03639      &        //'multiple interactions. Returning.')
03640           MINT(51)=1
03641           RETURN
03642         ENDIF
03643         MINT(31)=0
03644         MINT(39)=0
03645         MINT(36)=0
03646         MINT(51)=0
03647         MINT(57)=0
03648         CALL PYRAND
03649         IF(MSTI(61).EQ.1) THEN
03650           MINT(5)=MINT(5)-1
03651           RETURN
03652         ENDIF
03653         IF(MINT(51).EQ.2) RETURN
03654         ISUB=MINT(1)
03655         IF(MSTP(111).EQ.-1) GOTO 290
03656  
03657 C...Loopback point if PYPREP fails, especially for junction topologies.
03658         NPREP=0
03659         MNT31S=MINT(31)
03660   110   NPREP=NPREP+1
03661         MINT(31)=MNT31S
03662  
03663         IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
03664 C...Hard scattering (including low-pT):
03665 C...reconstruct kinematics and colour flow of hard scattering.
03666           MINT31=MINT(31)
03667   120     MINT(31)=MINT31
03668           MINT(51)=0
03669           CALL PYSCAT
03670           IF(MINT(51).EQ.1) GOTO 100
03671           NPARTD=N
03672           NFIN=N
03673  
03674 C...Intertwined initial state showers and multiple interactions.
03675 C...Force no IS showers if no pdfs defined: MSTP(61) -> 0 for PYEVOL.
03676 C...Force no MI if cross section not known: MSTP(81) -> 0 for PYEVOL.
03677           MSTP61=MSTP(61)
03678           IF (MINT(47).LT.2) MSTP(61)=0
03679           MSTP81=MSTP(81)
03680           IF (MINT(50).EQ.0) MSTP(81)=0
03681           IF ((MSTP(61).GE.1.OR.MOD(MSTP(81),10).GE.0).AND.
03682      &    MINT(111).NE.12) THEN
03683 C...Absolute max pT2 scale for evolution: phase space limit.
03684             PT2MXS=0.25D0*VINT(2)
03685 C...Check if more constrained by ISR and MI max scales:
03686             PT2MXS=MIN(PT2MXS,MAX(VINT(56),VINT(62)))
03687 C...Loopback point in case of failure in evolution.
03688             LOOP=0
03689   130       LOOP=LOOP+1
03690             MINT(51)=0
03691             IF(LOOP.GT.100) THEN
03692               CALL PYERRM(9,'(PYEVNW:) failed to evolve shower or '
03693      &             //'multiple interactions. Trying new point.')
03694               MINT(51)=1
03695               RETURN
03696             ENDIF
03697  
03698 C...Pre-initialization of interleaved MI/ISR/JI evolution, only done
03699 C...once per event. (E.g. compute constants and save variables to be
03700 C...restored later in case of failure.)
03701             IF (LOOP.EQ.1) CALL PYEVOL(-1,DUMMY1,DUMMY2)
03702  
03703 C...Initialize interleaved MI/ISR/JI evolution.
03704 C...PT2MAX: absolute upper limit for evolution - Initialization may
03705 C...        return a PT2MAX which is lower than this.
03706 C...PT2MIN: absolute lower limit for evolution - Initialization may
03707 C...        return a PT2MIN which is larger than this (e.g. Lambda_QCD).
03708             PT2MAX=PT2MXS
03709             PT2MIN=0D0
03710             CALL PYEVOL(0,PT2MAX,PT2MIN)
03711 C...If failed to initialize evolution, generate a new hard process
03712             IF (MINT(51).EQ.1) GOTO 100
03713  
03714 C...Perform interleaved MI/ISR/JI evolution from PT2MAX to PT2MIN.
03715 C...In principle factorized, so can be stopped and restarted.
03716 C...Example: stop/start at pT=10 GeV. (Commented out for now.)
03717 C            PT2MED=MAX(10D0**2,PT2MIN)
03718 C            CALL PYEVOL(1,PT2MAX,PT2MED)
03719 C            IF (MINT(51).EQ.1) GOTO 160
03720 C            PT2MAX=PT2MED
03721             CALL PYEVOL(1,PT2MAX,PT2MIN)
03722 C...If fatal error (e.g., massive hard-process initiator, but no available 
03723 C...phase space for creation), generate a new hard process
03724             IF (MINT(51).EQ.2) GOTO 100
03725 C...If smaller error, just try running evolution again
03726             IF (MINT(51).EQ.1) GOTO 130
03727  
03728 C...Finalize interleaved MI/ISR/JI evolution.
03729             CALL PYEVOL(2,PT2MAX,PT2MIN)
03730             IF (MINT(51).EQ.1) GOTO 130
03731  
03732           ENDIF
03733           MSTP(61)=MSTP61
03734           MSTP(81)=MSTP81
03735           IF(MINT(51).EQ.1) GOTO 100
03736 C...(MINT(52) is actually obsolete in this routine. Set anyway
03737 C...to ensure PYDOCU stable.)
03738           MINT(52)=N
03739           MINT(53)=N
03740  
03741 C...Beam remnants - new scheme.
03742   140     IF(MINT(50).EQ.1) THEN
03743             IF (ISUB.EQ.95) MINT(31)=1
03744  
03745 C...Beam remnant flavour and colour assignments - new scheme.
03746             CALL PYMIHK
03747             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
03748      &           GOTO 120
03749             IF(MINT(51).EQ.1) GOTO 100
03750  
03751 C...Primordial kT and beam remnant momentum sharing - new scheme.
03752             CALL PYMIRM
03753             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5)
03754      &      GOTO 120
03755             IF(MINT(51).EQ.1) GOTO 100
03756             IF (ISUB.EQ.95) MINT(31)=0
03757           ELSEIF(MINT(111).NE.12) THEN
03758 C...Hadron remnants and primordial kT - old model.
03759 C...Happens e.g. for direct photon on one side.
03760             IPU1=IMI(1,1,1)
03761             IPU2=IMI(2,1,1)
03762             CALL PYREMN(IPU1,IPU2)
03763             IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO
03764      &           110
03765             IF(MINT(51).EQ.1) GOTO 100
03766 C...PYREMN does not set colour tags for BRs, so needs to be done now.
03767             DO 160 I=MINT(53)+1,N
03768               DO 150 KCS=4,5
03769                 IDA=MOD(K(I,KCS),MSTU(5))
03770                 IF (IDA.NE.0) THEN
03771                   MCT(I,KCS-3)=MCT(IDA,6-KCS)
03772                 ELSE
03773                   MCT(I,KCS-3)=0
03774                 ENDIF
03775   150         CONTINUE
03776   160       CONTINUE
03777 C...Instruct PYPREP to use colour tags
03778             MINT(33)=1
03779 
03780             DO 360 MQGST=1,2
03781               DO 350 I=MINT(84)+1,N
03782   
03783 C...Look for coloured string endpoint, or (later) leftover gluon.
03784                 IF (K(I,1).NE.3) GOTO 350
03785                 KC=PYCOMP(K(I,2))
03786                 IF(KC.EQ.0) GOTO 350
03787                 KQ=KCHG(KC,2)
03788                 IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 350
03789   
03790 C...  Pick up loose string end with no previous tag.
03791                 KCS=4
03792                 IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
03793                 IF(MCT(I,KCS-3).NE.0) GOTO 350
03794                   
03795                 CALL PYCTTR(I,KCS,I)
03796                 IF(MINT(51).NE.0) RETURN
03797   
03798  350          CONTINUE
03799  360        CONTINUE
03800 C...Now delete any colour processing information if set (since partons
03801 C...otherwise not FS showered!)
03802             DO 170 I=MINT(84)+1,N
03803               IF (I.LE.N) THEN
03804                 K(I,4)=MOD(K(I,4),MSTU(5)**2)
03805                 K(I,5)=MOD(K(I,5),MSTU(5)**2)
03806               ENDIF
03807   170       CONTINUE
03808           ENDIF
03809  
03810 C...Showering of final state partons (optional).
03811           ALAMSV=PARJ(81)
03812           PARJ(81)=PARP(72)
03813           IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.1.AND.ISET(ISUB).LE.10)
03814      &    THEN
03815             QMAX=VINT(55)
03816             IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55)
03817             CALL PYPTFS(1,QMAX,0D0,PTGEN)
03818 C...External processes: handle successive showers.
03819           ELSEIF(ISET(ISUB).EQ.11) THEN
03820             CALL PYADSH(NFIN)
03821           ENDIF
03822           PARJ(81)=ALAMSV
03823 
03824 C...Allow possibility for user to abort event generation.
03825           IVETO=0
03826           IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO) ! sm
03827           IF(IVETO.EQ.1) GOTO 100
03828 
03829  
03830 C...Decay of final state resonances.
03831           MINT(32)=0
03832           IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) THEN
03833             CALL PYRESD(0)
03834             IF(MINT(51).NE.0) GOTO 100
03835           ENDIF
03836  
03837           IF(MINT(51).EQ.1) GOTO 100
03838  
03839         ELSEIF(ISUB.NE.99) THEN
03840 C...Diffractive and elastic scattering.
03841           CALL PYDIFF
03842  
03843         ELSE
03844 C...DIS scattering (photon flux external).
03845           CALL PYDISG
03846           IF(MINT(51).EQ.1) GOTO 100
03847         ENDIF
03848  
03849 C...Check that no odd resonance left undecayed.
03850         MINT(54)=N
03851         IF(MSTP(111).GE.1) THEN
03852           NFIX=N
03853           DO 180 I=MINT(84)+1,NFIX
03854             IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
03855      &      K(I,2).NE.22) THEN
03856               KCA=PYCOMP(K(I,2))
03857               IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
03858                 CALL PYRESD(I)
03859                 IF(MINT(51).EQ.1) GOTO 100
03860               ENDIF
03861             ENDIF
03862   180     CONTINUE
03863         ENDIF
03864  
03865 C...Boost hadronic subsystem to overall rest frame.
03866 C..(Only relevant when photon inside lepton beam.)
03867         IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
03868  
03869 C...Recalculate energies from momenta and masses (if desired).
03870         IF(MSTP(113).GE.1) THEN
03871           DO 190 I=MINT(83)+1,N
03872             IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+
03873      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
03874   190     CONTINUE
03875           NRECAL=N
03876         ENDIF
03877  
03878 C...Colour reconnection before string formation
03879         CALL PYFSCR(MINT(84)+1)
03880  
03881 C...Rearrange partons along strings, check invariant mass cuts.
03882         MSTU(28)=0
03883         IF(MSTP(111).LE.0) MSTJ(14)=-1
03884         CALL PYPREP(MINT(84)+1)
03885         MSTJ(14)=MSTJ14
03886         IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN
03887           MSTU(24)=0
03888           GOTO 100
03889         ENDIF
03890         IF(MINT(51).EQ.1) GOTO 110
03891         IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100
03892         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN
03893           DO 220 I=MINT(84)+1,N
03894             IF(K(I,2).EQ.94) THEN
03895               DO 210 I1=I+1,MIN(N,I+10)
03896                 IF(K(I1,3).EQ.I) THEN
03897                   K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5))
03898                   IF(K(I1,3).EQ.0) THEN
03899                     DO 200 II=MINT(84)+1,I-1
03900                         IF(K(II,2).EQ.K(I1,2)) THEN
03901                           IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR.
03902      &                    MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II
03903                         ENDIF
03904   200               CONTINUE
03905                     IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3)
03906                   ENDIF
03907                 ENDIF
03908  210          CONTINUE
03909 CC...Also collapse particles decaying to themselves (if same KS)
03910             ELSEIF (K(I,1).GT.0.AND.K(I,4).EQ.K(I,5).AND.K(I,4).GT.0
03911      &            .AND.K(I,4).LT.N) THEN
03912               IDA=K(I,4)
03913               IF (K(IDA,1).EQ.K(I,1).AND.K(IDA,2).EQ.K(I,2)) THEN
03914                 K(I,1)=0
03915               ENDIF
03916             ENDIF
03917   220     CONTINUE
03918           CALL PYEDIT(12)
03919           CALL PYEDIT(14)
03920           IF(MSTP(125).EQ.0) CALL PYEDIT(15)
03921           IF(MSTP(125).EQ.0) MINT(4)=0
03922           DO 240 I=MINT(83)+1,N
03923             IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN
03924               DO 230 I1=I+1,N
03925                 IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1
03926                 IF(K(I1,3).EQ.I) K(I,5)=I1
03927   230         CONTINUE
03928             ENDIF
03929   240     CONTINUE
03930         ENDIF
03931  
03932 C...Introduce separators between sections in PYLIST event listing.
03933         IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN
03934           MSTU70=1
03935           MSTU(71)=N
03936         ELSEIF(IPILE.EQ.1) THEN
03937           MSTU70=3
03938           MSTU(71)=2
03939           MSTU(72)=MINT(4)
03940           MSTU(73)=N
03941         ENDIF
03942  
03943 C...Go back to lab frame (needed for vertices, also in fragmentation).
03944         CALL PYFRAM(1)
03945  
03946 C...Set nonvanishing production vertex (optional).
03947         IF(MSTP(151).EQ.1) THEN
03948           DO 250 J=1,4
03949             VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))*
03950      &      SIN(PARU(2)*PYR(0))
03951   250     CONTINUE
03952           DO 270 I=MINT(83)+1,N
03953             DO 260 J=1,4
03954               V(I,J)=V(I,J)+VTX(J)
03955   260       CONTINUE
03956   270     CONTINUE
03957         ENDIF
03958  
03959 C...Perform hadronization (if desired).
03960         IF(MSTP(111).GE.1) THEN
03961           CALL PYEXEC
03962           IF(MSTU(24).NE.0) GOTO 100
03963         ENDIF
03964         IF(MSTP(113).GE.1) THEN
03965           DO 280 I=NRECAL,N
03966             IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+
03967      &      P(I,2)**2+P(I,3)**2+P(I,5)**2)
03968   280     CONTINUE
03969         ENDIF
03970         IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14)
03971  
03972 C...Store event information and calculate Monte Carlo estimates of
03973 C...subprocess cross-sections.
03974   290   IF(IPILE.EQ.1) CALL PYDOCU
03975  
03976 C...Set counters for current pileup event and loop to next one.
03977         MSTI(41)=IPILE
03978         IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB
03979         IF(MSTU70.LT.10) THEN
03980           MSTU70=MSTU70+1
03981           MSTU(70+MSTU70)=N
03982         ENDIF
03983         MINT(83)=N
03984         MINT(84)=N+MSTP(126)
03985         IF(IPILE.LT.NPILE) CALL PYFRAM(2)
03986   300 CONTINUE
03987  
03988 C...Generic information on pileup events. Reconstruct missing history.
03989       IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN
03990         PARI(91)=VINT(132)
03991         PARI(92)=VINT(133)
03992         PARI(93)=VINT(134)
03993         IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131)
03994       ENDIF
03995       CALL PYEDIT(16)
03996  
03997 C...Transform to the desired coordinate frame.
03998   310 CALL PYFRAM(MSTP(124))
03999       MSTU(70)=MSTU70
04000       PARU(21)=VINT(1)
04001  
04002 C...Error messages
04003  5100 FORMAT(1X,'Error: no subprocess switched on.'/
04004      &1X,'Execution stopped.')
04005  
04006       RETURN
04007       END
04008  
04009  
04010 C***********************************************************************
04011  
04012 C...PYSTAT
04013 C...Prints out information about cross-sections, decay widths, branching
04014 C...ratios, kinematical limits, status codes and parameter values.
04015  
04016       SUBROUTINE PYSTAT(MSTAT)
04017  
04018 C...Double precision and integer declarations.
04019       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
04020       IMPLICIT INTEGER(I-N)
04021       INTEGER PYK,PYCHGE,PYCOMP
04022 C...Parameter statement to help give large particle numbers.
04023       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
04024      &KEXCIT=4000000,KDIMEN=5000000)
04025       PARAMETER (EPS=1D-3)
04026 C...Commonblocks.
04027       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
04028       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
04029       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
04030       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
04031       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
04032       COMMON/PYINT1/MINT(400),VINT(400)
04033       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
04034       COMMON/PYINT4/MWID(500),WIDS(500,5)
04035       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
04036       COMMON/PYINT6/PROC(0:500)
04037       CHARACTER PROC*28, CHTMP*16
04038       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
04039       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
04040       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
04041      &/PYINT2/,/PYINT4/,/PYINT5/,/PYINT6/,/PYMSSM/,/PYMSRV/
04042 C...Local arrays, character variables and data.
04043       DIMENSION WDTP(0:400),WDTE(0:400,0:5),NMODES(0:20),PBRAT(10)
04044       CHARACTER PROGA(6)*28,CHAU*16,CHKF*16,CHD1*16,CHD2*16,CHD3*16,
04045      &CHIN(2)*12,STATE(-1:5)*4,CHKIN(21)*18,DISGA(2)*28,
04046      &PROGG9(13)*28,PROGG4(4)*28,PROGG2(2)*28,PROGP4(4)*28
04047       CHARACTER*24 CHD0, CHDC(10)
04048       CHARACTER*6 DNAME(3)
04049       DATA PROGA/
04050      &'VMD/hadron * VMD            ','VMD/hadron * direct         ',
04051      &'VMD/hadron * anomalous      ','direct * direct             ',
04052      &'direct * anomalous          ','anomalous * anomalous       '/
04053       DATA DISGA/'e * VMD','e * anomalous'/
04054       DATA PROGG9/
04055      &'direct * direct             ','direct * VMD                ',
04056      &'direct * anomalous          ','VMD * direct                ',
04057      &'VMD * VMD                   ','VMD * anomalous             ',
04058      &'anomalous * direct          ','anomalous * VMD             ',
04059      &'anomalous * anomalous       ','DIS * VMD                   ',
04060      &'DIS * anomalous             ','VMD * DIS                   ',
04061      &'anomalous * DIS             '/
04062       DATA PROGG4/
04063      &'direct * direct             ','direct * resolved           ',
04064      &'resolved * direct           ','resolved * resolved         '/
04065       DATA PROGG2/
04066      &'direct * hadron             ','resolved * hadron           '/
04067       DATA PROGP4/
04068      &'VMD * hadron                ','direct * hadron             ',
04069      &'anomalous * hadron          ','DIS * hadron                '/
04070       DATA STATE/'----','off ','on  ','on/+','on/-','on/1','on/2'/,
04071      &CHKIN/' m_hard (GeV/c^2) ',' p_T_hard (GeV/c) ',
04072      &'m_finite (GeV/c^2)','   y*_subsystem   ','     y*_large     ',
04073      &'     y*_small     ','    eta*_large    ','    eta*_small    ',
04074      &'cos(theta*)_large ','cos(theta*)_small ','       x_1        ',
04075      &'       x_2        ','       x_F        ',' cos(theta_hard)  ',
04076      &'m''_hard (GeV/c^2) ','       tau        ','        y*        ',
04077      &'cos(theta_hard^-) ','cos(theta_hard^+) ','      x_T^2       ',
04078      &'       tau''       '/
04079       DATA DNAME /'q     ','lepton','nu    '/
04080  
04081 C...Cross-sections.
04082       IF(MSTAT.LE.1) THEN
04083         IF(MINT(121).GT.1) CALL PYSAVE(5,0)
04084         WRITE(MSTU(11),5000)
04085         WRITE(MSTU(11),5100)
04086         WRITE(MSTU(11),5200) 0,PROC(0),NGEN(0,3),NGEN(0,1),XSEC(0,3)
04087         DO 100 I=1,500
04088           IF(MSUB(I).NE.1) GOTO 100
04089           WRITE(MSTU(11),5200) I,PROC(I),NGEN(I,3),NGEN(I,1),XSEC(I,3)
04090   100   CONTINUE
04091         IF(MINT(121).GT.1) THEN
04092           WRITE(MSTU(11),5300)
04093           DO 110 IGA=1,MINT(121)
04094             CALL PYSAVE(3,IGA)
04095             IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
04096               WRITE(MSTU(11),5200) IGA,DISGA(IGA),NGEN(0,3),NGEN(0,1),
04097      &        XSEC(0,3)
04098             ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
04099               WRITE(MSTU(11),5200) IGA,PROGG9(IGA),NGEN(0,3),NGEN(0,1),
04100      &        XSEC(0,3)
04101             ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.30) THEN
04102               WRITE(MSTU(11),5200) IGA,PROGP4(IGA),NGEN(0,3),NGEN(0,1),
04103      &        XSEC(0,3)
04104             ELSEIF(MINT(121).EQ.4) THEN
04105               WRITE(MSTU(11),5200) IGA,PROGG4(IGA),NGEN(0,3),NGEN(0,1),
04106      &        XSEC(0,3)
04107             ELSEIF(MINT(121).EQ.2) THEN
04108               WRITE(MSTU(11),5200) IGA,PROGG2(IGA),NGEN(0,3),NGEN(0,1),
04109      &        XSEC(0,3)
04110             ELSE
04111               WRITE(MSTU(11),5200) IGA,PROGA(IGA),NGEN(0,3),NGEN(0,1),
04112      &        XSEC(0,3)
04113             ENDIF
04114   110     CONTINUE
04115           CALL PYSAVE(5,0)
04116         ENDIF
04117         WRITE(MSTU(11),5400) MSTU(23),MSTU(30),MSTU(27),
04118      &  1D0-DBLE(NGEN(0,3))/MAX(1D0,DBLE(NGEN(0,2)))
04119  
04120 C...Decay widths and branching ratios.
04121       ELSEIF(MSTAT.EQ.2) THEN
04122         WRITE(MSTU(11),5500)
04123         WRITE(MSTU(11),5600)
04124         DO 140 KC=1,500
04125           KF=KCHG(KC,4)
04126           CALL PYNAME(KF,CHKF)
04127           IOFF=0
04128           IF(KC.LE.22) THEN
04129             IF(KC.GT.2*MSTP(1).AND.KC.LE.10) GOTO 140
04130             IF(KC.GT.10+2*MSTP(1).AND.KC.LE.20) GOTO 140
04131             IF(KC.LE.5.OR.(KC.GE.11.AND.KC.LE.16)) IOFF=1
04132             IF(KC.EQ.18.AND.PMAS(18,1).LT.1D0) IOFF=1
04133             IF(KC.EQ.21.OR.KC.EQ.22) IOFF=1
04134           ELSE
04135             IF(MWID(KC).LE.0) GOTO 140
04136             IF(IMSS(1).LE.0.AND.(KF/KSUSY1.EQ.1.OR.
04137      &      KF/KSUSY1.EQ.2)) GOTO 140
04138           ENDIF
04139 C...Off-shell branchings.
04140           IF(IOFF.EQ.1) THEN
04141             NGP=0
04142             IF(KC.LE.20) NGP=(MOD(KC,10)+1)/2
04143             IF(NGP.LE.MSTP(1)) WRITE(MSTU(11),5700) KF,CHKF(1:10),
04144      &      PMAS(KC,1),0D0,0D0,STATE(MDCY(KC,1)),0D0
04145             DO 120 J=1,MDCY(KC,3)
04146               IDC=J+MDCY(KC,2)-1
04147               NGP1=0
04148               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
04149      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
04150               NGP2=0
04151               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
04152      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
04153               CALL PYNAME(KFDP(IDC,1),CHD1)
04154               CALL PYNAME(KFDP(IDC,2),CHD2)
04155               IF(KFDP(IDC,3).EQ.0) THEN
04156                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
04157      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5800) IDC,CHD1(1:10),
04158      &          CHD2(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
04159               ELSE
04160                 CALL PYNAME(KFDP(IDC,3),CHD3)
04161                 IF(MDME(IDC,2).EQ.102.AND.NGP1.LE.MSTP(1).AND.
04162      &          NGP2.LE.MSTP(1)) WRITE(MSTU(11),5900) IDC,CHD1(1:10),
04163      &          CHD2(1:10),CHD3(1:10),0D0,0D0,STATE(MDME(IDC,1)),0D0
04164               ENDIF
04165   120       CONTINUE
04166 C...On-shell decays.
04167           ELSE
04168             CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
04169             BRFIN=1D0
04170             IF(WDTE(0,0).LE.0D0) BRFIN=0D0
04171             WRITE(MSTU(11),5700) KF,CHKF(1:10),PMAS(KC,1),WDTP(0),1D0,
04172      &      STATE(MDCY(KC,1)),BRFIN
04173             DO 130 J=1,MDCY(KC,3)
04174               IDC=J+MDCY(KC,2)-1
04175               NGP1=0
04176               IF(IABS(KFDP(IDC,1)).LE.20) NGP1=
04177      &        (MOD(IABS(KFDP(IDC,1)),10)+1)/2
04178               NGP2=0
04179               IF(IABS(KFDP(IDC,2)).LE.20) NGP2=
04180      &        (MOD(IABS(KFDP(IDC,2)),10)+1)/2
04181               BRPRI=0D0
04182               IF(WDTP(0).GT.0D0) BRPRI=WDTP(J)/WDTP(0)
04183               BRFIN=0D0
04184               IF(WDTE(0,0).GT.0D0) BRFIN=WDTE(J,0)/WDTE(0,0)
04185               CALL PYNAME(KFDP(IDC,1),CHD1)
04186               CALL PYNAME(KFDP(IDC,2),CHD2)
04187               IF(KFDP(IDC,3).EQ.0) THEN
04188                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
04189      &          WRITE(MSTU(11),5800) IDC,CHD1(1:10),
04190      &          CHD2(1:10),WDTP(J),BRPRI,
04191      &          STATE(MDME(IDC,1)),BRFIN
04192               ELSE
04193                 CALL PYNAME(KFDP(IDC,3),CHD3)
04194                 IF(NGP1.LE.MSTP(1).AND.NGP2.LE.MSTP(1))
04195      &          WRITE(MSTU(11),5900) IDC,CHD1(1:10),
04196      &          CHD2(1:10),CHD3(1:10),WDTP(J),BRPRI,
04197      &          STATE(MDME(IDC,1)),BRFIN
04198               ENDIF
04199   130       CONTINUE
04200           ENDIF
04201   140   CONTINUE
04202         WRITE(MSTU(11),6000)
04203  
04204 C...Allowed incoming partons/particles at hard interaction.
04205       ELSEIF(MSTAT.EQ.3) THEN
04206         WRITE(MSTU(11),6100)
04207         CALL PYNAME(MINT(11),CHAU)
04208         CHIN(1)=CHAU(1:12)
04209         CALL PYNAME(MINT(12),CHAU)
04210         CHIN(2)=CHAU(1:12)
04211         WRITE(MSTU(11),6200) CHIN(1),CHIN(2)
04212         DO 150 I=-20,22
04213           IF(I.EQ.0) GOTO 150
04214           IA=IABS(I)
04215           IF(IA.GT.MSTP(58).AND.IA.LE.10) GOTO 150
04216           IF(IA.GT.10+2*MSTP(1).AND.IA.LE.20) GOTO 150
04217           CALL PYNAME(I,CHAU)
04218           WRITE(MSTU(11),6300) CHAU,STATE(KFIN(1,I)),CHAU,
04219      &    STATE(KFIN(2,I))
04220   150   CONTINUE
04221         WRITE(MSTU(11),6400)
04222  
04223 C...User-defined limits on kinematical variables.
04224       ELSEIF(MSTAT.EQ.4) THEN
04225         WRITE(MSTU(11),6500)
04226         WRITE(MSTU(11),6600)
04227         SHRMAX=CKIN(2)
04228         IF(SHRMAX.LT.0D0) SHRMAX=VINT(1)
04229         WRITE(MSTU(11),6700) CKIN(1),CHKIN(1),SHRMAX
04230         PTHMIN=MAX(CKIN(3),CKIN(5))
04231         PTHMAX=CKIN(4)
04232         IF(PTHMAX.LT.0D0) PTHMAX=0.5D0*SHRMAX
04233         WRITE(MSTU(11),6800) CKIN(3),PTHMIN,CHKIN(2),PTHMAX
04234         WRITE(MSTU(11),6900) CHKIN(3),CKIN(6)
04235         DO 160 I=4,14
04236           WRITE(MSTU(11),6700) CKIN(2*I-1),CHKIN(I),CKIN(2*I)
04237   160   CONTINUE
04238         SPRMAX=CKIN(32)
04239         IF(SPRMAX.LT.0D0) SPRMAX=VINT(1)
04240         WRITE(MSTU(11),6700) CKIN(31),CHKIN(15),SPRMAX
04241         WRITE(MSTU(11),7000)
04242  
04243 C...Status codes and parameter values.
04244       ELSEIF(MSTAT.EQ.5) THEN
04245         WRITE(MSTU(11),7100)
04246         WRITE(MSTU(11),7200)
04247         DO 170 I=1,100
04248           WRITE(MSTU(11),7300) I,MSTP(I),PARP(I),100+I,MSTP(100+I),
04249      &    PARP(100+I)
04250   170   CONTINUE
04251  
04252 C...List of all processes implemented in the program.
04253       ELSEIF(MSTAT.EQ.6) THEN
04254         WRITE(MSTU(11),7400)
04255         WRITE(MSTU(11),7500)
04256         DO 180 I=1,500
04257           IF(ISET(I).LT.0) GOTO 180
04258           WRITE(MSTU(11),7600) I,PROC(I),ISET(I),KFPR(I,1),KFPR(I,2)
04259   180   CONTINUE
04260         WRITE(MSTU(11),7700)
04261  
04262       ELSEIF(MSTAT.EQ.7) THEN
04263       WRITE (MSTU(11),8000)
04264       NMODES(0)=0
04265       NMODES(10)=0
04266       NMODES(9)=0
04267       DO 290 ILR=1,2
04268         DO 280 KFSM=1,16
04269           KFSUSY=ILR*KSUSY1+KFSM
04270           NRVDC=0
04271 C...SDOWN DECAYS
04272           IF (KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5) THEN
04273             NRVDC=3
04274             DO 190 I=1,NRVDC
04275               PBRAT(I)=0D0
04276               NMODES(I)=0
04277   190       CONTINUE
04278             CALL PYNAME(KFSUSY,CHTMP)
04279             CHD0=CHTMP//' '
04280             CHDC(1)=DNAME(3) // ' + ' // DNAME(1)
04281             CHDC(2)=DNAME(2) // ' + ' // DNAME(1)
04282             CHDC(3)=DNAME(1) // ' + ' // DNAME(1)
04283             KC=PYCOMP(KFSUSY)
04284             DO 200 J=1,MDCY(KC,3)
04285               IDC=J+MDCY(KC,2)-1
04286               ID1=IABS(KFDP(IDC,1))
04287               ID2=IABS(KFDP(IDC,2))
04288               IF (KFDP(IDC,3).EQ.0) THEN
04289                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
04290      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
04291                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
04292                   NMODES(1)=NMODES(1)+1
04293                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04294                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04295                 ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
04296      &                 .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6)) THEN
04297                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
04298                   NMODES(2)=NMODES(2)+1
04299                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04300                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04301                 ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
04302      &                 .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
04303                   PBRAT(3)=PBRAT(3)+BRAT(IDC)
04304                   NMODES(3)=NMODES(3)+1
04305                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04306                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04307                 ENDIF
04308               ENDIF
04309   200       CONTINUE
04310           ENDIF
04311 C...SUP DECAYS
04312           IF (KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6) THEN
04313             NRVDC=2
04314             DO 210 I=1,NRVDC
04315               NMODES(I)=0
04316               PBRAT(I)=0D0
04317   210       CONTINUE
04318             CALL PYNAME(KFSUSY,CHTMP)
04319             CHD0=CHTMP//' '
04320             CHDC(1)=DNAME(2) // ' + ' // DNAME(1)
04321             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
04322             KC=PYCOMP(KFSUSY)
04323             DO 220 J=1,MDCY(KC,3)
04324               IDC=J+MDCY(KC,2)-1
04325               ID1=IABS(KFDP(IDC,1))
04326               ID2=IABS(KFDP(IDC,2))
04327               IF (KFDP(IDC,3).EQ.0) THEN
04328                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
04329      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
04330                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
04331                   NMODES(1)=NMODES(1)+1
04332                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04333                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04334                 ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
04335      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
04336                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
04337                   NMODES(2)=NMODES(2)+1
04338                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04339                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04340                 ENDIF
04341               ENDIF
04342   220       CONTINUE
04343           ENDIF
04344 C...SLEPTON DECAYS
04345           IF (KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15) THEN
04346             NRVDC=2
04347             DO 230 I=1,NRVDC
04348               PBRAT(I)=0D0
04349               NMODES(I)=0
04350   230       CONTINUE
04351             CALL PYNAME(KFSUSY,CHTMP)
04352             CHD0=CHTMP//' '
04353             CHDC(1)=DNAME(3) // ' + ' // DNAME(2)
04354             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
04355             KC=PYCOMP(KFSUSY)
04356             DO 240 J=1,MDCY(KC,3)
04357               IDC=J+MDCY(KC,2)-1
04358               ID1=IABS(KFDP(IDC,1))
04359               ID2=IABS(KFDP(IDC,2))
04360               IF (KFDP(IDC,3).EQ.0) THEN
04361                 IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
04362      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
04363                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
04364                   NMODES(1)=NMODES(1)+1
04365                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04366                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04367                 ENDIF
04368                 IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND.(ID2
04369      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
04370                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
04371                   NMODES(2)=NMODES(2)+1
04372                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04373                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04374                 ENDIF
04375               ENDIF
04376   240       CONTINUE
04377           ENDIF
04378 C...SNEUTRINO DECAYS
04379           IF ((KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16).AND.ILR.EQ.1)
04380      &         THEN
04381             NRVDC=2
04382             DO 250 I=1,NRVDC
04383               PBRAT(I)=0D0
04384               NMODES(I)=0
04385   250       CONTINUE
04386             CALL PYNAME(KFSUSY,CHTMP)
04387             CHD0=CHTMP//' '
04388             CHDC(1)=DNAME(2) // ' + ' // DNAME(2)
04389             CHDC(2)=DNAME(1) // ' + ' // DNAME(1)
04390             KC=PYCOMP(KFSUSY)
04391             DO 260 J=1,MDCY(KC,3)
04392               IDC=J+MDCY(KC,2)-1
04393               ID1=IABS(KFDP(IDC,1))
04394               ID2=IABS(KFDP(IDC,2))
04395               IF (KFDP(IDC,3).EQ.0) THEN
04396                 IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND.(ID2
04397      &               .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15)) THEN
04398                   PBRAT(1)=PBRAT(1)+BRAT(IDC)
04399                   NMODES(1)=NMODES(1)+1
04400                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04401                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04402                 ENDIF
04403                 IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND.(ID2
04404      &               .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5)) THEN
04405                   NMODES(2)=NMODES(2)+1
04406                   PBRAT(2)=PBRAT(2)+BRAT(IDC)
04407                   IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04408                   IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04409                 ENDIF
04410               ENDIF
04411   260       CONTINUE
04412           ENDIF
04413           IF (NRVDC.NE.0) THEN
04414             DO 270 I=1,NRVDC
04415               WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
04416               NMODES(0)=NMODES(0)+NMODES(I)
04417   270       CONTINUE
04418           ENDIF
04419   280   CONTINUE
04420   290 CONTINUE
04421       DO 370 KFSM=21,37
04422         KFSUSY=KSUSY1+KFSM
04423         NRVDC=0
04424 C...NEUTRALINO DECAYS
04425         IF (KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
04426           NRVDC=4
04427           DO 300 I=1,NRVDC
04428             PBRAT(I)=0D0
04429             NMODES(I)=0
04430   300     CONTINUE
04431           CALL PYNAME(KFSUSY,CHTMP)
04432           CHD0=CHTMP//' '
04433           CHDC(1)=DNAME(3) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
04434           CHDC(2)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04435           CHDC(3)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04436           CHDC(4)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04437           KC=PYCOMP(KFSUSY)
04438           DO 310 J=1,MDCY(KC,3)
04439             IDC=J+MDCY(KC,2)-1
04440             ID1=IABS(KFDP(IDC,1))
04441             ID2=IABS(KFDP(IDC,2))
04442             ID3=IABS(KFDP(IDC,3))
04443             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
04444      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.11.OR
04445      &           .ID3.EQ.13.OR.ID3.EQ.15)) THEN
04446               PBRAT(1)=PBRAT(1)+BRAT(IDC)
04447               NMODES(1)=NMODES(1)+1
04448               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04449               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04450             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
04451      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
04452      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04453               PBRAT(2)=PBRAT(2)+BRAT(IDC)
04454               NMODES(2)=NMODES(2)+1
04455               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04456               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04457             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
04458      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
04459      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04460               PBRAT(3)=PBRAT(3)+BRAT(IDC)
04461               NMODES(3)=NMODES(3)+1
04462               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04463               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04464             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
04465      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
04466      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04467               PBRAT(4)=PBRAT(4)+BRAT(IDC)
04468               NMODES(4)=NMODES(4)+1
04469               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04470               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04471             ENDIF
04472   310     CONTINUE
04473         ENDIF
04474 C...CHARGINO DECAYS
04475         IF (KFSM.EQ.24.OR.KFSM.EQ.37) THEN
04476           NRVDC=5
04477           DO 320 I=1,NRVDC
04478             PBRAT(I)=0D0
04479             NMODES(I)=0
04480   320     CONTINUE
04481           CALL PYNAME(KFSUSY,CHTMP)
04482           CHD0=CHTMP//' '
04483           CHDC(1)=DNAME(3) // ' + ' // DNAME(3) // ' + ' // DNAME(2)
04484           CHDC(2)=DNAME(2) // ' + ' // DNAME(2) // ' + ' // DNAME(2)
04485           CHDC(3)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04486           CHDC(4)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04487           CHDC(5)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04488           KC=PYCOMP(KFSUSY)
04489           DO 330 J=1,MDCY(KC,3)
04490             IDC=J+MDCY(KC,2)-1
04491             ID1=IABS(KFDP(IDC,1))
04492             ID2=IABS(KFDP(IDC,2))
04493             ID3=IABS(KFDP(IDC,3))
04494             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
04495      &           .EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ.12.OR
04496      &           .ID3.EQ.14.OR.ID3.EQ.16)) THEN
04497               PBRAT(1)=PBRAT(1)+BRAT(IDC)
04498               NMODES(1)=NMODES(1)+1
04499               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04500               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04501             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
04502      &             .(ID2.EQ.12.OR.ID2.EQ.14.OR.ID2.EQ.16).AND.(ID3.EQ
04503      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
04504               PBRAT(1)=PBRAT(1)+BRAT(IDC)
04505               NMODES(1)=NMODES(1)+1
04506               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04507               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04508             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
04509      &             .(ID2.EQ.11.OR.ID2.EQ.13.OR.ID2.EQ.15).AND.(ID3.EQ
04510      &             .11.OR.ID3.EQ.13.OR.ID3.EQ.15)) THEN
04511               PBRAT(2)=PBRAT(2)+BRAT(IDC)
04512               NMODES(2)=NMODES(2)+1
04513               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04514               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04515             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
04516      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
04517      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
04518               PBRAT(3)=PBRAT(3)+BRAT(IDC)
04519               NMODES(3)=NMODES(3)+1
04520               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04521               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04522             ELSE IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND
04523      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
04524      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04525               PBRAT(3)=PBRAT(3)+BRAT(IDC)
04526               NMODES(3)=NMODES(3)+1
04527               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04528               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04529             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
04530      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
04531      &             .2.OR.ID3.EQ.4.OR.ID3.EQ.6)) THEN
04532               PBRAT(4)=PBRAT(4)+BRAT(IDC)
04533               NMODES(4)=NMODES(4)+1
04534               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04535               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04536             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
04537      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
04538      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04539               PBRAT(4)=PBRAT(4)+BRAT(IDC)
04540               NMODES(4)=NMODES(4)+1
04541               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04542               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04543             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
04544      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ
04545      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04546               PBRAT(5)=PBRAT(5)+BRAT(IDC)
04547               NMODES(5)=NMODES(5)+1
04548               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04549               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04550             ELSE IF ((ID1.EQ.1.OR.ID1.EQ.3.OR.ID1.EQ.5).AND
04551      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ
04552      &             .1.OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04553               PBRAT(5)=PBRAT(5)+BRAT(IDC)
04554               NMODES(5)=NMODES(5)+1
04555               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04556               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04557             ENDIF
04558   330     CONTINUE
04559         ENDIF
04560 C...GLUINO DECAYS
04561         IF (KFSM.EQ.21) THEN
04562           NRVDC=3
04563           DO 340 I=1,NRVDC
04564             PBRAT(I)=0D0
04565             NMODES(I)=0
04566   340     CONTINUE
04567           CALL PYNAME(KFSUSY,CHTMP)
04568           CHD0=CHTMP//' '
04569           CHDC(1)=DNAME(3) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04570           CHDC(2)=DNAME(2) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04571           CHDC(3)=DNAME(1) // ' + ' // DNAME(1) // ' + ' // DNAME(1)
04572           KC=PYCOMP(KFSUSY)
04573           DO 350 J=1,MDCY(KC,3)
04574             IDC=J+MDCY(KC,2)-1
04575             ID1=IABS(KFDP(IDC,1))
04576             ID2=IABS(KFDP(IDC,2))
04577             ID3=IABS(KFDP(IDC,3))
04578             IF ((ID1.EQ.12.OR.ID1.EQ.14.OR.ID1.EQ.16).AND.(ID2
04579      &           .EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1.OR
04580      &           .ID3.EQ.3.OR.ID3.EQ.5)) THEN
04581               PBRAT(1)=PBRAT(1)+BRAT(IDC)
04582               NMODES(1)=NMODES(1)+1
04583               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04584               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04585             ELSE IF ((ID1.EQ.11.OR.ID1.EQ.13.OR.ID1.EQ.15).AND
04586      &             .(ID2.EQ.2.OR.ID2.EQ.4.OR.ID2.EQ.6).AND.(ID3.EQ.1
04587      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04588               PBRAT(2)=PBRAT(2)+BRAT(IDC)
04589               NMODES(2)=NMODES(2)+1
04590               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04591               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04592             ELSE IF ((ID1.EQ.2.OR.ID1.EQ.4.OR.ID1.EQ.6).AND
04593      &             .(ID2.EQ.1.OR.ID2.EQ.3.OR.ID2.EQ.5).AND.(ID3.EQ.1
04594      &             .OR.ID3.EQ.3.OR.ID3.EQ.5)) THEN
04595               PBRAT(3)=PBRAT(3)+BRAT(IDC)
04596               NMODES(3)=NMODES(3)+1
04597               IF (BRAT(IDC).GT.0D0) NMODES(10)=NMODES(10)+1
04598               IF (BRAT(IDC).GT.EPS) NMODES(9)=NMODES(9)+1
04599             ENDIF
04600   350     CONTINUE
04601         ENDIF
04602  
04603         IF (NRVDC.NE.0) THEN
04604           DO 360 I=1,NRVDC
04605             WRITE (MSTU(11),8200) CHD0, CHDC(I), PBRAT(I), NMODES(I)
04606             NMODES(0)=NMODES(0)+NMODES(I)
04607   360     CONTINUE
04608         ENDIF
04609   370 CONTINUE
04610       WRITE (MSTU(11),8100) NMODES(0), NMODES(10), NMODES(9)
04611  
04612       IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
04613         WRITE (MSTU(11),8500)
04614         DO 400 IRV=1,3
04615           DO 390 JRV=1,3
04616             DO 380 KRV=1,3
04617               WRITE (MSTU(11),8700) IRV,JRV,KRV,RVLAM(IRV,JRV,KRV)
04618      &             ,RVLAMP(IRV,JRV,KRV),RVLAMB(IRV,JRV,KRV)
04619   380       CONTINUE
04620   390     CONTINUE
04621   400   CONTINUE
04622         WRITE (MSTU(11),8600)
04623       ENDIF
04624       ENDIF
04625  
04626 C...Formats for printouts.
04627  5000 FORMAT('1',9('*'),1X,'PYSTAT:  Statistics on Number of ',
04628      &'Events and Cross-sections',1X,9('*'))
04629  5100 FORMAT(/1X,78('=')/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',12X,
04630      &'Subprocess',12X,'I',6X,'Number of points',6X,'I',4X,'Sigma',3X,
04631      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',34('-'),'I',28('-'),
04632      &'I',4X,'(mb)',4X,'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,'I',1X,
04633      &'N:o',1X,'Type',25X,'I',4X,'Generated',9X,'Tried',1X,'I',12X,
04634      &'I'/1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/1X,'I',34X,'I',28X,
04635      &'I',12X,'I')
04636  5200 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I12,1X,I13,1X,'I',1X,1P,
04637      &D10.3,1X,'I')
04638  5300 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')/
04639      &1X,'I',34X,'I',28X,'I',12X,'I')
04640  5400 FORMAT(1X,'I',34X,'I',28X,'I',12X,'I'/1X,78('=')//
04641      &1X,'********* Total number of errors, excluding junctions =',
04642      &1X,I8,' *************'/
04643      &1X,'********* Total number of errors, including junctions =',
04644      &1X,I8,' *************'/
04645      &1X,'********* Total number of warnings =                   ',
04646      &1X,I8,' *************'/
04647      &1X,'********* Fraction of events that fail fragmentation ',
04648      &'cuts =',1X,F8.5,' *********'/)
04649  5500 FORMAT('1',27('*'),1X,'PYSTAT:  Decay Widths and Branching ',
04650      &'Ratios',1X,27('*'))
04651  5600 FORMAT(/1X,98('=')/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
04652      &1X,'I',5X,'Mother  -->  Branching/Decay Channel',8X,'I',1X,
04653      &'Width (GeV)',1X,'I',7X,'B.R.',1X,'I',1X,'Stat',1X,'I',2X,
04654      &'Eff. B.R.',1X,'I'/1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/
04655      &1X,98('='))
04656  5700 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,'I',1X,
04657      &I8,2X,A10,3X,'(m =',F10.3,')',2X,'-->',5X,'I',2X,1P,D10.3,0P,1X,
04658      &'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,1P,D10.3,0P,1X,'I')
04659  5800 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,15X,'I',2X,
04660      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
04661      &1P,D10.3,0P,1X,'I')
04662  5900 FORMAT(1X,'I',1X,I8,2X,A10,1X,'+',1X,A10,1X,'+',1X,A10,2X,'I',2X,
04663      &1P,D10.3,0P,1X,'I',1X,1P,D10.3,0P,1X,'I',1X,A4,1X,'I',1X,
04664      &1P,D10.3,0P,1X,'I')
04665  6000 FORMAT(1X,'I',49X,'I',13X,'I',12X,'I',6X,'I',12X,'I'/1X,98('='))
04666  6100 FORMAT('1',7('*'),1X,'PYSTAT: Allowed Incoming Partons/',
04667      &'Particles at Hard Interaction',1X,7('*'))
04668  6200 FORMAT(/1X,78('=')/1X,'I',38X,'I',37X,'I'/1X,'I',1X,
04669      &'Beam particle:',1X,A12,10X,'I',1X,'Target particle:',1X,A12,7X,
04670      &'I'/1X,'I',38X,'I',37X,'I'/1X,'I',1X,'Content',6X,'State',19X,
04671      &'I',1X,'Content',6X,'State',18X,'I'/1X,'I',38X,'I',37X,'I'/1X,
04672      &78('=')/1X,'I',38X,'I',37X,'I')
04673  6300 FORMAT(1X,'I',1X,A9,5X,A4,19X,'I',1X,A9,5X,A4,18X,'I')
04674  6400 FORMAT(1X,'I',38X,'I',37X,'I'/1X,78('='))
04675  6500 FORMAT('1',12('*'),1X,'PYSTAT: User-Defined Limits on ',
04676      &'Kinematical Variables',1X,12('*'))
04677  6600 FORMAT(/1X,78('=')/1X,'I',76X,'I')
04678  6700 FORMAT(1X,'I',16X,1P,D10.3,0P,1X,'<',1X,A,1X,'<',1X,1P,D10.3,0P,
04679      &16X,'I')
04680  6800 FORMAT(1X,'I',3X,1P,D10.3,0P,1X,'(',1P,D10.3,0P,')',1X,'<',1X,A,
04681      &1X,'<',1X,1P,D10.3,0P,16X,'I')
04682  6900 FORMAT(1X,'I',29X,A,1X,'=',1X,1P,D10.3,0P,16X,'I')
04683  7000 FORMAT(1X,'I',76X,'I'/1X,78('='))
04684  7100 FORMAT('1',12('*'),1X,'PYSTAT: Summary of Status Codes and ',
04685      &'Parameter Values',1X,12('*'))
04686  7200 FORMAT(/3X,'I',4X,'MSTP(I)',9X,'PARP(I)',20X,'I',4X,'MSTP(I)',9X,
04687      &'PARP(I)'/)
04688  7300 FORMAT(1X,I3,5X,I6,6X,1P,D10.3,0P,18X,I3,5X,I6,6X,1P,D10.3)
04689  7400 FORMAT('1',13('*'),1X,'PYSTAT: List of implemented processes',
04690      &1X,13('*'))
04691  7500 FORMAT(/1X,65('=')/1X,'I',34X,'I',28X,'I'/1X,'I',12X,
04692      &'Subprocess',12X,'I',1X,'ISET',2X,'KFPR(I,1)',2X,'KFPR(I,2)',1X,
04693      &'I'/1X,'I',34X,'I',28X,'I'/1X,65('=')/1X,'I',34X,'I',28X,'I')
04694  7600 FORMAT(1X,'I',1X,I3,1X,A28,1X,'I',1X,I4,1X,I10,1X,I10,1X,'I')
04695  7700 FORMAT(1X,'I',34X,'I',28X,'I'/1X,65('='))
04696  8000 FORMAT(1X/ 1X/
04697      &     17X,'Sums over R-Violating branching ratios',1X/ 1X
04698      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I'/1X,'I',4X
04699      &     ,'Mother  -->  Sum over final state flavours',4X,'I',2X
04700      &     ,'BR(sum)',2X,'I',2X,'N',2X,'I'/1X,'I',50X,'I',11X,'I',5X,'I'
04701      &     /1X,70('=')/1X,'I',50X,'I',11X,'I',5X,'I')
04702  8100 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I'/1X,70('=')/1X,'I',1X
04703      &     ,'Total number of R-Violating modes :',3X,I5,24X,'I'/
04704      &     1X,'I',1X,'Total number with non-vanishing BR :',2X,I5,24X
04705      &     ,'I'/1X,'I',1X,'Total number with BR > 0.001 :',8X,I5,24X,'I'
04706      &     /1X,70('='))
04707  8200 FORMAT(1X,'I',1X,A9,1X,'-->',1X,A24,11X,
04708      &     'I',2X,1P,D8.2,0P,1X,'I',2X,I2,1X,'I')
04709  8300 FORMAT(1X,'I',50X,'I',11X,'I',5X,'I')
04710  8500 FORMAT(1X/ 1X/
04711      &     1X,'R-Violating couplings',1X/ 1X /
04712      &     1X,55('=')/
04713      &     1X,'I',1X,'IJK',1X,'I',2X,'LAMBDA(IJK)',2X,'I',2X
04714      &     ,'LAMBDA''(IJK)',1X,'I',1X,"LAMBDA''(IJK)",1X,'I'/1X,'I',5X
04715      &     ,'I',15X,'I',15X,'I',15X,'I')
04716  8600 FORMAT(1X,55('='))
04717  8700 FORMAT(1X,'I',1X,I1,I1,I1,1X,'I',1X,1P,D13.3,0P,1X,'I',1X,1P
04718      &     ,D13.3,0P,1X,'I',1X,1P,D13.3,0P,1X,'I')
04719  
04720       RETURN
04721       END
04722  
04723 C*********************************************************************
04724  
04725 C...PYUPEV
04726 C...Administers the hard-process generation required for output to the
04727 C...Les Houches event record.
04728  
04729       SUBROUTINE PYUPEV
04730  
04731 C...Double precision and integer declarations.
04732       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
04733       IMPLICIT INTEGER(I-N)
04734       INTEGER PYK,PYCHGE,PYCOMP
04735  
04736 C...Commonblocks.
04737       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
04738       COMMON/PYCTAG/NCT,MCT(4000,2)
04739       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
04740       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
04741       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
04742       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
04743       COMMON/PYINT1/MINT(400),VINT(400)
04744       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
04745       COMMON/PYINT4/MWID(500),WIDS(500,5)
04746       SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,
04747      &/PYINT1/,/PYINT2/,/PYINT4/
04748  
04749 C...HEPEUP for output.
04750       INTEGER MAXNUP
04751       PARAMETER (MAXNUP=500)
04752       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
04753       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
04754       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
04755      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
04756      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
04757       SAVE /HEPEUP/
04758  
04759 C...Stop if no subprocesses on.
04760       IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN
04761         WRITE(MSTU(11),5100)
04762         STOP
04763       ENDIF
04764  
04765 C...Special flags for hard-process generation only.
04766       MSTP71=MSTP(71)
04767       MSTP(71)=0
04768       MST128=MSTP(128)
04769       MSTP(128)=1
04770  
04771 C...Initial values for some counters.
04772       N=0
04773       MINT(5)=MINT(5)+1
04774       MINT(7)=0
04775       MINT(8)=0
04776       MINT(30)=0
04777       MINT(83)=0
04778       MINT(84)=MSTP(126)
04779       MSTU(24)=0
04780       MSTU70=0
04781       MSTJ14=MSTJ(14)
04782 C...Normally, use K(I,4:5) colour info rather than /PYCTAG/.
04783       MINT(33)=0
04784  
04785 C...If variable energies: redo incoming kinematics and cross-section.
04786       MSTI(61)=0
04787       IF(MSTP(171).EQ.1) THEN
04788         CALL PYINKI(1)
04789         IF(MSTI(61).EQ.1) THEN
04790           MINT(5)=MINT(5)-1
04791           RETURN
04792         ENDIF
04793         IF(MINT(121).GT.1) CALL PYSAVE(3,1)
04794         CALL PYXTOT
04795       ENDIF
04796  
04797 C...Do not allow pileup events.
04798       MINT(82)=1
04799  
04800 C...Generate variables of hard scattering.
04801       MINT(51)=0
04802       MSTI(52)=0
04803   100 CONTINUE
04804       IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1
04805       MINT(31)=0
04806       MINT(51)=0
04807       MINT(57)=0
04808       CALL PYRAND
04809       IF(MSTI(61).EQ.1) THEN
04810         MINT(5)=MINT(5)-1
04811         RETURN
04812       ENDIF
04813       IF(MINT(51).EQ.2) RETURN
04814       ISUB=MINT(1)
04815  
04816       IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN
04817 C...Hard scattering (including low-pT):
04818 C...reconstruct kinematics and colour flow of hard scattering.
04819         MINT31=MINT(31)
04820   110   MINT(31)=MINT31
04821         MINT(51)=0
04822         CALL PYSCAT
04823         IF(MINT(51).EQ.1) GOTO 100
04824         IPU1=MINT(84)+1
04825         IPU2=MINT(84)+2
04826  
04827 C...Decay of final state resonances.
04828         MINT(32)=0
04829         IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10.AND.ISUB.NE.95)
04830      &  CALL PYRESD(0)
04831         IF(MINT(51).EQ.1) GOTO 100
04832         MINT(52)=N
04833  
04834 C...Longitudinal boost of hard scattering.
04835         BETAZ=(VINT(41)-VINT(42))/(VINT(41)+VINT(42))
04836         CALL PYROBO(MINT(84)+1,N,0D0,0D0,0D0,0D0,BETAZ)
04837  
04838       ELSEIF(ISUB.NE.99) THEN
04839 C...Diffractive and elastic scattering.
04840         CALL PYDIFF
04841  
04842       ELSE
04843 C...DIS scattering (photon flux external).
04844         CALL PYDISG
04845         IF(MINT(51).EQ.1) GOTO 100
04846       ENDIF
04847  
04848 C...Check that no odd resonance left undecayed.
04849       MINT(54)=N
04850       NFIX=N
04851       DO 120 I=MINT(84)+1,NFIX
04852         IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND.
04853      &  K(I,2).NE.22) THEN
04854           KCA=PYCOMP(K(I,2))
04855           IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN
04856             CALL PYRESD(I)
04857             IF(MINT(51).EQ.1) GOTO 100
04858           ENDIF
04859         ENDIF
04860   120 CONTINUE
04861  
04862 C...Boost hadronic subsystem to overall rest frame.
04863 C..(Only relevant when photon inside lepton beam.)
04864       IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA)
04865  
04866 C...Store event information and calculate Monte Carlo estimates of
04867 C...subprocess cross-sections.
04868   130 CALL PYDOCU
04869  
04870 C...Transform to the desired coordinate frame.
04871   140 CALL PYFRAM(MSTP(124))
04872       MSTU(70)=MSTU70
04873       PARU(21)=VINT(1)
04874  
04875 C...Restore special flags for hard-process generation only.
04876       MSTP(71)=MSTP71
04877       MSTP(128)=MST128
04878  
04879 C...Trace colour tags; convert to LHA style labels.
04880       NCT=100
04881       DO 150 I=MINT(84)+1,N
04882         MCT(I,1)=0
04883         MCT(I,2)=0
04884   150 CONTINUE
04885       DO 160 I=MINT(84)+1,N
04886         KQ=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
04887         IF(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
04888           IF(K(I,4).NE.0.AND.(KQ.EQ.1.OR.KQ.EQ.2).AND.MCT(I,1).EQ.0)
04889      &    THEN
04890             IMO=MOD(K(I,4)/MSTU(5),MSTU(5))
04891             IDA=MOD(K(I,4),MSTU(5))
04892             IF(IMO.NE.0.AND.MOD(K(IMO,5)/MSTU(5),MSTU(5)).EQ.I.AND.
04893      &      MCT(IMO,2).NE.0) THEN
04894               MCT(I,1)=MCT(IMO,2)
04895             ELSEIF(IMO.NE.0.AND.MOD(K(IMO,4),MSTU(5)).EQ.I.AND.
04896      &      MCT(IMO,1).NE.0) THEN
04897               MCT(I,1)=MCT(IMO,1)
04898             ELSEIF(IDA.NE.0.AND.MOD(K(IDA,5),MSTU(5)).EQ.I.AND.
04899      &      MCT(IDA,2).NE.0) THEN
04900               MCT(I,1)=MCT(IDA,2)
04901             ELSE
04902               NCT=NCT+1
04903               MCT(I,1)=NCT
04904             ENDIF
04905           ENDIF
04906           IF(K(I,5).NE.0.AND.(KQ.EQ.-1.OR.KQ.EQ.2).AND.MCT(I,2).EQ.0)
04907      &    THEN
04908             IMO=MOD(K(I,5)/MSTU(5),MSTU(5))
04909             IDA=MOD(K(I,5),MSTU(5))
04910             IF(IMO.NE.0.AND.MOD(K(IMO,4)/MSTU(5),MSTU(5)).EQ.I.AND.
04911      &      MCT(IMO,1).NE.0) THEN
04912               MCT(I,2)=MCT(IMO,1)
04913             ELSEIF(IMO.NE.0.AND.MOD(K(IMO,5),MSTU(5)).EQ.I.AND.
04914      &      MCT(IMO,2).NE.0) THEN
04915               MCT(I,2)=MCT(IMO,2)
04916             ELSEIF(IDA.NE.0.AND.MOD(K(IDA,4),MSTU(5)).EQ.I.AND.
04917      &      MCT(IDA,1).NE.0) THEN
04918               MCT(I,2)=MCT(IDA,1)
04919             ELSE
04920               NCT=NCT+1
04921               MCT(I,2)=NCT
04922             ENDIF
04923           ENDIF
04924         ENDIF
04925   160 CONTINUE
04926  
04927 C...Put event in HEPEUP commonblock.
04928       NUP=N-MINT(84)
04929       IDPRUP=MINT(1)
04930       XWGTUP=1D0
04931       SCALUP=VINT(53)
04932       AQEDUP=VINT(57)
04933       AQCDUP=VINT(58)
04934       DO 180 I=1,NUP
04935         IDUP(I)=K(I+MINT(84),2)
04936         IF(I.LE.2) THEN
04937           ISTUP(I)=-1
04938           MOTHUP(1,I)=0
04939           MOTHUP(2,I)=0
04940         ELSEIF(K(I+4,3).EQ.0) THEN
04941           ISTUP(I)=1
04942           MOTHUP(1,I)=1
04943           MOTHUP(2,I)=2
04944         ELSE
04945           ISTUP(I)=1
04946           MOTHUP(1,I)=K(I+MINT(84),3)-MINT(84)
04947           MOTHUP(2,I)=0
04948         ENDIF
04949         IF(I.GE.3.AND.K(I+MINT(84),3).GT.0)
04950      &  ISTUP(K(I+MINT(84),3)-MINT(84))=2
04951         ICOLUP(1,I)=MCT(I+MINT(84),1)
04952         ICOLUP(2,I)=MCT(I+MINT(84),2)
04953         DO 170 J=1,5
04954           PUP(J,I)=P(I+MINT(84),J)
04955   170   CONTINUE
04956         VTIMUP(I)=V(I,5)
04957         SPINUP(I)=9D0
04958   180 CONTINUE
04959  
04960 C...Optionally write out event to disk. Minimal size for time/spin fields.
04961       IF(MSTP(162).GT.0) THEN
04962         WRITE(MSTP(162),5200) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
04963         DO 190 I=1,NUP
04964           IF(VTIMUP(I).EQ.0D0) THEN
04965             WRITE(MSTP(162),5300) IDUP(I),ISTUP(I),MOTHUP(1,I),
04966      &      MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5),
04967      &      ' 0. 9.'
04968           ELSE
04969             WRITE(MSTP(162),5400) IDUP(I),ISTUP(I),MOTHUP(1,I),
04970      &      MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5),
04971      &      VTIMUP(I),' 9.'
04972           ENDIF
04973   190   CONTINUE
04974 
04975 C...Optional extra line with parton-density information.
04976         IF(MSTP(165).GE.1) WRITE(MSTP(162),5500) MSTI(15),MSTI(16),
04977      &  PARI(33),PARI(34),PARI(23),PARI(29),PARI(30) 
04978       ENDIF
04979  
04980 C...Error messages and other print formats.
04981  5100 FORMAT(1X,'Error: no subprocess switched on.'/
04982      &1X,'Execution stopped.')
04983  5200 FORMAT(1P,2I6,4E14.6)
04984  5300 FORMAT(1P,I8,5I5,5E18.10,A6)
04985  5400 FORMAT(1P,I8,5I5,5E18.10,E12.4,A3)
04986  5500 FORMAT(1P,'#pdf ',2I5,5E18.10)
04987  
04988       RETURN
04989       END
04990  
04991 C*********************************************************************
04992  
04993 C...PYUPIN
04994 C...Fills the HEPRUP commonblock with info on incoming beams and allowed
04995 C...processes, and optionally stores that information on file.
04996  
04997       SUBROUTINE PYUPIN
04998  
04999 C...Double precision and integer declarations.
05000       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
05001       IMPLICIT INTEGER(I-N)
05002  
05003 C...Commonblocks.
05004       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
05005       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
05006       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
05007       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
05008       SAVE /PYJETS/,/PYSUBS/,/PYPARS/,/PYINT5/
05009  
05010 C...User process initialization commonblock.
05011       INTEGER MAXPUP
05012       PARAMETER (MAXPUP=100)
05013       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
05014       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
05015       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
05016      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
05017      &LPRUP(MAXPUP)
05018       SAVE /HEPRUP/
05019  
05020 C...Store info on incoming beams.
05021       IDBMUP(1)=K(1,2)
05022       IDBMUP(2)=K(2,2)
05023       EBMUP(1)=P(1,4)
05024       EBMUP(2)=P(2,4)
05025       PDFGUP(1)=0
05026       PDFGUP(2)=0
05027       PDFSUP(1)=MSTP(51)
05028       PDFSUP(2)=MSTP(51)
05029  
05030 C...Event weighting strategy.
05031       IDWTUP=3
05032  
05033 C...Info on individual processes.
05034       NPRUP=0
05035       DO 100 ISUB=1,500
05036         IF(MSUB(ISUB).EQ.1) THEN
05037           NPRUP=NPRUP+1
05038           XSECUP(NPRUP)=1D9*XSEC(ISUB,3)
05039           XERRUP(NPRUP)=XSECUP(NPRUP)/SQRT(MAX(1D0,DBLE(NGEN(ISUB,3))))
05040           XMAXUP(NPRUP)=1D0
05041           LPRUP(NPRUP)=ISUB
05042         ENDIF
05043   100 CONTINUE
05044  
05045 C...Write info to file.
05046       IF(MSTP(161).GT.0) THEN
05047         WRITE(MSTP(161),5100) IDBMUP(1),IDBMUP(2),EBMUP(1),EBMUP(2),
05048      &  PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
05049         DO 110 IPR=1,NPRUP
05050           WRITE(MSTP(161),5200) XSECUP(IPR),XERRUP(IPR),XMAXUP(IPR),
05051      &    LPRUP(IPR)
05052   110   CONTINUE
05053       ENDIF
05054  
05055 C...Formats for printout.
05056  5100 FORMAT(1P,2I8,2E14.6,6I6)
05057  5200 FORMAT(1P,3E14.6,I6)
05058  
05059       RETURN
05060       END
05061 
05062 
05063 C*********************************************************************
05064 
05065 C...Combine the two old-style Pythia initialization and event files
05066 C...into a single Les Houches Event File.
05067 
05068       SUBROUTINE PYLHEF
05069  
05070 C...Double precision and integer declarations.
05071       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
05072       IMPLICIT INTEGER(I-N)
05073  
05074 C...PYTHIA commonblock: only used to provide read/write units and version.
05075       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
05076       SAVE /PYPARS/
05077  
05078 C...User process initialization commonblock.
05079       INTEGER MAXPUP
05080       PARAMETER (MAXPUP=100)
05081       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
05082       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
05083       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
05084      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
05085      &LPRUP(MAXPUP)
05086       SAVE /HEPRUP/
05087  
05088 C...User process event common block.
05089       INTEGER MAXNUP
05090       PARAMETER (MAXNUP=500)
05091       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
05092       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
05093       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
05094      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
05095      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
05096       SAVE /HEPEUP/
05097 
05098 C...Lines to read in assumed never longer than 200 characters. 
05099       PARAMETER (MAXLEN=200)
05100       CHARACTER*(MAXLEN) STRING
05101 
05102 C...Format for reading lines.
05103       CHARACTER*6 STRFMT
05104       STRFMT='(A000)'
05105       WRITE(STRFMT(3:5),'(I3)') MAXLEN
05106 
05107 C...Rewind initialization and event files. 
05108       REWIND MSTP(161)
05109       REWIND MSTP(162)
05110 
05111 C...Write header info.
05112       WRITE(MSTP(163),'(A)') '<LesHouchesEvents version="1.0">'
05113       WRITE(MSTP(163),'(A)') '<!--'
05114       WRITE(MSTP(163),'(A,I1,A1,I3)') 'File generated with PYTHIA ',
05115      &MSTP(181),'.',MSTP(182)
05116       WRITE(MSTP(163),'(A)') '-->'       
05117 
05118 C...Read first line of initialization info and get number of processes.
05119       READ(MSTP(161),'(A)',END=400,ERR=400) STRING                  
05120       READ(STRING,*,ERR=400) IDBMUP(1),IDBMUP(2),EBMUP(1),
05121      &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
05122 
05123 C...Copy initialization lines, omitting trailing blanks. 
05124 C...Embed in <init> ... </init> block.
05125       WRITE(MSTP(163),'(A)') '<init>' 
05126       DO 140 IPR=0,NPRUP
05127         IF(IPR.GT.0) READ(MSTP(161),'(A)',END=400,ERR=400) STRING
05128         LEN=MAXLEN+1  
05129   120   LEN=LEN-1
05130         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 120
05131         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
05132   140 CONTINUE
05133       WRITE(MSTP(163),'(A)') '</init>' 
05134 
05135 C...Begin event loop. Read first line of event info or already done.
05136       READ(MSTP(162),'(A)',END=320,ERR=400) STRING    
05137   200 CONTINUE
05138 
05139 C...Look at first line to know number of particles in event.
05140       READ(STRING,*,ERR=400) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
05141 
05142 C...Begin an <event> block. Copy event lines, omitting trailing blanks. 
05143       WRITE(MSTP(163),'(A)') '<event>' 
05144       DO 240 I=0,NUP
05145         IF(I.GT.0) READ(MSTP(162),'(A)',END=400,ERR=400) STRING
05146         LEN=MAXLEN+1  
05147   220   LEN=LEN-1
05148         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 220
05149         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
05150   240 CONTINUE
05151               
05152 C...Copy trailing comment lines - with a # in the first column - as is.
05153   260 READ(MSTP(162),'(A)',END=300,ERR=400) STRING    
05154       IF(STRING(1:1).EQ.'#') THEN
05155         LEN=MAXLEN+1  
05156   280   LEN=LEN-1
05157         IF(LEN.GT.1.AND.STRING(LEN:LEN).EQ.' ') GOTO 280
05158         WRITE(MSTP(163),'(A)',ERR=400) STRING(1:LEN)
05159         GOTO 260
05160       ENDIF
05161 
05162 C..End the <event> block. Loop back to look for next event.
05163       WRITE(MSTP(163),'(A)') '</event>' 
05164       GOTO 200
05165 
05166 C...Successfully reached end of event loop: write closing tag
05167 C...and remove temporary intermediate files (unless asked not to).
05168   300 WRITE(MSTP(163),'(A)') '</event>' 
05169   320 WRITE(MSTP(163),'(A)') '</LesHouchesEvents>' 
05170       IF(MSTP(164).EQ.1) RETURN
05171       CLOSE(MSTP(161),ERR=400,STATUS='DELETE')
05172       CLOSE(MSTP(162),ERR=400,STATUS='DELETE')
05173       RETURN
05174 
05175 C...Error exit.
05176   400 WRITE(*,*) ' PYLHEF file joining failed!'
05177 
05178       RETURN
05179       END
05180  
05181 C*********************************************************************
05182  
05183 C...PYINRE
05184 C...Calculates full and effective widths of gauge bosons, stores
05185 C...masses and widths, rescales coefficients to be used for
05186 C...resonance production generation.
05187  
05188       SUBROUTINE PYINRE
05189  
05190 C...Double precision and integer declarations.
05191       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
05192       IMPLICIT INTEGER(I-N)
05193       INTEGER PYK,PYCHGE,PYCOMP
05194 C...Parameter statement to help give large particle numbers.
05195       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
05196      &KEXCIT=4000000,KDIMEN=5000000)
05197 C...Commonblocks.
05198       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
05199       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
05200       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
05201       COMMON/PYDAT4/CHAF(500,2)
05202       CHARACTER CHAF*16
05203       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
05204       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
05205       COMMON/PYINT1/MINT(400),VINT(400)
05206       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
05207       COMMON/PYINT4/MWID(500),WIDS(500,5)
05208       COMMON/PYINT6/PROC(0:500)
05209       CHARACTER PROC*28
05210       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
05211       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYSUBS/,/PYPARS/,
05212      &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT6/,/PYMSSM/
05213 C...Local arrays and data.
05214       DIMENSION WDTP(0:400),WDTE(0:400,0:5),WDTPM(0:400),
05215      &WDTEM(0:400,0:5),KCORD(500),PMORD(500)
05216  
05217 C...Born level couplings in MSSM Higgs doublet sector.
05218       XW=PARU(102)
05219       XWV=XW
05220       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
05221       XW1=1D0-XW
05222       IF(MSTP(4).EQ.2) THEN
05223         TANBE=PARU(141)
05224         RATBE=((1D0-TANBE**2)/(1D0+TANBE**2))**2
05225         SQMZ=PMAS(23,1)**2
05226         SQMW=PMAS(24,1)**2
05227         SQMH=PMAS(25,1)**2
05228         SQMA=SQMH*(SQMZ-SQMH)/(SQMZ*RATBE-SQMH)
05229         SQMHP=0.5D0*(SQMA+SQMZ+SQRT((SQMA+SQMZ)**2-4D0*SQMA*SQMZ*RATBE))
05230         SQMHC=SQMA+SQMW
05231         IF(SQMH.GE.SQMZ.OR.MIN(SQMA,SQMHP,SQMHC).LE.0D0) THEN
05232           WRITE(MSTU(11),5000)
05233           CALL PYSTOP(101)
05234         ENDIF
05235         PMAS(35,1)=SQRT(SQMHP)
05236         PMAS(36,1)=SQRT(SQMA)
05237         PMAS(37,1)=SQRT(SQMHC)
05238         ALSU=0.5D0*ATAN(2D0*TANBE*(SQMA+SQMZ)/((1D0-TANBE**2)*
05239      &  (SQMA-SQMZ)))
05240         BESU=ATAN(TANBE)
05241         PARU(142)=1D0
05242         PARU(143)=1D0
05243         PARU(161)=-SIN(ALSU)/COS(BESU)
05244         PARU(162)=COS(ALSU)/SIN(BESU)
05245         PARU(163)=PARU(161)
05246         PARU(164)=SIN(BESU-ALSU)
05247         PARU(165)=PARU(164)
05248         PARU(168)=SIN(BESU-ALSU)+0.5D0*COS(2D0*BESU)*SIN(BESU+ALSU)/XW
05249         PARU(171)=COS(ALSU)/COS(BESU)
05250         PARU(172)=SIN(ALSU)/SIN(BESU)
05251         PARU(173)=PARU(171)
05252         PARU(174)=COS(BESU-ALSU)
05253         PARU(175)=PARU(174)
05254         PARU(176)=COS(2D0*ALSU)*COS(BESU+ALSU)-2D0*SIN(2D0*ALSU)*
05255      &  SIN(BESU+ALSU)
05256         PARU(177)=COS(2D0*BESU)*COS(BESU+ALSU)
05257         PARU(178)=COS(BESU-ALSU)-0.5D0*COS(2D0*BESU)*COS(BESU+ALSU)/XW
05258         PARU(181)=TANBE
05259         PARU(182)=1D0/TANBE
05260         PARU(183)=PARU(181)
05261         PARU(184)=0D0
05262         PARU(185)=PARU(184)
05263         PARU(186)=COS(BESU-ALSU)
05264         PARU(187)=SIN(BESU-ALSU)
05265         PARU(188)=PARU(186)
05266         PARU(189)=PARU(187)
05267         PARU(190)=0D0
05268         PARU(195)=COS(BESU-ALSU)
05269       ENDIF
05270  
05271 C...Reset effective widths of gauge bosons.
05272       DO 110 I=1,500
05273         DO 100 J=1,5
05274           WIDS(I,J)=1D0
05275   100   CONTINUE
05276   110 CONTINUE
05277  
05278 C...Order resonances by increasing mass (except Z0 and W+/-).
05279       NRES=0
05280       DO 140 KC=1,500
05281         KF=KCHG(KC,4)
05282         IF(KF.EQ.0) GOTO 140
05283         IF(MWID(KC).EQ.0) GOTO 140
05284         IF(KC.EQ.7.OR.KC.EQ.8.OR.KC.EQ.17.OR.KC.EQ.18) THEN
05285           IF(MSTP(1).LE.3) GOTO 140
05286         ENDIF
05287         IF(KF/KSUSY1.EQ.1.OR.KF/KSUSY1.EQ.2) THEN
05288           IF(IMSS(1).LE.0) GOTO 140
05289         ENDIF
05290         NRES=NRES+1
05291         PMRES=PMAS(KC,1)
05292         IF(KC.EQ.23.OR.KC.EQ.24) PMRES=0D0
05293         DO 120 I1=NRES-1,1,-1
05294           IF(PMRES.GE.PMORD(I1)) GOTO 130
05295           KCORD(I1+1)=KCORD(I1)
05296           PMORD(I1+1)=PMORD(I1)
05297   120   CONTINUE
05298   130   KCORD(I1+1)=KC
05299         PMORD(I1+1)=PMRES
05300   140 CONTINUE
05301  
05302 C...Loop over possible resonances.
05303       DO 180 I=1,NRES
05304         KC=KCORD(I)
05305         KF=KCHG(KC,4)
05306  
05307 C...Check that no fourth generation channels on by mistake.
05308         IF(MSTP(1).LE.3) THEN
05309           DO 150 J=1,MDCY(KC,3)
05310             IDC=J+MDCY(KC,2)-1
05311             KFA1=IABS(KFDP(IDC,1))
05312             KFA2=IABS(KFDP(IDC,2))
05313             IF(KFA1.EQ.7.OR.KFA1.EQ.8.OR.KFA1.EQ.17.OR.KFA1.EQ.18.OR.
05314      &      KFA2.EQ.7.OR.KFA2.EQ.8.OR.KFA2.EQ.17.OR.KFA2.EQ.18)
05315      &      MDME(IDC,1)=-1
05316   150     CONTINUE
05317         ENDIF
05318  
05319 C...Check that no supersymmetric channels on by mistake.
05320         IF(IMSS(1).LE.0) THEN
05321           DO 160 J=1,MDCY(KC,3)
05322             IDC=J+MDCY(KC,2)-1
05323             KFA1S=IABS(KFDP(IDC,1))/KSUSY1
05324             KFA2S=IABS(KFDP(IDC,2))/KSUSY1
05325             IF(KFA1S.EQ.1.OR.KFA1S.EQ.2.OR.KFA2S.EQ.1.OR.KFA2S.EQ.2)
05326      &      MDME(IDC,1)=-1
05327   160     CONTINUE
05328         ENDIF
05329  
05330 C...Find mass and evaluate width.
05331         PMR=PMAS(KC,1)
05332         IF(KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) MINT(62)=1
05333         IF(MWID(KC).EQ.3) MINT(63)=1
05334         CALL PYWIDT(KF,PMR**2,WDTP,WDTE)
05335         MINT(51)=0
05336  
05337 C...Evaluate suppression factors due to non-simulated channels.
05338         IF(KCHG(KC,3).EQ.0) THEN
05339           WDTP0I=0D0
05340           IF(WDTP(0).GT.0D0) WDTP0I=1D0/WDTP(0)
05341           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))**2+
05342      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
05343      &    2D0*WDTE(0,4)*WDTE(0,5))*WDTP0I**2
05344           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*WDTP0I
05345           WIDS(KC,3)=0D0
05346           WIDS(KC,4)=0D0
05347           WIDS(KC,5)=0D0
05348         ELSE
05349           IF(MWID(KC).EQ.3) MINT(63)=1
05350           CALL PYWIDT(-KF,PMR**2,WDTPM,WDTEM)
05351           MINT(51)=0
05352           WDTP0I=0D0
05353           IF(WDTP(0).GT.0D0) WDTP0I=1D0/WDTP(0)
05354           WIDS(KC,1)=((WDTE(0,1)+WDTE(0,2))*(WDTEM(0,1)+WDTEM(0,3))+
05355      &    (WDTE(0,1)+WDTE(0,2))*(WDTEM(0,4)+WDTEM(0,5))+
05356      &    (WDTE(0,4)+WDTE(0,5))*(WDTEM(0,1)+WDTEM(0,3))+
05357      &    WDTE(0,4)*WDTEM(0,5)+WDTE(0,5)*WDTEM(0,4))*WDTP0I**2
05358           WIDS(KC,2)=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*WDTP0I
05359           WIDS(KC,3)=(WDTEM(0,1)+WDTEM(0,3)+WDTEM(0,4))*WDTP0I
05360           WIDS(KC,4)=((WDTE(0,1)+WDTE(0,2))**2+
05361      &    2D0*(WDTE(0,1)+WDTE(0,2))*(WDTE(0,4)+WDTE(0,5))+
05362      &    2D0*WDTE(0,4)*WDTE(0,5))*WDTP0I**2
05363           WIDS(KC,5)=((WDTEM(0,1)+WDTEM(0,3))**2+
05364      &    2D0*(WDTEM(0,1)+WDTEM(0,3))*(WDTEM(0,4)+WDTEM(0,5))+
05365      &    2D0*WDTEM(0,4)*WDTEM(0,5))*WDTP0I**2
05366         ENDIF
05367  
05368 C...Set resonance widths and branching ratios;
05369 C...also on/off switch for decays.
05370         IF(MWID(KC).EQ.1.OR.MWID(KC).EQ.3) THEN
05371           PMAS(KC,2)=WDTP(0)
05372           PMAS(KC,3)=MIN(0.9D0*PMAS(KC,1),10D0*PMAS(KC,2))
05373           IF(MSTP(41).EQ.0.OR.MSTP(41).EQ.1) MDCY(KC,1)=MSTP(41)
05374           DO 170 J=1,MDCY(KC,3)
05375             IDC=J+MDCY(KC,2)-1
05376             BRAT(IDC)=0D0
05377             IF(WDTP(0).GT.0D0) BRAT(IDC)=WDTP(J)/WDTP(0)
05378   170     CONTINUE
05379         ENDIF
05380   180 CONTINUE
05381  
05382 C...Flavours of leptoquark: redefine charge and name.
05383       KFLQQ=KFDP(MDCY(42,2),1)
05384       KFLQL=KFDP(MDCY(42,2),2)
05385       KCHG(42,1)=KCHG(PYCOMP(KFLQQ),1)*ISIGN(1,KFLQQ)+
05386      &KCHG(PYCOMP(KFLQL),1)*ISIGN(1,KFLQL)
05387       LL=1
05388       IF(IABS(KFLQL).EQ.13) LL=2
05389       IF(IABS(KFLQL).EQ.15) LL=3
05390       CHAF(42,1)='LQ_'//CHAF(IABS(KFLQQ),1)(1:1)//
05391      &CHAF(IABS(KFLQL),1)(1:LL)//' '
05392       CHAF(42,2)=CHAF(42,2)(1:4+LL)//'bar '
05393  
05394 C...Special cases in treatment of gamma*/Z0: redefine process name.
05395       IF(MSTP(43).EQ.1) THEN
05396         PROC(1)='f + fbar -> gamma*'
05397         PROC(15)='f + fbar -> g + gamma*'
05398         PROC(19)='f + fbar -> gamma + gamma*'
05399         PROC(30)='f + g -> f + gamma*'
05400         PROC(35)='f + gamma -> f + gamma*'
05401       ELSEIF(MSTP(43).EQ.2) THEN
05402         PROC(1)='f + fbar -> Z0'
05403         PROC(15)='f + fbar -> g + Z0'
05404         PROC(19)='f + fbar -> gamma + Z0'
05405         PROC(30)='f + g -> f + Z0'
05406         PROC(35)='f + gamma -> f + Z0'
05407       ELSEIF(MSTP(43).EQ.3) THEN
05408         PROC(1)='f + fbar -> gamma*/Z0'
05409         PROC(15)='f + fbar -> g + gamma*/Z0'
05410         PROC(19)='f+ fbar -> gamma + gamma*/Z0'
05411         PROC(30)='f + g -> f + gamma*/Z0'
05412         PROC(35)='f + gamma -> f + gamma*/Z0'
05413       ENDIF
05414  
05415 C...Special cases in treatment of gamma*/Z0/Z'0: redefine process name.
05416       IF(MSTP(44).EQ.1) THEN
05417         PROC(141)='f + fbar -> gamma*'
05418       ELSEIF(MSTP(44).EQ.2) THEN
05419         PROC(141)='f + fbar -> Z0'
05420       ELSEIF(MSTP(44).EQ.3) THEN
05421         PROC(141)='f + fbar -> Z''0'
05422       ELSEIF(MSTP(44).EQ.4) THEN
05423         PROC(141)='f + fbar -> gamma*/Z0'
05424       ELSEIF(MSTP(44).EQ.5) THEN
05425         PROC(141)='f + fbar -> gamma*/Z''0'
05426       ELSEIF(MSTP(44).EQ.6) THEN
05427         PROC(141)='f + fbar -> Z0/Z''0'
05428       ELSEIF(MSTP(44).EQ.7) THEN
05429         PROC(141)='f + fbar -> gamma*/Z0/Z''0'
05430       ENDIF
05431  
05432 C...Special cases in treatment of WW -> WW: redefine process name.
05433       IF(MSTP(45).EQ.1) THEN
05434         PROC(77)='W+ + W+ -> W+ + W+'
05435       ELSEIF(MSTP(45).EQ.2) THEN
05436         PROC(77)='W+ + W- -> W+ + W-'
05437       ELSEIF(MSTP(45).EQ.3) THEN
05438         PROC(77)='W+/- + W+/- -> W+/- + W+/-'
05439       ENDIF
05440  
05441 C...Format for error information.
05442  5000 FORMAT(1X,'Error: unphysical input tan^2(beta) and m_H ',
05443      &'combination'/1X,'Execution stopped!')
05444  
05445       RETURN
05446       END
05447  
05448 C*********************************************************************
05449  
05450 C...PYINBM
05451 C...Identifies the two incoming particles and the choice of frame.
05452  
05453        SUBROUTINE PYINBM(CHFRAM,CHBEAM,CHTARG,WIN)
05454  
05455 C...Double precision and integer declarations.
05456       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
05457       IMPLICIT INTEGER(I-N)
05458       INTEGER PYK,PYCHGE,PYCOMP
05459  
05460 C...User process initialization commonblock.
05461       INTEGER MAXPUP
05462       PARAMETER (MAXPUP=100)
05463       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
05464       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
05465       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
05466      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
05467      &LPRUP(MAXPUP)
05468       SAVE /HEPRUP/
05469  
05470 C...Commonblocks.
05471       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
05472       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
05473       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
05474       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
05475       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
05476       COMMON/PYINT1/MINT(400),VINT(400)
05477       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
05478  
05479 C...Local arrays, character variables and data.
05480       CHARACTER CHFRAM*12,CHBEAM*12,CHTARG*12,CHCOM(3)*12,CHALP(2)*26,
05481      &CHIDNT(3)*12,CHTEMP*12,CHCDE(39)*12,CHINIT*76,CHNAME*16
05482       DIMENSION LEN(3),KCDE(39),PM(2)
05483       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
05484      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
05485       DATA CHCDE/    'e-          ','e+          ','nu_e        ',
05486      &'nu_ebar     ','mu-         ','mu+         ','nu_mu       ',
05487      &'nu_mubar    ','tau-        ','tau+        ','nu_tau      ',
05488      &'nu_taubar   ','pi+         ','pi-         ','n0          ',
05489      &'nbar0       ','p+          ','pbar-       ','gamma       ',
05490      &'lambda0     ','sigma-      ','sigma0      ','sigma+      ',
05491      &'xi-         ','xi0         ','omega-      ','pi0         ',
05492      &'reggeon     ','pomeron     ','gamma/e-    ','gamma/e+    ',
05493      &'gamma/mu-   ','gamma/mu+   ','gamma/tau-  ','gamma/tau+  ',
05494      &'k+          ','k-          ','ks0         ','kl0         '/
05495       DATA KCDE/11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,
05496      &211,-211,2112,-2112,2212,-2212,22,3122,3112,3212,3222,
05497      &3312,3322,3334,111,110,990,6*22,321,-321,310,130/
05498  
05499 C...Store initial energy. Default frame.
05500       VINT(290)=WIN
05501       MINT(111)=0
05502  
05503 C...Special user process initialization; convert to normal input.
05504       IF(CHFRAM(1:1).EQ.'u'.OR.CHFRAM(1:1).EQ.'U') THEN
05505         MINT(111)=11
05506         IF(PDFGUP(1).EQ.-9.OR.PDFGUP(2).EQ.-9) MINT(111)=12
05507         CALL PYNAME(IDBMUP(1),CHNAME)
05508         CHBEAM=CHNAME(1:12)
05509         CALL PYNAME(IDBMUP(2),CHNAME)
05510         CHTARG=CHNAME(1:12)
05511       ENDIF
05512  
05513 C...Convert character variables to lowercase and find their length.
05514       CHCOM(1)=CHFRAM
05515       CHCOM(2)=CHBEAM
05516       CHCOM(3)=CHTARG
05517       DO 130 I=1,3
05518         LEN(I)=12
05519         DO 110 LL=12,1,-1
05520           IF(LEN(I).EQ.LL.AND.CHCOM(I)(LL:LL).EQ.' ') LEN(I)=LL-1
05521           DO 100 LA=1,26
05522             IF(CHCOM(I)(LL:LL).EQ.CHALP(2)(LA:LA)) CHCOM(I)(LL:LL)=
05523      &      CHALP(1)(LA:LA)
05524   100     CONTINUE
05525   110   CONTINUE
05526         CHIDNT(I)=CHCOM(I)
05527  
05528 C...Fix up bar, underscore and charge in particle name (if needed).
05529         DO 120 LL=1,10
05530           IF(CHIDNT(I)(LL:LL).EQ.'~') THEN
05531             CHTEMP=CHIDNT(I)
05532             CHIDNT(I)=CHTEMP(1:LL-1)//'bar'//CHTEMP(LL+1:10)//'  '
05533           ENDIF
05534   120   CONTINUE
05535         IF(CHIDNT(I)(1:2).EQ.'nu'.AND.CHIDNT(I)(3:3).NE.'_') THEN
05536           CHTEMP=CHIDNT(I)
05537           CHIDNT(I)='nu_'//CHTEMP(3:7)
05538         ELSEIF(CHIDNT(I)(1:2).EQ.'n ') THEN
05539           CHIDNT(I)(1:3)='n0 '
05540         ELSEIF(CHIDNT(I)(1:4).EQ.'nbar') THEN
05541           CHIDNT(I)(1:5)='nbar0'
05542         ELSEIF(CHIDNT(I)(1:2).EQ.'p ') THEN
05543           CHIDNT(I)(1:3)='p+ '
05544         ELSEIF(CHIDNT(I)(1:4).EQ.'pbar'.OR.
05545      &    CHIDNT(I)(1:2).EQ.'p-') THEN
05546           CHIDNT(I)(1:5)='pbar-'
05547         ELSEIF(CHIDNT(I)(1:6).EQ.'lambda') THEN
05548           CHIDNT(I)(7:7)='0'
05549         ELSEIF(CHIDNT(I)(1:3).EQ.'reg') THEN
05550           CHIDNT(I)(1:7)='reggeon'
05551         ELSEIF(CHIDNT(I)(1:3).EQ.'pom') THEN
05552           CHIDNT(I)(1:7)='pomeron'
05553         ENDIF
05554   130 CONTINUE
05555  
05556 C...Identify free initialization.
05557       IF(CHCOM(1)(1:2).EQ.'no') THEN
05558         MINT(65)=1
05559         RETURN
05560       ENDIF
05561  
05562 C...Identify incoming beam and target particles.
05563       DO 160 I=1,2
05564         DO 140 J=1,39
05565           IF(CHIDNT(I+1).EQ.CHCDE(J)) MINT(10+I)=KCDE(J)
05566   140   CONTINUE
05567         PM(I)=PYMASS(MINT(10+I))
05568         VINT(2+I)=PM(I)
05569         MINT(140+I)=0
05570         IF(MINT(10+I).EQ.22.AND.CHIDNT(I+1)(6:6).EQ.'/') THEN
05571           CHTEMP=CHIDNT(I+1)(7:12)//' '
05572           DO 150 J=1,12
05573             IF(CHTEMP.EQ.CHCDE(J)) MINT(140+I)=KCDE(J)
05574   150     CONTINUE
05575           PM(I)=PYMASS(MINT(140+I))
05576           VINT(302+I)=PM(I)
05577         ENDIF
05578   160 CONTINUE
05579       IF(MINT(11).EQ.0) WRITE(MSTU(11),5000) CHBEAM(1:LEN(2))
05580       IF(MINT(12).EQ.0) WRITE(MSTU(11),5100) CHTARG(1:LEN(3))
05581       IF(MINT(11).EQ.0.OR.MINT(12).EQ.0) CALL PYSTOP(7)
05582  
05583 C...Identify choice of frame and input energies.
05584       CHINIT=' '
05585  
05586 C...Events defined in the CM frame.
05587       IF(CHCOM(1)(1:2).EQ.'cm') THEN
05588         MINT(111)=1
05589         S=WIN**2
05590         IF(MSTP(122).GE.1) THEN
05591           IF(CHCOM(2)(1:1).NE.'e') THEN
05592             LOFFS=(31-(LEN(2)+LEN(3)))/2
05593             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for a '//
05594      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
05595      &      ' collider'//' '
05596           ELSE
05597             LOFFS=(30-(LEN(2)+LEN(3)))/2
05598             CHINIT(LOFFS+1:76)='PYTHIA will be initialized for an '//
05599      &      CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
05600      &      ' collider'//' '
05601           ENDIF
05602           WRITE(MSTU(11),5200) CHINIT
05603           WRITE(MSTU(11),5300) WIN
05604         ENDIF
05605  
05606 C...Events defined in fixed target frame.
05607       ELSEIF(CHCOM(1)(1:3).EQ.'fix') THEN
05608         MINT(111)=2
05609         S=PM(1)**2+PM(2)**2+2D0*PM(2)*SQRT(PM(1)**2+WIN**2)
05610         IF(MSTP(122).GE.1) THEN
05611           LOFFS=(29-(LEN(2)+LEN(3)))/2
05612           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
05613      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
05614      &    ' fixed target'//' '
05615           WRITE(MSTU(11),5200) CHINIT
05616           WRITE(MSTU(11),5400) WIN
05617           WRITE(MSTU(11),5500) SQRT(S)
05618         ENDIF
05619  
05620 C...Frame defined by user three-vectors.
05621       ELSEIF(CHCOM(1)(1:1).EQ.'3') THEN
05622         MINT(111)=3
05623         P(1,5)=PM(1)
05624         P(2,5)=PM(2)
05625         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
05626         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
05627         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
05628      &  (P(1,3)+P(2,3))**2
05629         IF(MSTP(122).GE.1) THEN
05630           LOFFS=(22-(LEN(2)+LEN(3)))/2
05631           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
05632      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
05633      &    ' user configuration'//' '
05634           WRITE(MSTU(11),5200) CHINIT
05635           WRITE(MSTU(11),5600)
05636           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
05637           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
05638           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
05639         ENDIF
05640  
05641 C...Frame defined by user four-vectors.
05642       ELSEIF(CHCOM(1)(1:1).EQ.'4') THEN
05643         MINT(111)=4
05644         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
05645         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
05646         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
05647         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
05648         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
05649      &  (P(1,3)+P(2,3))**2
05650         IF(MSTP(122).GE.1) THEN
05651           LOFFS=(22-(LEN(2)+LEN(3)))/2
05652           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
05653      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
05654      &    ' user configuration'//' '
05655           WRITE(MSTU(11),5200) CHINIT
05656           WRITE(MSTU(11),5600)
05657           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
05658           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
05659           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
05660         ENDIF
05661  
05662 C...Frame defined by user five-vectors.
05663       ELSEIF(CHCOM(1)(1:1).EQ.'5') THEN
05664         MINT(111)=5
05665         S=(P(1,4)+P(2,4))**2-(P(1,1)+P(2,1))**2-(P(1,2)+P(2,2))**2-
05666      &  (P(1,3)+P(2,3))**2
05667         IF(MSTP(122).GE.1) THEN
05668           LOFFS=(22-(LEN(2)+LEN(3)))/2
05669           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
05670      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
05671      &    ' user configuration'//' '
05672           WRITE(MSTU(11),5200) CHINIT
05673           WRITE(MSTU(11),5600)
05674           WRITE(MSTU(11),5700) CHCOM(2),P(1,1),P(1,2),P(1,3),P(1,4)
05675           WRITE(MSTU(11),5700) CHCOM(3),P(2,1),P(2,2),P(2,3),P(2,4)
05676           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
05677         ENDIF
05678  
05679 C...Frame defined by HEPRUP common block.
05680       ELSEIF(MINT(111).GE.11) THEN
05681         S=(EBMUP(1)+EBMUP(2))**2-(SQRT(MAX(0D0,EBMUP(1)**2-PM(1)**2))-
05682      &  SQRT(MAX(0D0,EBMUP(2)**2-PM(2)**2)))**2
05683         IF(MSTP(122).GE.1) THEN
05684           LOFFS=(22-(LEN(2)+LEN(3)))/2
05685           CHINIT(LOFFS+1:76)='PYTHIA will be initialized for '//
05686      &    CHCOM(2)(1:LEN(2))//' on '//CHCOM(3)(1:LEN(3))//
05687      &    ' user configuration'//' '
05688           WRITE(MSTU(11),5200) CHINIT
05689           WRITE(MSTU(11),6000) EBMUP(1),EBMUP(2)
05690           WRITE(MSTU(11),5500) SQRT(MAX(0D0,S))
05691         ENDIF
05692  
05693 C...Unknown frame. Error for too low CM energy.
05694       ELSE
05695         WRITE(MSTU(11),5800) CHFRAM(1:LEN(1))
05696         CALL PYSTOP(7)
05697       ENDIF
05698       IF(S.LT.PARP(2)**2) THEN
05699         WRITE(MSTU(11),5900) SQRT(S)
05700         CALL PYSTOP(7)
05701       ENDIF
05702  
05703 C...Formats for initialization and error information.
05704  5000 FORMAT(1X,'Error: unrecognized beam particle ''',A,'''D0'/
05705      &1X,'Execution stopped!')
05706  5100 FORMAT(1X,'Error: unrecognized target particle ''',A,'''D0'/
05707      &1X,'Execution stopped!')
05708  5200 FORMAT(/1X,78('=')/1X,'I',76X,'I'/1X,'I',A76,'I')
05709  5300 FORMAT(1X,'I',18X,'at',1X,F10.3,1X,'GeV center-of-mass energy',
05710      &19X,'I'/1X,'I',76X,'I'/1X,78('='))
05711  5400 FORMAT(1X,'I',22X,'at',1X,F10.3,1X,'GeV/c lab-momentum',22X,'I')
05712  5500 FORMAT(1X,'I',76X,'I'/1X,'I',11X,'corresponding to',1X,F10.3,1X,
05713      &'GeV center-of-mass energy',12X,'I'/1X,'I',76X,'I'/1X,78('='))
05714  5600 FORMAT(1X,'I',76X,'I'/1X,'I',18X,'px (GeV/c)',3X,'py (GeV/c)',3X,
05715      &'pz (GeV/c)',6X,'E (GeV)',9X,'I')
05716  5700 FORMAT(1X,'I',8X,A8,4(2X,F10.3,1X),8X,'I')
05717  5800 FORMAT(1X,'Error: unrecognized coordinate frame ''',A,'''D0'/
05718      &1X,'Execution stopped!')
05719  5900 FORMAT(1X,'Error: too low CM energy,',F8.3,' GeV for event ',
05720      &'generation.'/1X,'Execution stopped!')
05721  6000 FORMAT(1X,'I',12X,'with',1X,F10.3,1X,'GeV on',1X,F10.3,1X,
05722      &'GeV beam energies',13X,'I')
05723  
05724       RETURN
05725       END
05726  
05727 C*********************************************************************
05728  
05729 C...PYINKI
05730 C...Sets up kinematics, including rotations and boosts to/from CM frame.
05731  
05732       SUBROUTINE PYINKI(MODKI)
05733  
05734 C...Double precision and integer declarations.
05735       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
05736       IMPLICIT INTEGER(I-N)
05737       INTEGER PYK,PYCHGE,PYCOMP
05738  
05739 C...User process initialization commonblock.
05740       INTEGER MAXPUP
05741       PARAMETER (MAXPUP=100)
05742       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
05743       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
05744       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
05745      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
05746      &LPRUP(MAXPUP)
05747       SAVE /HEPRUP/
05748  
05749 C...Commonblocks.
05750       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
05751       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
05752       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
05753       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
05754       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
05755       COMMON/PYINT1/MINT(400),VINT(400)
05756       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
05757  
05758 C...Set initial flavour state.
05759       N=2
05760       DO 100 I=1,2
05761         K(I,1)=1
05762         K(I,2)=MINT(10+I)
05763         IF(MINT(140+I).NE.0) K(I,2)=MINT(140+I)
05764   100 CONTINUE
05765  
05766 C...Reset boost. Do kinematics for various cases.
05767       DO 110 J=6,10
05768         VINT(J)=0D0
05769   110 CONTINUE
05770  
05771 C...Set up kinematics for events defined in CM frame.
05772       IF(MINT(111).EQ.1) THEN
05773         WIN=VINT(290)
05774         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
05775         S=WIN**2
05776         P(1,5)=VINT(3)
05777         P(2,5)=VINT(4)
05778         IF(MINT(141).NE.0) P(1,5)=VINT(303)
05779         IF(MINT(142).NE.0) P(2,5)=VINT(304)
05780         P(1,1)=0D0
05781         P(1,2)=0D0
05782         P(2,1)=0D0
05783         P(2,2)=0D0
05784         P(1,3)=SQRT(((S-P(1,5)**2-P(2,5)**2)**2-(2D0*P(1,5)*P(2,5))**2)/
05785      &  (4D0*S))
05786         P(2,3)=-P(1,3)
05787         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
05788         P(2,4)=SQRT(P(2,3)**2+P(2,5)**2)
05789  
05790 C...Set up kinematics for fixed target events.
05791       ELSEIF(MINT(111).EQ.2) THEN
05792         WIN=VINT(290)
05793         IF(MODKI.EQ.1) WIN=PARP(171)*VINT(290)
05794         P(1,5)=VINT(3)
05795         P(2,5)=VINT(4)
05796         IF(MINT(141).NE.0) P(1,5)=VINT(303)
05797         IF(MINT(142).NE.0) P(2,5)=VINT(304)
05798         P(1,1)=0D0
05799         P(1,2)=0D0
05800         P(2,1)=0D0
05801         P(2,2)=0D0
05802         P(1,3)=WIN
05803         P(1,4)=SQRT(P(1,3)**2+P(1,5)**2)
05804         P(2,3)=0D0
05805         P(2,4)=P(2,5)
05806         S=P(1,5)**2+P(2,5)**2+2D0*P(2,4)*P(1,4)
05807         VINT(10)=P(1,3)/(P(1,4)+P(2,4))
05808         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
05809  
05810 C...Set up kinematics for events in user-defined frame.
05811       ELSEIF(MINT(111).EQ.3) THEN
05812         P(1,5)=VINT(3)
05813         P(2,5)=VINT(4)
05814         IF(MINT(141).NE.0) P(1,5)=VINT(303)
05815         IF(MINT(142).NE.0) P(2,5)=VINT(304)
05816         P(1,4)=SQRT(P(1,1)**2+P(1,2)**2+P(1,3)**2+P(1,5)**2)
05817         P(2,4)=SQRT(P(2,1)**2+P(2,2)**2+P(2,3)**2+P(2,5)**2)
05818         DO 120 J=1,3
05819           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
05820   120   CONTINUE
05821         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
05822         VINT(7)=PYANGL(P(1,1),P(1,2))
05823         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
05824         VINT(6)=PYANGL(P(1,3),P(1,1))
05825         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
05826         S=P(1,5)**2+P(2,5)**2+2D0*(P(1,4)*P(2,4)-P(1,3)*P(2,3))
05827  
05828 C...Set up kinematics for events with user-defined four-vectors.
05829       ELSEIF(MINT(111).EQ.4) THEN
05830         PMS1=P(1,4)**2-P(1,1)**2-P(1,2)**2-P(1,3)**2
05831         P(1,5)=SIGN(SQRT(ABS(PMS1)),PMS1)
05832         PMS2=P(2,4)**2-P(2,1)**2-P(2,2)**2-P(2,3)**2
05833         P(2,5)=SIGN(SQRT(ABS(PMS2)),PMS2)
05834         DO 130 J=1,3
05835           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
05836   130   CONTINUE
05837         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
05838         VINT(7)=PYANGL(P(1,1),P(1,2))
05839         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
05840         VINT(6)=PYANGL(P(1,3),P(1,1))
05841         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
05842         S=(P(1,4)+P(2,4))**2
05843  
05844 C...Set up kinematics for events with user-defined five-vectors.
05845       ELSEIF(MINT(111).EQ.5) THEN
05846         DO 140 J=1,3
05847           VINT(7+J)=(P(1,J)+P(2,J))/(P(1,4)+P(2,4))
05848   140   CONTINUE
05849         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
05850         VINT(7)=PYANGL(P(1,1),P(1,2))
05851         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
05852         VINT(6)=PYANGL(P(1,3),P(1,1))
05853         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
05854         S=(P(1,4)+P(2,4))**2
05855  
05856 C...Set up kinematics for events with external user processes.
05857       ELSEIF(MINT(111).GE.11) THEN
05858         P(1,5)=VINT(3)
05859         P(2,5)=VINT(4)
05860         IF(MINT(141).NE.0) P(1,5)=VINT(303)
05861         IF(MINT(142).NE.0) P(2,5)=VINT(304)
05862         P(1,1)=0D0
05863         P(1,2)=0D0
05864         P(2,1)=0D0
05865         P(2,2)=0D0
05866         P(1,3)=SQRT(MAX(0D0,EBMUP(1)**2-P(1,5)**2))
05867         P(2,3)=-SQRT(MAX(0D0,EBMUP(2)**2-P(2,5)**2))
05868         P(1,4)=EBMUP(1)
05869         P(2,4)=EBMUP(2)
05870         VINT(10)=(P(1,3)+P(2,3))/(P(1,4)+P(2,4))
05871         CALL PYROBO(0,0,0D0,0D0,0D0,0D0,-VINT(10))
05872         S=(P(1,4)+P(2,4))**2
05873       ENDIF
05874  
05875 C...Return or error for too low CM energy.
05876       IF(MODKI.EQ.1.AND.S.LT.PARP(2)**2) THEN
05877         IF(MSTP(172).LE.1) THEN
05878           CALL PYERRM(23,
05879      &    '(PYINKI:) too low invariant mass in this event')
05880         ELSE
05881           MSTI(61)=1
05882           RETURN
05883         ENDIF
05884       ENDIF
05885  
05886 C...Save information on incoming particles.
05887       VINT(1)=SQRT(S)
05888       VINT(2)=S
05889       IF(MINT(111).GE.4) THEN
05890         IF(MINT(141).EQ.0) THEN
05891           VINT(3)=P(1,5)
05892           IF(MINT(11).EQ.22.AND.P(1,5).LT.0) VINT(307)=P(1,5)**2
05893         ELSE
05894           VINT(303)=P(1,5)
05895         ENDIF
05896         IF(MINT(142).EQ.0) THEN
05897           VINT(4)=P(2,5)
05898           IF(MINT(12).EQ.22.AND.P(2,5).LT.0) VINT(308)=P(2,5)**2
05899         ELSE
05900           VINT(304)=P(2,5)
05901         ENDIF
05902       ENDIF
05903       VINT(5)=P(1,3)
05904       IF(MODKI.EQ.0) VINT(289)=S
05905       DO 150 J=1,5
05906         V(1,J)=0D0
05907         V(2,J)=0D0
05908         VINT(290+J)=P(1,J)
05909         VINT(295+J)=P(2,J)
05910   150 CONTINUE
05911  
05912 C...Store pT cut-off and related constants to be used in generation.
05913       IF(MODKI.EQ.0) VINT(285)=CKIN(3)
05914       IF(MSTP(82).LE.1) THEN
05915         PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
05916       ELSE
05917         PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
05918       ENDIF
05919       VINT(149)=4D0*PTMN**2/S
05920       VINT(154)=PTMN
05921  
05922       RETURN
05923       END
05924  
05925 C*********************************************************************
05926  
05927 C...PYINPR
05928 C...Selects partonic subprocesses to be included in the simulation.
05929  
05930       SUBROUTINE PYINPR
05931  
05932 C...Double precision and integer declarations.
05933       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
05934       IMPLICIT INTEGER(I-N)
05935       INTEGER PYK,PYCHGE,PYCOMP
05936  
05937 C...User process initialization commonblock.
05938       INTEGER MAXPUP
05939       PARAMETER (MAXPUP=100)
05940       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
05941       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
05942       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
05943      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
05944      &LPRUP(MAXPUP)
05945       SAVE /HEPRUP/
05946  
05947 C...Commonblocks and character variables.
05948       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
05949       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
05950       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
05951       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
05952       COMMON/PYINT1/MINT(400),VINT(400)
05953       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
05954       COMMON/PYINT6/PROC(0:500)
05955       CHARACTER PROC*28
05956       SAVE /PYDAT1/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
05957      &/PYINT6/
05958       CHARACTER CHIPR*10
05959  
05960 C...Reset processes to be included.
05961       IF(MSEL.NE.0) THEN
05962         DO 100 I=1,500
05963           MSUB(I)=0
05964   100   CONTINUE
05965       ENDIF
05966  
05967 C...Set running pTmin scale.
05968       IF(MSTP(82).LE.1) THEN
05969         PTMRUN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
05970       ELSE
05971         PTMRUN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
05972       ENDIF
05973  
05974 C...Begin by assuming incoming photon to enter subprocess.
05975       IF(MINT(11).EQ.22) MINT(15)=22
05976       IF(MINT(12).EQ.22) MINT(16)=22
05977  
05978 C...For e-gamma with MSTP(14)=10 allow mixture of VMD and anomalous.
05979       IF(MINT(121).EQ.2.AND.MSTP(14).EQ.10) THEN
05980         MSUB(10)=1
05981         MINT(123)=MINT(122)+1
05982  
05983 C...For gamma-p or gamma-gamma with MSTP(14) = 10, 20, 25 or 30
05984 C...allow mixture.
05985 C...Here also set a few parameters otherwise normally not touched.
05986       ELSEIF(MINT(121).GT.1) THEN
05987  
05988 C...Parton distributions dampened at small Q2; go to low energies,
05989 C...alpha_s <1; no minimum pT cut-off a priori.
05990         IF(MSTP(18).EQ.2) THEN
05991           MSTP(57)=3
05992           PARP(2)=2D0
05993           PARU(115)=1D0
05994           CKIN(5)=0.2D0
05995           CKIN(6)=0.2D0
05996         ENDIF
05997  
05998 C...Define pT cut-off parameters and whether run involves low-pT.
05999         PTMVMD=PTMRUN
06000         VINT(154)=PTMVMD
06001         PTMDIR=PTMVMD
06002         IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
06003         PTMANO=PTMVMD
06004         IF(MSTP(15).EQ.5) PTMANO=0.60D0+
06005      &  0.125D0*LOG(1D0+0.10D0*VINT(1))**2
06006         IPTL=1
06007         IF(VINT(285).GT.MAX(PTMVMD,PTMDIR,PTMANO)) IPTL=0
06008         IF(MSEL.EQ.2) IPTL=1
06009  
06010 C...Set up for p/gamma * gamma; real or virtual photons.
06011         IF(MINT(121).EQ.3.OR.MINT(121).EQ.6.OR.(MINT(121).EQ.4.AND.
06012      &  MSTP(14).EQ.30)) THEN
06013  
06014 C...Set up for p/VMD * VMD.
06015         IF(MINT(122).EQ.1) THEN
06016           MINT(123)=2
06017           MSUB(11)=1
06018           MSUB(12)=1
06019           MSUB(13)=1
06020           MSUB(28)=1
06021           MSUB(53)=1
06022           MSUB(68)=1
06023           IF(IPTL.EQ.1) MSUB(95)=1
06024           IF(MSEL.EQ.2) THEN
06025             MSUB(91)=1
06026             MSUB(92)=1
06027             MSUB(93)=1
06028             MSUB(94)=1
06029           ENDIF
06030           IF(IPTL.EQ.1) CKIN(3)=0D0
06031  
06032 C...Set up for p/VMD * direct gamma.
06033         ELSEIF(MINT(122).EQ.2) THEN
06034           MINT(123)=0
06035           IF(MINT(121).EQ.6) MINT(123)=5
06036           MSUB(131)=1
06037           MSUB(132)=1
06038           MSUB(135)=1
06039           MSUB(136)=1
06040           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
06041  
06042 C...Set up for p/VMD * anomalous gamma.
06043         ELSEIF(MINT(122).EQ.3) THEN
06044           MINT(123)=3
06045           IF(MINT(121).EQ.6) MINT(123)=7
06046           MSUB(11)=1
06047           MSUB(12)=1
06048           MSUB(13)=1
06049           MSUB(28)=1
06050           MSUB(53)=1
06051           MSUB(68)=1
06052           IF(IPTL.EQ.1) MSUB(95)=1
06053           IF(MSEL.EQ.2) THEN
06054             MSUB(91)=1
06055             MSUB(92)=1
06056             MSUB(93)=1
06057             MSUB(94)=1
06058           ENDIF
06059           IF(IPTL.EQ.1) CKIN(3)=0D0
06060  
06061 C...Set up for DIS * p.
06062         ELSEIF(MINT(122).EQ.4.AND.(IABS(MINT(11)).GT.100.OR.
06063      &  IABS(MINT(12)).GT.100)) THEN
06064           MINT(123)=8
06065           IF(IPTL.EQ.1) MSUB(99)=1
06066  
06067 C...Set up for direct * direct gamma (switch off leptons).
06068         ELSEIF(MINT(122).EQ.4) THEN
06069           MINT(123)=0
06070           MSUB(137)=1
06071           MSUB(138)=1
06072           MSUB(139)=1
06073           MSUB(140)=1
06074           DO 110 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
06075             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
06076   110     CONTINUE
06077           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
06078  
06079 C...Set up for direct * anomalous gamma.
06080         ELSEIF(MINT(122).EQ.5) THEN
06081           MINT(123)=6
06082           MSUB(131)=1
06083           MSUB(132)=1
06084           MSUB(135)=1
06085           MSUB(136)=1
06086           IF(IPTL.EQ.1) CKIN(3)=PTMANO
06087  
06088 C...Set up for anomalous * anomalous gamma.
06089         ELSEIF(MINT(122).EQ.6) THEN
06090           MINT(123)=3
06091           MSUB(11)=1
06092           MSUB(12)=1
06093           MSUB(13)=1
06094           MSUB(28)=1
06095           MSUB(53)=1
06096           MSUB(68)=1
06097           IF(IPTL.EQ.1) MSUB(95)=1
06098           IF(MSEL.EQ.2) THEN
06099             MSUB(91)=1
06100             MSUB(92)=1
06101             MSUB(93)=1
06102             MSUB(94)=1
06103           ENDIF
06104           IF(IPTL.EQ.1) CKIN(3)=0D0
06105         ENDIF
06106  
06107 C...Set up for gamma* * gamma*; virtual photons = dir, VMD, anom.
06108         ELSEIF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
06109  
06110 C...Set up for direct * direct gamma (switch off leptons).
06111         IF(MINT(122).EQ.1) THEN
06112           MINT(123)=0
06113           MSUB(137)=1
06114           MSUB(138)=1
06115           MSUB(139)=1
06116           MSUB(140)=1
06117           DO 120 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
06118             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
06119   120     CONTINUE
06120           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
06121  
06122 C...Set up for direct * VMD and VMD * direct gamma.
06123         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.4) THEN
06124           MINT(123)=5
06125           MSUB(131)=1
06126           MSUB(132)=1
06127           MSUB(135)=1
06128           MSUB(136)=1
06129           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
06130  
06131 C...Set up for direct * anomalous and anomalous * direct gamma.
06132         ELSEIF(MINT(122).EQ.3.OR.MINT(122).EQ.7) THEN
06133           MINT(123)=6
06134           MSUB(131)=1
06135           MSUB(132)=1
06136           MSUB(135)=1
06137           MSUB(136)=1
06138           IF(IPTL.EQ.1) CKIN(3)=PTMANO
06139  
06140 C...Set up for VMD*VMD.
06141         ELSEIF(MINT(122).EQ.5) THEN
06142           MINT(123)=2
06143           MSUB(11)=1
06144           MSUB(12)=1
06145           MSUB(13)=1
06146           MSUB(28)=1
06147           MSUB(53)=1
06148           MSUB(68)=1
06149           IF(IPTL.EQ.1) MSUB(95)=1
06150           IF(MSEL.EQ.2) THEN
06151             MSUB(91)=1
06152             MSUB(92)=1
06153             MSUB(93)=1
06154             MSUB(94)=1
06155           ENDIF
06156           IF(IPTL.EQ.1) CKIN(3)=0D0
06157  
06158 C...Set up for VMD * anomalous and anomalous * VMD gamma.
06159         ELSEIF(MINT(122).EQ.6.OR.MINT(122).EQ.8) THEN
06160           MINT(123)=7
06161           MSUB(11)=1
06162           MSUB(12)=1
06163           MSUB(13)=1
06164           MSUB(28)=1
06165           MSUB(53)=1
06166           MSUB(68)=1
06167           IF(IPTL.EQ.1) MSUB(95)=1
06168           IF(MSEL.EQ.2) THEN
06169             MSUB(91)=1
06170             MSUB(92)=1
06171             MSUB(93)=1
06172             MSUB(94)=1
06173           ENDIF
06174           IF(IPTL.EQ.1) CKIN(3)=0D0
06175  
06176 C...Set up for anomalous * anomalous gamma.
06177         ELSEIF(MINT(122).EQ.9) THEN
06178           MINT(123)=3
06179           MSUB(11)=1
06180           MSUB(12)=1
06181           MSUB(13)=1
06182           MSUB(28)=1
06183           MSUB(53)=1
06184           MSUB(68)=1
06185           IF(IPTL.EQ.1) MSUB(95)=1
06186           IF(MSEL.EQ.2) THEN
06187             MSUB(91)=1
06188             MSUB(92)=1
06189             MSUB(93)=1
06190             MSUB(94)=1
06191           ENDIF
06192           IF(IPTL.EQ.1) CKIN(3)=0D0
06193  
06194 C...Set up for DIS * VMD and VMD * DIS gamma.
06195         ELSEIF(MINT(122).EQ.10.OR.MINT(122).EQ.12) THEN
06196           MINT(123)=8
06197           IF(IPTL.EQ.1) MSUB(99)=1
06198  
06199 C...Set up for DIS * anomalous and anomalous * DIS gamma.
06200         ELSEIF(MINT(122).EQ.11.OR.MINT(122).EQ.13) THEN
06201           MINT(123)=9
06202           IF(IPTL.EQ.1) MSUB(99)=1
06203         ENDIF
06204  
06205 C...Set up for gamma* * p; virtual photons = dir, res.
06206         ELSEIF(MINT(121).EQ.2) THEN
06207  
06208 C...Set up for direct * p.
06209         IF(MINT(122).EQ.1) THEN
06210           MINT(123)=0
06211           MSUB(131)=1
06212           MSUB(132)=1
06213           MSUB(135)=1
06214           MSUB(136)=1
06215           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
06216  
06217 C...Set up for resolved * p.
06218         ELSEIF(MINT(122).EQ.2) THEN
06219           MINT(123)=1
06220           MSUB(11)=1
06221           MSUB(12)=1
06222           MSUB(13)=1
06223           MSUB(28)=1
06224           MSUB(53)=1
06225           MSUB(68)=1
06226           IF(IPTL.EQ.1) MSUB(95)=1
06227           IF(MSEL.EQ.2) THEN
06228             MSUB(91)=1
06229             MSUB(92)=1
06230             MSUB(93)=1
06231             MSUB(94)=1
06232           ENDIF
06233           IF(IPTL.EQ.1) CKIN(3)=0D0
06234         ENDIF
06235  
06236 C...Set up for gamma* * gamma*; virtual photons = dir, res.
06237         ELSEIF(MINT(121).EQ.4) THEN
06238  
06239 C...Set up for direct * direct gamma (switch off leptons).
06240         IF(MINT(122).EQ.1) THEN
06241           MINT(123)=0
06242           MSUB(137)=1
06243           MSUB(138)=1
06244           MSUB(139)=1
06245           MSUB(140)=1
06246           DO 130 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
06247             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
06248   130     CONTINUE
06249           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
06250  
06251 C...Set up for direct * resolved and resolved * direct gamma.
06252         ELSEIF(MINT(122).EQ.2.OR.MINT(122).EQ.3) THEN
06253           MINT(123)=5
06254           MSUB(131)=1
06255           MSUB(132)=1
06256           MSUB(135)=1
06257           MSUB(136)=1
06258           IF(IPTL.EQ.1) CKIN(3)=PTMDIR
06259  
06260 C...Set up for resolved * resolved gamma.
06261         ELSEIF(MINT(122).EQ.4) THEN
06262           MINT(123)=2
06263           MSUB(11)=1
06264           MSUB(12)=1
06265           MSUB(13)=1
06266           MSUB(28)=1
06267           MSUB(53)=1
06268           MSUB(68)=1
06269           IF(IPTL.EQ.1) MSUB(95)=1
06270           IF(MSEL.EQ.2) THEN
06271             MSUB(91)=1
06272             MSUB(92)=1
06273             MSUB(93)=1
06274             MSUB(94)=1
06275           ENDIF
06276           IF(IPTL.EQ.1) CKIN(3)=0D0
06277         ENDIF
06278  
06279 C...End of special set up for gamma-p and gamma-gamma.
06280         ENDIF
06281         CKIN(1)=2D0*CKIN(3)
06282       ENDIF
06283  
06284 C...Flavour information for individual beams.
06285       DO 140 I=1,2
06286         MINT(40+I)=1
06287         IF(MINT(123).GE.1.AND.MINT(10+I).EQ.22) MINT(40+I)=2
06288         IF(IABS(MINT(10+I)).GT.100) MINT(40+I)=2
06289         MINT(44+I)=MINT(40+I)
06290         IF(MSTP(11).GE.1.AND.(IABS(MINT(10+I)).EQ.11.OR.
06291      &  IABS(MINT(10+I)).EQ.13.OR.IABS(MINT(10+I)).EQ.15)) MINT(44+I)=3
06292   140 CONTINUE
06293  
06294 C...If two real gammas, whereof one direct, pick the first.
06295 C...For two virtual photons, keep requested order.
06296       IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
06297         IF(MSTP(14).LE.10.AND.MINT(123).GE.4.AND.MINT(123).LE.6) THEN
06298           MINT(41)=1
06299           MINT(45)=1
06300         ELSEIF(MSTP(14).EQ.12.OR.MSTP(14).EQ.13.OR.MSTP(14).EQ.22.OR.
06301      &  MSTP(14).EQ.26.OR.MSTP(14).EQ.27) THEN
06302           MINT(41)=1
06303           MINT(45)=1
06304         ELSEIF(MSTP(14).EQ.14.OR.MSTP(14).EQ.17.OR.MSTP(14).EQ.23.OR.
06305      &  MSTP(14).EQ.28.OR.MSTP(14).EQ.29) THEN
06306           MINT(42)=1
06307           MINT(46)=1
06308         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.2
06309      &  .OR.MINT(122).EQ.3.OR.MINT(122).EQ.10.OR.MINT(122).EQ.11)) THEN
06310           MINT(41)=1
06311           MINT(45)=1
06312         ELSEIF((MSTP(14).EQ.20.OR.MSTP(14).EQ.30).AND.(MINT(122).EQ.4
06313      &  .OR.MINT(122).EQ.7.OR.MINT(122).EQ.12.OR.MINT(122).EQ.13)) THEN
06314           MINT(42)=1
06315           MINT(46)=1
06316         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.2) THEN
06317           MINT(41)=1
06318           MINT(45)=1
06319         ELSEIF(MSTP(14).EQ.25.AND.MINT(122).EQ.3) THEN
06320           MINT(42)=1
06321           MINT(46)=1
06322         ENDIF
06323       ELSEIF(MINT(11).EQ.22.OR.MINT(12).EQ.22) THEN
06324         IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.28.OR.MINT(122).EQ.4) THEN
06325           IF(MINT(11).EQ.22) THEN
06326             MINT(41)=1
06327             MINT(45)=1
06328           ELSE
06329             MINT(42)=1
06330             MINT(46)=1
06331           ENDIF
06332         ENDIF
06333         IF(MINT(123).GE.4.AND.MINT(123).LE.7) CALL PYERRM(26,
06334      &  '(PYINPR:) unallowed MSTP(14) code for single photon')
06335       ENDIF
06336  
06337 C...Flavour information on combination of incoming particles.
06338       MINT(43)=2*MINT(41)+MINT(42)-2
06339       MINT(44)=MINT(43)
06340       IF(MINT(123).LE.0) THEN
06341         IF(MINT(11).EQ.22) MINT(43)=MINT(43)+2
06342         IF(MINT(12).EQ.22) MINT(43)=MINT(43)+1
06343       ELSEIF(MINT(123).LE.3) THEN
06344         IF(MINT(11).EQ.22) MINT(44)=MINT(44)-2
06345         IF(MINT(12).EQ.22) MINT(44)=MINT(44)-1
06346       ELSEIF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
06347         MINT(43)=4
06348         MINT(44)=1
06349       ENDIF
06350       MINT(47)=2*MIN(2,MINT(45))+MIN(2,MINT(46))-2
06351       IF(MIN(MINT(45),MINT(46)).EQ.3) MINT(47)=5
06352       IF(MINT(45).EQ.1.AND.MINT(46).EQ.3) MINT(47)=6
06353       IF(MINT(45).EQ.3.AND.MINT(46).EQ.1) MINT(47)=7
06354       MINT(50)=0
06355       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2.AND.MINT(111).NE.12) MINT(50)=1
06356       MINT(107)=0
06357       MINT(108)=0
06358       IF(MINT(121).EQ.9.OR.MINT(121).EQ.13) THEN
06359         IF((MINT(122).GE.4.AND.MINT(122).LE.6).OR.MINT(122).EQ.12)
06360      &  MINT(107)=2
06361         IF((MINT(122).GE.7.AND.MINT(122).LE.9).OR.MINT(122).EQ.13)
06362      &  MINT(107)=3
06363         IF(MINT(122).EQ.10.OR.MINT(122).EQ.11) MINT(107)=4
06364         IF(MINT(122).EQ.2.OR.MINT(122).EQ.5.OR.MINT(122).EQ.8.OR.
06365      &  MINT(122).EQ.10) MINT(108)=2
06366         IF(MINT(122).EQ.3.OR.MINT(122).EQ.6.OR.MINT(122).EQ.9.OR.
06367      &  MINT(122).EQ.11) MINT(108)=3
06368         IF(MINT(122).EQ.12.OR.MINT(122).EQ.13) MINT(108)=4
06369       ELSEIF(MINT(121).EQ.4.AND.MSTP(14).EQ.25) THEN
06370         IF(MINT(122).GE.3) MINT(107)=1
06371         IF(MINT(122).EQ.2.OR.MINT(122).EQ.4) MINT(108)=1
06372       ELSEIF(MINT(121).EQ.2) THEN
06373         IF(MINT(122).EQ.2.AND.MINT(11).EQ.22) MINT(107)=1
06374         IF(MINT(122).EQ.2.AND.MINT(12).EQ.22) MINT(108)=1
06375       ELSE
06376         IF(MINT(11).EQ.22) THEN
06377           MINT(107)=MINT(123)
06378           IF(MINT(123).GE.4) MINT(107)=0
06379           IF(MINT(123).EQ.7) MINT(107)=2
06380           IF(MSTP(14).EQ.26.OR.MSTP(14).EQ.27) MINT(107)=4
06381           IF(MSTP(14).EQ.28) MINT(107)=2
06382           IF(MSTP(14).EQ.29) MINT(107)=3
06383           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
06384      &    MINT(107)=4
06385         ENDIF
06386         IF(MINT(12).EQ.22) THEN
06387           MINT(108)=MINT(123)
06388           IF(MINT(123).GE.4) MINT(108)=MINT(123)-3
06389           IF(MINT(123).EQ.7) MINT(108)=3
06390           IF(MSTP(14).EQ.26) MINT(108)=2
06391           IF(MSTP(14).EQ.27) MINT(108)=3
06392           IF(MSTP(14).EQ.28.OR.MSTP(14).EQ.29) MINT(108)=4
06393           IF(MSTP(14).EQ.30.AND.MINT(121).EQ.4.AND.MINT(122).EQ.4)
06394      &    MINT(108)=4
06395         ENDIF
06396         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.(MSTP(14).EQ.14.OR.
06397      &  MSTP(14).EQ.17.OR.MSTP(14).EQ.18.OR.MSTP(14).EQ.23)) THEN
06398           MINTTP=MINT(107)
06399           MINT(107)=MINT(108)
06400           MINT(108)=MINTTP
06401         ENDIF
06402       ENDIF
06403       IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
06404       IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
06405  
06406 C...Select default processes according to incoming beams
06407 C...(already done for gamma-p and gamma-gamma with
06408 C...MSTP(14) = 10, 20, 25 or 30).
06409       IF(MINT(121).GT.1) THEN
06410       ELSEIF(MSEL.EQ.1.OR.MSEL.EQ.2) THEN
06411  
06412         IF(MINT(43).EQ.1) THEN
06413 C...Lepton + lepton -> gamma/Z0 or W.
06414           IF(MINT(11)+MINT(12).EQ.0) MSUB(1)=1
06415           IF(MINT(11)+MINT(12).NE.0) MSUB(2)=1
06416  
06417         ELSEIF(MINT(43).LE.3.AND.MINT(123).EQ.0.AND.
06418      &    (MINT(11).EQ.22.OR.MINT(12).EQ.22)) THEN
06419 C...Unresolved photon + lepton: Compton scattering.
06420           MSUB(133)=1
06421           MSUB(134)=1
06422  
06423         ELSEIF((MINT(123).EQ.8.OR.MINT(123).EQ.9).AND.(MINT(11).EQ.22
06424      &  .OR.MINT(12).EQ.22)) THEN
06425 C...DIS as pure gamma* + f -> f process.
06426           MSUB(99)=1
06427  
06428         ELSEIF(MINT(43).LE.3) THEN
06429 C...Lepton + hadron: deep inelastic scattering.
06430           MSUB(10)=1
06431  
06432         ELSEIF(MINT(123).EQ.0.AND.MINT(11).EQ.22.AND.
06433      &    MINT(12).EQ.22) THEN
06434 C...Two unresolved photons: fermion pair production,
06435 C...exclude lepton pairs.
06436           DO 150 ISUB=137,140
06437             MSUB(ISUB)=1
06438   150     CONTINUE
06439           DO 160 II=MDCY(22,2),MDCY(22,2)+MDCY(22,3)-1
06440             IF(IABS(KFDP(II,1)).GE.10) MDME(II,1)=MIN(0,MDME(II,1))
06441   160     CONTINUE
06442           PTMDIR=PTMRUN
06443           IF(MSTP(18).EQ.2) PTMDIR=PARP(15)
06444           IF(CKIN(3).LT.PTMRUN.OR.MSEL.EQ.2) CKIN(3)=PTMDIR
06445           CKIN(1)=MAX(CKIN(1),2D0*CKIN(3))
06446  
06447         ELSEIF((MINT(123).EQ.0.AND.(MINT(11).EQ.22.OR.MINT(12).EQ.22))
06448      &    .OR.(MINT(123).GE.4.AND.MINT(123).LE.6.AND.MINT(11).EQ.22.AND.
06449      &    MINT(12).EQ.22)) THEN
06450 C...Unresolved photon + hadron: photon-parton scattering.
06451           DO 170 ISUB=131,136
06452             MSUB(ISUB)=1
06453   170     CONTINUE
06454  
06455         ELSEIF(MSEL.EQ.1) THEN
06456 C...High-pT QCD processes:
06457           MSUB(11)=1
06458           MSUB(12)=1
06459           MSUB(13)=1
06460           MSUB(28)=1
06461           MSUB(53)=1
06462           MSUB(68)=1
06463           PTMN=PTMRUN
06464           VINT(154)=PTMN
06465           IF(CKIN(3).LT.PTMN) MSUB(95)=1
06466           IF(MSUB(95).EQ.1.AND.MINT(50).EQ.0) MSUB(95)=0
06467  
06468         ELSE
06469 C...All QCD processes:
06470           MSUB(11)=1
06471           MSUB(12)=1
06472           MSUB(13)=1
06473           MSUB(28)=1
06474           MSUB(53)=1
06475           MSUB(68)=1
06476           MSUB(91)=1
06477           MSUB(92)=1
06478           MSUB(93)=1
06479           MSUB(94)=1
06480           MSUB(95)=1
06481         ENDIF
06482  
06483       ELSEIF(MSEL.GE.4.AND.MSEL.LE.8) THEN
06484 C...Heavy quark production.
06485         MSUB(81)=1
06486         MSUB(82)=1
06487         MSUB(84)=1
06488         DO 180 J=1,MIN(8,MDCY(21,3))
06489           MDME(MDCY(21,2)+J-1,1)=0
06490   180   CONTINUE
06491         MDME(MDCY(21,2)+MSEL-1,1)=1
06492         MSUB(85)=1
06493         DO 190 J=1,MIN(12,MDCY(22,3))
06494           MDME(MDCY(22,2)+J-1,1)=0
06495   190   CONTINUE
06496         MDME(MDCY(22,2)+MSEL-1,1)=1
06497  
06498       ELSEIF(MSEL.EQ.10) THEN
06499 C...Prompt photon production:
06500         MSUB(14)=1
06501         MSUB(18)=1
06502         MSUB(29)=1
06503  
06504       ELSEIF(MSEL.EQ.11) THEN
06505 C...Z0/gamma* production:
06506         MSUB(1)=1
06507  
06508       ELSEIF(MSEL.EQ.12) THEN
06509 C...W+/- production:
06510         MSUB(2)=1
06511  
06512       ELSEIF(MSEL.EQ.13) THEN
06513 C...Z0 + jet:
06514         MSUB(15)=1
06515         MSUB(30)=1
06516  
06517       ELSEIF(MSEL.EQ.14) THEN
06518 C...W+/- + jet:
06519         MSUB(16)=1
06520         MSUB(31)=1
06521  
06522       ELSEIF(MSEL.EQ.15) THEN
06523 C...Z0 & W+/- pair production:
06524         MSUB(19)=1
06525         MSUB(20)=1
06526         MSUB(22)=1
06527         MSUB(23)=1
06528         MSUB(25)=1
06529  
06530       ELSEIF(MSEL.EQ.16) THEN
06531 C...h0 production:
06532         MSUB(3)=1
06533         MSUB(102)=1
06534         MSUB(103)=1
06535         MSUB(123)=1
06536         MSUB(124)=1
06537  
06538       ELSEIF(MSEL.EQ.17) THEN
06539 C...h0 & Z0 or W+/- pair production:
06540         MSUB(24)=1
06541         MSUB(26)=1
06542  
06543       ELSEIF(MSEL.EQ.18) THEN
06544 C...h0 production; interesting processes in e+e-.
06545         MSUB(24)=1
06546         MSUB(103)=1
06547         MSUB(123)=1
06548         MSUB(124)=1
06549  
06550       ELSEIF(MSEL.EQ.19) THEN
06551 C...h0, H0 and A0 production; interesting processes in e+e-.
06552         MSUB(24)=1
06553         MSUB(103)=1
06554         MSUB(123)=1
06555         MSUB(124)=1
06556         MSUB(153)=1
06557         MSUB(171)=1
06558         MSUB(173)=1
06559         MSUB(174)=1
06560         MSUB(158)=1
06561         MSUB(176)=1
06562         MSUB(178)=1
06563         MSUB(179)=1
06564  
06565       ELSEIF(MSEL.EQ.21) THEN
06566 C...Z'0 production:
06567         MSUB(141)=1
06568  
06569       ELSEIF(MSEL.EQ.22) THEN
06570 C...W'+/- production:
06571         MSUB(142)=1
06572  
06573       ELSEIF(MSEL.EQ.23) THEN
06574 C...H+/- production:
06575         MSUB(143)=1
06576  
06577       ELSEIF(MSEL.EQ.24) THEN
06578 C...R production:
06579         MSUB(144)=1
06580  
06581       ELSEIF(MSEL.EQ.25) THEN
06582 C...LQ (leptoquark) production.
06583         MSUB(145)=1
06584         MSUB(162)=1
06585         MSUB(163)=1
06586         MSUB(164)=1
06587  
06588       ELSEIF(MSEL.GE.35.AND.MSEL.LE.38) THEN
06589 C...Production of one heavy quark (W exchange):
06590         MSUB(83)=1
06591         DO 200 J=1,MIN(8,MDCY(21,3))
06592           MDME(MDCY(21,2)+J-1,1)=0
06593   200   CONTINUE
06594         MDME(MDCY(21,2)+MSEL-31,1)=1
06595  
06596 CMRENNA++Define SUSY alternatives.
06597       ELSEIF(MSEL.EQ.39) THEN
06598 C...Turn on all SUSY processes.
06599         IF(MINT(43).EQ.4) THEN
06600 C...Hadron-hadron processes.
06601           DO 210 I=201,301
06602             IF(ISET(I).GE.0) MSUB(I)=1
06603   210     CONTINUE
06604         ELSEIF(MINT(43).EQ.1) THEN
06605 C...Lepton-lepton processes: QED production of squarks.
06606           DO 220 I=201,214
06607             MSUB(I)=1
06608   220     CONTINUE
06609           MSUB(210)=0
06610           MSUB(211)=0
06611           MSUB(212)=0
06612           DO 230 I=216,228
06613             MSUB(I)=1
06614   230     CONTINUE
06615           DO 240 I=261,263
06616             MSUB(I)=1
06617   240     CONTINUE
06618           MSUB(277)=1
06619           MSUB(278)=1
06620         ENDIF
06621  
06622       ELSEIF(MSEL.EQ.40) THEN
06623 C...Gluinos and squarks.
06624         IF(MINT(43).EQ.4) THEN
06625           MSUB(243)=1
06626           MSUB(244)=1
06627           MSUB(258)=1
06628           MSUB(259)=1
06629           MSUB(261)=1
06630           MSUB(262)=1
06631           MSUB(264)=1
06632           MSUB(265)=1
06633           DO 250 I=271,296
06634             MSUB(I)=1
06635   250     CONTINUE
06636         ELSEIF(MINT(43).EQ.1) THEN
06637           MSUB(277)=1
06638           MSUB(278)=1
06639         ENDIF
06640  
06641       ELSEIF(MSEL.EQ.41) THEN
06642 C...Stop production.
06643         MSUB(261)=1
06644         MSUB(262)=1
06645         MSUB(263)=1
06646         IF(MINT(43).EQ.4) THEN
06647           MSUB(264)=1
06648           MSUB(265)=1
06649         ENDIF
06650  
06651       ELSEIF(MSEL.EQ.42) THEN
06652 C...Slepton production.
06653         DO 260 I=201,214
06654           MSUB(I)=1
06655   260   CONTINUE
06656         IF(MINT(43).NE.4) THEN
06657           MSUB(210)=0
06658           MSUB(211)=0
06659           MSUB(212)=0
06660         ENDIF
06661  
06662       ELSEIF(MSEL.EQ.43) THEN
06663 C...Neutralino/Chargino + Gluino/Squark.
06664         IF(MINT(43).EQ.4) THEN
06665           DO 270 I=237,242
06666             MSUB(I)=1
06667   270     CONTINUE
06668           DO 280 I=246,254
06669             MSUB(I)=1
06670   280     CONTINUE
06671           MSUB(256)=1
06672         ENDIF
06673  
06674       ELSEIF(MSEL.EQ.44) THEN
06675 C...Neutralino/Chargino pair production.
06676         IF(MINT(43).EQ.4) THEN
06677           DO 290 I=216,236
06678             MSUB(I)=1
06679   290     CONTINUE
06680         ELSEIF(MINT(43).EQ.1) THEN
06681           DO 300 I=216,228
06682             MSUB(I)=1
06683   300     CONTINUE
06684         ENDIF
06685  
06686       ELSEIF(MSEL.EQ.45) THEN
06687 C...Sbottom production.
06688         MSUB(287)=1
06689         MSUB(288)=1
06690         IF(MINT(43).EQ.4) THEN
06691           DO 310 I=281,296
06692             MSUB(I)=1
06693   310     CONTINUE
06694         ENDIF
06695  
06696       ELSEIF(MSEL.EQ.50) THEN
06697 C...Pair production of technipions and gauge bosons.
06698         DO 320 I=361,368
06699           MSUB(I)=1
06700   320   CONTINUE
06701         IF(MINT(43).EQ.4) THEN
06702           DO 330 I=370,377
06703             MSUB(I)=1
06704   330     CONTINUE
06705         ENDIF
06706  
06707       ELSEIF(MSEL.EQ.51) THEN
06708 C...QCD 2 -> 2 processes with compositeness/technicolor modifications.
06709         DO 340 I=381,386
06710           MSUB(I)=1
06711   340   CONTINUE
06712  
06713       ELSEIF(MSEL.EQ.61) THEN
06714 C...Charmonium production in colour octet model, with recoiling parton.
06715         DO 342 I=421,439
06716           MSUB(I)=1
06717  342   CONTINUE
06718  
06719       ELSEIF(MSEL.EQ.62) THEN
06720 C...Bottomonium production in colour octet model, with recoiling parton.
06721         DO 344 I=461,479
06722           MSUB(I)=1
06723  344   CONTINUE
06724  
06725       ELSEIF(MSEL.EQ.63) THEN
06726 C...Charmonium and bottomonium production in colour octet model.
06727         DO 346 I=421,439
06728           MSUB(I)=1
06729           MSUB(I+40)=1
06730  346   CONTINUE
06731       ENDIF
06732  
06733 C...Find heaviest new quark flavour allowed in processes 81-84.
06734       KFLQM=1
06735       DO 350 I=1,MIN(8,MDCY(21,3))
06736         IDC=I+MDCY(21,2)-1
06737         IF(MDME(IDC,1).LE.0) GOTO 350
06738         KFLQM=I
06739   350 CONTINUE
06740       IF(MSTP(7).GE.1.AND.MSTP(7).LE.8.AND.(MSEL.LE.3.OR.MSEL.GE.9))
06741      &KFLQM=MSTP(7)
06742       MINT(55)=KFLQM
06743       KFPR(81,1)=KFLQM
06744       KFPR(81,2)=KFLQM
06745       KFPR(82,1)=KFLQM
06746       KFPR(82,2)=KFLQM
06747       KFPR(83,1)=KFLQM
06748       KFPR(84,1)=KFLQM
06749       KFPR(84,2)=KFLQM
06750  
06751 C...Find heaviest new fermion flavour allowed in process 85.
06752       KFLFM=1
06753       DO 360 I=1,MIN(12,MDCY(22,3))
06754         IDC=I+MDCY(22,2)-1
06755         IF(MDME(IDC,1).LE.0) GOTO 360
06756         KFLFM=KFDP(IDC,1)
06757   360 CONTINUE
06758       IF(((MSTP(7).GE.1.AND.MSTP(7).LE.8).OR.(MSTP(7).GE.11.AND.
06759      &MSTP(7).LE.18)).AND.(MSEL.LE.3.OR.MSEL.GE.9)) KFLFM=MSTP(7)
06760       MINT(56)=KFLFM
06761       KFPR(85,1)=KFLFM
06762       KFPR(85,2)=KFLFM
06763  
06764 C...Import relevant information on external user processes.
06765       IF(MINT(111).GE.11) THEN
06766         IPYPR=0
06767         DO 390 IUP=1,NPRUP
06768 C...Find next empty PYTHIA process number slot and enable it.
06769   370     IPYPR=IPYPR+1
06770           IF(IPYPR.GT.500) CALL PYERRM(26,
06771      &    '(PYINPR.) no more empty slots for user processes')
06772           IF(ISET(IPYPR).GE.0.AND.ISET(IPYPR).LE.9) GOTO 370
06773           IF(IPYPR.GE.91.AND.IPYPR.LE.100) GOTO 370
06774           ISET(IPYPR)=11
06775 C...Overwrite KFPR with references back to process number and ID.
06776           KFPR(IPYPR,1)=IUP
06777           KFPR(IPYPR,2)=LPRUP(IUP)
06778 C...Process title.
06779           WRITE(CHIPR,'(I10)') LPRUP(IUP)
06780           ICHIN=1
06781           DO 380 ICH=1,9
06782             IF(CHIPR(ICH:ICH).EQ.' ') ICHIN=ICH+1
06783   380     CONTINUE
06784           PROC(IPYPR)='User process '//CHIPR(ICHIN:10)//' '
06785 C...Switch on process.
06786           MSUB(IPYPR)=1
06787   390   CONTINUE
06788       ENDIF
06789  
06790       RETURN
06791       END
06792  
06793 C*********************************************************************
06794  
06795 C...PYXTOT
06796 C...Parametrizes total, elastic and diffractive cross-sections
06797 C...for different energies and beams. Donnachie-Landshoff for
06798 C...total and Schuler-Sjostrand for elastic and diffractive.
06799 C...Process code IPROC:
06800 C...=  1 : p + p;
06801 C...=  2 : pbar + p;
06802 C...=  3 : pi+ + p;
06803 C...=  4 : pi- + p;
06804 C...=  5 : pi0 + p;
06805 C...=  6 : phi + p;
06806 C...=  7 : J/psi + p;
06807 C...= 11 : rho + rho;
06808 C...= 12 : rho + phi;
06809 C...= 13 : rho + J/psi;
06810 C...= 14 : phi + phi;
06811 C...= 15 : phi + J/psi;
06812 C...= 16 : J/psi + J/psi;
06813 C...= 21 : gamma + p (DL);
06814 C...= 22 : gamma + p (VDM).
06815 C...= 23 : gamma + pi (DL);
06816 C...= 24 : gamma + pi (VDM);
06817 C...= 25 : gamma + gamma (DL);
06818 C...= 26 : gamma + gamma (VDM).
06819  
06820       SUBROUTINE PYXTOT
06821  
06822 C...Double precision and integer declarations.
06823       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
06824       IMPLICIT INTEGER(I-N)
06825       INTEGER PYK,PYCHGE,PYCOMP
06826 C...Commonblocks.
06827       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
06828       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
06829       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
06830       COMMON/PYINT1/MINT(400),VINT(400)
06831       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
06832       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
06833       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT5/,/PYINT7/
06834 C...Local arrays.
06835       DIMENSION NPROC(30),XPAR(30),YPAR(30),IHADA(20),IHADB(20),
06836      &PMHAD(4),BHAD(4),BETP(4),IFITSD(20),IFITDD(20),CEFFS(10,8),
06837      &CEFFD(10,9),SIGTMP(6,0:5)
06838  
06839 C...Common constants.
06840       DATA EPS/0.0808D0/, ETA/-0.4525D0/, ALP/0.25D0/, CRES/2D0/,
06841      &PMRC/1.062D0/, SMP/0.880D0/, FACEL/0.0511D0/, FACSD/0.0336D0/,
06842      &FACDD/0.0084D0/
06843  
06844 C...Number of multiple processes to be evaluated (= 0 : undefined).
06845       DATA NPROC/7*1,3*0,6*1,4*0,4*3,2*6,4*0/
06846 C...X and Y parameters of sigmatot = X * s**epsilon + Y * s**(-eta).
06847       DATA XPAR/2*21.70D0,3*13.63D0,10.01D0,0.970D0,3*0D0,
06848      &8.56D0,6.29D0,0.609D0,4.62D0,0.447D0,0.0434D0,4*0D0,
06849      &0.0677D0,0.0534D0,0.0425D0,0.0335D0,2.11D-4,1.31D-4,4*0D0/
06850       DATA YPAR/
06851      &56.08D0,98.39D0,27.56D0,36.02D0,31.79D0,-1.51D0,-0.146D0,3*0D0,
06852      &13.08D0,-0.62D0,-0.060D0,0.030D0,-0.0028D0,0.00028D0,4*0D0,
06853      &0.129D0,0.115D0,0.081D0,0.072D0,2.15D-4,1.70D-4,4*0D0/
06854  
06855 C...Beam and target hadron class:
06856 C...= 1 : p/n ; = 2 : pi/rho/omega; = 3 : phi; = 4 : J/psi.
06857       DATA IHADA/2*1,3*2,3,4,3*0,3*2,2*3,4,4*0/
06858       DATA IHADB/7*1,3*0,2,3,4,3,2*4,4*0/
06859 C...Characteristic class masses, slope parameters, beta = sqrt(X).
06860       DATA PMHAD/0.938D0,0.770D0,1.020D0,3.097D0/
06861       DATA BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
06862       DATA BETP/4.658D0,2.926D0,2.149D0,0.208D0/
06863  
06864 C...Fitting constants used in parametrizations of diffractive results.
06865       DATA IFITSD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
06866       DATA IFITDD/2*1,3*2,3,4,3*0,5,6,7,8,9,10,4*0/
06867       DATA ((CEFFS(J1,J2),J2=1,8),J1=1,10)/
06868      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.213D0, 0.0D0, -0.47D0, 150D0,
06869      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.267D0, 0.0D0, -0.47D0, 100D0,
06870      &0.213D0, 0.0D0, -0.47D0, 150D0, 0.232D0, 0.0D0, -0.47D0, 110D0,
06871      &0.213D0, 7.0D0, -0.55D0, 800D0, 0.115D0, 0.0D0, -0.47D0, 110D0,
06872      &0.267D0, 0.0D0, -0.46D0,  75D0, 0.267D0, 0.0D0, -0.46D0,  75D0,
06873      &0.232D0, 0.0D0, -0.46D0,  85D0, 0.267D0, 0.0D0, -0.48D0, 100D0,
06874      &0.115D0, 0.0D0, -0.50D0,  90D0, 0.267D0, 6.0D0, -0.56D0, 420D0,
06875      &0.232D0, 0.0D0, -0.48D0, 110D0, 0.232D0, 0.0D0, -0.48D0, 110D0,
06876      &0.115D0, 0.0D0, -0.52D0, 120D0, 0.232D0, 6.0D0, -0.56D0, 470D0,
06877      &0.115D0, 5.5D0, -0.58D0, 570D0, 0.115D0, 5.5D0, -0.58D0, 570D0/
06878       DATA ((CEFFD(J1,J2),J2=1,9),J1=1,10)/
06879      &3.11D0, -7.34D0,  9.71D0, 0.068D0, -0.42D0,  1.31D0,
06880      &-1.37D0,  35.0D0,  118D0,  3.11D0, -7.10D0,  10.6D0,
06881      &0.073D0, -0.41D0, 1.17D0, -1.41D0,  31.6D0,   95D0,
06882      &3.12D0, -7.43D0,  9.21D0, 0.067D0, -0.44D0,  1.41D0,
06883      &-1.35D0,  36.5D0,  132D0,  3.13D0, -8.18D0, -4.20D0,
06884      &0.056D0, -0.71D0, 3.12D0, -1.12D0,  55.2D0, 1298D0,
06885      &3.11D0, -6.90D0,  11.4D0, 0.078D0, -0.40D0,  1.05D0,
06886      &-1.40D0,  28.4D0,   78D0,  3.11D0, -7.13D0,  10.0D0,
06887      &0.071D0, -0.41D0, 1.23D0, -1.34D0,  33.1D0,  105D0,
06888      &3.12D0, -7.90D0, -1.49D0, 0.054D0, -0.64D0,  2.72D0,
06889      &-1.13D0,  53.1D0,  995D0,  3.11D0, -7.39D0,  8.22D0,
06890      &0.065D0, -0.44D0, 1.45D0, -1.36D0,  38.1D0,  148D0,
06891      &3.18D0, -8.95D0, -3.37D0, 0.057D0, -0.76D0,  3.32D0,
06892      &-1.12D0,  55.6D0, 1472D0,  4.18D0, -29.2D0,  56.2D0,
06893      &0.074D0, -1.36D0, 6.67D0, -1.14D0, 116.2D0, 6532D0/
06894  
06895 C...Parameters. Combinations of the energy.
06896       AEM=PARU(101)
06897       PMTH=PARP(102)
06898       S=VINT(2)
06899       SRT=VINT(1)
06900       SEPS=S**EPS
06901       SETA=S**ETA
06902       SLOG=LOG(S)
06903  
06904 C...Ratio of gamma/pi (for rescaling in parton distributions).
06905       VINT(281)=(XPAR(22)*SEPS+YPAR(22)*SETA)/
06906      &(XPAR(5)*SEPS+YPAR(5)*SETA)
06907       VINT(317)=1D0
06908       IF(MINT(50).NE.1) RETURN
06909  
06910 C...Order flavours of incoming particles: KF1 < KF2.
06911       IF(IABS(MINT(11)).LE.IABS(MINT(12))) THEN
06912         KF1=IABS(MINT(11))
06913         KF2=IABS(MINT(12))
06914         IORD=1
06915       ELSE
06916         KF1=IABS(MINT(12))
06917         KF2=IABS(MINT(11))
06918         IORD=2
06919       ENDIF
06920       ISGN12=ISIGN(1,MINT(11)*MINT(12))
06921  
06922 C...Find process number (for lookup tables).
06923       IF(KF1.GT.1000) THEN
06924         IPROC=1
06925         IF(ISGN12.LT.0) IPROC=2
06926       ELSEIF(KF1.GT.100.AND.KF2.GT.1000) THEN
06927         IPROC=3
06928         IF(ISGN12.LT.0) IPROC=4
06929         IF(KF1.EQ.111) IPROC=5
06930       ELSEIF(KF1.GT.100) THEN
06931         IPROC=11
06932       ELSEIF(KF2.GT.1000) THEN
06933         IPROC=21
06934         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=22
06935       ELSEIF(KF2.GT.100) THEN
06936         IPROC=23
06937         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3) IPROC=24
06938       ELSE
06939         IPROC=25
06940         IF(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7) IPROC=26
06941       ENDIF
06942  
06943 C... Number of multiple processes to be stored; beam/target side.
06944       NPR=NPROC(IPROC)
06945       MINT(101)=1
06946       MINT(102)=1
06947       IF(NPR.EQ.3) THEN
06948         MINT(100+IORD)=4
06949       ELSEIF(NPR.EQ.6) THEN
06950         MINT(101)=4
06951         MINT(102)=4
06952       ENDIF
06953       N1=0
06954       IF(MINT(101).EQ.4) N1=4
06955       N2=0
06956       IF(MINT(102).EQ.4) N2=4
06957  
06958 C...Do not do any more for user-set or undefined cross-sections.
06959       IF(MSTP(31).LE.0) RETURN
06960       IF(NPR.EQ.0) CALL PYERRM(26,
06961      &'(PYXTOT:) cross section for this process not yet implemented')
06962  
06963 C...Parameters. Combinations of the energy.
06964       AEM=PARU(101)
06965       PMTH=PARP(102)
06966       S=VINT(2)
06967       SRT=VINT(1)
06968       SEPS=S**EPS
06969       SETA=S**ETA
06970       SLOG=LOG(S)
06971  
06972 C...Loop over multiple processes (for VDM).
06973       DO 110 I=1,NPR
06974         IF(NPR.EQ.1) THEN
06975           IPR=IPROC
06976         ELSEIF(NPR.EQ.3) THEN
06977           IPR=I+4
06978           IF(KF2.LT.1000) IPR=I+10
06979         ELSEIF(NPR.EQ.6) THEN
06980           IPR=I+10
06981         ENDIF
06982  
06983 C...Evaluate hadron species, mass, slope contribution and fit number.
06984         IHA=IHADA(IPR)
06985         IHB=IHADB(IPR)
06986         PMA=PMHAD(IHA)
06987         PMB=PMHAD(IHB)
06988         BHA=BHAD(IHA)
06989         BHB=BHAD(IHB)
06990         ISD=IFITSD(IPR)
06991         IDD=IFITDD(IPR)
06992  
06993 C...Skip if energy too low relative to masses.
06994         DO 100 J=0,5
06995           SIGTMP(I,J)=0D0
06996   100   CONTINUE
06997         IF(SRT.LT.PMA+PMB+PARP(104)) GOTO 110
06998  
06999 C...Total cross-section. Elastic slope parameter and cross-section.
07000         SIGTMP(I,0)=XPAR(IPR)*SEPS+YPAR(IPR)*SETA
07001         BEL=2D0*BHA+2D0*BHB+4D0*SEPS-4.2D0
07002         SIGTMP(I,1)=FACEL*SIGTMP(I,0)**2/BEL
07003  
07004 C...Diffractive scattering A + B -> X + B.
07005         BSD=2D0*BHB
07006         SQML=(PMA+PMTH)**2
07007         SQMU=S*CEFFS(ISD,1)+CEFFS(ISD,2)
07008         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
07009      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
07010         BXB=CEFFS(ISD,3)+CEFFS(ISD,4)/S
07011         SUM2=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)/
07012      &  (BSD+2D0*ALP*LOG(S/((PMA+PMTH)*(PMA+PMRC)))+BXB)
07013         SIGTMP(I,2)=FACSD*XPAR(IPR)*BETP(IHB)*MAX(0D0,SUM1+SUM2)
07014  
07015 C...Diffractive scattering A + B -> A + X.
07016         BSD=2D0*BHA
07017         SQML=(PMB+PMTH)**2
07018         SQMU=S*CEFFS(ISD,5)+CEFFS(ISD,6)
07019         SUM1=LOG((BSD+2D0*ALP*LOG(S/SQML))/
07020      &  (BSD+2D0*ALP*LOG(S/SQMU)))/(2D0*ALP)
07021         BAX=CEFFS(ISD,7)+CEFFS(ISD,8)/S
07022         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/
07023      &  (BSD+2D0*ALP*LOG(S/((PMB+PMTH)*(PMB+PMRC)))+BAX)
07024         SIGTMP(I,3)=FACSD*XPAR(IPR)*BETP(IHA)*MAX(0D0,SUM1+SUM2)
07025  
07026 C...Order single diffractive correctly.
07027         IF(IORD.EQ.2) THEN
07028           SIGSAV=SIGTMP(I,2)
07029           SIGTMP(I,2)=SIGTMP(I,3)
07030           SIGTMP(I,3)=SIGSAV
07031         ENDIF
07032  
07033 C...Double diffractive scattering A + B -> X1 + X2.
07034         YEFF=LOG(S*SMP/((PMA+PMTH)*(PMB+PMTH))**2)
07035         DEFF=CEFFD(IDD,1)+CEFFD(IDD,2)/SLOG+CEFFD(IDD,3)/SLOG**2
07036         SUM1=(DEFF+YEFF*(LOG(MAX(1D-10,YEFF/DEFF))-1D0))/(2D0*ALP)
07037         IF(YEFF.LE.0) SUM1=0D0
07038         SQMU=S*(CEFFD(IDD,4)+CEFFD(IDD,5)/SLOG+CEFFD(IDD,6)/SLOG**2)
07039         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMA+PMTH)**2*(PMB+PMTH)*(PMB+PMRC))))
07040         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMB+PMTH)*(PMB+PMRC))))
07041         SUM2=CRES*LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)*LOG(SLUP/SLDN)/
07042      &  (2D0*ALP)
07043         SLUP=LOG(MAX(1.1D0,S/(ALP*(PMB+PMTH)**2*(PMA+PMTH)*(PMA+PMRC))))
07044         SLDN=LOG(MAX(1.1D0,S/(ALP*SQMU*(PMA+PMTH)*(PMA+PMRC))))
07045         SUM3=CRES*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*LOG(SLUP/SLDN)/
07046      &  (2D0*ALP)
07047         BXX=CEFFD(IDD,7)+CEFFD(IDD,8)/SRT+CEFFD(IDD,9)/S
07048         SLRR=LOG(S/(ALP*(PMA+PMTH)*(PMA+PMRC)*(PMB+PMTH)*(PMB+PMRC)))
07049         SUM4=CRES**2*LOG(1D0+((PMA+PMRC)/(PMA+PMTH))**2)*
07050      &  LOG(1D0+((PMB+PMRC)/(PMB+PMTH))**2)/MAX(0.1D0,2D0*ALP*SLRR+BXX)
07051         SIGTMP(I,4)=FACDD*XPAR(IPR)*MAX(0D0,SUM1+SUM2+SUM3+SUM4)
07052  
07053 C...Non-diffractive by unitarity.
07054         SIGTMP(I,5)=SIGTMP(I,0)-SIGTMP(I,1)-SIGTMP(I,2)-SIGTMP(I,3)-
07055      &  SIGTMP(I,4)
07056   110 CONTINUE
07057  
07058 C...Put temporary results in output array: only one process.
07059       IF(MINT(101).EQ.1.AND.MINT(102).EQ.1) THEN
07060         DO 120 J=0,5
07061           SIGT(0,0,J)=SIGTMP(1,J)
07062   120   CONTINUE
07063  
07064 C...Beam multiple processes.
07065       ELSEIF(MINT(101).EQ.4.AND.MINT(102).EQ.1) THEN
07066         IF(MINT(107).EQ.2) THEN
07067           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
07068         ELSE
07069           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
07070      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
07071         ENDIF
07072         IF(MSTP(20).GT.0) THEN
07073           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)))**MSTP(20)
07074         ENDIF
07075         DO 140 I=1,4
07076           IF(MINT(107).EQ.2) THEN
07077             CONV=(AEM/PARP(160+I))*VINT(317)
07078           ELSEIF(VINT(154).GT.PARP(15)) THEN
07079             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
07080      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
07081           ELSE
07082             CONV=0D0
07083           ENDIF
07084           I1=MAX(1,I-1)
07085           DO 130 J=0,5
07086             SIGT(I,0,J)=CONV*SIGTMP(I1,J)
07087   130     CONTINUE
07088   140   CONTINUE
07089         DO 150 J=0,5
07090           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
07091   150   CONTINUE
07092  
07093 C...Target multiple processes.
07094       ELSEIF(MINT(101).EQ.1.AND.MINT(102).EQ.4) THEN
07095         IF(MINT(108).EQ.2) THEN
07096           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
07097         ELSE
07098           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
07099      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
07100         ENDIF
07101         IF(MSTP(20).GT.0) THEN
07102           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(308)))**MSTP(20)
07103         ENDIF
07104         DO 170 I=1,4
07105           IF(MINT(108).EQ.2) THEN
07106             CONV=(AEM/PARP(160+I))*VINT(317)
07107           ELSEIF(VINT(154).GT.PARP(15)) THEN
07108             CONV=(AEM/PARU(1))*(KCHG(I,1)/3D0)**2*PARP(18)**2*
07109      &      (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
07110           ELSE
07111             CONV=0D0
07112           ENDIF
07113           IV=MAX(1,I-1)
07114           DO 160 J=0,5
07115             SIGT(0,I,J)=CONV*SIGTMP(IV,J)
07116   160     CONTINUE
07117   170   CONTINUE
07118         DO 180 J=0,5
07119           SIGT(0,0,J)=SIGT(0,1,J)+SIGT(0,2,J)+SIGT(0,3,J)+SIGT(0,4,J)
07120   180   CONTINUE
07121  
07122 C...Both beam and target multiple processes.
07123       ELSE
07124         IF(MINT(107).EQ.2) THEN
07125           VINT(317)=(PMHAD(2)**2/(PMHAD(2)**2+VINT(307)))**2
07126         ELSE
07127           VINT(317)=16D0*PARP(15)**2*VINT(154)**2/
07128      &    ((4D0*PARP(15)**2+VINT(307))*(4D0*VINT(154)**2+VINT(307)))
07129         ENDIF
07130         IF(MINT(108).EQ.2) THEN
07131           VINT(317)=VINT(317)*(PMHAD(2)**2/(PMHAD(2)**2+VINT(308)))**2
07132         ELSE
07133           VINT(317)=VINT(317)*16D0*PARP(15)**2*VINT(154)**2/
07134      &    ((4D0*PARP(15)**2+VINT(308))*(4D0*VINT(154)**2+VINT(308)))
07135         ENDIF
07136         IF(MSTP(20).GT.0) THEN
07137           VINT(317)=VINT(317)*(VINT(2)/(VINT(2)+VINT(307)+
07138      &    VINT(308)))**MSTP(20)
07139         ENDIF
07140         DO 210 I1=1,4
07141           DO 200 I2=1,4
07142             IF(MINT(107).EQ.2) THEN
07143               CONV=(AEM/PARP(160+I1))*VINT(317)
07144             ELSEIF(VINT(154).GT.PARP(15)) THEN
07145               CONV=(AEM/PARU(1))*(KCHG(I1,1)/3D0)**2*PARP(18)**2*
07146      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)*VINT(317)
07147             ELSE
07148               CONV=0D0
07149             ENDIF
07150             IF(MINT(108).EQ.2) THEN
07151               CONV=CONV*(AEM/PARP(160+I2))
07152             ELSEIF(VINT(154).GT.PARP(15)) THEN
07153               CONV=CONV*(AEM/PARU(1))*(KCHG(I2,1)/3D0)**2*PARP(18)**2*
07154      &        (1D0/PARP(15)**2-1D0/VINT(154)**2)
07155             ELSE
07156               CONV=0D0
07157             ENDIF
07158             IF(I1.LE.2) THEN
07159               IV=MAX(1,I2-1)
07160             ELSEIF(I2.LE.2) THEN
07161               IV=MAX(1,I1-1)
07162             ELSEIF(I1.EQ.I2) THEN
07163               IV=2*I1-2
07164             ELSE
07165               IV=5
07166             ENDIF
07167             DO 190 J=0,5
07168               JV=J
07169               IF(I2.GT.I1.AND.(J.EQ.2.OR.J.EQ.3)) JV=5-J
07170               SIGT(I1,I2,J)=CONV*SIGTMP(IV,JV)
07171   190       CONTINUE
07172   200     CONTINUE
07173   210   CONTINUE
07174         DO 230 J=0,5
07175           DO 220 I=1,4
07176             SIGT(I,0,J)=SIGT(I,1,J)+SIGT(I,2,J)+SIGT(I,3,J)+SIGT(I,4,J)
07177             SIGT(0,I,J)=SIGT(1,I,J)+SIGT(2,I,J)+SIGT(3,I,J)+SIGT(4,I,J)
07178   220     CONTINUE
07179           SIGT(0,0,J)=SIGT(1,0,J)+SIGT(2,0,J)+SIGT(3,0,J)+SIGT(4,0,J)
07180   230   CONTINUE
07181       ENDIF
07182  
07183 C...Scale up uniformly for Donnachie-Landshoff parametrization.
07184       IF(IPROC.EQ.21.OR.IPROC.EQ.23.OR.IPROC.EQ.25) THEN
07185         RFAC=(XPAR(IPROC)*SEPS+YPAR(IPROC)*SETA)/SIGT(0,0,0)
07186         DO 260 I1=0,N1
07187           DO 250 I2=0,N2
07188             DO 240 J=0,5
07189               SIGT(I1,I2,J)=RFAC*SIGT(I1,I2,J)
07190   240       CONTINUE
07191   250     CONTINUE
07192   260   CONTINUE
07193       ENDIF
07194  
07195       RETURN
07196       END
07197  
07198 C*********************************************************************
07199  
07200 C...PYMAXI
07201 C...Finds optimal set of coefficients for kinematical variable selection
07202 C...and the maximum of the part of the differential cross-section used
07203 C...in the event weighting.
07204  
07205       SUBROUTINE PYMAXI
07206  
07207 C...Double precision and integer declarations.
07208       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
07209       IMPLICIT INTEGER(I-N)
07210       INTEGER PYK,PYCHGE,PYCOMP
07211 C...Parameter statement to help give large particle numbers.
07212       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
07213      &KEXCIT=4000000,KDIMEN=5000000)
07214  
07215 C...User process initialization commonblock.
07216       INTEGER MAXPUP
07217       PARAMETER (MAXPUP=100)
07218       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
07219       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
07220       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
07221      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
07222      &LPRUP(MAXPUP)
07223       SAVE /HEPRUP/
07224  
07225 C...Commonblocks.
07226       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
07227       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
07228       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
07229       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
07230       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
07231       COMMON/PYINT1/MINT(400),VINT(400)
07232       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
07233       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
07234       COMMON/PYINT4/MWID(500),WIDS(500,5)
07235       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
07236       COMMON/PYINT6/PROC(0:500)
07237       CHARACTER PROC*28
07238       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
07239       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
07240       COMMON/PYTCCO/COEFX(194:380,2)
07241       COMMON/TCPARA/IRES,JRES,XMAS(3),XWID(3),YMAS(2),YWID(2)
07242       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
07243      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT6/,/PYINT7/,/PYTCCO/,
07244      &/PYTCSM/,/TCPARA/
07245 C...Local arrays, character variables and data.
07246       LOGICAL IOK
07247       CHARACTER CVAR(4)*4
07248       DIMENSION NPTS(4),MVARPT(500,4),VINTPT(500,30),SIGSPT(500),
07249      &NAREL(9),WTREL(9),WTMAT(9,9),WTRELN(9),COEFU(9),COEFO(9),
07250      &IACCMX(4),SIGSMX(4),SIGSSM(3),PMMN(2),WTRSAV(9),TEMPC(9),
07251      &IQ(9),IP(9)
07252       DATA CVAR/'tau ','tau''','y*  ','cth '/
07253       DATA SIGSSM/3*0D0/
07254  
07255 C...Initial values and loop over subprocesses.
07256       NPOSI=0
07257       VINT(143)=1D0
07258       VINT(144)=1D0
07259       XSEC(0,1)=0D0
07260       ITECH=0
07261       DO 460 ISUB=1,500
07262         MINT(1)=ISUB
07263         MINT(51)=0
07264  
07265 C...Find maximum weight factors for photon flux.
07266         IF(MSUB(ISUB).EQ.1.OR.(ISUB.GE.91.AND.ISUB.LE.100)) THEN
07267           IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(2,WTGAGA)
07268         ENDIF
07269  
07270 C...Select subprocess to study: skip cases not applicable.
07271         IF(ISET(ISUB).EQ.11) THEN
07272           IF(MSUB(ISUB).NE.1) GOTO 460
07273 C...User process intialization: cross section model dependent.
07274           IF(IABS(IDWTUP).EQ.1) THEN
07275             IF(IDWTUP.GT.0.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
07276      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
07277             XSEC(ISUB,1)=1.00000001D-9*ABS(XMAXUP(KFPR(ISUB,1)))
07278           ELSE
07279             IF((IDWTUP.EQ.2.OR.IDWTUP.EQ.3).AND.
07280      &      XSECUP(KFPR(ISUB,1)).LT.0D0) CALL
07281      &      PYERRM(26,'(PYMAXI:) Negative XSECUP for user process')
07282             IF(IDWTUP.EQ.2.AND.XMAXUP(KFPR(ISUB,1)).LT.0D0) CALL
07283      &      PYERRM(26,'(PYMAXI:) Negative XMAXUP for user process')
07284             XSEC(ISUB,1)=1.00000001D-9*ABS(XSECUP(KFPR(ISUB,1)))
07285           ENDIF
07286           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
07287      &    WTGAGA*XSEC(ISUB,1)
07288           NPOSI=NPOSI+1
07289           GOTO 450
07290         ELSEIF(ISUB.GE.91.AND.ISUB.LE.95) THEN
07291           CALL PYSIGH(NCHN,SIGS)
07292           XSEC(ISUB,1)=SIGS
07293           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
07294      &    WTGAGA*XSEC(ISUB,1)
07295           IF(MSUB(ISUB).NE.1) GOTO 460
07296           NPOSI=NPOSI+1
07297           GOTO 450
07298         ELSEIF(ISUB.EQ.99.AND.MSUB(ISUB).EQ.1) THEN
07299           CALL PYSIGH(NCHN,SIGS)
07300           XSEC(ISUB,1)=SIGS
07301           IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
07302      &    WTGAGA*XSEC(ISUB,1)
07303           IF(XSEC(ISUB,1).EQ.0D0) THEN
07304             MSUB(ISUB)=0
07305           ELSE
07306             NPOSI=NPOSI+1
07307           ENDIF
07308           GOTO 450
07309         ELSEIF(ISUB.EQ.96) THEN
07310           IF(MINT(50).EQ.0) GOTO 460
07311           IF(MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0.AND.MSTP(131).LE.0)
07312      &    GOTO 460
07313           IF(MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 460
07314         ELSEIF(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13.OR.ISUB.EQ.28.OR.
07315      &    ISUB.EQ.53.OR.ISUB.EQ.68) THEN
07316           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
07317         ELSEIF(ISUB.GE.381.AND.ISUB.LE.386) THEN
07318           IF(MSUB(ISUB).NE.1.OR.MSUB(95).EQ.1) GOTO 460
07319         ELSE
07320           IF(MSUB(ISUB).NE.1) GOTO 460
07321         ENDIF
07322         ISTSB=ISET(ISUB)
07323         IF(ISUB.EQ.96) ISTSB=2
07324         IF(MSTP(122).GE.2) WRITE(MSTU(11),5000) ISUB
07325         MWTXS=0
07326         IF(MSTP(142).GE.1.AND.ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+
07327      &  MSUB(94)+MSUB(95).EQ.0) MWTXS=1
07328  
07329 C...Find resonances (explicit or implicit in cross-section).
07330         MINT(72)=0
07331         KFR1=0
07332         IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
07333           KFR1=KFPR(ISUB,1)
07334         ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165
07335      &    .OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
07336           KFR1=23
07337         ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172
07338      &    .OR.ISUB.EQ.177) THEN
07339           KFR1=24
07340         ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
07341           KFR1=25
07342           IF(MSTP(46).EQ.5) THEN
07343             KFR1=89
07344             PMAS(89,1)=PARP(45)
07345             PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
07346           ENDIF
07347         ENDIF
07348         CKMX=CKIN(2)
07349         IF(CKMX.LE.0D0) CKMX=VINT(1)
07350         KCR1=PYCOMP(KFR1)
07351         IF(KFR1.NE.0) THEN
07352           IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
07353      &    CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
07354         ENDIF
07355         IF(KFR1.NE.0) THEN
07356           TAUR1=PMAS(KCR1,1)**2/VINT(2)
07357           GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
07358           MINT(72)=1
07359           MINT(73)=KFR1
07360           VINT(73)=TAUR1
07361           VINT(74)=GAMR1
07362         ENDIF
07363         KFR2=0
07364         KFR3=0
07365         IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.ISUB.EQ.195.OR.
07366      $  (ISUB.GE.361.AND.ISUB.LE.380))
07367      $  THEN
07368           KFR2=23
07369           IF(ISUB.EQ.141) THEN
07370             KCR2=PYCOMP(KFR2)
07371             IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
07372      &       CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) THEN
07373               KFR2=0
07374             ELSE
07375               TAUR2=PMAS(KCR2,1)**2/VINT(2)            
07376               GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
07377               MINT(72)=2
07378               MINT(74)=KFR2
07379               VINT(75)=TAUR2
07380               VINT(76)=GAMR2
07381             ENDIF
07382           ELSEIF(ITECH.EQ.0) THEN
07383             ALPRHT=2.16D0*(3D0/DBLE(ITCM(1)))
07384             ITECH=1
07385             KFR1=KTECHN+113              
07386             KCR1=PYCOMP(KFR1)
07387             KFR2=KTECHN+223
07388             KCR2=PYCOMP(KFR2)
07389             KFR3=KTECHN+115
07390             KCR3=PYCOMP(KFR3)
07391             IRES=0
07392 C...Order the resonances
07393             IF(PMAS(KCR3,1).LT.PMAS(KCR2,1)) THEN
07394               KCT=KCR3
07395               KCR3=KCR2
07396               KCR2=KCT
07397             ENDIF
07398             IF(PMAS(KCR3,1).LT.PMAS(KCR1,1)) THEN
07399               KCT=KCR3
07400               KCR3=KCR1
07401               KCR1=KCT
07402             ENDIF
07403             IF(PMAS(KCR2,1).LT.PMAS(KCR1,1)) THEN
07404               KCT=KCR2
07405               KCR2=KCR1
07406               KCR1=KCT
07407             ENDIF
07408             DO 101 I=1,3
07409               IF(I.EQ.1) THEN
07410                 SHN0=PMAS(KCR1,1)**2
07411               ELSEIF(I.EQ.2) THEN
07412                 IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LE.1D-6) GOTO 101
07413                 SHN0=PMAS(KCR2,1)**2
07414               ELSEIF(I.EQ.3) THEN
07415                 IF(ABS(PMAS(KCR3,1)-PMAS(KCR3,1)).LE.1D-6) GOTO 101
07416                 SHN0=PMAS(KCR3,1)**2
07417               ENDIF
07418               AEM=PYALEM(SHN0)
07419               FAR=SQRT(AEM/ALPRHT)              
07420               SHN=SHN0*(1D0-FAR)
07421               CALL PYTECM(SHN,S1,WIDO,1)
07422               RES=SHN-S1
07423               SHN=S1*.99D0
07424               SHSTEP=2D0
07425  102          SHN=SHN+SHSTEP
07426               CALL PYTECM(SHN,S1,WIDO,1)
07427               IF(RES.LT.0D0.AND.SHN-S1.GE.0D0) THEN
07428                 IOK=.FALSE.
07429                 IF(IRES.GT.0) THEN
07430                   IF(ABS(SQRT(S1)-XMAS(IRES)).GT.1D-6) IOK=.TRUE.
07431                 ELSEIF(IRES.EQ.0) THEN
07432                   IOK=.TRUE.
07433                 ENDIF
07434                 IF(IOK) THEN
07435                   IRES=IRES+1
07436                   XMAS(IRES)=SQRT(S1)
07437                   XWID(IRES)=WIDO
07438                 ENDIF
07439               ENDIF
07440               RES=SHN-S1
07441               IF(IRES.LT.3.AND.SHN.LT.SHN0*(1D0+FAR)) GOTO 102
07442  101        CONTINUE
07443             JRES=0
07444             KFR1=KTECHN+213              
07445             KCR1=PYCOMP(KFR1)
07446             KFR2=KTECHN+215
07447             KCR2=PYCOMP(KFR2)
07448             IF(PMAS(KCR2,1).LT.PMAS(KCR1,1)) THEN
07449               KCT=KCR2
07450               KCR2=KCR1
07451               KCR1=KCT
07452             ENDIF
07453             DO 103 I=1,2
07454               IF(I.EQ.1) THEN
07455                 SHN0=PMAS(KCR1,1)**2
07456               ELSEIF(I.EQ.2) THEN
07457                 IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LE.1D-6) GOTO 103
07458                 SHN0=PMAS(KCR2,1)**2
07459               ENDIF
07460               AEM=PYALEM(SHN0)
07461               FAR=SQRT(AEM/ALPRHT)              
07462               SHN=SHN0*(1D0-FAR)
07463               CALL PYTECM(SHN,S1,WIDO,2)
07464               RES=SHN-S1
07465               SHN=S1*.99D0
07466               SHSTEP=2D0
07467  104          SHN=SHN+SHSTEP
07468               CALL PYTECM(SHN,S1,WIDO,2)
07469               IF(RES.LT.0D0.AND.SHN-S1.GE.0D0) THEN
07470                 IOK=.FALSE.
07471                 IF(JRES.GT.0) THEN
07472                   IF(ABS(SQRT(S1)-XMAS(IRES)).GT.1D-6) IOK=.TRUE.
07473                 ELSEIF(JRES.EQ.0) THEN
07474                   IOK=.TRUE.
07475                 ENDIF
07476                 IF(IOK) THEN
07477                   JRES=JRES+1
07478                   YMAS(JRES)=SQRT(S1)
07479                   YWID(JRES)=WIDO
07480                 ENDIF
07481               ENDIF
07482               RES=SHN-S1
07483               IF(JRES.LT.2.AND.SHN.LT.SHN0*(1D0+FAR)) GOTO 104
07484  103        CONTINUE
07485           ENDIF
07486           IF(ISUB.EQ.194.OR.(ISUB.GE.361.AND.ISUB.LE.368).OR.
07487      &     ISUB.EQ.379.OR.ISUB.EQ.380) THEN
07488             MINT(72)=IRES
07489             IF(IRES.GE.1) THEN
07490               VINT(73)=XMAS(1)**2/VINT(2)
07491               VINT(74)=XMAS(1)*XWID(1)/VINT(2)
07492               TAUR1=VINT(73)
07493               GAMR1=VINT(74)
07494               XM1=XMAS(1)
07495               XG1=XWID(1)
07496               KFR1=1
07497             ENDIF
07498             IF(IRES.GE.2) THEN
07499               VINT(75)=XMAS(2)**2/VINT(2)
07500               VINT(76)=XMAS(2)*XWID(2)/VINT(2)
07501               TAUR2=VINT(75)
07502               GAMR2=VINT(76)
07503               XM2=XMAS(2)
07504               XG2=XWID(2)
07505               KFR2=2
07506             ENDIF
07507             IF(IRES.EQ.3) THEN
07508               VINT(77)=XMAS(3)**2/VINT(2)
07509               VINT(78)=XMAS(3)*XWID(3)/VINT(2)
07510               TAUR3=VINT(77)
07511               GAMR3=VINT(78)
07512               XM3=XMAS(3)
07513               XG3=XWID(3)
07514               KFR3=3
07515             ENDIF
07516 C...Charged current:  rho+- and a+-
07517           ELSEIF(ISUB.EQ.195.OR.ISUB.GE.370.AND.ISUB.LE.378) THEN
07518             MINT(72)=IRES
07519             IF(JRES.GE.1) THEN
07520               VINT(73)=YMAS(1)**2/VINT(2)
07521               VINT(74)=YMAS(1)*YWID(1)/VINT(2)
07522               KFR1=1
07523               TAUR1=VINT(73)
07524               GAMR1=VINT(74)
07525               XM1=YMAS(1)
07526               XG1=YWID(1)
07527             ENDIF
07528             IF(JRES.GE.2) THEN
07529               VINT(75)=YMAS(2)**2/VINT(2)
07530               VINT(76)=YMAS(2)*YWID(2)/VINT(2)
07531               KFR2=2
07532               TAUR2=VINT(73)
07533               GAMR2=VINT(74)
07534               XM2=YMAS(2)
07535               XG2=YWID(2)
07536             ENDIF
07537             KFR3=0
07538           ENDIF
07539           IF(ISUB.NE.141) THEN
07540             IF(KFR1.NE.0.AND.(CKIN(1).GT.(XM1+20D0*XG1)
07541      &       .OR.CKMX.LT.(XM1-20D0*XG1))) KFR1=0
07542             IF(KFR2.NE.0.AND.(CKIN(1).GT.(XM2+20D0*XG2)
07543      &       .OR.CKMX.LT.(XM2-20D0*XG2))) KFR2=0
07544             IF(KFR3.NE.0.AND.(CKIN(1).GT.(XM3+20D0*XG3)
07545      &       .OR.CKMX.LT.(XM3-20D0*XG3))) KFR3=0
07546             IF(KFR3.NE.0.AND.KFR2.NE.0.AND.KFR1.NE.0) THEN
07547 
07548             ELSEIF(KFR1.NE.0.AND.KFR2.NE.0) THEN
07549               MINT(72)=2
07550             ELSEIF(KFR1.NE.0.AND.KFR3.NE.0) THEN
07551               MINT(72)=2
07552               MINT(74)=KFR3
07553               VINT(75)=TAUR3
07554               VINT(76)=GAMR3
07555             ELSEIF(KFR2.NE.0.AND.KFR3.NE.0) THEN
07556               MINT(72)=2
07557               MINT(73)=KFR2
07558               VINT(73)=TAUR2
07559               VINT(74)=GAMR2
07560               MINT(74)=KFR3
07561               VINT(75)=TAUR3
07562               VINT(76)=GAMR3
07563             ELSEIF(KFR1.NE.0) THEN
07564               MINT(72)=1
07565             ELSEIF(KFR2.NE.0) THEN
07566               MINT(72)=1
07567               MINT(73)=KFR2
07568               VINT(73)=TAUR2
07569               VINT(74)=GAMR2
07570             ELSEIF(KFR3.NE.0) THEN
07571               MINT(72)=1
07572               MINT(73)=KFR3
07573               VINT(73)=TAUR3
07574               VINT(74)=GAMR3
07575             ELSE
07576               MINT(72)=0
07577             ENDIF
07578           ELSE
07579             IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
07580 
07581             ELSEIF(KFR2.NE.0) THEN
07582               KFR1=KFR2
07583               TAUR1=TAUR2
07584               GAMR1=GAMR2
07585               MINT(72)=1
07586               MINT(73)=KFR1
07587               VINT(73)=TAUR1
07588               VINT(74)=GAMR1
07589               KFR2=0
07590             ELSE
07591               MINT(72)=0
07592             ENDIF
07593           ENDIF
07594         ENDIF
07595  
07596 C...Find product masses and minimum pT of process.
07597         SQM3=0D0
07598         SQM4=0D0
07599         MINT(71)=0
07600         VINT(71)=CKIN(3)
07601         VINT(80)=1D0
07602         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
07603           NBW=0
07604           DO 110 I=1,2
07605             PMMN(I)=0D0
07606             IF(KFPR(ISUB,I).EQ.0) THEN
07607             ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
07608      &        PARP(41)) THEN
07609               IF(I.EQ.1) SQM3=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
07610               IF(I.EQ.2) SQM4=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
07611             ELSE
07612               NBW=NBW+1
07613 C...This prevents SUSY/t particles from becoming too light.
07614               KFLW=KFPR(ISUB,I)
07615               IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
07616                 KCW=PYCOMP(KFLW)
07617                 PMMN(I)=PMAS(KCW,1)
07618                 DO 100 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
07619                   IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
07620                     PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
07621      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
07622                     IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
07623      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
07624                     PMMN(I)=MIN(PMMN(I),PMSUM)
07625                   ENDIF
07626   100           CONTINUE
07627               ELSEIF(KFLW.EQ.6) THEN
07628                 PMMN(I)=PMAS(24,1)+PMAS(5,1)
07629               ENDIF
07630             ENDIF
07631   110     CONTINUE
07632           IF(NBW.GE.1) THEN
07633             CKIN41=CKIN(41)
07634             CKIN43=CKIN(43)
07635             CKIN(41)=MAX(PMMN(1),CKIN(41))
07636             CKIN(43)=MAX(PMMN(2),CKIN(43))
07637             CALL PYOFSH(3,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
07638             CKIN(41)=CKIN41
07639             CKIN(43)=CKIN43
07640             IF(MINT(51).EQ.1) THEN
07641               WRITE(MSTU(11),5100) ISUB
07642               MSUB(ISUB)=0
07643               GOTO 460
07644             ENDIF
07645             SQM3=PQM3**2
07646             SQM4=PQM4**2
07647           ENDIF
07648           IF(MIN(SQM3,SQM4).LT.CKIN(6)**2) MINT(71)=1
07649           IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
07650           IF(ISUB.EQ.96.AND.MSTP(82).LE.1) THEN
07651             VINT(71)=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
07652           ELSEIF(ISUB.EQ.96) THEN
07653             VINT(71)=0.08D0*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
07654           ENDIF
07655         ENDIF
07656         VINT(63)=SQM3
07657         VINT(64)=SQM4
07658  
07659 C...Prepare for additional variable choices in 2 -> 3.
07660         IF(ISTSB.EQ.5) THEN
07661           VINT(201)=0D0
07662           IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
07663           VINT(206)=VINT(201)
07664           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
07665           VINT(204)=PMAS(23,1)
07666           IF(ISUB.EQ.124.OR.ISUB.EQ.351) VINT(204)=PMAS(24,1)
07667           IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
07668           IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182
07669      &    .OR.ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
07670      &         VINT(204)=VINT(201)
07671           VINT(209)=VINT(204)
07672           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
07673         ENDIF
07674  
07675 C...Number of points for each variable: tau, tau', y*, cos(theta-hat).
07676         IPEAK7=0
07677         NPTS(1)=2+2*MINT(72)
07678         IF(MINT(47).EQ.1) THEN
07679           IF(ISTSB.EQ.1.OR.ISTSB.EQ.2) NPTS(1)=1
07680         ELSEIF(MINT(47).GE.5) THEN
07681           IF(ISTSB.LE.2.OR.ISTSB.GT.5) THEN
07682             NPTS(1)=NPTS(1)+1
07683             IPEAK7=1
07684           ENDIF
07685         ENDIF
07686         NPTS(2)=1
07687         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
07688           IF(MINT(47).GE.2) NPTS(2)=2
07689           IF(MINT(47).GE.5) NPTS(2)=3
07690         ENDIF
07691         NPTS(3)=1
07692         IF(MINT(47).EQ.4.OR.MINT(47).EQ.5) THEN
07693           NPTS(3)=3
07694           IF(MINT(45).EQ.3) NPTS(3)=NPTS(3)+1
07695           IF(MINT(46).EQ.3) NPTS(3)=NPTS(3)+1
07696         ENDIF
07697         NPTS(4)=1
07698         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) NPTS(4)=5
07699         NTRY=NPTS(1)*NPTS(2)*NPTS(3)*NPTS(4)
07700  
07701 C...Reset coefficients of cross-section weighting.
07702         DO 120 J=1,20
07703           COEF(ISUB,J)=0D0
07704   120   CONTINUE
07705         IF(ISUB.EQ.194.OR.ISUB.EQ.195.OR.(ISUB.GE.361
07706      &   .AND.ISUB.LE.380)) THEN
07707           DO 125 J=1,2
07708             COEFX(ISUB,J)=0D0
07709  125      CONTINUE
07710         ENDIF
07711         COEF(ISUB,1)=1D0
07712         COEF(ISUB,8)=0.5D0
07713         COEF(ISUB,9)=0.5D0
07714         COEF(ISUB,13)=1D0
07715         COEF(ISUB,18)=1D0
07716         MCTH=0
07717         MTAUP=0
07718         METAUP=0
07719         VINT(23)=0D0
07720         VINT(26)=0D0
07721         SIGSAM=0D0
07722  
07723 C...Find limits and select tau, y*, cos(theta-hat) and tau' values,
07724 C...in grid of phase space points.
07725         CALL PYKLIM(1)
07726         METAU=MINT(51)
07727         NACC=0
07728         DO 150 ITRY=1,NTRY
07729           MINT(51)=0
07730           IF(METAU.EQ.1) GOTO 150
07731           IF(MOD(ITRY-1,NPTS(2)*NPTS(3)*NPTS(4)).EQ.0) THEN
07732             MTAU=1+(ITRY-1)/(NPTS(2)*NPTS(3)*NPTS(4))
07733             IF(MINT(72).LE.2.AND.MTAU.GT.2+2*MINT(72)) THEN
07734               MTAU=7
07735             ELSEIF(MINT(72).EQ.3.AND.IPEAK7.EQ.0.AND.MTAU.GE.7) THEN
07736               MTAU=MTAU+1              
07737             ENDIF
07738             RTAU=0.5D0
07739 C...Special case when both resonances have same mass,
07740 C...as is often the case in process 194.
07741 c           IF(MINT(72).GE.2) THEN
07742 c             IF(ABS(PMAS(KCR2,1)-PMAS(KCR1,1)).LT.
07743 c    &        0.01D0*(PMAS(KCR2,1)+PMAS(KCR1,1))) THEN
07744 c               IF(MTAU.EQ.3.OR.MTAU.EQ.4) THEN
07745 c                 RTAU=0.4D0
07746 c               ELSEIF(MTAU.EQ.5.OR.MTAU.EQ.6) THEN
07747 c                 RTAU=0.6D0
07748 c               ENDIF
07749 c             ENDIF
07750 c           ENDIF
07751             CALL PYKMAP(1,MTAU,RTAU)
07752             IF(ISTSB.GE.3.AND.ISTSB.LE.5) CALL PYKLIM(4)
07753             METAUP=MINT(51)
07754           ENDIF
07755           IF(METAUP.EQ.1) GOTO 150
07756           IF(ISTSB.GE.3.AND.ISTSB.LE.5.AND.MOD(ITRY-1,NPTS(3)*NPTS(4))
07757      &    .EQ.0) THEN
07758             MTAUP=1+MOD((ITRY-1)/(NPTS(3)*NPTS(4)),NPTS(2))
07759             CALL PYKMAP(4,MTAUP,0.5D0)
07760           ENDIF
07761           IF(MOD(ITRY-1,NPTS(3)*NPTS(4)).EQ.0) THEN
07762             CALL PYKLIM(2)
07763             MEYST=MINT(51)
07764           ENDIF
07765           IF(MEYST.EQ.1) GOTO 150
07766           IF(MOD(ITRY-1,NPTS(4)).EQ.0) THEN
07767             MYST=1+MOD((ITRY-1)/NPTS(4),NPTS(3))
07768             IF(MYST.EQ.4.AND.MINT(45).NE.3) MYST=5
07769             CALL PYKMAP(2,MYST,0.5D0)
07770             CALL PYKLIM(3)
07771             MECTH=MINT(51)
07772           ENDIF
07773           IF(MECTH.EQ.1) GOTO 150
07774           IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
07775             MCTH=1+MOD(ITRY-1,NPTS(4))
07776             CALL PYKMAP(3,MCTH,0.5D0)
07777           ENDIF
07778           IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1D0-VINT(23)**2)
07779  
07780 C...Store position and limits.
07781           MINT(51)=0
07782           CALL PYKLIM(0)
07783           IF(MINT(51).EQ.1) GOTO 150
07784           NACC=NACC+1
07785           MVARPT(NACC,1)=MTAU
07786           MVARPT(NACC,2)=MTAUP
07787           MVARPT(NACC,3)=MYST
07788           MVARPT(NACC,4)=MCTH
07789           DO 130 J=1,30
07790             VINTPT(NACC,J)=VINT(10+J)
07791   130     CONTINUE
07792  
07793 C...Normal case: calculate cross-section.
07794           IF(ISTSB.NE.5) THEN
07795             CALL PYSIGH(NCHN,SIGS)
07796             IF(MWTXS.EQ.1) THEN
07797               CALL PYEVWT(WTXS)
07798               SIGS=WTXS*SIGS
07799             ENDIF
07800  
07801 C..2 -> 3: find highest value out of a number of tries.
07802           ELSE
07803             SIGS=0D0
07804             DO 140 IKIN3=1,MSTP(129)
07805               CALL PYKMAP(5,0,0D0)
07806               IF(MINT(51).EQ.1) GOTO 140
07807               CALL PYSIGH(NCHN,SIGTMP)
07808               IF(MWTXS.EQ.1) THEN
07809                 CALL PYEVWT(WTXS)
07810                 SIGTMP=WTXS*SIGTMP
07811               ENDIF
07812               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
07813   140       CONTINUE
07814           ENDIF
07815  
07816 C...Store cross-section.
07817           SIGSPT(NACC)=SIGS
07818           IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
07819           IF(MSTP(122).GE.2) WRITE(MSTU(11),5200) MTAU,MYST,MCTH,MTAUP,
07820      &    VINT(21),VINT(22),VINT(23),VINT(26),SIGS
07821   150   CONTINUE
07822         IF(NACC.EQ.0) THEN
07823           WRITE(MSTU(11),5100) ISUB
07824           MSUB(ISUB)=0
07825           GOTO 460
07826         ELSEIF(SIGSAM.EQ.0D0) THEN
07827           WRITE(MSTU(11),5300) ISUB
07828           MSUB(ISUB)=0
07829           GOTO 460
07830         ENDIF
07831         IF(ISUB.NE.96) NPOSI=NPOSI+1
07832  
07833 C...Calculate integrals in tau over maximal phase space limits.
07834         TAUMIN=VINT(11)
07835         TAUMAX=VINT(31)
07836         ATAU1=LOG(TAUMAX/TAUMIN)
07837         IF(NPTS(1).GE.2) THEN
07838           ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
07839         ENDIF
07840         IF(NPTS(1).GE.4) THEN
07841           ATAU3=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))/TAUR1
07842           ATAU4=(ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1))/
07843      &    GAMR1
07844         ENDIF
07845         IF(NPTS(1).GE.6) THEN
07846           ATAU5=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))/TAUR2
07847           ATAU6=(ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2))/
07848      &    GAMR2
07849         ENDIF
07850         IF(NPTS(1).GE.8) THEN
07851           ATAU8=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR3)/(TAUMAX+TAUR3))/TAUR3
07852           ATAU9=(ATAN((TAUMAX-TAUR3)/GAMR3)-ATAN((TAUMIN-TAUR3)/GAMR3))/
07853      &    GAMR3
07854         ENDIF
07855         IF(IPEAK7.EQ.1) THEN
07856           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
07857         ENDIF
07858  
07859 C...Reset. Sum up cross-sections in points calculated.
07860         DO 320 IVAR=1,4
07861           IF(NPTS(IVAR).EQ.1) GOTO 320
07862           IF(ISUB.EQ.96.AND.IVAR.EQ.4) GOTO 320
07863           NBIN=NPTS(IVAR)
07864           DO 170 J1=1,NBIN
07865             NAREL(J1)=0
07866             WTREL(J1)=0D0
07867             COEFU(J1)=0D0
07868             DO 160 J2=1,NBIN
07869               WTMAT(J1,J2)=0D0
07870   160       CONTINUE
07871   170     CONTINUE
07872           DO 180 IACC=1,NACC
07873             IBIN=MVARPT(IACC,IVAR)
07874             IF(IVAR.EQ.1) THEN
07875               IF(IBIN.GT.7.AND.IPEAK7.EQ.0) THEN
07876                 IBIN=IBIN-1
07877               ELSEIF(IBIN.EQ.7.AND.IPEAK7.EQ.1.AND.MSTP(72).LT.3) THEN
07878                 IBIN=3+2*MINT(72)
07879               ENDIF
07880             ENDIF
07881             IF(IVAR.EQ.3.AND.IBIN.EQ.5.AND.MINT(45).NE.3) IBIN=4
07882             NAREL(IBIN)=NAREL(IBIN)+1
07883             WTREL(IBIN)=WTREL(IBIN)+SIGSPT(IACC)
07884  
07885 C...Sum up tau cross-section pieces in points used.
07886             IF(IVAR.EQ.1) THEN
07887               TAU=VINTPT(IACC,11)
07888               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
07889               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAU1/ATAU2)/TAU
07890               IF(NBIN.GE.4) THEN
07891                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAU1/ATAU3)/(TAU+TAUR1)
07892                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ATAU1/ATAU4)*TAU/
07893      &          ((TAU-TAUR1)**2+GAMR1**2)
07894               ENDIF
07895               IF(NBIN.GE.6) THEN
07896                 WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ATAU1/ATAU5)/(TAU+TAUR2)
07897                 WTMAT(IBIN,6)=WTMAT(IBIN,6)+(ATAU1/ATAU6)*TAU/
07898      &          ((TAU-TAUR2)**2+GAMR2**2)
07899               ENDIF
07900               IF(MINT(72).LE.2.AND.IPEAK7.EQ.1) THEN
07901                 WTMAT(IBIN,3+2*MINT(72))=WTMAT(IBIN,3+2*MINT(72))
07902      &           +(ATAU1/ATAU7)*TAU/MAX(2D-10,1D0-TAU)
07903               ELSEIF(MINT(72).EQ.3.AND.IPEAK7.EQ.1) THEN
07904                 WTMAT(IBIN,7)=WTMAT(IBIN,7)
07905      &           +(ATAU1/ATAU7)*TAU/MAX(2D-10,1D0-TAU)
07906               ENDIF
07907               IF(MINT(72).EQ.3) THEN
07908                 WTMAT(IBIN,7+IPEAK7)=WTMAT(IBIN,7+IPEAK7)
07909      &           +(ATAU1/ATAU8)/(TAU+TAUR3)
07910                 WTMAT(IBIN,8+IPEAK7)=WTMAT(IBIN,8+IPEAK7)
07911      &           +(ATAU1/ATAU9)*TAU/((TAU-TAUR3)**2+GAMR3**2)
07912               ENDIF
07913 C...Sum up tau' cross-section pieces in points used.
07914             ELSEIF(IVAR.EQ.2) THEN
07915               TAU=VINTPT(IACC,11)
07916               TAUP=VINTPT(IACC,16)
07917               TAUPMN=VINTPT(IACC,6)
07918               TAUPMX=VINTPT(IACC,26)
07919               ATAUP1=LOG(TAUPMX/TAUPMN)
07920               ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
07921               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
07922               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ATAUP1/ATAUP2)*
07923      &        (1D0-TAU/TAUP)**3/TAUP
07924               IF(NBIN.GE.3) THEN
07925                 ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
07926                 WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ATAUP1/ATAUP3)*
07927      &          TAUP/MAX(2D-10,1D0-TAUP)
07928               ENDIF
07929  
07930 C...Sum up y* cross-section pieces in points used.
07931             ELSEIF(IVAR.EQ.3) THEN
07932               YST=VINTPT(IACC,12)
07933               YSTMIN=VINTPT(IACC,2)
07934               YSTMAX=VINTPT(IACC,22)
07935               AYST0=YSTMAX-YSTMIN
07936               AYST1=0.5D0*(YSTMAX-YSTMIN)**2
07937               AYST2=AYST1
07938               AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
07939               WTMAT(IBIN,1)=WTMAT(IBIN,1)+(AYST0/AYST1)*(YST-YSTMIN)
07940               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(AYST0/AYST2)*(YSTMAX-YST)
07941               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(AYST0/AYST3)/COSH(YST)
07942               IF(MINT(45).EQ.3) THEN
07943                 TAUE=VINTPT(IACC,11)
07944                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
07945                 YST0=-0.5D0*LOG(TAUE)
07946                 AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
07947      &          MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
07948                 WTMAT(IBIN,4)=WTMAT(IBIN,4)+(AYST0/AYST4)/
07949      &          MAX(1D-10,1D0-EXP(YST-YST0))
07950               ENDIF
07951               IF(MINT(46).EQ.3) THEN
07952                 TAUE=VINTPT(IACC,11)
07953                 IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINTPT(IACC,16)
07954                 YST0=-0.5D0*LOG(TAUE)
07955                 AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
07956      &          MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
07957                 WTMAT(IBIN,NBIN)=WTMAT(IBIN,NBIN)+(AYST0/AYST5)/
07958      &          MAX(1D-10,1D0-EXP(-YST-YST0))
07959               ENDIF
07960  
07961 C...Sum up cos(theta-hat) cross-section pieces in points used.
07962             ELSE
07963               RM34=MAX(1D-20,2D0*SQM3*SQM4/(VINTPT(IACC,11)*VINT(2))**2)
07964               RSQM=1D0+RM34
07965               CTHMAX=SQRT(1D0-4D0*VINT(71)**2/(TAUMAX*VINT(2)))
07966               CTHMIN=-CTHMAX
07967               IF(CTHMAX.GT.0.9999D0) RM34=MAX(RM34,2D0*VINT(71)**2/
07968      &        (TAUMAX*VINT(2)))
07969               ACTH1=CTHMAX-CTHMIN
07970               ACTH2=LOG(MAX(RM34,RSQM-CTHMIN)/MAX(RM34,RSQM-CTHMAX))
07971               ACTH3=LOG(MAX(RM34,RSQM+CTHMAX)/MAX(RM34,RSQM+CTHMIN))
07972               ACTH4=1D0/MAX(RM34,RSQM-CTHMAX)-1D0/MAX(RM34,RSQM-CTHMIN)
07973               ACTH5=1D0/MAX(RM34,RSQM+CTHMIN)-1D0/MAX(RM34,RSQM+CTHMAX)
07974               CTH=VINTPT(IACC,13)
07975               WTMAT(IBIN,1)=WTMAT(IBIN,1)+1D0
07976               WTMAT(IBIN,2)=WTMAT(IBIN,2)+(ACTH1/ACTH2)/
07977      &        MAX(RM34,RSQM-CTH)
07978               WTMAT(IBIN,3)=WTMAT(IBIN,3)+(ACTH1/ACTH3)/
07979      &        MAX(RM34,RSQM+CTH)
07980               WTMAT(IBIN,4)=WTMAT(IBIN,4)+(ACTH1/ACTH4)/
07981      &        MAX(RM34,RSQM-CTH)**2
07982               WTMAT(IBIN,5)=WTMAT(IBIN,5)+(ACTH1/ACTH5)/
07983      &        MAX(RM34,RSQM+CTH)**2
07984             ENDIF
07985   180     CONTINUE
07986  
07987 C...Check that equation system solvable.
07988           IF(MSTP(122).GE.2) WRITE(MSTU(11),5400) CVAR(IVAR)
07989           MSOLV=1
07990           WTRELS=0D0
07991           DO 190 IBIN=1,NBIN
07992             IF(MSTP(122).GE.2) WRITE(MSTU(11),5500) (WTMAT(IBIN,IRED),
07993      &      IRED=1,NBIN),WTREL(IBIN)
07994             IF(NAREL(IBIN).EQ.0) MSOLV=0
07995             WTRELS=WTRELS+WTREL(IBIN)
07996   190     CONTINUE
07997           IF(ABS(WTRELS).LT.1D-20) MSOLV=0
07998  
07999 C...Solve to find relative importance of cross-section pieces.
08000           IF(MSOLV.EQ.1) THEN
08001             DO 200 IBIN=1,NBIN
08002               WTRELN(IBIN)=MAX(0.1D0,WTREL(IBIN)/WTRELS)
08003               WTRSAV(IBIN)=WTREL(IBIN)
08004   200       CONTINUE
08005 C...Auxiliary vectors to record order of permutations
08006             DO I=1,NBIN
08007               IP(I) = I
08008               IQ(I) = I
08009             ENDDO
08010             DO 230 IRED=1,NBIN-1
08011               MROW=IRED
08012               RESMAX=ABS(WTREL(MROW))
08013 C...Find row with largest residual
08014               DO JBIN=IRED+1,NBIN
08015                 IF(RESMAX.LT.ABS(WTREL(JBIN))) THEN
08016                   MROW=JBIN
08017                   RESMAX=ABS(WTREL(MROW))
08018                 ENDIF
08019               ENDDO
08020               IF(RESMAX.LT.1D-20) THEN
08021                 MSOLV=0
08022                 GOTO 260
08023               ENDIF
08024               MCOL = IRED
08025               AMAX = ABS(WTMAT(MROW,MCOL))
08026 C...Find column with largest entry
08027               DO JBIN=IRED+1,NBIN
08028                 IF (AMAX.LT.ABS(WTMAT(MROW,JBIN))) THEN
08029                   MCOL = JBIN
08030                   AMAX = ABS(WTMAT(MROW,MCOL))
08031                 ENDIF
08032               ENDDO
08033 C...Swap rows if necessary
08034               IF(MROW.NE.IRED) THEN
08035                 DO JBIN=1,NBIN
08036                   TMPE=WTMAT(IRED,JBIN)
08037                   WTMAT(IRED,JBIN)=WTMAT(MROW,JBIN)
08038                   WTMAT(MROW,JBIN)=TMPE
08039                 ENDDO
08040                 TMPE=WTREL(IRED)
08041                 WTREL(IRED)=WTREL(MROW)
08042                 WTREL(MROW)=TMPE
08043                 MTMP=IQ(IRED)
08044                 IQ(IRED)=IQ(MROW)
08045                 IQ(MROW)=MTMP
08046               ENDIF
08047 C...Swap columns if necessary
08048               IF(MCOL.NE.IRED) THEN
08049                 DO JBIN=1,NBIN
08050                   TMPE=WTMAT(JBIN,IRED)
08051                   WTMAT(JBIN,IRED)=WTMAT(JBIN,MCOL)
08052                   WTMAT(JBIN,MCOL)=TMPE
08053                 ENDDO
08054                 MTMP=IP(IRED)
08055                 IP(IRED)=IP(MCOL)
08056                 IP(MCOL)=MTMP
08057               ENDIF
08058 C...Begin eliminating equations
08059               DO 220 IBIN=IRED+1,NBIN
08060                 IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
08061                   MSOLV=0
08062                   GOTO 260
08063                 ENDIF
08064 C                RQT=WTMAT(IBIN,IRED)/WTMAT(IRED,IRED)
08065                 RQTU=WTMAT(IBIN,IRED)
08066                 RQTL=WTMAT(IRED,IRED)
08067 C...Switch order of operations
08068                 WTREL(IBIN)=WTREL(IBIN)-RQTU*
08069      $            (WTREL(IRED)/RQTL)
08070                 DO 210 ICOE=IRED,NBIN
08071                    WTMAT(IBIN,ICOE)=WTMAT(IBIN,ICOE)-
08072      $                RQTU*(WTMAT(IRED,ICOE)/RQTL)
08073   210           CONTINUE
08074   220         CONTINUE
08075   230       CONTINUE
08076             DO 250 IRED=NBIN,1,-1
08077               DO 240 ICOE=IRED+1,NBIN
08078                 WTREL(IRED)=WTREL(IRED)-WTMAT(IRED,ICOE)*COEFU(ICOE)
08079   240         CONTINUE
08080               IF(ABS(WTMAT(IRED,IRED)).LT.1D-20) THEN
08081                 MSOLV=0
08082                 GOTO 260
08083               ENDIF
08084               COEFU(IRED)=WTREL(IRED)/WTMAT(IRED,IRED)
08085               TEMPC(IRED)=COEFU(IRED)
08086   250       CONTINUE
08087 C...Return to original order
08088             DO IBIN=1,NBIN
08089               MTMP=IP(IBIN)
08090               COEFU(MTMP)=TEMPC(IBIN)
08091             ENDDO
08092           ENDIF
08093  
08094 C...Share evenly if failure.
08095   260     IF(MSOLV.EQ.0) THEN
08096             DO 270 IBIN=1,NBIN
08097               COEFU(IBIN)=1D0
08098               WTRELN(IBIN)=0.1D0
08099               IF(WTRELS.GT.0D0) WTRELN(IBIN)=MAX(0.1D0,
08100      &        WTRSAV(IBIN)/WTRELS)
08101   270       CONTINUE
08102           ENDIF
08103  
08104 C...Normalize coefficients, with piece shared democratically.
08105           COEFSU=0D0
08106           WTRELS=0D0
08107           DO 280 IBIN=1,NBIN
08108             COEFU(IBIN)=MAX(0D0,COEFU(IBIN))
08109             COEFSU=COEFSU+COEFU(IBIN)
08110             WTRELS=WTRELS+WTRELN(IBIN)
08111   280     CONTINUE
08112           IF(COEFSU.GT.0D0) THEN
08113             DO 290 IBIN=1,NBIN
08114               COEFO(IBIN)=PARP(122)/NBIN+(1D0-PARP(122))*0.5D0*
08115      &        (COEFU(IBIN)/COEFSU+WTRELN(IBIN)/WTRELS)
08116   290       CONTINUE
08117           ELSE
08118             DO 300 IBIN=1,NBIN
08119               COEFO(IBIN)=1D0/NBIN
08120   300       CONTINUE
08121           ENDIF
08122           IF(IVAR.EQ.1) IOFF=0
08123           IF(IVAR.EQ.2) IOFF=17
08124           IF(IVAR.EQ.3) IOFF=7
08125           IF(IVAR.EQ.4) IOFF=12
08126           DO 310 IBIN=1,NBIN
08127             ICOF=IOFF+IBIN
08128             IF(IVAR.EQ.1) THEN
08129               IF(IBIN.EQ.NBIN.AND.(MINT(72).LE.2.AND.IPEAK7.EQ.1)) THEN
08130                 ICOF=7
08131               ENDIF
08132             ENDIF
08133             IF(IVAR.EQ.3.AND.IBIN.EQ.4.AND.MINT(45).NE.3) ICOF=ICOF+1
08134             IF(IVAR.EQ.1.AND.IBIN.GE.7+IPEAK7.AND.MINT(72).EQ.3) THEN
08135               COEFX(ISUB,IBIN-6-IPEAK7)=COEFO(IBIN)
08136             ELSE
08137               COEF(ISUB,ICOF)=COEFO(IBIN)
08138             ENDIF
08139   310     CONTINUE
08140           
08141           IF(MSTP(122).GE.2) WRITE(MSTU(11),5600) CVAR(IVAR),
08142      &       (COEFO(IBIN),IBIN=1,NBIN)
08143 
08144   320   CONTINUE
08145  
08146 C...Find two most promising maxima among points previously determined.
08147         DO 330 J=1,4
08148           IACCMX(J)=0
08149           SIGSMX(J)=0D0
08150   330   CONTINUE
08151         NMAX=0
08152         DO 390 IACC=1,NACC
08153           DO 340 J=1,30
08154             VINT(10+J)=VINTPT(IACC,J)
08155   340     CONTINUE
08156           IF(ISTSB.NE.5) THEN
08157             CALL PYSIGH(NCHN,SIGS)
08158             IF(MWTXS.EQ.1) THEN
08159               CALL PYEVWT(WTXS)
08160               SIGS=WTXS*SIGS
08161             ENDIF
08162           ELSE
08163             SIGS=0D0
08164             DO 350 IKIN3=1,MSTP(129)
08165               CALL PYKMAP(5,0,0D0)
08166               IF(MINT(51).EQ.1) GOTO 350
08167               CALL PYSIGH(NCHN,SIGTMP)
08168               IF(MWTXS.EQ.1) THEN
08169                 CALL PYEVWT(WTXS)
08170                 SIGTMP=WTXS*SIGTMP
08171               ENDIF
08172               IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
08173   350       CONTINUE
08174           ENDIF
08175           IEQ=0
08176           DO 360 IMV=1,NMAX
08177             IF(ABS(SIGS-SIGSMX(IMV)).LT.1D-4*(SIGS+SIGSMX(IMV))) IEQ=IMV
08178   360     CONTINUE
08179           IF(IEQ.EQ.0) THEN
08180             DO 370 IMV=NMAX,1,-1
08181               IIN=IMV+1
08182               IF(SIGS.LE.SIGSMX(IMV)) GOTO 380
08183               IACCMX(IMV+1)=IACCMX(IMV)
08184               SIGSMX(IMV+1)=SIGSMX(IMV)
08185   370       CONTINUE
08186             IIN=1
08187   380       IACCMX(IIN)=IACC
08188             SIGSMX(IIN)=SIGS
08189             IF(NMAX.LE.1) NMAX=NMAX+1
08190           ENDIF
08191   390   CONTINUE
08192  
08193 C...Read out starting position for search.
08194         IF(MSTP(122).GE.2) WRITE(MSTU(11),5700)
08195         SIGSAM=SIGSMX(1)
08196         DO 440 IMAX=1,NMAX
08197           IACC=IACCMX(IMAX)
08198           MTAU=MVARPT(IACC,1)
08199           MTAUP=MVARPT(IACC,2)
08200           MYST=MVARPT(IACC,3)
08201           MCTH=MVARPT(IACC,4)
08202           VTAU=0.5D0
08203           VYST=0.5D0
08204           VCTH=0.5D0
08205           VTAUP=0.5D0
08206  
08207 C...Starting point and step size in parameter space.
08208           DO 430 IRPT=1,2
08209             DO 420 IVAR=1,4
08210               IF(NPTS(IVAR).EQ.1) GOTO 420
08211               IF(IVAR.EQ.1) VVAR=VTAU
08212               IF(IVAR.EQ.2) VVAR=VTAUP
08213               IF(IVAR.EQ.3) VVAR=VYST
08214               IF(IVAR.EQ.4) VVAR=VCTH
08215               IF(IVAR.EQ.1) MVAR=MTAU
08216               IF(IVAR.EQ.2) MVAR=MTAUP
08217               IF(IVAR.EQ.3) MVAR=MYST
08218               IF(IVAR.EQ.4) MVAR=MCTH
08219               IF(IRPT.EQ.1) VDEL=0.1D0
08220               IF(IRPT.EQ.2) VDEL=MAX(0.01D0,MIN(0.05D0,VVAR-0.02D0,
08221      &        0.98D0-VVAR))
08222               IF(IRPT.EQ.1) VMAR=0.02D0
08223               IF(IRPT.EQ.2) VMAR=0.002D0
08224               IMOV0=1
08225               IF(IRPT.EQ.1.AND.IVAR.EQ.1) IMOV0=0
08226               DO 410 IMOV=IMOV0,8
08227  
08228 C...Define new point in parameter space.
08229                 IF(IMOV.EQ.0) THEN
08230                   INEW=2
08231                   VNEW=VVAR
08232                 ELSEIF(IMOV.EQ.1) THEN
08233                   INEW=3
08234                   VNEW=VVAR+VDEL
08235                 ELSEIF(IMOV.EQ.2) THEN
08236                   INEW=1
08237                   VNEW=VVAR-VDEL
08238                 ELSEIF(SIGSSM(3).GE.MAX(SIGSSM(1),SIGSSM(2)).AND.
08239      &            VVAR+2D0*VDEL.LT.1D0-VMAR) THEN
08240                   VVAR=VVAR+VDEL
08241                   SIGSSM(1)=SIGSSM(2)
08242                   SIGSSM(2)=SIGSSM(3)
08243                   INEW=3
08244                   VNEW=VVAR+VDEL
08245                 ELSEIF(SIGSSM(1).GE.MAX(SIGSSM(2),SIGSSM(3)).AND.
08246      &            VVAR-2D0*VDEL.GT.VMAR) THEN
08247                   VVAR=VVAR-VDEL
08248                   SIGSSM(3)=SIGSSM(2)
08249                   SIGSSM(2)=SIGSSM(1)
08250                   INEW=1
08251                   VNEW=VVAR-VDEL
08252                 ELSEIF(SIGSSM(3).GE.SIGSSM(1)) THEN
08253                   VDEL=0.5D0*VDEL
08254                   VVAR=VVAR+VDEL
08255                   SIGSSM(1)=SIGSSM(2)
08256                   INEW=2
08257                   VNEW=VVAR
08258                 ELSE
08259                   VDEL=0.5D0*VDEL
08260                   VVAR=VVAR-VDEL
08261                   SIGSSM(3)=SIGSSM(2)
08262                   INEW=2
08263                   VNEW=VVAR
08264                 ENDIF
08265  
08266 C...Convert to relevant variables and find derived new limits.
08267                 ILERR=0
08268                 IF(IVAR.EQ.1) THEN
08269                   VTAU=VNEW
08270                   CALL PYKMAP(1,MTAU,VTAU)
08271                   IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
08272                     CALL PYKLIM(4)
08273                     IF(MINT(51).EQ.1) ILERR=1
08274                   ENDIF
08275                 ENDIF
08276                 IF(IVAR.LE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5.AND.
08277      &          ILERR.EQ.0) THEN
08278                   IF(IVAR.EQ.2) VTAUP=VNEW
08279                   CALL PYKMAP(4,MTAUP,VTAUP)
08280                 ENDIF
08281                 IF(IVAR.LE.2.AND.ILERR.EQ.0) THEN
08282                   CALL PYKLIM(2)
08283                   IF(MINT(51).EQ.1) ILERR=1
08284                 ENDIF
08285                 IF(IVAR.LE.3.AND.ILERR.EQ.0) THEN
08286                   IF(IVAR.EQ.3) VYST=VNEW
08287                   CALL PYKMAP(2,MYST,VYST)
08288                   CALL PYKLIM(3)
08289                   IF(MINT(51).EQ.1) ILERR=1
08290                 ENDIF
08291                 IF((ISTSB.EQ.2.OR.ISTSB.EQ.4.OR.ISTSB.EQ.6).AND.
08292      &          ILERR.EQ.0) THEN
08293                   IF(IVAR.EQ.4) VCTH=VNEW
08294                   CALL PYKMAP(3,MCTH,VCTH)
08295                 ENDIF
08296                 IF(ISUB.EQ.96) VINT(25)=VINT(21)*(1.-VINT(23)**2)
08297  
08298 C...Evaluate cross-section. Save new maximum. Final maximum.
08299                 IF(ILERR.NE.0) THEN
08300                    SIGS=0.
08301                 ELSEIF(ISTSB.NE.5) THEN
08302                   CALL PYSIGH(NCHN,SIGS)
08303                   IF(MWTXS.EQ.1) THEN
08304                     CALL PYEVWT(WTXS)
08305                     SIGS=WTXS*SIGS
08306                   ENDIF
08307                 ELSE
08308                   SIGS=0D0
08309                   DO 400 IKIN3=1,MSTP(129)
08310                     CALL PYKMAP(5,0,0D0)
08311                     IF(MINT(51).EQ.1) GOTO 400
08312                     CALL PYSIGH(NCHN,SIGTMP)
08313                     IF(MWTXS.EQ.1) THEN
08314                         CALL PYEVWT(WTXS)
08315                         SIGTMP=WTXS*SIGTMP
08316                     ENDIF
08317                     IF(SIGTMP.GT.SIGS) SIGS=SIGTMP
08318   400             CONTINUE
08319                 ENDIF
08320                 SIGSSM(INEW)=SIGS
08321                 IF(SIGS.GT.SIGSAM) SIGSAM=SIGS
08322                 IF(MSTP(122).GE.2) WRITE(MSTU(11),5800) IMAX,IVAR,MVAR,
08323      &          IMOV,VNEW,VINT(21),VINT(22),VINT(23),VINT(26),SIGS
08324   410         CONTINUE
08325   420       CONTINUE
08326   430     CONTINUE
08327   440   CONTINUE
08328         IF(MSTP(121).EQ.1) SIGSAM=PARP(121)*SIGSAM
08329         XSEC(ISUB,1)=1.05D0*SIGSAM
08330 C...Add extra headroom for UED
08331         IF(ISUB.GT.310.AND.ISUB.LT.320) XSEC(ISUB,1)=XSEC(ISUB,1)*1.1D0
08332         IF(MINT(141).NE.0.OR.MINT(142).NE.0) XSEC(ISUB,1)=
08333      &  WTGAGA*XSEC(ISUB,1)
08334   450   CONTINUE
08335         IF(MSTP(173).EQ.1.AND.ISUB.NE.96) XSEC(ISUB,1)=
08336      &  PARP(174)*XSEC(ISUB,1)
08337         IF(ISUB.NE.96) XSEC(0,1)=XSEC(0,1)+XSEC(ISUB,1)
08338   460 CONTINUE
08339       MINT(51)=0
08340  
08341 C...Print summary table.
08342       IF(MINT(121).EQ.1.AND.NPOSI.EQ.0) THEN
08343         IF(MSTP(127).NE.1) THEN
08344           WRITE(MSTU(11),5900)
08345           CALL PYSTOP(1)
08346         ELSE
08347           WRITE(MSTU(11),6400)
08348           MSTI(53)=1
08349         ENDIF
08350       ENDIF
08351       IF(MSTP(122).GE.1) THEN
08352         WRITE(MSTU(11),6000)
08353         WRITE(MSTU(11),6100)
08354         DO 470 ISUB=1,500
08355           IF(MSUB(ISUB).NE.1.AND.ISUB.NE.96) GOTO 470
08356           IF(ISUB.EQ.96.AND.MINT(50).EQ.0) GOTO 470
08357           IF(ISUB.EQ.96.AND.MSUB(95).NE.1.AND.MOD(MSTP(81),10).LE.0)
08358      &    GOTO 470
08359           IF(ISUB.EQ.96.AND.MINT(49).EQ.0.AND.MSTP(131).EQ.0) GOTO 470
08360           IF(MSUB(95).EQ.1.AND.(ISUB.EQ.11.OR.ISUB.EQ.12.OR.ISUB.EQ.13
08361      &    .OR.ISUB.EQ.28.OR.ISUB.EQ.53.OR.ISUB.EQ.68)) GOTO 470
08362           IF(MSUB(95).EQ.1.AND.ISUB.GE.381.AND.ISUB.LE.386) GOTO 470
08363           WRITE(MSTU(11),6200) ISUB,PROC(ISUB),XSEC(ISUB,1)
08364   470   CONTINUE
08365         WRITE(MSTU(11),6300)
08366       ENDIF
08367  
08368 C...Format statements for maximization results.
08369  5000 FORMAT(/1X,'Coefficient optimization and maximum search for ',
08370      &'subprocess no',I4/1X,'Coefficient modes     tau',10X,'y*',9X,
08371      &'cth',9X,'tau''',7X,'sigma')
08372  5100 FORMAT(1X,'Warning: requested subprocess ',I3,' has no allowed ',
08373      &'phase space.'/1X,'Process switched off!')
08374  5200 FORMAT(1X,4I4,F12.8,F12.6,F12.7,F12.8,1P,D12.4)
08375  5300 FORMAT(1X,'Warning: requested subprocess ',I3,' has vanishing ',
08376      &'cross-section.'/1X,'Process switched off!')
08377  5400 FORMAT(1X,'Coefficients of equation system to be solved for ',A4)
08378  5500 FORMAT(1X,1P,10D11.3)
08379  5600 FORMAT(1X,'Result for ',A4,':',9F9.4)
08380  5700 FORMAT(1X,'Maximum search for given coefficients'/2X,'MAX VAR ',
08381      &'MOD MOV   VNEW',7X,'tau',7X,'y*',8X,'cth',7X,'tau''',7X,'sigma')
08382  5800 FORMAT(1X,4I4,F8.4,F11.7,F9.3,F11.6,F11.7,1P,D12.4)
08383  5900 FORMAT(1X,'Error: no requested process has non-vanishing ',
08384      &'cross-section.'/1X,'Execution stopped!')
08385  6000 FORMAT(/1X,8('*'),1X,'PYMAXI: summary of differential ',
08386      &'cross-section maximum search',1X,8('*'))
08387  6100 FORMAT(/11X,58('=')/11X,'I',38X,'I',17X,'I'/11X,'I  ISUB  ',
08388      &'Subprocess name',15X,'I  Maximum value  I'/11X,'I',38X,'I',
08389      &17X,'I'/11X,58('=')/11X,'I',38X,'I',17X,'I')
08390  6200 FORMAT(11X,'I',2X,I3,3X,A28,2X,'I',2X,1P,D12.4,3X,'I')
08391  6300 FORMAT(11X,'I',38X,'I',17X,'I'/11X,58('='))
08392  6400 FORMAT(1X,'Error: no requested process has non-vanishing ',
08393      &'cross-section.'/
08394      &1X,'Execution will stop if you try to generate events.')
08395  
08396       RETURN
08397       END
08398  
08399 C*********************************************************************
08400  
08401 C...PYPILE
08402 C...Initializes multiplicity distribution and selects mutliplicity
08403 C...of pileup events, i.e. several events occuring at the same
08404 C...beam crossing.
08405  
08406       SUBROUTINE PYPILE(MPILE)
08407  
08408 C...Double precision and integer declarations.
08409       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
08410       IMPLICIT INTEGER(I-N)
08411       INTEGER PYK,PYCHGE,PYCOMP
08412 C...Commonblocks.
08413       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
08414       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
08415       COMMON/PYINT1/MINT(400),VINT(400)
08416       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
08417       SAVE /PYDAT1/,/PYPARS/,/PYINT1/,/PYINT7/
08418 C...Local arrays and saved variables.
08419       DIMENSION WTI(0:200)
08420       SAVE IMIN,IMAX,WTI,WTS
08421  
08422 C...Sum of allowed cross-sections for pileup events.
08423       IF(MPILE.EQ.1) THEN
08424         VINT(131)=SIGT(0,0,5)
08425         IF(MSTP(132).GE.2) VINT(131)=VINT(131)+SIGT(0,0,4)
08426         IF(MSTP(132).GE.3) VINT(131)=VINT(131)+SIGT(0,0,2)+SIGT(0,0,3)
08427         IF(MSTP(132).GE.4) VINT(131)=VINT(131)+SIGT(0,0,1)
08428         IF(MSTP(133).LE.0) RETURN
08429  
08430 C...Initialize multiplicity distribution at maximum.
08431         XNAVE=VINT(131)*PARP(131)
08432         IF(XNAVE.GT.120D0) WRITE(MSTU(11),5000) XNAVE
08433         INAVE=MAX(1,MIN(200,NINT(XNAVE)))
08434         WTI(INAVE)=1D0
08435         WTS=WTI(INAVE)
08436         WTN=WTI(INAVE)*INAVE
08437  
08438 C...Find shape of multiplicity distribution below maximum.
08439         IMIN=INAVE
08440         DO 100 I=INAVE-1,1,-1
08441           IF(MSTP(133).EQ.1) WTI(I)=WTI(I+1)*(I+1)/XNAVE
08442           IF(MSTP(133).GE.2) WTI(I)=WTI(I+1)*I/XNAVE
08443           IF(WTI(I).LT.1D-6) GOTO 110
08444           WTS=WTS+WTI(I)
08445           WTN=WTN+WTI(I)*I
08446           IMIN=I
08447   100   CONTINUE
08448  
08449 C...Find shape of multiplicity distribution above maximum.
08450   110   IMAX=INAVE
08451         DO 120 I=INAVE+1,200
08452           IF(MSTP(133).EQ.1) WTI(I)=WTI(I-1)*XNAVE/I
08453           IF(MSTP(133).GE.2) WTI(I)=WTI(I-1)*XNAVE/(I-1)
08454           IF(WTI(I).LT.1D-6) GOTO 130
08455           WTS=WTS+WTI(I)
08456           WTN=WTN+WTI(I)*I
08457           IMAX=I
08458   120   CONTINUE
08459   130   VINT(132)=XNAVE
08460         VINT(133)=WTN/WTS
08461         IF(MSTP(133).EQ.1.AND.IMIN.EQ.1) VINT(134)=
08462      &  WTS/(WTS+WTI(1)/XNAVE)
08463         IF(MSTP(133).EQ.1.AND.IMIN.GT.1) VINT(134)=1D0
08464         IF(MSTP(133).GE.2) VINT(134)=XNAVE
08465  
08466 C...Pick multiplicity of pileup events.
08467       ELSE
08468         IF(MSTP(133).LE.0) THEN
08469           MINT(81)=MAX(1,MSTP(134))
08470         ELSE
08471           WTR=WTS*PYR(0)
08472           DO 140 I=IMIN,IMAX
08473             MINT(81)=I
08474             WTR=WTR-WTI(I)
08475             IF(WTR.LE.0D0) GOTO 150
08476   140     CONTINUE
08477   150     CONTINUE
08478         ENDIF
08479       ENDIF
08480  
08481 C...Format statement for error message.
08482  5000 FORMAT(1X,'Warning: requested average number of events per bunch',
08483      &'crossing too large, ',1P,D12.4)
08484  
08485       RETURN
08486       END
08487  
08488 C*********************************************************************
08489  
08490 C...PYSAVE
08491 C...Saves and restores parameter and cross section values for the
08492 C...3 gamma-p and 6 (or 4, or 9, or 13) gamma-gamma alternatives.
08493 C...Also makes random choice between alternatives.
08494  
08495       SUBROUTINE PYSAVE(ISAVE,IGA)
08496  
08497 C...Double precision and integer declarations.
08498       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
08499       IMPLICIT INTEGER(I-N)
08500       INTEGER PYK,PYCHGE,PYCOMP
08501 C...Commonblocks.
08502       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
08503       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
08504       COMMON/PYINT1/MINT(400),VINT(400)
08505       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
08506       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
08507       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
08508       SAVE /PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYINT7/
08509 C...Local arrays and saved variables.
08510       DIMENSION NCP(15),NSUBCP(15,20),MSUBCP(15,20),COEFCP(15,20,20),
08511      &NGENCP(15,0:20,3),XSECCP(15,0:20,3),SIGTCP(15,0:6,0:6,0:5),
08512      &INTCP(15,20),RECP(15,20)
08513       SAVE NCP,NSUBCP,MSUBCP,COEFCP,NGENCP,XSECCP,SIGTCP,INTCP,RECP
08514  
08515 C...Save list of subprocesses and cross-section information.
08516       IF(ISAVE.EQ.1) THEN
08517         ICP=0
08518         DO 120 I=1,500
08519           IF(MSUB(I).EQ.0.AND.I.NE.96.AND.I.NE.97) GOTO 120
08520           ICP=ICP+1
08521           NSUBCP(IGA,ICP)=I
08522           MSUBCP(IGA,ICP)=MSUB(I)
08523           DO 100 J=1,20
08524             COEFCP(IGA,ICP,J)=COEF(I,J)
08525   100     CONTINUE
08526           DO 110 J=1,3
08527             NGENCP(IGA,ICP,J)=NGEN(I,J)
08528             XSECCP(IGA,ICP,J)=XSEC(I,J)
08529   110     CONTINUE
08530   120   CONTINUE
08531         NCP(IGA)=ICP
08532         DO 130 J=1,3
08533           NGENCP(IGA,0,J)=NGEN(0,J)
08534           XSECCP(IGA,0,J)=XSEC(0,J)
08535   130   CONTINUE
08536         DO 160 I1=0,6
08537           DO 150 I2=0,6
08538             DO 140 J=0,5
08539               SIGTCP(IGA,I1,I2,J)=SIGT(I1,I2,J)
08540   140       CONTINUE
08541   150     CONTINUE
08542   160   CONTINUE
08543  
08544 C...Save various common process variables.
08545         DO 170 J=1,10
08546           INTCP(IGA,J)=MINT(40+J)
08547   170   CONTINUE
08548         INTCP(IGA,11)=MINT(101)
08549         INTCP(IGA,12)=MINT(102)
08550         INTCP(IGA,13)=MINT(107)
08551         INTCP(IGA,14)=MINT(108)
08552         INTCP(IGA,15)=MINT(123)
08553         RECP(IGA,1)=CKIN(3)
08554         RECP(IGA,2)=VINT(318)
08555  
08556 C...Save cross-section information only.
08557       ELSEIF(ISAVE.EQ.2) THEN
08558         DO 190 ICP=1,NCP(IGA)
08559           I=NSUBCP(IGA,ICP)
08560           DO 180 J=1,3
08561             NGENCP(IGA,ICP,J)=NGEN(I,J)
08562             XSECCP(IGA,ICP,J)=XSEC(I,J)
08563   180     CONTINUE
08564   190   CONTINUE
08565         DO 200 J=1,3
08566           NGENCP(IGA,0,J)=NGEN(0,J)
08567           XSECCP(IGA,0,J)=XSEC(0,J)
08568   200   CONTINUE
08569  
08570 C...Choose between allowed alternatives.
08571       ELSEIF(ISAVE.EQ.3.OR.ISAVE.EQ.4) THEN
08572         IF(ISAVE.EQ.4) THEN
08573           XSUMCP=0D0
08574           DO 210 IG=1,MINT(121)
08575             XSUMCP=XSUMCP+XSECCP(IG,0,1)
08576   210     CONTINUE
08577           XSUMCP=XSUMCP*PYR(0)
08578           DO 220 IG=1,MINT(121)
08579             IGA=IG
08580             XSUMCP=XSUMCP-XSECCP(IG,0,1)
08581             IF(XSUMCP.LE.0D0) GOTO 230
08582   220     CONTINUE
08583   230     CONTINUE
08584         ENDIF
08585  
08586 C...Restore cross-section information.
08587         DO 240 I=1,500
08588           MSUB(I)=0
08589   240   CONTINUE
08590         DO 270 ICP=1,NCP(IGA)
08591           I=NSUBCP(IGA,ICP)
08592           MSUB(I)=MSUBCP(IGA,ICP)
08593           DO 250 J=1,20
08594             COEF(I,J)=COEFCP(IGA,ICP,J)
08595   250     CONTINUE
08596           DO 260 J=1,3
08597             NGEN(I,J)=NGENCP(IGA,ICP,J)
08598             XSEC(I,J)=XSECCP(IGA,ICP,J)
08599   260     CONTINUE
08600   270   CONTINUE
08601         DO 280 J=1,3
08602           NGEN(0,J)=NGENCP(IGA,0,J)
08603           XSEC(0,J)=XSECCP(IGA,0,J)
08604   280   CONTINUE
08605         DO 310 I1=0,6
08606           DO 300 I2=0,6
08607             DO 290 J=0,5
08608               SIGT(I1,I2,J)=SIGTCP(IGA,I1,I2,J)
08609   290       CONTINUE
08610   300     CONTINUE
08611   310   CONTINUE
08612  
08613 C...Restore various common process variables.
08614         DO 320 J=1,10
08615           MINT(40+J)=INTCP(IGA,J)
08616   320   CONTINUE
08617         MINT(101)=INTCP(IGA,11)
08618         MINT(102)=INTCP(IGA,12)
08619         MINT(107)=INTCP(IGA,13)
08620         MINT(108)=INTCP(IGA,14)
08621         MINT(123)=INTCP(IGA,15)
08622         CKIN(3)=RECP(IGA,1)
08623         CKIN(1)=2D0*CKIN(3)
08624         VINT(318)=RECP(IGA,2)
08625  
08626 C...Sum up cross-section info (for PYSTAT).
08627       ELSEIF(ISAVE.EQ.5) THEN
08628         DO 330 I=1,500
08629           MSUB(I)=0
08630           NGEN(I,1)=0
08631           NGEN(I,3)=0
08632           XSEC(I,3)=0D0
08633   330   CONTINUE
08634         NGEN(0,1)=0
08635         NGEN(0,2)=0
08636         NGEN(0,3)=0
08637         XSEC(0,3)=0
08638         DO 350 IG=1,MINT(121)
08639           DO 340 ICP=1,NCP(IG)
08640             I=NSUBCP(IG,ICP)
08641             IF(MSUBCP(IG,ICP).EQ.1) MSUB(I)=1
08642             NGEN(I,1)=NGEN(I,1)+NGENCP(IG,ICP,1)
08643             NGEN(I,3)=NGEN(I,3)+NGENCP(IG,ICP,3)
08644             XSEC(I,3)=XSEC(I,3)+XSECCP(IG,ICP,3)
08645   340     CONTINUE
08646           NGEN(0,1)=NGEN(0,1)+NGENCP(IG,0,1)
08647           NGEN(0,2)=NGEN(0,2)+NGENCP(IG,0,2)
08648           NGEN(0,3)=NGEN(0,3)+NGENCP(IG,0,3)
08649           XSEC(0,3)=XSEC(0,3)+XSECCP(IG,0,3)
08650   350   CONTINUE
08651       ENDIF
08652  
08653       RETURN
08654       END
08655  
08656 C*********************************************************************
08657  
08658 C...PYGAGA
08659 C...For lepton beams it gives photon-hadron or photon-photon systems
08660 C...to be treated with the ordinary machinery and combines this with a
08661 C...description of the lepton -> lepton + photon branching.
08662  
08663       SUBROUTINE PYGAGA(IGAGA,WTGAGA)
08664  
08665 C...Double precision and integer declarations.
08666       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
08667       IMPLICIT INTEGER(I-N)
08668       INTEGER PYK,PYCHGE,PYCOMP
08669 C...Commonblocks.
08670       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
08671       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
08672       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
08673       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
08674       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
08675       COMMON/PYINT1/MINT(400),VINT(400)
08676       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
08677       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
08678      &/PYINT5/
08679 C...Local variables and data statement.
08680       DIMENSION PMS(2),XMIN(2),XMAX(2),Q2MIN(2),Q2MAX(2),PMC(3),
08681      &X(2),Q2(2),Y(2),THETA(2),PHI(2),PT(2),BETA(3)
08682       SAVE PMS,XMIN,XMAX,Q2MIN,Q2MAX,PMC,X,Q2,THETA,PHI,PT,W2MIN
08683       DATA EPS/1D-4/
08684  
08685 C...Initialize generation of photons inside leptons.
08686       IF(IGAGA.EQ.1) THEN
08687  
08688 C...Save quantities on incoming lepton system.
08689         VINT(301)=VINT(1)
08690         VINT(302)=VINT(2)
08691         PMS(1)=VINT(303)**2
08692         IF(MINT(141).EQ.0) PMS(1)=SIGN(VINT(3)**2,VINT(3))
08693         PMS(2)=VINT(304)**2
08694         IF(MINT(142).EQ.0) PMS(2)=SIGN(VINT(4)**2,VINT(4))
08695         PMC(3)=VINT(302)-PMS(1)-PMS(2)
08696         W2MIN=MAX(CKIN(77),2D0*CKIN(3),2D0*CKIN(5))**2
08697  
08698 C...Calculate range of x and Q2 values allowed in generation.
08699         DO 100 I=1,2
08700           PMC(I)=VINT(302)+PMS(I)-PMS(3-I)
08701           IF(MINT(140+I).NE.0) THEN
08702             XMIN(I)=MAX(CKIN(59+2*I),EPS)
08703             XMAX(I)=MIN(CKIN(60+2*I),1D0-2D0*VINT(301)*SQRT(PMS(I))/
08704      &      PMC(I),1D0-EPS)
08705             YMIN=MAX(CKIN(71+2*I),EPS)
08706             YMAX=MIN(CKIN(72+2*I),1D0-EPS)
08707             IF(CKIN(64+2*I).GT.0D0) XMIN(I)=MAX(XMIN(I),
08708      &      (YMIN*PMC(3)-CKIN(64+2*I))/PMC(I))
08709             XMAX(I)=MIN(XMAX(I),(YMAX*PMC(3)-CKIN(63+2*I))/PMC(I))
08710             THEMIN=MAX(CKIN(67+2*I),0D0)
08711             THEMAX=MIN(CKIN(68+2*I),PARU(1))
08712             IF(CKIN(68+2*I).LT.0D0) THEMAX=PARU(1)
08713             Q2MIN(I)=MAX(CKIN(63+2*I),XMIN(I)**2*PMS(I)/(1D0-XMIN(I))+
08714      &      ((1D0-XMAX(I))*(VINT(302)-2D0*PMS(3-I))-
08715      &      2D0*PMS(I)/(1D0-XMAX(I)))*SIN(THEMIN/2D0)**2,0D0)
08716             Q2MAX(I)=XMAX(I)**2*PMS(I)/(1D0-XMAX(I))+
08717      &      ((1D0-XMIN(I))*(VINT(302)-2D0*PMS(3-I))-
08718      &      2D0*PMS(I)/(1D0-XMIN(I)))*SIN(THEMAX/2D0)**2
08719             IF(CKIN(64+2*I).GT.0D0) Q2MAX(I)=MIN(CKIN(64+2*I),Q2MAX(I))
08720 C...W limits when lepton on one side only.
08721             IF(MINT(143-I).EQ.0) THEN
08722               XMIN(I)=MAX(XMIN(I),(W2MIN-PMS(3-I))/PMC(I))
08723               IF(CKIN(78).GT.0D0) XMAX(I)=MIN(XMAX(I),
08724      &        (CKIN(78)**2-PMS(3-I))/PMC(I))
08725             ENDIF
08726           ENDIF
08727   100   CONTINUE
08728  
08729 C...W limits when lepton on both sides.
08730         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
08731           IF(CKIN(78).GT.0D0) XMAX(1)=MIN(XMAX(1),
08732      &    (CKIN(78)**2+PMC(3)-PMC(2)*XMIN(2))/PMC(1))
08733           IF(CKIN(78).GT.0D0) XMAX(2)=MIN(XMAX(2),
08734      &    (CKIN(78)**2+PMC(3)-PMC(1)*XMIN(1))/PMC(2))
08735           IF(IABS(MINT(141)).NE.IABS(MINT(142))) THEN
08736             XMIN(1)=MAX(XMIN(1),(PMS(1)-PMS(2)+VINT(302)*(W2MIN-
08737      &      PMS(1)-PMS(2))/(PMC(2)*XMAX(2)+PMS(1)-PMS(2)))/PMC(1))
08738             XMIN(2)=MAX(XMIN(2),(PMS(2)-PMS(1)+VINT(302)*(W2MIN-
08739      &      PMS(1)-PMS(2))/(PMC(1)*XMAX(1)+PMS(2)-PMS(1)))/PMC(2))
08740           ELSE
08741             XMIN(1)=MAX(XMIN(1),W2MIN/(VINT(302)*XMAX(2)))
08742             XMIN(2)=MAX(XMIN(2),W2MIN/(VINT(302)*XMAX(1)))
08743           ENDIF
08744         ENDIF
08745  
08746 C...Q2 and W values and photon flux weight factors for initialization.
08747       ELSEIF(IGAGA.EQ.2) THEN
08748         ISUB=MINT(1)
08749         MINT(15)=0
08750         MINT(16)=0
08751  
08752 C...W value for photon on one or both sides, and for processes
08753 C...with gamma-gamma cross section peaked at small shat.
08754         IF(MINT(141).NE.0.AND.MINT(142).EQ.0) THEN
08755           VINT(2)=VINT(302)+PMS(1)-PMC(1)*(1D0-XMAX(1))
08756         ELSEIF(MINT(141).EQ.0.AND.MINT(142).NE.0) THEN
08757           VINT(2)=VINT(302)+PMS(2)-PMC(2)*(1D0-XMAX(2))
08758         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
08759           VINT(2)=MAX(CKIN(77)**2,12D0*MAX(CKIN(3),CKIN(5))**2)
08760           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
08761         ELSE
08762           VINT(2)=XMAX(1)*XMAX(2)*VINT(302)
08763           IF(CKIN(78).GT.0D0) VINT(2)=MIN(VINT(2),CKIN(78)**2)
08764         ENDIF
08765         VINT(1)=SQRT(MAX(0D0,VINT(2)))
08766  
08767 C...Upper estimate of photon flux weight factor.
08768 C...Initialization Q2 scale. Flag incoming unresolved photon.
08769         WTGAGA=1D0
08770         DO 110 I=1,2
08771           IF(MINT(140+I).NE.0) THEN
08772             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
08773      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
08774             IF(ISUB.EQ.99.AND.MINT(106+I).EQ.4.AND.MINT(109-I).EQ.3)
08775      &      THEN
08776               Q2INIT=5D0+Q2MIN(3-I)
08777             ELSEIF(ISUB.EQ.99.AND.MINT(106+I).EQ.4) THEN
08778               Q2INIT=PMAS(PYCOMP(113),1)**2+Q2MIN(3-I)
08779             ELSEIF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
08780               Q2INIT=MAX(CKIN(1),2D0*CKIN(3),2D0*CKIN(5))**2/3D0
08781             ELSEIF((ISUB.EQ.138.AND.I.EQ.2).OR.
08782      &      (ISUB.EQ.139.AND.I.EQ.1)) THEN
08783               Q2INIT=VINT(2)/3D0
08784             ELSEIF(ISUB.EQ.140) THEN
08785               Q2INIT=VINT(2)/2D0
08786             ELSE
08787               Q2INIT=Q2MIN(I)
08788             ENDIF
08789             VINT(2+I)=-SQRT(MAX(Q2MIN(I),MIN(Q2MAX(I),Q2INIT)))
08790             IF(MSTP(14).EQ.0.OR.(ISUB.GE.131.AND.ISUB.LE.140))
08791      &      MINT(14+I)=22
08792             VINT(306+I)=VINT(2+I)**2
08793           ENDIF
08794   110   CONTINUE
08795         VINT(320)=WTGAGA
08796  
08797 C...Update pTmin and cross section information.
08798         IF(MSTP(82).LE.1) THEN
08799           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
08800         ELSE
08801           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
08802         ENDIF
08803         VINT(149)=4D0*PTMN**2/VINT(2)
08804         VINT(154)=PTMN
08805         CALL PYXTOT
08806         VINT(318)=VINT(317)
08807  
08808 C...Generate photons inside leptons and
08809 C...calculate photon flux weight factors.
08810       ELSEIF(IGAGA.EQ.3) THEN
08811         ISUB=MINT(1)
08812         MINT(15)=0
08813         MINT(16)=0
08814  
08815 C...Generate phase space point and check against cuts.
08816         LOOP=0
08817   120   LOOP=LOOP+1
08818         DO 130 I=1,2
08819           IF(MINT(140+I).NE.0) THEN
08820 C...Pick x and Q2
08821             X(I)=XMIN(I)*(XMAX(I)/XMIN(I))**PYR(0)
08822             Q2(I)=Q2MIN(I)*(Q2MAX(I)/Q2MIN(I))**PYR(0)
08823 C...Cuts on internal consistency in x and Q2.
08824             IF(Q2(I).LT.X(I)**2*PMS(I)/(1D0-X(I))) GOTO 120
08825             IF(Q2(I).GT.(1D0-X(I))*(VINT(302)-2D0*PMS(3-I))-
08826      &      (2D0-X(I)**2)*PMS(I)/(1D0-X(I))) GOTO 120
08827 C...Cuts on y and theta.
08828             Y(I)=(PMC(I)*X(I)+Q2(I))/PMC(3)
08829             IF(Y(I).LT.CKIN(71+2*I).OR.Y(I).GT.CKIN(72+2*I)) GOTO 120
08830             RAT=((1D0-X(I))*Q2(I)-X(I)**2*PMS(I))/
08831      &      ((1D0-X(I))**2*(VINT(302)-2D0*PMS(3-I)-2D0*PMS(I)))
08832             THETA(I)=2D0*ASIN(SQRT(MAX(0D0,MIN(1D0,RAT))))
08833             IF(THETA(I).LT.CKIN(67+2*I)) GOTO 120
08834             IF(CKIN(68+2*I).GT.0D0.AND.THETA(I).GT.CKIN(68+2*I))
08835      &      GOTO 120
08836  
08837 C...Phi angle isotropic. Reconstruct pT.
08838             PHI(I)=PARU(2)*PYR(0)
08839             PT(I)=SQRT(((1D0-X(I))*PMC(I))**2/(4D0*VINT(302))-
08840      &      PMS(I))*SIN(THETA(I))
08841  
08842 C...Store info on variables selected, for documentation purposes.
08843             VINT(2+I)=-SQRT(Q2(I))
08844             VINT(304+I)=X(I)
08845             VINT(306+I)=Q2(I)
08846             VINT(308+I)=Y(I)
08847             VINT(310+I)=THETA(I)
08848             VINT(312+I)=PHI(I)
08849           ELSE
08850             VINT(304+I)=1D0
08851             VINT(306+I)=0D0
08852             VINT(308+I)=1D0
08853             VINT(310+I)=0D0
08854             VINT(312+I)=0D0
08855           ENDIF
08856   130   CONTINUE
08857  
08858 C...Cut on W combines info from two sides.
08859         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
08860           W2=-Q2(1)-Q2(2)+0.5D0*X(1)*PMC(1)*X(2)*PMC(2)/VINT(302)-
08861      &    2D0*PT(1)*PT(2)*COS(PHI(1)-PHI(2))+2D0*
08862      &    SQRT((0.5D0*X(1)*PMC(1)/VINT(301))**2+Q2(1)-PT(1)**2)*
08863      &    SQRT((0.5D0*X(2)*PMC(2)/VINT(301))**2+Q2(2)-PT(2)**2)
08864           IF(W2.LT.W2MIN) GOTO 120
08865           IF(CKIN(78).GT.0D0.AND.W2.GT.CKIN(78)**2) GOTO 120
08866           PMS1=-Q2(1)
08867           PMS2=-Q2(2)
08868         ELSEIF(MINT(141).NE.0) THEN
08869           W2=(VINT(302)+PMS(1))*X(1)+PMS(2)*(1D0-X(1))
08870           PMS1=-Q2(1)
08871           PMS2=PMS(2)
08872         ELSEIF(MINT(142).NE.0) THEN
08873           W2=(VINT(302)+PMS(2))*X(2)+PMS(1)*(1D0-X(2))
08874           PMS1=PMS(1)
08875           PMS2=-Q2(2)
08876         ENDIF
08877  
08878 C...Store kinematics info for photon(s) in subsystem cm frame.
08879         VINT(2)=W2
08880         VINT(1)=SQRT(W2)
08881         VINT(291)=0D0
08882         VINT(292)=0D0
08883         VINT(293)=0.5D0*SQRT((W2-PMS1-PMS2)**2-4D0*PMS1*PMS2)/VINT(1)
08884         VINT(294)=0.5D0*(W2+PMS1-PMS2)/VINT(1)
08885         VINT(295)=SIGN(SQRT(ABS(PMS1)),PMS1)
08886         VINT(296)=0D0
08887         VINT(297)=0D0
08888         VINT(298)=-VINT(293)
08889         VINT(299)=0.5D0*(W2+PMS2-PMS1)/VINT(1)
08890         VINT(300)=SIGN(SQRT(ABS(PMS2)),PMS2)
08891  
08892 C...Assign weight for photon flux; different for transverse and
08893 C...longitudinal photons. Flag incoming unresolved photon.
08894         WTGAGA=1D0
08895         DO 140 I=1,2
08896           IF(MINT(140+I).NE.0) THEN
08897             WTGAGA=WTGAGA*2D0*(PARU(101)/PARU(2))*
08898      &      LOG(XMAX(I)/XMIN(I))*LOG(Q2MAX(I)/Q2MIN(I))
08899             IF(MSTP(16).EQ.0) THEN
08900               XY=X(I)
08901             ELSE
08902               WTGAGA=WTGAGA*X(I)/Y(I)
08903               XY=Y(I)
08904             ENDIF
08905             IF(ISUB.EQ.132.OR.ISUB.EQ.134.OR.ISUB.EQ.136) THEN
08906               WTGAGA=WTGAGA*(1D0-XY)
08907             ELSEIF(I.EQ.1.AND.(ISUB.EQ.139.OR.ISUB.EQ.140)) THEN
08908               WTGAGA=WTGAGA*(1D0-XY)
08909             ELSEIF(I.EQ.2.AND.(ISUB.EQ.138.OR.ISUB.EQ.140)) THEN
08910               WTGAGA=WTGAGA*(1D0-XY)
08911             ELSE
08912               WTGAGA=WTGAGA*(0.5D0*(1D0+(1D0-XY)**2)-
08913      &        PMS(I)*XY**2/Q2(I))
08914             ENDIF
08915             IF(MINT(106+I).EQ.0) MINT(14+I)=22
08916           ENDIF
08917   140   CONTINUE
08918         VINT(319)=WTGAGA
08919         MINT(143)=LOOP
08920  
08921 C...Update pTmin and cross section information.
08922         IF(MSTP(82).LE.1) THEN
08923           PTMN=PARP(81)*(VINT(1)/PARP(89))**PARP(90)
08924         ELSE
08925           PTMN=PARP(82)*(VINT(1)/PARP(89))**PARP(90)
08926         ENDIF
08927         VINT(149)=4D0*PTMN**2/VINT(2)
08928         VINT(154)=PTMN
08929         CALL PYXTOT
08930  
08931 C...Reconstruct kinematics of photons inside leptons.
08932       ELSEIF(IGAGA.EQ.4) THEN
08933  
08934 C...Make place for incoming particles and scattered leptons.
08935         MOVE=3
08936         IF(MINT(141).NE.0.AND.MINT(142).NE.0) MOVE=4
08937         MINT(4)=MINT(4)+MOVE
08938         DO 160 I=MINT(84)-MOVE,MINT(83)+1,-1
08939           IF(K(I,1).EQ.21) THEN
08940             DO 150 J=1,5
08941               K(I+MOVE,J)=K(I,J)
08942               P(I+MOVE,J)=P(I,J)
08943               V(I+MOVE,J)=V(I,J)
08944   150       CONTINUE
08945             IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
08946      &      K(I+MOVE,3)=K(I,3)+MOVE
08947             IF(K(I,4).GT.MINT(83).AND.K(I,4).LE.MINT(84))
08948      &      K(I+MOVE,4)=K(I,4)+MOVE
08949             IF(K(I,5).GT.MINT(83).AND.K(I,5).LE.MINT(84))
08950      &      K(I+MOVE,5)=K(I,5)+MOVE
08951           ENDIF
08952   160   CONTINUE
08953         DO 170 I=MINT(84)+1,N
08954           IF(K(I,3).GT.MINT(83).AND.K(I,3).LE.MINT(84))
08955      &    K(I,3)=K(I,3)+MOVE
08956   170   CONTINUE
08957  
08958 C...Fill in incoming particles.
08959         DO 190 I=MINT(83)+1,MINT(83)+MOVE
08960           DO 180 J=1,5
08961             K(I,J)=0
08962             P(I,J)=0D0
08963             V(I,J)=0D0
08964   180     CONTINUE
08965   190   CONTINUE
08966         DO 200 I=1,2
08967           K(MINT(83)+I,1)=21
08968           IF(MINT(140+I).NE.0) THEN
08969             K(MINT(83)+I,2)=MINT(140+I)
08970             P(MINT(83)+I,5)=VINT(302+I)
08971           ELSE
08972             K(MINT(83)+I,2)=MINT(10+I)
08973             P(MINT(83)+I,5)=VINT(2+I)
08974           ENDIF
08975           P(MINT(83)+I,3)=0.5D0*SQRT((PMC(3)**2-4D0*PMS(1)*PMS(2))/
08976      &    VINT(302))*(-1D0)**(I+1)
08977           P(MINT(83)+I,4)=0.5D0*PMC(I)/VINT(301)
08978   200   CONTINUE
08979  
08980 C...New mother-daughter relations in documentation section.
08981         IF(MINT(141).NE.0.AND.MINT(142).NE.0) THEN
08982           K(MINT(83)+1,4)=MINT(83)+3
08983           K(MINT(83)+1,5)=MINT(83)+5
08984           K(MINT(83)+2,4)=MINT(83)+4
08985           K(MINT(83)+2,5)=MINT(83)+6
08986           K(MINT(83)+3,3)=MINT(83)+1
08987           K(MINT(83)+5,3)=MINT(83)+1
08988           K(MINT(83)+4,3)=MINT(83)+2
08989           K(MINT(83)+6,3)=MINT(83)+2
08990         ELSEIF(MINT(141).NE.0) THEN
08991           K(MINT(83)+1,4)=MINT(83)+3
08992           K(MINT(83)+1,5)=MINT(83)+4
08993           K(MINT(83)+2,4)=MINT(83)+5
08994           K(MINT(83)+3,3)=MINT(83)+1
08995           K(MINT(83)+4,3)=MINT(83)+1
08996           K(MINT(83)+5,3)=MINT(83)+2
08997         ELSEIF(MINT(142).NE.0) THEN
08998           K(MINT(83)+1,4)=MINT(83)+4
08999           K(MINT(83)+2,4)=MINT(83)+3
09000           K(MINT(83)+2,5)=MINT(83)+5
09001           K(MINT(83)+3,3)=MINT(83)+2
09002           K(MINT(83)+4,3)=MINT(83)+1
09003           K(MINT(83)+5,3)=MINT(83)+2
09004         ENDIF
09005  
09006 C...Fill scattered lepton(s).
09007         DO 210 I=1,2
09008           IF(MINT(140+I).NE.0) THEN
09009             LSC=MINT(83)+MIN(I+2,MOVE)
09010             K(LSC,1)=21
09011             K(LSC,2)=MINT(140+I)
09012             P(LSC,1)=PT(I)*COS(PHI(I))
09013             P(LSC,2)=PT(I)*SIN(PHI(I))
09014             P(LSC,4)=(1D0-X(I))*P(MINT(83)+I,4)
09015             P(LSC,3)=SQRT(P(LSC,4)**2-PMS(I))*COS(THETA(I))*
09016      &      (-1D0)**(I-1)
09017             P(LSC,5)=VINT(302+I)
09018           ENDIF
09019   210   CONTINUE
09020  
09021 C...Find incoming four-vectors to subprocess.
09022         K(N+1,1)=21
09023         IF(MINT(141).NE.0) THEN
09024           DO 220 J=1,4
09025             P(N+1,J)=P(MINT(83)+1,J)-P(MINT(83)+3,J)
09026   220     CONTINUE
09027         ELSE
09028           DO 230 J=1,4
09029             P(N+1,J)=P(MINT(83)+1,J)
09030   230     CONTINUE
09031         ENDIF
09032         K(N+2,1)=21
09033         IF(MINT(142).NE.0) THEN
09034           DO 240 J=1,4
09035             P(N+2,J)=P(MINT(83)+2,J)-P(MINT(83)+MOVE,J)
09036   240     CONTINUE
09037         ELSE
09038           DO 250 J=1,4
09039             P(N+2,J)=P(MINT(83)+2,J)
09040   250     CONTINUE
09041         ENDIF
09042  
09043 C...Define boost and rotation between hadronic subsystem and
09044 C...collision rest frame; boost hadronic subsystem to this frame.
09045         DO 260 J=1,3
09046           BETA(J)=(P(N+1,J)+P(N+2,J))/(P(N+1,4)+P(N+2,4))
09047   260   CONTINUE
09048         CALL PYROBO(N+1,N+2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
09049         BPHI=PYANGL(P(N+1,1),P(N+1,2))
09050         CALL PYROBO(N+1,N+2,0D0,-BPHI,0D0,0D0,0D0)
09051         BTHETA=PYANGL(P(N+1,3),P(N+1,1))
09052         CALL PYROBO(MINT(83)+MOVE+1,N,BTHETA,BPHI,BETA(1),BETA(2),
09053      &  BETA(3))
09054  
09055 C...Add on scattered leptons to final state.
09056         DO 280 I=1,2
09057           IF(MINT(140+I).NE.0) THEN
09058             LSC=MINT(83)+MIN(I+2,MOVE)
09059             N=N+1
09060             DO 270 J=1,5
09061               K(N,J)=K(LSC,J)
09062               P(N,J)=P(LSC,J)
09063               V(N,J)=V(LSC,J)
09064   270       CONTINUE
09065             K(N,1)=1
09066             K(N,3)=LSC
09067           ENDIF
09068   280   CONTINUE
09069       ENDIF
09070  
09071       RETURN
09072       END
09073  
09074 C*********************************************************************
09075  
09076 C...PYRAND
09077 C...Generates quantities characterizing the high-pT scattering at the
09078 C...parton level according to the matrix elements. Chooses incoming,
09079 C...reacting partons, their momentum fractions and one of the possible
09080 C...subprocesses.
09081  
09082       SUBROUTINE PYRAND
09083  
09084 C...Double precision and integer declarations.
09085       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
09086       IMPLICIT INTEGER(I-N)
09087       INTEGER PYK,PYCHGE,PYCOMP
09088 C...Parameter statement to help give large particle numbers.
09089       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
09090      &KEXCIT=4000000,KDIMEN=5000000)
09091  
09092 C...User process initialization and event commonblocks.
09093       INTEGER MAXPUP
09094       PARAMETER (MAXPUP=100)
09095       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
09096       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
09097       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
09098      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
09099      &LPRUP(MAXPUP)
09100       INTEGER MAXNUP
09101       PARAMETER (MAXNUP=500)
09102       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
09103       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
09104       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
09105      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
09106      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
09107       SAVE /HEPRUP/,/HEPEUP/
09108  
09109 C...Commonblocks.
09110       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
09111       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
09112       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
09113       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
09114       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
09115       COMMON/PYINT1/MINT(400),VINT(400)
09116       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
09117       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
09118       COMMON/PYINT4/MWID(500),WIDS(500,5)
09119       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
09120       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
09121       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
09122       COMMON/PYTCCO/COEFX(194:380,2)
09123       COMMON/TCPARA/IRES,JRES,XMAS(3),XWID(3),YMAS(2),YWID(2)
09124       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
09125      &/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,/PYMSSM/,/PYTCCO/,
09126      &/TCPARA/
09127 C...Local arrays.
09128       DIMENSION XPQ(-25:25),PMM(2),PDIF(4),BHAD(4),PMMN(2)
09129  
09130 C...Parameters and data used in elastic/diffractive treatment.
09131       DATA EPS/0.0808D0/, ALP/0.25D0/, CRES/2D0/, PMRC/1.062D0/,
09132      &SMP/0.880D0/, BHAD/2.3D0,1.4D0,1.4D0,0.23D0/
09133  
09134 C...Initial values, specifically for (first) semihard interaction.
09135       MINT(10)=0
09136       MINT(17)=0
09137       MINT(18)=0
09138       VINT(143)=1D0
09139       VINT(144)=1D0
09140       VINT(157)=0D0
09141       VINT(158)=0D0
09142       MFAIL=0
09143       IF(MSTP(171).EQ.1.AND.MSTP(172).EQ.2) MFAIL=1
09144       ISUB=0
09145       ISTSB=0
09146       LOOP=0
09147   100 LOOP=LOOP+1
09148       MINT(51)=0
09149       MINT(143)=1
09150       VINT(97)=1D0
09151  
09152 C...Start by assuming incoming photon is entering subprocess.
09153       IF(MINT(11).EQ.22) THEN
09154          MINT(15)=22
09155          VINT(307)=VINT(3)**2
09156       ENDIF
09157       IF(MINT(12).EQ.22) THEN
09158          MINT(16)=22
09159          VINT(308)=VINT(4)**2
09160       ENDIF
09161       MINT(103)=MINT(11)
09162       MINT(104)=MINT(12)
09163  
09164 C...Choice of process type - first event of pileup.
09165       INMULT=0
09166       IF(MINT(82).EQ.1.AND.ISUB.GE.91.AND.ISUB.LE.96) THEN
09167       ELSEIF(MINT(82).EQ.1) THEN
09168  
09169 C...For gamma-p or gamma-gamma first pick between alternatives.
09170         IGA=0
09171         IF(MINT(121).GT.1) CALL PYSAVE(4,IGA)
09172         MINT(122)=IGA
09173  
09174 C...For real gamma + gamma with different nature, flip at random.
09175         IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
09176      &  MSTP(14).LE.10.AND.PYR(0).GT.0.5D0) THEN
09177           MINTSV=MINT(41)
09178           MINT(41)=MINT(42)
09179           MINT(42)=MINTSV
09180           MINTSV=MINT(45)
09181           MINT(45)=MINT(46)
09182           MINT(46)=MINTSV
09183           MINTSV=MINT(107)
09184           MINT(107)=MINT(108)
09185           MINT(108)=MINTSV
09186           IF(MINT(47).EQ.2.OR.MINT(47).EQ.3) MINT(47)=5-MINT(47)
09187         ENDIF
09188  
09189 C...Pick process type, possibly by user process machinery.
09190 C...(If the latter, also event will be picked here.)
09191         IF(MINT(111).GE.11.AND.IABS(IDWTUP).EQ.2.AND.LOOP.GE.2) THEN
09192           CALL UPEVNT
09193           CALL PYUPRE
09194         ELSEIF(MINT(111).GE.11.AND.IABS(IDWTUP).GE.3) THEN
09195           CALL UPEVNT
09196           CALL PYUPRE
09197           ISUB=0
09198   110     ISUB=ISUB+1
09199           IF((ISET(ISUB).NE.11.OR.KFPR(ISUB,2).NE.IDPRUP).AND.
09200      &    ISUB.LT.500) GOTO 110
09201         ELSE
09202           RSUB=XSEC(0,1)*PYR(0)
09203           DO 120 I=1,500
09204             IF(MSUB(I).NE.1.OR.I.EQ.96) GOTO 120
09205             ISUB=I
09206             RSUB=RSUB-XSEC(I,1)
09207             IF(RSUB.LE.0D0) GOTO 130
09208   120     CONTINUE
09209   130     IF(ISUB.EQ.95) ISUB=96
09210           IF(ISUB.EQ.96) INMULT=1
09211           IF(ISET(ISUB).EQ.11) THEN
09212             IDPRUP=KFPR(ISUB,2)
09213             CALL UPEVNT
09214             CALL PYUPRE
09215           ENDIF
09216         ENDIF
09217  
09218 C...Choice of inclusive process type - pileup events.
09219       ELSEIF(MINT(82).GE.2.AND.ISUB.EQ.0) THEN
09220         RSUB=VINT(131)*PYR(0)
09221         ISUB=96
09222         IF(RSUB.GT.SIGT(0,0,5)) ISUB=94
09223         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)) ISUB=93
09224         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)) ISUB=92
09225         IF(RSUB.GT.SIGT(0,0,5)+SIGT(0,0,4)+SIGT(0,0,3)+SIGT(0,0,2))
09226      &  ISUB=91
09227         IF(ISUB.EQ.96) INMULT=1
09228       ENDIF
09229  
09230 C...Choice of photon energy and flux factor inside lepton.
09231       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
09232         CALL PYGAGA(3,WTGAGA)
09233         IF(ISUB.GE.131.AND.ISUB.LE.140) THEN
09234           CKIN(3)=MAX(VINT(285),VINT(154))
09235           CKIN(1)=2D0*CKIN(3)
09236         ENDIF
09237 C...When necessary set direct/resolved photon by hand.
09238       ELSEIF(MINT(15).EQ.22.OR.MINT(16).EQ.22) THEN
09239         IF(MINT(15).EQ.22.AND.MINT(41).EQ.2) MINT(15)=0
09240         IF(MINT(16).EQ.22.AND.MINT(42).EQ.2) MINT(16)=0
09241       ENDIF
09242  
09243 C...Restrict direct*resolved processes to pTmin >= Q,
09244 C...to avoid doublecounting  with DIS.
09245       IF(MSTP(18).EQ.3.AND.ISUB.GE.131.AND.ISUB.LE.136) THEN
09246         IF(MINT(15).EQ.22) THEN
09247           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(3)))
09248         ELSE
09249           CKIN(3)=MAX(VINT(285),VINT(154),ABS(VINT(4)))
09250         ENDIF
09251         CKIN(1)=2D0*CKIN(3)
09252       ENDIF
09253  
09254 C...Set up for multiple interactions (may include impact parameter).
09255       IF(INMULT.EQ.1) THEN
09256         IF(MINT(35).LE.1) CALL PYMULT(2)
09257         IF(MINT(35).GE.2) CALL PYMIGN(2)
09258       ENDIF
09259  
09260 C...Loopback point for minimum bias in photon physics.
09261       LOOP2=0
09262   140 LOOP2=LOOP2+1
09263       IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)+MINT(143)
09264       IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)+MINT(143)
09265       IF(ISUB.EQ.96.AND.LOOP2.EQ.1.AND.MINT(82).EQ.1)
09266      &NGEN(97,1)=NGEN(97,1)+MINT(143)
09267       MINT(1)=ISUB
09268       ISTSB=ISET(ISUB)
09269  
09270 C...Random choice of flavour for some SUSY processes.
09271       IF(ISUB.GE.201.AND.ISUB.LE.301) THEN
09272 C...~e_L ~nu_e or ~mu_L ~nu_mu.
09273         IF(ISUB.EQ.210) THEN
09274           KFPR(ISUB,1)=KSUSY1+11+2*INT(0.5D0+PYR(0))
09275           KFPR(ISUB,2)=KFPR(ISUB,1)+1
09276 C...~nu_e ~nu_e(bar) or ~nu_mu ~nu_mu(bar).
09277         ELSEIF(ISUB.EQ.213) THEN
09278           KFPR(ISUB,1)=KSUSY1+12+2*INT(0.5D0+PYR(0))
09279           KFPR(ISUB,2)=KFPR(ISUB,1)
09280 C...~q ~chi/~g; ~q = ~d, ~u, ~s, ~c or ~b.
09281         ELSEIF(ISUB.GE.246.AND.ISUB.LE.259.AND.ISUB.NE.255.AND.
09282      &  ISUB.NE.257) THEN
09283           IF(ISUB.GE.258) THEN
09284             RKF=4D0
09285           ELSE
09286             RKF=5D0
09287           ENDIF
09288           IF(MOD(ISUB,2).EQ.0) THEN
09289             KFPR(ISUB,1)=KSUSY1+1+INT(RKF*PYR(0))
09290           ELSE
09291             KFPR(ISUB,1)=KSUSY2+1+INT(RKF*PYR(0))
09292           ENDIF
09293 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
09294         ELSEIF(ISUB.GE.271.AND.ISUB.LE.276) THEN
09295           IF(ISUB.EQ.271.OR.ISUB.EQ.274) THEN
09296             KSU1=KSUSY1
09297             KSU2=KSUSY1
09298           ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.275) THEN
09299             KSU1=KSUSY2
09300             KSU2=KSUSY2
09301           ELSEIF(PYR(0).LT.0.5D0) THEN
09302             KSU1=KSUSY1
09303             KSU2=KSUSY2
09304           ELSE
09305             KSU1=KSUSY2
09306             KSU2=KSUSY1
09307           ENDIF
09308           KFPR(ISUB,1)=KSU1+1+INT(4D0*PYR(0))
09309           KFPR(ISUB,2)=KSU2+1+INT(4D0*PYR(0))
09310 C...~q ~q(bar);  ~q = ~d, ~u, ~s, or ~c.
09311         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.279) THEN
09312           KFPR(ISUB,1)=KSUSY1+1+INT(4D0*PYR(0))
09313           KFPR(ISUB,2)=KFPR(ISUB,1)
09314         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.280) THEN
09315           KFPR(ISUB,1)=KSUSY2+1+INT(4D0*PYR(0))
09316           KFPR(ISUB,2)=KFPR(ISUB,1)
09317 C...~q1 ~q2; ~q = ~d, ~u, ~s, or ~c.
09318         ELSEIF(ISUB.GE.281.AND.ISUB.LE.286) THEN
09319           IF(ISUB.EQ.281.OR.ISUB.EQ.284) THEN
09320             KSU1=KSUSY1
09321             KSU2=KSUSY1
09322           ELSEIF(ISUB.EQ.282.OR.ISUB.EQ.285) THEN
09323             KSU1=KSUSY2
09324             KSU2=KSUSY2
09325           ELSEIF(PYR(0).LT.0.5D0) THEN
09326             KSU1=KSUSY1
09327             KSU2=KSUSY2
09328           ELSE
09329             KSU1=KSUSY2
09330             KSU2=KSUSY1
09331           ENDIF
09332           IF(ISUB.EQ.281.OR.ISUB.LE.283) THEN
09333             RKF=5D0
09334           ELSE
09335             RKF=4D0
09336           ENDIF
09337           KFPR(ISUB,2)=KSU2+1+INT(RKF*PYR(0))
09338         ENDIF
09339       ENDIF
09340  
09341 C...Random choice of flavours for some UED processes
09342 c...The production processes can generate a doublet pair,
09343 c...a singlet pair, or a doublet + singlet.
09344       IF(ISUB.EQ.313)THEN
09345 C...q + q -> q*_Di + q*_Dj, q*_Si + q*_Sj
09346          IF(PYR(0).LE.0.1)THEN
09347             KFPR(ISUB,1)=5100001
09348          ELSE
09349             KFPR(ISUB,1)=5100002
09350          ENDIF
09351          KFPR(ISUB,2)=KFPR(ISUB,1)
09352       ELSEIF(ISUB.EQ.314.OR.ISUB.EQ.315)THEN
09353 C...g + g -> q*_D + q*_Dbar, q*_S + q*_Sbar
09354 C...q + qbar -> q*_D + q*_Dbar, q*_S + q*_Sbar
09355          IF(PYR(0).LE.0.1)THEN
09356             KFPR(ISUB,1)=5100001
09357          ELSE
09358             KFPR(ISUB,1)=5100002
09359          ENDIF
09360          KFPR(ISUB,2)=-KFPR(ISUB,1)
09361       ELSEIF(ISUB.EQ.316)THEN
09362 C...qi + qbarj -> q*_Di + q*_Sbarj
09363          IF(PYR(0).LE.0.5)THEN
09364             KFPR(ISUB,1)=5100001
09365 c Changed from private pythia6410_ued code
09366 c            KFPR(ISUB,2)=-5010001
09367             KFPR(ISUB,2)=-6100002
09368          ELSE
09369             KFPR(ISUB,1)=5100002
09370 c Changed from private pythia6410_ued code
09371 c            KFPR(ISUB,2)=-5010002
09372             KFPR(ISUB,2)=-6100001
09373          ENDIF
09374       ELSEIF(ISUB.EQ.317)THEN
09375 C...qi + qbarj -> q*_Di + q*_Dbarj, q*_Si + q*_Dbarj
09376          IF(PYR(0).LE.0.5)THEN
09377             KFPR(ISUB,1)=5100001
09378             KFPR(ISUB,2)=-5100002
09379          ELSE
09380             KFPR(ISUB,1)=5100002
09381             KFPR(ISUB,2)=-5100001
09382          ENDIF
09383       ELSEIF(ISUB.EQ.318)THEN
09384 C...qi + qj -> q*_Di + q*_Sj
09385          IF(PYR(0).LE.0.5)THEN
09386             KFPR(ISUB,1)=5100001
09387             KFPR(ISUB,2)=6100002
09388          ELSE
09389             KFPR(ISUB,1)=5100002
09390             KFPR(ISUB,2)=6100001
09391          ENDIF
09392       ENDIF
09393 
09394 C...Find resonances (explicit or implicit in cross-section).
09395       MINT(72)=0
09396       KFR1=0
09397       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
09398         KFR1=KFPR(ISUB,1)
09399       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.25.OR.ISUB.EQ.110.OR.ISUB.EQ.165.OR.
09400      &  ISUB.EQ.171.OR.ISUB.EQ.176) THEN
09401         KFR1=23
09402       ELSEIF(ISUB.EQ.23.OR.ISUB.EQ.26.OR.ISUB.EQ.166.OR.ISUB.EQ.172.OR.
09403      &  ISUB.EQ.177) THEN
09404         KFR1=24
09405       ELSEIF(ISUB.GE.71.AND.ISUB.LE.77) THEN
09406         KFR1=25
09407         IF(MSTP(46).EQ.5) THEN
09408           KFR1=89
09409           PMAS(89,1)=PARP(45)
09410           PMAS(89,2)=PARP(45)**3/(96D0*PARU(1)*PARP(47)**2)
09411         ENDIF
09412       ENDIF
09413       CKMX=CKIN(2)
09414       IF(CKMX.LE.0D0) CKMX=VINT(1)
09415       KCR1=PYCOMP(KFR1)
09416       IF(KFR1.NE.0) THEN
09417         IF(CKIN(1).GT.PMAS(KCR1,1)+20D0*PMAS(KCR1,2).OR.
09418      &  CKMX.LT.PMAS(KCR1,1)-20D0*PMAS(KCR1,2)) KFR1=0
09419       ENDIF
09420       IF(KFR1.NE.0) THEN
09421         TAUR1=PMAS(KCR1,1)**2/VINT(2)
09422         GAMR1=PMAS(KCR1,1)*PMAS(KCR1,2)/VINT(2)
09423         MINT(72)=1
09424         MINT(73)=KFR1
09425         VINT(73)=TAUR1
09426         VINT(74)=GAMR1
09427       ENDIF
09428       KFR2=0
09429       KFR3=0
09430       IF(ISUB.EQ.141.OR.ISUB.EQ.194.OR.ISUB.EQ.195.OR.
09431      $(ISUB.GE.361.AND.ISUB.LE.380))
09432      $THEN
09433         KFR2=23
09434         IF(ISUB.EQ.141) THEN
09435           KCR2=PYCOMP(KFR2)
09436           IF(CKIN(1).GT.PMAS(KCR2,1)+20D0*PMAS(KCR2,2).OR.
09437      &     CKMX.LT.PMAS(KCR2,1)-20D0*PMAS(KCR2,2)) THEN
09438             KFR2=0
09439           ELSE
09440             TAUR2=PMAS(KCR2,1)**2/VINT(2)            
09441             GAMR2=PMAS(KCR2,1)*PMAS(KCR2,2)/VINT(2)
09442             MINT(72)=2
09443             MINT(74)=KFR2
09444             VINT(75)=TAUR2
09445             VINT(76)=GAMR2
09446           ENDIF
09447 C...3 resonances at work:   rho, omega, a
09448         ELSEIF(ISUB.EQ.194.OR.(ISUB.GE.361.AND.ISUB.LE.368)
09449      &     .OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN
09450           MINT(72)=IRES
09451           IF(IRES.GE.1) THEN
09452             VINT(73)=XMAS(1)**2/VINT(2)
09453             VINT(74)=XMAS(1)*XWID(1)/VINT(2)
09454             TAUR1=VINT(73)
09455             GAMR1=VINT(74)
09456             KFR1=1
09457           ENDIF
09458           IF(IRES.GE.2) THEN
09459             VINT(75)=XMAS(2)**2/VINT(2)
09460             VINT(76)=XMAS(2)*XWID(2)/VINT(2)
09461             TAUR2=VINT(75)
09462             GAMR2=VINT(76)
09463             KFR2=2
09464           ENDIF
09465           IF(IRES.EQ.3) THEN
09466             VINT(77)=XMAS(3)**2/VINT(2)
09467             VINT(78)=XMAS(3)*XWID(3)/VINT(2)
09468             TAUR3=VINT(77)
09469             GAMR3=VINT(78)
09470             KFR3=3
09471           ENDIF
09472 C...Charged current:  rho+- and a+-
09473         ELSEIF(ISUB.EQ.195.OR.ISUB.GE.370.AND.ISUB.LE.378) THEN
09474           MINT(72)=IRES
09475           IF(JRES.GE.1) THEN
09476             VINT(73)=YMAS(1)**2/VINT(2)
09477             VINT(74)=YMAS(1)*YWID(1)/VINT(2)
09478             KFR1=1
09479             TAUR1=VINT(73)
09480             GAMR1=VINT(74)
09481           ENDIF
09482           IF(JRES.GE.2) THEN
09483             VINT(75)=YMAS(2)**2/VINT(2)
09484             VINT(76)=YMAS(2)*YWID(2)/VINT(2)
09485             KFR2=2
09486             TAUR2=VINT(73)
09487             GAMR2=VINT(74)
09488           ENDIF
09489           KFR3=0
09490         ENDIF
09491         IF(ISUB.NE.141) THEN
09492           IF(KFR3.NE.0.AND.KFR2.NE.0.AND.KFR1.NE.0) THEN
09493 
09494           ELSEIF(KFR1.NE.0.AND.KFR2.NE.0) THEN
09495             MINT(72)=2
09496           ELSEIF(KFR1.NE.0.AND.KFR3.NE.0) THEN
09497             MINT(72)=2
09498             MINT(74)=KFR3
09499             VINT(75)=TAUR3
09500             VINT(76)=GAMR3
09501           ELSEIF(KFR2.NE.0.AND.KFR3.NE.0) THEN
09502             MINT(72)=2
09503             MINT(73)=KFR2
09504             VINT(73)=TAUR2
09505             VINT(74)=GAMR2
09506             MINT(74)=KFR3
09507             VINT(75)=TAUR3
09508             VINT(76)=GAMR3
09509           ELSEIF(KFR1.NE.0) THEN
09510             MINT(72)=1
09511           ELSEIF(KFR2.NE.0) THEN
09512             MINT(72)=1
09513             MINT(73)=KFR2
09514             VINT(73)=TAUR2
09515             VINT(74)=GAMR2
09516           ELSEIF(KFR3.NE.0) THEN
09517             MINT(72)=1
09518             MINT(73)=KFR3
09519             VINT(73)=TAUR3
09520             VINT(74)=GAMR3
09521           ELSE
09522             MINT(72)=0
09523           ENDIF
09524         ELSE
09525           IF(KFR2.NE.0.AND.KFR1.NE.0) THEN
09526 
09527           ELSEIF(KFR2.NE.0) THEN
09528             KFR1=KFR2
09529             TAUR1=TAUR2
09530             GAMR1=GAMR2
09531             MINT(72)=1
09532             MINT(73)=KFR1
09533             VINT(73)=TAUR1
09534             VINT(74)=GAMR1
09535             KFR2=0
09536           ELSE
09537             MINT(72)=0
09538           ENDIF
09539         ENDIF
09540       ENDIF
09541  
09542 C...Find product masses and minimum pT of process,
09543 C...optionally with broadening according to a truncated Breit-Wigner.
09544       VINT(63)=0D0
09545       VINT(64)=0D0
09546       MINT(71)=0
09547       VINT(71)=CKIN(3)
09548       IF(MINT(82).GE.2) VINT(71)=0D0
09549       VINT(80)=1D0
09550       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
09551         NBW=0
09552         DO 160 I=1,2
09553           PMMN(I)=0D0
09554           IF(KFPR(ISUB,I).EQ.0) THEN
09555           ELSEIF(MSTP(42).LE.0.OR.PMAS(PYCOMP(KFPR(ISUB,I)),2).LT.
09556      &      PARP(41)) THEN
09557             VINT(62+I)=PMAS(PYCOMP(KFPR(ISUB,I)),1)**2
09558           ELSE
09559             NBW=NBW+1
09560 C...This prevents SUSY/t particles from becoming too light.
09561             KFLW=KFPR(ISUB,I)
09562             IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
09563               KCW=PYCOMP(KFLW)
09564               PMMN(I)=PMAS(KCW,1)
09565               DO 150 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
09566                 IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
09567                   PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
09568      &            PMAS(PYCOMP(KFDP(IDC,2)),1)
09569                   IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
09570      &            PMAS(PYCOMP(KFDP(IDC,3)),1)
09571                   PMMN(I)=MIN(PMMN(I),PMSUM)
09572                 ENDIF
09573   150         CONTINUE
09574             ELSEIF(KFLW.EQ.6) THEN
09575               PMMN(I)=PMAS(24,1)+PMAS(5,1)
09576             ENDIF
09577           ENDIF
09578   160   CONTINUE
09579         IF(NBW.GE.1) THEN
09580           CKIN41=CKIN(41)
09581           CKIN43=CKIN(43)
09582           CKIN(41)=MAX(PMMN(1),CKIN(41))
09583           CKIN(43)=MAX(PMMN(2),CKIN(43))
09584           CALL PYOFSH(4,0,KFPR(ISUB,1),KFPR(ISUB,2),0D0,PQM3,PQM4)
09585           CKIN(41)=CKIN41
09586           CKIN(43)=CKIN43
09587           IF(MINT(51).EQ.1) THEN
09588             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
09589             IF(MFAIL.EQ.1) THEN
09590               MSTI(61)=1
09591               RETURN
09592             ENDIF
09593             GOTO 100
09594           ENDIF
09595           VINT(63)=PQM3**2
09596           VINT(64)=PQM4**2
09597         ENDIF
09598         IF(MIN(VINT(63),VINT(64)).LT.CKIN(6)**2) MINT(71)=1
09599         IF(MINT(71).EQ.1) VINT(71)=MAX(CKIN(3),CKIN(5))
09600       ENDIF
09601  
09602 C...Prepare for additional variable choices in 2 -> 3.
09603       IF(ISTSB.EQ.5) THEN
09604         VINT(201)=0D0
09605         IF(KFPR(ISUB,2).GT.0) VINT(201)=PMAS(PYCOMP(KFPR(ISUB,2)),1)
09606         VINT(206)=VINT(201)
09607         IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(206)=PMAS(5,1)
09608         VINT(204)=PMAS(23,1)
09609         IF(ISUB.EQ.124.OR.ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351)
09610      &   VINT(204)=PMAS(24,1) 
09611         IF(ISUB.EQ.352) VINT(204)=PMAS(PYCOMP(9900024),1)
09612         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
09613      &    ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402)
09614      &         VINT(204)=VINT(201)
09615         VINT(209)=VINT(204)
09616           IF(ISUB.EQ.401.OR.ISUB.EQ.402) VINT(209)=VINT(206)
09617       ENDIF
09618  
09619 C...Select incoming VDM particle (rho/omega/phi/J/psi).
09620       IF(ISTSB.NE.0.AND.(MINT(101).GE.2.OR.MINT(102).GE.2).AND.
09621      &(MINT(123).EQ.2.OR.MINT(123).EQ.3.OR.MINT(123).EQ.7)) THEN
09622         VRN=PYR(0)*SIGT(0,0,5)
09623         IF(MINT(101).LE.1) THEN
09624           I1MN=0
09625           I1MX=0
09626         ELSE
09627           I1MN=1
09628           I1MX=MINT(101)
09629         ENDIF
09630         IF(MINT(102).LE.1) THEN
09631           I2MN=0
09632           I2MX=0
09633         ELSE
09634           I2MN=1
09635           I2MX=MINT(102)
09636         ENDIF
09637         DO 180 I1=I1MN,I1MX
09638           KFV1=110*I1+3
09639           DO 170 I2=I2MN,I2MX
09640             KFV2=110*I2+3
09641             VRN=VRN-SIGT(I1,I2,5)
09642             IF(VRN.LE.0D0) GOTO 190
09643   170     CONTINUE
09644   180   CONTINUE
09645   190   IF(MINT(101).GE.2) MINT(103)=KFV1
09646         IF(MINT(102).GE.2) MINT(104)=KFV2
09647       ENDIF
09648  
09649       IF(ISTSB.EQ.0) THEN
09650 C...Elastic scattering or single or double diffractive scattering.
09651  
09652 C...Select incoming particle (rho/omega/phi/J/psi for VDM) and mass.
09653         MINT(103)=MINT(11)
09654         MINT(104)=MINT(12)
09655         PMM(1)=VINT(3)
09656         PMM(2)=VINT(4)
09657         IF(MINT(101).GE.2.OR.MINT(102).GE.2) THEN
09658           JJ=ISUB-90
09659           VRN=PYR(0)*SIGT(0,0,JJ)
09660           IF(MINT(101).LE.1) THEN
09661             I1MN=0
09662             I1MX=0
09663           ELSE
09664             I1MN=1
09665             I1MX=MINT(101)
09666           ENDIF
09667           IF(MINT(102).LE.1) THEN
09668             I2MN=0
09669             I2MX=0
09670           ELSE
09671             I2MN=1
09672             I2MX=MINT(102)
09673           ENDIF
09674           DO 210 I1=I1MN,I1MX
09675             KFV1=110*I1+3
09676             DO 200 I2=I2MN,I2MX
09677               KFV2=110*I2+3
09678               VRN=VRN-SIGT(I1,I2,JJ)
09679               IF(VRN.LE.0D0) GOTO 220
09680   200       CONTINUE
09681   210     CONTINUE
09682   220     IF(MINT(101).GE.2) THEN
09683             MINT(103)=KFV1
09684             PMM(1)=PYMASS(KFV1)
09685           ENDIF
09686           IF(MINT(102).GE.2) THEN
09687             MINT(104)=KFV2
09688             PMM(2)=PYMASS(KFV2)
09689           ENDIF
09690         ENDIF
09691         VINT(67)=PMM(1)
09692         VINT(68)=PMM(2)
09693  
09694 C...Select mass for GVMD states (rejecting previous assignment).
09695         Q0S=4D0*PARP(15)**2
09696         Q1S=4D0*VINT(154)**2
09697         LOOP3=0
09698   230   LOOP3=LOOP3+1
09699         DO 240 JT=1,2
09700           IF(MINT(106+JT).EQ.3) THEN
09701             PS=VINT(2+JT)**2
09702             PMM(JT)=SQRT((Q0S+PS)*(Q1S+PS)/
09703      &      (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS)
09704             IF(MINT(102+JT).GE.333) PMM(JT)=PMM(JT)-
09705      &      PMAS(PYCOMP(113),1)+PMAS(PYCOMP(MINT(102+JT)),1)
09706           ENDIF
09707   240   CONTINUE
09708         IF(PMM(1)+PMM(2)+PARP(104).GE.VINT(1)) THEN
09709           IF(LOOP3.LT.100.AND.(MINT(107).EQ.3.OR.MINT(108).EQ.3))
09710      &    GOTO 230
09711           GOTO 100
09712         ENDIF
09713  
09714 C...Side/sides of diffractive system.
09715         MINT(17)=0
09716         MINT(18)=0
09717         IF(ISUB.EQ.92.OR.ISUB.EQ.94) MINT(17)=1
09718         IF(ISUB.EQ.93.OR.ISUB.EQ.94) MINT(18)=1
09719  
09720 C...Find masses of particles and minimal masses of diffractive states.
09721         DO 250 JT=1,2
09722           PDIF(JT)=PMM(JT)
09723           VINT(68+JT)=PDIF(JT)
09724           IF(MINT(16+JT).EQ.1) PDIF(JT)=PDIF(JT)+PARP(102)
09725   250   CONTINUE
09726         SH=VINT(2)
09727         SQM1=PMM(1)**2
09728         SQM2=PMM(2)**2
09729         SQM3=PDIF(1)**2
09730         SQM4=PDIF(2)**2
09731         SMRES1=(PMM(1)+PMRC)**2
09732         SMRES2=(PMM(2)+PMRC)**2
09733  
09734 C...Find elastic slope and lower limit diffractive slope.
09735         IHA=MAX(2,IABS(MINT(103))/110)
09736         IF(IHA.GE.5) IHA=1
09737         IHB=MAX(2,IABS(MINT(104))/110)
09738         IF(IHB.GE.5) IHB=1
09739         IF(ISUB.EQ.91) THEN
09740           BMN=2D0*BHAD(IHA)+2D0*BHAD(IHB)+4D0*SH**EPS-4.2D0
09741         ELSEIF(ISUB.EQ.92) THEN
09742           BMN=MAX(2D0,2D0*BHAD(IHB))
09743         ELSEIF(ISUB.EQ.93) THEN
09744           BMN=MAX(2D0,2D0*BHAD(IHA))
09745         ELSEIF(ISUB.EQ.94) THEN
09746           BMN=2D0*ALP*4D0
09747         ENDIF
09748  
09749 C...Determine maximum possible t range and coefficient of generation.
09750         SQLA12=(SH-SQM1-SQM2)**2-4D0*SQM1*SQM2
09751         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
09752         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
09753         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
09754         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
09755      &  (SQM1*SQM4-SQM2*SQM3)/SH
09756         THL=-0.5D0*(THA+THB)
09757         THU=THC/THL
09758         THRND=EXP(MAX(-50D0,BMN*(THL-THU)))-1D0
09759  
09760 C...Select diffractive mass/masses according to dm^2/m^2.
09761         LOOP3=0
09762   260   LOOP3=LOOP3+1
09763         DO 270 JT=1,2
09764           IF(MINT(16+JT).EQ.0) THEN
09765             PDIF(2+JT)=PDIF(JT)
09766           ELSE
09767             PMMIN=PDIF(JT)
09768             PMMAX=MAX(VINT(2+JT),VINT(1)-PDIF(3-JT))
09769             PDIF(2+JT)=PMMIN*(PMMAX/PMMIN)**PYR(0)
09770           ENDIF
09771   270   CONTINUE
09772         SQM3=PDIF(3)**2
09773         SQM4=PDIF(4)**2
09774  
09775 C..Additional mass factors, including resonance enhancement.
09776         IF(PDIF(3)+PDIF(4).GE.VINT(1)) THEN
09777           IF(LOOP3.LT.100) GOTO 260
09778           GOTO 100
09779         ENDIF
09780         IF(ISUB.EQ.92) THEN
09781           FSD=(1D0-SQM3/SH)*(1D0+CRES*SMRES1/(SMRES1+SQM3))
09782           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
09783         ELSEIF(ISUB.EQ.93) THEN
09784           FSD=(1D0-SQM4/SH)*(1D0+CRES*SMRES2/(SMRES2+SQM4))
09785           IF(FSD.LT.PYR(0)*(1D0+CRES)) GOTO 260
09786         ELSEIF(ISUB.EQ.94) THEN
09787           FDD=(1D0-(PDIF(3)+PDIF(4))**2/SH)*(SH*SMP/
09788      &    (SH*SMP+SQM3*SQM4))*(1D0+CRES*SMRES1/(SMRES1+SQM3))*
09789      &    (1D0+CRES*SMRES2/(SMRES2+SQM4))
09790           IF(FDD.LT.PYR(0)*(1D0+CRES)**2) GOTO 260
09791         ENDIF
09792  
09793 C...Select t according to exp(Bmn*t) and correct to right slope.
09794         TH=THU+LOG(1D0+THRND*PYR(0))/BMN
09795         IF(ISUB.GE.92) THEN
09796           IF(ISUB.EQ.92) THEN
09797             BADD=2D0*ALP*LOG(SH/SQM3)
09798             IF(BHAD(IHB).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHB)-2D0)
09799           ELSEIF(ISUB.EQ.93) THEN
09800             BADD=2D0*ALP*LOG(SH/SQM4)
09801             IF(BHAD(IHA).LT.1D0) BADD=MAX(0D0,BADD+2D0*BHAD(IHA)-2D0)
09802           ELSEIF(ISUB.EQ.94) THEN
09803             BADD=2D0*ALP*(LOG(EXP(4D0)+SH/(ALP*SQM3*SQM4))-4D0)
09804           ENDIF
09805           IF(EXP(MAX(-50D0,BADD*(TH-THU))).LT.PYR(0)) GOTO 260
09806         ENDIF
09807  
09808 C...Check whether m^2 and t choices are consistent.
09809         SQLA34=(SH-SQM3-SQM4)**2-4D0*SQM3*SQM4
09810         THA=SH-(SQM1+SQM2+SQM3+SQM4)+(SQM1-SQM2)*(SQM3-SQM4)/SH
09811         THB=SQRT(MAX(0D0,SQLA12))*SQRT(MAX(0D0,SQLA34))/SH
09812         IF(THB.LE.1D-8) GOTO 260
09813         THC=(SQM3-SQM1)*(SQM4-SQM2)+(SQM1+SQM4-SQM2-SQM3)*
09814      &  (SQM1*SQM4-SQM2*SQM3)/SH
09815         THLM=-0.5D0*(THA+THB)
09816         THUM=THC/THLM
09817         IF(TH.LT.THLM.OR.TH.GT.THUM) GOTO 260
09818  
09819 C...Information to output.
09820         VINT(21)=1D0
09821         VINT(22)=0D0
09822         VINT(23)=MIN(1D0,MAX(-1D0,(THA+2D0*TH)/THB))
09823         VINT(45)=TH
09824         VINT(59)=2D0*SQRT(MAX(0D0,-(THC+THA*TH+TH**2)))/THB
09825         VINT(63)=PDIF(3)**2
09826         VINT(64)=PDIF(4)**2
09827         VINT(283)=PMM(1)**2/4D0
09828         VINT(284)=PMM(2)**2/4D0
09829  
09830 C...Note: in the following, by In is meant the integral over the
09831 C...quantity multiplying coefficient cn.
09832 C...Choose tau according to h1(tau)/tau, where
09833 C...h1(tau) = c1 + I1/I2*c2*1/tau + I1/I3*c3*1/(tau+tau_R) +
09834 C...I1/I4*c4*tau/((s*tau-m^2)^2+(m*Gamma)^2) +
09835 C...I1/I5*c5*1/(tau+tau_R') +
09836 C...I1/I6*c6*tau/((s*tau-m'^2)^2+(m'*Gamma')^2) +
09837 C...I1/I7*c7*tau/(1.-tau), and
09838 C...c1 + c2 + c3 + c4 + c5 + c6 + c7 = 1.
09839       ELSEIF(ISTSB.GE.1.AND.ISTSB.LE.5) THEN
09840         CALL PYKLIM(1)
09841         IF(MINT(51).NE.0) THEN
09842           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
09843           IF(MFAIL.EQ.1) THEN
09844             MSTI(61)=1
09845             RETURN
09846           ENDIF
09847           GOTO 100
09848         ENDIF
09849         RTAU=PYR(0)
09850         MTAU=1
09851         IF(RTAU.GT.COEF(ISUB,1)) MTAU=2
09852         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)) MTAU=3
09853         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)) MTAU=4
09854         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4))
09855      &  MTAU=5
09856         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
09857      &  COEF(ISUB,5)) MTAU=6
09858         IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)+COEF(ISUB,4)+
09859      &  COEF(ISUB,5)+COEF(ISUB,6)) MTAU=7
09860 C...Additional check to handle techni-processes with extra resonance
09861 C....Only modify tau treatment
09862         IF(ISUB.EQ.194.OR.ISUB.EQ.195.OR.(ISUB.GE.361.AND.ISUB.LE.380))
09863      &   THEN
09864           IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)
09865      &     +COEF(ISUB,4)+COEF(ISUB,5)+COEF(ISUB,6)+COEF(ISUB,7)) MTAU=8
09866           IF(RTAU.GT.COEF(ISUB,1)+COEF(ISUB,2)+COEF(ISUB,3)
09867      &     +COEF(ISUB,4)+COEF(ISUB,5)+COEF(ISUB,6)+COEF(ISUB,7)
09868      &     +COEFX(ISUB,1)) MTAU=9
09869         ENDIF
09870         CALL PYKMAP(1,MTAU,PYR(0))
09871  
09872 C...2 -> 3, 4 processes:
09873 C...Choose tau' according to h4(tau,tau')/tau', where
09874 C...h4(tau,tau') = c1 + I1/I2*c2*(1 - tau/tau')^3/tau' +
09875 C...I1/I3*c3*1/(1 - tau'), and c1 + c2 + c3 = 1.
09876         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
09877           CALL PYKLIM(4)
09878           IF(MINT(51).NE.0) THEN
09879             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
09880             IF(MFAIL.EQ.1) THEN
09881               MSTI(61)=1
09882               RETURN
09883             ENDIF
09884             GOTO 100
09885           ENDIF
09886           RTAUP=PYR(0)
09887           MTAUP=1
09888           IF(RTAUP.GT.COEF(ISUB,18)) MTAUP=2
09889           IF(RTAUP.GT.COEF(ISUB,18)+COEF(ISUB,19)) MTAUP=3
09890           CALL PYKMAP(4,MTAUP,PYR(0))
09891         ENDIF
09892  
09893 C...Choose y* according to h2(y*), where
09894 C...h2(y*) = I0/I1*c1*(y*-y*min) + I0/I2*c2*(y*max-y*) +
09895 C...I0/I3*c3*1/cosh(y*) + I0/I4*c4*1/(1-exp(y*-y*max)) +
09896 C...I0/I5*c5*1/(1-exp(-y*-y*min)), I0 = y*max-y*min,
09897 C...and c1 + c2 + c3 + c4 + c5 = 1.
09898         CALL PYKLIM(2)
09899         IF(MINT(51).NE.0) THEN
09900           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
09901           IF(MFAIL.EQ.1) THEN
09902             MSTI(61)=1
09903             RETURN
09904           ENDIF
09905           GOTO 100
09906         ENDIF
09907         RYST=PYR(0)
09908         MYST=1
09909         IF(RYST.GT.COEF(ISUB,8)) MYST=2
09910         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
09911         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)) MYST=4
09912         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)+COEF(ISUB,10)+
09913      &  COEF(ISUB,11)) MYST=5
09914         CALL PYKMAP(2,MYST,PYR(0))
09915  
09916 C...2 -> 2 processes:
09917 C...Choose cos(theta-hat) (cth) according to h3(cth), where
09918 C...h3(cth) = c0 + I0/I1*c1*1/(A - cth) + I0/I2*c2*1/(A + cth) +
09919 C...I0/I3*c3*1/(A - cth)^2 + I0/I4*c4*1/(A + cth)^2,
09920 C...A = 1 + 2*(m3*m4/sh)^2 (= 1 for massless products),
09921 C...and c0 + c1 + c2 + c3 + c4 = 1.
09922         CALL PYKLIM(3)
09923         IF(MINT(51).NE.0) THEN
09924           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
09925           IF(MFAIL.EQ.1) THEN
09926             MSTI(61)=1
09927             RETURN
09928           ENDIF
09929           GOTO 100
09930         ENDIF
09931         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
09932           RCTH=PYR(0)
09933           MCTH=1
09934           IF(RCTH.GT.COEF(ISUB,13)) MCTH=2
09935           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)) MCTH=3
09936           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)) MCTH=4
09937           IF(RCTH.GT.COEF(ISUB,13)+COEF(ISUB,14)+COEF(ISUB,15)+
09938      &    COEF(ISUB,16)) MCTH=5
09939           CALL PYKMAP(3,MCTH,PYR(0))
09940         ENDIF
09941  
09942 C...2 -> 3 : select pT1, phi1, pT2, phi2, y3 for 3 outgoing.
09943         IF(ISTSB.EQ.5) THEN
09944           CALL PYKMAP(5,0,0D0)
09945           IF(MINT(51).NE.0) THEN
09946             IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
09947             IF(MFAIL.EQ.1) THEN
09948               MSTI(61)=1
09949               RETURN
09950             ENDIF
09951             GOTO 100
09952           ENDIF
09953         ENDIF
09954  
09955 C...DIS as f + gamma* -> f process: set dummy values.
09956       ELSEIF(ISTSB.EQ.8) THEN
09957         VINT(21)=0.9D0
09958         VINT(22)=0D0
09959         VINT(23)=0D0
09960         VINT(47)=0D0
09961         VINT(48)=0D0
09962  
09963 C...Low-pT or multiple interactions (first semihard interaction).
09964       ELSEIF(ISTSB.EQ.9) THEN
09965         IF(MINT(35).LE.1) CALL PYMULT(3)
09966         IF(MINT(35).GE.2) CALL PYMIGN(3)
09967         ISUB=MINT(1)
09968  
09969 C...Study user-defined process: kinematics plus weight.
09970       ELSEIF(ISTSB.EQ.11) THEN
09971         IF(IDWTUP.GT.0.AND.XWGTUP.LT.0D0) CALL
09972      &  PYERRM(26,'(PYRAND:) Negative XWGTUP for user process')
09973         MSTI(51)=0
09974         IF(NUP.LE.0) THEN
09975           MINT(51)=2
09976           MSTI(51)=1
09977           IF(MINT(82).EQ.1) THEN
09978             NGEN(0,1)=NGEN(0,1)-1
09979             NGEN(ISUB,1)=NGEN(ISUB,1)-1
09980           ENDIF
09981           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
09982           RETURN
09983         ENDIF
09984  
09985 C...Extract cross section event weight.
09986         IF(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.4) THEN
09987           SIGS=1D-9*XWGTUP
09988         ELSE
09989           SIGS=1D-9*XSECUP(KFPR(ISUB,1))
09990         ENDIF
09991         IF(IABS(IDWTUP).GE.1.AND.IABS(IDWTUP).LE.3) THEN
09992           VINT(97)=SIGN(1D0,XWGTUP)
09993         ELSE
09994           VINT(97)=1D-9*XWGTUP
09995         ENDIF
09996  
09997 C...Construct 'trivial' kinematical variables needed.
09998         KFL1=IDUP(1)
09999         KFL2=IDUP(2)
10000         VINT(41)=PUP(4,1)/EBMUP(1)
10001         VINT(42)=PUP(4,2)/EBMUP(2)
10002         IF (VINT(41).GT.1.000001.OR.VINT(42).GT.1.000001) THEN
10003           CALL PYERRM(9,'(PYRAND:) x > 1 in external event '//
10004      &        '(listing follows):') 
10005           CALL PYLIST(7)
10006         ENDIF
10007         VINT(21)=VINT(41)*VINT(42)
10008         VINT(22)=0.5D0*LOG(VINT(41)/VINT(42))
10009         VINT(44)=VINT(21)*VINT(2)
10010         VINT(43)=SQRT(MAX(0D0,VINT(44)))
10011         VINT(55)=SCALUP
10012         IF(SCALUP.LE.0D0) VINT(55)=VINT(43)
10013         VINT(56)=VINT(55)**2
10014         VINT(57)=AQEDUP
10015         VINT(58)=AQCDUP
10016  
10017 C...Construct other kinematical variables needed (approximately).
10018         VINT(23)=0D0
10019         VINT(26)=VINT(21)
10020         VINT(45)=-0.5D0*VINT(44)
10021         VINT(46)=-0.5D0*VINT(44)
10022         VINT(49)=VINT(43)
10023         VINT(50)=VINT(44)
10024         VINT(51)=VINT(55)
10025         VINT(52)=VINT(56)
10026         VINT(53)=VINT(55)
10027         VINT(54)=VINT(56)
10028         VINT(25)=0D0
10029         VINT(48)=0D0
10030         IF(ISTUP(1).NE.-1.OR.ISTUP(2).NE.-1) CALL PYERRM(26,
10031      &  '(PYRAND:) unacceptable ISTUP code for incoming particles')
10032         DO 280 IUP=3,NUP
10033           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) CALL PYERRM(26,
10034      &    '(PYRAND:) unacceptable ISTUP code for particles')
10035           IF(ISTUP(IUP).EQ.1) VINT(25)=VINT(25)+2D0*(PUP(5,IUP)**2+
10036      &    PUP(1,IUP)**2+PUP(2,IUP)**2)/VINT(2)
10037           IF(ISTUP(IUP).EQ.1) VINT(48)=VINT(48)+0.5D0*(PUP(1,IUP)**2+
10038      &    PUP(2,IUP)**2)
10039   280   CONTINUE
10040         VINT(47)=SQRT(VINT(48))
10041       ENDIF
10042  
10043 C...Choose azimuthal angle.
10044       VINT(24)=0D0
10045       IF(ISTSB.NE.11) VINT(24)=PARU(2)*PYR(0)
10046  
10047 C...Check against user cuts on kinematics at parton level.
10048       MINT(51)=0
10049       IF((ISUB.LE.90.OR.ISUB.GT.100).AND.ISTSB.LE.10) CALL PYKLIM(0)
10050       IF(MINT(51).NE.0) THEN
10051         IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10052         IF(MFAIL.EQ.1) THEN
10053           MSTI(61)=1
10054           RETURN
10055         ENDIF
10056         GOTO 100
10057       ENDIF
10058       IF(MINT(82).EQ.1.AND.MSTP(141).GE.1.AND.ISTSB.LE.10) THEN
10059         MCUT=0
10060         IF(MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+MSUB(95).EQ.0)
10061      &  CALL PYKCUT(MCUT)
10062         IF(MCUT.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...Calculate differential cross-section for different subprocesses.
10073       IF(ISTSB.LE.10) CALL PYSIGH(NCHN,SIGS)
10074       SIGSOR=SIGS
10075       SIGLPT=SIGT(0,0,5)*VINT(315)*VINT(316)
10076  
10077 C...Multiply cross section by lepton -> photon flux factor.
10078       IF(MINT(141).NE.0.OR.MINT(142).NE.0) THEN
10079         SIGS=WTGAGA*SIGS
10080         DO 290 ICHN=1,NCHN
10081           SIGH(ICHN)=WTGAGA*SIGH(ICHN)
10082   290   CONTINUE
10083         SIGLPT=WTGAGA*SIGLPT
10084       ENDIF
10085  
10086 C...Multiply cross-section by user-defined weights.
10087       IF(MSTP(173).EQ.1) THEN
10088         SIGS=PARP(173)*SIGS
10089         DO 300 ICHN=1,NCHN
10090           SIGH(ICHN)=PARP(173)*SIGH(ICHN)
10091   300   CONTINUE
10092         SIGLPT=PARP(173)*SIGLPT
10093       ENDIF
10094       WTXS=1D0
10095       SIGSWT=SIGS
10096       VINT(99)=1D0
10097       VINT(100)=1D0
10098       IF(MINT(82).EQ.1.AND.MSTP(142).GE.1) THEN
10099         IF(ISUB.NE.96.AND.MSUB(91)+MSUB(92)+MSUB(93)+MSUB(94)+
10100      &  MSUB(95).EQ.0) CALL PYEVWT(WTXS)
10101         SIGSWT=WTXS*SIGS
10102         VINT(99)=WTXS
10103         IF(MSTP(142).EQ.1) VINT(100)=1D0/WTXS
10104       ENDIF
10105  
10106 C...Calculations for Monte Carlo estimate of all cross-sections.
10107       IF(MINT(82).EQ.1.AND.ISUB.LE.90.OR.ISUB.GE.96) THEN
10108         IF(MSTP(142).LE.1) THEN
10109           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
10110         ELSE
10111           XSEC(ISUB,2)=XSEC(ISUB,2)+SIGSWT
10112         ENDIF
10113       ELSEIF(MINT(82).EQ.1) THEN
10114         XSEC(ISUB,2)=XSEC(ISUB,2)+SIGS
10115       ENDIF
10116       IF((ISUB.EQ.95.OR.ISUB.EQ.96).AND.LOOP2.EQ.1.AND.
10117      &MINT(82).EQ.1) XSEC(97,2)=XSEC(97,2)+SIGLPT
10118  
10119 C...Multiple interactions: store results of cross-section calculation.
10120       IF(MINT(50).EQ.1.AND.MSTP(82).GE.3) THEN
10121         VINT(153)=SIGSOR
10122         IF(MINT(35).LE.1) CALL PYMULT(4)
10123         IF(MINT(35).GE.2) CALL PYMIGN(4)
10124       ENDIF
10125  
10126 C...Ratio of actual to maximum cross section.
10127       IF(ISTSB.NE.11) THEN
10128         VIOL=SIGSWT/XSEC(ISUB,1)
10129         IF(ISUB.EQ.96.AND.MSTP(173).EQ.1) VIOL=VIOL/PARP(174)
10130       ELSEIF(IDWTUP.EQ.1.OR.IDWTUP.EQ.2) THEN
10131         VIOL=XWGTUP/XMAXUP(KFPR(ISUB,1))
10132       ELSEIF(IDWTUP.EQ.-1.OR.IDWTUP.EQ.-2) THEN
10133         VIOL=ABS(XWGTUP)/ABS(XMAXUP(KFPR(ISUB,1)))
10134       ELSE
10135         VIOL=1D0
10136       ENDIF
10137  
10138 C...Check that weight not negative.
10139       IF(MSTP(123).LE.0) THEN
10140         IF(VIOL.LT.-1D-3) THEN
10141           WRITE(MSTU(11),5000) VIOL,NGEN(0,3)+1
10142           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
10143      &    VINT(22),VINT(23),VINT(26)
10144           CALL PYSTOP(2)
10145         ENDIF
10146       ELSE
10147         IF(VIOL.LT.MIN(-1D-3,VINT(109))) THEN
10148           VINT(109)=VIOL
10149           IF(MSTP(123).LE.2) WRITE(MSTU(11),5200) VIOL,NGEN(0,3)+1
10150           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100) ISUB,VINT(21),
10151      &    VINT(22),VINT(23),VINT(26)
10152         ENDIF
10153       ENDIF
10154  
10155 C...Weighting using estimate of maximum of differential cross-section.
10156       RATND=1D0
10157       IF(MFAIL.EQ.0.AND.ISUB.NE.95.AND.ISUB.NE.96) THEN
10158         IF(VIOL.LT.PYR(0)) THEN
10159           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10160           IF(ISUB.GE.91.AND.ISUB.LE.94) ISUB=0
10161           GOTO 100
10162         ENDIF
10163       ELSEIF(MFAIL.EQ.0) THEN
10164         RATND=SIGLPT/XSEC(95,1)
10165         VIOL=VIOL/RATND
10166         IF(LOOP2.EQ.1.AND.RATND.LT.PYR(0)) THEN
10167           IF(VIOL.GT.PYR(0).AND.MINT(82).EQ.1.AND.MSUB(95).EQ.1.AND.
10168      &    (ISUB.LE.90.OR.ISUB.GE.95)) NGEN(95,1)=NGEN(95,1)+MINT(143)
10169           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10170           ISUB=0
10171           GOTO 100
10172         ENDIF
10173         IF(VIOL.LT.PYR(0)) THEN
10174           GOTO 140
10175         ENDIF
10176       ELSEIF(ISUB.NE.95.AND.ISUB.NE.96) THEN
10177         IF(VIOL.LT.PYR(0)) THEN
10178           MSTI(61)=1
10179           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10180           RETURN
10181         ENDIF
10182       ELSE
10183         RATND=SIGLPT/XSEC(95,1)
10184         IF(LOOP.EQ.1.AND.RATND.LT.PYR(0)) THEN
10185           MSTI(61)=1
10186           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10187           RETURN
10188         ENDIF
10189         VIOL=VIOL/RATND
10190         IF(VIOL.LT.PYR(0)) THEN
10191           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10192           GOTO 100
10193         ENDIF
10194       ENDIF
10195  
10196 C...Check for possible violation of estimated maximum of differential
10197 C...cross-section used in weighting.
10198       IF(MSTP(123).LE.0) THEN
10199         IF(VIOL.GT.1D0) THEN
10200           WRITE(MSTU(11),5300) VIOL,NGEN(0,3)+1
10201           IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
10202      &    VINT(22),VINT(23),VINT(26)
10203           CALL PYSTOP(2)
10204         ENDIF
10205       ELSEIF(MSTP(123).EQ.1) THEN
10206         IF(VIOL.GT.VINT(108)) THEN
10207           VINT(108)=VIOL
10208           IF(VIOL.GT.1.0001D0) THEN
10209             MINT(10)=1
10210             WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
10211             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
10212      &      VINT(22),VINT(23),VINT(26)
10213           ENDIF
10214         ENDIF
10215       ELSEIF(VIOL.GT.VINT(108)) THEN
10216         VINT(108)=VIOL
10217         IF(VIOL.GT.1D0) THEN
10218           MINT(10)=1
10219           IF(MSTP(123).EQ.2) WRITE(MSTU(11),5400) VIOL,NGEN(0,3)+1
10220           IF(ISTSB.EQ.11.AND.(IABS(IDWTUP).EQ.1.OR.IABS(IDWTUP).EQ.2))
10221      &    THEN
10222             XMAXUP(KFPR(ISUB,1))=VIOL*XMAXUP(KFPR(ISUB,1))
10223             IF(KFPR(ISUB,1).LE.9) THEN
10224               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5800) KFPR(ISUB,1),
10225      &        XMAXUP(KFPR(ISUB,1))
10226             ELSEIF(KFPR(ISUB,1).LE.99) THEN
10227               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5900) KFPR(ISUB,1),
10228      &        XMAXUP(KFPR(ISUB,1))
10229             ELSE
10230               IF(MSTP(123).EQ.2) WRITE(MSTU(11),6000) KFPR(ISUB,1),
10231      &        XMAXUP(KFPR(ISUB,1))
10232             ENDIF
10233           ENDIF
10234           IF(ISTSB.NE.11.OR.IABS(IDWTUP).EQ.1) THEN
10235             XDIF=XSEC(ISUB,1)*(VIOL-1D0)
10236             XSEC(ISUB,1)=XSEC(ISUB,1)+XDIF
10237             IF(MSUB(ISUB).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GT.96))
10238      &      XSEC(0,1)=XSEC(0,1)+XDIF
10239             IF(MSTP(122).GE.2) WRITE(MSTU(11),5100) ISUB,VINT(21),
10240      &      VINT(22),VINT(23),VINT(26)
10241             IF(ISUB.LE.9) THEN
10242               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5500) ISUB,XSEC(ISUB,1)
10243             ELSEIF(ISUB.LE.99) THEN
10244               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5600) ISUB,XSEC(ISUB,1)
10245             ELSE
10246               IF(MSTP(123).EQ.2) WRITE(MSTU(11),5700) ISUB,XSEC(ISUB,1)
10247             ENDIF
10248           ENDIF
10249           VINT(108)=1D0
10250         ENDIF
10251       ENDIF
10252  
10253 C...Multiple interactions: choose impact parameter (if not already done).
10254       IF(MINT(39).EQ.0) VINT(148)=1D0
10255       IF(MINT(50).EQ.1.AND.(ISUB.LE.90.OR.ISUB.GE.96).AND.
10256      &MSTP(82).GE.3) THEN
10257         IF(MINT(35).LE.1) CALL PYMULT(5)
10258         IF(MINT(35).GE.2) CALL PYMIGN(5)
10259         IF(VINT(150).LT.PYR(0)) THEN
10260           IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10261           IF(MFAIL.EQ.1) THEN
10262             MSTI(61)=1
10263             RETURN
10264           ENDIF
10265           GOTO 100
10266         ENDIF
10267       ENDIF
10268       IF(MINT(82).EQ.1) NGEN(0,2)=NGEN(0,2)+1
10269       IF(MINT(82).EQ.1.AND.MSUB(95).EQ.1) THEN
10270         IF(ISUB.LE.90.OR.ISUB.GE.95) NGEN(95,1)=NGEN(95,1)+MINT(143)
10271         IF(ISUB.LE.90.OR.ISUB.GE.96) NGEN(96,2)=NGEN(96,2)+1
10272       ENDIF
10273       IF(ISUB.LE.90.OR.ISUB.GE.96) MINT(31)=MINT(31)+1
10274  
10275 C...Choose flavour of reacting partons (and subprocess).
10276       IF(ISTSB.GE.11) GOTO 320
10277       RSIGS=SIGS*PYR(0)
10278       QT2=VINT(48)
10279       RQQBAR=PARP(87)*(1D0-(QT2/(QT2+(PARP(88)*PARP(82)*
10280      &(VINT(1)/PARP(89))**PARP(90))**2))**2)
10281       IF(ISUB.NE.95.AND.(ISUB.NE.96.OR.MSTP(82).LE.1.OR.
10282      &PYR(0).GT.RQQBAR)) THEN
10283         DO 310 ICHN=1,NCHN
10284           KFL1=ISIG(ICHN,1)
10285           KFL2=ISIG(ICHN,2)
10286           MINT(2)=ISIG(ICHN,3)
10287           RSIGS=RSIGS-SIGH(ICHN)
10288           IF(RSIGS.LE.0D0) GOTO 320
10289   310   CONTINUE
10290  
10291 C...Multiple interactions: choose qqbar preferentially at small pT.
10292       ELSEIF(ISUB.EQ.96) THEN
10293         MINT(105)=MINT(103)
10294         MINT(109)=MINT(107)
10295         CALL PYSPLI(MINT(11),21,KFL1,KFLDUM)
10296         MINT(105)=MINT(104)
10297         MINT(109)=MINT(108)
10298         CALL PYSPLI(MINT(12),21,KFL2,KFLDUM)
10299         MINT(1)=11
10300         MINT(2)=1
10301         IF(KFL1.EQ.KFL2.AND.PYR(0).LT.0.5D0) MINT(2)=2
10302  
10303 C...Low-pT: choose string drawing configuration.
10304       ELSE
10305         KFL1=21
10306         KFL2=21
10307         RSIGS=6D0*PYR(0)
10308         MINT(2)=1
10309         IF(RSIGS.GT.1D0) MINT(2)=2
10310         IF(RSIGS.GT.2D0) MINT(2)=3
10311       ENDIF
10312  
10313 C...Reassign QCD process. Partons before initial state radiation.
10314   320 IF(MINT(2).GT.10) THEN
10315         MINT(1)=MINT(2)/10
10316         MINT(2)=MOD(MINT(2),10)
10317       ENDIF
10318       IF(MINT(82).EQ.1.AND.MSTP(111).GE.0) NGEN(MINT(1),2)=
10319      &NGEN(MINT(1),2)+1
10320       MINT(15)=KFL1
10321       MINT(16)=KFL2
10322       MINT(13)=MINT(15)
10323       MINT(14)=MINT(16)
10324       VINT(141)=VINT(41)
10325       VINT(142)=VINT(42)
10326       VINT(151)=0D0
10327       VINT(152)=0D0
10328  
10329 C...Calculate x value of photon for parton inside photon inside e.
10330       DO 350 JT=1,2
10331         MINT(18+JT)=0
10332         VINT(154+JT)=0D0
10333         MSPLI=0
10334         IF(JT.EQ.1.AND.MINT(43).LE.2) MSPLI=1
10335         IF(JT.EQ.2.AND.MOD(MINT(43),2).EQ.1) MSPLI=1
10336         IF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) MSPLI=MSPLI+1
10337         IF(MSPLI.EQ.2) THEN
10338           KFLH=MINT(14+JT)
10339           XHRD=VINT(140+JT)
10340           Q2HRD=VINT(54)
10341           MINT(105)=MINT(102+JT)
10342           MINT(109)=MINT(106+JT)
10343           VINT(120)=VINT(2+JT)
10344           IF(MSTP(57).LE.1) THEN
10345             CALL PYPDFU(22,XHRD,Q2HRD,XPQ)
10346           ELSE
10347             CALL PYPDFL(22,XHRD,Q2HRD,XPQ)
10348           ENDIF
10349           WTMX=4D0*XPQ(KFLH)
10350           IF(MSTP(13).EQ.2) THEN
10351             Q2PMS=Q2HRD/PMAS(11,1)**2
10352             WTMX=WTMX*LOG(MAX(2D0,Q2PMS*(1D0-XHRD)/XHRD**2))
10353           ENDIF
10354   330     XE=XHRD**PYR(0)
10355           XG=MIN(1D0-1D-10,XHRD/XE)
10356           IF(MSTP(57).LE.1) THEN
10357             CALL PYPDFU(22,XG,Q2HRD,XPQ)
10358           ELSE
10359             CALL PYPDFL(22,XG,Q2HRD,XPQ)
10360           ENDIF
10361           WT=(1D0+(1D0-XE)**2)*XPQ(KFLH)
10362           IF(MSTP(13).EQ.2) WT=WT*LOG(MAX(2D0,Q2PMS*(1D0-XE)/XE**2))
10363           IF(WT.LT.PYR(0)*WTMX) GOTO 330
10364           MINT(18+JT)=1
10365           VINT(154+JT)=XE
10366           DO 340 KFLS=-25,25
10367             XSFX(JT,KFLS)=XPQ(KFLS)
10368   340     CONTINUE
10369         ENDIF
10370   350 CONTINUE
10371  
10372 C...Pick scale where photon is resolved.
10373       Q0S=PARP(15)**2
10374       Q1S=VINT(154)**2
10375       VINT(283)=0D0
10376       IF(MINT(107).EQ.3) THEN
10377         IF(MSTP(66).EQ.1) THEN
10378           VINT(283)=Q0S*(VINT(54)/Q0S)**PYR(0)
10379         ELSEIF(MSTP(66).EQ.2) THEN
10380           PS=VINT(3)**2
10381           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
10382      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
10383           Q2INT=SQRT(Q0S*Q2EFF)
10384           VINT(283)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
10385         ELSEIF(MSTP(66).EQ.3) THEN
10386           VINT(283)=Q0S*(Q1S/Q0S)**PYR(0)
10387         ELSEIF(MSTP(66).GE.4) THEN
10388           PS=0.25D0*VINT(3)**2
10389           VINT(283)=(Q0S+PS)*(Q1S+PS)/
10390      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
10391         ENDIF
10392       ENDIF
10393       VINT(284)=0D0
10394       IF(MINT(108).EQ.3) THEN
10395         IF(MSTP(66).EQ.1) THEN
10396           VINT(284)=Q0S*(VINT(54)/Q0S)**PYR(0)
10397         ELSEIF(MSTP(66).EQ.2) THEN
10398           PS=VINT(4)**2
10399           Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
10400      &    EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
10401           Q2INT=SQRT(Q0S*Q2EFF)
10402           VINT(284)=Q2INT*(VINT(54)/Q2INT)**PYR(0)
10403         ELSEIF(MSTP(66).EQ.3) THEN
10404           VINT(284)=Q0S*(Q1S/Q0S)**PYR(0)
10405         ELSEIF(MSTP(66).GE.4) THEN
10406           PS=0.25D0*VINT(4)**2
10407           VINT(284)=(Q0S+PS)*(Q1S+PS)/
10408      &    (Q0S+PYR(0)*(Q1S-Q0S)+PS)-PS
10409         ENDIF
10410       ENDIF
10411       IF(MINT(121).GT.1) CALL PYSAVE(2,IGA)
10412  
10413 C...Format statements for differential cross-section maximum violations.
10414  5000 FORMAT(/1X,'Error: negative cross-section fraction',1P,D11.3,1X,
10415      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
10416  5100 FORMAT(1X,'ISUB = ',I3,'; Point of violation:'/1X,'tau =',1P,
10417      &D11.3,', y* =',D11.3,', cthe = ',0P,F11.7,', tau'' =',1P,D11.3)
10418  5200 FORMAT(/1X,'Warning: negative cross-section fraction',1P,D11.3,1X,
10419      &'in event',1X,I7)
10420  5300 FORMAT(/1X,'Error: maximum violated by',1P,D11.3,1X,
10421      &'in event',1X,I7,'D0'/1X,'Execution stopped!')
10422  5400 FORMAT(/1X,'Advisory warning: maximum violated by',1P,D11.3,1X,
10423      &'in event',1X,I7)
10424  5500 FORMAT(1X,'XSEC(',I1,',1) increased to',1P,D11.3)
10425  5600 FORMAT(1X,'XSEC(',I2,',1) increased to',1P,D11.3)
10426  5700 FORMAT(1X,'XSEC(',I3,',1) increased to',1P,D11.3)
10427  5800 FORMAT(1X,'XMAXUP(',I1,') increased to',1P,D11.3)
10428  5900 FORMAT(1X,'XMAXUP(',I2,') increased to',1P,D11.3)
10429  6000 FORMAT(1X,'XMAXUP(',I3,') increased to',1P,D11.3)
10430  
10431       RETURN
10432       END
10433  
10434 C*********************************************************************
10435  
10436 C...PYSCAT
10437 C...Finds outgoing flavours and event type; sets up the kinematics
10438 C...and colour flow of the hard scattering
10439  
10440       SUBROUTINE PYSCAT
10441  
10442 C...Double precision and integer declarations
10443       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
10444       IMPLICIT INTEGER(I-N)
10445       INTEGER PYK,PYCHGE,PYCOMP
10446 C...Parameter statement to help give large particle numbers.
10447       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
10448      &KEXCIT=4000000,KDIMEN=5000000)
10449 C...Parameter statement for maximum size of showers.
10450       PARAMETER (MAXNUR=1000)
10451  
10452 C...User process event common block.
10453       INTEGER MAXNUP
10454       PARAMETER (MAXNUP=500)
10455       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
10456       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
10457       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
10458      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
10459      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
10460       SAVE /HEPEUP/
10461  
10462 C...Commonblocks.
10463       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
10464       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
10465       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
10466       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
10467       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
10468       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
10469       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
10470       COMMON/PYINT1/MINT(400),VINT(400)
10471       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
10472       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
10473       COMMON/PYINT4/MWID(500),WIDS(500,5)
10474       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
10475       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
10476      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
10477       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
10478       COMMON/PYPUED/IUED(0:99),RUED(0:99)
10479       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,
10480      &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYSSMT/,
10481      &/PYTCSM/,/PYPUED/
10482 C...Local arrays and saved variables
10483       DIMENSION WDTP(0:400),WDTE(0:400,0:5),PMQ(2),Z(2),CTHE(2),
10484      &PHI(2),KUPPO(100),VINTSV(41:66),ILAB(100)
10485       INTEGER IOKFLA(6),IIFLAV
10486 C...UED related declarations:
10487 C...equivalences between ordered particles (451->475)
10488 C...and UED particle code (5 000 000 + id)
10489       DIMENSION IUEDEQ(475),MUED(2)
10490       DATA (IUEDEQ(I),I=451,475)/
10491      & 6100001,6100002,6100003,6100004,6100005,6100006, 
10492      & 5100001,5100002,5100003,5100004,5100005,5100006, 
10493      & 6100011,6100013,6100015,                         
10494      & 5100012,5100011,5100014,5100013,5100016,5100015, 
10495      & 5100021,5100022,5100023,5100024/                 
10496       SAVE VINTSV
10497  
10498 C...Read out process
10499       ISUB=MINT(1)
10500       ISUBSV=ISUB
10501  
10502 C...Restore information for low-pT processes
10503       IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN
10504         DO 100 J=41,66
10505   100   VINT(J)=VINTSV(J)
10506       ENDIF
10507  
10508 C...Convert H' or A process into equivalent H one
10509       IHIGG=1
10510       KFHIGG=25
10511       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
10512      &ISUB.LE.190)) THEN
10513         IHIGG=2
10514         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
10515         KFHIGG=33+IHIGG
10516         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
10517         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
10518         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
10519         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
10520         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
10521         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
10522         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
10523         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
10524         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
10525         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
10526         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
10527         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
10528       ENDIF
10529  
10530       IF(ISUB.EQ.401.OR.ISUB.EQ.402) KFHIGG=KFPR(ISUB,1)
10531  
10532 C...Convert bottomonium process into equivalent charmonium ones.
10533       IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40
10534  
10535 C...Choice of subprocess, number of documentation lines
10536       IDOC=6+ISET(ISUB)
10537       IF(ISUB.EQ.95) IDOC=8
10538       IF(ISET(ISUB).EQ.5) IDOC=9
10539       IF(ISET(ISUB).EQ.11) IDOC=4+NUP
10540       MINT(3)=IDOC-6
10541       IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2
10542       MINT(4)=IDOC
10543       IPU1=MINT(84)+1
10544       IPU2=MINT(84)+2
10545       IPU3=MINT(84)+3
10546       IPU4=MINT(84)+4
10547       IPU5=MINT(84)+5
10548       IPU6=MINT(84)+6
10549  
10550 C...Reset K, P and V vectors. Store incoming particles
10551       DO 120 JT=1,MSTP(126)+100
10552         I=MINT(83)+JT
10553         IF(I.GT.MSTU(4)) GOTO 120
10554         DO 110 J=1,5
10555           K(I,J)=0
10556           P(I,J)=0D0
10557           V(I,J)=0D0
10558   110   CONTINUE
10559   120 CONTINUE
10560       DO 140 JT=1,2
10561         I=MINT(83)+JT
10562         K(I,1)=21
10563         K(I,2)=MINT(10+JT)
10564         DO 130 J=1,5
10565           P(I,J)=VINT(285+5*JT+J)
10566   130   CONTINUE
10567   140 CONTINUE
10568       MINT(6)=2
10569       KFRES=0
10570  
10571 C...Store incoming partons in their CM-frame. Save pdf value.
10572       SH=VINT(44)
10573       SHR=SQRT(SH)
10574       SHP=VINT(26)*VINT(2)
10575       SHPR=SQRT(SHP)
10576       SHUSER=SHR
10577       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR
10578       DO 150 JT=1,2
10579         I=MINT(84)+JT
10580         K(I,1)=14
10581         K(I,2)=MINT(14+JT)
10582         K(I,3)=MINT(83)+2+JT
10583         P(I,3)=0.5D0*SHUSER*(-1D0)**(JT-1)
10584         P(I,4)=0.5D0*SHUSER
10585         VINT(38+JT)=XSFX(JT,MINT(14+JT))
10586   150 CONTINUE
10587  
10588 C...Copy incoming partons to documentation lines
10589       DO 170 JT=1,2
10590         I1=MINT(83)+4+JT
10591         I2=MINT(84)+JT
10592         K(I1,1)=21
10593         K(I1,2)=K(I2,2)
10594         K(I1,3)=I1-2
10595         DO 160 J=1,5
10596           P(I1,J)=P(I2,J)
10597   160   CONTINUE
10598   170 CONTINUE
10599  
10600 C...Choose new quark/lepton flavour for relevant annihilation graphs
10601       IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58.OR.
10602      &ISUB.EQ.314.OR.ISUB.EQ.319.OR.ISUB.EQ.316.OR.
10603      &(ISUB.GE.135.AND.ISUB.LE.140).OR.ISUB.EQ.382.OR.ISUB.EQ.385) THEN
10604         IGLGA=21
10605         IF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) IGLGA=22
10606         CALL PYWIDT(IGLGA,SH,WDTP,WDTE)
10607   180   RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
10608         DO 190 I=1,MDCY(IGLGA,3)
10609           KFLF=KFDP(I+MDCY(IGLGA,2)-1,1)
10610           RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
10611           IF(RKFL.LE.0D0) GOTO 200
10612   190   CONTINUE
10613   200   CONTINUE
10614         IF((ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319
10615      &      .OR.ISUB.EQ.316).AND.MINT(2).LE.2) THEN
10616           IF(KFLF.GE.4) GOTO 180
10617         ELSEIF((ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319.
10618      &       OR.ISUB.EQ.316).AND.MINT(2).LE.4) THEN
10619           KFLF=4
10620           MINT(2)=MINT(2)-2
10621         ELSEIF(ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319.
10622      &        OR.ISUB.EQ.316) THEN
10623           KFLF=5
10624           MINT(2)=MINT(2)-4
10625         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.1.AND.IABS(MINT(15)).LE.2
10626      &  .AND.IABS(KFLF).GE.3) THEN
10627           FACQQB=VINT(58)**2*4D0/9D0*(VINT(45)**2+VINT(46)**2)/
10628      &    VINT(44)**2
10629           FACCIB=VINT(46)**2/RTCM(41)**4
10630           IF(FACQQB/(FACQQB+FACCIB).LT.PYR(0)) GOTO 180
10631         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.2) THEN
10632           KFLF=5
10633           MINT(2)=1
10634         ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.1) THEN
10635           IF(KFLF.EQ.5) GOTO 180
10636         ELSEIF(ISUB.EQ.54.OR.ISUB.EQ.135.OR.ISUB.EQ.136) THEN
10637           IF((KCHG(PYCOMP(KFLF),1)/2D0)**2.LT.PYR(0)) GOTO 180
10638         ELSEIF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) THEN
10639           IF((KCHG(PYCOMP(KFLF),1)/3D0)**2.LT.PYR(0)) GOTO 180
10640         ENDIF
10641       ENDIF
10642  
10643 C...Final state flavours and colour flow: default values
10644       JS=1
10645       MINT(21)=MINT(15)
10646       MINT(22)=MINT(16)
10647       MINT(23)=0
10648       MINT(24)=0
10649       KCC=20
10650       KCS=ISIGN(1,MINT(15))
10651  
10652       IF(ISET(ISUB).EQ.11) THEN
10653 C...User-defined processes: find products
10654         MINT(3)=0
10655         DO 210 IUP=3,NUP
10656           IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) THEN
10657           ELSEIF(NUP.EQ.5.AND.IUP.GE.4.AND.MOTHUP(1,4).EQ.3) THEN
10658             MINT(21+IUP)=IDUP(IUP)
10659           ELSEIF(ISTUP(IUP).EQ.1.AND.(ISTUP(MOTHUP(1,IUP)).EQ.2.OR.
10660      &    ISTUP(MOTHUP(1,IUP)).EQ.3).AND.IDUP(MOTHUP(1,IUP)).NE.0) THEN
10661           ELSEIF(IDUP(IUP).EQ.0) THEN
10662           ELSE
10663             MINT(3)=MINT(3)+1
10664             IF(MINT(3).LE.6) MINT(20+MINT(3))=IDUP(IUP)
10665           ENDIF
10666   210   CONTINUE
10667  
10668       ELSEIF(ISUB.LE.10) THEN
10669         IF(ISUB.EQ.1) THEN
10670 C...f + fbar -> gamma*/Z0
10671           KFRES=23
10672  
10673         ELSEIF(ISUB.EQ.2) THEN
10674 C...f + fbar' -> W+/-
10675           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10676           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10677           KFRES=ISIGN(24,KCH1+KCH2)
10678  
10679         ELSEIF(ISUB.EQ.3) THEN
10680 C...f + fbar -> h0 (or H0, or A0)
10681           KFRES=KFHIGG
10682  
10683         ELSEIF(ISUB.EQ.4) THEN
10684 C...gamma + W+/- -> W+/-
10685  
10686         ELSEIF(ISUB.EQ.5) THEN
10687 C...Z0 + Z0 -> h0
10688           XH=SH/SHP
10689           MINT(21)=MINT(15)
10690           MINT(22)=MINT(16)
10691           PMQ(1)=PYMASS(MINT(21))
10692           PMQ(2)=PYMASS(MINT(22))
10693   220     JT=INT(1.5D0+PYR(0))
10694           ZMIN=2D0*PMQ(JT)/SHPR
10695           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10696      &    (SHPR*(SHPR-PMQ(3-JT)))
10697           ZMAX=MIN(1D0-XH,ZMAX)
10698           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10699           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10700      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 220
10701           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10702           IF(SQC1.LT.1D-8) GOTO 220
10703           C1=SQRT(SQC1)
10704           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10705           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10706           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10707           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10708           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10709           IF(SQC1.LT.1D-8) GOTO 220
10710           C1=SQRT(SQC1)
10711           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10712           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10713           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10714           PHIR=PARU(2)*PYR(0)
10715           CPHI=COS(PHIR)
10716           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10717      &    SQRT(1D0-CTHE(2)**2)*CPHI
10718           Z1=2D0-Z(JT)
10719           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10720           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10721           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10722      &    PMQ(3-JT)**2/SHP))
10723           ZMIN=2D0*PMQ(3-JT)/SHPR
10724           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10725           ZMAX=MIN(1D0-XH,ZMAX)
10726           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220
10727           KCC=22
10728           KFRES=25
10729  
10730         ELSEIF(ISUB.EQ.6) THEN
10731 C...Z0 + W+/- -> W+/-
10732  
10733         ELSEIF(ISUB.EQ.7) THEN
10734 C...W+ + W- -> Z0
10735  
10736         ELSEIF(ISUB.EQ.8) THEN
10737 C...W+ + W- -> h0
10738           XH=SH/SHP
10739   230     DO 260 JT=1,2
10740             I=MINT(14+JT)
10741             IA=IABS(I)
10742             IF(IA.LE.10) THEN
10743               RVCKM=VINT(180+I)*PYR(0)
10744               DO 240 J=1,MSTP(1)
10745                 IB=2*J-1+MOD(IA,2)
10746                 IPM=(5-ISIGN(1,I))/2
10747                 IDC=J+MDCY(IA,2)+2
10748                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240
10749                 MINT(20+JT)=ISIGN(IB,I)
10750                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10751                 IF(RVCKM.LE.0D0) GOTO 250
10752   240         CONTINUE
10753             ELSE
10754               IB=2*((IA+1)/2)-1+MOD(IA,2)
10755               MINT(20+JT)=ISIGN(IB,I)
10756             ENDIF
10757   250       PMQ(JT)=PYMASS(MINT(20+JT))
10758   260     CONTINUE
10759           JT=INT(1.5D0+PYR(0))
10760           ZMIN=2D0*PMQ(JT)/SHPR
10761           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
10762      &    (SHPR*(SHPR-PMQ(3-JT)))
10763           ZMAX=MIN(1D0-XH,ZMAX)
10764           IF(ZMIN.GE.ZMAX) GOTO 230
10765           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
10766           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
10767      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 230
10768           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
10769           IF(SQC1.LT.1D-8) GOTO 230
10770           C1=SQRT(SQC1)
10771           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
10772           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10773           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
10774           Z(3-JT)=1D0-XH/(1D0-Z(JT))
10775           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
10776           IF(SQC1.LT.1D-8) GOTO 230
10777           C1=SQRT(SQC1)
10778           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
10779           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
10780           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
10781           PHIR=PARU(2)*PYR(0)
10782           CPHI=COS(PHIR)
10783           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
10784      &    SQRT(1D0-CTHE(2)**2)*CPHI
10785           Z1=2D0-Z(JT)
10786           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
10787           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
10788           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
10789      &    PMQ(3-JT)**2/SHP))
10790           ZMIN=2D0*PMQ(3-JT)/SHPR
10791           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
10792           ZMAX=MIN(1D0-XH,ZMAX)
10793           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230
10794           KCC=22
10795           KFRES=25
10796  
10797         ELSEIF(ISUB.EQ.10) THEN
10798 C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2
10799           IF(MINT(2).EQ.1) THEN
10800             KCC=22
10801           ELSE
10802 C...W exchange: need to mix flavours according to CKM matrix
10803             DO 280 JT=1,2
10804               I=MINT(14+JT)
10805               IA=IABS(I)
10806               IF(IA.LE.10) THEN
10807                 RVCKM=VINT(180+I)*PYR(0)
10808                 DO 270 J=1,MSTP(1)
10809                   IB=2*J-1+MOD(IA,2)
10810                   IPM=(5-ISIGN(1,I))/2
10811                   IDC=J+MDCY(IA,2)+2
10812                   IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270
10813                   MINT(20+JT)=ISIGN(IB,I)
10814                   RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10815                   IF(RVCKM.LE.0D0) GOTO 280
10816   270           CONTINUE
10817               ELSE
10818                 IB=2*((IA+1)/2)-1+MOD(IA,2)
10819                 MINT(20+JT)=ISIGN(IB,I)
10820               ENDIF
10821   280       CONTINUE
10822             KCC=22
10823           ENDIF
10824         ENDIF
10825  
10826       ELSEIF(ISUB.LE.20) THEN
10827         IF(ISUB.EQ.11) THEN
10828 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
10829           KCC=MINT(2)
10830           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
10831  
10832         ELSEIF(ISUB.EQ.12) THEN
10833 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
10834           MINT(21)=ISIGN(KFLF,MINT(15))
10835           MINT(22)=-MINT(21)
10836           KCC=4
10837  
10838         ELSEIF(ISUB.EQ.13) THEN
10839 C...f + fbar -> g + g; th arbitrary
10840           MINT(21)=21
10841           MINT(22)=21
10842           KCC=MINT(2)+4
10843  
10844         ELSEIF(ISUB.EQ.14) THEN
10845 C...f + fbar -> g + gamma; th arbitrary
10846           IF(PYR(0).GT.0.5D0) JS=2
10847           MINT(20+JS)=21
10848           MINT(23-JS)=22
10849           KCC=17+JS
10850  
10851         ELSEIF(ISUB.EQ.15) THEN
10852 C...f + fbar -> g + Z0; th arbitrary
10853           IF(PYR(0).GT.0.5D0) JS=2
10854           MINT(20+JS)=21
10855           MINT(23-JS)=23
10856           KCC=17+JS
10857  
10858         ELSEIF(ISUB.EQ.16) THEN
10859 C...f + fbar' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10860           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10861           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10862           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10863           MINT(20+JS)=21
10864           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10865           KCC=17+JS
10866  
10867         ELSEIF(ISUB.EQ.17) THEN
10868 C...f + fbar -> g + h0; th arbitrary
10869           IF(PYR(0).GT.0.5D0) JS=2
10870           MINT(20+JS)=21
10871           MINT(23-JS)=25
10872           KCC=17+JS
10873  
10874         ELSEIF(ISUB.EQ.18) THEN
10875 C...f + fbar -> gamma + gamma; th arbitrary
10876           MINT(21)=22
10877           MINT(22)=22
10878  
10879         ELSEIF(ISUB.EQ.19) THEN
10880 C...f + fbar -> gamma + Z0; th arbitrary
10881           IF(PYR(0).GT.0.5D0) JS=2
10882           MINT(20+JS)=22
10883           MINT(23-JS)=23
10884  
10885         ELSEIF(ISUB.EQ.20) THEN
10886 C...f + fbar' -> gamma + W+/-; th = (p(f)-p(W-))**2 or
10887 C...(p(fbar')-p(W+))**2
10888           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10889           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10890           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10891           MINT(20+JS)=22
10892           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10893         ENDIF
10894  
10895       ELSEIF(ISUB.LE.30) THEN
10896         IF(ISUB.EQ.21) THEN
10897 C...f + fbar -> gamma + h0; th arbitrary
10898           IF(PYR(0).GT.0.5D0) JS=2
10899           MINT(20+JS)=22
10900           MINT(23-JS)=25
10901  
10902         ELSEIF(ISUB.EQ.22) THEN
10903 C...f + fbar -> Z0 + Z0; th arbitrary
10904           MINT(21)=23
10905           MINT(22)=23
10906  
10907         ELSEIF(ISUB.EQ.23) THEN
10908 C...f + fbar' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10909           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10910           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10911           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
10912           MINT(20+JS)=23
10913           MINT(23-JS)=ISIGN(24,KCH1+KCH2)
10914  
10915         ELSEIF(ISUB.EQ.24) THEN
10916 C...f + fbar -> Z0 + h0 (or H0, or A0); th arbitrary
10917           IF(PYR(0).GT.0.5D0) JS=2
10918           MINT(20+JS)=23
10919           MINT(23-JS)=KFHIGG
10920  
10921         ELSEIF(ISUB.EQ.25) THEN
10922 C...f + fbar -> W+ + W-; th = (p(f)-p(W-))**2
10923           MINT(21)=-ISIGN(24,MINT(15))
10924           MINT(22)=-MINT(21)
10925  
10926         ELSEIF(ISUB.EQ.26) THEN
10927 C...f + fbar' -> W+/- + h0 (or H0, or A0);
10928 C...th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2
10929           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
10930           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
10931           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
10932           MINT(20+JS)=ISIGN(24,KCH1+KCH2)
10933           MINT(23-JS)=KFHIGG
10934  
10935         ELSEIF(ISUB.EQ.27) THEN
10936 C...f + fbar -> h0 + h0
10937  
10938         ELSEIF(ISUB.EQ.28) THEN
10939 C...f + g -> f + g; th = (p(f)-p(f))**2
10940           IF(MINT(15).EQ.21) JS=2
10941           KCC=MINT(2)+6
10942           IF(MINT(15).EQ.21) KCC=KCC+2
10943           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
10944           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
10945  
10946         ELSEIF(ISUB.EQ.29) THEN
10947 C...f + g -> f + gamma; th = (p(f)-p(f))**2
10948           IF(MINT(15).EQ.21) JS=2
10949           MINT(23-JS)=22
10950           KCC=15+JS
10951           KCS=ISIGN(1,MINT(14+JS))
10952  
10953         ELSEIF(ISUB.EQ.30) THEN
10954 C...f + g -> f + Z0; th = (p(f)-p(f))**2
10955           IF(MINT(15).EQ.21) JS=2
10956           MINT(23-JS)=23
10957           KCC=15+JS
10958           KCS=ISIGN(1,MINT(14+JS))
10959         ENDIF
10960  
10961       ELSEIF(ISUB.LE.40) THEN
10962         IF(ISUB.EQ.31) THEN
10963 C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f'
10964           IF(MINT(15).EQ.21) JS=2
10965           I=MINT(14+JS)
10966           IA=IABS(I)
10967           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
10968           RVCKM=VINT(180+I)*PYR(0)
10969           DO 290 J=1,MSTP(1)
10970             IB=2*J-1+MOD(IA,2)
10971             IPM=(5-ISIGN(1,I))/2
10972             IDC=J+MDCY(IA,2)+2
10973             IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290
10974             MINT(20+JS)=ISIGN(IB,I)
10975             RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
10976             IF(RVCKM.LE.0D0) GOTO 300
10977   290     CONTINUE
10978   300     KCC=15+JS
10979           KCS=ISIGN(1,MINT(14+JS))
10980  
10981         ELSEIF(ISUB.EQ.32) THEN
10982 C...f + g -> f + h0; th = (p(f)-p(f))**2
10983           IF(MINT(15).EQ.21) JS=2
10984           MINT(23-JS)=25
10985           KCC=15+JS
10986           KCS=ISIGN(1,MINT(14+JS))
10987  
10988         ELSEIF(ISUB.EQ.33) THEN
10989 C...f + gamma -> f + g; th=(p(f)-p(f))**2
10990           IF(MINT(15).EQ.22) JS=2
10991           MINT(23-JS)=21
10992           KCC=24+JS
10993           KCS=ISIGN(1,MINT(14+JS))
10994  
10995         ELSEIF(ISUB.EQ.34) THEN
10996 C...f + gamma -> f + gamma; th=(p(f)-p(f))**2
10997           IF(MINT(15).EQ.22) JS=2
10998           KCC=22
10999           KCS=ISIGN(1,MINT(14+JS))
11000  
11001         ELSEIF(ISUB.EQ.35) THEN
11002 C...f + gamma -> f + Z0; th=(p(f)-p(f))**2
11003           IF(MINT(15).EQ.22) JS=2
11004           MINT(23-JS)=23
11005           KCC=22
11006  
11007         ELSEIF(ISUB.EQ.36) THEN
11008 C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2
11009           IF(MINT(15).EQ.22) JS=2
11010           I=MINT(14+JS)
11011           IA=IABS(I)
11012           MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I)
11013           IF(IA.LE.10) THEN
11014             RVCKM=VINT(180+I)*PYR(0)
11015             DO 310 J=1,MSTP(1)
11016               IB=2*J-1+MOD(IA,2)
11017               IPM=(5-ISIGN(1,I))/2
11018               IDC=J+MDCY(IA,2)+2
11019               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310
11020               MINT(20+JS)=ISIGN(IB,I)
11021               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11022               IF(RVCKM.LE.0D0) GOTO 320
11023   310       CONTINUE
11024           ELSE
11025             IB=2*((IA+1)/2)-1+MOD(IA,2)
11026             MINT(20+JS)=ISIGN(IB,I)
11027           ENDIF
11028   320     KCC=22
11029  
11030         ELSEIF(ISUB.EQ.37) THEN
11031 C...f + gamma -> f + h0
11032  
11033         ELSEIF(ISUB.EQ.38) THEN
11034 C...f + Z0 -> f + g
11035  
11036         ELSEIF(ISUB.EQ.39) THEN
11037 C...f + Z0 -> f + gamma
11038  
11039         ELSEIF(ISUB.EQ.40) THEN
11040 C...f + Z0 -> f + Z0
11041         ENDIF
11042  
11043       ELSEIF(ISUB.LE.50) THEN
11044         IF(ISUB.EQ.41) THEN
11045 C...f + Z0 -> f' + W+/-
11046  
11047         ELSEIF(ISUB.EQ.42) THEN
11048 C...f + Z0 -> f + h0
11049  
11050         ELSEIF(ISUB.EQ.43) THEN
11051 C...f + W+/- -> f' + g
11052  
11053         ELSEIF(ISUB.EQ.44) THEN
11054 C...f + W+/- -> f' + gamma
11055  
11056         ELSEIF(ISUB.EQ.45) THEN
11057 C...f + W+/- -> f' + Z0
11058  
11059         ELSEIF(ISUB.EQ.46) THEN
11060 C...f + W+/- -> f' + W+/-
11061  
11062         ELSEIF(ISUB.EQ.47) THEN
11063 C...f + W+/- -> f' + h0
11064  
11065         ELSEIF(ISUB.EQ.48) THEN
11066 C...f + h0 -> f + g
11067  
11068         ELSEIF(ISUB.EQ.49) THEN
11069 C...f + h0 -> f + gamma
11070  
11071         ELSEIF(ISUB.EQ.50) THEN
11072 C...f + h0 -> f + Z0
11073         ENDIF
11074  
11075       ELSEIF(ISUB.LE.60) THEN
11076         IF(ISUB.EQ.51) THEN
11077 C...f + h0 -> f' + W+/-
11078  
11079         ELSEIF(ISUB.EQ.52) THEN
11080 C...f + h0 -> f + h0
11081  
11082         ELSEIF(ISUB.EQ.53) THEN
11083 C...g + g -> f + fbar; th arbitrary
11084           KCS=(-1)**INT(1.5D0+PYR(0))
11085           MINT(21)=ISIGN(KFLF,KCS)
11086           MINT(22)=-MINT(21)
11087           KCC=MINT(2)+10
11088  
11089         ELSEIF(ISUB.EQ.54) THEN
11090 C...g + gamma -> f + fbar; th arbitrary
11091           KCS=(-1)**INT(1.5D0+PYR(0))
11092           MINT(21)=ISIGN(KFLF,KCS)
11093           MINT(22)=-MINT(21)
11094           KCC=27
11095           IF(MINT(16).EQ.21) KCC=28
11096  
11097         ELSEIF(ISUB.EQ.55) THEN
11098 C...g + Z0 -> f + fbar
11099  
11100         ELSEIF(ISUB.EQ.56) THEN
11101 C...g + W+/- -> f + fbar'
11102  
11103         ELSEIF(ISUB.EQ.57) THEN
11104 C...g + h0 -> f + fbar
11105  
11106         ELSEIF(ISUB.EQ.58) THEN
11107 C...gamma + gamma -> f + fbar; th arbitrary
11108           KCS=(-1)**INT(1.5D0+PYR(0))
11109           MINT(21)=ISIGN(KFLF,KCS)
11110           MINT(22)=-MINT(21)
11111           KCC=21
11112  
11113         ELSEIF(ISUB.EQ.59) THEN
11114 C...gamma + Z0 -> f + fbar
11115  
11116         ELSEIF(ISUB.EQ.60) THEN
11117 C...gamma + W+/- -> f + fbar'
11118         ENDIF
11119  
11120       ELSEIF(ISUB.LE.70) THEN
11121         IF(ISUB.EQ.61) THEN
11122 C...gamma + h0 -> f + fbar
11123  
11124         ELSEIF(ISUB.EQ.62) THEN
11125 C...Z0 + Z0 -> f + fbar
11126  
11127         ELSEIF(ISUB.EQ.63) THEN
11128 C...Z0 + W+/- -> f + fbar'
11129  
11130         ELSEIF(ISUB.EQ.64) THEN
11131 C...Z0 + h0 -> f + fbar
11132  
11133         ELSEIF(ISUB.EQ.65) THEN
11134 C...W+ + W- -> f + fbar
11135  
11136         ELSEIF(ISUB.EQ.66) THEN
11137 C...W+/- + h0 -> f + fbar'
11138  
11139         ELSEIF(ISUB.EQ.67) THEN
11140 C...h0 + h0 -> f + fbar
11141  
11142         ELSEIF(ISUB.EQ.68) THEN
11143 C...g + g -> g + g; th arbitrary
11144           KCC=MINT(2)+12
11145           KCS=(-1)**INT(1.5D0+PYR(0))
11146  
11147         ELSEIF(ISUB.EQ.69) THEN
11148 C...gamma + gamma -> W+ + W-; th arbitrary
11149           MINT(21)=24
11150           MINT(22)=-24
11151           KCC=21
11152  
11153         ELSEIF(ISUB.EQ.70) THEN
11154 C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2
11155           IF(MINT(15).EQ.22) MINT(21)=23
11156           IF(MINT(16).EQ.22) MINT(22)=23
11157           KCC=21
11158         ENDIF
11159  
11160       ELSEIF(ISUB.LE.80) THEN
11161         IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN
11162 C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W-
11163           XH=SH/SHP
11164           MINT(21)=MINT(15)
11165           MINT(22)=MINT(16)
11166           PMQ(1)=PYMASS(MINT(21))
11167           PMQ(2)=PYMASS(MINT(22))
11168   330     JT=INT(1.5D0+PYR(0))
11169           ZMIN=2D0*PMQ(JT)/SHPR
11170           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
11171      &    (SHPR*(SHPR-PMQ(3-JT)))
11172           ZMAX=MIN(1D0-XH,ZMAX)
11173           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
11174           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
11175      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 330
11176           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
11177           IF(SQC1.LT.1D-8) GOTO 330
11178           C1=SQRT(SQC1)
11179           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
11180           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11181           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
11182           Z(3-JT)=1D0-XH/(1D0-Z(JT))
11183           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
11184           IF(SQC1.LT.1D-8) GOTO 330
11185           C1=SQRT(SQC1)
11186           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
11187           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11188           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
11189           PHIR=PARU(2)*PYR(0)
11190           CPHI=COS(PHIR)
11191           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
11192      &    SQRT(1D0-CTHE(2)**2)*CPHI
11193           Z1=2D0-Z(JT)
11194           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
11195           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
11196           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
11197      &    PMQ(3-JT)**2/SHP))
11198           ZMIN=2D0*PMQ(3-JT)/SHPR
11199           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
11200           ZMAX=MIN(1D0-XH,ZMAX)
11201           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330
11202           KCC=22
11203  
11204         ELSEIF(ISUB.EQ.73) THEN
11205 C...Z0 + W+/- -> Z0 + W+/-
11206           JS=MINT(2)
11207           XH=SH/SHP
11208   340     JT=3-MINT(2)
11209           I=MINT(14+JT)
11210           IA=IABS(I)
11211           IF(IA.LE.10) THEN
11212             RVCKM=VINT(180+I)*PYR(0)
11213             DO 350 J=1,MSTP(1)
11214               IB=2*J-1+MOD(IA,2)
11215               IPM=(5-ISIGN(1,I))/2
11216               IDC=J+MDCY(IA,2)+2
11217               IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350
11218               MINT(20+JT)=ISIGN(IB,I)
11219               RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11220               IF(RVCKM.LE.0D0) GOTO 360
11221   350       CONTINUE
11222           ELSE
11223             IB=2*((IA+1)/2)-1+MOD(IA,2)
11224             MINT(20+JT)=ISIGN(IB,I)
11225           ENDIF
11226   360     PMQ(JT)=PYMASS(MINT(20+JT))
11227           MINT(23-JT)=MINT(17-JT)
11228           PMQ(3-JT)=PYMASS(MINT(23-JT))
11229           JT=INT(1.5D0+PYR(0))
11230           ZMIN=2D0*PMQ(JT)/SHPR
11231           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
11232      &    (SHPR*(SHPR-PMQ(3-JT)))
11233           ZMAX=MIN(1D0-XH,ZMAX)
11234           IF(ZMIN.GE.ZMAX) GOTO 340
11235           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
11236           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
11237      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 340
11238           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
11239           IF(SQC1.LT.1D-8) GOTO 340
11240           C1=SQRT(SQC1)
11241           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
11242           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11243           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
11244           Z(3-JT)=1D0-XH/(1D0-Z(JT))
11245           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
11246           IF(SQC1.LT.1D-8) GOTO 340
11247           C1=SQRT(SQC1)
11248           C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
11249           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11250           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
11251           PHIR=PARU(2)*PYR(0)
11252           CPHI=COS(PHIR)
11253           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
11254      &    SQRT(1D0-CTHE(2)**2)*CPHI
11255           Z1=2D0-Z(JT)
11256           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
11257           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
11258           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
11259      &    PMQ(3-JT)**2/SHP))
11260           ZMIN=2D0*PMQ(3-JT)/SHPR
11261           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
11262           ZMAX=MIN(1D0-XH,ZMAX)
11263           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340
11264           KCC=22
11265  
11266         ELSEIF(ISUB.EQ.74) THEN
11267 C...Z0 + h0 -> Z0 + h0
11268  
11269         ELSEIF(ISUB.EQ.75) THEN
11270 C...W+ + W- -> gamma + gamma
11271  
11272         ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN
11273 C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W-
11274           XH=SH/SHP
11275   370     DO 400 JT=1,2
11276             I=MINT(14+JT)
11277             IA=IABS(I)
11278             IF(IA.LE.10) THEN
11279               RVCKM=VINT(180+I)*PYR(0)
11280               DO 380 J=1,MSTP(1)
11281                 IB=2*J-1+MOD(IA,2)
11282                 IPM=(5-ISIGN(1,I))/2
11283                 IDC=J+MDCY(IA,2)+2
11284                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380
11285                 MINT(20+JT)=ISIGN(IB,I)
11286                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11287                 IF(RVCKM.LE.0D0) GOTO 390
11288   380         CONTINUE
11289             ELSE
11290               IB=2*((IA+1)/2)-1+MOD(IA,2)
11291               MINT(20+JT)=ISIGN(IB,I)
11292             ENDIF
11293   390       PMQ(JT)=PYMASS(MINT(20+JT))
11294   400     CONTINUE
11295           JT=INT(1.5D0+PYR(0))
11296           ZMIN=2D0*PMQ(JT)/SHPR
11297           ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/
11298      &    (SHPR*(SHPR-PMQ(3-JT)))
11299           ZMAX=MIN(1D0-XH,ZMAX)
11300           IF(ZMIN.GE.ZMAX) GOTO 370
11301           Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0)
11302           IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT.
11303      &    (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 370
11304           SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP)
11305           IF(SQC1.LT.1D-8) GOTO 370
11306           C1=SQRT(SQC1)
11307           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP)
11308           CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11309           CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT)))
11310           Z(3-JT)=1D0-XH/(1D0-Z(JT))
11311           SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP)
11312           IF(SQC1.LT.1D-8) GOTO 370
11313           C1=SQRT(SQC1)
11314           C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP)
11315           CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1
11316           CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT)))
11317           PHIR=PARU(2)*PYR(0)
11318           CPHI=COS(PHIR)
11319           ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)*
11320      &    SQRT(1D0-CTHE(2)**2)*CPHI
11321           Z1=2D0-Z(JT)
11322           Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP)
11323           Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP
11324           Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)*
11325      &    PMQ(3-JT)**2/SHP))
11326           ZMIN=2D0*PMQ(3-JT)/SHPR
11327           ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT)))
11328           ZMAX=MIN(1D0-XH,ZMAX)
11329           IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370
11330           KCC=22
11331  
11332         ELSEIF(ISUB.EQ.78) THEN
11333 C...W+/- + h0 -> W+/- + h0
11334  
11335         ELSEIF(ISUB.EQ.79) THEN
11336 C...h0 + h0 -> h0 + h0
11337  
11338         ELSEIF(ISUB.EQ.80) THEN
11339 C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2
11340           IF(MINT(15).EQ.22) JS=2
11341           I=MINT(14+JS)
11342           IA=IABS(I)
11343           MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I)
11344           IB=3-IA
11345           MINT(20+JS)=ISIGN(IB,I)
11346           KCC=22
11347         ENDIF
11348  
11349       ELSEIF(ISUB.LE.90) THEN
11350         IF(ISUB.EQ.81) THEN
11351 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2
11352           MINT(21)=ISIGN(MINT(55),MINT(15))
11353           MINT(22)=-MINT(21)
11354           KCC=4
11355  
11356         ELSEIF(ISUB.EQ.82) THEN
11357 C...g + g -> Q + Qbar; th arbitrary
11358           KCS=(-1)**INT(1.5D0+PYR(0))
11359           MINT(21)=ISIGN(MINT(55),KCS)
11360           MINT(22)=-MINT(21)
11361           KCC=MINT(2)+10
11362  
11363         ELSEIF(ISUB.EQ.83) THEN
11364 C...f + q -> f' + Q; th = (p(f) - p(f'))**2
11365           KFOLD=MINT(16)
11366           IF(MINT(2).EQ.2) KFOLD=MINT(15)
11367           KFAOLD=IABS(KFOLD)
11368           IF(KFAOLD.GT.10) THEN
11369             KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1
11370           ELSE
11371             RCKM=VINT(180+KFOLD)*PYR(0)
11372             IPM=(5-ISIGN(1,KFOLD))/2
11373             KFANEW=-MOD(KFAOLD+1,2)
11374   410       KFANEW=KFANEW+2
11375             IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2
11376             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN
11377               IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM-
11378      &        VCKM(KFAOLD/2,(KFANEW+1)/2)
11379               IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM-
11380      &        VCKM(KFANEW/2,(KFAOLD+1)/2)
11381             ENDIF
11382             IF(KFANEW.LE.6.AND.RCKM.GT.0D0) GOTO 410
11383           ENDIF
11384           IF(MINT(2).EQ.1) THEN
11385             MINT(21)=ISIGN(MINT(55),MINT(15))
11386             MINT(22)=ISIGN(KFANEW,MINT(16))
11387           ELSE
11388             MINT(21)=ISIGN(KFANEW,MINT(15))
11389             MINT(22)=ISIGN(MINT(55),MINT(16))
11390             JS=2
11391           ENDIF
11392           KCC=22
11393  
11394         ELSEIF(ISUB.EQ.84) THEN
11395 C...g + gamma -> Q + Qbar; th arbitary
11396           KCS=(-1)**INT(1.5D0+PYR(0))
11397           MINT(21)=ISIGN(MINT(55),KCS)
11398           MINT(22)=-MINT(21)
11399           KCC=27
11400           IF(MINT(16).EQ.21) KCC=28
11401  
11402         ELSEIF(ISUB.EQ.85) THEN
11403 C...gamma + gamma -> F + Fbar; th arbitary
11404           KCS=(-1)**INT(1.5D0+PYR(0))
11405           MINT(21)=ISIGN(MINT(56),KCS)
11406           MINT(22)=-MINT(21)
11407           KCC=21
11408  
11409         ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN
11410 C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g
11411           MINT(21)=KFPR(ISUB,1)
11412           MINT(22)=KFPR(ISUB,2)
11413           KCC=24
11414           KCS=(-1)**INT(1.5D0+PYR(0))
11415         ENDIF
11416  
11417       ELSEIF(ISUB.LE.100) THEN
11418         IF(ISUB.EQ.95) THEN
11419 C...Low-pT ( = energyless g + g -> g + g)
11420           KCC=MINT(2)+12
11421           KCS=(-1)**INT(1.5D0+PYR(0))
11422  
11423         ELSEIF(ISUB.EQ.96) THEN
11424 C...Multiple interactions (should be reassigned to QCD process)
11425         ENDIF
11426  
11427       ELSEIF(ISUB.LE.110) THEN
11428         IF(ISUB.EQ.101) THEN
11429 C...g + g -> gamma*/Z0
11430           KCC=21
11431           KFRES=22
11432  
11433         ELSEIF(ISUB.EQ.102) THEN
11434 C...g + g -> h0 (or H0, or A0)
11435           KCC=21
11436           KFRES=KFHIGG
11437  
11438         ELSEIF(ISUB.EQ.103) THEN
11439 C...gamma + gamma -> h0 (or H0, or A0)
11440           KCC=21
11441           KFRES=KFHIGG
11442  
11443         ELSEIF(ISUB.EQ.104.OR.ISUB.EQ.105) THEN
11444 C...g + g -> chi_0c or chi_2c.
11445           KCC=21
11446           KFRES=KFPR(ISUB,1)
11447  
11448         ELSEIF(ISUB.EQ.106) THEN
11449 C...g + g -> J/Psi + gamma
11450           MINT(21)=KFPR(ISUB,1)
11451           MINT(22)=KFPR(ISUB,2)
11452           KCC=21
11453  
11454         ELSEIF(ISUB.EQ.107) THEN
11455 C...g + gamma -> J/Psi + g
11456           MINT(21)=KFPR(ISUB,1)
11457           MINT(22)=KFPR(ISUB,2)
11458           KCC=22
11459           IF(MINT(16).EQ.22) KCC=33
11460  
11461         ELSEIF(ISUB.EQ.108) THEN
11462 C...gamma + gamma -> J/Psi + gamma
11463           MINT(21)=KFPR(ISUB,1)
11464           MINT(22)=KFPR(ISUB,2)
11465  
11466         ELSEIF(ISUB.EQ.110) THEN
11467 C...f + fbar -> gamma + h0; th arbitrary
11468           IF(PYR(0).GT.0.5D0) JS=2
11469           MINT(20+JS)=22
11470           MINT(23-JS)=KFHIGG
11471         ENDIF
11472  
11473       ELSEIF(ISUB.LE.120) THEN
11474         IF(ISUB.EQ.111) THEN
11475 C...f + fbar -> g + h0; th arbitrary
11476           IF(PYR(0).GT.0.5D0) JS=2
11477           MINT(20+JS)=21
11478           MINT(23-JS)=KFHIGG
11479           KCC=17+JS
11480  
11481         ELSEIF(ISUB.EQ.112) THEN
11482 C...f + g -> f + h0; th = (p(f) - p(f))**2
11483           IF(MINT(15).EQ.21) JS=2
11484           MINT(23-JS)=KFHIGG
11485           KCC=15+JS
11486           KCS=ISIGN(1,MINT(14+JS))
11487  
11488         ELSEIF(ISUB.EQ.113) THEN
11489 C...g + g -> g + h0; th arbitrary
11490           IF(PYR(0).GT.0.5D0) JS=2
11491           MINT(23-JS)=KFHIGG
11492           KCC=22+JS
11493           KCS=(-1)**INT(1.5D0+PYR(0))
11494  
11495         ELSEIF(ISUB.EQ.114) THEN
11496 C...g + g -> gamma + gamma; th arbitrary
11497           IF(PYR(0).GT.0.5D0) JS=2
11498           MINT(21)=22
11499           MINT(22)=22
11500           KCC=21
11501  
11502         ELSEIF(ISUB.EQ.115) THEN
11503 C...g + g -> g + gamma; th arbitrary
11504           IF(PYR(0).GT.0.5D0) JS=2
11505           MINT(23-JS)=22
11506           KCC=22+JS
11507           KCS=(-1)**INT(1.5D0+PYR(0))
11508  
11509         ELSEIF(ISUB.EQ.116) THEN
11510 C...g + g -> gamma + Z0
11511  
11512         ELSEIF(ISUB.EQ.117) THEN
11513 C...g + g -> Z0 + Z0
11514  
11515         ELSEIF(ISUB.EQ.118) THEN
11516 C...g + g -> W+ + W-
11517         ENDIF
11518  
11519       ELSEIF(ISUB.LE.140) THEN
11520         IF(ISUB.EQ.121) THEN
11521 C...g + g -> Q + Qbar + h0
11522           KCS=(-1)**INT(1.5D0+PYR(0))
11523           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
11524           MINT(22)=-MINT(21)
11525           KCC=11+INT(0.5D0+PYR(0))
11526           KFRES=KFHIGG
11527  
11528         ELSEIF(ISUB.EQ.122) THEN
11529 C...q + qbar -> Q + Qbar + h0
11530           MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15))
11531           MINT(22)=-MINT(21)
11532           KCC=4
11533           KFRES=KFHIGG
11534  
11535         ELSEIF(ISUB.EQ.123) THEN
11536 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
11537 C...inner process)
11538           KCC=22
11539           KFRES=KFHIGG
11540  
11541         ELSEIF(ISUB.EQ.124) THEN
11542 C...f + f' -> f" + f"' + h0 (or H0, or A) (W+ + W- -> h0 as
11543 C...inner process)
11544           DO 430 JT=1,2
11545             I=MINT(14+JT)
11546             IA=IABS(I)
11547             IF(IA.LE.10) THEN
11548               RVCKM=VINT(180+I)*PYR(0)
11549               DO 420 J=1,MSTP(1)
11550                 IB=2*J-1+MOD(IA,2)
11551                 IPM=(5-ISIGN(1,I))/2
11552                 IDC=J+MDCY(IA,2)+2
11553                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420
11554                 MINT(20+JT)=ISIGN(IB,I)
11555                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
11556                 IF(RVCKM.LE.0D0) GOTO 430
11557   420         CONTINUE
11558             ELSE
11559               IB=2*((IA+1)/2)-1+MOD(IA,2)
11560               MINT(20+JT)=ISIGN(IB,I)
11561             ENDIF
11562   430     CONTINUE
11563           KCC=22
11564           KFRES=KFHIGG
11565  
11566         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
11567 C...f + gamma*_(T,L) -> f + g; th=(p(f)-p(f))**2
11568           IF(MINT(15).EQ.22) JS=2
11569           MINT(23-JS)=21
11570           KCC=24+JS
11571           KCS=ISIGN(1,MINT(14+JS))
11572  
11573         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
11574 C...f + gamma*_(T,L) -> f + gamma; th=(p(f)-p(f))**2
11575           IF(MINT(15).EQ.22) JS=2
11576           KCC=22
11577           KCS=ISIGN(1,MINT(14+JS))
11578  
11579         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
11580 C...g + gamma*_(T,L) -> f + fbar; th arbitrary
11581           KCS=(-1)**INT(1.5D0+PYR(0))
11582           MINT(21)=ISIGN(KFLF,KCS)
11583           MINT(22)=-MINT(21)
11584           KCC=27
11585           IF(MINT(16).EQ.21) KCC=28
11586  
11587         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
11588 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar; th arbitrary
11589           KCS=(-1)**INT(1.5D0+PYR(0))
11590           MINT(21)=ISIGN(KFLF,KCS)
11591           MINT(22)=-MINT(21)
11592           KCC=21
11593  
11594         ENDIF
11595  
11596       ELSEIF(ISUB.LE.160) THEN
11597         IF(ISUB.EQ.141) THEN
11598 C...f + fbar -> gamma*/Z0/Z'0
11599           KFRES=32
11600  
11601         ELSEIF(ISUB.EQ.142) THEN
11602 C...f + fbar' -> W'+/-
11603           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11604           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11605           KFRES=ISIGN(34,KCH1+KCH2)
11606  
11607         ELSEIF(ISUB.EQ.143) THEN
11608 C...f + fbar' -> H+/-
11609           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11610           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11611           KFRES=ISIGN(37,KCH1+KCH2)
11612  
11613         ELSEIF(ISUB.EQ.144) THEN
11614 C...f + fbar' -> R
11615           KFRES=ISIGN(41,MINT(15)+MINT(16))
11616  
11617         ELSEIF(ISUB.EQ.145) THEN
11618 C...q + l -> LQ (leptoquark)
11619           IF(IABS(MINT(16)).LE.8) JS=2
11620           KFRES=ISIGN(42,MINT(14+JS))
11621           KCC=28+JS
11622           KCS=ISIGN(1,MINT(14+JS))
11623  
11624         ELSEIF(ISUB.EQ.146) THEN
11625 C...e + gamma -> e* (excited lepton)
11626           IF(MINT(15).EQ.22) JS=2
11627           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
11628           KCC=22
11629  
11630         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
11631 C...q + g -> q* (excited quark)
11632           IF(MINT(15).EQ.21) JS=2
11633           KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS))
11634           KCC=30+JS
11635           KCS=ISIGN(1,MINT(14+JS))
11636  
11637         ELSEIF(ISUB.EQ.149) THEN
11638 C...g + g -> eta_tc
11639           KFRES=KTECHN+331
11640           KCC=23
11641           KCS=(-1)**INT(1.5D0+PYR(0))
11642         ENDIF
11643  
11644       ELSEIF(ISUB.LE.200) THEN
11645         IF(ISUB.EQ.161) THEN
11646 C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2
11647           IF(MINT(15).EQ.21) JS=2
11648           I=MINT(14+JS)
11649           IA=IABS(I)
11650           MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I)
11651           IB=IA+MOD(IA,2)-MOD(IA+1,2)
11652           MINT(20+JS)=ISIGN(IB,I)
11653           KCC=15+JS
11654           KCS=ISIGN(1,MINT(14+JS))
11655  
11656         ELSEIF(ISUB.EQ.162) THEN
11657 C...q + g -> LQ + lbar; LQ=leptoquark; th=(p(q)-p(LQ))^2
11658           IF(MINT(15).EQ.21) JS=2
11659           MINT(20+JS)=ISIGN(42,MINT(14+JS))
11660           KFLQL=KFDP(MDCY(42,2),2)
11661           MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS))
11662           KCC=15+JS
11663           KCS=ISIGN(1,MINT(14+JS))
11664  
11665         ELSEIF(ISUB.EQ.163) THEN
11666 C...g + g -> LQ + LQbar; LQ=leptoquark; th arbitrary
11667           KCS=(-1)**INT(1.5D0+PYR(0))
11668           MINT(21)=ISIGN(42,KCS)
11669           MINT(22)=-MINT(21)
11670           KCC=MINT(2)+10
11671  
11672         ELSEIF(ISUB.EQ.164) THEN
11673 C...q + qbar -> LQ + LQbar; LQ=leptoquark; th=(p(q)-p(LQ))**2
11674           MINT(21)=ISIGN(42,MINT(15))
11675           MINT(22)=-MINT(21)
11676           KCC=4
11677  
11678         ELSEIF(ISUB.EQ.165) THEN
11679 C...q + qbar -> l- + l+; th=(p(q)-p(l-))**2
11680           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11681           MINT(22)=-MINT(21)
11682  
11683         ELSEIF(ISUB.EQ.166) THEN
11684 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
11685           IF(MOD(MINT(15),2).EQ.0) THEN
11686             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
11687             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
11688           ELSE
11689             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11690             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
11691           ENDIF
11692  
11693         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
11694 C...q + q' -> q" + q* (excited quark)
11695           KFQSTR=KFPR(ISUB,2)
11696           KFQEXC=MOD(KFQSTR,KEXCIT)
11697           JS=MINT(2)
11698           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
11699           IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC)
11700      &    MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
11701           KCC=22
11702           JS=3-JS
11703  
11704         ELSEIF(ISUB.EQ.169) THEN
11705 C...q + qbar -> e + e* (excited lepton)
11706           KFQSTR=KFPR(ISUB,2)
11707           KFQEXC=MOD(KFQSTR,KEXCIT)
11708           JS=MINT(2)
11709           MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS))
11710           MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS))
11711           JS=3-JS
11712  
11713         ELSEIF(ISUB.EQ.191) THEN
11714 C...f + fbar -> rho_tc0.
11715           KFRES=KTECHN+113
11716  
11717         ELSEIF(ISUB.EQ.192) THEN
11718 C...f + fbar' -> rho_tc+/-
11719           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11720           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11721           KFRES=ISIGN(KTECHN+213,KCH1+KCH2)
11722  
11723         ELSEIF(ISUB.EQ.193) THEN
11724 C...f + fbar -> omega_tc0.
11725           KFRES=KTECHN+223
11726  
11727         ELSEIF(ISUB.EQ.194) THEN
11728 C...f + fbar -> f' + fbar' via mixture of s-channel
11729 C...rho_tc and omega_tc; th=(p(f)-p(f'))**2
11730           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11731           MINT(22)=-MINT(21)
11732  
11733         ELSEIF(ISUB.EQ.195) THEN
11734 C...f + fbar' -> f'' + fbar''' via s-channel
11735 C...rho_tc+ th=(p(f)-p(f'))**2
11736 C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2
11737           IF(MOD(MINT(15),2).EQ.0) THEN
11738             MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15))
11739             MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16))
11740           ELSE
11741             MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
11742             MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16))
11743           ENDIF
11744         ENDIF
11745  
11746 CMRENNA++
11747       ELSEIF(ISUB.LE.215) THEN
11748         IF(ISUB.EQ.201) THEN
11749 C...f + fbar -> ~e_L + ~e_Lbar
11750           MINT(21)=ISIGN(KSUSY1+11,KCS)
11751           MINT(22)=-MINT(21)
11752  
11753         ELSEIF(ISUB.EQ.202) THEN
11754 C...f + fbar -> ~e_R + ~e_Rbar
11755           MINT(21)=ISIGN(KSUSY2+11,KCS)
11756           MINT(22)=-MINT(21)
11757  
11758         ELSEIF(ISUB.EQ.203) THEN
11759 C...f + fbar -> ~e_L + ~e_Rbar
11760           IF(MINT(15).LT.0) JS=2
11761           IF(MINT(2).EQ.1) THEN
11762             MINT(20+JS)=KFPR(ISUB,1)
11763             MINT(23-JS)=-KFPR(ISUB,2)
11764           ELSE
11765             MINT(20+JS)=-KFPR(ISUB,1)
11766             MINT(23-JS)=KFPR(ISUB,2)
11767           ENDIF
11768  
11769         ELSEIF(ISUB.EQ.204) THEN
11770 C...f + fbar -> ~mu_L + ~mu_Lbar
11771           MINT(21)=ISIGN(KSUSY1+13,KCS)
11772           MINT(22)=-MINT(21)
11773  
11774         ELSEIF(ISUB.EQ.205) THEN
11775 C...f + fbar -> ~mu_R + ~mu_Rbar
11776           MINT(21)=ISIGN(KSUSY2+13,KCS)
11777           MINT(22)=-MINT(21)
11778  
11779         ELSEIF(ISUB.EQ.206) THEN
11780 C...f + fbar -> ~mu_L + ~mu_Rbar
11781           IF(MINT(15).LT.0) JS=2
11782           IF(MINT(2).EQ.1) THEN
11783             MINT(20+JS)=KFPR(ISUB,1)
11784             MINT(23-JS)=-KFPR(ISUB,2)
11785           ELSE
11786             MINT(20+JS)=-KFPR(ISUB,1)
11787             MINT(23-JS)=KFPR(ISUB,2)
11788           ENDIF
11789  
11790         ELSEIF(ISUB.EQ.207) THEN
11791 C...f + fbar -> ~tau_1 + ~tau_1bar
11792           MINT(21)=ISIGN(KSUSY1+15,KCS)
11793           MINT(22)=-MINT(21)
11794  
11795         ELSEIF(ISUB.EQ.208) THEN
11796 C...f + fbar -> ~tau_2 + ~tau_2bar
11797           MINT(21)=ISIGN(KSUSY2+15,KCS)
11798           MINT(22)=-MINT(21)
11799  
11800         ELSEIF(ISUB.EQ.209) THEN
11801 C...f + fbar -> ~tau_1 + ~tau_2bar
11802           IF(MINT(15).LT.0) JS=2
11803           IF(MINT(2).EQ.1) THEN
11804             MINT(20+JS)=KFPR(ISUB,1)
11805             MINT(23-JS)=-KFPR(ISUB,2)
11806           ELSE
11807             MINT(20+JS)=-KFPR(ISUB,1)
11808             MINT(23-JS)=KFPR(ISUB,2)
11809           ENDIF
11810  
11811         ELSEIF(ISUB.EQ.210) THEN
11812 C...q + qbar' -> ~l_L + ~nulbar; th arbitrary
11813           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11814           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11815           MINT(21)=-ISIGN(KFPR(ISUB,1),KCH1+KCH2)
11816           MINT(22)=ISIGN(KFPR(ISUB,2),KCH1+KCH2)
11817  
11818         ELSEIF(ISUB.EQ.211) THEN
11819 C...q + qbar'-> ~tau_1 + ~nutaubar; th arbitrary
11820           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11821           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11822           MINT(21)=-ISIGN(KSUSY1+15,KCH1+KCH2)
11823           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
11824  
11825         ELSEIF(ISUB.EQ.212) THEN
11826 C...q + qbar'-> ~tau_2 + ~nutaubar; th arbitrary
11827           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11828           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11829           MINT(21)=-ISIGN(KSUSY2+15,KCH1+KCH2)
11830           MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2)
11831  
11832         ELSEIF(ISUB.EQ.213) THEN
11833 C...f + fbar -> ~nul + ~nulbar
11834           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
11835           MINT(22)=-MINT(21)
11836  
11837         ELSEIF(ISUB.EQ.214) THEN
11838 C...f + fbar -> ~nutau + ~nutaubar
11839           MINT(21)=ISIGN(KSUSY1+16,KCS)
11840           MINT(22)=-MINT(21)
11841         ENDIF
11842  
11843       ELSEIF(ISUB.LE.225) THEN
11844         IF(ISUB.EQ.216) THEN
11845 C...f + fbar -> ~chi01 + ~chi01
11846           MINT(21)=KSUSY1+22
11847           MINT(22)=KSUSY1+22
11848  
11849         ELSEIF(ISUB.EQ.217) THEN
11850 C...f + fbar -> ~chi02 + ~chi02
11851           MINT(21)=KSUSY1+23
11852           MINT(22)=KSUSY1+23
11853  
11854         ELSEIF(ISUB.EQ.218 ) THEN
11855 C...f + fbar -> ~chi03 + ~chi03
11856           MINT(21)=KSUSY1+25
11857           MINT(22)=KSUSY1+25
11858  
11859         ELSEIF(ISUB.EQ.219 ) THEN
11860 C...f + fbar -> ~chi04 + ~chi04
11861           MINT(21)=KSUSY1+35
11862           MINT(22)=KSUSY1+35
11863  
11864         ELSEIF(ISUB.EQ.220 ) THEN
11865 C...f + fbar -> ~chi01 + ~chi02
11866           IF(MINT(15).LT.0) JS=2
11867 C          IF(PYR(0).GT.0.5D0) JS=2
11868           MINT(20+JS)=KSUSY1+22
11869           MINT(23-JS)=KSUSY1+23
11870  
11871         ELSEIF(ISUB.EQ.221 ) THEN
11872 C...f + fbar -> ~chi01 + ~chi03
11873           IF(MINT(15).LT.0) JS=2
11874 C          IF(PYR(0).GT.0.5D0) JS=2
11875           MINT(20+JS)=KSUSY1+22
11876           MINT(23-JS)=KSUSY1+25
11877  
11878         ELSEIF(ISUB.EQ.222) THEN
11879 C...f + fbar -> ~chi01 + ~chi04
11880           IF(MINT(15).LT.0) JS=2
11881 C          IF(PYR(0).GT.0.5D0) JS=2
11882           MINT(20+JS)=KSUSY1+22
11883           MINT(23-JS)=KSUSY1+35
11884  
11885         ELSEIF(ISUB.EQ.223) THEN
11886 C...f + fbar -> ~chi02 + ~chi03
11887           IF(MINT(15).LT.0) JS=2
11888 C          IF(PYR(0).GT.0.5D0) JS=2
11889           MINT(20+JS)=KSUSY1+23
11890           MINT(23-JS)=KSUSY1+25
11891  
11892         ELSEIF(ISUB.EQ.224) THEN
11893 C...f + fbar -> ~chi02 + ~chi04
11894           IF(MINT(15).LT.0) JS=2
11895 C          IF(PYR(0).GT.0.5D0) JS=2
11896           MINT(20+JS)=KSUSY1+23
11897           MINT(23-JS)=KSUSY1+35
11898  
11899         ELSEIF(ISUB.EQ.225) THEN
11900 C...f + fbar -> ~chi03 + ~chi04
11901           IF(MINT(15).LT.0) JS=2
11902 C          IF(PYR(0).GT.0.5D0) JS=2
11903           MINT(20+JS)=KSUSY1+25
11904           MINT(23-JS)=KSUSY1+35
11905         ENDIF
11906  
11907       ELSEIF(ISUB.LE.236) THEN
11908         IF(ISUB.EQ.226) THEN
11909 C...f + fbar -> ~chi+-1 + ~chi-+1
11910 C...th=(p(q)-p(chi+))**2 or (p(qbar)-p(chi-))**2
11911           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11912           MINT(21)=ISIGN(KSUSY1+24,KCH1)
11913           MINT(22)=-MINT(21)
11914  
11915         ELSEIF(ISUB.EQ.227) THEN
11916 C...f + fbar -> ~chi+-2 + ~chi-+2
11917           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11918           MINT(21)=ISIGN(KSUSY1+37,KCH1)
11919           MINT(22)=-MINT(21)
11920  
11921         ELSEIF(ISUB.EQ.228) THEN
11922 C...f + fbar -> ~chi+-1 + ~chi-+2
11923 C...th=(p(q)-p(chi1+))**2 or th=(p(qbar)-p(chi1-))**2
11924 C...js=1 if pyr<.5, js=2 if pyr>.5
11925 C...if 15=q, 16=qbar and js=1, chi1+ + chi2-, th=(q-chi1+)**2
11926 C...if 15=qbar, 16=q and js=1, chi2- + chi1+, th=(q-chi1+)**2
11927 C...if 15=q, 16=qbar and js=2, chi1- + chi2+, th=(qbar-chi1-)**2
11928 C...if 15=qbar, 16=q and js=2, chi2+ + chi1-, th=(q-chi1-)**2
11929           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11930           KCH2=INT(1-KCH1)/2
11931           IF(MINT(2).EQ.1) THEN
11932             MINT(21)= ISIGN(KSUSY1+24,KCH1)
11933             MINT(22)= -ISIGN(KSUSY1+37,KCH1)
11934 c            IF(KCH2.EQ.0) JS=2
11935           ELSE
11936             MINT(21)= ISIGN(KSUSY1+37,KCH1)
11937             MINT(22)= -ISIGN(KSUSY1+24,KCH1)
11938             JS=2
11939 c            IF(KCH2.EQ.1) JS=2
11940           ENDIF
11941  
11942         ELSEIF(ISUB.EQ.229) THEN
11943 C...q + qbar' -> ~chi01 + ~chi+-1
11944 C...th=(p(u)-p(chi+))**2 or (p(ubar)-p(chi-))**2
11945           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11946           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11947 C...CHECK THIS
11948           IF(MOD(MINT(15),2).EQ.0) JS=2
11949           MINT(20+JS)=KSUSY1+22
11950           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11951  
11952         ELSEIF(ISUB.EQ.230) THEN
11953 C...q + qbar' -> ~chi02 + ~chi+-1
11954           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11955           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11956           IF(MOD(MINT(15),2).EQ.0) JS=2
11957           MINT(20+JS)=KSUSY1+23
11958           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11959  
11960         ELSEIF(ISUB.EQ.231) THEN
11961 C...q + qbar' -> ~chi03 + ~chi+-1
11962           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11963           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11964           IF(MOD(MINT(15),2).EQ.0) JS=2
11965           MINT(20+JS)=KSUSY1+25
11966           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11967  
11968         ELSEIF(ISUB.EQ.232) THEN
11969 C...q + qbar' -> ~chi04 + ~chi+-1
11970           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11971           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11972           IF(MOD(MINT(15),2).EQ.0) JS=2
11973           MINT(20+JS)=KSUSY1+35
11974           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
11975  
11976         ELSEIF(ISUB.EQ.233) THEN
11977 C...q + qbar' -> ~chi01 + ~chi+-2
11978           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11979           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11980           IF(MOD(MINT(15),2).EQ.0) JS=2
11981           MINT(20+JS)=KSUSY1+22
11982           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11983  
11984         ELSEIF(ISUB.EQ.234) THEN
11985 C...q + qbar' -> ~chi02 + ~chi+-2
11986           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11987           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11988           IF(MOD(MINT(15),2).EQ.0) JS=2
11989           MINT(20+JS)=KSUSY1+23
11990           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11991  
11992         ELSEIF(ISUB.EQ.235) THEN
11993 C...q + qbar' -> ~chi03 + ~chi+-2
11994           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
11995           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
11996           IF(MOD(MINT(15),2).EQ.0) JS=2
11997           MINT(20+JS)=KSUSY1+25
11998           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
11999  
12000         ELSEIF(ISUB.EQ.236) THEN
12001 C...q + qbar' -> ~chi04 + ~chi+-2
12002           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12003           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12004           IF(MOD(MINT(15),2).EQ.0) JS=2
12005           MINT(20+JS)=KSUSY1+35
12006           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
12007         ENDIF
12008  
12009       ELSEIF(ISUB.LE.245) THEN
12010         IF(ISUB.EQ.237) THEN
12011 C...q + qbar -> ~chi01 + ~g
12012 C...th arbitrary
12013           IF(PYR(0).GT.0.5D0) JS=2
12014           MINT(20+JS)=KSUSY1+21
12015           MINT(23-JS)=KSUSY1+22
12016           KCC=17+JS
12017  
12018         ELSEIF(ISUB.EQ.238) THEN
12019 C...q + qbar -> ~chi02 + ~g
12020 C...th arbitrary
12021           IF(PYR(0).GT.0.5D0) JS=2
12022           MINT(20+JS)=KSUSY1+21
12023           MINT(23-JS)=KSUSY1+23
12024           KCC=17+JS
12025  
12026         ELSEIF(ISUB.EQ.239) THEN
12027 C...q + qbar -> ~chi03 + ~g
12028 C...th arbitrary
12029           IF(PYR(0).GT.0.5D0) JS=2
12030           MINT(20+JS)=KSUSY1+21
12031           MINT(23-JS)=KSUSY1+25
12032           KCC=17+JS
12033  
12034         ELSEIF(ISUB.EQ.240) THEN
12035 C...q + qbar -> ~chi04 + ~g
12036 C...th arbitrary
12037           IF(PYR(0).GT.0.5D0) JS=2
12038           MINT(20+JS)=KSUSY1+21
12039           MINT(23-JS)=KSUSY1+35
12040           KCC=17+JS
12041  
12042         ELSEIF(ISUB.EQ.241) THEN
12043 C...q + qbar' -> ~chi+-1 + ~g
12044 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
12045 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
12046 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
12047 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
12048 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
12049           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12050           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12051           JS=1
12052           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12053           MINT(20+JS)=KSUSY1+21
12054           MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2)
12055           KCC=17+JS
12056  
12057         ELSEIF(ISUB.EQ.242) THEN
12058 C...q + qbar' -> ~chi+-2 + ~g
12059 C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+
12060 C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi-
12061 C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi-
12062 C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+
12063 C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2
12064           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12065           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12066           JS=1
12067           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12068           MINT(20+JS)=KSUSY1+21
12069           MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2)
12070           KCC=17+JS
12071  
12072         ELSEIF(ISUB.EQ.243) THEN
12073 C...q + qbar -> ~g + ~g ; th arbitrary
12074           MINT(21)=KSUSY1+21
12075           MINT(22)=KSUSY1+21
12076           KCC=MINT(2)+4
12077  
12078         ELSEIF(ISUB.EQ.244) THEN
12079 C...g + g -> ~g + ~g ; th arbitrary
12080           KCC=MINT(2)+12
12081           KCS=(-1)**INT(1.5D0+PYR(0))
12082           MINT(21)=KSUSY1+21
12083           MINT(22)=KSUSY1+21
12084         ENDIF
12085  
12086       ELSEIF(ISUB.LE.260) THEN
12087         IF(ISUB.EQ.246) THEN
12088 C...qj + g -> ~qj_L + ~chi01
12089           IF(MINT(15).EQ.21) JS=2
12090           I=MINT(14+JS)
12091           IA=IABS(I)
12092           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12093           MINT(23-JS)=KSUSY1+22
12094           KCC=15+JS
12095           KCS=ISIGN(1,MINT(14+JS))
12096  
12097         ELSEIF(ISUB.EQ.247) THEN
12098 C...qj + g -> ~qj_R + ~chi01
12099           IF(MINT(15).EQ.21) JS=2
12100           I=MINT(14+JS)
12101           IA=IABS(I)
12102           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12103           MINT(23-JS)=KSUSY1+22
12104           KCC=15+JS
12105           KCS=ISIGN(1,MINT(14+JS))
12106  
12107         ELSEIF(ISUB.EQ.248) THEN
12108 C...qj + g -> ~qj_L + ~chi02
12109           IF(MINT(15).EQ.21) JS=2
12110           I=MINT(14+JS)
12111           IA=IABS(I)
12112           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12113           MINT(23-JS)=KSUSY1+23
12114           KCC=15+JS
12115           KCS=ISIGN(1,MINT(14+JS))
12116  
12117         ELSEIF(ISUB.EQ.249) THEN
12118 C...qj + g -> ~qj_R + ~chi02
12119           IF(MINT(15).EQ.21) JS=2
12120           I=MINT(14+JS)
12121           IA=IABS(I)
12122           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12123           MINT(23-JS)=KSUSY1+23
12124           KCC=15+JS
12125           KCS=ISIGN(1,MINT(14+JS))
12126  
12127         ELSEIF(ISUB.EQ.250) THEN
12128 C...qj + g -> ~qj_L + ~chi03
12129           IF(MINT(15).EQ.21) JS=2
12130           I=MINT(14+JS)
12131           IA=IABS(I)
12132           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12133           MINT(23-JS)=KSUSY1+25
12134           KCC=15+JS
12135           KCS=ISIGN(1,MINT(14+JS))
12136  
12137         ELSEIF(ISUB.EQ.251) THEN
12138 C...qj + g -> ~qj_R + ~chi03
12139           IF(MINT(15).EQ.21) JS=2
12140           I=MINT(14+JS)
12141           IA=IABS(I)
12142           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12143           MINT(23-JS)=KSUSY1+25
12144           KCC=15+JS
12145           KCS=ISIGN(1,MINT(14+JS))
12146  
12147         ELSEIF(ISUB.EQ.252) THEN
12148 C...qj + g -> ~qj_L + ~chi04
12149           IF(MINT(15).EQ.21) JS=2
12150           I=MINT(14+JS)
12151           IA=IABS(I)
12152           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12153           MINT(23-JS)=KSUSY1+35
12154           KCC=15+JS
12155           KCS=ISIGN(1,MINT(14+JS))
12156  
12157         ELSEIF(ISUB.EQ.253) THEN
12158 C...qj + g -> ~qj_R + ~chi04
12159           IF(MINT(15).EQ.21) JS=2
12160           I=MINT(14+JS)
12161           IA=IABS(I)
12162           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12163           MINT(23-JS)=KSUSY1+35
12164           KCC=15+JS
12165           KCS=ISIGN(1,MINT(14+JS))
12166  
12167         ELSEIF(ISUB.EQ.254) THEN
12168 C...qj + g -> ~qk_L + ~chi+-1
12169           IF(MINT(15).EQ.21) JS=2
12170           I=MINT(14+JS)
12171           IA=IABS(I)
12172           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
12173           IB=-IA+INT((IA+1)/2)*4-1
12174           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
12175           KCC=15+JS
12176           KCS=ISIGN(1,MINT(14+JS))
12177  
12178         ELSEIF(ISUB.EQ.255) THEN
12179 C...qj + g -> ~qk_L + ~chi+-1
12180           IF(MINT(15).EQ.21) JS=2
12181           I=MINT(14+JS)
12182           IA=IABS(I)
12183           MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I)
12184           IB=-IA+INT((IA+1)/2)*4-1
12185           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
12186           KCC=15+JS
12187           KCS=ISIGN(1,MINT(14+JS))
12188  
12189         ELSEIF(ISUB.EQ.256) THEN
12190 C...qj + g -> ~qk_L + ~chi+-2
12191           IF(MINT(15).EQ.21) JS=2
12192           I=MINT(14+JS)
12193           IA=IABS(I)
12194           IB=-IA+INT((IA+1)/2)*4-1
12195           MINT(20+JS)=ISIGN(KSUSY1+IB,I)
12196           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
12197           KCC=15+JS
12198           KCS=ISIGN(1,MINT(14+JS))
12199  
12200         ELSEIF(ISUB.EQ.257) THEN
12201 C...qj + g -> ~qk_R + ~chi+-2
12202           IF(MINT(15).EQ.21) JS=2
12203           I=MINT(14+JS)
12204           IA=IABS(I)
12205           IB=-IA+INT((IA+1)/2)*4-1
12206           MINT(20+JS)=ISIGN(KSUSY2+IB,I)
12207           MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I)
12208           KCC=15+JS
12209           KCS=ISIGN(1,MINT(14+JS))
12210  
12211         ELSEIF(ISUB.EQ.258) THEN
12212 C...qj + g -> ~qj_L + ~g
12213           IF(MINT(15).EQ.21) JS=2
12214           I=MINT(14+JS)
12215           IA=IABS(I)
12216           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12217           MINT(23-JS)=KSUSY1+21
12218           KCC=MINT(2)+6
12219           IF(JS.EQ.2) KCC=KCC+2
12220           KCS=ISIGN(1,I)
12221  
12222         ELSEIF(ISUB.EQ.259) THEN
12223 C...qj + g -> ~qj_R + ~g
12224           IF(MINT(15).EQ.21) JS=2
12225           I=MINT(14+JS)
12226           IA=IABS(I)
12227           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12228           MINT(23-JS)=KSUSY1+21
12229           KCC=MINT(2)+6
12230           IF(JS.EQ.2) KCC=KCC+2
12231           KCS=ISIGN(1,I)
12232         ENDIF
12233  
12234       ELSEIF(ISUB.LE.270) THEN
12235         IF(ISUB.EQ.261) THEN
12236 C...f + fbar -> ~t_1 + ~t_1bar; th = (p(q)-p(sq))**2
12237           ISGN=1
12238           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12239           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12240           MINT(22)=-MINT(21)
12241 C...Correct color combination
12242           IF(MINT(43).EQ.4) KCC=4
12243  
12244         ELSEIF(ISUB.EQ.262) THEN
12245 C...f + fbar -> ~t_2 + ~t_2bar; th = (p(q)-p(sq))**2
12246           ISGN=1
12247           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12248           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12249           MINT(22)=-MINT(21)
12250 C...Correct color combination
12251           IF(MINT(43).EQ.4) KCC=4
12252  
12253         ELSEIF(ISUB.EQ.263) THEN
12254 C...f + fbar -> ~t_1 + ~t_2bar; th = (p(q)-p(sq))**2
12255           IF((KCS.GT.0.AND.MINT(2).EQ.1).OR.
12256      &    (KCS.LT.0.AND.MINT(2).EQ.2)) THEN
12257             MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12258             MINT(22)=-ISIGN(KFPR(ISUB,2),KCS)
12259           ELSE
12260             JS=2
12261             MINT(21)=ISIGN(KFPR(ISUB,2),KCS)
12262             MINT(22)=-ISIGN(KFPR(ISUB,1),KCS)
12263           ENDIF
12264 C...Correct color combination
12265           IF(MINT(43).EQ.4) KCC=4
12266  
12267         ELSEIF(ISUB.EQ.264) THEN
12268 C...g + g -> ~t_1 + ~t_1bar; th arbitrary
12269           KCS=(-1)**INT(1.5D0+PYR(0))
12270           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12271           MINT(22)=-MINT(21)
12272           KCC=MINT(2)+10
12273  
12274         ELSEIF(ISUB.EQ.265) THEN
12275 C...g + g -> ~t_2 + ~t_2bar; th arbitrary
12276           KCS=(-1)**INT(1.5D0+PYR(0))
12277           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12278           MINT(22)=-MINT(21)
12279           KCC=MINT(2)+10
12280         ENDIF
12281  
12282       ELSEIF(ISUB.LE.296) THEN
12283         IF(ISUB.EQ.271.OR.ISUB.EQ.281.OR.ISUB.EQ.291) THEN
12284 C...qi + qj -> ~qi_L + ~qj_L
12285           KCC=MINT(2)
12286           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12287           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
12288           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
12289  
12290         ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.282.OR.ISUB.EQ.292) THEN
12291 C...qi + qj -> ~qi_R + ~qj_R
12292           KCC=MINT(2)
12293           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12294           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
12295           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
12296  
12297         ELSEIF(ISUB.EQ.273.OR.ISUB.EQ.283.OR.ISUB.EQ.293) THEN
12298 C...qi + qj -> ~qi_L + ~qj_R
12299           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
12300           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
12301           KCC=MINT(2)
12302           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12303  
12304         ELSEIF(ISUB.EQ.274.OR.ISUB.EQ.284) THEN
12305 C...qi + qjbar -> ~qi_L + ~qj_Lbar; th = (p(f)-p(sf'))**2
12306           MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15))
12307           MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16))
12308           KCC=MINT(2)
12309           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12310  
12311         ELSEIF(ISUB.EQ.275.OR.ISUB.EQ.285) THEN
12312 C...qi + qjbar -> ~qi_R + ~qj_Rbar ; th = (p(f)-p(sf'))**2
12313           MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15))
12314           MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16))
12315           KCC=MINT(2)
12316           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12317  
12318         ELSEIF(ISUB.EQ.276.OR.ISUB.EQ.286.OR.ISUB.EQ.296) THEN
12319 C...qi + qjbar -> ~qi_L + ~qj_Rbar ; th = (p(f)-p(sf'))**2
12320           MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15))
12321           MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16))
12322           KCC=MINT(2)
12323           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12324  
12325         ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.287) THEN
12326 C...f + fbar -> ~qi_L + ~qi_Lbar ; th = (p(q)-p(sq))**2
12327           ISGN=1
12328           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12329           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12330           MINT(22)=-MINT(21)
12331           IF(MINT(43).EQ.4) KCC=4
12332  
12333         ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.288) THEN
12334 C...f + fbar -> ~qi_R + ~qi_Rbar; th = (p(q)-p(sq))**2
12335           ISGN=1
12336           IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1
12337           MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS)
12338           MINT(22)=-MINT(21)
12339           IF(MINT(43).EQ.4) KCC=4
12340  
12341         ELSEIF(ISUB.EQ.279.OR.ISUB.EQ.289) THEN
12342 C...g + g -> ~qi_L + ~qi_Lbar ; th arbitrary
12343 C...pure LL + RR
12344           KCS=(-1)**INT(1.5D0+PYR(0))
12345           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12346           MINT(22)=-MINT(21)
12347           KCC=MINT(2)+10
12348  
12349         ELSEIF(ISUB.EQ.280.OR.ISUB.EQ.290) THEN
12350 C...g + g -> ~qi_R + ~qi_Rbar ; th arbitrary
12351           KCS=(-1)**INT(1.5D0+PYR(0))
12352           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12353           MINT(22)=-MINT(21)
12354           KCC=MINT(2)+10
12355  
12356         ELSEIF(ISUB.EQ.294) THEN
12357 C...qj + g -> ~qj_L + ~g
12358           IF(MINT(15).EQ.21) JS=2
12359           I=MINT(14+JS)
12360           IA=IABS(I)
12361           MINT(20+JS)=ISIGN(KSUSY1+IA,I)
12362           MINT(23-JS)=KSUSY1+21
12363           KCC=MINT(2)+6
12364           IF(JS.EQ.2) KCC=KCC+2
12365           KCS=ISIGN(1,I)
12366  
12367         ELSEIF(ISUB.EQ.295) THEN
12368 C...qj + g -> ~qj_R + ~g
12369           IF(MINT(15).EQ.21) JS=2
12370           I=MINT(14+JS)
12371           IA=IABS(I)
12372           MINT(20+JS)=ISIGN(KSUSY2+IA,I)
12373           MINT(23-JS)=KSUSY1+21
12374           KCC=MINT(2)+6
12375           IF(JS.EQ.2) KCC=KCC+2
12376           KCS=ISIGN(1,I)
12377         ENDIF
12378  
12379       ELSEIF(ISUB.LE.330) THEN
12380         IF(ISUB.EQ.311)THEN
12381 C...g + g -> g* + g* (UED)
12382           KCC=MINT(2)+12
12383           KCS=(-1)**INT(1.5D0+PYR(0))
12384           MUED(1)=472
12385           MUED(2)=472
12386           MINT(21)=IUEDEQ(472)
12387           MINT(22)=IUEDEQ(472)
12388         ELSEIF(ISUB.EQ.312)THEN
12389 C...q + g -> q*_D + g*, q*_S + g*
12390 C...The two channels have the same cross section
12391           KKFLMI=450
12392           IF(PYR(0).GT.0.5)KKFLMI=456
12393           IF(MINT(15).EQ.21) JS=2
12394           KCC=MINT(2)+6
12395           IF(MINT(15).EQ.21)KCC=KCC+2
12396           IF(MINT(15).NE.21)THEN
12397             KCS=ISIGN(1,MINT(15))
12398             MUED(2)=472
12399             MUED(1)=KCS*(KKFLMI+IABS(MINT(15)))
12400             MINT(22)=IUEDEQ(472)
12401             MINT(21)=KCS*IUEDEQ(KKFLMI+IABS(MINT(15)))
12402           ENDIF
12403           IF(MINT(16).NE.21)THEN
12404             KCS=ISIGN(1,MINT(16))
12405             MUED(2)=KCS*(KKFLMI+IABS(MINT(16)))
12406             MUED(1)=472
12407             MINT(22)=KCS*IUEDEQ(KKFLMI+IABS(MINT(16)))
12408             MINT(21)=IUEDEQ(472)
12409           ENDIF
12410         ELSEIF(ISUB.EQ.313)THEN
12411 C...q + q' -> q*_D + q*_D',q*_S+q*_S'
12412 C...The two channels have the same cross section
12413           KKFLMI=450
12414           IF(PYR(0).GT.0.5)KKFLMI=456
12415           KCC=MINT(2)         
12416           IF(MINT(15).EQ.MINT(16))THEN
12417             MUED(1)=SIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15)))
12418             MUED(2)=MINT(21)
12419             MINT(21)=SIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15)))
12420             MINT(22)=MINT(21)
12421           ELSE
12422             MUED(1)=SIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15)))
12423             MUED(2)=SIGN(1,MINT(16))*(KKFLMI+IABS(MINT(16)))
12424             MINT(21)=SIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15)))
12425             MINT(22)=SIGN(1,MINT(16))*IUEDEQ(KKFLMI+IABS(MINT(16)))
12426           ENDIF
12427           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2        
12428         ELSEIF(ISUB.EQ.314)THEN
12429 C...g + g -> q*_D + q*_D_bar, q*_S + q*_S_bar
12430 C...The two channels have the same cross section
12431           KKFLMI=450
12432           IF(PYR(0).GT.0.5)KKFLMI=456
12433           KCS=(-1)**INT(1.5D0+PYR(0))    
12434           XFLAOUT=PYR(0)
12435           IF(XFLAOUT.LE.0.2)THEN
12436             MUED(1)=ISIGN(1,KCS)*(KKFLMI+1)
12437             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+1)
12438           ELSEIF(XFLAOUT.LE.0.4)THEN
12439             MUED(1)=ISIGN(1,KCS)*(KKFLMI+2)
12440             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+2)
12441           ELSEIF(XFLAOUT.LE.0.6)THEN
12442             MUED(1)=ISIGN(1,KCS)*(KKFLMI+3)
12443             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+3)
12444           ELSEIF(XFLAOUT.LE.0.8)THEN
12445             MUED(1)=ISIGN(1,KCS)*(KKFLMI+4)
12446             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+4)
12447           ELSE
12448             MUED(1)=ISIGN(1,KCS)*(KKFLMI+5)
12449             MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+5)
12450           ENDIF
12451           MINT(22)=-MINT(21)
12452           MUED(2)=-MUED(1)
12453           KCC=MINT(2)+10
12454         ELSEIF(ISUB.EQ.315)THEN
12455 C...q + qbar -> q*_D + q*_D_bar, q*_S + q*_S_bar
12456 C...The two channels have the same cross section
12457           KKFLMI=450
12458           IF(PYR(0).GT.0.5)KKFLMI=456
12459           MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15)))
12460           MUED(2)=-MINT(21)
12461           MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15)))
12462           MINT(22)=-MINT(21)
12463           KCC=4
12464         ELSEIF(ISUB.EQ.316)THEN
12465 C...q + qbar'    -> q*_D + q*_S_bar'
12466           MUED(1)=ISIGN(1,MINT(15))*(456+IABS(MINT(15)))
12467           MUED(2)=ISIGN(1,MINT(16))*(450+IABS(MINT(16)))
12468           MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(456+IABS(MINT(15)))
12469           MINT(22)=ISIGN(1,MINT(16))*IUEDEQ(450+IABS(MINT(16)))
12470           KCC=MINT(2)+2
12471         ELSEIF(ISUB.EQ.317)THEN
12472 C...q + qbar'    -> q*_D + q*_D_bar', q*_S + q*_S_bar
12473 C...The two channels have the same cross section
12474           KKFLMI=450
12475           IF(PYR(0).GT.0.5)KKFLMI=456      
12476           MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15)))
12477           MUED(2)=ISIGN(1,MINT(16))*(KKFLMI+IABS(MINT(16)))
12478           MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15)))
12479           MINT(22)=ISIGN(1,MINT(16))*IUEDEQ(KKFLMI+IABS(MINT(16)))
12480           KCC=MINT(2)+2
12481         ELSEIF(ISUB.EQ.318)THEN
12482 C...q + q'    -> q*_D + q*_S'     
12483           KCC=MINT(2)         
12484           MUED(1)=SIGN(1,MINT(15))*(456+IABS(MINT(15)))
12485           MUED(2)=SIGN(1,MINT(16))*(450+IABS(MINT(16)))               
12486           MINT(21)=SIGN(1,MINT(15))*IUEDEQ(456+IABS(MINT(15)))
12487           MINT(22)=SIGN(1,MINT(16))*IUEDEQ(450+IABS(MINT(16)))
12488         ELSEIF(ISUB.EQ.319)THEN
12489 C...q + qbar -> q*_D' + q*_D_bar', q*_S' + q*_S_bar'
12490 C...The two channels have the same cross section
12491           KKFLMI=450
12492           IF(PYR(0).GT.0.5)KKFLMI=456
12493           XFLAOUT=PYR(0)
12494           IIFLAV=0
12495 C...N.B. NFLAVOURS=IUED(3)
12496 C   DO I=1,NFLAVOURS
12497           DO 433 I=1,IUED(3)
12498             IF(I.NE.IABS(MINT(15)))THEN
12499               IIFLAV=IIFLAV+1
12500               IOKFLA(IIFLAV)=I
12501             ENDIF
12502  433      CONTINUE
12503           FLASTEP=1./(IUED(3)-1)
12504           DO I=1,IUED(3)-1
12505             FLAVV=FLASTEP*I
12506             IF(XFLAOUT.LE.FLAVV)THEN                  
12507               MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IOKFLA(I))
12508               MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IOKFLA(I))
12509               GOTO 435
12510             ENDIF
12511           ENDDO
12512  435      CONTINUE
12513           IF(IABS(MUED(1)).LT.451.AND.IABS(MUED(1)).GT.462)THEN
12514             WRITE(MSTU(11),*) 'IN PYSCAT: KK FLAVORS PROBLEM !!!'
12515             CALL PYSTOP(5000000)
12516           ENDIF
12517           MINT(22)=-MINT(21)
12518           KCC=4
12519         ENDIF
12520         
12521       ELSEIF(ISUB.LE.340) THEN
12522  
12523         IF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
12524 C...q + qbar' -> H+ + H0
12525           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12526           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12527           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12528           MINT(20+JS)=ISIGN(37,KCH1+KCH2)
12529           MINT(23-JS)=KFPR(ISUB,2)
12530         ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
12531 C...f + fbar -> A0 + H0; th arbitrary
12532           IF(PYR(0).GT.0.5D0) JS=2
12533           MINT(20+JS)=KFPR(ISUB,1)
12534           MINT(23-JS)=KFPR(ISUB,2)
12535         ELSEIF(ISUB.EQ.301) THEN
12536 C...f + fbar -> H+ H-
12537           MINT(21)=ISIGN(KFPR(ISUB,1),KCS)
12538           MINT(22)=-MINT(21)
12539         ENDIF
12540 CMRENNA--
12541  
12542       ELSEIF(ISUB.LE.360) THEN
12543  
12544         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
12545 C...l + l -> H_L++/--, H_R++/--
12546           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12547           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12548           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
12549  
12550         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
12551 C...l + gamma -> l' + H++/--; th=(p(l)-p(H))**2
12552           IF(MINT(15).EQ.22) JS=2
12553           MINT(20+JS)=ISIGN(KFPR(ISUB,1),-MINT(14+JS))
12554           MINT(23-JS)=ISIGN(KFPR(ISUB,2),-MINT(14+JS))
12555           KCC=22
12556  
12557         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
12558 C...f + fbar -> H++ + H--; th = (p(f)-p(H--))**2
12559           MINT(21)=-ISIGN(KFPR(ISUB,1),MINT(15))
12560           MINT(22)=-MINT(21)
12561  
12562         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
12563 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/--
12564 C...as inner process).
12565           DO 450 JT=1,2
12566             I=MINT(14+JT)
12567             IA=IABS(I)
12568             IF(IA.LE.10) THEN
12569               RVCKM=VINT(180+I)*PYR(0)
12570               DO 440 J=1,MSTP(1)
12571                 IB=2*J-1+MOD(IA,2)
12572                 IPM=(5-ISIGN(1,I))/2
12573                 IDC=J+MDCY(IA,2)+2
12574                 IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 440
12575                 MINT(20+JT)=ISIGN(IB,I)
12576                 RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2)
12577                 IF(RVCKM.LE.0D0) GOTO 450
12578   440         CONTINUE
12579             ELSE
12580               IB=2*((IA+1)/2)-1+MOD(IA,2)
12581               MINT(20+JT)=ISIGN(IB,I)
12582             ENDIF
12583   450     CONTINUE
12584           KCC=22
12585           KFRES=ISIGN(KFPR(ISUB,1),MINT(15))
12586           IF(MOD(MINT(15),2).EQ.1) KFRES=-KFRES
12587  
12588         ELSEIF(ISUB.EQ.353) THEN
12589 C...f + fbar -> Z_R0
12590           KFRES=KFPR(ISUB,1)
12591  
12592         ELSEIF(ISUB.EQ.354) THEN
12593 C...f + fbar' -> W+/-
12594           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12595           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12596           KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2)
12597  
12598         ENDIF
12599  
12600       ELSEIF(ISUB.LE.380) THEN
12601  
12602         IF(ISUB.LE.363.OR.ISUB.EQ.368) THEN
12603 C...f + fbar -> charged+ charged- technicolor
12604           KSW=(-1)**INT(1.5D0+PYR(0))
12605           MINT(21)=ISIGN(KFPR(ISUB,1),KSW)
12606           MINT(22)=-ISIGN(KFPR(ISUB,2),KSW)
12607  
12608         ELSEIF(ISUB.LE.367.OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN
12609 C...f + fbar -> neutral neutral technicolor
12610           MINT(21)=KFPR(ISUB,1)
12611           MINT(22)=KFPR(ISUB,2)
12612  
12613         ELSEIF(ISUB.EQ.374.OR.ISUB.EQ.375.OR.ISUB.EQ.378) THEN
12614 C...f + fbar' -> neutral charged technicolor
12615           IN=1
12616           IC=2
12617           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12618           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12619           IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2
12620           MINT(23-JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
12621           MINT(20+JS)=KFPR(ISUB,IN)
12622  
12623         ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN
12624 C...f + fbar' -> charged neutral technicolor
12625           IN=2
12626           IC=1
12627           KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15))
12628           KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16))
12629           IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2
12630           MINT(20+JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2)
12631           MINT(23-JS)=KFPR(ISUB,IN)
12632         ENDIF
12633  
12634       ELSEIF(ISUB.LE.400) THEN
12635         IF(ISUB.EQ.381) THEN
12636 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2, TC extensions
12637           KCC=MINT(2)
12638           IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2
12639  
12640         ELSEIF(ISUB.EQ.382) THEN
12641 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2, TC extensions
12642           MINT(21)=ISIGN(KFLF,MINT(15))
12643           MINT(22)=-MINT(21)
12644           KCC=4
12645  
12646         ELSEIF(ISUB.EQ.383) THEN
12647 C...f + fbar -> g + g; th arbitrary, TC extensions
12648           MINT(21)=21
12649           MINT(22)=21
12650           KCC=MINT(2)+4
12651  
12652         ELSEIF(ISUB.EQ.384) THEN
12653 C...f + g -> f + g; th = (p(f)-p(f))**2, TC extensions
12654           IF(MINT(15).EQ.21) JS=2
12655           KCC=MINT(2)+6
12656           IF(MINT(15).EQ.21) KCC=KCC+2
12657           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
12658           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
12659  
12660         ELSEIF(ISUB.EQ.385) THEN
12661 C...g + g -> f + fbar; th arbitrary, TC extensions
12662           KCS=(-1)**INT(1.5D0+PYR(0))
12663           MINT(21)=ISIGN(KFLF,KCS)
12664           MINT(22)=-MINT(21)
12665           KCC=MINT(2)+10
12666  
12667         ELSEIF(ISUB.EQ.386) THEN
12668 C...g + g -> g + g; th arbitrary, TC extensions
12669           KCC=MINT(2)+12
12670           KCS=(-1)**INT(1.5D0+PYR(0))
12671  
12672         ELSEIF(ISUB.EQ.387) THEN
12673 C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2, TC extensions
12674           MINT(21)=ISIGN(MINT(55),MINT(15))
12675           MINT(22)=-MINT(21)
12676           KCC=4
12677  
12678         ELSEIF(ISUB.EQ.388) THEN
12679 C...g + g -> Q + Qbar; th arbitrary, TC extensions
12680           KCS=(-1)**INT(1.5D0+PYR(0))
12681           MINT(21)=ISIGN(MINT(55),KCS)
12682           MINT(22)=-MINT(21)
12683           KCC=MINT(2)+10
12684  
12685         ELSEIF(ISUB.EQ.391) THEN
12686 C...f + fbar -> G*.
12687           KFRES=KFPR(ISUB,1)
12688  
12689         ELSEIF(ISUB.EQ.392) THEN
12690 C...g + g -> G*.
12691           KCC=21
12692           KFRES=KFPR(ISUB,1)
12693  
12694         ELSEIF(ISUB.EQ.393) THEN
12695 C...q + qbar -> g + G*;  th arbitrary.
12696           IF(PYR(0).GT.0.5D0) JS=2
12697           MINT(20+JS)=KFPR(ISUB,1)
12698           MINT(23-JS)=KFPR(ISUB,2)
12699           KCC=17+JS
12700  
12701         ELSEIF(ISUB.EQ.394) THEN
12702 C...q + g -> q + G*;  th = (p(f) - p(f))**2
12703           IF(MINT(15).EQ.21) JS=2
12704           MINT(23-JS)=KFPR(ISUB,2)
12705           KCC=15+JS
12706           KCS=ISIGN(1,MINT(14+JS))
12707  
12708         ELSEIF(ISUB.EQ.395) THEN
12709 C...g + g -> G* + g;  th arbitrary.
12710           IF(PYR(0).GT.0.5D0) JS=2
12711           MINT(23-JS)=KFPR(ISUB,2)
12712           KCC=22+JS
12713         ENDIF
12714  
12715       ELSEIF(ISUB.LE.420) THEN
12716         IF(ISUB.EQ.401) THEN
12717 C...g + g -> t + b + H+/-
12718           KCS=(-1)**INT(1.5D0+PYR(0))
12719           MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS)
12720           MINT(22)=ISIGN(5,-KCS)
12721           KCC=11+INT(0.5D0+PYR(0))
12722           KFRES=ISIGN(KFHIGG,-KCS)
12723  
12724         ELSEIF(ISUB.EQ.402) THEN
12725 C...q + qbar -> t + b + H+/-
12726           KFL=(-1)**INT(1.5D0+PYR(0))
12727           MINT(21)=ISIGN(INT(6.+.5*KFL),KCS)
12728           MINT(22)=ISIGN(INT(6.-.5*KFL),-KCS)
12729           KCC=4
12730           KFRES=ISIGN(KFHIGG,-KFL*KCS)
12731         ENDIF
12732  
12733 C...QUARKONIA+++
12734 C...Additional code by Stefan Wolf
12735       ELSEIF(ISUB.LE.430) THEN
12736         IF(ISUB.GE.421.AND.ISUB.LE.424) THEN
12737 C...g + g -> QQ~[n] + g
12738 C...MINT(21), MINT(22) copied from ISUB.EQ.86-89
12739 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12740 C...KCC and KCS copied from ISUB.EQ.86-89 (for ISUB.EQ.421)
12741 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12742 C...or from ISUB.EQ.68 (for ISUB.NE.421)
12743 C...[g + g -> g + g; th arbitrary]
12744           MINT(21)=KFPR(ISUBSV,1)
12745           MINT(22)=KFPR(ISUBSV,2)
12746           IF(ISUB.EQ.421) THEN
12747              KCC=24
12748              KCS=(-1)**INT(1.5D0+PYR(0))
12749           ELSE
12750              KCC=MINT(2)+12
12751              KCS=(-1)**INT(1.5D0+PYR(0))
12752           ENDIF
12753  
12754         ELSEIF(ISUB.GE.425.AND.ISUB.LE.427) THEN
12755 C...q + g -> q + QQ~[n]
12756 C...MINT(21), MINT(22) "copied" from ISUB.EQ.112
12757 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12758 C...KCC copied from ISUB.EQ.28
12759 C...[f + g -> f + g;  th = (p(f)-p(f))**2; (q + g -> q + g  only)]
12760           IF(MINT(15).EQ.21) JS=2
12761           MINT(23-JS)=KFPR(ISUBSV,2)
12762           KCC=MINT(2)+6
12763           IF(MINT(15).EQ.21) KCC=KCC+2
12764           IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15))
12765           IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16))
12766  
12767         ELSEIF(ISUB.GE.428.AND.ISUB.LE.430) THEN
12768 C...q + q~ -> g + QQ~[n]
12769 C...MINT(21), MINT(22) "copied" from ISUB.EQ.111
12770 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12771 C...KCC copied from ISUB.EQ.13
12772 C...[f + fbar -> g + g;  th arbitrary; (q + qbar -> g + g  only)]
12773           IF(PYR(0).GT.0.5) JS=2
12774           MINT(20+JS)=21
12775           MINT(23-JS)=KFPR(ISUBSV,2)
12776           KCC=MINT(2)+4
12777         ENDIF
12778  
12779       ELSEIF(ISUB.LE.440) THEN
12780         IF(ISUB.GE.431.AND.ISUB.LE.433) THEN
12781 C...g + g -> QQ~[n] + g
12782 C...MINT(21), MINT(22) copied from ISUB.EQ.86-89
12783 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12784 C...KCC and KCS copied from ISUB.EQ.86-89
12785 C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g]
12786           MINT(21)=KFPR(ISUBSV,1)
12787           MINT(22)=KFPR(ISUBSV,2)
12788           KCC=24
12789           KCS=(-1)**INT(1.5D0+PYR(0))
12790  
12791         ELSEIF(ISUB.GE.434.AND.ISUB.LE.436) THEN
12792 C...q + g -> q + QQ~[n]
12793 C...MINT(21), MINT(22) "copied" from ISUB.EQ.112
12794 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12795 C...KCC and KCS copied from ISUB.EQ.112
12796 C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)]
12797           IF(MINT(15).EQ.21) JS=2
12798           MINT(23-JS)=KFPR(ISUBSV,2)
12799           KCC=15+JS
12800           KCS=ISIGN(1,MINT(14+JS))
12801  
12802         ELSEIF(ISUB.GE.437.AND.ISUB.LE.439) THEN
12803 C...q + q~ -> g + QQ~[n]
12804 C...MINT(21), MINT(22) "copied" from ISUB.EQ.111
12805 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12806 C...KCC copied from ISUB.EQ.111
12807 C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)]
12808           IF(PYR(0).GT.0.5) JS=2
12809           MINT(20+JS)=21
12810           MINT(23-JS)=KFPR(ISUBSV,2)
12811           KCC=17+JS
12812         ENDIF
12813 C...QUARKONIA---
12814  
12815       ENDIF
12816  
12817       IF(ISET(ISUB).EQ.11) THEN
12818 C...Store documentation for user-defined processes
12819         BEZUP=(PUP(3,1)+PUP(3,2))/(PUP(4,1)+PUP(4,2))
12820         KUPPO(1)=MINT(83)+5
12821         KUPPO(2)=MINT(83)+6
12822         I=MINT(83)+6
12823         DO 470 IUP=3,NUP
12824           KUPPO(IUP)=0
12825           IF(MSTP(128).GE.2.AND.MOTHUP(1,IUP).GE.3) THEN
12826             IDOC=IDOC-1
12827             MINT(4)=MINT(4)-1
12828             GOTO 470
12829           ENDIF
12830           I=I+1
12831           KUPPO(IUP)=I
12832           K(I,1)=21
12833           K(I,2)=IDUP(IUP)
12834           IF(IDUP(IUP).EQ.0) K(I,2)=90
12835           K(I,3)=0
12836           IF(MOTHUP(1,IUP).GE.3) K(I,3)=KUPPO(MOTHUP(1,IUP))
12837           K(I,4)=0
12838           K(I,5)=0
12839           DO 460 J=1,5
12840             P(I,J)=PUP(J,IUP)
12841   460     CONTINUE
12842           V(I,5)=VTIMUP(IUP)
12843   470   CONTINUE
12844         CALL PYROBO(MINT(83)+7,MINT(83)+4+NUP,0D0,VINT(24),0D0,0D0,
12845      &  -BEZUP)
12846  
12847 C...Store final state partons for user-defined processes
12848         N=IPU2
12849         DO 490 IUP=3,NUP
12850           N=N+1
12851           K(N,1)=1
12852           IF(ISTUP(IUP).EQ.2.OR.ISTUP(IUP).EQ.3) K(N,1)=11
12853           K(N,2)=IDUP(IUP)
12854           IF(IDUP(IUP).EQ.0) K(N,2)=90
12855           IF(MSTP(128).LE.0.OR.MOTHUP(1,IUP).EQ.0) THEN
12856             K(N,3)=KUPPO(IUP)
12857           ELSE
12858             K(N,3)=MINT(84)+MOTHUP(1,IUP)
12859           ENDIF
12860           K(N,4)=0
12861           K(N,5)=0
12862 C...Search for daughters of intermediate colourless particles.
12863           IF(K(N,1).EQ.11.AND.KCHG(PYCOMP(K(N,2)),2).EQ.0) THEN
12864             DO 475 IUPDAU=IUP+1,NUP
12865               IF(MOTHUP(1,IUPDAU).EQ.IUP.AND.K(N,4).EQ.0) K(N,4)=
12866      &        N+IUPDAU-IUP
12867               IF(MOTHUP(1,IUPDAU).EQ.IUP) K(N,5)=N+IUPDAU-IUP
12868   475       CONTINUE
12869           ENDIF
12870           DO 480 J=1,5
12871             P(N,J)=PUP(J,IUP)
12872   480     CONTINUE
12873           V(N,5)=VTIMUP(IUP)
12874   490   CONTINUE
12875         CALL PYROBO(IPU3,N,0D0,VINT(24),0D0,0D0,-BEZUP)
12876  
12877 C...Arrange colour flow for user-defined processes
12878         NLBL=0
12879         DO 540 IUP1=1,NUP
12880           I1=MINT(84)+IUP1
12881           IF(KCHG(PYCOMP(K(I1,2)),2).EQ.0) GOTO 540
12882           IF(K(I1,1).EQ.1) K(I1,1)=3
12883           IF(K(I1,1).EQ.11) K(I1,1)=14
12884 C...Find a not yet considered colour/anticolour line.
12885           DO 530 ISDE1=1,2
12886             IF(ICOLUP(ISDE1,IUP1).EQ.0) GOTO 530
12887             NMAT=0
12888             DO 500 ILBL=1,NLBL
12889               IF(ICOLUP(ISDE1,IUP1).EQ.ILAB(ILBL)) NMAT=1
12890   500       CONTINUE
12891             IF(NMAT.EQ.0) THEN
12892               NLBL=NLBL+1
12893               ILAB(NLBL)=ICOLUP(ISDE1,IUP1)
12894 C...Find all others belonging to same line.
12895               I3=I1
12896               I4=0
12897               DO 520 IUP2=IUP1+1,NUP
12898                 I2=MINT(84)+IUP2
12899                 DO 510 ISDE2=1,2
12900                   IF(ICOLUP(ISDE2,IUP2).EQ.ICOLUP(ISDE1,IUP1)) THEN
12901                     IF(ISDE2.EQ.ISDE1) THEN
12902                       K(I3,3+ISDE2)=K(I3,3+ISDE2)+I2
12903                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I3
12904                       I3=I2
12905                     ELSEIF(I4.NE.0) THEN
12906                       K(I4,3+ISDE2)=K(I4,3+ISDE2)+I2
12907                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I4
12908                       I4=I2
12909                     ELSEIF(IUP2.LE.2) THEN
12910                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+I2
12911                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+I1
12912                       I4=I2
12913                     ELSE
12914                       K(I1,3+ISDE1)=K(I1,3+ISDE1)+MSTU(5)*I2
12915                       K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I1
12916                       I4=I2
12917                     ENDIF
12918                   ENDIF
12919   510           CONTINUE
12920   520         CONTINUE
12921             ENDIF
12922   530     CONTINUE
12923   540   CONTINUE
12924  
12925       ELSEIF(IDOC.EQ.7) THEN
12926 C...Resonance not decaying; store kinematics
12927         I=MINT(83)+7
12928         K(IPU3,1)=1
12929         K(IPU3,2)=KFRES
12930         K(IPU3,3)=I
12931         P(IPU3,4)=SHUSER
12932         P(IPU3,5)=SHUSER
12933         K(I,1)=21
12934         K(I,2)=KFRES
12935         P(I,4)=SHUSER
12936         P(I,5)=SHUSER
12937         N=IPU3
12938         MINT(21)=KFRES
12939         MINT(22)=0
12940  
12941 C...Special cases: colour flow in coloured resonances
12942         KCRES=PYCOMP(KFRES)
12943         IF(KCHG(KCRES,2).NE.0) THEN
12944           K(IPU3,1)=3
12945           DO 550 J=1,2
12946             JC=J
12947             IF(KCS.EQ.-1) JC=3-J
12948             IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
12949      &      MINT(84)+ICOL(KCC,1,JC)
12950             IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
12951      &      MINT(84)+ICOL(KCC,2,JC)
12952             IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
12953      &      MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
12954   550     CONTINUE
12955         ELSE
12956           K(IPU1,4)=IPU2
12957           K(IPU1,5)=IPU2
12958           K(IPU2,4)=IPU1
12959           K(IPU2,5)=IPU1
12960         ENDIF
12961  
12962       ELSEIF(IDOC.EQ.8) THEN
12963 C...2 -> 2 processes: store outgoing partons in their CM-frame
12964         DO 560 JT=1,2
12965           I=MINT(84)+2+JT
12966           KCA=PYCOMP(MINT(20+JT))
12967           K(I,1)=1
12968           IF(KCHG(KCA,2).NE.0) K(I,1)=3
12969           K(I,2)=MINT(20+JT)
12970           K(I,3)=MINT(83)+IDOC+JT-2
12971           KFAA=IABS(K(I,2))
12972           IF(KFPR(ISUBSV,1+MOD(JS+JT,2)).NE.0) THEN
12973             P(I,5)=SQRT(VINT(63+MOD(JS+JT,2)))
12974           ELSE
12975             P(I,5)=PYMASS(K(I,2))
12976           ENDIF
12977           IF((KFAA.EQ.6.OR.KFAA.EQ.7.OR.KFAA.EQ.8).AND.
12978      &    P(I,5).LT.PARP(42)) P(I,5)=PYMASS(K(I,2))
12979   560   CONTINUE
12980         IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN
12981           KFA1=IABS(MINT(21))
12982           KFA2=IABS(MINT(22))
12983           IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21))
12984      &    THEN
12985             MINT(51)=1
12986             RETURN
12987           ENDIF
12988           P(IPU3,5)=0D0
12989           P(IPU4,5)=0D0
12990         ENDIF
12991         P(IPU3,4)=0.5D0*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR)
12992         P(IPU3,3)=SQRT(MAX(0D0,P(IPU3,4)**2-P(IPU3,5)**2))
12993         P(IPU4,4)=SHR-P(IPU3,4)
12994         P(IPU4,3)=-P(IPU3,3)
12995         N=IPU4
12996         MINT(7)=MINT(83)+7
12997         MINT(8)=MINT(83)+8
12998  
12999 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
13000         CALL PYROBO(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
13001  
13002       ELSEIF(IDOC.EQ.9) THEN
13003 C...2 -> 3 processes: store outgoing partons in their CM frame
13004         DO 570 JT=1,2
13005           I=MINT(84)+2+JT
13006           KCA=PYCOMP(MINT(20+JT))
13007           K(I,1)=1
13008           IF(KCHG(KCA,2).NE.0) K(I,1)=3
13009           K(I,2)=MINT(20+JT)
13010           K(I,3)=MINT(83)+IDOC+JT-3
13011           JTA=JT
13012 C...t and b in opposide order in event list as compared to
13013 C...matrix element?
13014           IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) JTA=3-JT
13015           IF(IABS(K(I,2)).LE.22) THEN
13016             P(I,5)=PYMASS(K(I,2))
13017           ELSE
13018             P(I,5)=SQRT(VINT(63+MOD(JS+JTA,2)))
13019           ENDIF
13020           PT=SQRT(MAX(0D0,VINT(197+5*JTA)-P(I,5)**2+VINT(196+5*JTA)**2))
13021           P(I,1)=PT*COS(VINT(198+5*JTA))
13022           P(I,2)=PT*SIN(VINT(198+5*JTA))
13023   570   CONTINUE
13024         K(IPU5,1)=1
13025         K(IPU5,2)=KFRES
13026         K(IPU5,3)=MINT(83)+IDOC
13027         P(IPU5,5)=SHR
13028         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
13029         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
13030         PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
13031         PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2
13032         PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2
13033         PMT3=SQRT(PMS3)
13034         P(IPU5,3)=PMT3*SINH(VINT(211))
13035         P(IPU5,4)=PMT3*COSH(VINT(211))
13036         PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2
13037         SQL12=(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2
13038         IF(SQL12.LE.0D0) THEN
13039           MINT(51)=1
13040           RETURN
13041         ENDIF
13042         P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+
13043      &  VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
13044         P(IPU4,3)=-P(IPU3,3)-P(IPU5,3)
13045         IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) THEN
13046 C...t and b in opposide order in event list as compared to
13047 C...matrix element
13048           P(IPU4,3)=(-P(IPU5,3)*(PMS12+PMS2-PMS1)+
13049      &    VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12)
13050           P(IPU3,3)=-P(IPU4,3)-P(IPU5,3)
13051         END IF
13052         P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2)
13053         P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2)
13054         MINT(23)=KFRES
13055         N=IPU5
13056         MINT(7)=MINT(83)+7
13057         MINT(8)=MINT(83)+8
13058  
13059       ELSEIF(IDOC.EQ.11) THEN
13060 C...Z0 + Z0 -> h0, W+ + W- -> h0: store Higgs and outgoing partons
13061         PHI(1)=PARU(2)*PYR(0)
13062         PHI(2)=PHI(1)-PHIR
13063         DO 580 JT=1,2
13064           I=MINT(84)+2+JT
13065           K(I,1)=1
13066           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
13067           K(I,2)=MINT(20+JT)
13068           K(I,3)=MINT(83)+IDOC+JT-2
13069           P(I,5)=PYMASS(K(I,2))
13070           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) THEN
13071             MINT(51)=1
13072             RETURN
13073           ENDIF
13074           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
13075           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
13076           P(I,1)=PTABS*COS(PHI(JT))
13077           P(I,2)=PTABS*SIN(PHI(JT))
13078           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
13079           P(I,4)=0.5D0*SHPR*Z(JT)
13080           IZW=MINT(83)+6+JT
13081           K(IZW,1)=21
13082           K(IZW,2)=23
13083           IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT)))
13084           K(IZW,3)=IZW-2
13085           P(IZW,1)=-P(I,1)
13086           P(IZW,2)=-P(I,2)
13087           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
13088           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
13089           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
13090   580   CONTINUE
13091         I=MINT(83)+9
13092         K(IPU5,1)=1
13093         K(IPU5,2)=KFRES
13094         K(IPU5,3)=I
13095         P(IPU5,5)=SHR
13096         P(IPU5,1)=-P(IPU3,1)-P(IPU4,1)
13097         P(IPU5,2)=-P(IPU3,2)-P(IPU4,2)
13098         P(IPU5,3)=-P(IPU3,3)-P(IPU4,3)
13099         P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4)
13100         K(I,1)=21
13101         K(I,2)=KFRES
13102         DO 590 J=1,5
13103           P(I,J)=P(IPU5,J)
13104   590   CONTINUE
13105         N=IPU5
13106         MINT(23)=KFRES
13107  
13108       ELSEIF(IDOC.EQ.12) THEN
13109 C...Z0 and W+/- scattering: store bosons and outgoing partons
13110         PHI(1)=PARU(2)*PYR(0)
13111         PHI(2)=PHI(1)-PHIR
13112         JTRAN=INT(1.5D0+PYR(0))
13113         DO 600 JT=1,2
13114           I=MINT(84)+2+JT
13115           K(I,1)=1
13116           IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3
13117           K(I,2)=MINT(20+JT)
13118           K(I,3)=MINT(83)+IDOC+JT-2
13119           P(I,5)=PYMASS(K(I,2))
13120           IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0D0
13121           PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2))
13122           PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2))
13123           P(I,1)=PTABS*COS(PHI(JT))
13124           P(I,2)=PTABS*SIN(PHI(JT))
13125           P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1)
13126           P(I,4)=0.5D0*SHPR*Z(JT)
13127           IZW=MINT(83)+6+JT
13128           K(IZW,1)=21
13129           IF(MINT(14+JT).EQ.MINT(20+JT)) THEN
13130             K(IZW,2)=23
13131           ELSE
13132             K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT))-PYCHGE(MINT(20+JT)))
13133           ENDIF
13134           K(IZW,3)=IZW-2
13135           P(IZW,1)=-P(I,1)
13136           P(IZW,2)=-P(I,2)
13137           P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1)
13138           P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT))
13139           P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2))
13140           IPU=MINT(84)+4+JT
13141           K(IPU,1)=3
13142           K(IPU,2)=KFPR(ISUB,JT)
13143           IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2)
13144           IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2)
13145           K(IPU,3)=MINT(83)+8+JT
13146           IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN
13147             P(IPU,5)=PYMASS(K(IPU,2))
13148           ELSE
13149             P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2)))
13150           ENDIF
13151           MINT(22+JT)=K(IPU,2)
13152   600   CONTINUE
13153 C...Find rotation and boost for hard scattering subsystem
13154         I1=MINT(83)+7
13155         I2=MINT(83)+8
13156         BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4))
13157         BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4))
13158         BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4))
13159         GAMCM=(P(I1,4)+P(I2,4))/SHR
13160         BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3)
13161         PX=P(I1,1)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEXCM
13162         PY=P(I1,2)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEYCM
13163         PZ=P(I1,3)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEZCM
13164         THECM=PYANGL(PZ,SQRT(PX**2+PY**2))
13165         PHICM=PYANGL(PX,PY)
13166 C...Store hard scattering subsystem. Rotate and boost it
13167         SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4D0*P(IPU5,5)**2*
13168      &  P(IPU6,5)**2
13169         PABS=SQRT(MAX(0D0,SQLAM/(4D0*SH)))
13170         CTHWZ=VINT(23)
13171         STHWZ=SQRT(MAX(0D0,1D0-CTHWZ**2))
13172         PHIWZ=VINT(24)-PHICM
13173         P(IPU5,1)=PABS*STHWZ*COS(PHIWZ)
13174         P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ)
13175         P(IPU5,3)=PABS*CTHWZ
13176         P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2)
13177         P(IPU6,1)=-P(IPU5,1)
13178         P(IPU6,2)=-P(IPU5,2)
13179         P(IPU6,3)=-P(IPU5,3)
13180         P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2)
13181         CALL PYROBO(IPU5,IPU6,THECM,PHICM,BEXCM,BEYCM,BEZCM)
13182         DO 620 JT=1,2
13183           I1=MINT(83)+8+JT
13184           I2=MINT(84)+4+JT
13185           K(I1,1)=21
13186           K(I1,2)=K(I2,2)
13187           DO 610 J=1,5
13188             P(I1,J)=P(I2,J)
13189   610     CONTINUE
13190   620   CONTINUE
13191         N=IPU6
13192         MINT(7)=MINT(83)+9
13193         MINT(8)=MINT(83)+10
13194       ENDIF
13195  
13196       IF(ISET(ISUB).EQ.11) THEN
13197       ELSEIF(IDOC.GE.8) THEN
13198 C...Store colour connection indices
13199         DO 630 J=1,2
13200           JC=J
13201           IF(KCS.EQ.-1) JC=3-J
13202           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
13203      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)
13204           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
13205      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)
13206           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)=
13207      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
13208           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
13209      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
13210   630   CONTINUE
13211  
13212 C...Copy outgoing partons to documentation lines
13213         IMAX=2
13214         IF(IDOC.EQ.9) IMAX=3
13215         DO 650 I=1,IMAX
13216           I1=MINT(83)+IDOC-IMAX+I
13217           I2=MINT(84)+2+I
13218           K(I1,1)=21
13219           K(I1,2)=K(I2,2)
13220           IF(IDOC.LE.9) K(I1,3)=0
13221           IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I
13222           DO 640 J=1,5
13223             P(I1,J)=P(I2,J)
13224   640     CONTINUE
13225   650   CONTINUE
13226  
13227       ELSEIF(IDOC.EQ.9) THEN
13228 C...Store colour connection indices
13229         DO 660 J=1,2
13230           JC=J
13231           IF(KCS.EQ.-1) JC=3-J
13232           IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)=
13233      &    K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+
13234      &    MAX(0,MIN(1,ICOL(KCC,1,JC)-2))
13235           IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)=
13236      &    K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+
13237      &    MAX(0,MIN(1,ICOL(KCC,2,JC)-2))
13238           IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)=
13239      &    MSTU(5)*(MINT(84)+ICOL(KCC,3,JC))
13240           IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)=
13241      &    MSTU(5)*(MINT(84)+ICOL(KCC,4,JC))
13242   660   CONTINUE
13243  
13244 C...Copy outgoing partons to documentation lines
13245         DO 680 I=1,3
13246           I1=MINT(83)+IDOC-3+I
13247           I2=MINT(84)+2+I
13248           K(I1,1)=21
13249           K(I1,2)=K(I2,2)
13250           K(I1,3)=0
13251           DO 670 J=1,5
13252             P(I1,J)=P(I2,J)
13253   670     CONTINUE
13254   680   CONTINUE
13255       ENDIF
13256  
13257 C...Copy outgoing partons to list of allowed radiators.
13258       NPART=0
13259       IF(MINT(35).GE.2.AND.ISET(ISUB).NE.0) THEN
13260         DO 690 I=MINT(84)+3,N
13261           NPART=NPART+1
13262           IPART(NPART)=I
13263           PTPART(NPART)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2)
13264   690   CONTINUE
13265       ENDIF
13266  
13267 C...Low-pT events: remove gluons used for string drawing purposes
13268       IF(ISUB.EQ.95) THEN
13269         IF(MINT(35).LE.1) THEN
13270           K(IPU3,1)=K(IPU3,1)+10
13271           K(IPU4,1)=K(IPU4,1)+10
13272         ENDIF
13273         DO 700 J=41,66
13274           VINTSV(J)=VINT(J)
13275           VINT(J)=0D0
13276   700   CONTINUE
13277         DO 720 I=MINT(83)+5,MINT(83)+8
13278           DO 710 J=1,5
13279             P(I,J)=0D0
13280   710     CONTINUE
13281   720   CONTINUE
13282       ENDIF
13283  
13284       RETURN
13285       END
13286  
13287 C***********************************************************************
13288  
13289 C...PYEVOL
13290 C...Handles intertwined pT-ordered spacelike initial-state parton
13291 C...and multiple interactions.
13292  
13293       SUBROUTINE PYEVOL(MODE,PT2MAX,PT2MIN)
13294 C...Mode = -1 : Initialize first time. Determine MAX and MIN scales.
13295 C...MODE =  0 : (Re-)initialize ISR/MI evolution.
13296 C...Mode =  1 : Evolve event from PT2MAX to PT2MIN.
13297  
13298 C...Double precision and integer declarations.
13299       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
13300       IMPLICIT INTEGER(I-N)
13301       INTEGER PYK,PYCHGE,PYCOMP
13302 C...External
13303       EXTERNAL PYALPS
13304       DOUBLE PRECISION PYALPS
13305 C...Parameter statement for maximum size of showers.
13306       PARAMETER (MAXNUR=1000)
13307 C...Commonblocks.
13308       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
13309       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
13310       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
13311       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
13312       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
13313       COMMON/PYINT1/MINT(400),VINT(400)
13314       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
13315       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
13316       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
13317      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
13318      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
13319       COMMON/PYCTAG/NCT,MCT(4000,2)
13320       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
13321      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
13322       COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
13323 C...Local arrays and saved variables.
13324       DIMENSION VINTSV(11:80),KSAV(4,5),PSAV(4,5),VSAV(4,5),SHAT(240)
13325       SAVE NSAV,NPARTS,M15SV,M16SV,M21SV,M22SV,VINTSV,SHAT,ISUBHD,ALAM3
13326      &     ,PSAV,KSAV,VSAV
13327  
13328       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
13329      &     /PYINT2/,/PYINT3/,/PYINTM/,/PYCTAG/,/PYISMX/,/PYISJN/
13330  
13331 C----------------------------------------------------------------------
13332 C...MODE=-1: Pre-initialization. Store info on hard scattering etc,
13333 C...done only once per event, while MODE=0 is repeated each time the
13334 C...evolution needs to be restarted.
13335       IF (MODE.EQ.-1) THEN
13336         ISUBHD=MINT(1)
13337         NSAV=N
13338         NPARTS=NPART
13339 C...Store hard scattering variables
13340         M15SV=MINT(15)
13341         M16SV=MINT(16)
13342         M21SV=MINT(21)
13343         M22SV=MINT(22)
13344         DO 100 J=11,80
13345           VINTSV(J)=VINT(J)
13346   100   CONTINUE
13347         DO 120 J=1,5
13348           DO 110 IS=1,4
13349             I=IS+MINT(84)
13350             PSAV(IS,J)=P(I,J)
13351             KSAV(IS,J)=K(I,J)
13352             VSAV(IS,J)=V(I,J)
13353   110     CONTINUE
13354   120   CONTINUE
13355  
13356 C...Set shat for hardest scattering
13357         SHAT(1)=VINT(44)
13358         IF(ISET(ISUBHD).GE.3.AND.ISET(ISUBHD).LE.5) SHAT(1)=VINT(26)
13359      &       *VINT(2)
13360  
13361 C...Compute 3-Flavour Lambda_QCD (sets absolute lowest PT scale below)
13362         RMC=PMAS(4,1)
13363         RMB=PMAS(5,1)
13364         ALAM4=PARP(61)
13365         IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
13366         IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
13367         ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
13368  
13369 C----------------------------------------------------------------------
13370 C...MODE= 0: Initialize ISR/MI evolution, i.e. begin from hardest
13371 C...interaction initiators, with no previous evolution. Check the input
13372 C...PT2MAX and PT2MIN and impose extra constraints on minimum PT2 (e.g.
13373 C...must be larger than Lambda_QCD) and maximum PT2 (e.g. must be
13374 C...smaller than the CM energy / 2.)
13375       ELSEIF (MODE.EQ.0) THEN
13376 C...Reset counters and switches
13377         N=NSAV
13378         NPART=NPARTS
13379         MINT(30)=0
13380         MINT(31)=1
13381         MINT(36)=1
13382 C...Reset hard scattering variables
13383         MINT(1)=ISUBHD
13384         DO 130 J=11,80
13385           VINT(J)=VINTSV(J)
13386   130   CONTINUE
13387         DO 150 J=1,5
13388           DO 140 IS=1,4
13389             I=IS+MINT(84)
13390             P(I,J)=PSAV(IS,J)
13391             K(I,J)=KSAV(IS,J)
13392             V(I,J)=VSAV(IS,J)
13393             P(MINT(83)+4+IS,J)=PSAV(IS,J)
13394             V(MINT(83)+4+IS,J)=VSAV(IS,J)
13395   140     CONTINUE
13396   150   CONTINUE
13397 C...Reset statistics on activity in event.
13398         DO 160 J=351,359
13399           MINT(J)=0
13400           VINT(J)=0D0
13401   160   CONTINUE
13402 C...Reset extra companion reweighting factor
13403         VINT(140)=1D0
13404  
13405 C...We do not generate MI for soft process (ISUB=95), but the
13406 C...initialization must be done regardless, for later purposes.
13407         MINT(36)=1
13408  
13409 C...Initialize multiple interactions.
13410         CALL PYPTMI(-1,PTDUM1,PTDUM2,PTDUM3,IDUM)
13411         IF(MINT(51).NE.0) RETURN
13412  
13413 C...Decide whether quarks in hard scattering were valence or sea
13414         PT2HD=VINT(54)
13415         DO 170 JS=1,2
13416           MINT(30)=JS
13417           CALL PYPTMI(2,PT2HD,PTDUM2,PTDUM3,IDUM)
13418           IF(MINT(51).NE.0) RETURN
13419   170   CONTINUE
13420  
13421 C...Set lower cutoff for PT2 iteration and colour interference PT2 scale
13422         VINT(18)=0D0
13423         PT2MIN=MAX(PT2MIN,(1.1D0*ALAM3)**2)
13424         IF (MSTP(70).EQ.2) THEN
13425 C...VINT(18) is freezeout scale of alpha_s: alpha_eff(0) = alpha_s(VINT(18))
13426           VINT(18)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
13427         ELSEIF (MSTP(70).EQ.3) THEN
13428 C...MSTP(70) = 3 : Derive VINT(18) from alpha_eff(Lambda3) = PARP(73) 
13429           ALPHA0 = MAX(1D-6,PARP(73))
13430           Q20 = ALAM3**2/PARP(64)
13431           IF (MSTP(64).EQ.3) Q20 = Q20 * 1.661**2
13432           VINT(18) = Q20 * (EXP(12*PARU(1)/27D0/ALPHA0)-1D0)
13433         ENDIF
13434 C...Also store PT2MIN in VINT(17).
13435   180   VINT(17)=PT2MIN
13436  
13437 C...Set FS masses zero now.
13438         VINT(63)=0D0
13439         VINT(64)=0D0
13440  
13441 C...Initialize IS showers with VINT(56) as max scale.
13442         PT2ISR=VINT(56)
13443         PT20=PT2MIN
13444         IF (MSTP(70).EQ.0) THEN 
13445           PT20=MAX(PT2MIN,PARP(62)**2)
13446         ELSEIF (MSTP(70).EQ.1) THEN
13447           PT20=MAX(PT2MIN,(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2)
13448         ENDIF  
13449         CALL PYPTIS(-1,PT2ISR,PT20,PT2DUM,IFAIL)
13450         IF(MINT(51).NE.0) RETURN
13451  
13452         RETURN
13453  
13454 C----------------------------------------------------------------------
13455 C...MODE= 1: Evolve event from PTMAX to PTMIN.
13456       ELSEIF (MODE.EQ.1) THEN
13457  
13458 C...Skip if no phase space.
13459   190   IF (PT2MAX.LE.PT2MIN) GOTO 330
13460  
13461 C...Starting pT2 max scale (to be udpated successively).
13462         PT2CMX=PT2MAX
13463  
13464 C...Evolve two sides of the event to find which branches at highest pT.
13465   200   JSMX=-1
13466         MIMX=0
13467         PT2MX=0D0
13468  
13469 C...Loop over current shower initiators.
13470         IF (MSTP(61).GE.1) THEN
13471           DO 230 MI=1,MINT(31)
13472             IF (MI.GE.2.AND.MSTP(84).LE.0) GOTO 230
13473             ISUB=96
13474             IF (MI.EQ.1) ISUB=ISUBHD
13475             MINT(1)=ISUB
13476             MINT(36)=MI
13477 C...Set up shat, initiator x values, and x remaining in BR.
13478             VINT(44)=SHAT(MI)
13479             VINT(141)=XMI(1,MI)
13480             VINT(142)=XMI(2,MI)
13481             VINT(143)=1D0
13482             VINT(144)=1D0
13483             DO 210 JI=1,MINT(31)
13484               IF (JI.EQ.MINT(36)) GOTO 210
13485               VINT(143)=VINT(143)-XMI(1,JI)
13486               VINT(144)=VINT(144)-XMI(2,JI)
13487   210       CONTINUE
13488 C...Loop over sides.
13489 C...Generate trial branchings for this interaction. The hardest
13490 C...branching so far is automatically updated if necessary in /PYISMX/.
13491             DO 220 JS=1,2
13492               MINT(30)=JS
13493               PT20=PT2MIN
13494               IF (MSTP(70).EQ.0) THEN 
13495                 PT20=MAX(PT2MIN,PARP(62)**2)
13496               ELSEIF (MSTP(70).EQ.1) THEN
13497                 PT20=MAX(PT2MIN,
13498      &              (PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2)
13499               ENDIF  
13500               CALL PYPTIS(0,PT2CMX,PT20,PT2NEW,IFAIL)
13501               IF (MINT(51).NE.0) RETURN
13502   220       CONTINUE
13503   230     CONTINUE
13504         ENDIF
13505  
13506 C...Generate trial additional interaction.
13507         MINT(36)=MINT(31)+1
13508   240   IF (MOD(MSTP(81),10).GE.1) THEN
13509           MINT(1)=96
13510 C...Set up X remaining in BR.
13511           VINT(143)=1D0
13512           VINT(144)=1D0
13513           DO 250 JI=1,MINT(31)
13514             VINT(143)=VINT(143)-XMI(1,JI)
13515             VINT(144)=VINT(144)-XMI(2,JI)
13516   250     CONTINUE
13517 C...Generate trial interaction
13518   260     CALL PYPTMI(0,PT2CMX,PT2MIN,PT2NEW,IFAIL)
13519           IF (MINT(51).EQ.1) RETURN
13520         ENDIF
13521  
13522 C...And the winner is:
13523         IF (PT2MX.LT.PT2MIN) THEN
13524           GOTO 330
13525         ELSEIF (JSMX.EQ.0) THEN
13526 C...Accept additional interaction (may still fail).
13527           CALL PYPTMI(1,PT2NEW,PT2MIN,PT2DUM,IFAIL)
13528           IF(MINT(51).NE.0) RETURN
13529           IF (IFAIL.EQ.0) THEN
13530             SHAT(MINT(36))=VINT(44)
13531 C...Decide on flavours (valence/sea/companion).
13532             DO 270 JS=1,2
13533               MINT(30)=JS
13534               CALL PYPTMI(2,PT2NEW,PT2MIN,PT2DUM,IFAIL)
13535               IF(MINT(51).NE.0) RETURN
13536   270       CONTINUE
13537           ENDIF
13538         ELSEIF (JSMX.EQ.1.OR.JSMX.EQ.2) THEN
13539 C...Reconstruct kinematics of acceptable ISR branching.
13540 C...Set up shat, initiator x values, and x remaining in BR.
13541           MINT(30)=JSMX
13542           MINT(36)=MIMX
13543           VINT(44)=SHAT(MINT(36))
13544           VINT(141)=XMI(1,MINT(36))
13545           VINT(142)=XMI(2,MINT(36))
13546           VINT(143)=1D0
13547           VINT(144)=1D0
13548           DO 280 JI=1,MINT(31)
13549             IF (JI.EQ.MINT(36)) GOTO 280
13550             VINT(143)=VINT(143)-XMI(1,JI)
13551             VINT(144)=VINT(144)-XMI(2,JI)
13552   280     CONTINUE
13553           PT2NEW=PT2MX
13554           CALL PYPTIS(1,PT2NEW,PT2DM1,PT2DM2,IFAIL)
13555           IF (MINT(51).EQ.1) RETURN
13556         ELSEIF (JSMX.EQ.3.OR.JSMX.EQ.4) THEN
13557 C...Bookeep joining. Cannot (yet) be constructed kinematically.
13558           MINT(354)=MINT(354)+1
13559           VINT(354)=VINT(354)+SQRT(PT2MX)
13560           IF (MINT(354).EQ.1) VINT(359)=SQRT(PT2MX)
13561           MJOIND(JSMX-2,MJN1MX)=MJN2MX
13562           MJOIND(JSMX-2,MJN2MX)=MJN1MX
13563         ENDIF
13564  
13565 C...Update PT2 iteration scale.
13566         PT2CMX=PT2MX
13567  
13568 C...Loop back to continue evolution.
13569         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
13570           CALL PYERRM(11,'(PYEVOL:) no more memory left in PYJETS')
13571         ELSE
13572           IF (JSMX.GE.0.AND.PT2CMX.GE.PT2MIN) GOTO 200
13573         ENDIF
13574  
13575 C----------------------------------------------------------------------
13576 C...MODE= 2: (Re-)store user information on hardest interaction etc.
13577       ELSEIF (MODE.EQ.2) THEN
13578  
13579 C...Revert to "ordinary" meanings of some parameters.
13580   290   DO 310 JS=1,2
13581           MINT(12+JS)=K(IMI(JS,1,1),2)
13582           VINT(140+JS)=XMI(JS,1)
13583           IF(MINT(18+JS).EQ.1) VINT(140+JS)=VINT(154+JS)*XMI(JS,1)
13584           VINT(142+JS)=1D0
13585           DO 300 MI=1,MINT(31)
13586             VINT(142+JS)=VINT(142+JS)-XMI(JS,MI)
13587   300     CONTINUE
13588   310   CONTINUE
13589  
13590 C...Restore saved quantities for hardest interaction.
13591         MINT(1)=ISUBHD
13592         MINT(15)=M15SV
13593         MINT(16)=M16SV
13594         MINT(21)=M21SV
13595         MINT(22)=M22SV
13596         DO 320 J=11,80
13597           VINT(J)=VINTSV(J)
13598   320   CONTINUE
13599  
13600       ENDIF
13601  
13602   330 RETURN
13603       END
13604 
13605 C*********************************************************************
13606  
13607 C...PYSSPA
13608 C...Generates spacelike parton showers.
13609  
13610       SUBROUTINE PYSSPA(IPU1,IPU2)
13611  
13612 C...Double precision and integer declarations.
13613       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
13614       IMPLICIT INTEGER(I-N)
13615       INTEGER PYK,PYCHGE,PYCOMP
13616       PARAMETER (MAXNUR=1000)
13617 C...Commonblocks.
13618       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
13619       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
13620       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
13621       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
13622       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
13623       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
13624       COMMON/PYINT1/MINT(400),VINT(400)
13625       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
13626       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
13627       COMMON/PYCTAG/NCT,MCT(4000,2)
13628       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,
13629      &/PYINT1/,/PYINT2/,/PYINT3/,/PYCTAG/
13630 C...Local arrays and data.
13631       DIMENSION KFLS(4),IS(2),XS(2),ZS(2),Q2S(2),TEVCSV(2),TEVESV(2),
13632      &XFS(2,-25:25),XFA(-25:25),XFB(-25:25),XFN(-25:25),WTAPC(-25:25),
13633      &WTAPE(-25:25),WTSF(-25:25),THE2(2),ALAM(2),DQ2(3),DPC(3),DPD(4),
13634      &DPB(4),ROBO(5),MORE(2),KFBEAM(2),Q2MNCS(2),KCFI(2),NFIS(2),
13635      &THEFIS(2,2),ISFI(2),DPHI(2),MCESV(2)
13636       DATA IS/2*0/
13637  
13638 C...Read out basic information; set global Q^2 scale.
13639       IPUS1=IPU1
13640       IPUS2=IPU2
13641       ISUB=MINT(1)
13642       Q2MX=VINT(56)
13643       VINT2R=VINT(2)*VINT(143)*VINT(144)
13644       IF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.9.OR.ISET(ISUB).EQ.11) Q2MX=
13645      &MIN(VINT2R,PARP(67)*VINT(56))
13646       FCQ2MX=1D0
13647  
13648 C...Define which processes ME corrections have been implemented for.
13649       MECOR=0
13650       IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
13651         IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ.142.OR.
13652      &  ISUB.EQ.144) MECOR=1
13653         IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
13654         IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
13655       ENDIF
13656  
13657 C...Initialize QCD evolution and check phase space.
13658       Q2MNC=PARP(62)**2
13659       Q2MNCS(1)=Q2MNC
13660       Q2MNCS(2)=Q2MNC
13661       IF(MINT(107).EQ.2.AND.MSTP(66).EQ.2) THEN
13662         Q0S=PARP(15)**2
13663         PS=VINT(3)**2
13664         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
13665      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
13666         Q2INT=SQRT(Q0S*Q2EFF)
13667         Q2MNCS(1)=MAX(Q2MNC,Q2INT)
13668       ELSEIF(MINT(107).EQ.3.AND.MSTP(66).GE.1) THEN
13669         Q2MNCS(1)=MAX(Q2MNC,VINT(283))
13670       ENDIF
13671       IF(MINT(108).EQ.2.AND.MSTP(66).EQ.2) THEN
13672         Q0S=PARP(15)**2
13673         PS=VINT(4)**2
13674         Q2EFF=VINT(54)*((Q0S+PS)/(VINT(54)+PS))*
13675      &  EXP(PS*(VINT(54)-Q0S)/((VINT(54)+PS)*(Q0S+PS)))
13676         Q2INT=SQRT(Q0S*Q2EFF)
13677         Q2MNCS(2)=MAX(Q2MNC,Q2INT)
13678       ELSEIF(MINT(108).EQ.3.AND.MSTP(66).GE.1) THEN
13679         Q2MNCS(2)=MAX(Q2MNC,VINT(284))
13680       ENDIF
13681       MCEV=0
13682       ALAMS=PARU(112)
13683       PARU(112)=PARP(61)
13684       FQ2C=1D0
13685       TCMX=0D0
13686       IF(MINT(47).GE.2.AND.(MINT(47).LT.5.OR.MSTP(12).GE.1)) THEN
13687         MCEV=1
13688         IF(MSTP(64).EQ.1) FQ2C=PARP(63)
13689         IF(MSTP(64).EQ.2) FQ2C=PARP(64)
13690         TCMX=LOG(FQ2C*Q2MX/PARP(61)**2)
13691         IF(Q2MX.LT.MAX(Q2MNC,2D0*PARP(61)**2).OR.TCMX.LT.0.2D0)
13692      &  MCEV=0
13693       ENDIF
13694  
13695 C...Initialize QED evolution and check phase space.
13696       MEEV=0
13697       XEE=1D-10
13698       SPME=PMAS(11,1)**2
13699       IF(IABS(MINT(11)).EQ.13.OR.IABS(MINT(12)).EQ.13)
13700      &SPME=PMAS(13,1)**2
13701       IF(IABS(MINT(11)).EQ.15.OR.IABS(MINT(12)).EQ.15)
13702      &SPME=PMAS(15,1)**2
13703       Q2MNE=MAX(PARP(68)**2,2D0*SPME)
13704       TEMX=0D0
13705       FWTE=10D0
13706       IF(MINT(45).EQ.3.OR.MINT(46).EQ.3) THEN
13707         MEEV=1
13708         TEMX=LOG(Q2MX/SPME)
13709         IF(Q2MX.LE.Q2MNE.OR.TEMX.LT.0.2D0) MEEV=0
13710       ENDIF
13711       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0) THEN
13712         MEEV=2
13713         TEMX=TCMX
13714         FWTE=1D0
13715       ENDIF
13716       IF(MCEV.EQ.0.AND.MEEV.EQ.0) RETURN
13717  
13718 C...Loopback point in case of failure to reconstruct kinematics.
13719       NS=N
13720       NPARTS=NPART
13721       LOOP=0      
13722       MNT352=MINT(352)
13723       MNT353=MINT(353)
13724       VNT352=VINT(352)
13725       VNT353=VINT(353)
13726   100 LOOP=LOOP+1
13727       IF(LOOP.GT.100) THEN
13728         MINT(51)=1
13729         RETURN
13730       ENDIF
13731       N=NS
13732       NPART=NPARTS
13733       MINT(352)=MNT352
13734       MINT(353)=MNT353
13735       VINT(352)=VNT352
13736       VINT(353)=VNT353
13737  
13738 C...Initial values: flavours, momenta, virtualities.
13739       DO 120 JT=1,2
13740         MORE(JT)=1
13741         KFBEAM(JT)=MINT(10+JT)
13742         IF(MINT(18+JT).EQ.1)KFBEAM(JT)=22
13743         KFLS(JT)=MINT(14+JT)
13744         KFLS(JT+2)=KFLS(JT)
13745         XS(JT)=VINT(40+JT)
13746         IF(MINT(18+JT).EQ.1) XS(JT)=VINT(40+JT)/VINT(154+JT)
13747         IF(MINT(31).GE.2) XS(JT)=XS(JT)/VINT(142+JT)
13748         ZS(JT)=1D0
13749         Q2S(JT)=FCQ2MX*Q2MX
13750         DQ2(JT)=0D0
13751         TEVCSV(JT)=TCMX
13752         ALAM(JT)=PARP(61)
13753         THE2(JT)=1D0
13754         TEVESV(JT)=TEMX
13755         MCESV(JT)=0
13756 C...Calculate initial parton distribution weights.
13757         MINT(105)=MINT(102+JT)
13758         MINT(109)=MINT(106+JT)
13759         VINT(120)=VINT(2+JT)
13760         IF(XS(JT).LT.1D0-XEE) THEN
13761           IF(MINT(31).GE.2) MINT(30)=JT
13762           IF(MSTP(57).LE.1) THEN
13763             CALL PYPDFU(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
13764           ELSE
13765             CALL PYPDFL(KFBEAM(JT),XS(JT),Q2S(JT),XFB)
13766           ENDIF
13767         ENDIF
13768         DO 110 KFL=-25,25
13769           XFS(JT,KFL)=XFB(KFL)
13770   110   CONTINUE
13771 C...Special kinematics check for c/b quarks (that g -> c cbar or
13772 C...b bbar kinematically possible).
13773       KFLCB=IABS(KFLS(JT))
13774       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
13775         IF(XS(JT).GT.0.9D0*Q2S(JT)/(PMAS(KFLCB,1)**2+Q2S(JT))) THEN
13776           MINT(51)=1
13777           RETURN
13778         ENDIF
13779       ENDIF
13780   120 CONTINUE
13781       DSH=VINT(44)
13782       IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) DSH=VINT(26)*VINT(2)
13783  
13784 C...Find if interference with final state partons.
13785       MFIS=0
13786       IF(MSTP(67).GE.1.AND.MSTP(67).LE.3) MFIS=MSTP(67)
13787       IF(MFIS.NE.0) THEN
13788         DO 140 I=1,2
13789           KCFI(I)=0
13790           KCA=PYCOMP(IABS(KFLS(I)))
13791           IF(KCA.NE.0) KCFI(I)=KCHG(KCA,2)*ISIGN(1,KFLS(I))
13792           NFIS(I)=0
13793           IF(KCFI(I).NE.0) THEN
13794             IF(I.EQ.1) IPFS=IPUS1
13795             IF(I.EQ.2) IPFS=IPUS2
13796             DO 130 J=1,2
13797               ICSI=MOD(K(IPFS,3+J),MSTU(5))
13798               IF(ICSI.GT.0.AND.ICSI.NE.IPUS1.AND.ICSI.NE.IPUS2.AND.
13799      &        (KCFI(I).EQ.(-1)**(J+1).OR.KCFI(I).EQ.2)) THEN
13800                 NFIS(I)=NFIS(I)+1
13801                 THEFIS(I,NFIS(I))=PYANGL(P(ICSI,3),SQRT(P(ICSI,1)**2+
13802      &          P(ICSI,2)**2))
13803                 IF(I.EQ.2) THEFIS(I,NFIS(I))=PARU(1)-THEFIS(I,NFIS(I))
13804               ENDIF
13805   130       CONTINUE
13806           ENDIF
13807   140   CONTINUE
13808         IF(NFIS(1)+NFIS(2).EQ.0) MFIS=0
13809       ENDIF
13810  
13811 C...Pick up leg with highest virtuality.
13812       JTOLD=1
13813   150 N=N+1
13814       JT=1
13815       IF(N.GT.NS+1.AND.Q2S(2).GT.Q2S(1)) JT=2
13816       IF(N.EQ.NS+2.AND.JT.EQ.JTOLD) JT=3-JT
13817       IF(MORE(JT).EQ.0) JT=3-JT
13818       JTOLD=JT
13819       KFLB=KFLS(JT)
13820       XB=XS(JT)
13821       DO 160 KFL=-25,25
13822         XFB(KFL)=XFS(JT,KFL)
13823   160 CONTINUE
13824       DSHR=2D0*SQRT(DSH)
13825       DSHZ=DSH/ZS(JT)
13826  
13827 C...Check if allowed to branch.
13828       MCEV=0
13829       IF(IABS(KFLB).LE.10.OR.KFLB.EQ.21) THEN
13830         MCEV=1
13831         XEC=MAX(PARP(65)*DSHR/VINT2R,XB*(1D0/(1D0-PARP(66))-1D0))
13832         IF(XB.GE.1D0-2D0*XEC) MCEV=0
13833       ENDIF
13834       MEEV=0
13835       IF(MINT(44+JT).EQ.3) THEN
13836         MEEV=1
13837         IF(XB.GE.1D0-2D0*XEE) MEEV=0
13838         IF((IABS(KFLB).LE.10.OR.KFLB.EQ.21).AND.XB.GE.1D0-2D0*XEC)
13839      &  MEEV=0
13840 C***Currently kill QED shower for resolved photoproduction.
13841         IF(MINT(18+JT).EQ.1) MEEV=0
13842 C***Currently kill shower for W inside electron.
13843         IF(IABS(KFLB).EQ.24) THEN
13844           MCEV=0
13845           MEEV=0
13846         ENDIF
13847       ENDIF
13848       IF(MSTP(61).GE.2.AND.MCEV.EQ.1.AND.MEEV.EQ.0.AND.IABS(KFLB).LE.10)
13849      &MEEV=2
13850       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
13851         Q2B=0D0
13852         GOTO 260
13853       ENDIF
13854  
13855 C...Maximum Q2 with or without Q2 ordering. Effective Lambda and n_f.
13856       Q2B=Q2S(JT)
13857       TEVCB=TEVCSV(JT)
13858       TEVEB=TEVESV(JT)
13859       IF(MSTP(62).LE.1) THEN
13860         IF(ZS(JT).GT.0.99999D0) THEN
13861           Q2B=Q2S(JT)
13862         ELSE
13863           Q2B=0.5D0*(1D0/ZS(JT)+1D0)*Q2S(JT)+0.5D0*(1D0/ZS(JT)-1D0)*
13864      &    (Q2S(3-JT)-DSH+SQRT((DSH+Q2S(1)+Q2S(2))**2+
13865      &    8D0*Q2S(1)*Q2S(2)*ZS(JT)/(1D0-ZS(JT))))
13866         ENDIF
13867         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
13868         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
13869       ENDIF
13870       IF(MCEV.EQ.1) THEN
13871         ALSDUM=PYALPS(FQ2C*Q2B)
13872         TEVCB=TEVCB+2D0*LOG(ALAM(JT)/PARU(117))
13873         ALAM(JT)=PARU(117)
13874         B0=(33D0-2D0*MSTU(118))/6D0
13875       ENDIF
13876       IF(MEEV.EQ.2) TEVEB=TEVCB
13877       TEVCBS=TEVCB
13878       TEVEBS=TEVEB
13879  
13880 C...Select side for interference with final state partons.
13881       IF(MFIS.GE.1.AND.N.LE.NS+2) THEN
13882         IFI=N-NS
13883         ISFI(IFI)=0
13884         IF(IABS(KCFI(IFI)).EQ.1.AND.NFIS(IFI).EQ.1) THEN
13885           ISFI(IFI)=1
13886         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.1) THEN
13887           IF(PYR(0).GT.0.5D0) ISFI(IFI)=1
13888         ELSEIF(KCFI(IFI).EQ.2.AND.NFIS(IFI).EQ.2) THEN
13889           ISFI(IFI)=1
13890           IF(PYR(0).GT.0.5D0) ISFI(IFI)=2
13891         ENDIF
13892       ENDIF
13893  
13894 C...Calculate preweighting factor for ME-corrected processes.
13895       IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
13896  
13897 C...Calculate Altarelli-Parisi weights.
13898       DO 170 KFL=-25,25
13899         WTAPC(KFL)=0D0
13900         WTAPE(KFL)=0D0
13901         WTSF(KFL)=0D0
13902   170 CONTINUE
13903 C...q -> q (g or gamma emission), g -> q.
13904       IF(IABS(KFLB).LE.10) THEN
13905         WTAPC(KFLB)=(8D0/3D0)*LOG((1D0-XEC-XB)*(XB+XEC)/(XEC*(1D0-XEC)))
13906         WTAPC(21)=0.5D0*(XB/(XB+XEC)-XB/(1D0-XEC))
13907         EQ2=1D0/9D0
13908         IF(MOD(IABS(KFLB),2).EQ.0) EQ2=4D0*EQ2
13909         IF(MEEV.EQ.2) WTAPE(KFLB)=2.*EQ2*LOG((1D0-XEC-XB)*(XB+XEC)/
13910      &  (XEC*(1D0-XEC)))
13911         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13912           WTAPC(KFLB)=WTFF*WTAPC(KFLB)
13913           WTAPC(21)=WTGF*WTAPC(21)
13914           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
13915         ENDIF
13916 C...f -> f, gamma -> f.
13917       ELSEIF(IABS(KFLB).LE.20) THEN
13918         WTAPF1=LOG((1D0-XEE-XB)*(XB+XEE)/(XEE*(1D0-XEE)))
13919         WTAPF2=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))
13920         WTAPE(KFLB)=2D0*(WTAPF1+WTAPF2)
13921         IF(MSTP(12).GE.1) WTAPE(22)=XB/(XB+XEE)-XB/(1D0-XEE)
13922         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13923           WTAPE(KFLB)=WTFF*WTAPE(KFLB)
13924           WTAPE(22)=WTGF*WTAPE(22)
13925         ENDIF
13926 C...f -> g, g -> g.
13927       ELSEIF(KFLB.EQ.21) THEN
13928         WTAPQ=(16D0/3D0)*(SQRT((1D0-XEC)/XB)-SQRT((XB+XEC)/XB))
13929         DO 180 KFL=1,MSTP(58)
13930           WTAPC(KFL)=WTAPQ
13931           WTAPC(-KFL)=WTAPQ
13932   180   CONTINUE
13933         WTAPC(21)=6D0*LOG((1D0-XEC-XB)/XEC)
13934         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13935           DO 190 KFL=1,MSTP(58)
13936             WTAPC(KFL)=WTFG*WTAPC(KFL)
13937             WTAPC(-KFL)=WTFG*WTAPC(-KFL)
13938   190     CONTINUE
13939           WTAPC(21)=WTGG*WTAPC(21)
13940         ENDIF
13941 C...f -> gamma, W+, W-.
13942       ELSEIF(KFLB.EQ.22) THEN
13943         WTAPF=LOG((1D0-XEE-XB)*(1D0-XEE)/(XEE*(XB+XEE)))/XB
13944         WTAPE(11)=WTAPF
13945         WTAPE(-11)=WTAPF
13946         IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
13947           WTAPE(11)=WTFG*WTAPE(11)
13948           WTAPE(-11)=WTFG*WTAPE(-11)
13949         ENDIF
13950       ELSEIF(KFLB.EQ.24) THEN
13951         WTAPE(-11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
13952      &  (XEE*(XB+XEE)))/XB
13953       ELSEIF(KFLB.EQ.-24) THEN
13954         WTAPE(11)=1D0/(4D0*PARU(102))*LOG((1D0-XEE-XB)*(1D0-XEE)/
13955      &  (XEE*(XB+XEE)))/XB
13956       ENDIF
13957  
13958 C...Calculate parton distribution weights and sum.
13959       NTRY=0
13960   200 NTRY=NTRY+1
13961       IF(NTRY.GT.500) THEN
13962         MINT(51)=1
13963         RETURN
13964       ENDIF
13965       WTSUMC=0D0
13966       WTSUME=0D0
13967       XFBO=MAX(1D-10,XFB(KFLB))
13968       DO 210 KFL=-25,25
13969         WTSF(KFL)=XFB(KFL)/XFBO
13970         WTSUMC=WTSUMC+WTAPC(KFL)*WTSF(KFL)
13971         WTSUME=WTSUME+WTAPE(KFL)*WTSF(KFL)
13972   210 CONTINUE
13973       WTSUMC=MAX(0.0001D0,WTSUMC)
13974       WTSUME=MAX(0.0001D0/FWTE,WTSUME)
13975  
13976 C...Choose new t: fix alpha_s, alpha_s(Q^2), alpha_s(k_T^2).
13977       NTRY2=0
13978   220 NTRY2=NTRY2+1
13979       IF(NTRY2.GT.500) THEN
13980         MINT(51)=1
13981         RETURN
13982       ENDIF
13983       IF(MCEV.EQ.1) THEN
13984         IF(MSTP(64).LE.0) THEN
13985           TEVCB=TEVCB+LOG(PYR(0))*PARU(2)/(PARU(111)*WTSUMC)
13986         ELSEIF(MSTP(64).EQ.1) THEN
13987           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/WTSUMC))
13988         ELSE
13989           TEVCB=TEVCB*EXP(MAX(-50D0,LOG(PYR(0))*B0/(5D0*WTSUMC)))
13990         ENDIF
13991       ENDIF
13992       IF(MEEV.EQ.1) THEN
13993         TEVEB=TEVEB*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
13994      &  (PARU(101)*FWTE*WTSUME*TEMX)))
13995       ELSEIF(MEEV.EQ.2) THEN
13996         TEVEB=TEVEB+LOG(PYR(0))*PARU(2)/(PARU(101)*WTSUME)
13997       ENDIF
13998  
13999 C...Translate t into Q2 scale; choose between QCD and QED evolution.
14000   230 IF(MCEV.EQ.1) Q2CB=ALAM(JT)**2*EXP(MAX(-50D0,TEVCB))/FQ2C
14001       IF(MEEV.EQ.1) Q2EB=SPME*EXP(MAX(-50D0,TEVEB))
14002       IF(MEEV.EQ.2) Q2EB=ALAM(JT)**2*EXP(MAX(-50D0,TEVEB))/FQ2C
14003 C...Ensure that Q2 is above threshold for charm/bottom.
14004       KFLCB=IABS(KFLB)
14005       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
14006      &MCEV.EQ.1) THEN
14007         IF(Q2CB.LT.PMAS(KFLCB,1)**2) THEN
14008           Q2CB=1.1D0*PMAS(KFLCB,1)**2
14009           TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
14010           FCQ2MX=MIN(2D0,1.05D0*FCQ2MX)
14011         ENDIF
14012       ENDIF
14013       IF(KFBEAM(JT).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5).AND.
14014      &MEEV.EQ.2) THEN
14015         IF(Q2EB.LT.PMAS(KFLCB,1)**2) MEEV=0
14016       ENDIF
14017       MCE=0
14018       IF(MCEV.EQ.0.AND.MEEV.EQ.0) THEN
14019       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.0) THEN
14020         IF(Q2CB.GT.Q2MNCS(JT)) MCE=1
14021       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.1) THEN
14022         IF(Q2EB.GT.Q2MNE) MCE=2
14023       ELSEIF(MCEV.EQ.0.AND.MEEV.EQ.2) THEN
14024         IF(Q2EB.GT.Q2MNCS(JT)) MCE=2
14025       ELSEIF(MCEV.EQ.1.AND.MEEV.EQ.2) THEN
14026         IF(Q2CB.GT.Q2EB.AND.Q2CB.GT.Q2MNCS(JT)) MCE=1
14027         IF(Q2EB.GT.Q2CB.AND.Q2EB.GT.Q2MNCS(JT)) MCE=2
14028       ELSEIF(Q2MNCS(JT).GT.Q2MNE) THEN
14029         MCE=1
14030         IF(Q2EB.GT.Q2CB.OR.Q2CB.LE.Q2MNCS(JT)) MCE=2
14031         IF(MCE.EQ.2.AND.Q2EB.LE.Q2MNE) MCE=0
14032       ELSE
14033         MCE=2
14034         IF(Q2CB.GT.Q2EB.OR.Q2EB.LE.Q2MNE) MCE=1
14035         IF(MCE.EQ.1.AND.Q2CB.LE.Q2MNCS(JT)) MCE=0
14036       ENDIF
14037  
14038 C...Evolution possibly ended. Update t values.
14039       IF(MCE.EQ.0) THEN
14040         Q2B=0D0
14041         GOTO 260
14042       ELSEIF(MCE.EQ.1) THEN
14043         Q2B=Q2CB
14044         Q2REF=FQ2C*Q2B
14045         IF(MEEV.EQ.1) TEVEB=LOG(Q2B/SPME)
14046         IF(MEEV.EQ.2) TEVEB=LOG(FQ2C*Q2B/ALAM(JT)**2)
14047       ELSE
14048         Q2B=Q2EB
14049         Q2REF=Q2B
14050         IF(MCEV.EQ.1) TEVCB=LOG(FQ2C*Q2B/ALAM(JT)**2)
14051       ENDIF
14052  
14053 C...Select flavour for branching parton.
14054       IF(MCE.EQ.1) WTRAN=PYR(0)*WTSUMC
14055       IF(MCE.EQ.2) WTRAN=PYR(0)*WTSUME
14056       KFLA=-25
14057   240 KFLA=KFLA+1
14058       IF(MCE.EQ.1) WTRAN=WTRAN-WTAPC(KFLA)*WTSF(KFLA)
14059       IF(MCE.EQ.2) WTRAN=WTRAN-WTAPE(KFLA)*WTSF(KFLA)
14060       IF(KFLA.LE.24.AND.WTRAN.GT.0D0) GOTO 240
14061       IF(KFLA.EQ.25) THEN
14062         Q2B=0D0
14063         GOTO 260
14064       ENDIF
14065  
14066 C...Choose z value and corrective weight.
14067       WTZ=0D0
14068 C...q -> q + g or q -> q + gamma.
14069       IF(IABS(KFLA).LE.10.AND.IABS(KFLB).LE.10) THEN
14070         Z=1D0-((1D0-XB-XEC)/(1D0-XEC))*
14071      &  (XEC*(1D0-XEC)/((XB+XEC)*(1D0-XB-XEC)))**PYR(0)
14072         WTZ=0.5D0*(1D0+Z**2)
14073 C...q -> g + q.
14074       ELSEIF(IABS(KFLA).LE.10.AND.KFLB.EQ.21) THEN
14075         Z=XB/(SQRT(XB+XEC)+PYR(0)*(SQRT(1D0-XEC)-SQRT(XB+XEC)))**2
14076         WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
14077 C...f -> f + gamma.
14078       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
14079         IF(WTAPF1.GT.PYR(0)*(WTAPF1+WTAPF2)) THEN
14080           Z=1D0-((1D0-XB-XEE)/(1D0-XEE))*
14081      &    (XEE*(1D0-XEE)/((XB+XEE)*(1D0-XB-XEE)))**PYR(0)
14082         ELSE
14083           Z=XB+XB*(XEE/(1D0-XEE))*
14084      &    ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
14085         ENDIF
14086         WTZ=0.5D0*(1D0+Z**2)*(Z-XB)/(1D0-XB)
14087 C...f -> gamma + f.
14088       ELSEIF(IABS(KFLA).LE.20.AND.KFLB.EQ.22) THEN
14089         Z=XB+XB*(XEE/(1D0-XEE))*
14090      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
14091         WTZ=0.5D0*(1D0+(1D0-Z)**2)*XB*(Z-XB)/Z
14092 C...f -> W+- + f.
14093       ELSEIF(IABS(KFLA).LE.20.AND.IABS(KFLB).EQ.24) THEN
14094         Z=XB+XB*(XEE/(1D0-XEE))*
14095      &  ((1D0-XB-XEE)*(1D0-XEE)/(XEE*(XB+XEE)))**PYR(0)
14096         WTZ=0.5D0*(1D0+(1D0-Z)**2)*(XB*(Z-XB)/Z)*
14097      &  (Q2B/(Q2B+PMAS(24,1)**2))
14098 C...g -> q + qbar.
14099       ELSEIF(KFLA.EQ.21.AND.IABS(KFLB).LE.10) THEN
14100         Z=XB/(1D0-XEC)+PYR(0)*(XB/(XB+XEC)-XB/(1D0-XEC))
14101         WTZ=1D0-2D0*Z*(1D0-Z)
14102 C...g -> g + g.
14103       ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
14104         Z=1D0/(1D0+((1D0-XEC-XB)/XB)*(XEC/(1D0-XEC-XB))**PYR(0))
14105         WTZ=(1D0-Z*(1D0-Z))**2
14106 C...gamma -> f + fbar.
14107       ELSEIF(KFLA.EQ.22.AND.IABS(KFLB).LE.20) THEN
14108         Z=XB/(1D0-XEE)+PYR(0)*(XB/(XB+XEE)-XB/(1D0-XEE))
14109         WTZ=1D0-2D0*Z*(1D0-Z)
14110       ENDIF
14111       IF(MCE.EQ.2.AND.MEEV.EQ.1) WTZ=(WTZ/FWTE)*(TEVEB/TEMX)
14112  
14113 C...Option with resummation of soft gluon emission as effective z shift.
14114       IF(MCE.EQ.1) THEN
14115         IF(MSTP(65).GE.1) THEN
14116           RSOFT=6D0
14117           IF(KFLB.NE.21) RSOFT=8D0/3D0
14118           Z=Z*(TEVCB/TEVCSV(JT))**(RSOFT*XEC/((XB+XEC)*B0))
14119           IF(Z.LE.XB) GOTO 220
14120         ENDIF
14121  
14122 C...Option with alpha_s(k_T^2): demand k_T^2 > cutoff, reweight.
14123         IF(MSTP(64).GE.2) THEN
14124           IF((1D0-Z)*Q2B.LT.Q2MNCS(JT)) GOTO 220
14125           ALPRAT=TEVCB/(TEVCB+LOG(1D0-Z))
14126           IF(ALPRAT.LT.5D0*PYR(0)) GOTO 220
14127           IF(ALPRAT.GT.5D0) WTZ=WTZ*ALPRAT/5D0
14128         ENDIF
14129       ENDIF
14130  
14131 C...Remove kinematically impossible branchings.
14132       UHAT=Q2B-DSH*(1D0-Z)/Z
14133       IF(MSTP(68).GE.0.AND.UHAT.GT.0D0) GOTO 220
14134  
14135 C...Select phi angle of branching at random.
14136       PHIBR=PARU(2)*PYR(0)
14137  
14138 C...Matrix-element corrections for some processes.
14139       IF(MECOR.GE.1.AND.(N.EQ.NS+1.OR.N.EQ.NS+2)) THEN
14140         IF(IABS(KFLA).LE.20.AND.IABS(KFLB).LE.20) THEN
14141           CALL PYMEWT(MECOR,1,Q2B,Z,PHIBR,WTME)
14142           WTZ=WTZ*WTME/WTFF
14143         ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.IABS(KFLB).LE.20) THEN
14144           CALL PYMEWT(MECOR,2,Q2B,Z,PHIBR,WTME)
14145           WTZ=WTZ*WTME/WTGF
14146         ELSEIF(IABS(KFLA).LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
14147           CALL PYMEWT(MECOR,3,Q2B,Z,PHIBR,WTME)
14148           WTZ=WTZ*WTME/WTFG
14149         ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
14150           CALL PYMEWT(MECOR,4,Q2B,Z,PHIBR,WTME)
14151           WTZ=WTZ*WTME/WTGG
14152         ENDIF
14153       ENDIF
14154  
14155 C...Impose angular constraint in first branching from interference
14156 C...with final state partons.
14157       IF(MCE.EQ.1) THEN
14158         IF(MFIS.GE.1.AND.N.LE.NS+2.AND.NTRY2.LT.200) THEN
14159           THE2D=(4D0*Q2B)/(DSH*(1D0-Z))
14160           IF(N.EQ.NS+1.AND.ISFI(1).GE.1) THEN
14161             IF(THE2D.GT.THEFIS(1,ISFI(1))**2) GOTO 220
14162           ELSEIF(N.EQ.NS+2.AND.ISFI(2).GE.1) THEN
14163             IF(THE2D.GT.THEFIS(2,ISFI(2))**2) GOTO 220
14164           ENDIF
14165         ENDIF
14166  
14167 C...Option with angular ordering requirement.
14168         IF(MSTP(62).GE.3.AND.NTRY2.LT.200) THEN
14169           THE2T=(4D0*Z**2*Q2B)/(4D0*Z**2*Q2B+(1D0-Z)*XB**2*VINT2R)
14170           IF(THE2T.GT.THE2(JT)) GOTO 220
14171         ENDIF
14172       ENDIF
14173  
14174 C...Weighting with new parton distributions.
14175       MINT(105)=MINT(102+JT)
14176       MINT(109)=MINT(106+JT)
14177       VINT(120)=VINT(2+JT)
14178       IF(MINT(31).GE.2) MINT(30)=JT
14179       IF(MSTP(57).LE.1) THEN
14180         CALL PYPDFU(KFBEAM(JT),XB,Q2REF,XFN)
14181       ELSE
14182         CALL PYPDFL(KFBEAM(JT),XB,Q2REF,XFN)
14183       ENDIF
14184       XFBN=XFN(KFLB)
14185       IF(XFBN.LT.1D-20) THEN
14186         IF(KFLA.EQ.KFLB) THEN
14187           TEVCB=TEVCBS
14188           TEVEB=TEVEBS
14189           WTAPC(KFLB)=0D0
14190           WTAPE(KFLB)=0D0
14191           GOTO 200
14192         ELSEIF(MCE.EQ.1.AND.TEVCBS-TEVCB.GT.0.2D0) THEN
14193           TEVCB=0.5D0*(TEVCBS+TEVCB)
14194           GOTO 230
14195         ELSEIF(MCE.EQ.2.AND.TEVEBS-TEVEB.GT.0.2D0) THEN
14196           TEVEB=0.5D0*(TEVEBS+TEVEB)
14197           GOTO 230
14198         ELSE
14199           XFBN=1D-10
14200           XFN(KFLB)=XFBN
14201         ENDIF
14202       ENDIF
14203       DO 250 KFL=-25,25
14204         XFB(KFL)=XFN(KFL)
14205   250 CONTINUE
14206       XA=XB/Z
14207       IF(MINT(31).GE.2) MINT(30)=JT
14208       IF(MSTP(57).LE.1) THEN
14209         CALL PYPDFU(KFBEAM(JT),XA,Q2REF,XFA)
14210       ELSE
14211         CALL PYPDFL(KFBEAM(JT),XA,Q2REF,XFA)
14212       ENDIF
14213       XFAN=XFA(KFLA)
14214       IF(XFAN.LT.1D-20) GOTO 200
14215       WTSFA=WTSF(KFLA)
14216       IF(WTZ*XFAN/XFBN.LT.PYR(0)*WTSFA) GOTO 200
14217  
14218 C...Define two hard scatterers in their CM-frame.
14219   260 IF(N.EQ.NS+2) THEN
14220         DQ2(JT)=Q2B
14221         DPLCM=SQRT((DSH+DQ2(1)+DQ2(2))**2-4D0*DQ2(1)*DQ2(2))/DSHR
14222         DO 280 JR=1,2
14223           I=NS+JR
14224           IF(JR.EQ.1) IPO=IPUS1
14225           IF(JR.EQ.2) IPO=IPUS2
14226           DO 270 J=1,5
14227             K(I,J)=0
14228             P(I,J)=0D0
14229             V(I,J)=0D0
14230   270     CONTINUE
14231           K(I,1)=14
14232           K(I,2)=KFLS(JR+2)
14233           K(I,4)=IPO
14234           K(I,5)=IPO
14235           P(I,3)=DPLCM*(-1)**(JR+1)
14236           P(I,4)=(DSH+DQ2(3-JR)-DQ2(JR))/DSHR
14237           P(I,5)=-SQRT(DQ2(JR))
14238           K(IPO,1)=14
14239           K(IPO,3)=I
14240           K(IPO,4)=MOD(K(IPO,4),MSTU(5))+MSTU(5)*I
14241           K(IPO,5)=MOD(K(IPO,5),MSTU(5))+MSTU(5)*I
14242           MCT(I,1)=MCT(IPO,1)
14243           MCT(I,2)=MCT(IPO,2)
14244   280   CONTINUE
14245  
14246 C...Find maximum allowed mass of timelike parton.
14247       ELSEIF(N.GT.NS+2) THEN
14248         JR=3-JT
14249         DQ2(3)=Q2B
14250         DPC(1)=P(IS(1),4)
14251         DPC(2)=P(IS(2),4)
14252         DPC(3)=0.5D0*(ABS(P(IS(1),3))+ABS(P(IS(2),3)))
14253         DPD(1)=DSH+DQ2(JR)+DQ2(JT)
14254         DPD(2)=DSHZ+DQ2(JR)+DQ2(3)
14255         DPD(3)=SQRT(DPD(1)**2-4D0*DQ2(JR)*DQ2(JT))
14256         DPD(4)=SQRT(DPD(2)**2-4D0*DQ2(JR)*DQ2(3))
14257         IKIN=0
14258         IF(Q2S(JR).GE.0.25D0*Q2MNC.AND.DPD(1)-DPD(3).GE.
14259      &  1D-10*DPD(1)) IKIN=1
14260         IF(IKIN.EQ.0) DMSMA=(DQ2(JT)/ZS(JT)-DQ2(3))*
14261      &  (DSH/(DSH+DQ2(JT))-DSH/(DSHZ+DQ2(3)))
14262         IF(IKIN.EQ.1) DMSMA=(DPD(1)*DPD(2)-DPD(3)*DPD(4))/
14263      &  (2D0*DQ2(JR))-DQ2(JT)-DQ2(3)
14264  
14265 C...Generate timelike parton shower (if required).
14266         IT=N
14267         DO 290 J=1,5
14268           K(IT,J)=0
14269           P(IT,J)=0D0
14270           V(IT,J)=0D0
14271   290   CONTINUE
14272 C...f -> f + g (gamma).
14273         IF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).LE.20) THEN
14274           K(IT,2)=21
14275           IF(MCESV(JT).EQ.2.OR.IABS(KFLB).GE.11) K(IT,2)=22
14276 C...f -> g (gamma, W+-) + f.
14277         ELSEIF(IABS(KFLB).LE.20.AND.IABS(KFLS(JT+2)).GT.20) THEN
14278           K(IT,2)=KFLB
14279           IF(KFLS(JT+2).EQ.24) THEN
14280             K(IT,2)=-12
14281           ELSEIF(KFLS(JT+2).EQ.-24) THEN
14282             K(IT,2)=12
14283           ENDIF
14284 C...g (gamma) -> f + fbar, g + g.
14285         ELSE
14286           K(IT,2)=-KFLS(JT+2)
14287           IF(KFLS(JT+2).GT.20) K(IT,2)=KFLS(JT+2)
14288         ENDIF
14289         K(IT,1)=3
14290         IF((IABS(K(IT,2)).GE.11.AND.IABS(K(IT,2)).LE.18).OR.
14291      &  IABS(K(IT,2)).EQ.22) K(IT,1)=1
14292         P(IT,5)=PYMASS(K(IT,2))
14293         IF(DMSMA.LE.P(IT,5)**2) GOTO 100
14294         IF(MSTP(63).GE.1.AND.MCESV(JT).EQ.1) THEN
14295           MSTJ48=MSTJ(48)
14296           PARJ85=PARJ(85)
14297           P(IT,4)=(DSHZ-DSH-P(IT,5)**2)/DSHR
14298           P(IT,3)=SQRT(P(IT,4)**2-P(IT,5)**2)
14299           IF(MSTP(63).EQ.1) THEN
14300             Q2TIM=DMSMA
14301           ELSEIF(MSTP(63).EQ.2) THEN
14302             Q2TIM=MIN(DMSMA,PARP(71)*Q2S(JT))
14303           ELSE
14304             Q2TIM=DMSMA
14305             MSTJ(48)=1
14306             IF(IKIN.EQ.0) DPT2=DMSMA*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
14307             IF(IKIN.EQ.1) DPT2=DMSMA*(0.5D0*DPD(1)*DPD(2)+0.5D0*DPD(3)*
14308      &      DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)))/(4D0*DSH*DPC(3)**2)
14309             PARJ(85)=SQRT(MAX(0D0,DPT2))*
14310      &      (1D0/P(IT,4)+1D0/P(IS(JT),4))
14311           ENDIF
14312 C...Only do timelike shower here if using PYSHOW
14313           IF (MSTJ(41).NE.11.AND.MSTJ(41).NE.12) THEN
14314             CALL PYSHOW(IT,0,SQRT(Q2TIM))
14315           ENDIF
14316           MSTJ(48)=MSTJ48
14317           PARJ(85)=PARJ85
14318           IF(N.GE.IT+1) P(IT,5)=P(IT+1,5)
14319         ENDIF
14320  
14321 C...Reconstruct kinematics of branching: timelike parton shower.
14322         DMS=P(IT,5)**2
14323         IF(IKIN.EQ.0) DPT2=(DMSMA-DMS)*(DSHZ+DQ2(3))/(DSH+DQ2(JT))
14324         IF(IKIN.EQ.1) DPT2=(DMSMA-DMS)*(0.5D0*DPD(1)*DPD(2)+
14325      &  0.5D0*DPD(3)*DPD(4)-DQ2(JR)*(DQ2(JT)+DQ2(3)+DMS))/
14326      &  (4D0*DSH*DPC(3)**2)
14327         IF(DPT2.LT.0D0) GOTO 100
14328         DPB(1)=(0.5D0*DPD(2)-DPC(JR)*(DSHZ+DQ2(JR)-DQ2(JT)-DMS)/
14329      &  DSHR)/DPC(3)-DPC(3)
14330         P(IT,1)=SQRT(DPT2)
14331         P(IT,3)=DPB(1)*(-1)**(JT+1)
14332         P(IT,4)=SQRT(DPT2+DPB(1)**2+DMS)
14333         IF(N.GE.IT+1) THEN
14334           DPB(1)=SQRT(DPB(1)**2+DPT2)
14335           DPB(2)=SQRT(DPB(1)**2+DMS)
14336           DPB(3)=P(IT+1,3)
14337           DPB(4)=SQRT(DPB(3)**2+DMS)
14338           DBEZ=(DPB(4)*DPB(1)-DPB(3)*DPB(2))/(DPB(4)*DPB(2)-DPB(3)*
14339      &    DPB(1))
14340           CALL PYROBO(IT+1,N,0D0,0D0,0D0,0D0,DBEZ)
14341           THE=PYANGL(P(IT,3),P(IT,1))
14342           CALL PYROBO(IT+1,N,THE,0D0,0D0,0D0,0D0)
14343         ENDIF
14344  
14345 C...Reconstruct kinematics of branching: spacelike parton.
14346         DO 300 J=1,5
14347           K(N+1,J)=0
14348           P(N+1,J)=0D0
14349           V(N+1,J)=0D0
14350   300   CONTINUE
14351         K(N+1,1)=14
14352         K(N+1,2)=KFLB
14353         P(N+1,1)=P(IT,1)
14354         P(N+1,3)=P(IT,3)+P(IS(JT),3)
14355         P(N+1,4)=P(IT,4)+P(IS(JT),4)
14356         P(N+1,5)=-SQRT(DQ2(3))
14357         MCT(N+1,1)=0
14358         MCT(N+1,2)=0
14359  
14360 C...Define colour flow of branching.
14361         K(IS(JT),3)=N+1
14362         K(IT,3)=N+1
14363         IM1=N+1
14364         IM2=N+1
14365 C...f -> f + gamma (Z, W).
14366         IF(IABS(K(IT,2)).GE.22) THEN
14367           K(IT,1)=1
14368           ID1=IS(JT)
14369           ID2=IS(JT)
14370 C...f -> gamma (Z, W) + f.
14371         ELSEIF(IABS(K(IS(JT),2)).GE.22) THEN
14372           ID1=IT
14373           ID2=IT
14374 C...gamma -> q + qbar, g + g.
14375         ELSEIF(K(N+1,2).EQ.22) THEN
14376           ID1=IS(JT)
14377           ID2=IT
14378           IM1=ID2
14379           IM2=ID1
14380 C...q -> q + g.
14381         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21.AND.K(IT,2).EQ.21) THEN
14382           ID1=IT
14383           ID2=IS(JT)
14384 C...q -> g + q.
14385         ELSEIF(K(N+1,2).GT.0.AND.K(N+1,2).NE.21) THEN
14386           ID1=IS(JT)
14387           ID2=IT
14388 C...qbar -> qbar + g.
14389         ELSEIF(K(N+1,2).LT.0.AND.K(IT,2).EQ.21) THEN
14390           ID1=IS(JT)
14391           ID2=IT
14392 C...qbar -> g + qbar.
14393         ELSEIF(K(N+1,2).LT.0) THEN
14394           ID1=IT
14395           ID2=IS(JT)
14396 C...g -> g + g; g -> q + qbar.
14397         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
14398           ID1=IS(JT)
14399           ID2=IT
14400         ELSE
14401           ID1=IT
14402           ID2=IS(JT)
14403         ENDIF
14404         IF(IM1.EQ.N+1) K(IM1,4)=K(IM1,4)+ID1
14405         IF(IM2.EQ.N+1) K(IM2,5)=K(IM2,5)+ID2
14406         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
14407         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
14408         IF(ID1.NE.ID2) THEN
14409           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
14410           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
14411         ENDIF
14412         N=N+1
14413         IF(K(IT,1).EQ.1) THEN
14414           K(IT,4)=0
14415           K(IT,5)=0
14416         ENDIF
14417  
14418 C...Boost to new CM-frame.
14419         DBSVX=(P(N,1)+P(IS(JR),1))/(P(N,4)+P(IS(JR),4))
14420         DBSVZ=(P(N,3)+P(IS(JR),3))/(P(N,4)+P(IS(JR),4))
14421         IF(DBSVX**2+DBSVZ**2.GE.1D0) GOTO 100
14422         CALL PYROBO(NS+1,N,0D0,0D0,-DBSVX,0D0,-DBSVZ)
14423         IR=N+(JT-1)*(IS(1)-N)
14424         CALL PYROBO(NS+1,N,-PYANGL(P(IR,3),P(IR,1)),DPHI(JT),
14425      &  0D0,0D0,0D0)
14426  
14427 C...Save timelike parton in PYPART if doing pT-ordered FSR off ISR
14428         IF (MSTJ(41).EQ.11.OR.MSTJ(41).EQ.12) THEN
14429           NPART=NPART+1
14430           IPART(NPART)=IT
14431           PTPART(NPART)=SQRT(PARP(71)*DPT2)
14432         ENDIF
14433 
14434 C...Global statistics.
14435         MINT(352)=MINT(352)+1
14436         VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
14437         IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
14438 
14439       ENDIF
14440  
14441 C...Update kinematics variables.
14442       IS(JT)=N
14443       DQ2(JT)=Q2B
14444       IF(MSTP(62).GE.3.AND.NTRY2.LT.200.AND.MCE.EQ.1) THE2(JT)=THE2T
14445       DSH=DSHZ
14446  
14447 C...Save quantities; loop back.
14448       Q2S(JT)=Q2B
14449       DPHI(JT)=PHIBR
14450       MCESV(JT)=MCE
14451       IF((MCEV.EQ.1.AND.Q2B.GE.0.25D0*Q2MNC).OR.
14452      &(MEEV.EQ.1.AND.Q2B.GE.Q2MNE)) THEN
14453         KFLS(JT+2)=KFLS(JT)
14454         KFLS(JT)=KFLA
14455         XS(JT)=XA
14456         ZS(JT)=Z
14457         DO 310 KFL=-25,25
14458           XFS(JT,KFL)=XFA(KFL)
14459   310   CONTINUE
14460         TEVCSV(JT)=TEVCB
14461         TEVESV(JT)=TEVEB
14462       ELSE
14463         MORE(JT)=0
14464         IF(JT.EQ.1) IPU1=N
14465         IF(JT.EQ.2) IPU2=N
14466       ENDIF
14467       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
14468         CALL PYERRM(11,'(PYSSPA:) no more memory left in PYJETS')
14469         IF(MSTU(21).GE.1) N=NS
14470         IF(MSTU(21).GE.1) RETURN
14471       ENDIF
14472       IF(MORE(1).EQ.1.OR.MORE(2).EQ.1) GOTO 150
14473  
14474 C...Boost hard scattering partons to frame of shower initiators.
14475       DO 320 J=1,3
14476         ROBO(J+2)=(P(NS+1,J)+P(NS+2,J))/(P(NS+1,4)+P(NS+2,4))
14477   320 CONTINUE
14478       K(N+2,1)=1
14479       DO 330 J=1,5
14480         P(N+2,J)=P(NS+1,J)
14481   330 CONTINUE
14482       CALL PYROBO(N+2,N+2,0D0,0D0,-ROBO(3),-ROBO(4),-ROBO(5))
14483       ROBO(2)=PYANGL(P(N+2,1),P(N+2,2))
14484       ROBO(1)=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
14485       IMIN=MINT(83)+5
14486       IF(MINT(31).GE.2) IMIN=MIN(IPUS1,IPUS2)
14487       CALL PYROBO(IMIN,NS,0D0,-ROBO(2),0D0,0D0,0D0)
14488       CALL PYROBO(IMIN,NS,ROBO(1),ROBO(2),ROBO(3),ROBO(4),ROBO(5))
14489  
14490 C...Store user information. Reset Lambda value.
14491       IF(MINT(31).LE.1) THEN
14492         K(IPU1,3)=MINT(83)+3
14493         K(IPU2,3)=MINT(83)+4
14494       ELSE
14495         K(IPU1,3)=MINT(83)+1
14496         K(IPU2,3)=MINT(83)+2
14497       ENDIF
14498       DO 340 JT=1,2
14499         MINT(12+JT)=KFLS(JT)
14500         VINT(140+JT)=XS(JT)
14501         IF(MINT(18+JT).EQ.1) VINT(140+JT)=VINT(154+JT)*XS(JT)
14502         IF(MINT(31).GE.2) VINT(140+JT)=VINT(140+JT)*VINT(142+JT)
14503   340 CONTINUE
14504       PARU(112)=ALAMS
14505  
14506       RETURN
14507       END
14508 
14509 C*********************************************************************
14510  
14511 C...PYPTIS
14512 C...Generates pT-ordered spacelike initial-state parton showers and
14513 C...trial joinings.
14514 C...MODE=-1: Initialize ISR from scratch, starting from the hardest
14515 C...         interaction initiators at PT2NOW.
14516 C...MODE= 0: Generate a trial branching on interaction MINT(36), side
14517 C...         MINT(30). Start evolution at PT2NOW, solve Sudakov for PT2.
14518 C...         Store in /PYISMX/ if PT2 is largest so far. Abort if PT2
14519 C...         is below PT2CUT.
14520 C...         (Also generate test joinings if MSTP(96)=1.)
14521 C...MODE= 1: Accept stored shower branching. Update event record etc.
14522 C...PT2NOW : Starting (max) PT2 scale for evolution.
14523 C...PT2CUT : Lower limit for evolution.
14524 C...PT2    : Result of evolution. Generated PT2 for trial emission.
14525 C...IFAIL  : Status return code. IFAIL=0 when all is well.
14526  
14527       SUBROUTINE PYPTIS(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
14528  
14529 C...Double precision and integer declarations.
14530       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
14531       IMPLICIT INTEGER(I-N)
14532       INTEGER PYK,PYCHGE,PYCOMP
14533 C...Parameter statement for maximum size of showers.
14534       PARAMETER (MAXNUR=1000)
14535 C...Commonblocks.
14536       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
14537       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
14538       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
14539       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
14540       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
14541       COMMON/PYINT1/MINT(400),VINT(400)
14542       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
14543       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
14544      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
14545      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
14546       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
14547      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
14548       COMMON/PYCTAG/NCT,MCT(4000,2)
14549       COMMON/PYISJN/MJN1MX,MJN2MX,MJOIND(2,240)
14550       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,
14551      &     /PYINT2/,/PYINTM/,/PYISMX/,/PYCTAG/,/PYISJN/
14552 C...Local variables
14553       DIMENSION ZSAV(2,240),PT2SAV(2,240),
14554      &     XFB(-25:25),XFA(-25:25),XFN(-25:25),XFJ(-25:25),
14555      &     WTAP(-25:25),WTPDF(-25:25),SHTNOW(240),
14556      &     WTAPJ(240),WTPDFJ(240),X1(240),Y(240)
14557       SAVE ZSAV,PT2SAV,XFB,XFA,XFN,WTAP,WTPDF,XMXC,SHTNOW,
14558      &     RMB2,RMC2,ALAM3,ALAM4,ALAM5,TMIN,PTEMAX,WTEMAX,AEM2PI
14559 C...For check on excessive weights.
14560       CHARACTER CHWT*12
14561  
14562 C...Only give errors for very large weights, otherwise just warnings
14563       DATA WTEMAX /1.5D0/
14564 C...Only give errors for large pT, otherwise just warnings
14565       DATA PTEMAX /5D0/
14566  
14567       IFAIL=-1
14568  
14569 C----------------------------------------------------------------------
14570 C...MODE=-1: Initialize initial state showers from scratch, i.e.
14571 C...starting from the hardest interaction initiators.
14572       IF (MODE.EQ.-1) THEN
14573 C...Set hard scattering SHAT.
14574         SHTNOW(1)=VINT(44)
14575 C...Mass thresholds and Lambda for QCD evolution.
14576         AEM2PI=PARU(101)/PARU(2)
14577         RMB=PMAS(5,1)
14578         RMC=PMAS(4,1)
14579         ALAM4=PARP(61)
14580         IF(MSTU(112).LT.4) ALAM4=PARP(61)*(PARP(61)/RMC)**(2D0/25D0)
14581         IF(MSTU(112).GT.4) ALAM4=PARP(61)*(RMB/PARP(61))**(2D0/25D0)
14582         ALAM5=ALAM4*(ALAM4/RMB)**(2D0/23D0)
14583         ALAM3=ALAM4*(RMC/ALAM4)**(2D0/27D0)
14584 C...Optionally use Lambda_MC = Lambda_CMW 
14585         IF (MSTP(64).EQ.3) THEN
14586           ALAM5 = ALAM5 * 1.569 
14587           ALAM4 = ALAM4 * 1.618 
14588           ALAM3 = ALAM3 * 1.661 
14589         ENDIF
14590         RMB2=RMB**2
14591         RMC2=RMC**2
14592 C...Massive quark forced creation threshold (in M**2).
14593         TMIN=1.01D0
14594 C...Set upper limit for X (ensures some X left for beam remnant).
14595         XMXC=1D0-2D0*PARP(111)/VINT(1)
14596  
14597         IF (MSTP(61).GE.1) THEN
14598 C...Initial values: flavours, momenta, virtualities.
14599           DO 100 JS=1,2
14600             NISGEN(JS,1)=0
14601  
14602 C...Special kinematics check for c/b quarks (that g -> c cbar or
14603 C...b bbar kinematically possible).
14604             KFLB=K(IMI(JS,1,1),2)
14605             KFLCB=IABS(KFLB)
14606             IF(KFBEAM(JS).NE.22.AND.(KFLCB.EQ.4.OR.KFLCB.EQ.5)) THEN
14607 C...Check PT2MAX > mQ^2
14608               IF (VINT(56).LT.1.05D0*PMAS(PYCOMP(KFLCB),1)**2) THEN
14609                 CALL PYERRM(9,'(PYPTIS:) PT2MAX < 1.05 * MQ**2. '//
14610      &               'No Q creation possible.')
14611                 MINT(51)=1
14612                 RETURN
14613               ELSE
14614 C...Check for physical z values (m == MQ / sqrt(s))
14615 C...For creation diagram, x < z < (1-m)/(1+m(1-m))
14616                 FMQ=PMAS(KFLCB,1)/SQRT(SHTNOW(1))
14617                 ZMXCR=(1D0-FMQ)/(1D0+FMQ*(1D0-FMQ))
14618                 IF (XMI(JS,1).GT.0.9D0*ZMXCR) THEN
14619                   CALL PYERRM(9,'(PYPTIS:) No physical z value for '//
14620      &                 'Q creation.')
14621                   MINT(51)=1
14622                   RETURN
14623                 ENDIF
14624               ENDIF
14625             ENDIF
14626   100     CONTINUE
14627         ENDIF
14628  
14629         MINT(354)=0
14630 C...Zero joining array
14631         DO 110 MJ=1,240
14632           MJOIND(1,MJ)=0
14633           MJOIND(2,MJ)=0
14634   110   CONTINUE
14635  
14636 C----------------------------------------------------------------------
14637 C...MODE= 0: Generate a trial branching on interaction MINT(36) side
14638 C...MINT(30). Store if emission PT2 scale is largest so far.
14639 C...Also generate test joinings if MSTP(96)=1.
14640       ELSEIF(MODE.EQ.0) THEN
14641         IFAIL=-1
14642         MECOR=0
14643         ISUB=MINT(1)
14644         JS=MINT(30)
14645 C...No shower for structureless beam
14646         IF (MINT(44+JS).EQ.1) RETURN
14647         MI=MINT(36)
14648         SHAT=VINT(44)
14649 C...Absolute shower max scale = VINT(56)
14650         PT2=MIN(PT2NOW,VINT(56))
14651         IF (NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) SHTNOW(MI)=SHAT
14652 C...Define for which processes ME corrections have been implemented.
14653         IF(MSTP(68).EQ.1.OR.MSTP(68).EQ.3) THEN
14654           IF(ISUB.EQ.1.OR.ISUB.EQ.2.OR.ISUB.EQ.141.OR.ISUB.EQ
14655      &         .142.OR.ISUB.EQ.144) MECOR=1
14656           IF(ISUB.EQ.102.OR.ISUB.EQ.152.OR.ISUB.EQ.157) MECOR=2
14657           IF(ISUB.EQ.3.OR.ISUB.EQ.151.OR.ISUB.EQ.156) MECOR=3
14658 C...Calculate preweighting factor for ME-corrected processes.
14659           IF(MECOR.GE.1) CALL PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
14660         ENDIF
14661 C...Basic info on daughter for which to find mother.
14662         KFLB=K(IMI(JS,MI,1),2)
14663         KFLBA=IABS(KFLB)
14664 C...KSVCB: -1 for sea or first companion, 0 for valence or gluon, >1 for
14665 C...second companion.
14666         KSVCB=MAX(-1,IMI(JS,MI,2))
14667 C...Treat "first" companion of a pair like an ordinary sea quark
14668 C...(except that creation diagram is not allowed)
14669         IF(IMI(JS,MI,2).GT.IMISEP(MI)) KSVCB=-1
14670 C...X (rescaled to [0,1])
14671         XB=XMI(JS,MI)/VINT(142+JS)
14672 C...Massive quarks (use physical masses.)
14673         RMQ2=0D0
14674         MQMASS=0
14675         IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
14676           RMQ2=RMC2
14677           IF (KFLBA.EQ.5) RMQ2=RMB2
14678 C...Special threshold treatment for non-photon beams
14679           IF (KFBEAM(JS).NE.22) MQMASS=KFLBA
14680         ENDIF
14681  
14682 C...Flags for parton distribution calls.
14683         MINT(105)=MINT(102+JS)
14684         MINT(109)=MINT(106+JS)
14685         VINT(120)=VINT(2+JS)
14686  
14687 C...Calculate initial parton distribution weights.
14688         IF(XB.GE.XMXC) THEN
14689           RETURN
14690         ELSEIF(MQMASS.EQ.0) THEN
14691           CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
14692         ELSE
14693 C...Initialize massive quark PT2 dependent pdf underestimate.
14694           PT20=PT2
14695           CALL PYPDFU(KFBEAM(JS),XB,PT20,XFB)
14696 C.!.Tentative treatment of massive valence quarks.
14697           XQ0=MAX(1D-10,XPSVC(KFLB,KSVCB))
14698           XG0=XFB(21)
14699           TPM0=LOG(PT20/RMQ2)
14700           WPDF0=TPM0*XG0/XQ0
14701         ENDIF
14702         IF (KFLBA.LE.6) THEN
14703 C...For quarks, only include respective sea, val, or cmp part.
14704           IF (KSVCB.LE.0) THEN
14705             XFB(KFLB)=XPSVC(KFLB,KSVCB)
14706           ELSE
14707 C...Find companion's companion
14708             MISEA=0
14709   120       MISEA=MISEA+1
14710             IF (IMI(JS,MISEA,2).NE.IMI(JS,MI,1)) GOTO 120
14711             XS=XMI(JS,MISEA)
14712             XREM=VINT(142+JS)
14713             YS=XS/(XREM+XS)
14714 C...Momentum fraction of the companion quark.
14715 C...Rescale from XB = x/XREM to YB = x/(1-Sum_rest) -> factor (1-YS).
14716             YB=XB*(1D0-YS)
14717             XFB(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
14718           ENDIF
14719         ENDIF
14720  
14721 C...Determine overestimated z range: switch at c and b masses.
14722   130   IF (PT2.GT.TMIN*RMB2) THEN
14723           IZRG=3
14724           PT2MNE=MAX(TMIN*RMB2,PT2CUT)
14725           B0=23D0/6D0
14726           ALAM2=ALAM5**2
14727         ELSEIF(PT2.GT.TMIN*RMC2) THEN
14728           IZRG=2
14729           PT2MNE=MAX(TMIN*RMC2,PT2CUT)
14730           B0=25D0/6D0
14731           ALAM2=ALAM4**2
14732         ELSE
14733           IZRG=1
14734           PT2MNE=PT2CUT
14735           B0=27D0/6D0
14736           ALAM2=ALAM3**2
14737         ENDIF
14738 C...Divide Lambda by PARP(64) (equivalent to mult pT2 by PARP(64))
14739         ALAM2=ALAM2/PARP(64)
14740 C...Overestimated ZMAX:
14741         IF (MQMASS.EQ.0) THEN
14742 C...Massless
14743           ZMAX=1D0-0.5D0*(PT2MNE/SHTNOW(MI))*(SQRT(1D0+4D0*SHTNOW(MI)
14744      &         /PT2MNE)-1D0)
14745         ELSE
14746 C...Massive (limit for bremsstrahlung diagram > creation)
14747           FMQ=SQRT(RMQ2/SHTNOW(MI))
14748           ZMAX=1D0/(1D0+FMQ)
14749         ENDIF
14750         ZMIN=XB/XMXC
14751  
14752 C...If kinematically impossible then do not evolve.
14753         IF(PT2.LT.PT2CUT.OR.ZMAX.LE.ZMIN) RETURN
14754  
14755 C...Reset Altarelli-Parisi and PDF weights.
14756         DO 140 KFL=-5,5
14757           WTAP(KFL)=0D0
14758           WTPDF(KFL)=0D0
14759   140   CONTINUE
14760         WTAP(21)=0D0
14761         WTPDF(21)=0D0
14762 C...Zero joining weights and compute X(partner) and X(mother) values.
14763         IF (MSTP(96).NE.0) THEN
14764           NJN=0
14765           DO 150 MJ=1,MINT(31)
14766             WTAPJ(MJ)=0D0
14767             WTPDFJ(MJ)=0D0
14768             X1(MJ)=XMI(JS,MJ)/(VINT(142+JS)+XMI(JS,MJ))
14769             Y(MJ)=(XMI(JS,MI)+XMI(JS,MJ))/(VINT(142+JS)+XMI(JS,MJ)
14770      &           +XMI(JS,MI))
14771   150     CONTINUE
14772         ENDIF
14773  
14774 C...Approximate Altarelli-Parisi weights (integrated AP dz).
14775 C...q -> q, g -> q or q -> q + gamma (already set which).
14776         IF(KFLBA.LE.5) THEN
14777 C...Val and cmp quarks get an extra sqrt(z) to smooth their bumps.
14778           IF (KSVCB.LT.0) THEN
14779             WTAP(KFLB)=(8D0/3D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
14780           ELSE
14781             RMIN=(1+SQRT(ZMIN))/(1-SQRT(ZMIN))
14782             RMAX=(1+SQRT(ZMAX))/(1-SQRT(ZMAX))
14783             WTAP(KFLB)=(8D0/3D0)*LOG(RMAX/RMIN)
14784           ENDIF
14785           WTAP(21)=0.5D0*(ZMAX-ZMIN)
14786           WTAPE=(2D0/9D0)*LOG((1D0-ZMIN)/(1D0-ZMAX))
14787           IF(MOD(KFLBA,2).EQ.0) WTAPE=4D0*WTAPE
14788           IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
14789             WTAP(KFLB)=WTFF*WTAP(KFLB)
14790             WTAP(21)=WTGF*WTAP(21)
14791             WTAPE=WTFF*WTAPE
14792           ENDIF
14793           IF (KSVCB.GE.1) THEN
14794 C...Kill normal creation but add joining diagrams for cmp quark.
14795             WTAP(21)=0D0
14796             IF (KFLBA.EQ.4.OR.KFLBA.EQ.5) THEN
14797               CALL PYERRM(9,'(PYPTIS:) Sorry, I got a heavy companion'//
14798      &             " quark here. Not handled yet, giving up!")
14799               PT2=0D0
14800               MINT(51)=1
14801               RETURN
14802             ENDIF
14803 C...Check for possible joinings
14804             IF (MSTP(96).NE.0.AND.MJOIND(JS,MI).EQ.0) THEN
14805 C...Find companion's companion.
14806               MJ=0
14807   160         MJ=MJ+1
14808               IF (IMI(JS,MJ,2).NE.IMI(JS,MI,1)) GOTO 160
14809               IF (MJOIND(JS,MJ).EQ.0) THEN
14810                 Y(MI)=YB+YS
14811                 Z=YB/Y(MI)
14812                 WTAPJ(MJ)=Z*(1D0-Z)*0.5D0*(Z**2+(1D0-Z)**2)
14813                 IF (WTAPJ(MJ).GT.1D-6) THEN
14814                   NJN=1
14815                 ELSE
14816                   WTAPJ(MJ)=0D0
14817                 ENDIF
14818               ENDIF
14819 C...Add trial gluon joinings.
14820               DO 170 MJ=1,MINT(31)
14821                 KFLC=K(IMI(JS,MJ,1),2)
14822                 IF (KFLC.NE.21.OR.MJOIND(JS,MJ).NE.0) GOTO 170
14823                 Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
14824                 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
14825                 IF (WTAPJ(MJ).GT.1D-6) THEN
14826                   NJN=NJN+1
14827                 ELSE
14828                   WTAPJ(MJ)=0D0
14829                 ENDIF
14830   170         CONTINUE
14831             ENDIF
14832           ELSEIF (IMI(JS,MI,2).GE.0) THEN
14833 C...Kill creation diagram for val quarks and sea quarks with companions.
14834             WTAP(21)=0D0
14835           ELSEIF (MQMASS.EQ.0) THEN
14836 C...Extra safety factor for massless sea quark creation.
14837             WTAP(21)=WTAP(21)*1.25D0
14838           ENDIF
14839  
14840 C...  q -> g, g -> g.
14841         ELSEIF(KFLB.EQ.21) THEN
14842 C...Here we decide later whether a quark picked up is valence or
14843 C...sea, so we maintain the extra factor sqrt(z) since we deal
14844 C...with the *sum* of sea and valence in this context.
14845           WTAPQ=(16D0/3D0)*(SQRT(1D0/ZMIN)-SQRT(1D0/ZMAX))
14846 C...new: do not allow backwards evol to pick up heavy flavour.
14847           DO 180 KFL=1,MIN(3,MSTP(58))
14848             WTAP(KFL)=WTAPQ
14849             WTAP(-KFL)=WTAPQ
14850   180     CONTINUE
14851           WTAP(21)=6D0*LOG(ZMAX*(1D0-ZMIN)/(ZMIN*(1D0-ZMAX)))
14852           IF(MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
14853             WTAPQ=WTFG*WTAPQ
14854             WTAP(21)=WTGG*WTAP(21)
14855           ENDIF
14856 C...Check for possible joinings (companions handled separately above)
14857           IF (MSTP(96).NE.0.AND.MINT(31).GE.2.AND.MJOIND(JS,MI).EQ.0)
14858      &         THEN
14859             DO 190 MJ=1,MINT(31)
14860               IF (MJ.EQ.MI.OR.MJOIND(JS,MJ).NE.0) GOTO 190
14861               KSVCC=IMI(JS,MJ,2)
14862               IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
14863               IF (KSVCC.GE.1) GOTO 190
14864               KFLC=K(IMI(JS,MJ,1),2)
14865 C...Only try g -> g + g once.
14866               IF (MJ.GT.MI.AND.KFLC.EQ.21) GOTO 190
14867               Z=XMI(JS,MJ)/(XMI(JS,MI)+XMI(JS,MJ))
14868               IF (KFLC.EQ.21) THEN
14869                 WTAPJ(MJ)=6D0*(Z**2+(1D0-Z)**2)
14870               ELSE
14871                 WTAPJ(MJ)=Z*4D0/3D0*(1D0+Z**2)
14872               ENDIF
14873               IF (WTAPJ(MJ).GT.1D-6) THEN
14874                 NJN=NJN+1
14875               ELSE
14876                 WTAPJ(MJ)=0D0
14877               ENDIF
14878   190       CONTINUE
14879           ENDIF
14880         ENDIF
14881  
14882 C...Initialize massive quark evolution
14883         IF (MQMASS.NE.0) THEN
14884           RML=(RMQ2+VINT(18))/ALAM2
14885           TML=LOG(RML)
14886           TPL=LOG((PT2+VINT(18))/ALAM2)
14887           TPM=LOG((PT2+VINT(18))/RMQ2)
14888           WN=WTAP(21)*WPDF0/B0
14889         ENDIF
14890  
14891  
14892 C...Loopback point for iteration
14893         NTRY=0
14894         NTHRES=0
14895   200   NTRY=NTRY+1
14896         IF(NTRY.GT.500) THEN
14897           CALL PYERRM(9,'(PYPTIS:) failed to evolve shower.')
14898           MINT(51)=1
14899           RETURN
14900         ENDIF
14901  
14902 C...  Calculate PDF weights and sum for evolution rate.
14903         WTSUM=0D0
14904         XFBO=MAX(1D-10,XFB(KFLB))
14905         DO 210 KFL=-5,5
14906           WTPDF(KFL)=XFB(KFL)/XFBO
14907           WTSUM=WTSUM+WTAP(KFL)*WTPDF(KFL)
14908   210   CONTINUE
14909 C...Only add gluon mother diagram for massless KFLB.
14910         IF(MQMASS.EQ.0) THEN
14911           WTPDF(21)=XFB(21)/XFBO
14912           WTSUM=WTSUM+WTAP(21)*WTPDF(21)
14913         ENDIF
14914         WTSUM=MAX(0.0001D0,WTSUM)
14915         WTSUMS=WTSUM
14916 C...Add joining diagrams where applicable.
14917         WTJOIN=0D0
14918         IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
14919           DO 220 MJ=1,MINT(31)
14920             IF (WTAPJ(MJ).LT.1D-3) GOTO 220
14921             WTPDFJ(MJ)=1D0/XFBO
14922 C...x and x*pdf (+ sea/val) for parton C.
14923             KFLC=K(IMI(JS,MJ,1),2)
14924             KFLCA=IABS(KFLC)
14925             KSVCC=MAX(-1,IMI(JS,MJ,2))
14926             IF (IMI(JS,MJ,2).GT.IMISEP(MJ)) KSVCC=-1
14927             MINT(30)=JS
14928             MINT(36)=MJ
14929             CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
14930             MINT(36)=MI
14931             IF (KFLCA.LE.6.AND.KSVCC.LE.0) THEN
14932               XFJ(KFLC)=XPSVC(KFLC,KSVCC)
14933             ELSEIF (KSVCC.GE.1) THEN
14934               print*, 'error! parton C is companion!'
14935             ENDIF
14936             WTPDFJ(MJ)=WTPDFJ(MJ)/XFJ(KFLC)
14937 C...x and x*pdf (+ sea/val) for parton A.
14938             KFLA=21
14939             KSVCA=0
14940             IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
14941               KFLA=KFLB
14942               KSVCA=KSVCB
14943             ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
14944               KFLA=KFLC
14945               KSVCA=KSVCC
14946             ENDIF
14947             MINT(30)=JS
14948             IF (KSVCA.LE.0) THEN
14949 C...Consider C the "evolved" parton if B is gluon. Val/sea
14950 C...counting will then be done correctly in PYPDFU.
14951               IF (KFLBA.EQ.21) MINT(36)=MJ
14952               CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
14953               MINT(36)=MI
14954               IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
14955             ELSE
14956 C...If parton A is companion, use Y(MI) and YS in call to PYFCMP.
14957               XFJ(KFLA)=PYFCMP(Y(MI)/VINT(140),YS/VINT(140),MSTP(87))
14958             ENDIF
14959             WTPDFJ(MJ)=XFJ(KFLA)*WTPDFJ(MJ)
14960             WTJOIN=WTJOIN+WTAPJ(MJ)*WTPDFJ(MJ)
14961   220     CONTINUE
14962         ENDIF
14963  
14964 C...Pick normal pT2 (in overestimated z range).
14965   230   PT2OLD=PT2
14966         WTSUM=WTSUMS
14967         PT2=ALAM2*((PT2+VINT(18))/ALAM2)**(PYR(0)**(B0/WTSUM))-VINT(18)
14968         KFLC=21
14969  
14970 C...Evolve q -> q gamma separately, pick it if larger pT.
14971         IF(KFLBA.LE.5) THEN
14972           PT2QED=(PT2OLD+VINT(18))*PYR(0)**(1D0/(AEM2PI*WTAPE))-VINT(18)
14973           IF(PT2QED.GT.PT2) THEN
14974             PT2=PT2QED
14975             KFLC=22
14976             KFLA=KFLB
14977           ENDIF
14978         ENDIF
14979  
14980 C...  Evolve massive quark creation separately.
14981         MCRQQ=0
14982         IF (MQMASS.NE.0) THEN
14983           PT2CR=(RMQ2+VINT(18))*(RML**(TPM/(TPL*PYR(0)**(-TML/WN)-TPM)))
14984      &         -VINT(18)
14985 C...  Ensure mininimum PT2CR and force creation near threshold.
14986           IF (PT2CR.LT.TMIN*RMQ2) THEN
14987             NTHRES=NTHRES+1
14988             IF (NTHRES.GT.50) THEN
14989               CALL PYERRM(9,'(PYPTIS:) no phase space left for '//
14990      &             'massive quark creation. Gave up trying.')
14991               MINT(51)=1
14992 C...Special return code if failing before any evolution at all: bad event
14993               IF (NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) MINT(51)=2
14994               RETURN
14995             ENDIF
14996             PT2=0D0
14997             PT2CR=TMIN*RMQ2
14998             MCRQQ=2
14999           ENDIF
15000 C...  Select largest PT2 (brems or creation):
15001           IF (PT2CR.GT.PT2) THEN
15002             MCRQQ=MAX(MCRQQ,1)
15003             WTSUM=0D0
15004             PT2=PT2CR
15005             KFLA=21
15006           ELSE
15007             MCRQQ=0
15008             KFLA=KFLB
15009           ENDIF
15010 C...  Compute logarithms for this PT2
15011           TPL=LOG((PT2+VINT(18))/ALAM2)
15012           TPM=LOG((PT2+VINT(18))/(RMQ2+VINT(18)))
15013           WTCRQQ=TPM/LOG(PT2/RMQ2)
15014         ENDIF
15015  
15016 C...Evolve joining separately
15017         MJOIN=0
15018         IF (MSTP(96).NE.0.AND.NJN.NE.0) THEN
15019           PT2JN=ALAM2*((PT2OLD+VINT(18))/ALAM2)**(PYR(0)**(B0/WTJOIN))
15020      &         -VINT(18)
15021           IF (PT2JN.GE.PT2) THEN
15022             MJOIN=1
15023             PT2=PT2JN
15024           ENDIF
15025         ENDIF
15026  
15027 C...Loopback if crossed c/b mass thresholds.
15028         IF(IZRG.EQ.3.AND.PT2.LT.RMB2) THEN
15029           PT2=RMB2
15030          GOTO 130
15031         ELSEIF(IZRG.EQ.2.AND.PT2.LT.RMC2) THEN
15032           PT2=RMC2
15033           GOTO 130
15034         ENDIF
15035  
15036 C...Speed up shower. Skip if higher-PT acceptable branching
15037 C...already found somewhere else.
15038 C...Also finish if below lower cutoff.
15039  
15040         IF (PT2.LT.PT2MX.OR.PT2.LT.PT2CUT) RETURN
15041  
15042 C...Select parton A flavour (massive Q handled above.)
15043         IF (MQMASS.EQ.0.AND.KFLC.NE.22.AND.MJOIN.EQ.0) THEN
15044           WTRAN=PYR(0)*WTSUM
15045           KFLA=-6
15046   240     KFLA=KFLA+1
15047           WTRAN=WTRAN-WTAP(KFLA)*WTPDF(KFLA)
15048           IF(KFLA.LE.5.AND.WTRAN.GT.0D0) GOTO 240
15049           IF(KFLA.EQ.6) KFLA=21
15050         ELSEIF (MJOIN.EQ.1) THEN
15051 C...Tentative joining accept/reject.
15052           WTRAN=PYR(0)*WTJOIN
15053           MJ=0
15054   250     MJ=MJ+1
15055           WTRAN=WTRAN-WTAPJ(MJ)*WTPDFJ(MJ)
15056           IF(MJ.LE.MINT(31)-1.AND.WTRAN.GT.0D0) GOTO 250
15057           IF(MJOIND(JS,MJ).NE.0.OR.MJOIND(JS,MI).NE.0) THEN
15058             CALL PYERRM(9,'(PYPTIS:) Attempted double joining.'//
15059      &           ' Rejected.')
15060             GOTO 230
15061           ENDIF
15062 C...x*pdf (+ sea/val) at new pT2 for parton B.
15063           IF (KSVCB.LE.0) THEN
15064             MINT(30)=JS
15065             CALL PYPDFU(KFBEAM(JS),XB,PT2,XFB)
15066             IF (KFLBA.LE.6) XFB(KFLB)=XPSVC(KFLB,KSVCB)
15067           ELSE
15068 C...Companion distributions do not evolve.
15069             XFB(KFLB)=XFBO
15070           ENDIF
15071           WTVETO=1D0/WTPDFJ(MJ)/XFB(KFLB)
15072           KFLC=K(IMI(JS,MJ,1),2)
15073           KFLCA=IABS(KFLC)
15074           KSVCC=MAX(-1,IMI(JS,MJ,2))
15075           IF (KSVCB.GE.1) KSVCC=-1
15076 C...x*pdf (+ sea/val) at new pT2 for parton C.
15077           MINT(30)=JS
15078           MINT(36)=MJ
15079           CALL PYPDFU(KFBEAM(JS),X1(MJ),PT2,XFJ)
15080           MINT(36)=MI
15081           IF (KFLCA.LE.6.AND.KSVCC.LE.0) XFJ(KFLC)=XPSVC(KFLC,KSVCC)
15082           WTVETO=WTVETO/XFJ(KFLC)
15083 C...x and x*pdf (+ sea/val) at new pT2 for parton A.
15084           KFLA=21
15085           KSVCA=0
15086           IF (KFLCA.EQ.21.AND.KFLBA.LE.5) THEN
15087             KFLA=KFLB
15088             KSVCA=KSVCB
15089           ELSEIF (KFLBA.EQ.21.AND.KFLCA.LE.5) THEN
15090             KFLA=KFLC
15091             KSVCA=KSVCC
15092           ENDIF
15093           IF (KSVCA.LE.0) THEN
15094             MINT(30)=JS
15095             IF (KFLB.EQ.21) MINT(36)=MJ
15096             CALL PYPDFU(KFBEAM(JS),Y(MJ),PT2,XFJ)
15097             MINT(36)=MI
15098             IF (IABS(KFLA).LE.6) XFJ(KFLA)=XPSVC(KFLA,KSVCA)
15099           ELSE
15100             XFJ(KFLA)=PYFCMP(Y(MJ)/VINT(140),YS/VINT(140),MSTP(87))
15101           ENDIF
15102           WTVETO=WTVETO*XFJ(KFLA)
15103 C...Monte Carlo veto.
15104           IF (WTVETO.LT.PYR(0)) GOTO 200
15105 C...If accept, save PT2 of this joining.
15106           IF (PT2.GT.PT2MX) THEN
15107             PT2MX=PT2
15108             JSMX=2+JS
15109             MJN1MX=MJ
15110             MJN2MX=MI
15111             WTAPJ(MJ)=0D0
15112             NJN=0
15113           ENDIF
15114 C...Exit and continue evolution.
15115           GOTO 390
15116         ENDIF
15117         KFLAA=IABS(KFLA)
15118  
15119 C...Choose z value (still in overestimated range) and corrective weight.
15120 C...Unphysical z will be rejected below when Q2 has is computed.
15121         WTZ=0D0
15122  
15123 C...Note: ME and MQ>0 give corrections to overall weights, not shapes.
15124 C...q -> q + g or q -> q + gamma (already set which).
15125         IF (KFLAA.LE.5.AND.KFLBA.LE.5) THEN
15126           IF (KSVCB.LT.0) THEN
15127             Z=1D0-(1D0-ZMIN)*((1D0-ZMAX)/(1D0-ZMIN))**PYR(0)
15128           ELSE
15129             ZFAC=RMIN*(RMAX/RMIN)**PYR(0)
15130             Z=((1-ZFAC)/(1+ZFAC))**2
15131           ENDIF
15132           WTZ=0.5D0*(1D0+Z**2)
15133 C...Massive weight correction.
15134           IF (KFLBA.GE.4) WTZ=WTZ-Z*(1D0-Z)**2*RMQ2/PT2
15135 C...Valence quark weight correction (extra sqrt)
15136           IF (KSVCB.GE.0) WTZ=WTZ*SQRT(Z)
15137  
15138 C...q -> g + q.
15139 C...NB: MQ>0 not yet implemented. Forced absent above.
15140         ELSEIF (KFLAA.LE.5.AND.KFLB.EQ.21) THEN
15141           KFLC=KFLA
15142           Z=ZMAX/(1D0+PYR(0)*(SQRT(ZMAX/ZMIN)-1D0))**2
15143           WTZ=0.5D0*(1D0+(1D0-Z)**2)*SQRT(Z)
15144  
15145 C...g -> q + qbar.
15146         ELSEIF (KFLA.EQ.21.AND.KFLBA.LE.5) THEN
15147           KFLC=-KFLB
15148           Z=ZMIN+PYR(0)*(ZMAX-ZMIN)
15149           WTZ=Z**2+(1D0-Z)**2
15150 C...Massive correction
15151           IF (MQMASS.NE.0) THEN
15152             WTZ=WTZ+2D0*Z*(1D0-Z)*RMQ2/PT2
15153 C...Extra safety margin for light sea quark creation
15154           ELSEIF (KSVCB.LT.0) THEN
15155             WTZ=WTZ/1.25D0
15156           ENDIF
15157  
15158 C...g -> g + g.
15159         ELSEIF (KFLA.EQ.21.AND.KFLB.EQ.21) THEN
15160           KFLC=21
15161           Z=1D0/(1D0+((1D0-ZMIN)/ZMIN)*((1D0-ZMAX)*ZMIN/
15162      &         (ZMAX*(1D0-ZMIN)))**PYR(0))
15163           WTZ=(1D0-Z*(1D0-Z))**2
15164         ENDIF
15165  
15166 C...Derive Q2 from pT2.
15167         Q2B=PT2/(1D0-Z)
15168         IF (KFLBA.GE.4) Q2B=Q2B-RMQ2
15169  
15170 C...Loopback if outside allowed z range for given pT2.
15171         RM2C=PYMASS(KFLC)**2
15172         PT2ADJ=Q2B-Z*(SHTNOW(MI)+Q2B)*(Q2B+RM2C)/SHTNOW(MI)
15173         IF (PT2ADJ.LT.1D-6) GOTO 230
15174  
15175 C...Size of phase space and coherence suppression: MSTP(67) and MSTP(62)
15176 C...No modification for very first emission if using ME correction
15177         MSTP67 = MSTP(67)
15178         IF (MECOR.GE.1.AND.NISGEN(1,MI).EQ.0.AND.NISGEN(2,MI).EQ.0) THEN
15179           MSTP67 = 0
15180         ENDIF
15181  
15182 C...For 1st branching, limit phase space by s-hat with color-partner
15183         IF (MSTP67.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
15184           MSIDE=1
15185           IDIP=IMI(JS,MI,1)
15186 C...Use anticolor tag for antiquark, or for gluon half the time
15187           IF ((KFLB.LT.0.AND.KFLBA.LT.10).OR.(
15188      &        KFLB.EQ.21.AND.PYR(0).GT.0.5)) MSIDE=2
15189 C...Tag
15190           MCTAG=MCT(IDIP,MSIDE)
15191 C...Default is to set up phase space using the opposite incoming parton
15192           JDIP=IMI(3-JS,MI,1)
15193           NDIP=0
15194 C...Alternatively, look for final-state color partner (pick first if several)
15195           DO 260 IFS=1,NPART
15196             IF (MCT(IPART(IFS),MSIDE).EQ.MCTAG.AND.NDIP.EQ.0) THEN
15197               JDIP=IPART(IFS)
15198               NDIP=NDIP+1
15199             ENDIF
15200   260     CONTINUE
15201 C...Compute mass of pair
15202           SDIP=(P(IDIP,4)+P(JDIP,4))**2-(P(IDIP,3)+P(JDIP,3))**2
15203      &        -(P(IDIP,2)+P(JDIP,2))**2-(P(IDIP,1)+P(JDIP,1))**2
15204           IF (MSTP67.EQ.1) THEN
15205 C...1 Option to completely kill radiation above s_dip * PARP(67)
15206             IF (4*PT2.GT.PARP(67)*SDIP) GOTO 230
15207           ELSE IF (MSTP67.EQ.2) THEN
15208 C...2 Option to allow suppressed unordered radiation above s_dip * PARP(67)
15209 C...  (-> improved power showers?)
15210             IF (4*PT2*PYR(0).GT.PARP(67)*SDIP) GOTO 230
15211           ENDIF
15212  
15213 C...For subsequent branchings, loopback if nonordered in angle/rapidity
15214         ELSE IF (MSTP(62).GE.3.AND.NISGEN(JS,MI).GE.1) THEN
15215           IF(PT2.GT.((1D0-Z)/(Z*(1D0-ZSAV(JS,MI))))**2*PT2SAV(JS,MI))
15216      &         GOTO 230
15217         ENDIF
15218  
15219 C...Select phi angle of branching at random.
15220         PHI=PARU(2)*PYR(0)
15221  
15222 C...Matrix-element corrections for some processes.
15223         IF (MECOR.GE.1.AND.NISGEN(JS,MI).EQ.0) THEN
15224           IF (KFLAA.LE.20.AND.KFLBA.LE.20) THEN
15225             CALL PYMEWT(MECOR,1,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
15226             WTZ=WTZ*WTME/WTFF
15227           ELSEIF((KFLA.EQ.21.OR.KFLA.EQ.22).AND.KFLBA.LE.20) THEN
15228             CALL PYMEWT(MECOR,2,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
15229             WTZ=WTZ*WTME/WTGF
15230           ELSEIF(KFLAA.LE.20.AND.(KFLB.EQ.21.OR.KFLB.EQ.22)) THEN
15231             CALL PYMEWT(MECOR,3,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
15232             WTZ=WTZ*WTME/WTFG
15233           ELSEIF(KFLA.EQ.21.AND.KFLB.EQ.21) THEN
15234             CALL PYMEWT(MECOR,4,Q2B*SHAT/SHTNOW(MI),Z,PHI,WTME)
15235             WTZ=WTZ*WTME/WTGG
15236           ENDIF
15237         ENDIF
15238  
15239 C...Parton distributions at new pT2 but old x.
15240         MINT(30)=JS
15241         CALL PYPDFU(KFBEAM(JS),XB,PT2,XFN)
15242 C...Treat val and cmp separately
15243         IF (KFLBA.LE.6.AND.KSVCB.LE.0) XFN(KFLB)=XPSVC(KFLB,KSVCB)
15244         IF (KSVCB.GE.1)
15245      &       XFN(KFLB)=PYFCMP(YB/VINT(140),YS/VINT(140),MSTP(87))
15246         XFBN=XFN(KFLB)
15247         IF(XFBN.LT.1D-20) THEN
15248           IF(KFLA.EQ.KFLB) THEN
15249             WTAP(KFLB)=0D0
15250             GOTO 200
15251           ELSE
15252             XFBN=1D-10
15253             XFN(KFLB)=XFBN
15254           ENDIF
15255         ENDIF
15256         DO 270 KFL=-5,5
15257           XFB(KFL)=XFN(KFL)
15258   270   CONTINUE
15259         XFB(21)=XFN(21)
15260  
15261 C...Parton distributions at new pT2 and new x.
15262         XA=XB/Z
15263         MINT(30)=JS
15264         CALL PYPDFU(KFBEAM(JS),XA,PT2,XFA)
15265         IF (KFLBA.LE.5.AND.KFLAA.LE.5) THEN
15266 C...q -> q + g: only consider respective sea, val, or cmp content.
15267           IF (KSVCB.LE.0) THEN
15268             XFA(KFLA)=XPSVC(KFLA,KSVCB)
15269           ELSE
15270             YA=XA*(1D0-YS)
15271             XFA(KFLB)=PYFCMP(YA/VINT(140),YS/VINT(140),MSTP(87))
15272           ENDIF
15273         ENDIF
15274         XFAN=XFA(KFLA)
15275         IF(XFAN.LT.1D-20) THEN
15276           GOTO 200
15277         ENDIF
15278  
15279 C...If weighting fails continue evolution.
15280         WTTOT=0D0
15281         IF (MCRQQ.EQ.0) THEN
15282           WTPDFA=1D0/WTPDF(KFLA)
15283           WTTOT=WTZ*XFAN/XFBN*WTPDFA
15284         ELSEIF(MCRQQ.EQ.1) THEN
15285           WTPDFA=TPM/WPDF0
15286           WTTOT=WTCRQQ*WTZ*XFAN/XFBN*WTPDFA
15287           XBEST=TPM/TPM0*XQ0
15288         ELSEIF(MCRQQ.EQ.2) THEN
15289 C...Force massive quark creation.
15290           WTTOT=1D0
15291         ENDIF
15292  
15293 C...Loop back if trial emission fails.
15294         IF(WTTOT.GE.0D0.AND.WTTOT.LT.PYR(0)) GOTO 200
15295         WTACC=((1D0+PT2)/(0.25D0+PT2))**2
15296         IF(WTTOT.LT.0D0) THEN
15297           WRITE(CHWT,'(1P,E12.4)') WTTOT
15298           CALL PYERRM(19,'(PYPTIS:) Weight '//CHWT//' negative')
15299         ELSEIF(WTTOT.GT.WTACC) THEN
15300           WRITE(CHWT,'(1P,E12.4)') WTTOT
15301           IF (PT2.GT.PTEMAX.OR.WTTOT.GE.WTEMAX) THEN
15302 C...Too high weight: write out as error, but do not update error counter
15303             IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)-1
15304             CALL PYERRM(19,
15305      &         '(PYPTIS:) Weight '//CHWT//' above unity')
15306             IF (PT2.GT.PTEMAX) PTEMAX=PT2
15307             IF (WTTOT.GT.WTEMAX) WTEMAX=WTTOT
15308           ELSE
15309             CALL PYERRM(9,
15310      &         '(PYPTIS:) Weight '//CHWT//' above unity')
15311           ENDIF
15312 C...Useful for debugging but commented out for distribution:
15313 C          print*, 'JS, MI',JS, MI
15314 C          print*, 'PT:',SQRT(PT2), ' MCRQQ',MCRQQ
15315 C          print*, 'A -> B C',KFLA, KFLB, KFLC
15316 C          XFAO=XFBO/WTPDFA
15317 C          print*, 'WT(Z,XFA,XFB)',WTZ, XFAN/XFAO, XFBO/XFBN
15318         ENDIF
15319  
15320 C...Save acceptable branching.
15321         IF(PT2.GT.PT2MX) THEN
15322           MIMX=MINT(36)
15323           JSMX=JS
15324           PT2MX=PT2
15325           KFLAMX=KFLA
15326           KFLCMX=KFLC
15327           RM2CMX=RM2C
15328           Q2BMX=Q2B
15329           ZMX=Z
15330           PT2AMX=PT2ADJ
15331           PHIMX=PHI
15332         ENDIF
15333  
15334 C----------------------------------------------------------------------
15335 C...MODE= 1: Accept stored shower branching. Update event record etc.
15336       ELSEIF (MODE.EQ.1) THEN
15337         MI=MIMX
15338         JS=JSMX
15339         SHAT=SHTNOW(MI)
15340         SIDE=3D0-2D0*JS
15341 C...Shift down rest of event record to make room for insertion.
15342         IT=IMISEP(MI)+1
15343         IM=IT+1
15344         IS=IMI(JS,MI,1)
15345         DO 290 I=N,IT,-1
15346           IF (K(I,3).GE.IT) K(I,3)=K(I,3)+2
15347           KT1=K(I,4)/MSTU(5)**2
15348           KT2=K(I,5)/MSTU(5)**2
15349           ID1=MOD(K(I,4),MSTU(5))
15350           ID2=MOD(K(I,5),MSTU(5))
15351           IM1=MOD(K(I,4)/MSTU(5),MSTU(5))
15352           IM2=MOD(K(I,5)/MSTU(5),MSTU(5))
15353           IF (ID1.GE.IT) ID1=ID1+2
15354           IF (ID2.GE.IT) ID2=ID2+2
15355           IF (IM1.GE.IT) IM1=IM1+2
15356           IF (IM2.GE.IT) IM2=IM2+2
15357           K(I,4)=KT1*MSTU(5)**2+IM1*MSTU(5)+ID1
15358           K(I,5)=KT2*MSTU(5)**2+IM2*MSTU(5)+ID2
15359           DO 280 IX=1,5
15360             K(I+2,IX)=K(I,IX)
15361             P(I+2,IX)=P(I,IX)
15362             V(I+2,IX)=V(I,IX)
15363   280     CONTINUE
15364           MCT(I+2,1)=MCT(I,1)
15365           MCT(I+2,2)=MCT(I,2)
15366   290   CONTINUE
15367         N=N+2
15368 C...Also update shifted-down pointers in IMI, IMISEP, and IPART.
15369         DO 300 JI=1,MINT(31)
15370           IF (IMI(1,JI,1).GE.IT) IMI(1,JI,1)=IMI(1,JI,1)+2
15371           IF (IMI(1,JI,2).GE.IT) IMI(1,JI,2)=IMI(1,JI,2)+2
15372           IF (IMI(2,JI,1).GE.IT) IMI(2,JI,1)=IMI(2,JI,1)+2
15373           IF (IMI(2,JI,2).GE.IT) IMI(2,JI,2)=IMI(2,JI,2)+2
15374           IF (JI.GE.MI) IMISEP(JI)=IMISEP(JI)+2
15375 C...Also update companion pointers to the present mother.
15376           IF (IMI(JS,JI,2).EQ.IS) IMI(JS,JI,2)=IM
15377   300   CONTINUE
15378         DO 310 IFS=1,NPART
15379           IF (IPART(IFS).GE.IT) IPART(IFS)=IPART(IFS)+2
15380   310   CONTINUE
15381 C...Zero entries dedicated for new timelike and mother partons.
15382         DO 330 I=IT,IT+1
15383           DO 320 J=1,5
15384             K(I,J)=0
15385             P(I,J)=0D0
15386             V(I,J)=0D0
15387   320     CONTINUE
15388           MCT(I,1)=0
15389           MCT(I,2)=0
15390   330   CONTINUE
15391  
15392 C...Define timelike and new mother partons. History.
15393         K(IT,1)=3
15394         K(IT,2)=KFLCMX
15395         K(IM,1)=14
15396         K(IM,2)=KFLAMX
15397         K(IS,3)=IM
15398         K(IT,3)=IM
15399 C...Set mother origin = side.
15400         K(IM,3)=MINT(83)+JS+2
15401         IF(MI.GE.2) K(IM,3)=MINT(83)+JS
15402  
15403 C...Define colour flow of branching.
15404         IM1=IM
15405         IM2=IM
15406 C...q -> q + gamma.
15407         IF(K(IT,2).EQ.22) THEN
15408           K(IT,1)=1
15409           ID1=IS
15410           ID2=IS
15411 C...q -> q + g.
15412         ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5.AND.K(IT,2).EQ.21) THEN
15413           ID1=IT
15414           ID2=IS
15415 C...q -> g + q.
15416         ELSEIF(K(IM,2).GT.0.AND.K(IM,2).LE.5) THEN
15417           ID1=IS
15418           ID2=IT
15419 C...qbar -> qbar + g.
15420         ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5.AND.K(IT,2).EQ.21) THEN
15421           ID1=IS
15422           ID2=IT
15423 C...qbar -> g + qbar.
15424         ELSEIF(K(IM,2).LT.0.AND.K(IM,2).GE.-5) THEN
15425           ID1=IT
15426           ID2=IS
15427 C...g -> g + g; g -> q + qbar..
15428         ELSEIF((K(IT,2).EQ.21.AND.PYR(0).GT.0.5D0).OR.K(IT,2).LT.0) THEN
15429           ID1=IS
15430           ID2=IT
15431         ELSE
15432           ID1=IT
15433           ID2=IS
15434         ENDIF
15435         IF(IM1.EQ.IM) K(IM1,4)=K(IM1,4)+ID1
15436         IF(IM2.EQ.IM) K(IM2,5)=K(IM2,5)+ID2
15437         K(ID1,4)=K(ID1,4)+MSTU(5)*IM1
15438         K(ID2,5)=K(ID2,5)+MSTU(5)*IM2
15439         IF(ID1.NE.ID2) THEN
15440           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
15441           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
15442         ENDIF
15443         IF(K(IT,1).EQ.1) THEN
15444           K(IT,4)=0
15445           K(IT,5)=0
15446         ENDIF
15447 C...Update IMI and colour tag arrays.
15448         IMI(JS,MI,1)=IM
15449         DO 340 MC=1,2
15450           MCT(IT,MC)=0
15451           MCT(IM,MC)=0
15452   340   CONTINUE
15453         DO 350 JCS=4,5
15454           KCS=JCS
15455 C...If mother flag not yet set for spacelike parton, trace it.
15456           IF (K(IS,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IS,-KCS,IM)
15457           IF(MINT(51).NE.0) RETURN
15458   350   CONTINUE
15459         DO 360 JCS=4,5
15460           KCS=JCS
15461 C...If mother flag not yet set for timelike parton, trace it.
15462           IF (K(IT,KCS)/MSTU(5)**2.LE.1) CALL PYCTTR(IT,KCS,IM)
15463           IF(MINT(51).NE.0) RETURN
15464   360   CONTINUE
15465  
15466 C...Boost recoiling parton to compensate for Q2 scale.
15467         BETAZ=SIDE*(1D0-(1D0+Q2BMX/SHAT)**2)/
15468      &  (1D0+(1D0+Q2BMX/SHAT)**2)
15469         IR=IMI(3-JS,MI,1)
15470         CALL PYROBO(IR,IR,0D0,0D0,0D0,0D0,BETAZ)
15471  
15472 C...Define system to be rotated and boosted
15473 C...(not including the 2 just added partons)
15474 C...(but including the docu lines for first interaction)
15475         IMIN=IMISEP(MI-1)+1
15476         IF (MI.EQ.1) IMIN=MINT(83)+5
15477         IMAX=IMISEP(MI)-2
15478  
15479 C...Rotate back system in phi to compensate for subsequent rotation.
15480         CALL PYROBO(IMIN,IMAX,0D0,-PHIMX,0D0,0D0,0D0)
15481  
15482 C...Define kinematics of new partons in old frame.
15483         IMAX=IMISEP(MI)
15484         P(IM,1)=SQRT(PT2AMX)*SHAT/(ZMX*(SHAT+Q2BMX))
15485         P(IM,3)=0.5D0*SQRT(SHAT)*((SHAT-Q2BMX)/((SHAT
15486      &       +Q2BMX)*ZMX)+(Q2BMX+RM2CMX)/SHAT)*SIDE
15487         P(IM,4)=SQRT(P(IM,1)**2+P(IM,3)**2)
15488         P(IT,1)=P(IM,1)
15489         P(IT,3)=P(IM,3)-0.5D0*(SHAT+Q2BMX)/SQRT(SHAT)*SIDE
15490         P(IT,4)=SQRT(P(IT,1)**2+P(IT,3)**2+RM2CMX)
15491         P(IT,5)=SQRT(RM2CMX)
15492  
15493 C...Update internal line, now spacelike
15494         P(IS,1)=P(IM,1)-P(IT,1)
15495         P(IS,2)=P(IM,2)-P(IT,2)
15496         P(IS,3)=P(IM,3)-P(IT,3)
15497         P(IS,4)=P(IM,4)-P(IT,4)
15498         P(IS,5)=P(IS,4)**2-P(IS,1)**2-P(IS,2)**2-P(IS,3)**2
15499 C...Represent spacelike virtualities as -sqrt(abs(Q2)) .
15500         IF (P(IS,5).LT.0D0) THEN
15501           P(IS,5)=-SQRT(ABS(P(IS,5)))
15502         ELSE
15503           P(IS,5)=SQRT(P(IS,5))
15504         ENDIF
15505  
15506 C...Boost entire system and rotate to new frame.
15507 C...(including docu lines)
15508         BETAX=(P(IM,1)+P(IR,1))/(P(IM,4)+P(IR,4))
15509         BETAZ=(P(IM,3)+P(IR,3))/(P(IM,4)+P(IR,4))
15510         IF(BETAX**2+BETAZ**2.GE.1D0) THEN
15511           CALL PYERRM(1,'(PYPTIS:) boost bigger than unity')
15512           MINT(51)=1
15513           IFAIL=-1
15514           RETURN
15515         ENDIF
15516         CALL PYROBO(IMIN,IMAX,0D0,0D0,-BETAX,0D0,-BETAZ)
15517         I1=IMI(1,MI,1)
15518         THETA=PYANGL(P(I1,3),P(I1,1))
15519         CALL PYROBO(IMIN,IMAX,-THETA,PHIMX,0D0,0D0,0D0)
15520  
15521 C...Global statistics.
15522         MINT(352)=MINT(352)+1
15523         VINT(352)=VINT(352)+SQRT(P(IT,1)**2+P(IT,2)**2)
15524         IF (MINT(352).EQ.1) VINT(357)=SQRT(P(IT,1)**2+P(IT,2)**2)
15525  
15526 C...Add parton with relevant pT scale for timelike shower.
15527         IF (K(IT,2).NE.22) THEN
15528           NPART=NPART+1
15529           IPART(NPART)=IT
15530           PTPART(NPART)=SQRT(PT2AMX)
15531         ENDIF
15532  
15533 C...Update saved variables.
15534         SHTNOW(MIMX)=SHTNOW(MIMX)/ZMX
15535         NISGEN(JSMX,MIMX)=NISGEN(JSMX,MIMX)+1
15536         XMI(JSMX,MIMX)=XMI(JSMX,MIMX)/ZMX
15537         PT2SAV(JSMX,MIMX)=PT2MX
15538         ZSAV(JS,MIMX)=ZMX
15539  
15540         KSA=IABS(K(IS,2))
15541         KMA=IABS(K(IM,2))
15542         IF (KSA.EQ.21.AND.KMA.GE.1.AND.KMA.LE.5) THEN
15543 C...Gluon reconstructs to quark.
15544 C...Decide whether newly created quark is valence or sea:
15545           MINT(30)=JS
15546           CALL PYPTMI(2,PT2NOW,PTDUM1,PTDUM2,IFAIL)
15547           IF(MINT(51).NE.0) RETURN
15548         ENDIF
15549         IF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.EQ.21) THEN
15550 C...Quark reconstructs to gluon.
15551 C...Now some guy may have lost his companion. Check.
15552           ICMP=IMI(JS,MI,2)
15553           IF (ICMP.GT.0) THEN
15554             CALL PYERRM(9,'(PYPTIS:) Sorry, companion quark radiated'
15555      &           //' away. Cannot handle that yet. Giving up.')
15556             MINT(51)=1
15557             RETURN
15558           ELSEIF(ICMP.LT.0) THEN
15559 C...A sea quark with companion still in BR was reconstructed to a gluon.
15560 C...Companion should now be removed from the beam remnant.
15561 C...(Momentum integral is automatically updated in next call to PYPDFU.)
15562             ICMP=-ICMP
15563             IFL=-K(IS,2)
15564             DO 380 JCMP=ICMP,NVC(JS,IFL)-1
15565               XASSOC(JS,IFL,JCMP)=XASSOC(JS,IFL,JCMP+1)
15566               DO 370 JI=1,MINT(31)
15567                 KMI=-IMI(JS,JI,2)
15568                 JFL=-K(IMI(JS,JI,1),2)
15569                 IF (KMI.EQ.JCMP+1.AND.JFL.EQ.IFL) IMI(JS,JI,2)=IMI(JS,JI
15570      &               ,2)+1
15571   370         CONTINUE
15572   380       CONTINUE
15573             NVC(JS,IFL)=NVC(JS,IFL)-1
15574           ENDIF
15575 C...Set gluon IMI(JS,MI,2) = 0.
15576           IMI(JS,MI,2)=0
15577         ELSEIF(KSA.GE.1.AND.KSA.LE.5.AND.KMA.NE.21) THEN
15578 C...Quark reconstructing to quark. If sea with companion still in BR
15579 C...then update associated x value.
15580 C...(Momentum integral is automatically updated in next call to PYPDFU.)
15581           IF (IMI(JS,MI,2).LT.0) THEN
15582             ICMP=-IMI(JS,MI,2)
15583             IFL=-K(IS,2)
15584             XASSOC(JS,IFL,ICMP)=XMI(JSMX,MIMX)
15585           ENDIF
15586         ENDIF
15587  
15588       ENDIF
15589  
15590 C...If reached this point, normal exit.
15591   390 IFAIL=0
15592  
15593       RETURN
15594       END
15595  
15596 C*********************************************************************
15597  
15598 C...PYMEMX
15599 C...Generates maximum ME weight in some initial-state showers.
15600 C...Inparameter MECOR: kind of hard scattering process
15601 C...Outparameter WTFF: maximum weight for fermion -> fermion
15602 C...             WTGF: maximum weight for gluon/photon -> fermion
15603 C...             WTFG: maximum weight for fermion -> gluon/photon
15604 C...             WTGG: maximum weight for gluon -> gluon
15605  
15606       SUBROUTINE PYMEMX(MECOR,WTFF,WTGF,WTFG,WTGG)
15607  
15608 C...Double precision and integer declarations.
15609       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15610       IMPLICIT INTEGER(I-N)
15611       INTEGER PYK,PYCHGE,PYCOMP
15612 C...Commonblocks.
15613       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15614       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15615       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15616       COMMON/PYINT1/MINT(400),VINT(400)
15617       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15618       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
15619  
15620 C...Default maximum weight.
15621       WTFF=1D0
15622       WTGF=1D0
15623       WTFG=1D0
15624       WTGG=1D0
15625  
15626 C...Select maximum weight by process.
15627       IF(MECOR.EQ.1) THEN
15628         WTFF=1D0
15629         WTGF=3D0
15630       ELSEIF(MECOR.EQ.2) THEN
15631         WTFG=1D0
15632         WTGG=1D0
15633       ENDIF
15634  
15635       RETURN
15636       END
15637  
15638 C*********************************************************************
15639  
15640 C...PYMEWT
15641 C...Calculates actual ME weight in some initial-state showers.
15642 C...Inparameter MECOR: kind of hard scattering process
15643 C...            IFLCB: flavour combination of branching,
15644 C...                   1 for fermion -> fermion,
15645 C...                   2 for gluon/photon -> fermion
15646 C...                   3 for fermion -> gluon/photon,
15647 C...                   4 for gluon -> gluon
15648 C...            Q2:    Q2 value of shower branching
15649 C...            Z:     Z value of branching
15650 C...In+outparameter PHIBR: azimuthal angle of branching
15651 C...Outparameter WTME: actual ME weight
15652  
15653       SUBROUTINE PYMEWT(MECOR,IFLCB,Q2,Z,PHIBR,WTME)
15654  
15655 C...Double precision and integer declarations.
15656       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15657       IMPLICIT INTEGER(I-N)
15658       INTEGER PYK,PYCHGE,PYCOMP
15659 C...Commonblocks.
15660       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15661       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15662       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15663       COMMON/PYINT1/MINT(400),VINT(400)
15664       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15665       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/
15666  
15667 C...Default output.
15668       WTME=1D0
15669  
15670 C...Define kinematics of shower branching in Mandelstam variables.
15671       SQM=VINT(44)
15672       SH=SQM/Z
15673       TH=-Q2
15674       UH=Q2-SQM*(1D0-Z)/Z
15675  
15676 C...Matrix-element corrections for f + fbar -> s-channel vector boson.
15677       IF(MECOR.EQ.1) THEN
15678         IF(IFLCB.EQ.1) THEN
15679           WTME=(TH**2+UH**2+2D0*SQM*SH)/(SH**2+SQM**2)
15680         ELSEIF(IFLCB.EQ.2) THEN
15681           WTME=(SH**2+TH**2+2D0*SQM*UH)/((SH-SQM)**2+SQM**2)
15682         ENDIF
15683  
15684 C...Matrix-element corrections for g + g -> Higgs (h0, H0, A0).
15685       ELSEIF(MECOR.EQ.2) THEN
15686         IF(IFLCB.EQ.3) THEN
15687           WTME=(SH**2+UH**2)/(SH**2+(SH-SQM)**2)
15688         ELSEIF(IFLCB.EQ.4) THEN
15689           WTME=0.5D0*(SH**4+UH**4+TH**4+SQM**4)/(SH**2-SQM*(SH-SQM))**2
15690         ENDIF
15691 
15692 C...Matrix-element corrections for q + qbar -> Higgs (h0)
15693       ELSEIF(MECOR.EQ.3) THEN
15694         IF(IFLCB.EQ.2) THEN
15695           WTME=(SH**2+TH**2+2D0*(SQM-TH)*(SQM-SH))/
15696      1      (SH**2+2D0*SQM*(SQM-SH))
15697         ENDIF
15698       ENDIF
15699  
15700       RETURN
15701       END
15702  
15703 C*********************************************************************
15704  
15705 C...PYPTMI
15706 C...Handles the generation of additional interactions in the new
15707 C...multiple interactions framework.
15708 C...MODE=-1 : Initalize MI from scratch.
15709 C...MODE= 0 : Generate trial interaction. Start at PT2NOW, solve
15710 C...         Sudakov for PT2, abort if below PT2CUT.
15711 C...MODE= 1 : Accept interaction at PT2NOW and store variables.
15712 C...MODE= 2 : Decide sea/val/cmp for kicked-out quark at PT2NOW
15713 C...PT2NOW  : Starting (max) PT2 scale for evolution.
15714 C...PT2CUT  : Lower limit for evolution.
15715 C...PT2     : Result of evolution. Generated PT2 for trial interaction.
15716 C...IFAIL   : Status return code.
15717 C...         = 0: All is well.
15718 C...         < 0: Phase space exhausted, generation to be terminated.
15719 C...         > 0: Additional interaction vetoed, but continue evolution.
15720  
15721       SUBROUTINE PYPTMI(MODE,PT2NOW,PT2CUT,PT2,IFAIL)
15722 C...Double precision and integer declarations.
15723       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
15724       IMPLICIT INTEGER(I-N)
15725       INTEGER PYK,PYCHGE,PYCOMP
15726 C...Parameter statement for maximum size of showers.
15727       PARAMETER (MAXNUR=1000)
15728 C...Commonblocks.
15729       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
15730       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
15731       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
15732       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
15733       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
15734       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
15735       COMMON/PYINT1/MINT(400),VINT(400)
15736       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
15737       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
15738       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
15739       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
15740       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
15741      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
15742      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
15743       COMMON/PYISMX/MIMX,JSMX,KFLAMX,KFLCMX,KFBEAM(2),NISGEN(2,240),
15744      &     PT2MX,PT2AMX,ZMX,RM2CMX,Q2BMX,PHIMX
15745       COMMON/PYCTAG/NCT,MCT(4000,2)
15746 C...Local arrays and saved variables.
15747       DIMENSION WDTP(0:400),WDTE(0:400,0:5),XPQ(-25:25)
15748  
15749       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,
15750      &     /PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/,/PYINTM/,
15751      &     /PYISMX/,/PYCTAG/
15752       SAVE XT2FAC,SIGS
15753  
15754       IFAIL=0
15755 C...Set MI subprocess = QCD 2 -> 2.
15756       ISUB=96
15757  
15758 C----------------------------------------------------------------------
15759 C...MODE=-1: Initialize from scratch
15760       IF (MODE.EQ.-1) THEN
15761 C...Initialize PT2 array.
15762         PT2MI(1)=VINT(54)
15763 C...Initialize list of incoming beams and partons from two sides.
15764         DO 110 JS=1,2
15765           DO 100 MI=1,240
15766             IMI(JS,MI,1)=0
15767             IMI(JS,MI,2)=0
15768   100     CONTINUE
15769           NMI(JS)=1
15770           IMI(JS,1,1)=MINT(84)+JS
15771           IMI(JS,1,2)=0
15772           XMI(JS,1)=VINT(40+JS)
15773 C...Rescale x values to fractions of photon energy.
15774           IF(MINT(18+JS).EQ.1) XMI(JS,1)=VINT(40+JS)/VINT(154+JS)
15775 C...Hard reset: hard interaction initiators motherless by definition.
15776           K(MINT(84)+JS,3)=2+JS
15777           K(MINT(84)+JS,4)=MOD(K(MINT(84)+JS,4),MSTU(5))
15778           K(MINT(84)+JS,5)=MOD(K(MINT(84)+JS,5),MSTU(5))
15779   110   CONTINUE
15780         IMISEP(0)=MINT(84)
15781         IMISEP(1)=N
15782         IF (MOD(MSTP(81),10).GE.1) THEN
15783           IF(MSTP(82).LE.1) THEN
15784             SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0
15785      &           ,5))
15786             IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
15787      &           VINT(317)/(VINT(318)*VINT(320))
15788             XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
15789           ELSE
15790             XT2FAC=VINT(146)*VINT(148)*XSEC(ISUB,1)/
15791      &           MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
15792           ENDIF
15793         ENDIF
15794 C...Zero entries relating to scatterings beyond the first.
15795         DO 120 MI=2,240
15796           IMI(1,MI,1)=0
15797           IMI(2,MI,1)=0
15798           IMI(1,MI,2)=0
15799           IMI(2,MI,2)=0
15800           IMISEP(MI)=IMISEP(1)
15801           PT2MI(MI)=0D0
15802           XMI(1,MI)=0D0
15803           XMI(2,MI)=0D0
15804   120   CONTINUE
15805 C...Initialize factors for PDF reshaping.
15806         DO 140 JS=1,2
15807           KFBEAM(JS)=MINT(10+JS)
15808           IF(MINT(18+JS).EQ.1) KFBEAM(JS)=22
15809           KFABM=IABS(KFBEAM(JS))
15810           KFSBM=ISIGN(1,KFBEAM(JS))
15811  
15812 C...Zero flavour content of incoming beam particle.
15813           KFIVAL(JS,1)=0
15814           KFIVAL(JS,2)=0
15815           KFIVAL(JS,3)=0
15816 C...  Flavour content of baryon.
15817           IF(KFABM.GT.1000) THEN
15818             KFIVAL(JS,1)=KFSBM*MOD(KFABM/1000,10)
15819             KFIVAL(JS,2)=KFSBM*MOD(KFABM/100,10)
15820             KFIVAL(JS,3)=KFSBM*MOD(KFABM/10,10)
15821 C...  Flavour content of pi+-, K+-.
15822           ELSEIF(KFABM.EQ.211) THEN
15823             KFIVAL(JS,1)=KFSBM*2
15824             KFIVAL(JS,2)=-KFSBM
15825           ELSEIF(KFABM.EQ.321) THEN
15826             KFIVAL(JS,1)=-KFSBM*3
15827             KFIVAL(JS,2)=KFSBM*2
15828 C...  Flavour content of pi0, gamma, K0S, K0L not defined yet.
15829           ENDIF
15830  
15831 C...Zero initial valence and companion content.
15832           DO 130 IFL=-6,6
15833             NVC(JS,IFL)=0
15834   130     CONTINUE
15835   140   CONTINUE
15836 C...Set up colour line tags starting from hard interaction initiators.
15837         NCT=0
15838 C...Reset colour tag array and colour processing flags.
15839         DO 150 I=IMISEP(0)+1,N
15840           MCT(I,1)=0
15841           MCT(I,2)=0
15842           K(I,4)=MOD(K(I,4),MSTU(5)**2)
15843           K(I,5)=MOD(K(I,5),MSTU(5)**2)
15844   150   CONTINUE
15845 C...  Consider each side in turn.
15846         DO 170 JS=1,2
15847           I1=IMI(JS,1,1)
15848           I2=IMI(3-JS,1,1)
15849           DO 160 JCS=4,5
15850             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
15851      &           GOTO 160
15852             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 160
15853             KCS=JCS
15854             CALL PYCTTR(I1,KCS,I2)
15855             IF(MINT(51).NE.0) RETURN
15856   160     CONTINUE
15857   170   CONTINUE
15858  
15859 C...Range checking for companion quark pdf large-x param.
15860         IF (MSTP(87).LT.0) THEN
15861           CALL PYERRM(19,'(PYPTMI:) MSTP(87) out of range. Forced'//
15862      &         ' MSTP(87)=0')
15863           MSTP(87)=0
15864         ELSEIF (MSTP(87).GT.4) THEN
15865           CALL PYERRM(19,'(PYPTMI:) MSTP(87) out of range. Forced'//
15866      &         ' MSTP(87)=4')
15867           MSTP(87)=4
15868         ENDIF
15869  
15870 C----------------------------------------------------------------------
15871 C...MODE=0: Generate trial interaction. Return codes:
15872 C...IFAIL < 0: Phase space exhausted, generation to be terminated.
15873 C...IFAIL = 0: Additional interaction generated at PT2.
15874 C...IFAIL > 0: Additional interaction vetoed, but continue evolution.
15875       ELSEIF (MODE.EQ.0) THEN
15876 C...Abolute MI max scale = VINT(62)
15877         XT2=4D0*MIN(PT2NOW,VINT(62))/VINT(2)
15878   180   IF(MSTP(82).LE.1) THEN
15879           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
15880           IF(XT2.LT.VINT(149)) IFAIL=-2
15881         ELSE
15882           IF(XT2.LE.0.01001D0*VINT(149)) THEN
15883             IFAIL=-3
15884           ELSE
15885             XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
15886      &           LOG(PYR(0)))-VINT(149)
15887           ENDIF
15888         ENDIF
15889 C...Also exit if below lower limit or if higher trial branching
15890 C...already found.
15891         PT2=0.25D0*VINT(2)*XT2
15892         IF (PT2.LE.PT2CUT) IFAIL=-4
15893         IF (PT2.LE.PT2MX) IFAIL=-5
15894         IF (IFAIL.NE.0) THEN
15895           PT2=0D0
15896           RETURN
15897         ENDIF
15898         IF(MSTP(82).GE.2) PT2=MAX(0.25D0*VINT(2)*0.01D0*VINT(149),PT2)
15899         VINT(25)=4D0*PT2/VINT(2)
15900         XT2=VINT(25)
15901  
15902 C...Choose tau and y*. Calculate cos(theta-hat).
15903         IF(PYR(0).LE.COEF(ISUB,1)) THEN
15904           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
15905           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
15906         ELSE
15907           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
15908         ENDIF
15909         VINT(21)=TAU
15910 C...New: require shat > 1.
15911         IF(TAU*VINT(2).LT.1D0) GOTO 180
15912         CALL PYKLIM(2)
15913         RYST=PYR(0)
15914         MYST=1
15915         IF(RYST.GT.COEF(ISUB,8)) MYST=2
15916         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
15917         CALL PYKMAP(2,MYST,PYR(0))
15918         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
15919  
15920 C...Check that x not used up. Accept or reject kinematical variables.
15921         X1M=SQRT(TAU)*EXP(VINT(22))
15922         X2M=SQRT(TAU)*EXP(-VINT(22))
15923         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 180
15924         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
15925         CALL PYSIGH(NCHN,SIGS)
15926         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
15927         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 180
15928         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS/VINT(320)
15929  
15930 C...Save if highest PT so far.
15931         IF (PT2.GT.PT2MX) THEN
15932           JSMX=0
15933           MIMX=MINT(31)+1
15934           PT2MX=PT2
15935         ENDIF
15936  
15937 C----------------------------------------------------------------------
15938 C...MODE=1: Generate and save accepted scattering.
15939       ELSEIF (MODE.EQ.1) THEN
15940         PT2=PT2NOW
15941 C...Reset K, P, V, and MCT vectors.
15942         DO 200 I=N+1,N+4
15943           DO 190 J=1,5
15944             K(I,J)=0
15945             P(I,J)=0D0
15946             V(I,J)=0D0
15947   190     CONTINUE
15948           MCT(I,1)=0
15949           MCT(I,2)=0
15950   200   CONTINUE
15951  
15952         NTRY=0
15953 C...Choose flavour of reacting partons (and subprocess).
15954   210   NTRY=NTRY+1
15955         IF (NTRY.GT.50) THEN
15956           CALL PYERRM(9,'(PYPTMI:) Unable to generate additional '
15957      &               //'interaction. Giving up!')
15958           MINT(51)=1
15959           RETURN
15960         ENDIF
15961         RSIGS=SIGS*PYR(0)
15962         DO 220 ICHN=1,NCHN
15963           KFL1=ISIG(ICHN,1)
15964           KFL2=ISIG(ICHN,2)
15965           ICONMI=ISIG(ICHN,3)
15966           RSIGS=RSIGS-SIGH(ICHN)
15967           IF(RSIGS.LE.0D0) GOTO 230
15968   220   CONTINUE
15969  
15970 C...Reassign to appropriate process codes.
15971   230   ISUBMI=ICONMI/10
15972         ICONMI=MOD(ICONMI,10)
15973  
15974 C...Choose new quark flavour for annihilation graphs
15975         IF(ISUBMI.EQ.12.OR.ISUBMI.EQ.53) THEN
15976           SH=VINT(21)*VINT(2)
15977           CALL PYWIDT(21,SH,WDTP,WDTE)
15978   240     RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
15979           DO 250 I=1,MDCY(21,3)
15980             KFLF=KFDP(I+MDCY(21,2)-1,1)
15981             RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
15982             IF(RKFL.LE.0D0) GOTO 260
15983   250     CONTINUE
15984   260     IF(ISUBMI.EQ.53.AND.ICONMI.LE.2) THEN
15985             IF(KFLF.GE.4) GOTO 240
15986           ELSEIF(ISUBMI.EQ.53.AND.ICONMI.LE.4) THEN
15987             KFLF=4
15988             ICONMI=ICONMI-2
15989           ELSEIF(ISUBMI.EQ.53) THEN
15990             KFLF=5
15991             ICONMI=ICONMI-4
15992           ENDIF
15993         ENDIF
15994  
15995 C...Final state flavours and colour flow: default values
15996         JS=1
15997         KFL3=KFL1
15998         KFL4=KFL2
15999         KCC=20
16000         KCS=ISIGN(1,KFL1)
16001  
16002         IF(ISUBMI.EQ.11) THEN
16003 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
16004           KCC=ICONMI
16005           IF(KFL1*KFL2.LT.0) KCC=KCC+2
16006  
16007         ELSEIF(ISUBMI.EQ.12) THEN
16008 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
16009           KFL3=ISIGN(KFLF,KFL1)
16010           KFL4=-KFL3
16011           KCC=4
16012  
16013         ELSEIF(ISUBMI.EQ.13) THEN
16014 C...f + fbar -> g + g; th arbitrary
16015           KFL3=21
16016           KFL4=21
16017           KCC=ICONMI+4
16018  
16019         ELSEIF(ISUBMI.EQ.28) THEN
16020 C...f + g -> f + g; th = (p(f)-p(f))**2
16021           IF(KFL1.EQ.21) JS=2
16022           KCC=ICONMI+6
16023           IF(KFL1.EQ.21) KCC=KCC+2
16024           IF(KFL1.NE.21) KCS=ISIGN(1,KFL1)
16025           IF(KFL2.NE.21) KCS=ISIGN(1,KFL2)
16026  
16027         ELSEIF(ISUBMI.EQ.53) THEN
16028 C...g + g -> f + fbar; th arbitrary
16029           KCS=(-1)**INT(1.5D0+PYR(0))
16030           KFL3=ISIGN(KFLF,KCS)
16031           KFL4=-KFL3
16032           KCC=ICONMI+10
16033  
16034         ELSEIF(ISUBMI.EQ.68) THEN
16035 C...g + g -> g + g; th arbitrary
16036           KCC=ICONMI+12
16037           KCS=(-1)**INT(1.5D0+PYR(0))
16038         ENDIF
16039  
16040 C...Check that massive sea quarks have non-zero phase space for g -> Q Q
16041         IF (IABS(KFL3).EQ.4.OR.IABS(KFL4).EQ.4.OR.IABS(KFL3).EQ.5
16042      &       .OR.IABS(KFL4).EQ.5) THEN
16043           RMMAX2=MAX(PMAS(PYCOMP(KFL3),1),PMAS(PYCOMP(KFL4),1))**2
16044           IF (PT2.LE.1.05*RMMAX2) THEN
16045             IF (NTRY.EQ.2) CALL PYERRM(9,'(PYPTMI:) Heavy quarks'
16046      &           //' too close to threshold (2nd try).')
16047             GOTO 210
16048           ENDIF
16049         ENDIF
16050  
16051 C...Store flavours of scattering.
16052         MINT(13)=KFL1
16053         MINT(14)=KFL2
16054         MINT(15)=KFL1
16055         MINT(16)=KFL2
16056         MINT(21)=KFL3
16057         MINT(22)=KFL4
16058  
16059 C...Set flavours and mothers of scattering partons.
16060         K(N+1,1)=14
16061         K(N+2,1)=14
16062         K(N+3,1)=3
16063         K(N+4,1)=3
16064         K(N+1,2)=KFL1
16065         K(N+2,2)=KFL2
16066         K(N+3,2)=KFL3
16067         K(N+4,2)=KFL4
16068         K(N+1,3)=MINT(83)+1
16069         K(N+2,3)=MINT(83)+2
16070         K(N+3,3)=N+1
16071         K(N+4,3)=N+2
16072  
16073 C...Store colour connection indices.
16074         DO 270 J=1,2
16075           JC=J
16076           IF(KCS.EQ.-1) JC=3-J
16077           IF(ICOL(KCC,1,JC).NE.0) K(N+1,J+3)=N+ICOL(KCC,1,JC)
16078           IF(ICOL(KCC,2,JC).NE.0) K(N+2,J+3)=N+ICOL(KCC,2,JC)
16079           IF(ICOL(KCC,3,JC).NE.0) K(N+3,J+3)=MSTU(5)*(N+ICOL(KCC,3,JC))
16080           IF(ICOL(KCC,4,JC).NE.0) K(N+4,J+3)=MSTU(5)*(N+ICOL(KCC,4,JC))
16081   270   CONTINUE
16082  
16083 C...Store incoming and outgoing partons in their CM-frame.
16084         SHR=SQRT(VINT(21))*VINT(1)
16085         P(N+1,3)=0.5D0*SHR
16086         P(N+1,4)=0.5D0*SHR
16087         P(N+2,3)=-0.5D0*SHR
16088         P(N+2,4)=0.5D0*SHR
16089         P(N+3,5)=PYMASS(K(N+3,2))
16090         P(N+4,5)=PYMASS(K(N+4,2))
16091         IF(P(N+3,5)+P(N+4,5).GE.SHR) THEN
16092           IFAIL=1
16093           RETURN
16094         ENDIF
16095         P(N+3,4)=0.5D0*(SHR+(P(N+3,5)**2-P(N+4,5)**2)/SHR)
16096         P(N+3,3)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,5)**2))
16097         P(N+4,4)=SHR-P(N+3,4)
16098         P(N+4,3)=-P(N+3,3)
16099  
16100 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
16101         PHI=PARU(2)*PYR(0)
16102         CALL PYROBO(N+3,N+4,ACOS(VINT(23)),PHI,0D0,0D0,0D0)
16103  
16104 C...Global statistics.
16105         MINT(351)=MINT(351)+1
16106         VINT(351)=VINT(351)+SQRT(P(N+3,1)**2+P(N+3,2)**2)
16107         IF (MINT(351).EQ.1) VINT(356)=SQRT(P(N+3,1)**2+P(N+3,2)**2)
16108  
16109 C...Keep track of loose colour ends and information on scattering.
16110         MINT(31)=MINT(31)+1
16111         MINT(36)=MINT(31)
16112         PT2MI(MINT(36))=PT2
16113         IMISEP(MINT(31))=N+4
16114         DO 280 JS=1,2
16115           IMI(JS,MINT(31),1)=N+JS
16116           IMI(JS,MINT(31),2)=0
16117           XMI(JS,MINT(31))=VINT(40+JS)
16118           NMI(JS)=NMI(JS)+1
16119 C...Update cumulative counters
16120           VINT(142+JS)=VINT(142+JS)-VINT(40+JS)
16121           VINT(150+JS)=VINT(150+JS)+VINT(40+JS)
16122   280   CONTINUE
16123  
16124 C...Add to list of final state partons
16125         IPART(NPART+1)=N+3
16126         IPART(NPART+2)=N+4
16127         PTPART(NPART+1)=SQRT(PT2)
16128         PTPART(NPART+2)=SQRT(PT2)
16129         NPART=NPART+2
16130  
16131 C...Initialize ISR
16132         NISGEN(1,MINT(31))=0
16133         NISGEN(2,MINT(31))=0
16134  
16135 C...Update ER
16136         N=N+4
16137         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
16138           CALL PYERRM(11,'(PYMIGN:) no more memory left in PYJETS')
16139           MINT(51)=1
16140           RETURN
16141         ENDIF
16142  
16143 C...Finally, assign colour tags to new partons
16144         DO 300 JS=1,2
16145           I1=IMI(JS,MINT(31),1)
16146           I2=IMI(3-JS,MINT(31),1)
16147           DO 290 JCS=4,5
16148             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
16149      &           GOTO 290
16150             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 290
16151             KCS=JCS
16152             CALL PYCTTR(I1,KCS,I2)
16153             IF(MINT(51).NE.0) RETURN
16154   290     CONTINUE
16155   300   CONTINUE
16156  
16157 C----------------------------------------------------------------------
16158 C...MODE=2: Decide whether quarks in last scattering were valence,
16159 C...companion, or sea.
16160       ELSEIF (MODE.EQ.2) THEN
16161         JS=MINT(30)
16162         MI=MINT(36)
16163         PT2=PT2NOW
16164         KFSBM=ISIGN(1,MINT(10+JS))
16165         IFL=K(IMI(JS,MI,1),2)
16166         IMI(JS,MI,2)=0
16167         IF (IABS(IFL).GE.6) THEN
16168           IF (IABS(IFL).EQ.6) THEN
16169             CALL PYERRM(29,'(PYPTMI:) top in initial state!')
16170           ENDIF
16171           RETURN
16172         ENDIF
16173 C...Get PDFs at X(rescaled) and PT2 of the current initiator.
16174 C...(Do not include the parton itself in the X rescaling.)
16175         X=XMI(JS,MI)
16176         XRSC=X/(VINT(142+JS)+X)
16177 C...Note: XPSVC = x*pdf.
16178         MINT(30)=JS
16179         CALL PYPDFU(KFBEAM(JS),XRSC,PT2,XPQ)
16180         SEA=XPSVC(IFL,-1)
16181         VAL=XPSVC(IFL,0) 
16182 C...Ensure that pdfs are positive definite   
16183         IF (SEA.LT.0D0) THEN
16184           CALL PYERRM(9,'(PYPTMI:) Sea distribution negative.')
16185           SEA=MAX(0D0,SEA)
16186         ELSEIF (VAL.LT.0D0) THEN
16187           CALL PYERRM(9,'(PYPTMI:) Val distribution negative.')
16188           VAL=MAX(0D0,VAL)          
16189         ENDIF
16190         CMP=0D0
16191         DO 310 IVC=1,NVC(JS,IFL)
16192           CMP=CMP+XPSVC(IFL,IVC)
16193   310   CONTINUE
16194  
16195         NTRY=0
16196 C...Decide (Extra factor x cancels in the dvision).
16197   320   RVCS=PYR(0)*(SEA+VAL+CMP)
16198         IVNOW=1
16199         NTRY=NTRY+1
16200   330   IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
16201 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
16202           IVNOW=0
16203           IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
16204           IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
16205           IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
16206           IF(KFIVAL(JS,1).EQ.0) THEN
16207             IF(KFBEAM(JS).EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
16208             IF(KFBEAM(JS).EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
16209             IF((KFBEAM(JS).EQ.130.OR.KFBEAM(JS).EQ.310).AND.
16210      &           (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
16211           ELSE
16212 C...Count down valence remaining. Do not count current scattering.
16213             DO 340 I1=1,NMI(JS)
16214               IF (I1.EQ.MINT(36)) GOTO 340
16215               IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
16216      &             IVNOW=IVNOW-1
16217   340       CONTINUE
16218           ENDIF
16219           IF(IVNOW.EQ.0) GOTO 330
16220 C...Mark valence.
16221           IMI(JS,MI,2)=0
16222 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
16223           IF(KFIVAL(JS,1).EQ.0) THEN
16224             IF(KFBEAM(JS).EQ.111.OR.KFBEAM(JS).EQ.22) THEN
16225               KFIVAL(JS,1)=IFL
16226               KFIVAL(JS,2)=-IFL
16227             ELSEIF(KFBEAM(JS).EQ.130.OR.KFBEAM(JS).EQ.310) THEN
16228               KFIVAL(JS,1)=IFL
16229               IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
16230               IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
16231             ENDIF
16232           ENDIF
16233  
16234         ELSEIF (RVCS.LE.VAL+SEA) THEN
16235 C...If sea, add opposite sign companion parton. Store X and I.
16236           NVC(JS,-IFL)=NVC(JS,-IFL)+1
16237           XASSOC(JS,-IFL,NVC(JS,-IFL))=XMI(JS,MI)
16238 C...Set pointer to companion
16239           IMI(JS,MI,2)=-NVC(JS,-IFL)
16240  
16241         ELSE
16242 C...If companion, check whether we've got any in the books
16243           IF (NVC(JS,IFL).EQ.0) THEN
16244             CMP=0D0
16245 C...Only report error first time for this event
16246             IF (NTRY.EQ.1) 
16247      &           CALL PYERRM(9,'(PYPTMI:) No cmp quark, but pdf != 0!')
16248 C...Try a few times
16249             IF (NTRY.LE.10) THEN
16250               GOTO 320
16251 C... But if it stil fails, abort this event
16252             ELSE
16253               MINT(51)=1
16254               RETURN
16255             ENDIF
16256           ENDIF
16257 C...If several possibilities, decide which one
16258           CMPSUM=VAL+SEA
16259           ISEL=0
16260   350     ISEL=ISEL+1
16261           CMPSUM=CMPSUM+XPSVC(IFL,ISEL)
16262           IF (RVCS.GT.CMPSUM.AND.ISEL.LT.NVC(JS,IFL)) GOTO 350
16263 C...Find original sea (anti-)quark. Do not consider current scattering.
16264           IASSOC=0
16265           DO 360 I1=1,NMI(JS)
16266             IF (I1.EQ.MINT(36)) GOTO 360
16267             IF (K(IMI(JS,I1,1),2).NE.-IFL) GOTO 360
16268             IF (-IMI(JS,I1,2).EQ.ISEL) THEN
16269               IMI(JS,MI,2)=IMI(JS,I1,1)
16270               IMI(JS,I1,2)=IMI(JS,MI,1)
16271             ENDIF
16272   360     CONTINUE
16273 C...Mark companion "out-kicked".
16274           XASSOC(JS,IFL,ISEL)=-XASSOC(JS,IFL,ISEL)
16275         ENDIF
16276  
16277       ENDIF
16278       RETURN
16279       END
16280  
16281 C*********************************************************************
16282  
16283 C...PYFCMP: Auxiliary to PYPDFU and PYPTIS.
16284 C...Giving the x*f pdf of a companion quark, with its partner at XS,
16285 C...using an approximate gluon density like (1-X)^NPOW/X. The value
16286 C...corresponds to an unrescaled range between 0 and 1-X.
16287  
16288       FUNCTION PYFCMP(XC,XS,NPOW)
16289       IMPLICIT NONE
16290       DOUBLE PRECISION XC, XS, Y, PYFCMP,FAC
16291       INTEGER NPOW
16292  
16293       PYFCMP=0D0
16294 C...Parent gluon momentum fraction
16295       Y=XC+XS
16296       IF (Y.GE.1D0) RETURN
16297 C...Common factor (includes factor XC, since PYFCMP=x*f)
16298       FAC=3D0*XC*XS*(XC**2+XS**2)/(Y**4)
16299 C...Store normalized companion x*f distribution.
16300       IF (NPOW.LE.0) THEN
16301         PYFCMP=FAC/(2D0-XS*(3D0-XS*(3D0-2D0*XS)))
16302       ELSEIF (NPOW.EQ.1) THEN
16303         PYFCMP=FAC*(1D0-Y)/(2D0+XS**2*(-3D0+XS)+3D0*XS*LOG(XS))
16304       ELSEIF (NPOW.EQ.2) THEN
16305         PYFCMP=FAC*(1D0-Y)**2/(2D0*((1D0-XS)*(1D0+XS*(4D0+XS))
16306      &       +3D0*XS*(1D0+XS)*LOG(XS)))
16307       ELSEIF (NPOW.EQ.3) THEN
16308         PYFCMP=FAC*(1D0-Y)**3*2D0/(4D0+27D0*XS-31D0*XS**3
16309      &       +6D0*XS*LOG(XS)*(3D0+2D0*XS*(3D0+XS)))
16310       ELSEIF (NPOW.GE.4) THEN
16311         PYFCMP=FAC*(1D0-Y)**4/(2D0*(1D0+2D0*XS)*((1D0-XS)*(1D0+
16312      &       XS*(10D0+XS))+6D0*XS*LOG(XS)*(1D0+XS)))
16313       ENDIF
16314       RETURN
16315       END
16316  
16317 C*********************************************************************
16318  
16319 C...PYPCMP: Auxiliary to PYPDFU.
16320 C...Giving the momentum integral of a companion quark, with its
16321 C...partner at XS, using an approximate gluon density like (1-x)^NPOW/x.
16322 C...The value corresponds to an unrescaled range between 0 and 1-XS.
16323  
16324       FUNCTION PYPCMP(XS,NPOW)
16325       IMPLICIT NONE
16326       DOUBLE PRECISION XS, PYPCMP
16327       INTEGER NPOW
16328       IF (XS.GE.1D0.OR.XS.LE.0D0) THEN
16329         PYPCMP=0D0
16330       ELSEIF (NPOW.LE.0) THEN
16331         PYPCMP=XS*(5D0+XS*(-9D0-2D0*XS*(-3D0+XS))+3D0*LOG(XS))
16332         PYPCMP=PYPCMP/((-1D0+XS)*(2D0+XS*(-1D0+2D0*XS)))
16333       ELSEIF (NPOW.EQ.1) THEN
16334         PYPCMP=-1D0-3D0*XS+(2D0*(-1D0+XS)**2*(1D0+XS+XS**2))
16335      &       /(2D0+XS**2*(XS-3D0)+3D0*XS*LOG(XS))
16336       ELSEIF (NPOW.EQ.2) THEN
16337         PYPCMP=XS*((1D0-XS)*(19D0+XS*(43D0+4D0*XS))
16338      &       +6D0*LOG(XS)*(1D0+6D0*XS+4D0*XS**2))
16339         PYPCMP=PYPCMP/(4D0*((XS-1D0)*(1D0+XS*(4D0+XS))
16340      &       -3D0*XS*LOG(XS)*(1+XS)))
16341       ELSEIF (NPOW.EQ.3) THEN
16342         PYPCMP=3D0*XS*((XS-1)*(7D0+XS*(28D0+13D0*XS))
16343      &       -2D0*LOG(XS)*(1D0+XS*(9D0+2D0*XS*(6D0+XS))))
16344         PYPCMP=PYPCMP/(4D0+27D0*XS-31D0*XS**3
16345      &       +6D0*XS*LOG(XS)*(3D0+2D0*XS*(3D0+XS)))
16346       ELSE
16347         PYPCMP=(-9D0*XS*(XS**2-1D0)*(5D0+XS*(24D0+XS))+12D0*XS*LOG(XS)
16348      &       *(1D0+2D0*XS)*(1D0+2D0*XS*(5D0+2D0*XS)))
16349         PYPCMP=PYPCMP/(8D0*(1D0+2D0*XS)*((XS-1D0)*(1D0+XS*(10D0+XS))
16350      &       -6D0*XS*LOG(XS)*(1D0+XS)))
16351       ENDIF
16352       RETURN
16353       END
16354  
16355 C*********************************************************************
16356  
16357 C...PYUPRE
16358 C...Rearranges contents of the HEPEUP commonblock so that
16359 C...mothers precede daughters and daughters of a decay are
16360 C...listed consecutively.
16361  
16362       SUBROUTINE PYUPRE
16363  
16364 C...Double precision and integer declarations.
16365       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16366       IMPLICIT INTEGER(I-N)
16367  
16368 C...User process event common block.
16369       INTEGER MAXNUP
16370       PARAMETER (MAXNUP=500)
16371       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
16372       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
16373       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
16374      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
16375      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
16376       SAVE /HEPEUP/
16377  
16378 C...Local arrays.
16379       DIMENSION NEWPOS(0:MAXNUP),IDUPT(MAXNUP),ISTUPT(MAXNUP),
16380      &MOTUPT(2,MAXNUP),ICOUPT(2,MAXNUP),PUPT(5,MAXNUP),
16381      &VTIUPT(MAXNUP),SPIUPT(MAXNUP)
16382  
16383 C...Check whether a rearrangement is required.
16384       NEED=0
16385       DO 100 IUP=1,NUP
16386         IF(MOTHUP(1,IUP).GT.IUP) NEED=NEED+1
16387   100 CONTINUE
16388       DO 110 IUP=2,NUP
16389         IF(MOTHUP(1,IUP).LT.MOTHUP(1,IUP-1)) NEED=NEED+1
16390   110 CONTINUE
16391  
16392       IF(NEED.NE.0) THEN
16393 C...Find the new order that particles should have.
16394         NEWPOS(0)=0
16395         NNEW=0
16396         INEW=-1
16397   120   INEW=INEW+1
16398         DO 130 IUP=1,NUP
16399           IF(MOTHUP(1,IUP).EQ.NEWPOS(INEW)) THEN
16400             NNEW=NNEW+1
16401             NEWPOS(NNEW)=IUP
16402           ENDIF
16403   130   CONTINUE
16404         IF(INEW.LT.NNEW.AND.INEW.LT.NUP) GOTO 120
16405         IF(NNEW.NE.NUP) THEN
16406           CALL PYERRM(2,
16407      &    '(PYUPRE:) failed to make sense of mother pointers in HEPEUP')
16408           RETURN
16409         ENDIF
16410  
16411 C...Copy old info into temporary storage.
16412         DO 150 I=1,NUP
16413           IDUPT(I)=IDUP(I)
16414           ISTUPT(I)=ISTUP(I)
16415           MOTUPT(1,I)=MOTHUP(1,I)
16416           MOTUPT(2,I)=MOTHUP(2,I)
16417           ICOUPT(1,I)=ICOLUP(1,I)
16418           ICOUPT(2,I)=ICOLUP(2,I)
16419           DO 140 J=1,5
16420             PUPT(J,I)=PUP(J,I)
16421   140     CONTINUE
16422           VTIUPT(I)=VTIMUP(I)
16423           SPIUPT(I)=SPINUP(I)
16424   150   CONTINUE
16425  
16426 C...Copy info back into HEPEUP in right order.
16427         DO 180 I=1,NUP
16428           IOLD=NEWPOS(I)
16429           IDUP(I)=IDUPT(IOLD)
16430           ISTUP(I)=ISTUPT(IOLD)
16431           MOTHUP(1,I)=0
16432           MOTHUP(2,I)=0
16433           DO 160 IMOT=1,I-1
16434             IF(MOTUPT(1,IOLD).EQ.NEWPOS(IMOT)) MOTHUP(1,I)=IMOT
16435             IF(MOTUPT(2,IOLD).EQ.NEWPOS(IMOT)) MOTHUP(2,I)=IMOT
16436   160     CONTINUE
16437           IF(MOTHUP(2,I).GT.0.AND.MOTHUP(2,I).LT.MOTHUP(1,I)) THEN
16438             MOTHSW=MOTHUP(1,I)
16439             MOTHUP(1,I)=MOTHUP(2,I)
16440             MOTHUP(2,I)=MOTHSW
16441           ENDIF
16442           ICOLUP(1,I)=ICOUPT(1,IOLD)
16443           ICOLUP(2,I)=ICOUPT(2,IOLD)
16444           DO 170 J=1,5
16445             PUP(J,I)=PUPT(J,IOLD)
16446   170     CONTINUE
16447           VTIMUP(I)=VTIUPT(IOLD)
16448           SPINUP(I)=SPIUPT(IOLD)
16449   180   CONTINUE
16450       ENDIF
16451  
16452 c...If incoming particles are massive recalculate to put them massless.
16453       IF(PUP(5,1).NE.0D0.OR.PUP(5,2).NE.0D0) THEN
16454         PPLUS=(PUP(4,1)+PUP(3,1))+(PUP(4,2)+PUP(3,2))
16455         PMINUS=(PUP(4,1)-PUP(3,1))+(PUP(4,2)-PUP(3,2))
16456         PUP(4,1)=0.5D0*PPLUS
16457         PUP(3,1)=PUP(4,1)
16458         PUP(5,1)=0D0
16459         PUP(4,2)=0.5D0*PMINUS
16460         PUP(3,2)=-PUP(4,2)
16461         PUP(5,2)=0D0
16462       ENDIF
16463  
16464       RETURN
16465       END
16466  
16467 C*********************************************************************
16468  
16469 C...PYADSH
16470 C...Administers the generation of successive final-state showers
16471 C...in external processes.
16472  
16473       SUBROUTINE PYADSH(NFIN)
16474  
16475 C...Double precision and integer declarations.
16476       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16477       IMPLICIT INTEGER(I-N)
16478       INTEGER PYK,PYCHGE,PYCOMP
16479 C...Parameter statement for maximum size of showers.
16480       PARAMETER (MAXNUR=1000)
16481 C...Commonblocks.
16482       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
16483       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
16484       COMMON/PYCTAG/NCT,MCT(4000,2)
16485       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16486       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16487       COMMON/PYINT1/MINT(400),VINT(400)
16488       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYPARS/,/PYINT1/
16489 C...Local array.
16490       DIMENSION IBEG(100),KSAV(100,5),PSUM(4),BETA(3)
16491  
16492 C...Set primary vertex.
16493       DO 100 J=1,5
16494         V(MINT(83)+5,J)=0D0
16495         V(MINT(83)+6,J)=0D0
16496         V(MINT(84)+1,J)=0D0
16497         V(MINT(84)+2,J)=0D0
16498   100 CONTINUE
16499  
16500 C...Isolate systems of particles with the same mother.
16501       NSYS=0
16502       IMS=-1
16503       DO 140 I=MINT(84)+3,NFIN
16504         IM=K(I,3)
16505         IF(IM.GT.0.AND.IM.LE.MINT(84)) IM=K(IM,3)
16506         IF(IM.NE.IMS) THEN
16507           NSYS=NSYS+1
16508           IBEG(NSYS)=I
16509           IMS=IM
16510         ENDIF
16511  
16512 C...Set production vertices.
16513         IF(IM.LE.MINT(83)+6.OR.(IM.GT.MINT(84).AND.IM.LE.MINT(84)+2))
16514      &  THEN
16515           DO 110 J=1,4
16516             V(I,J)=0D0
16517   110     CONTINUE
16518         ELSE
16519           DO 120 J=1,4
16520             V(I,J)=V(IM,J)+V(IM,5)*P(IM,J)/P(IM,5)
16521   120     CONTINUE
16522         ENDIF
16523         IF(MSTP(125).GE.1) THEN
16524           IDOC=I-MSTP(126)+4
16525           DO 130 J=1,5
16526             V(IDOC,J)=V(I,J)
16527   130     CONTINUE
16528         ENDIF
16529   140 CONTINUE
16530  
16531 C...End loop over systems. Return if no showers to be performed.
16532       IBEG(NSYS+1)=NFIN+1
16533       IF(MSTP(71).LE.0) RETURN
16534  
16535 C...Loop through systems of particles; check that sensible size.
16536       DO 270 ISYS=1,NSYS
16537         NSIZ=IBEG(ISYS+1)-IBEG(ISYS)
16538         IF(MINT(35).LE.2) THEN
16539           IF(NSIZ.EQ.1.AND.ISYS.EQ.1) THEN
16540             GOTO 270
16541           ELSEIF(NSIZ.LE.1) THEN
16542             CALL PYERRM(2,'(PYADSH:) only one particle in system')
16543             GOTO 270
16544           ELSEIF(NSIZ.GT.80) THEN
16545             CALL PYERRM(2,'(PYADSH:) more than 80 particles in system')
16546             GOTO 270
16547           ENDIF
16548         ENDIF
16549  
16550 C...Save status codes and daughters of showering particles; reset them.
16551         DO 150 J=1,4
16552           PSUM(J)=0D0
16553   150   CONTINUE
16554         DO 170 II=1,NSIZ
16555           I=IBEG(ISYS)-1+II
16556           KSAV(II,1)=K(I,1)
16557           IF(K(I,1).GT.10) THEN
16558             K(I,1)=1
16559             IF(KSAV(II,1).EQ.14) K(I,1)=3
16560           ENDIF
16561           IF(KSAV(II,1).LE.10) THEN
16562           ELSEIF(K(I,1).EQ.1) THEN
16563             KSAV(II,4)=K(I,4)
16564             KSAV(II,5)=K(I,5)
16565             K(I,4)=0
16566             K(I,5)=0
16567           ELSE
16568             KSAV(II,4)=MOD(K(I,4),MSTU(5))
16569             KSAV(II,5)=MOD(K(I,5),MSTU(5))
16570             K(I,4)=K(I,4)-KSAV(II,4)
16571             K(I,5)=K(I,5)-KSAV(II,5)
16572           ENDIF
16573           DO 160 J=1,4
16574             PSUM(J)=PSUM(J)+P(I,J)
16575   160     CONTINUE
16576   170   CONTINUE
16577  
16578 C...Perform shower.
16579         QMAX=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
16580      &  PSUM(3)**2))
16581         IF(ISYS.EQ.1) QMAX=MIN(QMAX,SQRT(PARP(71))*VINT(55))
16582         NSAV=N
16583         IF(MINT(35).LE.2) THEN
16584           IF(NSIZ.EQ.2) THEN
16585             CALL PYSHOW(IBEG(ISYS),IBEG(ISYS)+1,QMAX)
16586           ELSE
16587             CALL PYSHOW(IBEG(ISYS),-NSIZ,QMAX)
16588           ENDIF
16589  
16590 C...For external processes, first call, also ISR partons radiate.
16591 C...Can use existing PYPART list, removing partons that radiate later.
16592         ELSEIF(ISYS.EQ.1) THEN
16593           NPARTN=0
16594           DO 175 II=1,NPART
16595             IF(IPART(II).LT.IBEG(2).OR.IPART(II).GE.IBEG(NSYS+1)) THEN
16596               NPARTN=NPARTN+1
16597               IPART(NPARTN)=IPART(II)
16598               PTPART(NPARTN)=PTPART(II)
16599             ENDIF
16600  175      CONTINUE
16601           NPART=NPARTN
16602           CALL PYPTFS(1,0.5D0*QMAX,0D0,PTGEN)
16603         ELSE
16604 C...For subsequent calls use the systems excluded above.
16605           NPART=NSIZ
16606           NPARTD=0
16607           DO 180 II=1,NSIZ
16608             I=IBEG(ISYS)-1+II
16609             IPART(II)=I
16610             PTPART(II)=0.5D0*QMAX
16611   180     CONTINUE
16612           CALL PYPTFS(2,0.5D0*QMAX,0D0,PTGEN)
16613         ENDIF
16614  
16615 C...Look up showered copies of original showering particles.
16616         DO 260 II=1,NSIZ
16617           I=IBEG(ISYS)-1+II
16618           IMV=I
16619 C...Particles without daughters need not be studied.
16620           IF(KSAV(II,1).LE.10) GOTO 260
16621           IF(N.EQ.NSAV.OR.K(I,1).LE.10) THEN
16622           ELSEIF(K(I,1).EQ.11) THEN
16623   190       IMV=MOD(K(IMV,4),MSTU(5))
16624             IF(K(IMV,1).EQ.11) GOTO 190
16625           ELSE
16626             KDA1=MOD(K(I,4),MSTU(5))
16627             IF(KDA1.GT.0) THEN
16628               IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16629             ENDIF
16630             KDA2=MOD(K(I,5),MSTU(5))
16631             IF(KDA2.GT.0) THEN
16632               IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16633             ENDIF
16634             DO 200 I3=I+1,N
16635               IF(K(I3,2).EQ.K(I,2).AND.(I3.EQ.KDA1.OR.I3.EQ.KDA2))
16636      &        THEN
16637                 IMV=I3
16638                 KDA1=MOD(K(I3,4),MSTU(5))
16639                 IF(KDA1.GT.0) THEN
16640                   IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
16641                 ENDIF
16642                 KDA2=MOD(K(I3,5),MSTU(5))
16643                 IF(KDA2.GT.0) THEN
16644                   IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
16645                 ENDIF
16646               ENDIF
16647   200       CONTINUE
16648           ENDIF
16649  
16650 C...Restore daughter info of original partons to showered copies.
16651           IF(KSAV(II,1).GT.10) K(IMV,1)=KSAV(II,1)
16652           IF(KSAV(II,1).LE.10) THEN
16653           ELSEIF(K(I,1).EQ.1) THEN
16654             K(IMV,4)=KSAV(II,4)
16655             K(IMV,5)=KSAV(II,5)
16656           ELSE
16657             K(IMV,4)=K(IMV,4)+KSAV(II,4)
16658             K(IMV,5)=K(IMV,5)+KSAV(II,5)
16659           ENDIF
16660  
16661 C...Reset mother info of existing daughters to showered copies.
16662           DO 210 I3=IBEG(ISYS+1),NFIN
16663             IF(K(I3,3).EQ.I) K(I3,3)=IMV
16664             IF(K(I3,1).EQ.3.OR.K(I3,1).EQ.14) THEN
16665               IF(K(I3,4)/MSTU(5).EQ.I) K(I3,4)=K(I3,4)+MSTU(5)*(IMV-I)
16666               IF(K(I3,5)/MSTU(5).EQ.I) K(I3,5)=K(I3,5)+MSTU(5)*(IMV-I)
16667             ENDIF
16668   210     CONTINUE
16669  
16670 C...Boost all original daughters to new frame of showered copy.
16671 C...Also update their colour tags.
16672           IF(IMV.NE.I) THEN
16673             DO 220 J=1,3
16674               BETA(J)=(P(IMV,J)-P(I,J))/(P(IMV,4)+P(I,4))
16675   220       CONTINUE
16676             FAC=2D0/(1D0+BETA(1)**2+BETA(2)**2+BETA(3)**2)
16677             DO 230 J=1,3
16678               BETA(J)=FAC*BETA(J)
16679   230       CONTINUE
16680             DO 250 I3=IBEG(ISYS+1),NFIN
16681               IMO=I3
16682   240         IMO=K(IMO,3)
16683               IF(MSTP(128).LE.0) THEN
16684                 IF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) GOTO 240
16685                 IF(IMO.EQ.I.OR.(K(I,3).LE.MINT(84).AND.IMO.EQ.K(I,3)))
16686      &          THEN
16687                   CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
16688                   IF(MCT(I3,1).EQ.MCT(I,1)) MCT(I3,1)=MCT(IMV,1)
16689                   IF(MCT(I3,2).EQ.MCT(I,2)) MCT(I3,2)=MCT(IMV,2)
16690                 ENDIF
16691               ELSE
16692                 IF(IMO.EQ.IMV) THEN
16693                   CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
16694                   IF(MCT(I3,1).EQ.MCT(I,1)) MCT(I3,1)=MCT(IMV,1)
16695                   IF(MCT(I3,2).EQ.MCT(I,2)) MCT(I3,2)=MCT(IMV,2)
16696                 ELSEIF(IMO.GT.0.AND.IMO.NE.I.AND.IMO.NE.K(I,3)) THEN
16697                   GOTO 240
16698                 ENDIF
16699               ENDIF
16700   250       CONTINUE
16701           ENDIF
16702   260   CONTINUE
16703  
16704 C...End of loop over showering systems
16705   270 CONTINUE
16706  
16707       RETURN
16708       END
16709  
16710 C*********************************************************************
16711  
16712 C...PYVETO
16713 C...Interface to UPVETO, which allows user to veto event generation
16714 C...on the parton level, after parton showers but before multiple
16715 C...interactions, beam remnants and hadronization is added.
16716  
16717       SUBROUTINE PYVETO(IVETO)
16718  
16719 C...All real arithmetic in double precision.
16720       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16721 C...Three Pythia functions return integers, so need declaring.
16722       INTEGER PYK,PYCHGE,PYCOMP
16723  
16724 C...PYTHIA commonblocks.
16725       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
16726       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16727       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16728       COMMON/PYINT1/MINT(400),VINT(400)
16729       SAVE /PYJETS/,/PYPARS/,/PYINT1/
16730 C...HEPEVT commonblock.
16731       PARAMETER (NMXHEP=4000)
16732       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
16733      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
16734       DOUBLE PRECISION PHEP,VHEP
16735       SAVE /HEPEVT/
16736 C...Local array.
16737       DIMENSION IRESO(100)
16738  
16739 C...Define longitudinal boost from initiator rest frame to cm frame.
16740       GAMMA=0.5D0*(VINT(141)+VINT(142))/SQRT(VINT(141)*VINT(142))
16741       GABEZ=0.5D0*(VINT(141)-VINT(142))/SQRT(VINT(141)*VINT(142))
16742 
16743 C...Presentation is different if using pT-ordered shower
16744       IF(MINT(35).EQ.3) THEN
16745         GAMMA=1D0
16746         GABEZ=0D0
16747       ENDIF
16748 
16749 C... Reset counters.
16750       NEVHEP=0
16751       NHEP=0
16752       NRESO=0
16753       
16754 C...Oth pass: identify beam and incoming partons
16755       DO 140 I=MINT(83)+1,MINT(83)+6
16756         ISTORE=0
16757         IF(K(I,2).EQ.94) THEN
16758 
16759         ELSE
16760           NRESO=NRESO+1
16761           IRESO(NRESO)=I
16762           IMOTH=K(I,3)
16763         ENDIF
16764  140  CONTINUE
16765 
16766 C...First pass: identify final locations of resonances
16767 C...and of their daughters before showering.
16768       DO 150 I=MINT(84)+3,N
16769         ISTORE=0
16770         IMOTH=0
16771  
16772 C...Skip shower CM frame documentation lines.
16773         IF(K(I,2).EQ.94) THEN
16774  
16775 C...  Store a new intermediate product, when mother in documentation.
16776         ELSEIF(MSTP(128).EQ.0.AND.K(I,3).GT.MINT(83)+6.AND.
16777      &  K(I,3).LE.MINT(84)) THEN
16778           ISTORE=1
16779           NHEP=NHEP+1
16780           II=NHEP
16781           NRESO=NRESO+1
16782           IRESO(NRESO)=I
16783           IMOTH=MAX(0,K(K(I,3),3)-(MINT(83)+6))
16784  
16785 C...  Store a new intermediate product, when mother in main section.
16786         ELSEIF(MSTP(128).EQ.1.AND.K(I-MINT(84)+MINT(83)+4,1).EQ.21.AND.
16787      &  K(I-MINT(84)+MINT(83)+4,2).EQ.K(I,2)) THEN
16788           ISTORE=1
16789           NHEP=NHEP+1
16790           II=NHEP
16791           NRESO=NRESO+1
16792           IRESO(NRESO)=I
16793           IMOTH=MAX(0,K(I-MINT(84)+MINT(83)+4,3)-(MINT(83)+6))
16794         ENDIF
16795   
16796         IF(ISTORE.EQ.1) THEN
16797 C...Copy parton info, boosting momenta along z axis to cm frame.
16798           ISTHEP(II)=2
16799           IDHEP(II)=K(I,2)
16800           PHEP(1,II)=P(I,1)
16801           PHEP(2,II)=P(I,2)
16802           PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
16803           PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
16804           PHEP(5,II)=P(I,5)
16805 C...Store one mother. Rest of history and vertex info zeroed.
16806           JMOHEP(1,II)=IMOTH
16807           JMOHEP(2,II)=0
16808           JDAHEP(1,II)=0
16809           JDAHEP(2,II)=0
16810           VHEP(1,II)=0D0
16811           VHEP(2,II)=0D0
16812           VHEP(3,II)=0D0
16813           VHEP(4,II)=0D0
16814         ENDIF
16815  150  CONTINUE
16816 
16817 C...Second pass: identify current set of "final" partons.
16818       DO 200 I=MINT(84)+3,N
16819         ISTORE=0
16820         IMOTH=0
16821  
16822 C...Store a final parton.
16823         IF(K(I,1).GE.1.AND.K(I,1).LE.10) THEN
16824           ISTORE=1
16825           NHEP=NHEP+1
16826           II=NHEP
16827 C..Trace it back through shower, to check if from documented particle.
16828           IHIST=I
16829           ISAVE=IHIST
16830   160     CONTINUE
16831           IF(IHIST.GT.MINT(84)) THEN
16832             IF(K(IHIST,2).EQ.94) IHIST=K(IHIST,3)+(ISAVE-1-IHIST)
16833             DO 170 IRI=1,NRESO
16834               IF(IHIST.EQ.IRESO(IRI)) IMOTH=IRI
16835   170       CONTINUE
16836             ISAVE=IHIST
16837             IHIST=K(IHIST,3)
16838             IF(IMOTH.EQ.0) GOTO 160
16839             IMOTH=MAX(0,IMOTH-6)
16840           ELSEIF(IHIST.LE.4) THEN
16841             IF(IHIST.EQ.1.OR.IHIST.EQ.2) THEN
16842               ISTORE=0
16843               NHEP=NHEP-1
16844             ELSE
16845               IMOTH=0
16846             ENDIF
16847           ENDIF
16848         ENDIF
16849  
16850         IF(ISTORE.EQ.1) THEN
16851 C...Copy parton info, boosting momenta along z axis to cm frame.
16852           ISTHEP(II)=1
16853           IDHEP(II)=K(I,2)
16854           PHEP(1,II)=P(I,1)
16855           PHEP(2,II)=P(I,2)
16856           PHEP(3,II)=GAMMA*P(I,3)+GABEZ*P(I,4)
16857           PHEP(4,II)=GAMMA*P(I,4)+GABEZ*P(I,3)
16858           PHEP(5,II)=P(I,5)
16859 C...Store one mother. Rest of history and vertex info zeroed.
16860           JMOHEP(1,II)=IMOTH
16861           JMOHEP(2,II)=0
16862           JDAHEP(1,II)=0
16863           JDAHEP(2,II)=0
16864           VHEP(1,II)=0D0
16865           VHEP(2,II)=0D0
16866           VHEP(3,II)=0D0
16867           VHEP(4,II)=0D0
16868         ENDIF
16869   200 CONTINUE
16870 C...Call user-written routine to decide whether to keep events.
16871       CALL UPVETO(IVETO)
16872       RETURN
16873       END
16874 C*********************************************************************
16875  
16876 C...PYRESD
16877 C...Allows resonances to decay (including parton showers for hadronic
16878 C...channels).
16879  
16880       SUBROUTINE PYRESD(IRES)
16881  
16882 C...Double precision and integer declarations.
16883       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
16884       IMPLICIT INTEGER(I-N)
16885       INTEGER PYK,PYCHGE,PYCOMP
16886 C...Parameter statement to help give large particle numbers.
16887       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
16888      &KEXCIT=4000000,KDIMEN=5000000)
16889 C...Parameter statement for maximum size of showers.
16890       PARAMETER (MAXNUR=1000)
16891 C...Commonblocks.
16892       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
16893       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
16894       COMMON/PYCTAG/NCT,MCT(4000,2)
16895       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16896       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
16897       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
16898       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
16899       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
16900       COMMON/PYINT1/MINT(400),VINT(400)
16901       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
16902       COMMON/PYINT4/MWID(500),WIDS(500,5)
16903       COMMON/PYPUED/IUED(0:99),RUED(0:99)
16904       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/,
16905      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/,/PYPUED/
16906 C...Local arrays and complex and character variables.
16907       DIMENSION IREF(50,8),KDCY(3),KFL1(3),KFL2(3),KFL3(3),KEQL(3),
16908      &KCQM(3),KCQ1(3),KCQ2(3),KCQ3(3),NSD(3),PMMN(3),ILIN(6),
16909      &HGZ(3,3),COUP(6,4),CORL(2,2,2),PK(6,4),PKK(6,6),CTHE(3),
16910      &PHI(3),WDTP(0:400),WDTE(0:400,0:5),DPMO(5),XM(5),VDCY(4),
16911      &ITJUNC(3),CTM2(3),KCQ(0:10),IANT(3),ITRI(3),IOCT(3)
16912       COMPLEX FGK,HA(6,6),HC(6,6)
16913       REAL TIR,UIR
16914       CHARACTER CODE*9,MASS*9
16915  
16916 C...The F, Xi and Xj functions of Gunion and Kunszt
16917 C...(Phys. Rev. D33, 665, plus errata from the authors).
16918       FGK(I1,I2,I3,I4,I5,I6)=4.*HA(I1,I3)*HC(I2,I6)*(HA(I1,I5)*
16919      &HC(I1,I4)+HA(I3,I5)*HC(I3,I4))
16920       DIGK(DT,DU)=-4D0*D34*D56+DT*(3D0*DT+4D0*DU)+DT**2*(DT*DU/
16921      &(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+2D0*(D34/D56+D56/D34))
16922       DJGK(DT,DU)=8D0*(D34+D56)**2-8D0*(D34+D56)*(DT+DU)-6D0*DT*DU-
16923      &2D0*DT*DU*(DT*DU/(D34*D56)-2D0*(1D0/D34+1D0/D56)*(DT+DU)+
16924      &2D0*(D34/D56+D56/D34))
16925  
16926 C...Some general constants.
16927       XW=PARU(102)
16928       XWV=XW
16929       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
16930       XW1=1D0-XW
16931       SQMZ=PMAS(23,1)**2
16932  
16933       GMMZ=PMAS(23,1)*PMAS(23,2)
16934       SQMW=PMAS(24,1)**2
16935       GMMW=PMAS(24,1)*PMAS(24,2)
16936       SH=VINT(44)
16937  
16938 C...Boost and rotate to rest frame of incoming partons, 
16939 C...to get proper amount of smearing of decay angles.
16940       IBST=0
16941       IF(IRES.EQ.0) THEN
16942         IBST=1
16943         IIN1=MINT(84)+1
16944         IIN2=MINT(84)+2
16945 C...Bug fix 09 OCT 2008 (PS) at 6.4.18: in new shower, the incoming partons 
16946 C...(101,102) are off shell and can have inconsistent momenta, resulting 
16947 C...in boosts larger than unity. However, the corresponding docu partons 
16948 C...(5,6) are kept on shell, and have consistent momenta that can be used 
16949 C...to derive this boost instead. Ultimately, should change the way the new 
16950 C...shower stores intermediate partons, but just using partons (5,6) for now 
16951 C...does define the boost and furnishes a quick and much needed solution.
16952         IF (MINT(35).EQ.3) THEN
16953           IIN1=MINT(83)+5
16954           IIN2=MINT(83)+6
16955         ENDIF
16956         ETOTIN=P(IIN1,4)+P(IIN2,4)
16957         BEXIN=(P(IIN1,1)+P(IIN2,1))/ETOTIN
16958         BEYIN=(P(IIN1,2)+P(IIN2,2))/ETOTIN
16959         BEZIN=(P(IIN1,3)+P(IIN2,3))/ETOTIN
16960         CALL PYROBO(MINT(83)+7,N,0D0,0D0,-BEXIN,-BEYIN,-BEZIN)
16961         PHIIN=PYANGL(P(MINT(84)+1,1),P(MINT(84)+1,2))
16962         CALL PYROBO(MINT(83)+7,N,0D0,-PHIIN,0D0,0D0,0D0)
16963         THEIN=PYANGL(P(MINT(84)+1,3),P(MINT(84)+1,1))
16964         CALL PYROBO(MINT(83)+7,N,-THEIN,0D0,0D0,0D0,0D0)
16965       ENDIF
16966  
16967 C...Reset original resonance configuration.
16968       DO 100 JT=1,8
16969         IREF(1,JT)=0
16970   100 CONTINUE
16971  
16972 C...Define initial one, two or three objects for subprocess.
16973       IHDEC=0
16974       IF(IRES.EQ.0) THEN
16975         ISUB=MINT(1)
16976         IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
16977           IREF(1,1)=MINT(84)+2+ISET(ISUB)
16978           IREF(1,4)=MINT(83)+6+ISET(ISUB)
16979           JTMAX=1
16980         ELSEIF(ISET(ISUB).EQ.2.OR.ISET(ISUB).EQ.4) THEN
16981           IREF(1,1)=MINT(84)+1+ISET(ISUB)
16982           IREF(1,2)=MINT(84)+2+ISET(ISUB)
16983           IREF(1,4)=MINT(83)+5+ISET(ISUB)
16984           IREF(1,5)=MINT(83)+6+ISET(ISUB)
16985           JTMAX=2
16986         ELSEIF(ISET(ISUB).EQ.5) THEN
16987           IREF(1,1)=MINT(84)+3
16988           IREF(1,2)=MINT(84)+4
16989           IREF(1,3)=MINT(84)+5
16990           IREF(1,4)=MINT(83)+7
16991           IREF(1,5)=MINT(83)+8
16992           IREF(1,6)=MINT(83)+9
16993           JTMAX=3
16994         ENDIF
16995  
16996 C...Define original resonance for odd cases.
16997       ELSE
16998         ISUB=0
16999         IF(K(IRES,2).EQ.25.OR.K(IRES,2).EQ.35.OR.K(IRES,2).EQ.36)
17000      &  IHDEC=1
17001         IF(IHDEC.EQ.1) ISUB=3
17002         IREF(1,1)=IRES
17003         IREF(1,4)=K(IRES,3)
17004         IRESTM=IRES
17005         IF(IREF(1,4).GT.MINT(84)) THEN
17006   110     ITMPMO=IREF(1,4)
17007           IF(K(ITMPMO,2).EQ.94) THEN
17008             IREF(1,4)=K(ITMPMO,3)+(IRESTM-ITMPMO-1)
17009             IF(K(IREF(1,4),3).LE.MINT(84)) IREF(1,4)=K(IREF(1,4),3)
17010           ELSEIF(K(ITMPMO,2).EQ.K(IRES,2)) THEN
17011             IRESTM=ITMPMO
17012 C...Explicitly check that reference particle exists, otherwise stop recursion
17013             IF(ITMPMO.GT.0.AND.K(ITMPMO,3).GT.0) THEN
17014               IREF(1,4)=K(ITMPMO,3)
17015               GOTO 110
17016             ENDIF
17017           ENDIF
17018         ENDIF
17019         IF(IREF(1,4).GT.MINT(84)) THEN
17020           EMATCH=1D10
17021           IREF14=IREF(1,4)
17022           DO 120 II=MINT(83)+7,MINT(83)+MINT(4)
17023             IF(K(II,2).EQ.K(IRES,2).AND.ABS(P(II,4)-P(IREF14,4)).LT.
17024      &      EMATCH) THEN
17025               IREF(1,4)=II
17026               EMATCH=ABS(P(II,4)-P(IREF14,4))
17027             ENDIF
17028   120     CONTINUE
17029         ENDIF
17030         JTMAX=1
17031       ENDIF
17032  
17033 C...Check if initial resonance has been moved (in resonance + jet).
17034       DO 140 JT=1,3
17035         IF(IREF(1,JT).GT.0) THEN
17036           IF(K(IREF(1,JT),1).GT.10) THEN
17037             KFA=IABS(K(IREF(1,JT),2))
17038             IF(KFA.GE.6.AND.KCHG(PYCOMP(KFA),2).NE.0) THEN
17039               KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
17040               KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
17041               IF(KDA1.GT.IREF(1,JT).AND.KDA1.LE.N) THEN
17042                 IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
17043               ENDIF
17044               IF(KDA2.GT.IREF(1,JT).AND.KDA2.LE.N) THEN
17045                 IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
17046               ENDIF
17047               DO 130 I=IREF(1,JT)+1,N
17048                 IF(K(I,2).EQ.K(IREF(1,JT),2).AND.(I.EQ.KDA1.OR.
17049      &          I.EQ.KDA2)) THEN
17050                   IREF(1,JT)=I
17051                   KDA1=MOD(K(IREF(1,JT),4),MSTU(5))
17052                   KDA2=MOD(K(IREF(1,JT),5),MSTU(5))
17053                   IF(KDA1.GT.IREF(1,JT).AND.KDA1.LE.N) THEN
17054                     IF(K(KDA1,2).EQ.21) KDA1=K(KDA1,5)/MSTU(5)
17055                   ENDIF
17056                   IF(KDA2.GT.IREF(1,JT).AND.KDA2.LE.N) THEN
17057                     IF(K(KDA2,2).EQ.21) KDA2=K(KDA2,4)/MSTU(5)
17058                   ENDIF
17059                 ENDIF
17060   130         CONTINUE
17061             ELSE
17062               KDA=MOD(K(IREF(1,JT),4),MSTU(5))
17063               IF(MWID(PYCOMP(KFA)).NE.0.AND.KDA.GT.1) IREF(1,JT)=KDA
17064             ENDIF
17065           ENDIF
17066         ENDIF
17067   140 CONTINUE
17068  
17069 C...Set decay vertex for initial resonances
17070       DO 160 JT=1,JTMAX
17071         DO 150 I=1,4
17072           V(IREF(1,JT),I)=0D0
17073   150   CONTINUE
17074   160 CONTINUE
17075  
17076 C...Loop over decay history.
17077       NP=1
17078       IP=0
17079   170 IP=IP+1
17080       NINH=0
17081       JTMAX=2
17082       IF(IREF(IP,2).EQ.0) JTMAX=1
17083       IF(IREF(IP,3).NE.0) JTMAX=3
17084       IT4=0
17085       NSAV=N
17086  
17087 C...Check for Higgs which appears as decay product of user-process.
17088       IF(ISUB.EQ.0) THEN
17089         IHDEC=0
17090         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
17091      &  .EQ.36) IHDEC=1
17092         IF(IHDEC.EQ.1) ISUB=3
17093       ENDIF
17094  
17095 C...Start treatment of one, two or three resonances in parallel.
17096   180 N=NSAV
17097       DO 340 JT=1,JTMAX
17098         ID=IREF(IP,JT)
17099         KDCY(JT)=0
17100         KFL1(JT)=0
17101         KFL2(JT)=0
17102         KFL3(JT)=0
17103         KEQL(JT)=0
17104         NSD(JT)=ID
17105         ITJUNC(JT)=0
17106  
17107 C...Check whether particle can/is allowed to decay.
17108         IF(ID.EQ.0) GOTO 330
17109         KFA=IABS(K(ID,2))
17110         KCA=PYCOMP(KFA)
17111         IF(MWID(KCA).EQ.0) GOTO 330
17112         IF(K(ID,1).GT.10.OR.MDCY(KCA,1).EQ.0) GOTO 330
17113         IF(KFA.EQ.6.OR.KFA.EQ.7.OR.KFA.EQ.8.OR.KFA.EQ.17.OR.
17114      &  KFA.EQ.18) IT4=IT4+1
17115         K(ID,4)=MSTU(5)*(K(ID,4)/MSTU(5))
17116         K(ID,5)=MSTU(5)*(K(ID,5)/MSTU(5))
17117  
17118 C...Choose lifetime and determine decay vertex.
17119         IF(K(ID,1).EQ.5) THEN
17120           V(ID,5)=0D0
17121         ELSEIF(K(ID,1).NE.4) THEN
17122           V(ID,5)=-PMAS(KCA,4)*LOG(PYR(0))
17123         ENDIF
17124         DO 190 J=1,4
17125           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
17126   190   CONTINUE
17127  
17128 C...Determine whether decay allowed or not.
17129         MOUT=0
17130         IF(MSTJ(22).EQ.2) THEN
17131           IF(PMAS(KCA,4).GT.PARJ(71)) MOUT=1
17132         ELSEIF(MSTJ(22).EQ.3) THEN
17133           IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
17134         ELSEIF(MSTJ(22).EQ.4) THEN
17135           IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
17136           IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
17137         ENDIF
17138         IF(MOUT.EQ.1.AND.K(ID,1).NE.5) THEN
17139           K(ID,1)=4
17140           GOTO 330
17141         ENDIF
17142  
17143 C...Info for selection of decay channel: sign, pairings.
17144         IF(KCHG(KCA,3).EQ.0) THEN
17145           IPM=2
17146         ELSE
17147           IPM=(5-ISIGN(1,K(ID,2)))/2
17148         ENDIF
17149         KFB=0
17150         IF(JTMAX.EQ.2) THEN
17151           KFB=IABS(K(IREF(IP,3-JT),2))
17152         ELSEIF(JTMAX.EQ.3) THEN
17153           JT2=JT+1-3*(JT/3)
17154           KFB=IABS(K(IREF(IP,JT2),2))
17155           IF(KFB.NE.KFA) THEN
17156             JT2=JT+2-3*((JT+1)/3)
17157             KFB=IABS(K(IREF(IP,JT2),2))
17158           ENDIF
17159         ENDIF
17160  
17161 C...Select decay channel.
17162         IF(ISUB.EQ.1.OR.ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.
17163      &  ISUB.EQ.30.OR.ISUB.EQ.35.OR.ISUB.EQ.141) MINT(61)=1
17164         CALL PYWIDT(KFA,P(ID,5)**2,WDTP,WDTE)
17165         WDTE0S=WDTE(0,1)+WDTE(0,IPM)+WDTE(0,4)
17166         IF(KFB.EQ.KFA) WDTE0S=WDTE0S+WDTE(0,5)
17167         IF(WDTE0S.LE.0D0) GOTO 330
17168         RKFL=WDTE0S*PYR(0)
17169         IDL=0
17170   200   IDL=IDL+1
17171         IDC=IDL+MDCY(KCA,2)-1
17172         RKFL=RKFL-(WDTE(IDL,1)+WDTE(IDL,IPM)+WDTE(IDL,4))
17173         IF(KFB.EQ.KFA) RKFL=RKFL-WDTE(IDL,5)
17174         IF(IDL.LT.MDCY(KCA,3).AND.RKFL.GT.0D0) GOTO 200
17175  
17176 C...Read out flavours and colour charges of decay channel chosen.
17177         KCQM(JT)=KCHG(KCA,2)*ISIGN(1,K(ID,2))
17178         IF(KCQM(JT).EQ.-2) KCQM(JT)=2
17179         KFL1(JT)=KFDP(IDC,1)*ISIGN(1,K(ID,2))
17180         KFC1A=PYCOMP(IABS(KFL1(JT)))
17181         IF(KCHG(KFC1A,3).EQ.0) KFL1(JT)=IABS(KFL1(JT))
17182         KCQ1(JT)=KCHG(KFC1A,2)*ISIGN(1,KFL1(JT))
17183         IF(KCQ1(JT).EQ.-2) KCQ1(JT)=2
17184         KFL2(JT)=KFDP(IDC,2)*ISIGN(1,K(ID,2))
17185         KFC2A=PYCOMP(IABS(KFL2(JT)))
17186         IF(KCHG(KFC2A,3).EQ.0) KFL2(JT)=IABS(KFL2(JT))
17187         KCQ2(JT)=KCHG(KFC2A,2)*ISIGN(1,KFL2(JT))
17188         IF(KCQ2(JT).EQ.-2) KCQ2(JT)=2
17189         KFL3(JT)=KFDP(IDC,3)*ISIGN(1,K(ID,2))
17190         KCQ3(JT)=0
17191         IF(KFL3(JT).NE.0) THEN
17192           KFC3A=PYCOMP(IABS(KFL3(JT)))
17193           IF(KCHG(KFC3A,3).EQ.0) KFL3(JT)=IABS(KFL3(JT))
17194           KCQ3(JT)=KCHG(KFC3A,2)*ISIGN(1,KFL3(JT))
17195           IF(KCQ3(JT).EQ.-2) KCQ3(JT)=2
17196         ENDIF
17197  
17198 C...Set/save further info on channel.
17199         KDCY(JT)=1
17200         IF(KFB.EQ.KFA) KEQL(JT)=MDME(IDC,1)
17201         NSD(JT)=N
17202         HGZ(JT,1)=VINT(111)
17203         HGZ(JT,2)=VINT(112)
17204         HGZ(JT,3)=VINT(114)
17205         JTZ=JT
17206  
17207 C...Select masses; to begin with assume resonances narrow.
17208         DO 220 I=1,3
17209           P(N+I,5)=0D0
17210           PMMN(I)=0D0
17211           IF(I.EQ.1) THEN
17212             KFLW=IABS(KFL1(JT))
17213             KCW=KFC1A
17214           ELSEIF(I.EQ.2) THEN
17215             KFLW=IABS(KFL2(JT))
17216             KCW=KFC2A
17217           ELSEIF(I.EQ.3) THEN
17218             IF(KFL3(JT).EQ.0) GOTO 220
17219             KFLW=IABS(KFL3(JT))
17220             KCW=KFC3A
17221           ENDIF
17222           P(N+I,5)=PMAS(KCW,1)
17223 CMRENNA++
17224 C...This prevents SUSY/t particles from becoming too light.
17225           IF(KFLW/KSUSY1.EQ.1.OR.KFLW/KSUSY1.EQ.2) THEN
17226             PMMN(I)=PMAS(KCW,1)
17227             DO 210 IDC=MDCY(KCW,2),MDCY(KCW,2)+MDCY(KCW,3)-1
17228               IF(MDME(IDC,1).GT.0.AND.BRAT(IDC).GT.1E-4) THEN
17229                 PMSUM=PMAS(PYCOMP(KFDP(IDC,1)),1)+
17230      &              PMAS(PYCOMP(KFDP(IDC,2)),1)
17231                 IF(KFDP(IDC,3).NE.0) PMSUM=PMSUM+
17232      &              PMAS(PYCOMP(KFDP(IDC,3)),1)
17233                 PMMN(I)=MIN(PMMN(I),PMSUM)
17234               ENDIF
17235  210        CONTINUE
17236 C   MRENNA--
17237           ELSEIF(KFLW.EQ.6) THEN
17238             PMMN(I)=PMAS(24,1)+PMAS(5,1)
17239           ENDIF
17240 C...UED: select a graviton mass from continuous distribution
17241 C...(stored in PMAS(39,1) so no value returned)
17242           IF (IUED(1).EQ.1.AND.IUED(2).EQ.1.AND.KFLW.EQ.39) 
17243      &         CALL PYGRAM(1)
17244  220    CONTINUE
17245         
17246 C...Check which two out of three are widest.
17247         IWID1=1
17248         IWID2=2
17249         PWID1=PMAS(KFC1A,2)
17250         PWID2=PMAS(KFC2A,2)
17251         KFLW1=IABS(KFL1(JT))
17252         KFLW2=IABS(KFL2(JT))
17253         IF(KFL3(JT).NE.0) THEN
17254           PWID3=PMAS(KFC3A,2)
17255           IF(PWID3.GT.PWID1.AND.PWID2.GE.PWID1) THEN
17256             IWID1=3
17257             PWID1=PWID3
17258             KFLW1=IABS(KFL3(JT))
17259           ELSEIF(PWID3.GT.PWID2) THEN
17260             IWID2=3
17261             PWID2=PWID3
17262             KFLW2=IABS(KFL3(JT))
17263           ENDIF
17264         ENDIF
17265  
17266 C...If all narrow then only check that masses consistent.
17267         IF(MSTP(42).LE.0.OR.(PWID1.LT.PARP(41).AND.
17268      &  PWID2.LT.PARP(41))) THEN
17269 CMRENNA++
17270 C....Handle near degeneracy cases.
17271           IF(KFA/KSUSY1.EQ.1.OR.KFA/KSUSY1.EQ.2) THEN
17272             IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
17273               P(N+1,5)=P(ID,5)-P(N+2,5)-0.5D0
17274               IF(P(N+1,5).LT.0D0) P(N+1,5)=0D0
17275             ENDIF
17276           ENDIF
17277 CMRENNA--
17278           IF(P(N+1,5)+P(N+2,5)+P(N+3,5).GT.P(ID,5)) THEN
17279             CALL PYERRM(13,'(PYRESD:) daughter masses too large')
17280             MINT(51)=1
17281             GOTO 720
17282           ELSEIF(P(N+1,5)+P(N+2,5)+P(N+3,5)+PARJ(64).GT.P(ID,5)) THEN
17283             CALL PYERRM(3,'(PYRESD:) daughter masses too large')
17284             MINT(51)=1
17285             GOTO 720
17286           ENDIF
17287  
17288 C...For three wide resonances select narrower of three
17289 C...according to BW decoupled from rest.
17290         ELSE
17291           PMTOT=P(ID,5)
17292           IF(KFL3(JT).NE.0) THEN
17293             IWID3=6-IWID1-IWID2
17294             KFLW3=IABS(KFL1(JT))+IABS(KFL2(JT))+IABS(KFL3(JT))-
17295      &      KFLW1-KFLW2
17296             LOOP=0
17297   230       LOOP=LOOP+1
17298             P(N+IWID3,5)=PYMASS(KFLW3)
17299             IF(LOOP.LE.10.AND. P(N+IWID3,5).LE.PMMN(IWID3)) GOTO 230
17300             PMTOT=PMTOT-P(N+IWID3,5)
17301           ENDIF
17302 C...Select other two correlated within remaining phase space.
17303           IF(IP.EQ.1) THEN
17304             CKIN45=CKIN(45)
17305             CKIN47=CKIN(47)
17306             CKIN(45)=MAX(PMMN(IWID1),CKIN(45))
17307             CKIN(47)=MAX(PMMN(IWID2),CKIN(47))
17308             CALL PYOFSH(2,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
17309      &      P(N+IWID2,5))
17310             CKIN(45)=CKIN45
17311             CKIN(47)=CKIN47
17312           ELSE
17313             CKIN(49)=PMMN(IWID1)
17314             CKIN(50)=PMMN(IWID2)
17315             CALL PYOFSH(5,KFA,KFLW1,KFLW2,PMTOT,P(N+IWID1,5),
17316      &      P(N+IWID2,5))
17317             CKIN(49)=0D0
17318             CKIN(50)=0D0
17319           ENDIF
17320           IF(MINT(51).EQ.1) GOTO 720
17321         ENDIF
17322  
17323 C...Begin fill decay products, with colour flow for coloured objects.
17324         MSTU10=MSTU(10)
17325         MSTU(10)=1
17326         MSTU(19)=1
17327  
17328 C...Three-body decays 
17329         IF(KFL3(JT).NE.0) THEN
17330           DO 250 I=N+1,N+3
17331             DO 240 J=1,5
17332               K(I,J)=0
17333               V(I,J)=0D0
17334   240       CONTINUE
17335             MCT(I,1)=0
17336             MCT(I,2)=0
17337   250     CONTINUE
17338           K(N+1,1)=1
17339           K(N+1,2)=KFL1(JT)
17340           K(N+2,1)=1
17341           K(N+2,2)=KFL2(JT)
17342           K(N+3,1)=1
17343           K(N+3,2)=KFL3(JT)
17344           IDIN=ID
17345 
17346 C...Generate kinematics (default is flat)
17347           CALL PYTBDY(IDIN)
17348 
17349 C...Set generic colour flows whenever unambiguous,
17350 C...(independently of the order of the decay products)
17351 C...Sum up total colour content
17352           NANT=0
17353           NTRI=0
17354           NOCT=0
17355           KCQ(0)=KCQM(JT)
17356           KCQ(1)=KCQ1(JT)
17357           KCQ(2)=KCQ2(JT)
17358           KCQ(3)=KCQ3(JT)
17359           DO 255 J=0,3
17360             IF (KCQ(J).EQ.-1) THEN
17361               NANT=NANT+1
17362               IANT(NANT)=N+J
17363             ELSEIF (KCQ(J).EQ.1) THEN
17364               NTRI=NTRI+1              
17365               ITRI(NTRI)=N+J
17366             ELSEIF (KCQ(J).EQ.2) THEN 
17367               NOCT=NOCT+1
17368               IOCT(NOCT)=N+J
17369             ENDIF
17370  255      CONTINUE
17371           
17372 C...Set color flow for generic 1 -> N processes (N arbitrary)
17373           IF (NTRI.EQ.0.AND.NANT.EQ.0.AND.NOCT.EQ.0) THEN
17374 C...All singlets: do nothing
17375             
17376           ELSEIF (NOCT.EQ.2.AND.NTRI.EQ.0.AND.NANT.EQ.0) THEN
17377 C...Two octets, zero triplets, n singlets:
17378             IF (KCQ(0).EQ.2) THEN
17379 C...8 -> 8 + n(1) 
17380               K(ID,4)=K(ID,4)+IOCT(2)
17381               K(ID,5)=K(ID,5)+IOCT(2)
17382               K(IOCT(2),1)=3
17383               K(IOCT(2),4)=MSTU(5)*ID
17384               K(IOCT(2),5)=MSTU(5)*ID
17385               MCT(IOCT(2),1)=MCT(ID,1)
17386               MCT(IOCT(2),2)=MCT(ID,2)
17387             ELSE
17388 C...1 -> 8 + 8 + n(1)
17389               K(IOCT(1),1)=3
17390               K(IOCT(1),4)=MSTU(5)*IOCT(2)
17391               K(IOCT(1),5)=MSTU(5)*IOCT(2)
17392               K(IOCT(2),1)=3
17393               K(IOCT(2),4)=MSTU(5)*IOCT(1)
17394               K(IOCT(2),5)=MSTU(5)*IOCT(1)
17395               NCT=NCT+1
17396               MCT(IOCT(1),1)=NCT
17397               MCT(IOCT(2),2)=NCT
17398               NCT=NCT+1
17399               MCT(IOCT(2),1)=NCT
17400               MCT(IOCT(1),2)=NCT
17401             ENDIF
17402             
17403           ELSEIF (NTRI+NANT.EQ.2.AND.NOCT.EQ.0) THEN
17404 C...Two triplets, zero octets, n singlets.            
17405             IF (KCQ(0).EQ.1) THEN
17406 C...3 -> 3 + n(1)
17407               K(ID,4)=K(ID,4)+ITRI(2)
17408               K(ITRI(2),1)=3
17409               K(ITRI(2),4)=MSTU(5)*ID
17410               MCT(ITRI(2),1)=MCT(ID,1)
17411             ELSEIF (KCQ(0).EQ.-1) THEN
17412 C...3bar -> 3bar + n(1)              
17413               K(ID,5)=K(ID,5)+IANT(2)
17414               K(IANT(2),1)=3
17415               K(IANT(2),5)=MSTU(5)*ID
17416               MCT(IANT(2),2)=MCT(ID,2)
17417             ELSE
17418 C...1 -> 3 + 3bar + n(1)
17419               K(ITRI(1),1)=3
17420               K(ITRI(1),4)=MSTU(5)*IANT(1)
17421               K(IANT(1),1)=3
17422               K(IANT(1),5)=MSTU(5)*ITRI(1)
17423               NCT=NCT+1
17424               MCT(ITRI(1),1)=NCT
17425               MCT(IANT(1),2)=NCT
17426             ENDIF
17427             
17428           ELSEIF(NTRI+NANT.EQ.2.AND.NOCT.EQ.1) THEN
17429 C...Two triplets, one octet, n singlets.            
17430             IF (KCQ(0).EQ.2) THEN
17431 C...8 -> 3 + 3bar + n(1)
17432               K(ID,4)=K(ID,4)+ITRI(1)
17433               K(ID,5)=K(ID,5)+IANT(1)
17434               K(ITRI(1),1)=3
17435               K(ITRI(1),4)=MSTU(5)*ID
17436               K(IANT(1),1)=3
17437               K(IANT(1),5)=MSTU(5)*ID
17438               MCT(ITRI(1),1)=MCT(ID,1)
17439               MCT(IANT(1),2)=MCT(ID,2)
17440             ELSEIF (KCQ(0).EQ.1) THEN
17441 C...3 -> 8 + 3 + n(1)
17442               K(ID,4)=K(ID,4)+IOCT(1)
17443               K(IOCT(1),1)=3
17444               K(IOCT(1),4)=MSTU(5)*ID
17445               K(IOCT(1),5)=MSTU(5)*ITRI(2)
17446               K(ITRI(2),1)=3
17447               K(ITRI(2),4)=MSTU(5)*IOCT(1)
17448               MCT(IOCT(1),1)=MCT(ID,1)
17449               NCT=NCT+1
17450               MCT(IOCT(1),2)=NCT
17451               MCT(ITRI(2),1)=NCT
17452             ELSEIF (KCQ(0).EQ.-1) THEN
17453 C...3bar -> 8 + 3bar + n(1)
17454               K(ID,5)=K(ID,5)+IOCT(1)
17455               K(IOCT(1),1)=3
17456               K(IOCT(1),5)=MSTU(5)*ID
17457               K(IOCT(1),4)=MSTU(5)*IANT(2)
17458               K(IANT(2),1)=3
17459               K(IANT(2),5)=MSTU(5)*IOCT(1)
17460               MCT(IOCT(1),2)=MCT(ID,2)
17461               NCT=NCT+1
17462               MCT(IOCT(1),1)=NCT
17463               MCT(IANT(2),2)=NCT
17464             ELSE
17465 C...1 -> 3 + 3bar + 8 + n(1)
17466               K(ITRI(1),1)=3
17467               K(ITRI(1),4)=MSTU(5)*IOCT(1)
17468               K(IOCT(1),1)=3
17469               K(IOCT(1),5)=MSTU(5)*ITRI(1)
17470               K(IOCT(1),4)=MSTU(5)*IANT(1)
17471               K(IANT(1),1)=3
17472               K(IANT(1),5)=MSTU(5)*IOCT(1)
17473               NCT=NCT+1
17474               MCT(ITRI(1),1)=NCT
17475               MCT(IOCT(1),2)=NCT
17476               NCT=NCT+1
17477               MCT(IOCT(1),1)=NCT
17478               MCT(IANT(1),2)=NCT
17479             ENDIF
17480 CPS-- End of generic cases 
17481 C...(could three octets also be handled?)
17482 C...(could (some of) the RPV cases be made generic as well?)
17483 
17484 C...Special cases (= old treatment)
17485 C...Set colour flow for t -> W + b + Z.
17486           ELSEIF(KFA.EQ.6) THEN
17487             K(N+2,1)=3
17488             ISID=4
17489             IF(KCQM(JT).EQ.-1) ISID=5
17490             IDAU=N+2
17491             K(ID,ISID)=K(ID,ISID)+IDAU
17492             K(IDAU,ISID)=MSTU(5)*ID
17493  
17494 C...Set colour flow in three-body decays - programmed as special cases.
17495  
17496           ELSEIF(KFC2A.LE.6) THEN
17497             K(N+2,1)=3
17498             K(N+3,1)=3
17499             ISID=4
17500             IF(KFL2(JT).LT.0) ISID=5
17501             K(N+2,ISID)=MSTU(5)*(N+3)
17502             K(N+3,9-ISID)=MSTU(5)*(N+2)
17503 C...PS++: Bugfix 16 MAR 2006 for 3-body squark decays (e.g. via SLHA)
17504           ELSEIF(KFA.GT.KSUSY1.AND.MOD(KFA,KSUSY1).LT.10
17505      &          .AND.KFL3(JT).NE.0) THEN
17506             KQSUMA=IABS(KCQ1(JT))+IABS(KCQ2(JT))+IABS(KCQ3(JT))
17507 C...3-body decays of squarks to colour singlets plus one quark
17508             IF (KQSUMA.EQ.1) THEN
17509 C...Find quark
17510               IQ=0
17511               IF (KCQ1(JT).NE.0) IQ=1
17512               IF (KCQ2(JT).NE.0) IQ=2
17513               IF (KCQ3(JT).NE.0) IQ=3
17514               ISID=4
17515               IF (K(N+IQ,2).LT.0) ISID=5
17516               K(N+IQ,1)=3
17517               K(ID,ISID)=K(ID,ISID)+(N+IQ)
17518               K(N+IQ,ISID)=MSTU(5)*ID
17519             ENDIF
17520 C...PS--
17521           ELSEIF(KFL1(JT).EQ.KSUSY1+21) THEN
17522             K(N+1,1)=3
17523             K(N+2,1)=3
17524             K(N+3,1)=3
17525             ISID=4
17526             IF(KFL2(JT).LT.0) ISID=5
17527             K(N+1,ISID)=MSTU(5)*(N+2)
17528             K(N+1,9-ISID)=MSTU(5)*(N+3)
17529             K(N+2,ISID)=MSTU(5)*(N+1)
17530             K(N+3,9-ISID)=MSTU(5)*(N+1)
17531           ELSEIF(KFA.EQ.KSUSY1+21) THEN
17532             K(N+2,1)=3
17533             K(N+3,1)=3
17534             ISID=4
17535             IF(KFL2(JT).LT.0) ISID=5
17536             K(ID,ISID)=K(ID,ISID)+(N+2)
17537             K(ID,9-ISID)=K(ID,9-ISID)+(N+3)
17538             K(N+2,ISID)=MSTU(5)*ID
17539             K(N+3,9-ISID)=MSTU(5)*ID
17540 CMRENNA--
17541  
17542           ELSEIF(KFA.GE.KSUSY1+22.AND.KFA.LE.KSUSY1+37.AND.
17543      &    IABS(KCQ2(JT)).EQ.1) THEN
17544             K(N+2,1)=3
17545             K(N+3,1)=3
17546             ISID=4
17547             IF(KFL2(JT).LT.0) ISID=5
17548             K(N+2,ISID)=MSTU(5)*(N+3)
17549             K(N+3,9-ISID)=MSTU(5)*(N+2)
17550           ENDIF
17551            
17552           NSAV=N
17553           
17554 C...Set colour flow in three-body decays with baryon number violation.
17555 C...Neutralino and chargino decays first.
17556           KCQSUM=KCQ1(JT)+KCQ2(JT)+KCQ3(JT)
17557           IF(KCQM(JT).EQ.0.AND.IABS(KCQSUM).EQ.3) THEN
17558             ITJUNC(JT)=(1+(1-KCQ1(JT))/2)
17559             K(N+4,4)=ITJUNC(JT)*MSTU(5)
17560 C...Insert junction to keep track of colours.
17561             IF(KCQ1(JT).NE.0) K(N+1,1)=3
17562             IF(KCQ2(JT).NE.0) K(N+2,1)=3
17563             IF(KCQ3(JT).NE.0) K(N+3,1)=3
17564 C...Set special junction codes:
17565             K(N+4,1)=42
17566             K(N+4,2)=88
17567  
17568 C...Order decay products by invariant mass. (will be used in PYSTRF).
17569             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)-
17570      &      P(N+1,3)*P(N+2,3)
17571             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)-
17572      &      P(N+1,3)*P(N+3,3)
17573             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)-
17574      &      P(N+2,3)*P(N+3,3)
17575             IF(PM12.LT.PM13.AND.PM12.LT.PM23) THEN
17576               K(N+4,4)=N+3+K(N+4,4)
17577               K(N+4,5)=N+1+MSTU(5)*(N+2)
17578             ELSEIF(PM13.LT.PM23) THEN
17579               K(N+4,4)=N+2+K(N+4,4)
17580               K(N+4,5)=N+1+MSTU(5)*(N+3)
17581             ELSE
17582               K(N+4,4)=N+1+K(N+4,4)
17583               K(N+4,5)=N+2+MSTU(5)*(N+3)
17584             ENDIF
17585             DO 260 J=1,5
17586               P(N+4,J)=0D0
17587               V(N+4,J)=0D0
17588   260       CONTINUE
17589 C...Connect daughters to junction.
17590             DO 270 II=N+1,N+3
17591               K(II,4)=0
17592               K(II,5)=0
17593               K(II,ITJUNC(JT)+3)=MSTU(5)*(N+4)
17594   270       CONTINUE
17595 C...Particle counter should be stepped up one extra for junction.
17596             N=N+1
17597  
17598 C...Gluino decays.
17599           ELSEIF (KCQM(JT).EQ.2.AND.IABS(KCQSUM).EQ.3) THEN
17600             ITJUNC(JT)=(5+(1-KCQ1(JT))/2)
17601             K(N+4,4)=ITJUNC(JT)*MSTU(5)
17602 C...Insert junction to keep track of colours.
17603             IF(KCQ1(JT).NE.0) K(N+1,1)=3
17604             IF(KCQ2(JT).NE.0) K(N+2,1)=3
17605             IF(KCQ3(JT).NE.0) K(N+3,1)=3
17606             K(N+4,1)=42
17607             K(N+4,2)=88
17608             DO 280 J=1,5
17609               P(N+4,J)=0D0
17610               V(N+4,J)=0D0
17611   280       CONTINUE
17612             CTMSUM=0D0
17613             DO 290 II=N+1,N+3
17614               K(II,4)=0
17615               K(II,5)=0
17616 C...Start by connecting all daughters to junction.
17617               K(II,ITJUNC(JT)-1)=MSTU(5)*(N+4)
17618 C...Only consider colour topologies with off shell resonances.
17619               RMQ1=PMAS(PYCOMP(K(II,2)),1)
17620               RMRES=PMAS(PYCOMP(KSUSY1+IABS(K(II,2))),1)
17621               RMGLU=PMAS(PYCOMP(KSUSY1+21),1)
17622               IF (RMGLU-RMQ1.LT.RMRES) THEN
17623 C...Calculate propagators for each colour topology.
17624                 RM2Q23=RMGLU**2+RMQ1**2-2D0*(P(II,4)*P(ID,4)+P(II,1)
17625      &               *P(ID,1)+P(II,2)*P(ID,2)+P(II,3)*P(ID,3))
17626                 CTM2(II-N)=1D0/(RM2Q23-RMRES**2)**2
17627               ELSE
17628                 CTM2(II-N)=0D0
17629               ENDIF
17630               CTMSUM=CTMSUM+CTM2(II-N)
17631   290       CONTINUE
17632             CTMSUM=PYR(0)*CTMSUM
17633 C...Select colour topology J, with most off shell least likely.
17634             J=0
17635   300       J=J+1
17636             CTMSUM=CTMSUM-CTM2(J)
17637             IF (CTMSUM.GT.0D0) GOTO 300
17638 C...The lucky winner gets its colour (anti-colour) directly from gluino.
17639             K(N+J,ITJUNC(JT)-1)=MSTU(5)*ID
17640             K(ID,ITJUNC(JT)-1)=N+J+(K(ID,ITJUNC(JT)-1)/MSTU(5))*MSTU(5)
17641 C...The other gluino colour is connected to junction
17642             K(ID,10-ITJUNC(JT))=N+4+(K(ID,10-ITJUNC(JT))/MSTU(5))*
17643      &      MSTU(5)
17644             K(N+4,4)=K(N+4,4)+ID
17645 C...Lastly, connect junction to remaining daughters.
17646             K(N+4,5)=N+1+MOD(J,3)+MSTU(5)*(N+1+MOD(J+1,3))
17647 C...Particle counter should be stepped up one extra for junction.
17648             N=N+1
17649           ENDIF
17650  
17651 C...Update particle counter.
17652           N=N+3
17653 
17654 C...2) Everything else two-body decay.
17655         ELSE
17656           CALL PY2ENT(N+1,KFL1(JT),KFL2(JT),P(ID,5))
17657           MCT(N-1,1)=0
17658           MCT(N-1,2)=0
17659           MCT(N,1)=0
17660           MCT(N,2)=0
17661 C...First set colour flow as if mother colour singlet.
17662           IF(KCQ1(JT).NE.0) THEN
17663             K(N-1,1)=3
17664             IF(KCQ1(JT).NE.-1) K(N-1,4)=MSTU(5)*N
17665             IF(KCQ1(JT).NE.1) K(N-1,5)=MSTU(5)*N
17666           ENDIF
17667           IF(KCQ2(JT).NE.0) THEN
17668             K(N,1)=3
17669             IF(KCQ2(JT).NE.-1) K(N,4)=MSTU(5)*(N-1)
17670             IF(KCQ2(JT).NE.1) K(N,5)=MSTU(5)*(N-1)
17671           ENDIF
17672 C...Then redirect colour flow if mother (anti)triplet.
17673           IF(KCQM(JT).EQ.0) THEN
17674           ELSEIF(KCQM(JT).NE.2) THEN
17675             ISID=4
17676             IF(KCQM(JT).EQ.-1) ISID=5
17677             IDAU=N-1
17678             IF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.2) IDAU=N
17679             K(ID,ISID)=K(ID,ISID)+IDAU
17680             K(IDAU,ISID)=MSTU(5)*ID
17681 C...Then redirect colour flow if mother octet.
17682           ELSEIF(KCQ1(JT).EQ.0.OR.KCQ2(JT).EQ.0) THEN
17683             IDAU=N-1
17684             IF(KCQ1(JT).EQ.0) IDAU=N
17685             K(ID,4)=K(ID,4)+IDAU
17686             K(ID,5)=K(ID,5)+IDAU
17687             K(IDAU,4)=MSTU(5)*ID
17688             K(IDAU,5)=MSTU(5)*ID
17689           ELSE
17690             ISID=4
17691             IF(KCQ1(JT).EQ.-1) ISID=5
17692             IF(KCQ1(JT).EQ.2) ISID=INT(4.5D0+PYR(0))
17693             K(ID,ISID)=K(ID,ISID)+(N-1)
17694             K(ID,9-ISID)=K(ID,9-ISID)+N
17695             K(N-1,ISID)=MSTU(5)*ID
17696             K(N,9-ISID)=MSTU(5)*ID
17697           ENDIF
17698  
17699 C...Insert junction
17700           IF(IABS(KCQ1(JT)+KCQ2(JT)-KCQM(JT)).EQ.3) THEN
17701             N=N+1
17702 C...~q* mother: type 3 junction. ~q mother: type 4.
17703             ITJUNC(JT)=(7+KCQM(JT))/2
17704 C...Specify junction KF and set colour flow from junction
17705             K(N,1)=42
17706             K(N,2)=88
17707             K(N,3)=ID
17708 C...Junction type encoded together with mother:
17709             K(N,4)=ID+ITJUNC(JT)*MSTU(5)
17710             K(N,5)=N-1+MSTU(5)*(N-2)
17711 C...Zero P and V for junction (V filled later)
17712             DO 310 J=1,5
17713               P(N,J)=0D0
17714               V(N,J)=0D0
17715   310       CONTINUE
17716 C...Set colour flow from mother to junction
17717             K(ID,8-ITJUNC(JT))= N + MSTU(5)*(K(ID,8-ITJUNC(JT))/MSTU(5))
17718 C...Set colour flow from daughters to junction
17719             DO 320 II=N-2,N-1
17720               K(II,4) = 0
17721               K(II,5) = 0
17722 C...(Anti-)colour mother is junction.
17723               K(II,1+ITJUNC(JT)) = MSTU(5)*(N)
17724   320       CONTINUE
17725           ENDIF
17726         ENDIF
17727  
17728 C...End loop over resonances for daughter flavour and mass selection.
17729         MSTU(10)=MSTU10
17730   330   IF(MWID(KCA).NE.0.AND.(KFL1(JT).EQ.0.OR.KFL3(JT).NE.0))
17731      &  NINH=NINH+1
17732         IF(IRES.GT.0.AND.MWID(KCA).NE.0.AND.MDCY(KCA,1).NE.0.AND.
17733      &  KFL1(JT).EQ.0) THEN
17734           WRITE(CODE,'(I9)') K(ID,2)
17735           WRITE(MASS,'(F9.3)') P(ID,5)
17736           CALL PYERRM(3,'(PYRESD:) Failed to decay particle'//
17737      &    CODE//' with mass'//MASS)
17738           MINT(51)=1
17739           GOTO 720
17740         ENDIF
17741   340 CONTINUE
17742  
17743 C...Check for allowed combinations. Skip if no decays.
17744       IF(JTMAX.EQ.1) THEN
17745         IF(KDCY(1).EQ.0) GOTO 710
17746       ELSEIF(JTMAX.EQ.2) THEN
17747         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0) GOTO 710
17748         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 180
17749         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 180
17750       ELSEIF(JTMAX.EQ.3) THEN
17751         IF(KDCY(1).EQ.0.AND.KDCY(2).EQ.0.AND.KDCY(3).EQ.0) GOTO 710
17752         IF(KEQL(1).EQ.4.AND.KEQL(2).EQ.4) GOTO 180
17753         IF(KEQL(1).EQ.4.AND.KEQL(3).EQ.4) GOTO 180
17754         IF(KEQL(2).EQ.4.AND.KEQL(3).EQ.4) GOTO 180
17755         IF(KEQL(1).EQ.5.AND.KEQL(2).EQ.5) GOTO 180
17756         IF(KEQL(1).EQ.5.AND.KEQL(3).EQ.5) GOTO 180
17757         IF(KEQL(2).EQ.5.AND.KEQL(3).EQ.5) GOTO 180
17758       ENDIF
17759  
17760 C...Special case: matrix element option for Z0 decay to quarks.
17761       IF(MSTP(48).EQ.1.AND.ISUB.EQ.1.AND.JTMAX.EQ.1.AND.
17762      &IABS(MINT(11)).EQ.11.AND.IABS(KFL1(1)).LE.5) THEN
17763  
17764 C...Check consistency of MSTJ options set.
17765         IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
17766           CALL PYERRM(6,
17767      &    '(PYRESD:) MSTJ(109) value requires MSTJ(110) = 1')
17768           MSTJ(110)=1
17769         ENDIF
17770         IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
17771           CALL PYERRM(6,
17772      &    '(PYRESD:) MSTJ(109) value requires MSTJ(111) = 0')
17773  
17774           MSTJ(111)=0
17775         ENDIF
17776  
17777 C...Select alpha_strong behaviour.
17778         MST111=MSTU(111)
17779         PAR112=PARU(112)
17780         MSTU(111)=MSTJ(108)
17781         IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
17782      &  MSTU(111)=1
17783         PARU(112)=PARJ(121)
17784         IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
17785  
17786 C...Find axial fraction in total cross section for scalar gluon model.
17787         PARJ(171)=0D0
17788         IF((IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.1).OR.
17789      &  (MSTJ(101).EQ.5.AND.MSTJ(49).EQ.1)) THEN
17790           POLL=1D0-PARJ(131)*PARJ(132)
17791           SFF=1D0/(16D0*XW*XW1)
17792           SFW=P(ID,5)**4/((P(ID,5)**2-PARJ(123)**2)**2+
17793      &    (PARJ(123)*PARJ(124))**2)
17794           SFI=SFW*(1D0-(PARJ(123)/P(ID,5))**2)
17795           VE=4D0*XW-1D0
17796           HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
17797           HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*
17798      &    (PARJ(132)-PARJ(131)))
17799           KFLC=IABS(KFL1(1))
17800           PMQ=PYMASS(KFLC)
17801           QF=KCHG(KFLC,1)/3D0
17802           VQ=1D0
17803           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,
17804      &    1D0-(2D0*PMQ/P(ID,5))**2))
17805           VF=SIGN(1D0,QF)-4D0*QF*XW
17806           RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+
17807      &    VF**2*HF1W)+VQ**3*HF1W
17808           IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
17809         ENDIF
17810  
17811 C...Choice of jet configuration.
17812         CALL PYXJET(P(ID,5),NJET,CUT)
17813         KFLC=IABS(KFL1(1))
17814         KFLN=21
17815         IF(NJET.EQ.4) THEN
17816           CALL PYX4JT(NJET,CUT,KFLC,P(ID,5),KFLN,X1,X2,X4,X12,X14)
17817         ELSEIF(NJET.EQ.3) THEN
17818           CALL PYX3JT(NJET,CUT,KFLC,P(ID,5),X1,X3)
17819         ELSE
17820           MSTJ(120)=1
17821         ENDIF
17822  
17823 C...Fill jet configuration; return if incorrect kinematics.
17824         NC=N-2
17825         IF(NJET.EQ.2.AND.MSTJ(101).NE.5) THEN
17826           CALL PY2ENT(NC+1,KFLC,-KFLC,P(ID,5))
17827         ELSEIF(NJET.EQ.2) THEN
17828           CALL PY2ENT(-(NC+1),KFLC,-KFLC,P(ID,5))
17829         ELSEIF(NJET.EQ.3) THEN
17830           CALL PY3ENT(NC+1,KFLC,21,-KFLC,P(ID,5),X1,X3)
17831         ELSEIF(KFLN.EQ.21) THEN
17832           CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
17833      &    X12,X14)
17834         ELSE
17835           CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,-KFLC,P(ID,5),X1,X2,X4,
17836      &    X12,X14)
17837         ENDIF
17838         IF(MSTU(24).NE.0) THEN
17839           MINT(51)=1
17840           MSTU(111)=MST111
17841           PARU(112)=PAR112
17842           GOTO 720
17843         ENDIF
17844  
17845 C...Angular orientation according to matrix element.
17846         IF(MSTJ(106).EQ.1) THEN
17847           CALL PYXDIF(NC,NJET,KFLC,P(ID,5),CHIZ,THEZ,PHIZ)
17848           IF(MINT(11).LT.0) THEZ=PARU(1)-THEZ
17849           CTHE(1)=COS(THEZ)
17850           CALL PYROBO(NC+1,N,0D0,CHIZ,0D0,0D0,0D0)
17851           CALL PYROBO(NC+1,N,THEZ,PHIZ,0D0,0D0,0D0)
17852         ENDIF
17853  
17854 C...Boost partons to Z0 rest frame.
17855         CALL PYROBO(NC+1,N,0D0,0D0,P(ID,1)/P(ID,4),
17856      &  P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
17857  
17858 C...Mark decayed resonance and add documentation lines,
17859         K(ID,1)=K(ID,1)+10
17860         IDOC=MINT(83)+MINT(4)
17861         DO 360 I=NC+1,N
17862           I1=MINT(83)+MINT(4)+1
17863           K(I,3)=I1
17864           IF(MSTP(128).GE.1) K(I,3)=ID
17865           IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
17866             MINT(4)=MINT(4)+1
17867             K(I1,1)=21
17868             K(I1,2)=K(I,2)
17869             K(I1,3)=IREF(IP,4)
17870             DO 350 J=1,5
17871               P(I1,J)=P(I,J)
17872   350       CONTINUE
17873           ENDIF
17874   360   CONTINUE
17875  
17876 C...Generate parton shower.
17877         IF(MSTJ(101).EQ.5.AND.MINT(35).LE.1) THEN
17878           CALL PYSHOW(N-1,N,P(ID,5))
17879         ELSEIF(MSTJ(101).EQ.5.AND.MINT(35).GE.2) THEN
17880           NPART=2
17881           IPART(1)=N-1
17882           IPART(2)=N
17883           PTPART(1)=0.5D0*P(ID,5)
17884           PTPART(2)=PTPART(1)
17885           NCT=NCT+1
17886           IF(K(N-1,2).GT.0) THEN
17887             MCT(N-1,1)=NCT
17888             MCT(N,2)=NCT
17889           ELSE
17890             MCT(N-1,2)=NCT
17891             MCT(N,1)=NCT
17892           ENDIF
17893           CALL PYPTFS(2,0.5D0*P(ID,5),0D0,PTGEN)
17894         ENDIF
17895  
17896 C... End special case for Z0: skip ahead.
17897         MSTU(111)=MST111
17898         PARU(112)=PAR112
17899         GOTO 700
17900       ENDIF
17901  
17902 C...Order incoming partons and outgoing resonances.
17903       IF(JTMAX.EQ.2.AND.ISUB.NE.0.AND.MSTP(47).GE.1.AND.
17904      &NINH.EQ.0) THEN
17905         ILIN(1)=MINT(84)+1
17906         IF(K(MINT(84)+1,2).GT.0) ILIN(1)=MINT(84)+2
17907         IF(K(ILIN(1),2).EQ.21.OR.K(ILIN(1),2).EQ.22)
17908      &  ILIN(1)=2*MINT(84)+3-ILIN(1)
17909         ILIN(2)=2*MINT(84)+3-ILIN(1)
17910         IMIN=1
17911         IF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.IREF(IP,7)
17912      &  .EQ.36) IMIN=3
17913         IMAX=2
17914         IORD=1
17915         IF(K(IREF(IP,1),2).EQ.23) IORD=2
17916         IF(K(IREF(IP,1),2).EQ.24.AND.K(IREF(IP,2),2).EQ.-24) IORD=2
17917         IAKIPD=IABS(K(IREF(IP,IORD),2))
17918         IF(IAKIPD.EQ.25.OR.IAKIPD.EQ.35.OR.IAKIPD.EQ.36) IORD=3-IORD
17919         IF(KDCY(IORD).EQ.0) IORD=3-IORD
17920  
17921 C...Order decay products of resonances.
17922         DO 370 JT=IORD,3-IORD,3-2*IORD
17923           IF(KDCY(JT).EQ.0) THEN
17924             ILIN(IMAX+1)=NSD(JT)
17925             IMAX=IMAX+1
17926           ELSEIF(K(NSD(JT)+1,2).GT.0) THEN
17927             ILIN(IMAX+1)=N+2*JT-1
17928             ILIN(IMAX+2)=N+2*JT
17929             IMAX=IMAX+2
17930             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
17931             K(N+2*JT,2)=K(NSD(JT)+2,2)
17932           ELSE
17933             ILIN(IMAX+1)=N+2*JT
17934  
17935             ILIN(IMAX+2)=N+2*JT-1
17936             IMAX=IMAX+2
17937             K(N+2*JT-1,2)=K(NSD(JT)+1,2)
17938             K(N+2*JT,2)=K(NSD(JT)+2,2)
17939           ENDIF
17940   370   CONTINUE
17941  
17942 C...Find charge, isospin, left- and righthanded couplings.
17943         DO 390 I=IMIN,IMAX
17944           DO 380 J=1,4
17945             COUP(I,J)=0D0
17946   380     CONTINUE
17947           KFA=IABS(K(ILIN(I),2))
17948           IF(KFA.EQ.0.OR.KFA.GT.20) GOTO 390
17949           COUP(I,1)=KCHG(KFA,1)/3D0
17950           COUP(I,2)=(-1)**MOD(KFA,2)
17951           COUP(I,4)=-2D0*COUP(I,1)*XWV
17952           COUP(I,3)=COUP(I,2)+COUP(I,4)
17953   390   CONTINUE
17954  
17955 C...Full propagator dependence and flavour correlations for 2 gamma*/Z.
17956         IF(ISUB.EQ.22) THEN
17957           DO 420 I=3,5,2
17958             I1=IORD
17959             IF(I.EQ.5) I1=3-IORD
17960             DO 410 J1=1,2
17961               DO 400 J2=1,2
17962                 CORL(I/2,J1,J2)=COUP(1,1)**2*HGZ(I1,1)*COUP(I,1)**2/
17963      &          16D0+COUP(1,1)*COUP(1,J1+2)*HGZ(I1,2)*COUP(I,1)*
17964      &          COUP(I,J2+2)/4D0+COUP(1,J1+2)**2*HGZ(I1,3)*
17965      &          COUP(I,J2+2)**2
17966   400         CONTINUE
17967   410       CONTINUE
17968   420     CONTINUE
17969           COWT12=(CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
17970      &    (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2))
17971           COMX12=(CORL(1,1,1)+CORL(1,1,2)+CORL(1,2,1)+CORL(1,2,2))*
17972      &    (CORL(2,1,1)+CORL(2,1,2)+CORL(2,2,1)+CORL(2,2,2))
17973  
17974           IF(COWT12.LT.PYR(0)*COMX12) GOTO 180
17975         ENDIF
17976       ENDIF
17977  
17978 C...Select angular orientation type - Z'/W' only.
17979       MZPWP=0
17980       IF(ISUB.EQ.141) THEN
17981         IF(PYR(0).LT.PARU(130)) MZPWP=1
17982         IF(IP.EQ.2) THEN
17983           IF(IABS(K(IREF(2,1),2)).EQ.37) MZPWP=2
17984           IAKIR=IABS(K(IREF(2,2),2))
17985           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
17986           IF(IAKIR.LE.20) MZPWP=2
17987         ENDIF
17988         IF(IP.GE.3) MZPWP=2
17989       ELSEIF(ISUB.EQ.142) THEN
17990         IF(PYR(0).LT.PARU(136)) MZPWP=1
17991         IF(IP.EQ.2) THEN
17992           IAKIR=IABS(K(IREF(2,2),2))
17993           IF(IAKIR.EQ.25.OR.IAKIR.EQ.35.OR.IAKIR.EQ.36) MZPWP=2
17994           IF(IAKIR.LE.20) MZPWP=2
17995         ENDIF
17996         IF(IP.GE.3) MZPWP=2
17997       ENDIF
17998  
17999 C...Select random angles (begin of weighting procedure).
18000   430 DO 440 JT=1,JTMAX
18001         IF(KDCY(JT).EQ.0) GOTO 440
18002         IF(JTMAX.EQ.1.AND.ISUB.NE.0.AND.IHDEC.EQ.0) THEN
18003           CTHE(JT)=VINT(13)+(VINT(33)-VINT(13)+VINT(34)-VINT(14))*PYR(0)
18004           IF(CTHE(JT).GT.VINT(33)) CTHE(JT)=CTHE(JT)+VINT(14)-VINT(33)
18005           PHI(JT)=VINT(24)
18006         ELSE
18007           CTHE(JT)=2D0*PYR(0)-1D0
18008           PHI(JT)=PARU(2)*PYR(0)
18009         ENDIF
18010   440 CONTINUE
18011  
18012       IF(JTMAX.EQ.2.AND.MSTP(47).GE.1.AND.NINH.EQ.0) THEN
18013 C...Construct massless four-vectors.
18014         DO 460 I=N+1,N+4
18015           K(I,1)=1
18016           DO 450 J=1,5
18017             P(I,J)=0D0
18018             V(I,J)=0D0
18019   450     CONTINUE
18020   460   CONTINUE
18021         DO 470 JT=1,JTMAX
18022           IF(KDCY(JT).EQ.0) GOTO 470
18023           ID=IREF(IP,JT)
18024           P(N+2*JT-1,3)=0.5D0*P(ID,5)
18025           P(N+2*JT-1,4)=0.5D0*P(ID,5)
18026           P(N+2*JT,3)=-0.5D0*P(ID,5)
18027           P(N+2*JT,4)=0.5D0*P(ID,5)
18028           CALL PYROBO(N+2*JT-1,N+2*JT,ACOS(CTHE(JT)),PHI(JT),
18029      &    P(ID,1)/P(ID,4),P(ID,2)/P(ID,4),P(ID,3)/P(ID,4))
18030   470   CONTINUE
18031  
18032 C...Store incoming and outgoing momenta, with random rotation to
18033 C...avoid accidental zeroes in HA expressions.
18034         IF(ISUB.NE.0) THEN
18035           DO 490 I=IMIN,IMAX
18036             K(N+4+I,1)=1
18037             P(N+4+I,4)=SQRT(P(ILIN(I),1)**2+P(ILIN(I),2)**2+
18038      &      P(ILIN(I),3)**2+P(ILIN(I),5)**2)
18039             P(N+4+I,5)=P(ILIN(I),5)
18040             DO 480 J=1,3
18041               P(N+4+I,J)=P(ILIN(I),J)
18042   480       CONTINUE
18043   490     CONTINUE
18044   500     THERR=ACOS(2D0*PYR(0)-1D0)
18045           PHIRR=PARU(2)*PYR(0)
18046           CALL PYROBO(N+4+IMIN,N+4+IMAX,THERR,PHIRR,0D0,0D0,0D0)
18047           DO 520 I=IMIN,IMAX
18048             IF(P(N+4+I,1)**2+P(N+4+I,2)**2.LT.1D-4*(P(N+4+I,1)**2+
18049      &      P(N+4+I,2)**2+P(N+4+I,3)**2)) GOTO 500
18050             DO 510 J=1,4
18051               PK(I,J)=P(N+4+I,J)
18052   510       CONTINUE
18053   520     CONTINUE
18054         ENDIF
18055  
18056 C...Calculate internal products.
18057         IF(ISUB.EQ.22.OR.ISUB.EQ.23.OR.ISUB.EQ.25.OR.ISUB.EQ.141.OR.
18058      &  ISUB.EQ.142) THEN
18059           DO 540 I1=IMIN,IMAX-1
18060             DO 530 I2=I1+1,IMAX
18061               HA(I1,I2)=SNGL(SQRT((PK(I1,4)-PK(I1,3))*(PK(I2,4)+
18062      &        PK(I2,3))/(1D-20+PK(I1,1)**2+PK(I1,2)**2)))*
18063      &        CMPLX(SNGL(PK(I1,1)),SNGL(PK(I1,2)))-
18064      &        SNGL(SQRT((PK(I1,4)+PK(I1,3))*(PK(I2,4)-PK(I2,3))/
18065      &        (1D-20+PK(I2,1)**2+PK(I2,2)**2)))*
18066      &        CMPLX(SNGL(PK(I2,1)),SNGL(PK(I2,2)))
18067               HC(I1,I2)=CONJG(HA(I1,I2))
18068               IF(I1.LE.2) HA(I1,I2)=CMPLX(0.,1.)*HA(I1,I2)
18069               IF(I1.LE.2) HC(I1,I2)=CMPLX(0.,1.)*HC(I1,I2)
18070               HA(I2,I1)=-HA(I1,I2)
18071               HC(I2,I1)=-HC(I1,I2)
18072   530       CONTINUE
18073   540     CONTINUE
18074         ENDIF
18075  
18076 C...Calculate four-products.
18077         IF(ISUB.NE.0) THEN
18078           DO 560 I=1,2
18079             DO 550 J=1,4
18080               PK(I,J)=-PK(I,J)
18081   550       CONTINUE
18082   560     CONTINUE
18083           DO 580 I1=IMIN,IMAX-1
18084             DO 570 I2=I1+1,IMAX
18085               PKK(I1,I2)=2D0*(PK(I1,4)*PK(I2,4)-PK(I1,1)*PK(I2,1)-
18086      &        PK(I1,2)*PK(I2,2)-PK(I1,3)*PK(I2,3))
18087               PKK(I2,I1)=PKK(I1,I2)
18088   570       CONTINUE
18089   580     CONTINUE
18090         ENDIF
18091       ENDIF
18092  
18093       KFAGM=IABS(IREF(IP,7))
18094       IF(MSTP(47).LE.0.OR.NINH.NE.0) THEN
18095 C...Isotropic decay selected by user.
18096         WT=1D0
18097         WTMAX=1D0
18098  
18099       ELSEIF(JTMAX.EQ.3) THEN
18100 C...Isotropic decay when three mother particles.
18101         WT=1D0
18102         WTMAX=1D0
18103  
18104       ELSEIF(IT4.GE.1) THEN
18105 C... Isotropic decay t -> b + W etc for 4th generation q and l.
18106         WT=1D0
18107         WTMAX=1D0
18108  
18109       ELSEIF(IREF(IP,7).EQ.25.OR.IREF(IP,7).EQ.35.OR.
18110      &  IREF(IP,7).EQ.36) THEN
18111 C...Angular weight for h0/A0 -> Z0 + Z0 or W+ + W- -> 4 quarks/leptons.
18112 C...CP-odd case added by Kari Ertresvag Myklevoll.
18113 C...Now also with mixed Higgs CP-states
18114         ETA=PARP(25)
18115         IF(IP.EQ.1) WTMAX=SH**2
18116         IF(IP.GE.2) WTMAX=P(IREF(IP,8),5)**4
18117         KFA=IABS(K(IREF(IP,1),2))
18118         KFT=IABS(K(IREF(IP,2),2))
18119         
18120         IF((KFA.EQ.KFT).AND.(KFA.EQ.23.OR.KFA.EQ.24).AND.
18121      &  MSTP(25).GE.3) THEN
18122 C...For mixed CP states need epsilon product.
18123           P10=PK(3,4)
18124           P20=PK(4,4)
18125           P30=PK(5,4)
18126           P40=PK(6,4)
18127           P11=PK(3,1)
18128           P21=PK(4,1)
18129           P31=PK(5,1)
18130           P41=PK(6,1)
18131           P12=PK(3,2)
18132           P22=PK(4,2)
18133           P32=PK(5,2)
18134           P42=PK(6,2)
18135           P13=PK(3,3)
18136           P23=PK(4,3)
18137           P33=PK(5,3)
18138           P43=PK(6,3)
18139           EPSI=P10*P21*P32*P43-P10*P21*P33*P42-P10*P22*P31*P43+P10*P22*
18140      &      P33*P41+P10*P23*P31*P42-P10*P23*P32*P41-P11*P20*P32*P43+P11*
18141      &      P20*P33*P42+P11*P22*P30*P43-P11*P22*P33*P40-P11*P23*P30*P42+
18142      &      P11*P23*P32*P40+P12*P20*P31*P43-P12*P20*P33*P41-P12*P21*P30*
18143      &      P43+P12*P21*P33*P40+P12*P23*P30*P41-P12*P23*P31*P40-P13*P20*
18144      &      P31*P42+P13*P20*P32*P41+P13*P21*P30*P42-P13*P21*P32*P40-P13*
18145      &      P22*P30*P41+P13*P22*P31*P40
18146 C...For mixed CP states need gauge boson masses.
18147           XMA=SQRT(MAX(0D0,(PK(3,4)+PK(4,4))**2-(PK(3,1)+PK(4,1))**2-
18148      &      (PK(3,2)+PK(4,2))**2-(PK(3,3)+PK(4,3))**2))
18149           XMB=SQRT(MAX(0D0,(PK(5,4)+PK(6,4))**2-(PK(5,1)+PK(6,1))**2-
18150      &      (PK(5,2)+PK(6,2))**2-(PK(5,3)+PK(6,3))**2))
18151           XMV=PMAS(KFA,1)
18152         ENDIF
18153  
18154 C...Z decay
18155         IF(KFA.EQ.23.AND.KFA.EQ.KFT) THEN
18156           KFLF1A=IABS(KFL1(1))
18157           EF1=KCHG(KFLF1A,1)/3D0
18158           AF1=SIGN(1D0,EF1+0.1D0)
18159           VF1=AF1-4D0*EF1*XWV
18160           KFLF2A=IABS(KFL1(2))
18161           EF2=KCHG(KFLF2A,1)/3D0
18162           AF2=SIGN(1D0,EF2+0.1D0)
18163           VF2=AF2-4D0*EF2*XWV
18164           VA12AS=4D0*VF1*AF1*VF2*AF2/((VF1**2+AF1**2)*(VF2**2+AF2**2))
18165           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
18166      &      THEN
18167 C...CP-even decay
18168             WT=8D0*(1D0+VA12AS)*PKK(3,5)*PKK(4,6)+
18169      &        8D0*(1D0-VA12AS)*PKK(3,6)*PKK(4,5)
18170           ELSEIF(MSTP(25).LE.2) THEN
18171 C...CP-odd decay
18172             WT=((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
18173      &        -2*PKK(3,4)*PKK(5,6)
18174      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
18175      &        (PKK(3,4)*PKK(5,6))
18176      &        +VA12AS*(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
18177      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))/(1+VA12AS)
18178           ELSE
18179 C...Mixed CP states.
18180             WT=32D0*(0.25D0*((1D0+VA12AS)*PKK(3,5)*PKK(4,6)
18181      &        +(1D0-VA12AS)*PKK(3,6)*PKK(4,5))
18182      &        -0.5D0*ETA/XMV**2*EPSI*((1D0+VA12AS)*(PKK(3,5)+PKK(4,6))
18183      &        -(1D0-VA12AS)*(PKK(3,6)+PKK(4,5)))
18184      &        +6.25D-2*ETA**2/XMV**4*(-2D0*PKK(3,4)**2*PKK(5,6)**2
18185      &        -2D0*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2
18186      &        +PKK(3,4)*PKK(5,6)
18187      &        *((PKK(3,5)+PKK(4,6))**2+(PKK(3,6)+PKK(4,5))**2)
18188      &        +VA12AS*PKK(3,4)*PKK(5,6)
18189      &        *(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))
18190      &        *(PKK(3,5)-PKK(3,6)+PKK(4,5)-PKK(4,6))))
18191      &        /(1D0 +2D0*ETA*XMA*XMB/XMV**2
18192      &          +2D0*(ETA*XMA*XMB/XMV**2)**2*(1D0+VA12AS))
18193           ENDIF
18194  
18195 C...W decay
18196         ELSEIF(KFA.EQ.24.AND.KFA.EQ.KFT) THEN
18197           IF((MSTP(25).EQ.0.AND.IREF(IP,7).NE.36).OR.MSTP(25).EQ.1)
18198      &      THEN
18199 C...CP-even decay
18200             WT=16D0*PKK(3,5)*PKK(4,6)
18201           ELSEIF(MSTP(25).LE.2) THEN
18202 C...CP-odd decay
18203             WT=0.5D0*((PKK(3,5)+PKK(4,6))**2 +(PKK(3,6)+PKK(4,5))**2
18204      &        -2*PKK(3,4)*PKK(5,6)
18205      &        -2*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2/
18206      &        (PKK(3,4)*PKK(5,6))
18207      &        +(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))*
18208      &        (PKK(3,5)+PKK(4,5)-PKK(3,6)-PKK(4,6)))
18209           ELSE
18210 C...Mixed CP states.
18211             WT=32D0*(0.25D0*2D0*PKK(3,5)*PKK(4,6)
18212      &        -0.5D0*ETA/XMV**2*EPSI*2D0*(PKK(3,5)+PKK(4,6))
18213      &        +6.25D-2*ETA**2/XMV**4*(-2D0*PKK(3,4)**2*PKK(5,6)**2
18214      &        -2D0*(PKK(3,5)*PKK(4,6)-PKK(3,6)*PKK(4,5))**2
18215      &        +PKK(3,4)*PKK(5,6)
18216      &        *((PKK(3,5)+PKK(4,6))**2+(PKK(3,6)+PKK(4,5))**2)
18217      &        +PKK(3,4)*PKK(5,6)
18218      &        *(PKK(3,5)+PKK(3,6)-PKK(4,5)-PKK(4,6))
18219      &        *(PKK(3,5)-PKK(3,6)+PKK(4,5)-PKK(4,6))))
18220      &        /(1D0 +2D0*ETA*XMA*XMB/XMV**2
18221      &          +(2D0*ETA*XMA*XMB/XMV**2)**2)
18222           ENDIF
18223  
18224 C...No angular correlations in other Higgs decays.
18225         ELSE
18226           WT=WTMAX
18227         ENDIF
18228  
18229       ELSEIF((KFAGM.EQ.6.OR.KFAGM.EQ.7.OR.KFAGM.EQ.8.OR.
18230      &  KFAGM.EQ.17.OR.KFAGM.EQ.18).AND.IABS(K(IREF(IP,1),2)).EQ.24)
18231      &  THEN
18232 C...Angular correlation in f -> f' + W -> f' + 2 quarks/leptons.
18233         I1=IREF(IP,8)
18234         IF(MOD(KFAGM,2).EQ.0) THEN
18235           I2=N+1
18236           I3=N+2
18237         ELSE
18238           I2=N+2
18239           I3=N+1
18240         ENDIF
18241         I4=IREF(IP,2)
18242         WT=(P(I1,4)*P(I2,4)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
18243      &  P(I1,3)*P(I2,3))*(P(I3,4)*P(I4,4)-P(I3,1)*P(I4,1)-
18244      &  P(I3,2)*P(I4,2)-P(I3,3)*P(I4,3))
18245         WTMAX=(P(I1,5)**4-P(IREF(IP,1),5)**4)/8D0
18246  
18247       ELSEIF(ISUB.EQ.1) THEN
18248 C...Angular weight for gamma*/Z0 -> 2 quarks/leptons.
18249         EI=KCHG(IABS(MINT(15)),1)/3D0
18250         AI=SIGN(1D0,EI+0.1D0)
18251         VI=AI-4D0*EI*XWV
18252         EF=KCHG(IABS(KFL1(1)),1)/3D0
18253         AF=SIGN(1D0,EF+0.1D0)
18254  
18255         VF=AF-4D0*EF*XWV
18256         RMF=MIN(1D0,4D0*PMAS(IABS(KFL1(1)),1)**2/SH)
18257         WT1=EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
18258      &  (VI**2+AI**2)*VINT(114)*(VF**2+(1D0-RMF)*AF**2)
18259         WT2=RMF*(EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
18260      &  (VI**2+AI**2)*VINT(114)*VF**2)
18261         WT3=SQRT(1D0-RMF)*(EI*AI*VINT(112)*EF*AF+
18262      &  4D0*VI*AI*VINT(114)*VF*AF)
18263         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
18264      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
18265         WTMAX=2D0*(WT1+ABS(WT3))
18266  
18267       ELSEIF(ISUB.EQ.2) THEN
18268 C...Angular weight for W+/- -> 2 quarks/leptons.
18269         RM3=PMAS(IABS(KFL1(1)),1)**2/SH
18270         RM4=PMAS(IABS(KFL2(1)),1)**2/SH
18271         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
18272         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
18273         WTMAX=4D0
18274  
18275       ELSEIF(ISUB.EQ.15.OR.ISUB.EQ.19) THEN
18276 C...Angular weight for f + fbar -> gluon/gamma + (gamma*/Z0) ->
18277 C...-> gluon/gamma + 2 quarks/leptons.
18278         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18279      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
18280      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
18281         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18282      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
18283      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
18284         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18285      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
18286      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
18287         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18288      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
18289      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
18290         WT=(CLILF+CRIRF)*(PKK(1,3)**2+PKK(2,4)**2)+
18291      &  (CLIRF+CRILF)*(PKK(1,4)**2+PKK(2,3)**2)
18292         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
18293      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2)
18294  
18295       ELSEIF(ISUB.EQ.16.OR.ISUB.EQ.20) THEN
18296 C...Angular weight for f + fbar' -> gluon/gamma + W+/- ->
18297 C...-> gluon/gamma + 2 quarks/leptons.
18298         WT=PKK(1,3)**2+PKK(2,4)**2
18299         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(2,3)+PKK(2,4))**2
18300  
18301       ELSEIF(ISUB.EQ.22) THEN
18302 C...Angular weight for f + fbar -> Z0 + Z0 -> 4 quarks/leptons.
18303         S34=P(IREF(IP,IORD),5)**2
18304         S56=P(IREF(IP,3-IORD),5)**2
18305         TI=PKK(1,3)+PKK(1,4)+S34
18306         UI=PKK(1,5)+PKK(1,6)+S56
18307         TIR=REAL(TI)
18308         UIR=REAL(UI)
18309         FGK135=ABS(FGK(1,2,3,4,5,6)/TIR+FGK(1,2,5,6,3,4)/UIR)**2
18310         FGK145=ABS(FGK(1,2,4,3,5,6)/TIR+FGK(1,2,5,6,4,3)/UIR)**2
18311         FGK136=ABS(FGK(1,2,3,4,6,5)/TIR+FGK(1,2,6,5,3,4)/UIR)**2
18312         FGK146=ABS(FGK(1,2,4,3,6,5)/TIR+FGK(1,2,6,5,4,3)/UIR)**2
18313         FGK253=ABS(FGK(2,1,5,6,3,4)/TIR+FGK(2,1,3,4,5,6)/UIR)**2
18314         FGK263=ABS(FGK(2,1,6,5,3,4)/TIR+FGK(2,1,3,4,6,5)/UIR)**2
18315         FGK254=ABS(FGK(2,1,5,6,4,3)/TIR+FGK(2,1,4,3,5,6)/UIR)**2
18316         FGK264=ABS(FGK(2,1,6,5,4,3)/TIR+FGK(2,1,4,3,6,5)/UIR)**2
18317  
18318         WT=
18319      &  CORL(1,1,1)*CORL(2,1,1)*FGK135+CORL(1,1,2)*CORL(2,1,1)*FGK145+
18320      &  CORL(1,1,1)*CORL(2,1,2)*FGK136+CORL(1,1,2)*CORL(2,1,2)*FGK146+
18321      &  CORL(1,2,1)*CORL(2,2,1)*FGK253+CORL(1,2,2)*CORL(2,2,1)*FGK263+
18322      &  CORL(1,2,1)*CORL(2,2,2)*FGK254+CORL(1,2,2)*CORL(2,2,2)*FGK264
18323         WTMAX=16D0*((CORL(1,1,1)+CORL(1,1,2))*(CORL(2,1,1)+CORL(2,1,2))+
18324      &  (CORL(1,2,1)+CORL(1,2,2))*(CORL(2,2,1)+CORL(2,2,2)))*S34*S56*
18325      &  ((TI**2+UI**2+2D0*SH*(S34+S56))/(TI*UI)-S34*S56*(1D0/TI**2+
18326      &  1D0/UI**2))
18327  
18328       ELSEIF(ISUB.EQ.23) THEN
18329 C...Angular weight for f + fbar' -> Z0 + W+/- -> 4 quarks/leptons.
18330         D34=P(IREF(IP,IORD),5)**2
18331         D56=P(IREF(IP,3-IORD),5)**2
18332         DT=PKK(1,3)+PKK(1,4)+D34
18333         DU=PKK(1,5)+PKK(1,6)+D56
18334         FACBW=1D0/((SH-SQMW)**2+GMMW**2)
18335         CAWZ=COUP(2,3)/DT-2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
18336         CBWZ=COUP(1,3)/DU+2D0*XW1*COUP(1,2)*(SH-SQMW)*FACBW
18337         FGK135=ABS(REAL(CAWZ)*FGK(1,2,3,4,5,6)+
18338  
18339      &  REAL(CBWZ)*FGK(1,2,5,6,3,4))
18340         FGK136=ABS(REAL(CAWZ)*FGK(1,2,3,4,6,5)+
18341      &  REAL(CBWZ)*FGK(1,2,6,5,3,4))
18342         WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
18343         WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*(CAWZ**2*
18344      &  DIGK(DT,DU)+CBWZ**2*DIGK(DU,DT)+CAWZ*CBWZ*DJGK(DT,DU))
18345  
18346       ELSEIF(ISUB.EQ.24.OR.ISUB.EQ.171.OR.ISUB.EQ.176) THEN
18347 C...Angular weight for f + fbar -> Z0 + h0 -> 2 quarks/leptons + h0
18348 C...(or H0, or A0).
18349         WT=((COUP(1,3)*COUP(3,3))**2+(COUP(1,4)*COUP(3,4))**2)*
18350      &  PKK(1,3)*PKK(2,4)+((COUP(1,3)*COUP(3,4))**2+(COUP(1,4)*
18351      &  COUP(3,3))**2)*PKK(1,4)*PKK(2,3)
18352         WTMAX=(COUP(1,3)**2+COUP(1,4)**2)*(COUP(3,3)**2+COUP(3,4)**2)*
18353      &  (PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
18354  
18355       ELSEIF(ISUB.EQ.25) THEN
18356 C...Angular weight for f + fbar -> W+ + W- -> 4 quarks/leptons.
18357         POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
18358         POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
18359         D34=P(IREF(IP,IORD),5)**2
18360         D56=P(IREF(IP,3-IORD),5)**2
18361         DT=PKK(1,3)+PKK(1,4)+D34
18362         DU=PKK(1,5)+PKK(1,6)+D56
18363         FACBW=1D0/((SH-SQMZ)**2+SQMZ*PMAS(23,2)**2)
18364         CDWW=(COUP(1,3)*SQMZ*(SH-SQMZ)*FACBW+COUP(1,2))/SH
18365         CAWW=CDWW+0.5D0*(COUP(1,2)+1D0)/DT
18366         CBWW=CDWW+0.5D0*(COUP(1,2)-1D0)/DU
18367         CCWW=COUP(1,4)*SQMZ*(SH-SQMZ)*FACBW/SH
18368         FGK135=ABS(REAL(CAWW)*FGK(1,2,3,4,5,6)-
18369      &  REAL(CBWW)*FGK(1,2,5,6,3,4))
18370         FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
18371         IF(MSTP(50).LE.0) THEN
18372           WT=FGK135**2+(CCWW*FGK253)**2
18373           WTMAX=4D0*D34*D56*(CAWW**2*DIGK(DT,DU)+CBWW**2*DIGK(DU,DT)-
18374      &    CAWW*CBWW*DJGK(DT,DU)+CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-
18375      &    DJGK(DT,DU)))
18376         ELSE
18377           WT=POLL*FGK135**2+POLR*(CCWW*FGK253)**2
18378           WTMAX=4D0*D34*D56*(POLL*(CAWW**2*DIGK(DT,DU)+
18379      &    CBWW**2*DIGK(DU,DT)-CAWW*CBWW*DJGK(DT,DU))+
18380      &    POLR*CCWW**2*(DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU)))
18381         ENDIF
18382  
18383       ELSEIF(ISUB.EQ.26.OR.ISUB.EQ.172.OR.ISUB.EQ.177) THEN
18384 C...Angular weight for f + fbar' -> W+/- + h0 -> 2 quarks/leptons + h0
18385 C...(or H0, or A0).
18386         WT=PKK(1,3)*PKK(2,4)
18387         WTMAX=(PKK(1,3)+PKK(1,4))*(PKK(2,3)+PKK(2,4))
18388  
18389       ELSEIF(ISUB.EQ.30.OR.ISUB.EQ.35) THEN
18390 C...Angular weight for f + g/gamma -> f + (gamma*/Z0)
18391 C...-> f + 2 quarks/leptons.
18392         CLILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18393      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
18394      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,3)**2
18395         CLIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18396      &  COUP(1,1)*COUP(1,3)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
18397      &  COUP(1,3)**2*HGZ(JTZ,3)*COUP(3,4)**2
18398         CRILF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18399      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,3)/4D0+
18400      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,3)**2
18401         CRIRF=COUP(1,1)**2*HGZ(JTZ,1)*COUP(3,1)**2/16D0+
18402      &  COUP(1,1)*COUP(1,4)*HGZ(JTZ,2)*COUP(3,1)*COUP(3,4)/4D0+
18403      &  COUP(1,4)**2*HGZ(JTZ,3)*COUP(3,4)**2
18404         IF(K(ILIN(1),2).GT.0) WT=(CLILF+CRIRF)*(PKK(1,4)**2+
18405      &  PKK(3,5)**2)+(CLIRF+CRILF)*(PKK(1,3)**2+PKK(4,5)**2)
18406         IF(K(ILIN(1),2).LT.0) WT=(CLILF+CRIRF)*(PKK(1,3)**2+
18407      &  PKK(4,5)**2)+(CLIRF+CRILF)*(PKK(1,4)**2+PKK(3,5)**2)
18408         WTMAX=(CLILF+CLIRF+CRILF+CRIRF)*
18409      &  ((PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2)
18410  
18411       ELSEIF(ISUB.EQ.31.OR.ISUB.EQ.36) THEN
18412 C...Angular weight for f + g/gamma -> f' + W+/- -> f' + 2 fermions.
18413         IF(K(ILIN(1),2).GT.0) WT=PKK(1,4)**2+PKK(3,5)**2
18414         IF(K(ILIN(1),2).LT.0) WT=PKK(1,3)**2+PKK(4,5)**2
18415         WTMAX=(PKK(1,3)+PKK(1,4))**2+(PKK(3,5)+PKK(4,5))**2
18416  
18417       ELSEIF(ISUB.EQ.71.OR.ISUB.EQ.72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.
18418      &  ISUB.EQ.77) THEN
18419 C...Angular weight for V_L1 + V_L2 -> V_L3 + V_L4 (V = Z/W).
18420         WT=16D0*PKK(3,5)*PKK(4,6)
18421         WTMAX=SH**2
18422  
18423       ELSEIF(ISUB.EQ.110) THEN
18424 C...Angular weight for f + fbar -> gamma + h0 -> gamma + X is isotropic.
18425         WT=1D0
18426         WTMAX=1D0
18427  
18428       ELSEIF(ISUB.EQ.141) THEN
18429 C...Special case: if only branching ratios known then isotropic decay.
18430         IF(MWID(32).EQ.2) THEN
18431           WT=1D0
18432           WTMAX=1D0
18433         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN 
18434 C...Angular weight for f + fbar -> gamma*/Z0/Z'0 -> 2 quarks/leptons.
18435 C...Couplings of incoming flavour.
18436           KFAI=IABS(MINT(15))
18437           EI=KCHG(KFAI,1)/3D0
18438           AI=SIGN(1D0,EI+0.1D0)
18439           VI=AI-4D0*EI*XWV
18440           KFAIC=1
18441           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
18442           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
18443           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
18444           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
18445             VPI=PARU(119+2*KFAIC)
18446             API=PARU(120+2*KFAIC)
18447           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
18448             VPI=PARJ(178+2*KFAIC)
18449             API=PARJ(179+2*KFAIC)
18450           ELSE
18451             VPI=PARJ(186+2*KFAIC)
18452             API=PARJ(187+2*KFAIC)
18453           ENDIF
18454 C...Couplings of final flavour.
18455           KFAF=IABS(KFL1(1))
18456           EF=KCHG(KFAF,1)/3D0
18457           AF=SIGN(1D0,EF+0.1D0)
18458           VF=AF-4D0*EF*XWV
18459           KFAFC=1
18460           IF(KFAF.LE.10.AND.MOD(KFAF,2).EQ.0) KFAFC=2
18461           IF(KFAF.GT.10.AND.MOD(KFAF,2).NE.0) KFAFC=3
18462           IF(KFAF.GT.10.AND.MOD(KFAF,2).EQ.0) KFAFC=4
18463           IF(KFAF.LE.2.OR.KFAF.EQ.11.OR.KFAF.EQ.12) THEN
18464             VPF=PARU(119+2*KFAFC)
18465             APF=PARU(120+2*KFAFC)
18466           ELSEIF(KFAF.LE.4.OR.KFAF.EQ.13.OR.KFAF.EQ.14) THEN
18467             VPF=PARJ(178+2*KFAFC)
18468             APF=PARJ(179+2*KFAFC)
18469           ELSE
18470             VPF=PARJ(186+2*KFAFC)
18471             APF=PARJ(187+2*KFAFC)
18472           ENDIF
18473 C...Asymmetry and weight.
18474           ASYM=2D0*(EI*AI*VINT(112)*EF*AF+EI*API*VINT(113)*EF*APF+
18475      &    4D0*VI*AI*VINT(114)*VF*AF+(VI*API+VPI*AI)*VINT(115)*
18476      &    (VF*APF+VPF*AF)+4D0*VPI*API*VINT(116)*VPF*APF)/
18477      &    (EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*EF*VF+
18478      &    EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
18479      &    (VF**2+AF**2)+(VI*VPI+AI*API)*VINT(115)*(VF*VPF+AF*APF)+
18480      &    (VPI**2+API**2)*VINT(116)*(VPF**2+APF**2))
18481           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
18482           WTMAX=2D0+ABS(ASYM)
18483         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).EQ.24) THEN
18484 C...Angular weight for f + fbar -> Z' -> W+ + W-.
18485           RM1=P(NSD(1)+1,5)**2/SH
18486           RM2=P(NSD(1)+2,5)**2/SH
18487           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
18488      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
18489           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
18490      &    (RM2-RM1)**2)
18491           WT=CFLAT+CCOS2*CTHE(1)**2
18492           WTMAX=CFLAT+MAX(0D0,CCOS2)
18493         ELSEIF(IP.EQ.1.AND.(KFL1(1).EQ.25.OR.KFL1(1).EQ.35.OR.
18494      &    IABS(KFL1(1)).EQ.37)) THEN
18495 C...Angular weight for f + fbar -> Z' -> h0 + A0, H0 + A0, H+ + H-.
18496           WT=1D0-CTHE(1)**2
18497           WTMAX=1D0
18498         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
18499 C...Angular weight for f + fbar -> Z' -> Z0 + h0.
18500           RM1=P(NSD(1)+1,5)**2/SH
18501           RM2=P(NSD(1)+2,5)**2/SH
18502           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
18503           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
18504           WTMAX=1D0+FLAM2/(8D0*RM1)
18505         ELSEIF(MZPWP.EQ.0) THEN
18506 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
18507 C...(W:s like if intermediate Z).
18508           D34=P(IREF(IP,IORD),5)**2
18509           D56=P(IREF(IP,3-IORD),5)**2
18510           DT=PKK(1,3)+PKK(1,4)+D34
18511           DU=PKK(1,5)+PKK(1,6)+D56
18512           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
18513           FGK253=ABS(FGK(2,1,5,6,3,4)-FGK(2,1,3,4,5,6))
18514           WT=(COUP(1,3)*FGK135)**2+(COUP(1,4)*FGK253)**2
18515           WTMAX=4D0*D34*D56*(COUP(1,3)**2+COUP(1,4)**2)*
18516      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
18517         ELSEIF(MZPWP.EQ.1) THEN
18518 C...Angular weight for f + fbar -> Z' -> W+ + W- -> 4 quarks/leptons
18519 C...(W:s approximately longitudinal, like if intermediate H).
18520           WT=16D0*PKK(3,5)*PKK(4,6)
18521           WTMAX=SH**2
18522         ELSE
18523 C...Angular weight for f + fbar -> Z' -> H+ + H-, Z0 + h0, h0 + A0,
18524 C...H0 + A0 -> 4 quarks/leptons, t + tbar -> b + W+ + bbar + W- .
18525           WT=1D0
18526           WTMAX=1D0
18527         ENDIF
18528  
18529       ELSEIF(ISUB.EQ.142) THEN
18530 C...Special case: if only branching ratios known then isotropic decay.
18531         IF(MWID(34).EQ.2) THEN
18532           WT=1D0
18533           WTMAX=1D0
18534         ELSEIF(IP.EQ.1.AND.IABS(KFL1(1)).LT.20) THEN 
18535 C...Angular weight for f + fbar' -> W'+/- -> 2 quarks/leptons.
18536           KFAI=IABS(MINT(15))
18537           KFAIC=1
18538           IF(KFAI.GT.10) KFAIC=2
18539           VI=PARU(129+2*KFAIC)
18540           AI=PARU(130+2*KFAIC)
18541           KFAF=IABS(KFL1(1))
18542           KFAFC=1
18543           IF(KFAF.GT.10) KFAFC=2
18544           VF=PARU(129+2*KFAFC)
18545           AF=PARU(130+2*KFAFC)
18546           ASYM=8D0*VI*AI*VF*AF/((VI**2+AI**2)*(VF**2+AF**2))
18547           WT=1D0+ASYM*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))+CTHE(1)**2
18548           WTMAX=2D0+ABS(ASYM)
18549         ELSEIF(IP.EQ.1.AND.IABS(KFL2(1)).EQ.23) THEN
18550 C...Angular weight for f + fbar' -> W'+/- -> W+/- + Z0.
18551           RM1=P(NSD(1)+1,5)**2/SH
18552           RM2=P(NSD(1)+2,5)**2/SH
18553           CCOS2=-(1D0/16D0)*((1D0-RM1-RM2)**2-4D0*RM1*RM2)*
18554      &    (1D0-2D0*RM1-2D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
18555           CFLAT=-CCOS2+0.5D0*(RM1+RM2)*(1D0-2D0*RM1-2D0*RM2+
18556      &    (RM2-RM1)**2)
18557           WT=CFLAT+CCOS2*CTHE(1)**2
18558           WTMAX=CFLAT+MAX(0D0,CCOS2)
18559         ELSEIF(IP.EQ.1.AND.KFL2(1).EQ.25) THEN
18560 C...Angular weight for f + fbar -> W'+/- -> W+/- + h0.
18561           RM1=P(NSD(1)+1,5)**2/SH
18562           RM2=P(NSD(1)+2,5)**2/SH
18563           FLAM2=MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)
18564           WT=1D0+FLAM2*(1D0-CTHE(1)**2)/(8D0*RM1)
18565           WTMAX=1D0+FLAM2/(8D0*RM1)
18566         ELSEIF(MZPWP.EQ.0) THEN
18567 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
18568 C...(W/Z like if intermediate W).
18569           D34=P(IREF(IP,IORD),5)**2
18570           D56=P(IREF(IP,3-IORD),5)**2
18571           DT=PKK(1,3)+PKK(1,4)+D34
18572           DU=PKK(1,5)+PKK(1,6)+D56
18573           FGK135=ABS(FGK(1,2,3,4,5,6)-FGK(1,2,5,6,3,4))
18574           FGK136=ABS(FGK(1,2,3,4,6,5)-FGK(1,2,6,5,3,4))
18575           WT=(COUP(5,3)*FGK135)**2+(COUP(5,4)*FGK136)**2
18576           WTMAX=4D0*D34*D56*(COUP(5,3)**2+COUP(5,4)**2)*
18577      &    (DIGK(DT,DU)+DIGK(DU,DT)-DJGK(DT,DU))
18578         ELSEIF(MZPWP.EQ.1) THEN
18579 C...Angular weight for f + fbar' -> W' -> W + Z0 -> 4 quarks/leptons
18580 C...(W/Z approximately longitudinal, like if intermediate H).
18581           WT=16D0*PKK(3,5)*PKK(4,6)
18582           WTMAX=SH**2
18583         ELSE
18584 C...Angular weight for f + fbar -> W' -> W + h0 -> whatever,
18585 C...t + bbar -> t + W + bbar.
18586           WT=1D0
18587           WTMAX=1D0
18588         ENDIF
18589  
18590       ELSEIF(ISUB.EQ.145.OR.ISUB.EQ.162.OR.ISUB.EQ.163.OR.ISUB.EQ.164)
18591      &  THEN
18592 C...Isotropic decay of leptoquarks (assumed spin 0).
18593         WT=1D0
18594         WTMAX=1D0
18595  
18596       ELSEIF(ISUB.GE.146.AND.ISUB.LE.148) THEN
18597 C...Decays of (spin 1/2) q*/e* -> q/e + (g,gamma) or (Z0,W+-).
18598         SIDE=1D0
18599         IF(MINT(16).EQ.21.OR.MINT(16).EQ.22) SIDE=-1D0
18600         IF(IP.EQ.1.AND.(KFL1(1).EQ.21.OR.KFL1(1).EQ.22)) THEN
18601           WT=1D0+SIDE*CTHE(1)
18602           WTMAX=2D0
18603         ELSEIF(IP.EQ.1) THEN
18604  
18605           RM1=P(NSD(1)+1,5)**2/SH
18606           WT=1D0+SIDE*CTHE(1)*(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
18607           WTMAX=1D0+(1D0-0.5D0*RM1)/(1D0+0.5D0*RM1)
18608         ELSE
18609 C...W/Z decay assumed isotropic, since not known.
18610           WT=1D0
18611           WTMAX=1D0
18612         ENDIF
18613  
18614       ELSEIF(ISUB.EQ.149) THEN
18615 C...Isotropic decay of techni-eta.
18616         WT=1D0
18617         WTMAX=1D0
18618  
18619       ELSEIF(ISUB.EQ.191) THEN
18620         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18621 C...Angular weight for f + fbar -> rho_tc0 -> W+ W-,
18622 C...W+ pi_tc-, pi_tc+ W- or pi_tc+ pi_tc-.
18623           WT=1D0-CTHE(1)**2
18624           WTMAX=1D0
18625         ELSEIF(IP.EQ.1) THEN
18626 C...Angular weight for f + fbar -> rho_tc0 -> f fbar.
18627           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18628           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
18629           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
18630           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
18631           KFAI=IABS(MINT(15))
18632           EI=KCHG(KFAI,1)/3D0
18633           AI=SIGN(1D0,EI+0.1D0)
18634           VI=AI-4D0*EI*XWV
18635           VALI=0.5D0*(VI+AI)
18636           VARI=0.5D0*(VI-AI)
18637           ALEFTI=(EI+VALI*BWZR)**2+(VALI*BWZI)**2
18638           ARIGHI=(EI+VARI*BWZR)**2+(VARI*BWZI)**2
18639           KFAF=IABS(KFL1(1))
18640           EF=KCHG(KFAF,1)/3D0
18641           AF=SIGN(1D0,EF+0.1D0)
18642           VF=AF-4D0*EF*XWV
18643           VALF=0.5D0*(VF+AF)
18644           VARF=0.5D0*(VF-AF)
18645           ALEFTF=(EF+VALF*BWZR)**2+(VALF*BWZI)**2
18646           ARIGHF=(EF+VARF*BWZR)**2+(VARF*BWZI)**2
18647           ASAME=ALEFTI*ALEFTF+ARIGHI*ARIGHF
18648           AFLIP=ALEFTI*ARIGHF+ARIGHI*ALEFTF
18649           WT=ASAME*(1D0+CTHESG)**2+AFLIP*(1D0-CTHESG)**2
18650           WTMAX=4D0*MAX(ASAME,AFLIP)
18651         ELSE
18652 C...Isotropic decay of W/pi_tc produced in rho_tc decay.
18653           WT=1D0
18654           WTMAX=1D0
18655         ENDIF
18656  
18657       ELSEIF(ISUB.EQ.192) THEN
18658         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18659 C...Angular weight for f + fbar' -> rho_tc+ -> W+ Z0,
18660 C...W+ pi_tc0, pi_tc+ Z0 or pi_tc+ pi_tc0.
18661           WT=1D0-CTHE(1)**2
18662           WTMAX=1D0
18663         ELSEIF(IP.EQ.1) THEN
18664 C...Angular weight for f + fbar' -> rho_tc+ -> f fbar'.
18665           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18666           WT=(1D0+CTHESG)**2
18667           WTMAX=4D0
18668         ELSE
18669 C...Isotropic decay of W/Z/pi_tc produced in rho_tc+ decay.
18670           WT=1D0
18671           WTMAX=1D0
18672         ENDIF
18673  
18674       ELSEIF(ISUB.EQ.193) THEN
18675         IF(IP.EQ.1.AND.IABS(KFL1(1)).GT.21) THEN
18676 C...Angular weight for f + fbar -> omega_tc0 ->
18677 C...gamma pi_tc0 or Z0 pi_tc0.
18678           WT=1D0+CTHE(1)**2
18679           WTMAX=2D0
18680         ELSEIF(IP.EQ.1) THEN
18681 C...Angular weight for f + fbar -> omega_tc0 -> f fbar.
18682           CTHESG=CTHE(1)*ISIGN(1,MINT(15))
18683           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
18684           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
18685           KFAI=IABS(MINT(15))
18686           EI=KCHG(KFAI,1)/3D0
18687           AI=SIGN(1D0,EI+0.1D0)
18688           VI=AI-4D0*EI*XWV
18689           VALI=0.5D0*(VI+AI)
18690           VARI=0.5D0*(VI-AI)
18691           BLEFTI=(EI-VALI*BWZR)**2+(VALI*BWZI)**2
18692           BRIGHI=(EI-VARI*BWZR)**2+(VARI*BWZI)**2
18693           KFAF=IABS(KFL1(1))
18694           EF=KCHG(KFAF,1)/3D0
18695           AF=SIGN(1D0,EF+0.1D0)
18696           VF=AF-4D0*EF*XWV
18697           VALF=0.5D0*(VF+AF)
18698           VARF=0.5D0*(VF-AF)
18699           BLEFTF=(EF-VALF*BWZR)**2+(VALF*BWZI)**2
18700           BRIGHF=(EF-VARF*BWZR)**2+(VARF*BWZI)**2
18701           BSAME=BLEFTI*BLEFTF+BRIGHI*BRIGHF
18702           BFLIP=BLEFTI*BRIGHF+BRIGHI*BLEFTF
18703           WT=BSAME*(1D0+CTHESG)**2+BFLIP*(1D0-CTHESG)**2
18704           WTMAX=4D0*MAX(BSAME,BFLIP)
18705         ELSE
18706 C...Isotropic decay of Z/pi_tc produced in omega_tc decay.
18707           WT=1D0
18708           WTMAX=1D0
18709         ENDIF
18710  
18711       ELSEIF(ISUB.EQ.353) THEN
18712 C...Angular weight for Z_R0 -> 2 quarks/leptons.
18713         EI=KCHG(IABS(MINT(15)),1)/3D0
18714         AI=SIGN(1D0,EI+0.1D0)
18715         VI=AI-4D0*EI*XWV
18716         EF=KCHG(PYCOMP(KFL1(1)),1)/3D0
18717         AF=SIGN(1D0,EF+0.1D0)
18718         VF=AF-4D0*EF*XWV
18719         RMF=MIN(1D0,4D0*PMAS(PYCOMP(KFL1(1)),1)**2/SH)
18720         WT1=(VI**2+AI**2)*(VF**2+(1D0-RMF)*AF**2)
18721         WT2=RMF*(VI**2+AI**2)*VF**2
18722         WT3=SQRT(1D0-RMF)*4D0*VI*AI*VF*AF
18723         WT=WT1*(1D0+CTHE(1)**2)+WT2*(1D0-CTHE(1)**2)+
18724      &  2D0*WT3*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1))
18725         WTMAX=2D0*(WT1+ABS(WT3))
18726  
18727       ELSEIF(ISUB.EQ.354) THEN
18728 C...Angular weight for W_R+/- -> 2 quarks/leptons.
18729         RM3=PMAS(PYCOMP(KFL1(1)),1)**2/SH
18730         RM4=PMAS(PYCOMP(KFL2(1)),1)**2/SH
18731         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
18732         WT=(1D0+BE34*CTHE(1)*ISIGN(1,MINT(15)*KFL1(1)))**2-(RM3-RM4)**2
18733         WTMAX=4D0
18734  
18735       ELSEIF(ISUB.EQ.391) THEN
18736 C...Angular weight for f + fbar -> G* -> f + fbar
18737         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
18738           WT=1D0-3D0*CTHE(1)**2+4D0*CTHE(1)**4
18739           WTMAX=2D0
18740 C...Angular weight for f + fbar -> G* -> gamma + gamma or g + g
18741 C...implemented by M.-C. Lemaire
18742         ELSEIF(IP.EQ.1.AND.(IABS(KFL1(1)).EQ.21.OR.
18743      &  IABS(KFL1(1)).EQ.22)) THEN
18744           WT=1D0-CTHE(1)**4
18745           WTMAX=1D0
18746 C...Other G* decays not yet implemented angular distributions.
18747         ELSE
18748           WT=1D0
18749           WTMAX=1D0
18750         ENDIF
18751  
18752       ELSEIF(ISUB.EQ.392) THEN
18753 C...Angular weight for g + g -> G* -> f + fbar
18754         IF(IP.EQ.1.AND.IABS(KFL1(1)).LE.18) THEN
18755           WT=1D0-CTHE(1)**4
18756           WTMAX=1D0
18757 C...Angular weight for g + g -> G* -> gamma +gamma or g + g
18758 C...implemented by M.-C. Lemaire
18759         ELSEIF(IP.EQ.1.AND.(IABS(KFL1(1)).EQ.21.OR.
18760      &  IABS(KFL1(1)).EQ.22)) THEN
18761          WT=1D0+6D0*CTHE(1)**2+CTHE(1)**4
18762           WTMAX=8D0
18763 C...Other G* decays not yet implemented angular distributions.
18764         ELSE
18765           WT=1D0
18766           WTMAX=1D0
18767         ENDIF
18768  
18769 C...Obtain correct angular distribution by rejection techniques.
18770       ELSE
18771         WT=1D0
18772         WTMAX=1D0
18773       ENDIF
18774       IF(WT.LT.PYR(0)*WTMAX) GOTO 430
18775  
18776 C...Construct massive four-vectors using angles chosen.
18777   590 DO 690 JT=1,JTMAX
18778         IF(KDCY(JT).EQ.0) GOTO 690
18779         ID=IREF(IP,JT)
18780         DO 600 J=1,5
18781           DPMO(J)=P(ID,J)
18782   600   CONTINUE
18783         DPMO(4)=SQRT(DPMO(1)**2+DPMO(2)**2+DPMO(3)**2+DPMO(5)**2)
18784 CMRENNA++
18785         IF(KFL3(JT).EQ.0) THEN
18786           CALL PYROBO(NSD(JT)+1,NSD(JT)+2,ACOS(CTHE(JT)),PHI(JT),
18787      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
18788           N0=NSD(JT)+2
18789         ELSE
18790           CALL PYROBO(NSD(JT)+1,NSD(JT)+3,ACOS(CTHE(JT)),PHI(JT),
18791      &    DPMO(1)/DPMO(4),DPMO(2)/DPMO(4),DPMO(3)/DPMO(4))
18792           N0=NSD(JT)+3
18793         ENDIF
18794  
18795         DO 610 J=1,4
18796           VDCY(J)=V(ID,J)+V(ID,5)*P(ID,J)/P(ID,5)
18797   610   CONTINUE
18798 C...Fill in position of decay vertex.
18799         DO 630 I=NSD(JT)+1,N0
18800           DO 620 J=1,4
18801             V(I,J)=VDCY(J)
18802   620     CONTINUE
18803           V(I,5)=0D0
18804  
18805   630   CONTINUE
18806 CMRENNA--
18807  
18808 C...Mark decayed resonances; trace history.
18809         K(ID,1)=K(ID,1)+10
18810         KFA=IABS(K(ID,2))
18811         KCA=PYCOMP(KFA)
18812         IF(KCQM(JT).NE.0) THEN
18813 C...Do not kill colour flow through coloured resonance!
18814         ELSE
18815           K(ID,4)=NSD(JT)+1
18816           K(ID,5)=NSD(JT)+2
18817 C...If 3-body or 2-body with junction:
18818           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).NE.0) K(ID,5)=NSD(JT)+3
18819 C...If 3-body with junction:
18820           IF(ITJUNC(JT).NE.0.AND.KFL3(JT).NE.0) K(ID,5)=NSD(JT)+4
18821         ENDIF
18822  
18823 C...Add documentation lines.
18824         ISUBRG=MAX(1,MIN(500,MINT(1)))
18825         IF(IRES.EQ.0.OR.ISET(ISUBRG).EQ.11) THEN
18826           IDOC=MINT(83)+MINT(4)
18827 CMRENNA+++
18828           IHI=NSD(JT)+2
18829           IF(KFL3(JT).NE.0) IHI=IHI+1
18830           DO 650 I=NSD(JT)+1,IHI
18831 CMRENNA---
18832             I1=MINT(83)+MINT(4)+1
18833             K(I,3)=I1
18834             IF(MSTP(128).GE.1) K(I,3)=ID
18835             IF(MSTP(128).LE.1.AND.MINT(4).LT.MSTP(126)) THEN
18836               MINT(4)=MINT(4)+1
18837               K(I1,1)=21
18838               K(I1,2)=K(I,2)
18839               K(I1,3)=IREF(IP,JT+3)
18840               DO 640 J=1,5
18841                 P(I1,J)=P(I,J)
18842   640         CONTINUE
18843             ENDIF
18844   650     CONTINUE
18845         ELSE
18846           K(NSD(JT)+1,3)=ID
18847           K(NSD(JT)+2,3)=ID
18848 C...If 3-body or 2-body with junction:
18849           IF(KFL3(JT).NE.0.OR.ITJUNC(JT).GT.0) K(NSD(JT)+3,3)=ID
18850 C...If 3-body with junction:
18851           IF(KFL3(JT).NE.0.AND.ITJUNC(JT).GT.0) K(NSD(JT)+4,3)=ID
18852         ENDIF
18853  
18854 C...Do showering of two or three objects.
18855         NSHBEF=N
18856         IF(MSTP(71).GE.1.AND.MINT(35).LE.1) THEN
18857           IF(KFL3(JT).EQ.0) THEN
18858             CALL PYSHOW(NSD(JT)+1,NSD(JT)+2,P(ID,5))
18859           ELSE
18860             CALL PYSHOW(NSD(JT)+1,-3,P(ID,5))
18861           ENDIF
18862  
18863 c...For pT-ordered shower need set up first, especially colour tags.
18864 C...(Need to set up colour tags even if MSTP(71) = 0)
18865         ELSEIF(MINT(35).GE.2) THEN
18866           NPART=2
18867           IF(KFL3(JT).NE.0) NPART=3
18868           IPART(1)=NSD(JT)+1
18869           IPART(2)=NSD(JT)+2
18870           IPART(3)=NSD(JT)+3
18871           PTPART(1)=0.5D0*P(ID,5)
18872           PTPART(2)=PTPART(1)
18873           PTPART(3)=PTPART(1)
18874           IF(KCQ1(JT).EQ.1.OR.KCQ1(JT).EQ.2) THEN
18875             MOTHER=K(NSD(JT)+1,4)/MSTU(5)
18876             IF(MOTHER.LE.NSD(JT)) THEN
18877               MCT(NSD(JT)+1,1)=MCT(MOTHER,1)
18878             ELSE
18879               NCT=NCT+1
18880               MCT(NSD(JT)+1,1)=NCT
18881               MCT(MOTHER,2)=NCT
18882             ENDIF
18883           ENDIF
18884           IF(KCQ1(JT).EQ.-1.OR.KCQ1(JT).EQ.2) THEN
18885             MOTHER=K(NSD(JT)+1,5)/MSTU(5)
18886             IF(MOTHER.LE.NSD(JT)) THEN
18887               MCT(NSD(JT)+1,2)=MCT(MOTHER,2)
18888             ELSE
18889               NCT=NCT+1
18890               MCT(NSD(JT)+1,2)=NCT
18891               MCT(MOTHER,1)=NCT
18892             ENDIF
18893           ENDIF
18894           IF(MCT(NSD(JT)+2,1).EQ.0.AND.(KCQ2(JT).EQ.1.OR.
18895      &    KCQ2(JT).EQ.2)) THEN
18896             MOTHER=K(NSD(JT)+2,4)/MSTU(5)
18897             IF(MOTHER.LE.NSD(JT)) THEN
18898               MCT(NSD(JT)+2,1)=MCT(MOTHER,1)
18899             ELSE
18900               NCT=NCT+1
18901               MCT(NSD(JT)+2,1)=NCT
18902               MCT(MOTHER,2)=NCT
18903             ENDIF
18904           ENDIF
18905           IF(MCT(NSD(JT)+2,2).EQ.0.AND.(KCQ2(JT).EQ.-1.OR.
18906      &    KCQ2(JT).EQ.2)) THEN
18907             MOTHER=K(NSD(JT)+2,5)/MSTU(5)
18908             IF(MOTHER.LE.NSD(JT)) THEN
18909               MCT(NSD(JT)+2,2)=MCT(MOTHER,2)
18910             ELSE
18911               NCT=NCT+1
18912               MCT(NSD(JT)+2,2)=NCT
18913               MCT(MOTHER,1)=NCT
18914             ENDIF
18915           ENDIF
18916           IF(NPART.EQ.3.AND.MCT(NSD(JT)+3,1).EQ.0.AND.
18917      &    (KCQ3(JT).EQ.1.OR. KCQ3(JT).EQ.2)) THEN
18918             MOTHER=K(NSD(JT)+3,4)/MSTU(5)
18919             MCT(NSD(JT)+3,1)=MCT(MOTHER,1)
18920           ENDIF
18921           IF(NPART.EQ.3.AND.MCT(NSD(JT)+3,2).EQ.0.AND.
18922      &    (KCQ3(JT).EQ.-1.OR.KCQ3(JT).EQ.2)) THEN
18923             MOTHER=K(NSD(JT)+3,5)/MSTU(5)
18924             MCT(NSD(JT)+2,2)=MCT(MOTHER,2)
18925           ENDIF
18926           IF (MSTP(71).GE.1) CALL PYPTFS(2,0.5D0*P(ID,5),0D0,PTGEN)
18927         ENDIF
18928         NSHAFT=N
18929         IF(JT.EQ.1) NAFT1=N
18930  
18931 C...Check if decay products moved by shower.
18932         NSD1=NSD(JT)+1
18933         NSD2=NSD(JT)+2
18934         NSD3=NSD(JT)+3
18935         IF(NSHAFT.GT.NSHBEF) THEN
18936           IF(K(NSD1,1).GT.10) THEN
18937             DO 660 I=NSHBEF+1,NSHAFT
18938               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD1,2)) NSD1=I
18939   660       CONTINUE
18940           ENDIF
18941           IF(K(NSD2,1).GT.10) THEN
18942             DO 670 I=NSHBEF+1,NSHAFT
18943               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD2,2).AND.
18944      &        I.NE.NSD1) NSD2=I
18945   670       CONTINUE
18946           ENDIF
18947           IF(KFL3(JT).NE.0.AND.K(NSD3,1).GT.10) THEN
18948             DO 680 I=NSHBEF+1,NSHAFT
18949               IF(K(I,1).LT.10.AND.K(I,2).EQ.K(NSD3,2).AND.
18950      &        I.NE.NSD1.AND.I.NE.NSD2) NSD3=I
18951   680       CONTINUE
18952           ENDIF
18953         ENDIF
18954  
18955 C...Store decay products for further treatment.
18956         NP=NP+1
18957         IREF(NP,1)=NSD1
18958         IREF(NP,2)=NSD2
18959         IREF(NP,3)=0
18960         IF(KFL3(JT).NE.0) IREF(NP,3)=NSD3
18961         IREF(NP,4)=IDOC+1
18962         IREF(NP,5)=IDOC+2
18963         IREF(NP,6)=0
18964         IF(KFL3(JT).NE.0) IREF(NP,6)=IDOC+3
18965         IREF(NP,7)=K(IREF(IP,JT),2)
18966         IREF(NP,8)=IREF(IP,JT)
18967   690 CONTINUE
18968  
18969  
18970 C...Fill information for 2 -> 1 -> 2.
18971   700 IF(JTMAX.EQ.1.AND.KDCY(1).NE.0.AND.ISUB.NE.0) THEN
18972         MINT(7)=MINT(83)+6+2*ISET(ISUB)
18973         MINT(8)=MINT(83)+7+2*ISET(ISUB)
18974         MINT(25)=KFL1(1)
18975         MINT(26)=KFL2(1)
18976         VINT(23)=CTHE(1)
18977         RM3=P(N-1,5)**2/SH
18978         RM4=P(N,5)**2/SH
18979         BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
18980         VINT(45)=-0.5D0*SH*(1D0-RM3-RM4-BE34*CTHE(1))
18981         VINT(46)=-0.5D0*SH*(1D0-RM3-RM4+BE34*CTHE(1))
18982         VINT(48)=0.25D0*SH*BE34**2*MAX(0D0,1D0-CTHE(1)**2)
18983         VINT(47)=SQRT(VINT(48))
18984       ENDIF
18985  
18986 C...Possibility of colour rearrangement in W+W- events.
18987       IF((ISUB.EQ.25.OR.ISUB.EQ.22).AND.MSTP(115).GE.1) THEN
18988         IAKF1=IABS(KFL1(1))
18989         IAKF2=IABS(KFL1(2))
18990         IAKF3=IABS(KFL2(1))
18991         IAKF4=IABS(KFL2(2))
18992         IF(MIN(IAKF1,IAKF2,IAKF3,IAKF4).GE.1.AND.
18993      &  MAX(IAKF1,IAKF2,IAKF3,IAKF4).LE.5) CALL
18994      &  PYRECO(IREF(1,1),IREF(1,2),NSD(1),NAFT1)
18995         IF(MINT(51).NE.0) RETURN
18996       ENDIF
18997  
18998 C...Loop back if needed.
18999   710 IF(IP.LT.NP) GOTO 170
19000  
19001 C...Boost back to standard frame.
19002   720 IF(IBST.EQ.1) CALL PYROBO(MINT(83)+7,N,THEIN,PHIIN,BEXIN,BEYIN,
19003      &BEZIN)
19004  
19005       RETURN
19006       END
19007  
19008 C*********************************************************************
19009  
19010 C...PYMULT
19011 C...Initializes treatment of multiple interactions, selects kinematics
19012 C...of hardest interaction if low-pT physics included in run, and
19013 C...generates all non-hardest interactions.
19014  
19015       SUBROUTINE PYMULT(MMUL)
19016  
19017 C...Double precision and integer declarations.
19018       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19019       IMPLICIT INTEGER(I-N)
19020       INTEGER PYK,PYCHGE,PYCOMP
19021 C...Commonblocks.
19022       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19023       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19024       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19025       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
19026       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19027       COMMON/PYINT1/MINT(400),VINT(400)
19028       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
19029       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
19030       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
19031       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
19032       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,
19033      &/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/
19034 C...Local arrays and saved variables.
19035       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80)
19036       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM,P83A,P83B,P83C,
19037      &CQ2I,CQ2R,PIK,BDIV,B,PLOWB,PHIGHB,PALLB,S4A,S4B,S4C,POWIP,
19038      &RPWIP,B2RPDV,B2RPMX,BAVG,VNT145,VNT146,VNT147
19039  
19040 C...Initialization of multiple interaction treatment.
19041       IF(MMUL.EQ.1) THEN
19042         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
19043         ISUB=96
19044         MINT(1)=96
19045         VINT(63)=0D0
19046         VINT(64)=0D0
19047         VINT(143)=1D0
19048         VINT(144)=1D0
19049  
19050 C...Loop over phase space points: xT2 choice in 20 bins.
19051   100   SIGSUM=0D0
19052         DO 120 IXT2=1,20
19053           NMUL(IXT2)=MSTP(83)
19054           SIGM(IXT2)=0D0
19055           DO 110 ITRY=1,MSTP(83)
19056             RSCA=0.05D0*((21-IXT2)-PYR(0))
19057             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
19058             XT2=MAX(0.01D0*VINT(149),XT2)
19059             VINT(25)=XT2
19060  
19061 C...Choose tau and y*. Calculate cos(theta-hat).
19062             IF(PYR(0).LE.COEF(ISUB,1)) THEN
19063               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
19064               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
19065             ELSE
19066               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
19067             ENDIF
19068             VINT(21)=TAU
19069             CALL PYKLIM(2)
19070             RYST=PYR(0)
19071             MYST=1
19072             IF(RYST.GT.COEF(ISUB,8)) MYST=2
19073             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
19074             CALL PYKMAP(2,MYST,PYR(0))
19075             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
19076  
19077 C...Calculate differential cross-section.
19078             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
19079             CALL PYSIGH(NCHN,SIGS)
19080             SIGM(IXT2)=SIGM(IXT2)+SIGS
19081   110     CONTINUE
19082           SIGSUM=SIGSUM+SIGM(IXT2)
19083   120   CONTINUE
19084         SIGSUM=SIGSUM/(20D0*MSTP(83))
19085  
19086 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
19087         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
19088           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
19089      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
19090           PARP(82)=0.9D0*PARP(82)
19091           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
19092      &    VINT(2)
19093           GOTO 100
19094         ENDIF
19095         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
19096      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
19097  
19098 C...Start iteration to find k factor.
19099         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
19100         P83A=(1D0-PARP(83))**2
19101         P83B=2D0*PARP(83)*(1D0-PARP(83))
19102         P83C=PARP(83)**2
19103         CQ2I=1D0/PARP(84)**2
19104         CQ2R=2D0/(1D0+PARP(84)**2)
19105         SO=0.5D0
19106         XI=0D0
19107         YI=0D0
19108         XF=0D0
19109         YF=0D0
19110         XK=0.5D0
19111         IIT=0
19112   130   IF(IIT.EQ.0) THEN
19113           XK=2D0*XK
19114         ELSEIF(IIT.EQ.1) THEN
19115           XK=0.5D0*XK
19116         ELSE
19117           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
19118         ENDIF
19119  
19120 C...Evaluate overlap integrals. Find where to divide the b range.
19121         IF(MSTP(82).EQ.2) THEN
19122           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
19123           SOP=SP/PARU(1)
19124         ELSE
19125           IF(MSTP(82).EQ.3) THEN
19126             DELTAB=0.02D0
19127           ELSEIF(MSTP(82).EQ.4) THEN
19128             DELTAB=MIN(0.01D0,0.05D0*PARP(84))
19129           ELSE
19130             POWIP=MAX(0.4D0,PARP(83))
19131             RPWIP=2D0/POWIP-1D0
19132             DELTAB=MAX(0.02D0,0.02D0*(2D0/POWIP)**(1D0/POWIP))
19133             SO=0D0
19134           ENDIF
19135           SP=0D0
19136           SOP=0D0
19137           BSP=0D0
19138           SOHIGH=0D0
19139           IBDIV=0
19140           B=-0.5D0*DELTAB
19141   140     B=B+DELTAB
19142           IF(MSTP(82).EQ.3) THEN
19143             OV=EXP(-B**2)/PARU(2)
19144           ELSEIF(MSTP(82).EQ.4) THEN
19145             OV=(P83A*EXP(-MIN(50D0,B**2))+
19146      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
19147      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
19148           ELSE
19149             OV=EXP(-B**POWIP)/PARU(2)
19150             SO=SO+PARU(2)*B*DELTAB*OV
19151           ENDIF
19152           IF(IBDIV.EQ.1) SOHIGH=SOHIGH+PARU(2)*B*DELTAB*OV
19153           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
19154           SP=SP+PARU(2)*B*DELTAB*PACC
19155           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
19156           BSP=BSP+B*PARU(2)*B*DELTAB*PACC
19157           IF(IBDIV.EQ.0.AND.PARU(1)*XK*OV.LT.1D0) THEN
19158             IBDIV=1 
19159             BDIV=B+0.5D0*DELTAB
19160           ENDIF
19161           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
19162         ENDIF
19163         YK=PARU(1)*XK*SO/SP
19164  
19165 C...Continue iteration until convergence.
19166         IF(YK.LT.YKE) THEN
19167           XI=XK
19168           YI=YK
19169           IF(IIT.EQ.1) IIT=2
19170         ELSE
19171           XF=XK
19172           YF=YK
19173           IF(IIT.EQ.0) IIT=1
19174         ENDIF
19175         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
19176  
19177 C...Store some results for subsequent use.
19178         BAVG=BSP/SP
19179         VINT(145)=SIGSUM
19180         VINT(146)=SOP/SO
19181         VINT(147)=SOP/SP
19182         VNT145=VINT(145)
19183         VNT146=VINT(146)
19184         VNT147=VINT(147)
19185 C...PIK = PARU(1)*XK = (VINT(146)/VINT(147))*sigma_jet/sigma_nondiffr.
19186         PIK=(VNT146/VNT147)*YKE
19187 
19188 C...Find relative weight for low and high impact parameter.
19189       PLOWB=PARU(1)*BDIV**2
19190       IF(MSTP(82).EQ.3) THEN
19191         PHIGHB=PIK*0.5*EXP(-BDIV**2)
19192       ELSEIF(MSTP(82).EQ.4) THEN
19193         S4A=P83A*EXP(-BDIV**2)
19194         S4B=P83B*EXP(-BDIV**2*CQ2R)
19195         S4C=P83C*EXP(-BDIV**2*CQ2I)
19196         PHIGHB=PIK*0.5*(S4A+S4B+S4C)
19197       ELSEIF(PARP(83).GE.1.999D0) THEN
19198         PHIGHB=PIK*SOHIGH
19199         B2RPDV=BDIV**POWIP
19200       ELSE
19201         PHIGHB=PIK*SOHIGH
19202         B2RPDV=BDIV**POWIP
19203         B2RPMX=MAX(2D0*RPWIP,B2RPDV)
19204       ENDIF 
19205       PALLB=PLOWB+PHIGHB
19206  
19207 C...Initialize iteration in xT2 for hardest interaction.
19208       ELSEIF(MMUL.EQ.2) THEN
19209         VINT(145)=VNT145
19210         VINT(146)=VNT146
19211         VINT(147)=VNT147
19212         IF(MSTP(82).LE.0) THEN
19213         ELSEIF(MSTP(82).EQ.1) THEN
19214           XT2=1D0
19215           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
19216           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
19217      &    VINT(317)/(VINT(318)*VINT(320))
19218           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
19219         ELSEIF(MSTP(82).EQ.2) THEN
19220           XT2=1D0
19221           XT2FAC=VNT146*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
19222      &    VINT(149)*(1D0+VINT(149))
19223         ELSE
19224           XC2=4D0*CKIN(3)**2/VINT(2)
19225           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
19226         ENDIF
19227 
19228 C...Select impact parameter for hardest interaction.
19229         IF(MSTP(82).LE.2) RETURN
19230   142   IF(PYR(0)*PALLB.LT.PLOWB) THEN
19231 C...Treatment in low b region.
19232           MINT(39)=1
19233           B=BDIV*SQRT(PYR(0)) 
19234           IF(MSTP(82).EQ.3) THEN
19235             OV=EXP(-B**2)/PARU(2)
19236           ELSEIF(MSTP(82).EQ.4) THEN
19237             OV=(P83A*EXP(-MIN(50D0,B**2))+
19238      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
19239      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
19240           ELSE
19241             OV=EXP(-B**POWIP)/PARU(2)
19242           ENDIF  
19243           VINT(148)=OV/VNT147
19244           PACC=1D0-EXP(-MIN(50D0,PIK*OV))
19245           XT2=1D0
19246           XT2FAC=VNT146*VINT(148)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
19247      &    VINT(149)*(1D0+VINT(149))
19248         ELSE
19249 C...Treatment in high b region.
19250           MINT(39)=2
19251           IF(MSTP(82).EQ.3) THEN
19252             B=SQRT(BDIV**2-LOG(PYR(0)))
19253             OV=EXP(-B**2)/PARU(2)
19254           ELSEIF(MSTP(82).EQ.4) THEN
19255             S4RNDM=PYR(0)*(S4A+S4B+S4C)
19256             IF(S4RNDM.LT.S4A) THEN
19257               B=SQRT(BDIV**2-LOG(PYR(0)))
19258             ELSEIF(S4RNDM.LT.S4A+S4B) THEN
19259               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2R)
19260             ELSE
19261               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2I)
19262             ENDIF    
19263             OV=(P83A*EXP(-MIN(50D0,B**2))+
19264      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
19265      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
19266           ELSEIF(PARP(83).GE.1.999D0) THEN
19267   144       B2RPW=B2RPDV-LOG(PYR(0))
19268             ACCIP=(B2RPW/B2RPDV)**RPWIP
19269             IF(ACCIP.LT.PYR(0)) GOTO 144
19270             OV=EXP(-B2RPW)/PARU(2)
19271             B=B2RPW**(1D0/POWIP)
19272           ELSE
19273   146       B2RPW=B2RPDV-2D0*LOG(PYR(0))
19274             ACCIP=(B2RPW/B2RPMX)**RPWIP*EXP(-0.5D0*(B2RPW-B2RPMX))
19275             IF(ACCIP.LT.PYR(0)) GOTO 146
19276             OV=EXP(-B2RPW)/PARU(2)
19277             B=B2RPW**(1D0/POWIP)
19278           ENDIF  
19279           VINT(148)=OV/VNT147
19280           PACC=(1D0-EXP(-MIN(50D0,PIK*OV)))/(PIK*OV)
19281         ENDIF
19282         IF(PACC.LT.PYR(0)) GOTO 142
19283         VINT(139)=B/BAVG
19284  
19285       ELSEIF(MMUL.EQ.3) THEN
19286 C...Low-pT or multiple interactions (first semihard interaction):
19287 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
19288 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
19289         ISUB=MINT(1)
19290         VINT(145)=VNT145
19291         VINT(146)=VNT146
19292         VINT(147)=VNT147
19293         IF(MSTP(82).LE.0) THEN
19294           XT2=0D0
19295         ELSEIF(MSTP(82).EQ.1) THEN
19296           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
19297 C...Use with "Sudakov" for low b values when impact parameter dependence.
19298         ELSEIF(MSTP(82).EQ.2.OR.MINT(39).EQ.1) THEN
19299           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
19300      &    VINT(149)))).GT.PYR(0)) XT2=1D0
19301           IF(XT2.GE.1D0) THEN
19302             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
19303      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
19304      &      VINT(149)
19305           ELSE
19306             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
19307      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
19308      &      VINT(149)
19309           ENDIF
19310           XT2=MAX(0.01D0*VINT(149),XT2)
19311 C...Use without "Sudakov" for high b values when impact parameter dep.
19312         ELSE
19313           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
19314      &    PYR(0)*(1D0-XC2))-VINT(149)
19315           XT2=MAX(0.01D0*VINT(149),XT2)
19316         ENDIF
19317         VINT(25)=XT2
19318  
19319 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
19320         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
19321           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
19322           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
19323           ISUB=95
19324           MINT(1)=ISUB
19325           VINT(21)=0.01D0*VINT(149)
19326           VINT(22)=0D0
19327           VINT(23)=0D0
19328           VINT(25)=0.01D0*VINT(149)
19329  
19330         ELSE
19331 C...Multiple interactions (first semihard interaction).
19332 C...Choose tau and y*. Calculate cos(theta-hat).
19333           IF(PYR(0).LE.COEF(ISUB,1)) THEN
19334             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
19335             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
19336           ELSE
19337             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
19338           ENDIF
19339           VINT(21)=TAU
19340           CALL PYKLIM(2)
19341           RYST=PYR(0)
19342           MYST=1
19343           IF(RYST.GT.COEF(ISUB,8)) MYST=2
19344           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
19345           CALL PYKMAP(2,MYST,PYR(0))
19346           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
19347         ENDIF
19348         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
19349  
19350 C...Store results of cross-section calculation.
19351       ELSEIF(MMUL.EQ.4) THEN
19352         ISUB=MINT(1)
19353         VINT(145)=VNT145
19354         VINT(146)=VNT146
19355         VINT(147)=VNT147
19356         XTS=VINT(25)
19357         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
19358         IF(ISET(ISUB).EQ.2)
19359      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
19360         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
19361         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
19362      &  (XTS+VINT(149))))
19363         IRBIN=INT(1D0+20D0*RBIN)
19364         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
19365           NMUL(IRBIN)=NMUL(IRBIN)+1
19366           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
19367         ENDIF
19368  
19369 C...Choose impact parameter if not already done.
19370       ELSEIF(MMUL.EQ.5) THEN
19371         ISUB=MINT(1)
19372         VINT(145)=VNT145
19373         VINT(146)=VNT146
19374         VINT(147)=VNT147
19375   150   IF(MINT(39).GT.0) THEN
19376         ELSEIF(MSTP(82).EQ.3) THEN
19377           EXPB2=PYR(0)
19378           B2=-LOG(PYR(0))
19379           VINT(148)=EXPB2/(PARU(2)*VNT147)
19380           VINT(139)=SQRT(B2)/BAVG
19381         ELSEIF(MSTP(82).EQ.4) THEN
19382           RTYPE=PYR(0)
19383           IF(RTYPE.LT.P83A) THEN
19384             B2=-LOG(PYR(0))
19385           ELSEIF(RTYPE.LT.P83A+P83B) THEN
19386             B2=-LOG(PYR(0))/CQ2R
19387           ELSE
19388             B2=-LOG(PYR(0))/CQ2I
19389           ENDIF
19390           VINT(148)=(P83A*EXP(-MIN(50D0,B2))+
19391      &    P83B*CQ2R*EXP(-MIN(50D0,B2*CQ2R))+
19392      &    P83C*CQ2I*EXP(-MIN(50D0,B2*CQ2I)))/(PARU(2)*VNT147)
19393           VINT(139)=SQRT(B2)/BAVG
19394         ELSEIF(PARP(83).GE.1.999D0) THEN
19395           POWIP=MAX(2D0,PARP(83))
19396           RPWIP=2D0/POWIP-1D0
19397           PROB1=POWIP/(2D0*EXP(-1D0)+POWIP)
19398   160     IF(PYR(0).LT.PROB1) THEN
19399             B2RPW=PYR(0)**(0.5D0*POWIP)
19400             ACCIP=EXP(-B2RPW)
19401           ELSE
19402             B2RPW=1D0-LOG(PYR(0))
19403             ACCIP=B2RPW**RPWIP
19404           ENDIF
19405           IF(ACCIP.LT.PYR(0)) GOTO 160
19406           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
19407           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
19408         ELSE
19409           POWIP=MAX(0.4D0,PARP(83))
19410           RPWIP=2D0/POWIP-1D0
19411           PROB1=RPWIP/(RPWIP+2D0**RPWIP*EXP(-RPWIP))
19412   170     IF(PYR(0).LT.PROB1) THEN
19413             B2RPW=2D0*RPWIP*PYR(0)
19414             ACCIP=(B2RPW/RPWIP)**RPWIP*EXP(RPWIP-B2RPW)
19415           ELSE
19416             B2RPW=2D0*(RPWIP-LOG(PYR(0)))
19417             ACCIP=(0.5D0*B2RPW/RPWIP)**RPWIP*EXP(RPWIP-0.5D0*B2RPW)
19418           ENDIF
19419           IF(ACCIP.LT .PYR(0)) GOTO 170
19420           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
19421           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
19422         ENDIF
19423  
19424 C...Multiple interactions (variable impact parameter) : reject with
19425 C...probability exp(-overlap*cross-section above pT/normalization).
19426 C...Does not apply to low-b region, where "Sudakov" already included.
19427         VINT(150)=1D0 
19428         IF(MINT(39).NE.1) THEN
19429           RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
19430           SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
19431           DO 180 IBIN=IRBIN+1,20
19432             RNCOR=RNCOR+NMUL(IBIN)
19433             SIGCOR=SIGCOR+SIGM(IBIN)
19434   180     CONTINUE
19435           SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
19436           IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
19437           VINT(150)=EXP(-MIN(50D0,VNT146*VINT(148)*
19438      &    SIGABV/MAX(1D-10,SIGT(0,0,5))))
19439         ENDIF
19440         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
19441      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
19442      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
19443           IF(VINT(150).LT.PYR(0)) GOTO 150
19444           VINT(150)=1D0
19445         ENDIF
19446  
19447 C...Generate additional multiple semihard interactions.
19448       ELSEIF(MMUL.EQ.6) THEN
19449         ISUBSV=MINT(1)
19450         VINT(145)=VNT145
19451         VINT(146)=VNT146
19452         VINT(147)=VNT147
19453         DO 190 J=11,80
19454           VINTSV(J)=VINT(J)
19455   190   CONTINUE
19456         ISUB=96
19457         MINT(1)=96
19458         VINT(151)=0D0
19459         VINT(152)=0D0
19460  
19461 C...Reconstruct strings in hard scattering.
19462         NMAX=MINT(84)+4
19463         IF(ISET(ISUBSV).EQ.1) NMAX=MINT(84)+2
19464         IF(ISET(ISUBSV).EQ.11) NMAX=MINT(84)+2+MINT(3)
19465         NSTR=0
19466         DO 210 I=MINT(84)+1,NMAX
19467           KCS=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
19468           IF(KCS.EQ.0) GOTO 210
19469           DO 200 J=1,4
19470             IF(KCS.EQ.1.AND.(J.EQ.2.OR.J.EQ.4)) GOTO 200
19471             IF(KCS.EQ.-1.AND.(J.EQ.1.OR.J.EQ.3)) GOTO 200
19472             IF(J.LE.2) THEN
19473               IST=MOD(K(I,J+3)/MSTU(5),MSTU(5))
19474             ELSE
19475               IST=MOD(K(I,J+1),MSTU(5))
19476             ENDIF
19477             IF(IST.LT.MINT(84).OR.IST.GT.I) GOTO 200
19478             IF(KCHG(PYCOMP(K(IST,2)),2).EQ.0) GOTO 200
19479             NSTR=NSTR+1
19480             IF(J.EQ.1.OR.J.EQ.4) THEN
19481               KSTR(NSTR,1)=I
19482               KSTR(NSTR,2)=IST
19483             ELSE
19484               KSTR(NSTR,1)=IST
19485               KSTR(NSTR,2)=I
19486             ENDIF
19487   200     CONTINUE
19488   210   CONTINUE
19489  
19490 C...Set up starting values for iteration in xT2.
19491         XT2=4D0*VINT(62)/VINT(2)
19492         IF(MSTP(82).LE.1) THEN
19493           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
19494           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
19495      &    VINT(317)/(VINT(318)*VINT(320))
19496           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
19497         ELSE
19498           XT2FAC=VNT146*VINT(148)*XSEC(ISUB,1)/
19499      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
19500         ENDIF
19501         VINT(63)=0D0
19502         VINT(64)=0D0
19503         VINT(143)=1D0-VINT(141)
19504         VINT(144)=1D0-VINT(142)
19505  
19506 C...Iterate downwards in xT2.
19507   220   IF(MSTP(82).LE.1) THEN
19508           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
19509           IF(XT2.LT.VINT(149)) GOTO 270
19510         ELSE
19511           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 270
19512           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
19513      &    LOG(PYR(0)))-VINT(149)
19514           IF(XT2.LE.0D0) GOTO 270
19515           XT2=MAX(0.01D0*VINT(149),XT2)
19516         ENDIF
19517         VINT(25)=XT2
19518  
19519 C...Choose tau and y*. Calculate cos(theta-hat).
19520         IF(PYR(0).LE.COEF(ISUB,1)) THEN
19521           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
19522           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
19523         ELSE
19524           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
19525         ENDIF
19526         VINT(21)=TAU
19527         CALL PYKLIM(2)
19528         RYST=PYR(0)
19529         MYST=1
19530         IF(RYST.GT.COEF(ISUB,8)) MYST=2
19531         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
19532         CALL PYKMAP(2,MYST,PYR(0))
19533         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
19534  
19535 C...Check that x not used up. Accept or reject kinematical variables.
19536         X1M=SQRT(TAU)*EXP(VINT(22))
19537         X2M=SQRT(TAU)*EXP(-VINT(22))
19538         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 220
19539         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
19540         CALL PYSIGH(NCHN,SIGS)
19541         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
19542         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 220
19543  
19544 C...Reset K, P and V vectors. Select some variables.
19545         DO 240 I=N+1,N+2
19546           DO 230 J=1,5
19547             K(I,J)=0
19548             P(I,J)=0D0
19549             V(I,J)=0D0
19550   230     CONTINUE
19551   240   CONTINUE
19552         RFLAV=PYR(0)
19553         PT=0.5D0*VINT(1)*SQRT(XT2)
19554         PHI=PARU(2)*PYR(0)
19555         CTH=VINT(23)
19556  
19557 C...Add first parton to event record.
19558         K(N+1,1)=3
19559         K(N+1,2)=21
19560         IF(RFLAV.GE.MAX(PARP(85),PARP(86))) K(N+1,2)=
19561      &  1+INT((2D0+PARJ(2))*PYR(0))
19562         P(N+1,1)=PT*COS(PHI)
19563         P(N+1,2)=PT*SIN(PHI)
19564         P(N+1,3)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)-VINT(42)*(1D0-CTH))
19565         P(N+1,4)=0.25D0*VINT(1)*(VINT(41)*(1D0+CTH)+VINT(42)*(1D0-CTH))
19566         P(N+1,5)=0D0
19567  
19568 C...Add second parton to event record.
19569         K(N+2,1)=3
19570         K(N+2,2)=21
19571         IF(K(N+1,2).NE.21) K(N+2,2)=-K(N+1,2)
19572         P(N+2,1)=-P(N+1,1)
19573         P(N+2,2)=-P(N+1,2)
19574         P(N+2,3)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)-VINT(42)*(1D0+CTH))
19575         P(N+2,4)=0.25D0*VINT(1)*(VINT(41)*(1D0-CTH)+VINT(42)*(1D0+CTH))
19576         P(N+2,5)=0D0
19577  
19578         IF(RFLAV.LT.PARP(85).AND.NSTR.GE.1) THEN
19579 C....Choose relevant string pieces to place gluons on.
19580           DO 260 I=N+1,N+2
19581             DMIN=1D8
19582             DO 250 ISTR=1,NSTR
19583               I1=KSTR(ISTR,1)
19584               I2=KSTR(ISTR,2)
19585               DIST=(P(I,4)*P(I1,4)-P(I,1)*P(I1,1)-P(I,2)*P(I1,2)-
19586      &        P(I,3)*P(I1,3))*(P(I,4)*P(I2,4)-P(I,1)*P(I2,1)-
19587      &        P(I,2)*P(I2,2)-P(I,3)*P(I2,3))/MAX(1D0,P(I1,4)*P(I2,4)-
19588      &        P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-P(I1,3)*P(I2,3))
19589               IF(ISTR.EQ.1.OR.DIST.LT.DMIN) THEN
19590                 DMIN=DIST
19591                 IST1=I1
19592                 IST2=I2
19593                 ISTM=ISTR
19594               ENDIF
19595   250       CONTINUE
19596  
19597 C....Colour flow adjustments, new string pieces.
19598             IF(K(IST1,4)/MSTU(5).EQ.IST2) K(IST1,4)=MSTU(5)*I+
19599      &      MOD(K(IST1,4),MSTU(5))
19600             IF(MOD(K(IST1,5),MSTU(5)).EQ.IST2) K(IST1,5)=
19601      &      MSTU(5)*(K(IST1,5)/MSTU(5))+I
19602             K(I,5)=MSTU(5)*IST1
19603             K(I,4)=MSTU(5)*IST2
19604             IF(K(IST2,5)/MSTU(5).EQ.IST1) K(IST2,5)=MSTU(5)*I+
19605      &      MOD(K(IST2,5),MSTU(5))
19606             IF(MOD(K(IST2,4),MSTU(5)).EQ.IST1) K(IST2,4)=
19607      &      MSTU(5)*(K(IST2,4)/MSTU(5))+I
19608             KSTR(ISTM,2)=I
19609             KSTR(NSTR+1,1)=I
19610             KSTR(NSTR+1,2)=IST2
19611             NSTR=NSTR+1
19612   260     CONTINUE
19613  
19614 C...String drawing and colour flow for gluon loop.
19615         ELSEIF(K(N+1,2).EQ.21) THEN
19616           K(N+1,4)=MSTU(5)*(N+2)
19617           K(N+1,5)=MSTU(5)*(N+2)
19618           K(N+2,4)=MSTU(5)*(N+1)
19619           K(N+2,5)=MSTU(5)*(N+1)
19620           KSTR(NSTR+1,1)=N+1
19621           KSTR(NSTR+1,2)=N+2
19622           KSTR(NSTR+2,1)=N+2
19623           KSTR(NSTR+2,2)=N+1
19624           NSTR=NSTR+2
19625  
19626 C...String drawing and colour flow for qqbar pair.
19627         ELSE
19628           K(N+1,4)=MSTU(5)*(N+2)
19629           K(N+2,5)=MSTU(5)*(N+1)
19630           KSTR(NSTR+1,1)=N+1
19631           KSTR(NSTR+1,2)=N+2
19632           NSTR=NSTR+1
19633         ENDIF
19634  
19635 C...Global statistics.
19636         MINT(351)=MINT(351)+1
19637         VINT(351)=VINT(351)+PT
19638         IF (MINT(351).EQ.1) VINT(356)=PT
19639  
19640 C...Update remaining energy; iterate.
19641         N=N+2
19642         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
19643           CALL PYERRM(11,'(PYMULT:) no more memory left in PYJETS')
19644           MINT(51)=1
19645           RETURN
19646         ENDIF
19647         MINT(31)=MINT(31)+1
19648         VINT(151)=VINT(151)+VINT(41)
19649         VINT(152)=VINT(152)+VINT(42)
19650         VINT(143)=VINT(143)-VINT(41)
19651         VINT(144)=VINT(144)-VINT(42)
19652 C...Allow FSR for UE (always handle with old showers)
19653         IF(MSTP(152).EQ.1) THEN
19654           M41SAV=MSTJ(41)
19655           IF (MSTJ(41).EQ.10) MSTJ(41)=2
19656           MSTJ(41)=MOD(MSTJ(41),10)
19657           CALL PYSHOW(N-1,N,SQRT(PARP(71))*PT)
19658           MSTJ(41)=M41SAV
19659         ENDIF
19660         IF(MINT(31).LT.240) GOTO 220
19661   270   CONTINUE
19662         MINT(1)=ISUBSV
19663         DO 280 J=11,80
19664           VINT(J)=VINTSV(J)
19665   280   CONTINUE
19666       ENDIF
19667  
19668 C...Format statements for printout.
19669  5000 FORMAT(/1X,'****** PYMULT: initialization of multiple inter',
19670      &'actions for MSTP(82) =',I2,' ******')
19671  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
19672      &D9.2,' mb: rejected')
19673  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
19674      &D9.2,' mb: accepted')
19675  
19676       RETURN
19677       END
19678  
19679 C*********************************************************************
19680  
19681 C...PYREMN
19682 C...Adds on target remnants (one or two from each side) and
19683 C...includes primordial kT for hadron beams.
19684  
19685       SUBROUTINE PYREMN(IPU1,IPU2)
19686  
19687 C...Double precision and integer declarations.
19688       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
19689       IMPLICIT INTEGER(I-N)
19690       INTEGER PYK,PYCHGE,PYCOMP
19691 C...Commonblocks.
19692       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
19693       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
19694       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
19695       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
19696       COMMON/PYINT1/MINT(400),VINT(400)
19697       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
19698 C...Local arrays.
19699       DIMENSION KFLCH(2),KFLSP(2),CHI(2),PMS(0:6),IS(2),ISN(2),ROBO(5),
19700      &PSYS(0:2,5),PMIN(0:2),QOLD(4),QNEW(4),DBE(3),PSUM(4)
19701  
19702 C...Find event type and remaining energy.
19703       ISUB=MINT(1)
19704       NS=N
19705       IF(MINT(50).EQ.0.OR.MOD(MSTP(81),10).LE.0) THEN
19706         VINT(143)=1D0-VINT(141)
19707         VINT(144)=1D0-VINT(142)
19708       ENDIF
19709  
19710 C...Define initial partons.
19711       NTRY=0
19712   100 NTRY=NTRY+1
19713       DO 130 JT=1,2
19714         I=MINT(83)+JT+2
19715         IF(JT.EQ.1) IPU=IPU1
19716         IF(JT.EQ.2) IPU=IPU2
19717         K(I,1)=21
19718         K(I,2)=K(IPU,2)
19719         K(I,3)=I-2
19720         PMS(JT)=0D0
19721         VINT(156+JT)=0D0
19722         VINT(158+JT)=0D0
19723         IF(MINT(47).EQ.1) THEN
19724           DO 110 J=1,5
19725             P(I,J)=P(I-2,J)
19726   110     CONTINUE
19727         ELSEIF(ISUB.EQ.95) THEN
19728           K(I,2)=21
19729         ELSE
19730           P(I,5)=P(IPU,5)
19731  
19732 C...No primordial kT, or chosen according to truncated Gaussian or
19733 C...exponential, or (for photon) predetermined or power law.
19734   120     IF(MINT(40+JT).EQ.2.AND.MINT(10+JT).NE.22) THEN
19735             IF(MSTP(91).LE.0) THEN
19736               PT=0D0
19737             ELSEIF(MSTP(91).EQ.1) THEN
19738               PT=PARP(91)*SQRT(-LOG(PYR(0)))
19739             ELSE
19740               RPT1=PYR(0)
19741               RPT2=PYR(0)
19742               PT=-PARP(92)*LOG(RPT1*RPT2)
19743             ENDIF
19744             IF(PT.GT.PARP(93)) GOTO 120
19745           ELSEIF(MINT(106+JT).EQ.3) THEN
19746             PTA=SQRT(VINT(282+JT))
19747             PTB=0D0
19748             IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
19749               PTB=PARP(99)*SQRT(-LOG(PYR(0)))
19750             ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
19751               RPT1=PYR(0)
19752               RPT2=PYR(0)
19753               PTB=-PARP(99)*LOG(RPT1*RPT2)
19754             ENDIF
19755             IF(PTB.GT.PARP(100)) GOTO 120
19756             PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
19757             PT=PT*0.8D0**MINT(57)
19758             IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
19759           ELSEIF(IABS(MINT(14+JT)).LE.8.OR.MINT(14+JT).EQ.21) THEN
19760             IF(MSTP(93).LE.0) THEN
19761               PT=0D0
19762             ELSEIF(MSTP(93).EQ.1) THEN
19763               PT=PARP(99)*SQRT(-LOG(PYR(0)))
19764             ELSEIF(MSTP(93).EQ.2) THEN
19765               RPT1=PYR(0)
19766               RPT2=PYR(0)
19767               PT=-PARP(99)*LOG(RPT1*RPT2)
19768             ELSEIF(MSTP(93).EQ.3) THEN
19769               HA=PARP(99)**2
19770               HB=PARP(100)**2
19771               PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
19772             ELSE
19773               HA=PARP(99)**2
19774               HB=PARP(100)**2
19775               IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
19776               PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
19777             ENDIF
19778             IF(PT.GT.PARP(100)) GOTO 120
19779           ELSE
19780             PT=0D0
19781           ENDIF
19782           VINT(156+JT)=PT
19783           PHI=PARU(2)*PYR(0)
19784           P(I,1)=PT*COS(PHI)
19785           P(I,2)=PT*SIN(PHI)
19786           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
19787         ENDIF
19788   130 CONTINUE
19789       IF(MINT(47).EQ.1) RETURN
19790  
19791 C...Kinematics construction for initial partons.
19792       I1=MINT(83)+3
19793       I2=MINT(83)+4
19794       IF(ISUB.EQ.95) THEN
19795         SHS=0D0
19796         SHR=0D0
19797       ELSE
19798         SHS=VINT(141)*VINT(142)*VINT(2)+(P(I1,1)+P(I2,1))**2+
19799      &  (P(I1,2)+P(I2,2))**2
19800         SHR=SQRT(MAX(0D0,SHS))
19801         IF((SHS-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2).LE.0D0) GOTO 100
19802         P(I1,4)=0.5D0*(SHR+(PMS(1)-PMS(2))/SHR)
19803         P(I1,3)=SQRT(MAX(0D0,P(I1,4)**2-PMS(1)))
19804         P(I2,4)=SHR-P(I1,4)
19805         P(I2,3)=-P(I1,3)
19806  
19807 C...Transform partons to overall CM-frame.
19808         ROBO(3)=(P(I1,1)+P(I2,1))/SHR
19809         ROBO(4)=(P(I1,2)+P(I2,2))/SHR
19810         CALL PYROBO(I1,I2,0D0,0D0,-ROBO(3),-ROBO(4),0D0)
19811         ROBO(2)=PYANGL(P(I1,1),P(I1,2))
19812         CALL PYROBO(I1,I2,0D0,-ROBO(2),0D0,0D0,0D0)
19813         ROBO(1)=PYANGL(P(I1,3),P(I1,1))
19814         CALL PYROBO(I1,I2,-ROBO(1),0D0,0D0,0D0,0D0)
19815         CALL PYROBO(I2+1,MINT(52),0D0,-ROBO(2),0D0,0D0,0D0)
19816         CALL PYROBO(I1,MINT(52),ROBO(1),ROBO(2),ROBO(3),ROBO(4),0D0)
19817         ROBO(5)=(VINT(141)-VINT(142))/(VINT(141)+VINT(142))
19818         CALL PYROBO(I1,MINT(52),0D0,0D0,0D0,0D0,ROBO(5))
19819       ENDIF
19820  
19821 C...Optionally fix up x and Q2 definitions for leptoproduction.
19822       IDISXQ=0
19823       IF((MINT(43).EQ.2.OR.MINT(43).EQ.3).AND.((ISUB.EQ.10.AND.
19824      &MSTP(23).GE.1).OR.(ISUB.EQ.83.AND.MSTP(23).GE.2))) IDISXQ=1
19825       IF(IDISXQ.EQ.1) THEN
19826  
19827 C...Find where incoming and outgoing leptons/partons are sitting.
19828         LESD=1
19829         IF(MINT(42).EQ.1) LESD=2
19830         LPIN=MINT(83)+3-LESD
19831         LEIN=MINT(84)+LESD
19832         LQIN=MINT(84)+3-LESD
19833         LEOUT=MINT(84)+2+LESD
19834         LQOUT=MINT(84)+5-LESD
19835         IF(K(LEIN,3).GT.LEIN) LEIN=K(LEIN,3)
19836         IF(K(LQIN,3).GT.LQIN) LQIN=K(LQIN,3)
19837         LSCMS=0
19838         DO 140 I=MINT(84)+5,N
19839           IF(K(I,2).EQ.94) THEN
19840             LSCMS=I
19841             LEOUT=I+LESD
19842             LQOUT=I+3-LESD
19843           ENDIF
19844   140   CONTINUE
19845         LQBG=IPU1
19846         IF(LESD.EQ.1) LQBG=IPU2
19847  
19848 C...Calculate actual and wanted momentum transfer.
19849         XNOM=VINT(43-LESD)
19850         Q2NOM=-VINT(45)
19851         HPK=2D0*(P(LPIN,4)*P(LEIN,4)-P(LPIN,1)*P(LEIN,1)-
19852      &  P(LPIN,2)*P(LEIN,2)-P(LPIN,3)*P(LEIN,3))*
19853      &  (P(MINT(83)+LESD,4)*VINT(40+LESD)/P(LEIN,4))
19854         HPT2=MAX(0D0,Q2NOM*(1D0-Q2NOM/(XNOM*HPK)))
19855         FAC=SQRT(HPT2/(P(LEOUT,1)**2+P(LEOUT,2)**2))
19856         P(N+1,1)=FAC*P(LEOUT,1)
19857         P(N+1,2)=FAC*P(LEOUT,2)
19858         P(N+1,3)=0.25D0*((HPK-Q2NOM/XNOM)/P(LPIN,4)-
19859      &  Q2NOM/(P(MINT(83)+LESD,4)*VINT(40+LESD)))*(-1)**(LESD+1)
19860         P(N+1,4)=SQRT(P(LEOUT,5)**2+P(N+1,1)**2+P(N+1,2)**2+
19861      &  P(N+1,3)**2)
19862         DO 150 J=1,4
19863           QOLD(J)=P(LEIN,J)-P(LEOUT,J)
19864           QNEW(J)=P(LEIN,J)-P(N+1,J)
19865   150   CONTINUE
19866  
19867 C...Boost outgoing electron and daughters.
19868         IF(LSCMS.EQ.0) THEN
19869           DO 160 J=1,4
19870             P(LEOUT,J)=P(N+1,J)
19871   160     CONTINUE
19872         ELSE
19873           DO 170 J=1,3
19874             P(N+2,J)=(P(N+1,J)-P(LEOUT,J))/(P(N+1,4)+P(LEOUT,4))
19875   170     CONTINUE
19876           PINV=2D0/(1D0+P(N+2,1)**2+P(N+2,2)**2+P(N+2,3)**2)
19877           DO 180 J=1,3
19878             DBE(J)=PINV*P(N+2,J)
19879   180     CONTINUE
19880           DO 200 I=LSCMS+1,N
19881             IORIG=I
19882   190       IORIG=K(IORIG,3)
19883             IF(IORIG.GT.LEOUT) GOTO 190
19884             IF(I.EQ.LEOUT.OR.IORIG.EQ.LEOUT)
19885      &      CALL PYROBO(I,I,0D0,0D0,DBE(1),DBE(2),DBE(3))
19886   200     CONTINUE
19887         ENDIF
19888  
19889 C...Copy shower initiator and all outgoing partons.
19890         NCOP=N+1
19891         K(NCOP,3)=LQBG
19892         DO 210 J=1,5
19893           P(NCOP,J)=P(LQBG,J)
19894   210   CONTINUE
19895         DO 240 I=MINT(84)+1,N
19896           ICOP=0
19897           IF(K(I,1).GT.10) GOTO 240
19898           IF(I.EQ.LQBG.OR.I.EQ.LQOUT) THEN
19899             ICOP=I
19900           ELSE
19901             IORIG=I
19902   220       IORIG=K(IORIG,3)
19903             IF(IORIG.EQ.LQBG.OR.IORIG.EQ.LQOUT) THEN
19904               ICOP=IORIG
19905             ELSEIF(IORIG.GT.MINT(84).AND.IORIG.LE.N) THEN
19906               GOTO 220
19907             ENDIF
19908           ENDIF
19909           IF(ICOP.NE.0) THEN
19910             NCOP=NCOP+1
19911             K(NCOP,3)=I
19912             DO 230 J=1,5
19913               P(NCOP,J)=P(I,J)
19914   230       CONTINUE
19915           ENDIF
19916   240   CONTINUE
19917  
19918 C...Calculate relative rescaling factors.
19919         SLC=3-2*LESD
19920         PLCSUM=0D0
19921         DO 250 I=N+2,NCOP
19922           PLCSUM=PLCSUM+(P(I,4)+SLC*P(I,3))
19923   250   CONTINUE
19924         DO 260 I=N+2,NCOP
19925           V(I,1)=(P(I,4)+SLC*P(I,3))/PLCSUM
19926   260   CONTINUE
19927  
19928 C...Transfer extra three-momentum of current.
19929         DO 280 I=N+2,NCOP
19930           DO 270 J=1,3
19931             P(I,J)=P(I,J)+V(I,1)*(QNEW(J)-QOLD(J))
19932   270     CONTINUE
19933           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
19934   280   CONTINUE
19935  
19936 C...Iterate change of initiator momentum to get energy right.
19937         ITER=0
19938   290   ITER=ITER+1
19939         PEEX=-P(N+1,4)-QNEW(4)
19940         PEMV=-P(N+1,3)/P(N+1,4)
19941         DO 300 I=N+2,NCOP
19942           PEEX=PEEX+P(I,4)
19943           PEMV=PEMV+V(I,1)*P(I,3)/P(I,4)
19944   300   CONTINUE
19945         IF(ABS(PEMV).LT.1D-10) THEN
19946           MINT(51)=1
19947           MINT(57)=MINT(57)+1
19948           RETURN
19949         ENDIF
19950         PZCH=-PEEX/PEMV
19951         P(N+1,3)=P(N+1,3)+PZCH
19952         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)
19953         DO 310 I=N+2,NCOP
19954           P(I,3)=P(I,3)+V(I,1)*PZCH
19955           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
19956   310   CONTINUE
19957         IF(ITER.LT.10.AND.ABS(PEEX).GT.1D-6*P(N+1,4)) GOTO 290
19958  
19959 C...Modify momenta in event record.
19960         HBE=2D0*(P(N+1,4)+P(LQBG,4))*(P(N+1,3)-P(LQBG,3))/
19961      &  ((P(N+1,4)+P(LQBG,4))**2+(P(N+1,3)-P(LQBG,3))**2)
19962         IF(ABS(HBE).GE.1D0) THEN
19963           MINT(51)=1
19964           MINT(57)=MINT(57)+1
19965           RETURN
19966         ENDIF
19967         I=MINT(83)+5-LESD
19968         CALL PYROBO(I,I,0D0,0D0,0D0,0D0,HBE)
19969         DO 330 I=N+1,NCOP
19970           ICOP=K(I,3)
19971           DO 320 J=1,4
19972             P(ICOP,J)=P(I,J)
19973   320     CONTINUE
19974   330   CONTINUE
19975       ENDIF
19976  
19977 C...Check minimum invariant mass of remnant system(s).
19978       PSYS(0,4)=P(I1,4)+P(I2,4)+0.5D0*VINT(1)*(VINT(151)+VINT(152))
19979       PSYS(0,3)=P(I1,3)+P(I2,3)+0.5D0*VINT(1)*(VINT(151)-VINT(152))
19980       PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
19981       PMIN(0)=SQRT(PMS(0))
19982       DO 340 JT=1,2
19983         PSYS(JT,4)=0.5D0*VINT(1)*VINT(142+JT)
19984         PSYS(JT,3)=PSYS(JT,4)*(-1)**(JT-1)
19985         PMIN(JT)=0D0
19986         IF(MINT(44+JT).EQ.1) GOTO 340
19987         MINT(105)=MINT(102+JT)
19988         MINT(109)=MINT(106+JT)
19989         CALL PYSPLI(MINT(10+JT),MINT(12+JT),KFLCH(JT),KFLSP(JT))
19990         IF(MINT(51).NE.0) THEN
19991           MINT(57)=MINT(57)+1
19992           RETURN
19993         ENDIF
19994         IF(KFLCH(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLCH(JT))
19995         IF(KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+PYMASS(KFLSP(JT))
19996         IF(KFLCH(JT)*KFLSP(JT).NE.0) PMIN(JT)=PMIN(JT)+0.5D0*PARP(111)
19997         PMIN(JT)=SQRT(PMIN(JT)**2+P(MINT(83)+JT+2,1)**2+
19998      &  P(MINT(83)+JT+2,2)**2)
19999   340 CONTINUE
20000       IF(PMIN(0)+PMIN(1)+PMIN(2).GT.VINT(1).OR.(MINT(45).GE.2.AND.
20001      &PMIN(1).GT.PSYS(1,4)).OR.(MINT(46).GE.2.AND.PMIN(2).GT.
20002      &PSYS(2,4))) THEN
20003         MINT(51)=1
20004         MINT(57)=MINT(57)+1
20005         RETURN
20006       ENDIF
20007  
20008 C...Loop over two remnants; skip if none there.
20009       I=NS
20010       DO 410 JT=1,2
20011         ISN(JT)=0
20012         IF(MINT(44+JT).EQ.1) GOTO 410
20013         IF(JT.EQ.1) IPU=IPU1
20014         IF(JT.EQ.2) IPU=IPU2
20015  
20016 C...Store first remnant parton.
20017         I=I+1
20018         IS(JT)=I
20019         ISN(JT)=1
20020         DO 350 J=1,5
20021           K(I,J)=0
20022           P(I,J)=0D0
20023           V(I,J)=0D0
20024   350   CONTINUE
20025         K(I,1)=1
20026         K(I,2)=KFLSP(JT)
20027         K(I,3)=MINT(83)+JT
20028         P(I,5)=PYMASS(K(I,2))
20029  
20030 C...First parton colour connections and kinematics.
20031         KCOL=KCHG(PYCOMP(KFLSP(JT)),2)
20032         IF(KCOL.EQ.2) THEN
20033           K(I,1)=3
20034           K(I,4)=MSTU(5)*IPU+IPU
20035           K(I,5)=MSTU(5)*IPU+IPU
20036           K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
20037           K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
20038         ELSEIF(KCOL.NE.0) THEN
20039           K(I,1)=3
20040           KFLS=(3-KCOL*ISIGN(1,KFLSP(JT)))/2
20041           K(I,KFLS+3)=IPU
20042           K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
20043         ENDIF
20044         IF(KFLCH(JT).EQ.0) THEN
20045           P(I,1)=-P(MINT(83)+JT+2,1)
20046           P(I,2)=-P(MINT(83)+JT+2,2)
20047           PMS(JT)=P(I,5)**2+P(I,1)**2+P(I,2)**2
20048           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
20049           P(I,3)=PSYS(JT,3)
20050           P(I,4)=PSYS(JT,4)
20051  
20052 C...When extra remnant parton or hadron: store extra remnant.
20053         ELSE
20054           I=I+1
20055           ISN(JT)=2
20056           DO 360 J=1,5
20057             K(I,J)=0
20058             P(I,J)=0D0
20059             V(I,J)=0D0
20060   360     CONTINUE
20061           K(I,1)=1
20062           K(I,2)=KFLCH(JT)
20063           K(I,3)=MINT(83)+JT
20064           P(I,5)=PYMASS(K(I,2))
20065  
20066 C...Find parton colour connections of extra remnant.
20067           KCOL=KCHG(PYCOMP(KFLCH(JT)),2)
20068           IF(KCOL.EQ.2) THEN
20069             K(I,1)=3
20070             K(I,4)=MSTU(5)*IPU+IPU
20071             K(I,5)=MSTU(5)*IPU+IPU
20072             K(IPU,4)=MOD(K(IPU,4),MSTU(5))+MSTU(5)*I
20073             K(IPU,5)=MOD(K(IPU,5),MSTU(5))+MSTU(5)*I
20074           ELSEIF(KCOL.NE.0) THEN
20075             K(I,1)=3
20076             KFLS=(3-KCOL*ISIGN(1,KFLCH(JT)))/2
20077             K(I,KFLS+3)=IPU
20078             K(IPU,6-KFLS)=MOD(K(IPU,6-KFLS),MSTU(5))+MSTU(5)*I
20079           ENDIF
20080  
20081 C...Relative transverse momentum when two remnants.
20082           LOOP=0
20083   370     LOOP=LOOP+1
20084           CALL PYPTDI(1,P(I-1,1),P(I-1,2))
20085           IF(IABS(MINT(10+JT)).LT.20) THEN
20086             P(I-1,1)=0D0
20087             P(I-1,2)=0D0
20088           ELSE
20089             P(I-1,1)=P(I-1,1)-0.5D0*P(MINT(83)+JT+2,1)
20090             P(I-1,2)=P(I-1,2)-0.5D0*P(MINT(83)+JT+2,2)
20091           ENDIF
20092           PMS(JT+2)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
20093           P(I,1)=-P(MINT(83)+JT+2,1)-P(I-1,1)
20094           P(I,2)=-P(MINT(83)+JT+2,2)-P(I-1,2)
20095           PMS(JT+4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
20096  
20097 C...Meson or baryon; photon as meson. For splitup below.
20098           IMB=1
20099           IF(MOD(MINT(10+JT)/1000,10).NE.0) IMB=2
20100  
20101 C***Relative distribution for electron into two electrons. Temporary!
20102           IF(IABS(MINT(10+JT)).LT.20.AND.MINT(14+JT).EQ.-MINT(10+JT))
20103      &    THEN
20104             CHI(JT)=PYR(0)
20105  
20106 C...Relative distribution of electron energy into electron plus parton.
20107           ELSEIF(IABS(MINT(10+JT)).LT.20) THEN
20108             XHRD=VINT(140+JT)
20109             XE=VINT(154+JT)
20110             CHI(JT)=(XE-XHRD)/(1D0-XHRD)
20111  
20112 C...Relative distribution of energy for particle into two jets.
20113           ELSEIF(IABS(KFLCH(JT)).LE.10.OR.KFLCH(JT).EQ.21) THEN
20114             CHIK=PARP(92+2*IMB)
20115             IF(MSTP(92).LE.1) THEN
20116               IF(IMB.EQ.1) CHI(JT)=PYR(0)
20117               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
20118             ELSEIF(MSTP(92).EQ.2) THEN
20119               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+CHIK))
20120             ELSEIF(MSTP(92).EQ.3) THEN
20121               CUT=2D0*0.3D0/VINT(1)
20122   380         CHI(JT)=PYR(0)**2
20123               IF((CHI(JT)**2/(CHI(JT)**2+CUT**2))**0.25D0*
20124      &        (1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 380
20125             ELSEIF(MSTP(92).EQ.4) THEN
20126               CUT=2D0*0.3D0/VINT(1)
20127               CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
20128   390         CHIR=CUT*CUTR**PYR(0)
20129               CHI(JT)=(CHIR**2-CUT**2)/(2D0*CHIR)
20130               IF((1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 390
20131             ELSE
20132               CUT=2D0*0.3D0/VINT(1)
20133               CUTA=CUT**(1D0-PARP(98))
20134               CUTB=(1D0+CUT)**(1D0-PARP(98))
20135   400         CHI(JT)=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
20136               IF(((CHI(JT)+CUT)**2/(2D0*(CHI(JT)**2+CUT**2)))**
20137      &        (0.5D0*PARP(98))*(1D0-CHI(JT))**CHIK.LT.PYR(0)) GOTO 400
20138             ENDIF
20139  
20140 C...Relative distribution of energy for particle into jet plus particle.
20141           ELSE
20142             IF(MSTP(94).LE.1) THEN
20143               IF(IMB.EQ.1) CHI(JT)=PYR(0)
20144               IF(IMB.EQ.2) CHI(JT)=1D0-SQRT(PYR(0))
20145               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
20146             ELSEIF(MSTP(94).EQ.2) THEN
20147               CHI(JT)=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
20148               IF(MOD(KFLCH(JT)/1000,10).NE.0) CHI(JT)=1D0-CHI(JT)
20149             ELSEIF(MSTP(94).EQ.3) THEN
20150               CALL PYZDIS(1,0,PMS(JT+4),ZZ)
20151               CHI(JT)=ZZ
20152             ELSE
20153               CALL PYZDIS(1000,0,PMS(JT+4),ZZ)
20154               CHI(JT)=ZZ
20155             ENDIF
20156           ENDIF
20157  
20158 C...Construct total transverse mass; reject if too large.
20159           CHI(JT)=MAX(1D-8,MIN(1D0-1D-8,CHI(JT)))
20160           PMS(JT)=PMS(JT+4)/CHI(JT)+PMS(JT+2)/(1D0-CHI(JT))
20161           IF(PMS(JT).GT.PSYS(JT,4)**2) THEN
20162             IF(LOOP.LT.100) THEN
20163               GOTO 370
20164             ELSE
20165               MINT(51)=1
20166               MINT(57)=MINT(57)+1
20167               RETURN
20168             ENDIF
20169           ENDIF
20170           PSYS(JT,3)=SQRT(MAX(0D0,PSYS(JT,4)**2-PMS(JT)))*(-1)**(JT-1)
20171           VINT(158+JT)=CHI(JT)
20172  
20173 C...Subdivide longitudinal momentum according to value selected above.
20174           PW1=CHI(JT)*(PSYS(JT,4)+ABS(PSYS(JT,3)))
20175           P(IS(JT)+1,4)=0.5D0*(PW1+PMS(JT+4)/PW1)
20176           P(IS(JT)+1,3)=0.5D0*(PW1-PMS(JT+4)/PW1)*(-1)**(JT-1)
20177           P(IS(JT),4)=PSYS(JT,4)-P(IS(JT)+1,4)
20178           P(IS(JT),3)=PSYS(JT,3)-P(IS(JT)+1,3)
20179         ENDIF
20180   410 CONTINUE
20181       N=I
20182  
20183 C...Check if longitudinal boosts needed - if so pick two systems.
20184       PDEV=ABS(PSYS(0,4)+PSYS(1,4)+PSYS(2,4)-VINT(1))+
20185      &ABS(PSYS(0,3)+PSYS(1,3)+PSYS(2,3))
20186       IF(PDEV.LE.1D-6*VINT(1)) RETURN
20187       IF(ISN(1).EQ.0) THEN
20188         IR=0
20189         IL=2
20190       ELSEIF(ISN(2).EQ.0) THEN
20191         IR=1
20192         IL=0
20193       ELSEIF(VINT(143).GT.0.2D0.AND.VINT(144).GT.0.2D0) THEN
20194         IR=1
20195         IL=2
20196       ELSEIF(VINT(143).GT.0.2D0) THEN
20197         IR=1
20198         IL=0
20199       ELSEIF(VINT(144).GT.0.2D0) THEN
20200         IR=0
20201         IL=2
20202       ELSEIF(PMS(1)/PSYS(1,4)**2.GT.PMS(2)/PSYS(2,4)**2) THEN
20203         IR=1
20204         IL=0
20205       ELSE
20206         IR=0
20207         IL=2
20208       ENDIF
20209       IG=3-IR-IL
20210  
20211 C...E+-pL wanted for system to be modified.
20212       IF((IG.EQ.1.AND.ISN(1).EQ.0).OR.(IG.EQ.2.AND.ISN(2).EQ.0)) THEN
20213         PPB=VINT(1)
20214         PNB=VINT(1)
20215       ELSE
20216         PPB=VINT(1)-(PSYS(IG,4)+PSYS(IG,3))
20217         PNB=VINT(1)-(PSYS(IG,4)-PSYS(IG,3))
20218       ENDIF
20219  
20220 C...To keep x and Q2 in leptoproduction: do not count scattered lepton.
20221       IF(IDISXQ.EQ.1.AND.IG.NE.0) THEN
20222         PPB=PPB-(PSYS(0,4)+PSYS(0,3))
20223         PNB=PNB-(PSYS(0,4)-PSYS(0,3))
20224         DO 420 J=1,4
20225           PSYS(0,J)=0D0
20226   420   CONTINUE
20227         DO 450 I=MINT(84)+1,NS
20228           IF(K(I,1).GT.10) GOTO 450
20229           INCL=0
20230           IORIG=I
20231   430     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
20232           IORIG=K(IORIG,3)
20233           IF(IORIG.GT.LPIN) GOTO 430
20234           IF(INCL.EQ.0) GOTO 450
20235           DO 440 J=1,4
20236             PSYS(0,J)=PSYS(0,J)+P(I,J)
20237   440     CONTINUE
20238   450   CONTINUE
20239         PMS(0)=MAX(0D0,PSYS(0,4)**2-PSYS(0,3)**2)
20240         PPB=PPB+(PSYS(0,4)+PSYS(0,3))
20241         PNB=PNB+(PSYS(0,4)-PSYS(0,3))
20242       ENDIF
20243  
20244 C...Construct longitudinal boosts.
20245       DPMTB=PPB*PNB
20246       DPMTR=PMS(IR)
20247       DPMTL=PMS(IL)
20248       DSQLAM=SQRT(MAX(0D0,(DPMTB-DPMTR-DPMTL)**2-4D0*DPMTR*DPMTL))
20249       IF(DSQLAM.LE.1D-6*DPMTB) THEN
20250         MINT(51)=1
20251         MINT(57)=MINT(57)+1
20252         RETURN
20253       ENDIF
20254       DSQSGN=SIGN(1D0,PSYS(IR,3)*PSYS(IL,4)-PSYS(IL,3)*PSYS(IR,4))
20255       DRKR=(DPMTB+DPMTR-DPMTL+DSQLAM*DSQSGN)/
20256      &(2D0*(PSYS(IR,4)+PSYS(IR,3))*PNB)
20257       DRKL=(DPMTB+DPMTL-DPMTR+DSQLAM*DSQSGN)/
20258      &(2D0*(PSYS(IL,4)-PSYS(IL,3))*PPB)
20259       DBER=(DRKR**2-1D0)/(DRKR**2+1D0)
20260       DBEL=-(DRKL**2-1D0)/(DRKL**2+1D0)
20261  
20262 C...Perform longitudinal boosts.
20263       IF(IR.EQ.1.AND.ISN(1).EQ.1.AND.DBER.LE.-0.99999999D0) THEN
20264         P(IS(1),3)=0D0
20265         P(IS(1),4)=SQRT(P(IS(1),5)**2+P(IS(1),1)**2+P(IS(1),2)**2)
20266       ELSEIF(IR.EQ.1) THEN
20267         CALL PYROBO(IS(1),IS(1)+ISN(1)-1,0D0,0D0,0D0,0D0,DBER)
20268       ELSEIF(IDISXQ.EQ.1) THEN
20269         DO 470 I=I1,NS
20270           INCL=0
20271           IORIG=I
20272   460     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
20273           IORIG=K(IORIG,3)
20274           IF(IORIG.GT.LPIN) GOTO 460
20275           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBER)
20276   470   CONTINUE
20277       ELSE
20278         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBER)
20279       ENDIF
20280       IF(IL.EQ.2.AND.ISN(2).EQ.1.AND.DBEL.GE.0.99999999D0) THEN
20281         P(IS(2),3)=0D0
20282         P(IS(2),4)=SQRT(P(IS(2),5)**2+P(IS(2),1)**2+P(IS(2),2)**2)
20283       ELSEIF(IL.EQ.2) THEN
20284         CALL PYROBO(IS(2),IS(2)+ISN(2)-1,0D0,0D0,0D0,0D0,DBEL)
20285       ELSEIF(IDISXQ.EQ.1) THEN
20286         DO 490 I=I1,NS
20287           INCL=0
20288           IORIG=I
20289   480     IF(IORIG.EQ.LQOUT.OR.IORIG.EQ.LPIN+2) INCL=1
20290           IORIG=K(IORIG,3)
20291           IF(IORIG.GT.LPIN) GOTO 480
20292           IF(INCL.EQ.1) CALL PYROBO(I,I,0D0,0D0,0D0,0D0,DBEL)
20293   490   CONTINUE
20294       ELSE
20295         CALL PYROBO(I1,NS,0D0,0D0,0D0,0D0,DBEL)
20296       ENDIF
20297  
20298 C...Final check that energy-momentum conservation worked.
20299       PESUM=0D0
20300       PZSUM=0D0
20301       DO 500 I=MINT(84)+1,N
20302         IF(K(I,1).GT.10) GOTO 500
20303         PESUM=PESUM+P(I,4)
20304         PZSUM=PZSUM+P(I,3)
20305   500 CONTINUE
20306       PDEV=ABS(PESUM-VINT(1))+ABS(PZSUM)
20307       IF(PDEV.GT.1D-4*VINT(1)) THEN
20308         MINT(51)=1
20309         MINT(57)=MINT(57)+1
20310         RETURN
20311       ENDIF
20312  
20313 C...Calculate rotation and boost from overall CM frame to
20314 C...hadronic CM frame in leptoproduction.
20315       MINT(91)=0
20316       IF(MINT(82).EQ.1.AND.(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
20317         MINT(91)=1
20318         LESD=1
20319         IF(MINT(42).EQ.1) LESD=2
20320         LPIN=MINT(83)+3-LESD
20321  
20322 C...Sum upp momenta of everything not lepton or photon to define boost.
20323         DO 510 J=1,4
20324           PSUM(J)=0D0
20325   510   CONTINUE
20326         DO 530 I=1,N
20327           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 530
20328           IF(IABS(K(I,2)).GE.11.AND.IABS(K(I,2)).LE.20) GOTO 530
20329           IF(K(I,2).EQ.22) GOTO 530
20330           DO 520 J=1,4
20331             PSUM(J)=PSUM(J)+P(I,J)
20332   520     CONTINUE
20333   530   CONTINUE
20334         VINT(223)=-PSUM(1)/PSUM(4)
20335         VINT(224)=-PSUM(2)/PSUM(4)
20336         VINT(225)=-PSUM(3)/PSUM(4)
20337  
20338 C...Boost incoming hadron to hadronic CM frame to determine rotations.
20339         K(N+1,1)=1
20340         DO 540 J=1,5
20341           P(N+1,J)=P(LPIN,J)
20342           V(N+1,J)=V(LPIN,J)
20343   540   CONTINUE
20344         CALL PYROBO(N+1,N+1,0D0,0D0,VINT(223),VINT(224),VINT(225))
20345         VINT(222)=-PYANGL(P(N+1,1),P(N+1,2))
20346         CALL PYROBO(N+1,N+1,0D0,VINT(222),0D0,0D0,0D0)
20347         IF(LESD.EQ.2) THEN
20348           VINT(221)=-PYANGL(P(N+1,3),P(N+1,1))
20349         ELSE
20350           VINT(221)=PYANGL(-P(N+1,3),P(N+1,1))
20351         ENDIF
20352       ENDIF
20353  
20354       RETURN
20355       END
20356  
20357 C*********************************************************************
20358  
20359 C...PYMIGN
20360 C...Initializes treatment of new multiple interactions scenario,
20361 C...selects kinematics of hardest interaction if low-pT physics
20362 C...included in run, and generates all non-hardest interactions.
20363  
20364       SUBROUTINE PYMIGN(MMUL)
20365  
20366 C...Double precision and integer declarations.
20367       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
20368       IMPLICIT INTEGER(I-N)
20369       INTEGER PYK,PYCHGE,PYCOMP
20370       EXTERNAL PYALPS
20371       DOUBLE PRECISION PYALPS
20372 C...Commonblocks.
20373       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
20374       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
20375       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
20376       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
20377       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
20378       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
20379       COMMON/PYINT1/MINT(400),VINT(400)
20380       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
20381       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
20382       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
20383       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
20384       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
20385      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
20386      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
20387       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
20388      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT5/,/PYINT7/,/PYINTM/
20389 C...Local arrays and saved variables.
20390       DIMENSION NMUL(20),SIGM(20),KSTR(500,2),VINTSV(80),
20391      &WDTP(0:400),WDTE(0:400,0:5),XPQ(-25:25),KSAV(4,5),PSAV(4,5)
20392       SAVE XT2,XT2FAC,XC2,XTS,IRBIN,RBIN,NMUL,SIGM,P83A,P83B,P83C,
20393      &CQ2I,CQ2R,PIK,BDIV,B,PLOWB,PHIGHB,PALLB,S4A,S4B,S4C,POWIP,
20394      &RPWIP,B2RPDV,B2RPMX,BAVG,VNT145,VNT146,VNT147
20395  
20396 C...Initialization of multiple interaction treatment.
20397       IF(MMUL.EQ.1) THEN
20398         IF(MSTP(122).GE.1) WRITE(MSTU(11),5000) MSTP(82)
20399         ISUB=96
20400         MINT(1)=96
20401         VINT(63)=0D0
20402         VINT(64)=0D0
20403         VINT(143)=1D0
20404         VINT(144)=1D0
20405  
20406 C...Loop over phase space points: xT2 choice in 20 bins.
20407   100   SIGSUM=0D0
20408         DO 120 IXT2=1,20
20409           NMUL(IXT2)=MSTP(83)
20410           SIGM(IXT2)=0D0
20411           DO 110 ITRY=1,MSTP(83)
20412             RSCA=0.05D0*((21-IXT2)-PYR(0))
20413             XT2=VINT(149)*(1D0+VINT(149))/(VINT(149)+RSCA)-VINT(149)
20414             XT2=MAX(0.01D0*VINT(149),XT2)
20415             VINT(25)=XT2
20416  
20417 C...Choose tau and y*. Calculate cos(theta-hat).
20418             IF(PYR(0).LE.COEF(ISUB,1)) THEN
20419               TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20420               TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20421             ELSE
20422               TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20423             ENDIF
20424             VINT(21)=TAU
20425             CALL PYKLIM(2)
20426             RYST=PYR(0)
20427             MYST=1
20428             IF(RYST.GT.COEF(ISUB,8)) MYST=2
20429             IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20430             CALL PYKMAP(2,MYST,PYR(0))
20431             VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20432  
20433 C...Calculate differential cross-section.
20434             VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
20435             CALL PYSIGH(NCHN,SIGS)
20436             SIGM(IXT2)=SIGM(IXT2)+SIGS
20437   110     CONTINUE
20438           SIGSUM=SIGSUM+SIGM(IXT2)
20439   120   CONTINUE
20440         SIGSUM=SIGSUM/(20D0*MSTP(83))
20441  
20442 C...Reject result if sigma(parton-parton) is smaller than hadronic one.
20443         IF(SIGSUM.LT.1.1D0*SIGT(0,0,5)) THEN
20444           IF(MSTP(122).GE.1) WRITE(MSTU(11),5100)
20445      &    PARP(82)*(VINT(1)/PARP(89))**PARP(90),SIGSUM
20446           PARP(82)=0.9D0*PARP(82)
20447           VINT(149)=4D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
20448      &    VINT(2)
20449           GOTO 100
20450         ENDIF
20451         IF(MSTP(122).GE.1) WRITE(MSTU(11),5200)
20452      &  PARP(82)*(VINT(1)/PARP(89))**PARP(90), SIGSUM
20453  
20454 C...Start iteration to find k factor.
20455         YKE=SIGSUM/MAX(1D-10,SIGT(0,0,5))
20456         P83A=(1D0-PARP(83))**2
20457         P83B=2D0*PARP(83)*(1D0-PARP(83))
20458         P83C=PARP(83)**2
20459         CQ2I=1D0/PARP(84)**2
20460         CQ2R=2D0/(1D0+PARP(84)**2)
20461         SO=0.5D0
20462         XI=0D0
20463         YI=0D0
20464         XF=0D0
20465         YF=0D0
20466         XK=0.5D0
20467         IIT=0
20468   130   IF(IIT.EQ.0) THEN
20469           XK=2D0*XK
20470         ELSEIF(IIT.EQ.1) THEN
20471           XK=0.5D0*XK
20472         ELSE
20473           XK=XI+(YKE-YI)*(XF-XI)/(YF-YI)
20474         ENDIF
20475  
20476 C...Evaluate overlap integrals. Find where to divide the b range.
20477         IF(MSTP(82).EQ.2) THEN
20478           SP=0.5D0*PARU(1)*(1D0-EXP(-XK))
20479           SOP=SP/PARU(1)
20480         ELSE
20481           IF(MSTP(82).EQ.3) THEN
20482             DELTAB=0.02D0
20483           ELSEIF(MSTP(82).EQ.4) THEN
20484             DELTAB=MIN(0.01D0,0.05D0*PARP(84))
20485           ELSE
20486             POWIP=MAX(0.4D0,PARP(83))
20487             RPWIP=2D0/POWIP-1D0
20488             DELTAB=MAX(0.02D0,0.02D0*(2D0/POWIP)**(1D0/POWIP))
20489             SO=0D0
20490           ENDIF
20491           SP=0D0
20492           SOP=0D0
20493           BSP=0D0
20494           SOHIGH=0D0
20495           IBDIV=0
20496           B=-0.5D0*DELTAB
20497   140     B=B+DELTAB
20498           IF(MSTP(82).EQ.3) THEN
20499             OV=EXP(-B**2)/PARU(2)
20500           ELSEIF(MSTP(82).EQ.4) THEN
20501             OV=(P83A*EXP(-MIN(50D0,B**2))+
20502      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
20503      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
20504           ELSE
20505             OV=EXP(-B**POWIP)/PARU(2)
20506             SO=SO+PARU(2)*B*DELTAB*OV
20507           ENDIF
20508           IF(IBDIV.EQ.1) SOHIGH=SOHIGH+PARU(2)*B*DELTAB*OV
20509           PACC=1D0-EXP(-MIN(50D0,PARU(1)*XK*OV))
20510           SP=SP+PARU(2)*B*DELTAB*PACC
20511           SOP=SOP+PARU(2)*B*DELTAB*OV*PACC
20512           BSP=BSP+B*PARU(2)*B*DELTAB*PACC
20513           IF(IBDIV.EQ.0.AND.PARU(1)*XK*OV.LT.1D0) THEN
20514             IBDIV=1 
20515             BDIV=B+0.5D0*DELTAB
20516           ENDIF
20517           IF(B.LT.1D0.OR.B*PACC.GT.1D-6) GOTO 140
20518         ENDIF
20519         YK=PARU(1)*XK*SO/SP
20520  
20521 C...Continue iteration until convergence.
20522         IF(YK.LT.YKE) THEN
20523           XI=XK
20524           YI=YK
20525           IF(IIT.EQ.1) IIT=2
20526         ELSE
20527           XF=XK
20528           YF=YK
20529           IF(IIT.EQ.0) IIT=1
20530         ENDIF
20531         IF(ABS(YK-YKE).GE.1D-5*YKE) GOTO 130
20532  
20533 C...Store some results for subsequent use.
20534         BAVG=BSP/SP
20535         VINT(145)=SIGSUM
20536         VINT(146)=SOP/SO
20537         VINT(147)=SOP/SP
20538         VNT145=VINT(145)
20539         VNT146=VINT(146)
20540         VNT147=VINT(147)
20541 C...PIK = PARU(1)*XK = (VINT(146)/VINT(147))*sigma_jet/sigma_nondiffr.
20542         PIK=(VNT146/VNT147)*YKE
20543 
20544 C...Find relative weight for low and high impact parameter..
20545       PLOWB=PARU(1)*BDIV**2
20546       IF(MSTP(82).EQ.3) THEN
20547         PHIGHB=PIK*0.5*EXP(-BDIV**2)
20548       ELSEIF(MSTP(82).EQ.4) THEN
20549         S4A=P83A*EXP(-BDIV**2)
20550         S4B=P83B*EXP(-BDIV**2*CQ2R)
20551         S4C=P83C*EXP(-BDIV**2*CQ2I)
20552         PHIGHB=PIK*0.5*(S4A+S4B+S4C)
20553       ELSEIF(PARP(83).GE.1.999D0) THEN
20554         PHIGHB=PIK*SOHIGH
20555         B2RPDV=BDIV**POWIP
20556       ELSE
20557         PHIGHB=PIK*SOHIGH
20558         B2RPDV=BDIV**POWIP
20559         B2RPMX=MAX(2D0*RPWIP,B2RPDV)
20560       ENDIF 
20561       PALLB=PLOWB+PHIGHB
20562  
20563 C...Initialize iteration in xT2 for hardest interaction.
20564       ELSEIF(MMUL.EQ.2) THEN
20565         VINT(145)=VNT145
20566         VINT(146)=VNT146
20567         VINT(147)=VNT147
20568         IF(MSTP(82).LE.0) THEN
20569         ELSEIF(MSTP(82).EQ.1) THEN
20570           XT2=1D0
20571           SIGRAT=XSEC(96,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
20572           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
20573      &    VINT(317)/(VINT(318)*VINT(320))
20574           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
20575         ELSEIF(MSTP(82).EQ.2) THEN
20576           XT2=1D0
20577           XT2FAC=VNT146*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
20578      &    VINT(149)*(1D0+VINT(149))
20579         ELSE
20580           XC2=4D0*CKIN(3)**2/VINT(2)
20581           IF(CKIN(3).LE.CKIN(5).OR.MINT(82).GE.2) XC2=0D0
20582         ENDIF
20583 
20584 C...Select impact parameter for hardest interaction.
20585         IF(MSTP(82).LE.2) RETURN
20586   142   IF(PYR(0)*PALLB.LT.PLOWB) THEN
20587 C...Treatment in low b region.
20588           MINT(39)=1
20589           B=BDIV*SQRT(PYR(0)) 
20590           IF(MSTP(82).EQ.3) THEN
20591             OV=EXP(-B**2)/PARU(2)
20592           ELSEIF(MSTP(82).EQ.4) THEN
20593             OV=(P83A*EXP(-MIN(50D0,B**2))+
20594      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
20595      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
20596           ELSE
20597             OV=EXP(-B**POWIP)/PARU(2)
20598           ENDIF  
20599           VINT(148)=OV/VNT147
20600           PACC=1D0-EXP(-MIN(50D0,PIK*OV))
20601           XT2=1D0
20602           XT2FAC=VNT146*VINT(148)*XSEC(96,1)/MAX(1D-10,SIGT(0,0,5))*
20603      &    VINT(149)*(1D0+VINT(149))
20604         ELSE
20605 C...Treatment in high b region.
20606           MINT(39)=2
20607           IF(MSTP(82).EQ.3) THEN
20608             B=SQRT(BDIV**2-LOG(PYR(0)))
20609             OV=EXP(-B**2)/PARU(2)
20610           ELSEIF(MSTP(82).EQ.4) THEN
20611             S4RNDM=PYR(0)*(S4A+S4B+S4C)
20612             IF(S4RNDM.LT.S4A) THEN
20613               B=SQRT(BDIV**2-LOG(PYR(0)))
20614             ELSEIF(S4RNDM.LT.S4A+S4B) THEN
20615               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2R)
20616             ELSE
20617               B=SQRT(BDIV**2-LOG(PYR(0))/CQ2I)
20618             ENDIF    
20619             OV=(P83A*EXP(-MIN(50D0,B**2))+
20620      &      P83B*CQ2R*EXP(-MIN(50D0,B**2*CQ2R))+
20621      &      P83C*CQ2I*EXP(-MIN(50D0,B**2*CQ2I)))/PARU(2)
20622           ELSEIF(PARP(83).GE.1.999D0) THEN
20623   144       B2RPW=B2RPDV-LOG(PYR(0))
20624             ACCIP=(B2RPW/B2RPDV)**RPWIP
20625             IF(ACCIP.LT.PYR(0)) GOTO 144
20626             OV=EXP(-B2RPW)/PARU(2)
20627             B=B2RPW**(1D0/POWIP)
20628           ELSE
20629   146       B2RPW=B2RPDV-2D0*LOG(PYR(0))
20630             ACCIP=(B2RPW/B2RPMX)**RPWIP*EXP(-0.5D0*(B2RPW-B2RPMX))
20631             IF(ACCIP.LT.PYR(0)) GOTO 146
20632             OV=EXP(-B2RPW)/PARU(2)
20633             B=B2RPW**(1D0/POWIP)
20634           ENDIF  
20635           VINT(148)=OV/VNT147
20636           PACC=(1D0-EXP(-MIN(50D0,PIK*OV)))/(PIK*OV)
20637         ENDIF
20638         IF(PACC.LT.PYR(0)) GOTO 142
20639         VINT(139)=B/BAVG
20640  
20641       ELSEIF(MMUL.EQ.3) THEN
20642 C...Low-pT or multiple interactions (first semihard interaction):
20643 C...choose xT2 according to dpT2/pT2**2*exp(-(sigma above pT2)/norm)
20644 C...or (MSTP(82)>=2) dpT2/(pT2+pT0**2)**2*exp(-....).
20645         ISUB=MINT(1)
20646         VINT(145)=VNT145
20647         VINT(146)=VNT146
20648         VINT(147)=VNT147
20649         IF(MSTP(82).LE.0) THEN
20650           XT2=0D0
20651         ELSEIF(MSTP(82).EQ.1) THEN
20652           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
20653 C...Use with "Sudakov" for low b values when impact parameter dependence.
20654         ELSEIF(MSTP(82).EQ.2.OR.MINT(39).EQ.1) THEN
20655           IF(XT2.LT.1D0.AND.EXP(-XT2FAC*XT2/(VINT(149)*(XT2+
20656      &    VINT(149)))).GT.PYR(0)) XT2=1D0
20657           IF(XT2.GE.1D0) THEN
20658             XT2=(1D0+VINT(149))*XT2FAC/(XT2FAC-(1D0+VINT(149))*LOG(1D0-
20659      &      PYR(0)*(1D0-EXP(-XT2FAC/(VINT(149)*(1D0+VINT(149)))))))-
20660      &      VINT(149)
20661           ELSE
20662             XT2=-XT2FAC/LOG(EXP(-XT2FAC/(XT2+VINT(149)))+PYR(0)*
20663      &      (EXP(-XT2FAC/VINT(149))-EXP(-XT2FAC/(XT2+VINT(149)))))-
20664      &      VINT(149)
20665           ENDIF
20666           XT2=MAX(0.01D0*VINT(149),XT2)
20667 C...Use without "Sudakov" for high b values when impact parameter dep.
20668         ELSE
20669           XT2=(XC2+VINT(149))*(1D0+VINT(149))/(1D0+VINT(149)-
20670      &    PYR(0)*(1D0-XC2))-VINT(149)
20671           XT2=MAX(0.01D0*VINT(149),XT2)
20672         ENDIF
20673         VINT(25)=XT2
20674  
20675 C...Low-pT: choose xT2, tau, y* and cos(theta-hat) fixed.
20676         IF(MSTP(82).LE.1.AND.XT2.LT.VINT(149)) THEN
20677           IF(MINT(82).EQ.1) NGEN(0,1)=NGEN(0,1)-MINT(143)
20678           IF(MINT(82).EQ.1) NGEN(ISUB,1)=NGEN(ISUB,1)-MINT(143)
20679           ISUB=95
20680           MINT(1)=ISUB
20681           VINT(21)=1D-12*VINT(149)
20682           VINT(22)=0D0
20683           VINT(23)=0D0
20684           VINT(25)=1D-12*VINT(149)
20685  
20686         ELSE
20687 C...Multiple interactions (first semihard interaction).
20688 C...Choose tau and y*. Calculate cos(theta-hat).
20689           IF(PYR(0).LE.COEF(ISUB,1)) THEN
20690             TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20691             TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20692           ELSE
20693             TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20694           ENDIF
20695           VINT(21)=TAU
20696           CALL PYKLIM(2)
20697           RYST=PYR(0)
20698           MYST=1
20699           IF(RYST.GT.COEF(ISUB,8)) MYST=2
20700           IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20701           CALL PYKMAP(2,MYST,PYR(0))
20702           VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20703         ENDIF
20704         VINT(71)=0.5D0*VINT(1)*SQRT(VINT(25))
20705  
20706 C...Store results of cross-section calculation.
20707       ELSEIF(MMUL.EQ.4) THEN
20708         ISUB=MINT(1)
20709         VINT(145)=VNT145
20710         VINT(146)=VNT146
20711         VINT(147)=VNT147
20712         XTS=VINT(25)
20713         IF(ISET(ISUB).EQ.1) XTS=VINT(21)
20714         IF(ISET(ISUB).EQ.2)
20715      &  XTS=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
20716         IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) XTS=VINT(26)
20717         RBIN=MAX(0.000001D0,MIN(0.999999D0,XTS*(1D0+VINT(149))/
20718      &  (XTS+VINT(149))))
20719         IRBIN=INT(1D0+20D0*RBIN)
20720         IF(ISUB.EQ.96.AND.MSTP(171).EQ.0) THEN
20721           NMUL(IRBIN)=NMUL(IRBIN)+1
20722           SIGM(IRBIN)=SIGM(IRBIN)+VINT(153)
20723         ENDIF
20724  
20725 C...Choose impact parameter if not already done.
20726       ELSEIF(MMUL.EQ.5) THEN
20727         ISUB=MINT(1)
20728         VINT(145)=VNT145
20729         VINT(146)=VNT146
20730         VINT(147)=VNT147
20731   150   IF(MINT(39).GT.0) THEN
20732         ELSEIF(MSTP(82).EQ.3) THEN
20733           EXPB2=PYR(0)
20734           B2=-LOG(PYR(0))
20735           VINT(148)=EXPB2/(PARU(2)*VNT147)
20736           VINT(139)=SQRT(B2)/BAVG
20737         ELSEIF(MSTP(82).EQ.4) THEN
20738           RTYPE=PYR(0)
20739           IF(RTYPE.LT.P83A) THEN
20740             B2=-LOG(PYR(0))
20741           ELSEIF(RTYPE.LT.P83A+P83B) THEN
20742             B2=-LOG(PYR(0))/CQ2R
20743           ELSE
20744             B2=-LOG(PYR(0))/CQ2I
20745           ENDIF
20746           VINT(148)=(P83A*EXP(-MIN(50D0,B2))+
20747      &    P83B*CQ2R*EXP(-MIN(50D0,B2*CQ2R))+
20748      &    P83C*CQ2I*EXP(-MIN(50D0,B2*CQ2I)))/(PARU(2)*VNT147)
20749           VINT(139)=SQRT(B2)/BAVG
20750         ELSEIF(PARP(83).GE.1.999D0) THEN
20751           POWIP=MAX(2D0,PARP(83))
20752           RPWIP=2D0/POWIP-1D0
20753           PROB1=POWIP/(2D0*EXP(-1D0)+POWIP)
20754   160     IF(PYR(0).LT.PROB1) THEN
20755             B2RPW=PYR(0)**(0.5D0*POWIP)
20756             ACCIP=EXP(-B2RPW)
20757           ELSE
20758             B2RPW=1D0-LOG(PYR(0))
20759             ACCIP=B2RPW**RPWIP
20760           ENDIF
20761           IF(ACCIP.LT.PYR(0)) GOTO 160
20762           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
20763           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
20764         ELSE
20765           POWIP=MAX(0.4D0,PARP(83))
20766           RPWIP=2D0/POWIP-1D0
20767           PROB1=RPWIP/(RPWIP+2D0**RPWIP*EXP(-RPWIP))
20768   170     IF(PYR(0).LT.PROB1) THEN
20769             B2RPW=2D0*RPWIP*PYR(0)
20770             ACCIP=(B2RPW/RPWIP)**RPWIP*EXP(RPWIP-B2RPW)
20771           ELSE
20772             B2RPW=2D0*(RPWIP-LOG(PYR(0)))
20773             ACCIP=(0.5D0*B2RPW/RPWIP)**RPWIP*EXP(RPWIP-0.5D0*B2RPW)
20774           ENDIF
20775           IF(ACCIP.LT .PYR(0)) GOTO 170
20776           VINT(148)=EXP(-B2RPW)/(PARU(2)*VNT147)
20777           VINT(139)=B2RPW**(1D0/POWIP)/BAVG
20778         ENDIF
20779  
20780 C...Multiple interactions (variable impact parameter) : reject with
20781 C...probability exp(-overlap*cross-section above pT/normalization).
20782 C...Does not apply to low-b region, where "Sudakov" already included.
20783         VINT(150)=1D0 
20784         IF(MINT(39).NE.1) THEN
20785           RNCOR=(IRBIN-20D0*RBIN)*NMUL(IRBIN)
20786           SIGCOR=(IRBIN-20D0*RBIN)*SIGM(IRBIN)
20787           DO 180 IBIN=IRBIN+1,20
20788             RNCOR=RNCOR+NMUL(IBIN)
20789             SIGCOR=SIGCOR+SIGM(IBIN)
20790   180     CONTINUE
20791           SIGABV=(SIGCOR/RNCOR)*VINT(149)*(1D0-XTS)/(XTS+VINT(149))
20792           IF(MSTP(171).EQ.1) SIGABV=SIGABV*VINT(2)/VINT(289)
20793           VINT(150)=EXP(-MIN(50D0,VNT146*VINT(148)*
20794      &    SIGABV/MAX(1D-10,SIGT(0,0,5))))
20795         ENDIF
20796         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUB.NE.11.AND.
20797      &  ISUB.NE.12.AND.ISUB.NE.13.AND.ISUB.NE.28.AND.ISUB.NE.53
20798      &  .AND.ISUB.NE.68.AND.ISUB.NE.95.AND.ISUB.NE.96)) THEN
20799           IF(VINT(150).LT.PYR(0)) GOTO 150
20800           VINT(150)=1D0
20801         ENDIF
20802  
20803 C...Generate additional multiple semihard interactions.
20804       ELSEIF(MMUL.EQ.6) THEN
20805  
20806 C...Save data for hardest initeraction, to be restored.
20807         ISUBSV=MINT(1)
20808         VINT(145)=VNT145
20809         VINT(146)=VNT146
20810         VINT(147)=VNT147
20811         M13SV=MINT(13)
20812         M14SV=MINT(14)
20813         M15SV=MINT(15)
20814         M16SV=MINT(16)
20815         M21SV=MINT(21)
20816         M22SV=MINT(22)
20817         DO 190 J=11,80
20818           VINTSV(J)=VINT(J)
20819   190   CONTINUE
20820         V141SV=VINT(141)
20821         V142SV=VINT(142)
20822  
20823 C...Store data on hardest interaction.
20824         XMI(1,1)=VINT(141)
20825         XMI(2,1)=VINT(142)
20826         PT2MI(1)=VINT(54)
20827         IMISEP(0)=MINT(84)
20828         IMISEP(1)=N
20829  
20830 C...Change process to generate; sum of x values so far.
20831         ISUB=96
20832         MINT(1)=96
20833         VINT(143)=1D0-VINT(141)
20834         VINT(144)=1D0-VINT(142)
20835         VINT(151)=0D0
20836         VINT(152)=0D0
20837  
20838 C...Initialize factors for PDF reshaping.
20839         DO 230 JS=1,2
20840           KFBEAM=MINT(10+JS)
20841           KFABM=IABS(KFBEAM)
20842           KFSBM=ISIGN(1,KFBEAM)
20843  
20844 C...Zero flavour content of incoming beam particle.
20845           KFIVAL(JS,1)=0
20846           KFIVAL(JS,2)=0
20847           KFIVAL(JS,3)=0
20848 C...Flavour content of baryon.
20849           IF(KFABM.GT.1000) THEN
20850             KFIVAL(JS,1)=KFSBM*MOD(KFABM/1000,10)
20851             KFIVAL(JS,2)=KFSBM*MOD(KFABM/100,10)
20852             KFIVAL(JS,3)=KFSBM*MOD(KFABM/10,10)
20853 C...Flavour content of pi+-, K+-.
20854           ELSEIF(KFABM.EQ.211) THEN
20855             KFIVAL(JS,1)=KFSBM*2
20856             KFIVAL(JS,2)=-KFSBM
20857           ELSEIF(KFABM.EQ.321) THEN
20858             KFIVAL(JS,1)=-KFSBM*3
20859             KFIVAL(JS,2)=KFSBM*2
20860 C...Flavour content of pi0, gamma, K0S, K0L not defined yet.
20861           ENDIF
20862  
20863 C...Zero initial valence and companion content.
20864           DO 200 IFL=-6,6
20865             NVC(JS,IFL)=0
20866   200     CONTINUE
20867  
20868 C...Initiate listing of all incoming partons from two sides.
20869           NMI(JS)=0
20870           DO 210 I=MINT(84)+1,N
20871             IF(K(I,3).EQ.MINT(83)+2+JS) THEN
20872               IMI(JS,1,1)=I
20873               IMI(JS,1,2)=0
20874             ENDIF
20875   210     CONTINUE
20876  
20877 C...Decide whether quarks in hard scattering were valence or sea.
20878           IFL=K(IMI(JS,1,1),2)
20879           IF (IABS(IFL).GT.6) GOTO 230
20880  
20881 C...Get PDFs at X and Q2 of the parton shower initiator for the
20882 C...hard scattering.
20883           X=VINT(140+JS)
20884           IF(MSTP(61).GE.1) THEN
20885             Q2=PARP(62)**2
20886           ELSE
20887             Q2=VINT(54)
20888           ENDIF
20889 C...Note: XPSVC = x*pdf.
20890           MINT(30)=JS
20891           CALL PYPDFU(KFBEAM,X,Q2,XPQ)
20892           SEA=XPSVC(IFL,-1)
20893           VAL=XPSVC(IFL,0)
20894  
20895 C...Decide (Extra factor x cancels in the division).
20896           RVCS=PYR(0)*(SEA+VAL)
20897           IVNOW=1
20898   220     IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
20899 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
20900             IVNOW=0
20901             IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
20902             IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
20903             IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
20904             IF(KFIVAL(JS,1).EQ.0) THEN
20905               IF(KFBEAM.EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
20906               IF(KFBEAM.EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
20907               IF((KFBEAM.EQ.130.OR.KFBEAM.EQ.310).AND.
20908      &        (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
20909             ENDIF
20910             IF(IVNOW.EQ.0) GOTO 220
20911 C...Mark valence.
20912             IMI(JS,1,2)=0
20913 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
20914             IF(KFIVAL(JS,1).EQ.0) THEN
20915               IF(KFBEAM.EQ.111.OR.KFBEAM.EQ.22) THEN
20916                 KFIVAL(JS,1)=IFL
20917                 KFIVAL(JS,2)=-IFL
20918               ELSEIF(KFBEAM.EQ.130.OR.KFBEAM.EQ.310) THEN
20919                 KFIVAL(JS,1)=IFL
20920                 IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
20921                 IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
20922               ENDIF
20923             ENDIF
20924  
20925 C...If sea, add opposite sign companion parton. Store X and I.
20926           ELSE
20927             NVC(JS,-IFL)=NVC(JS,-IFL)+1
20928             XASSOC(JS,-IFL,NVC(JS,-IFL))=X
20929 C...Set pointer to companion
20930             IMI(JS,1,2)=-NVC(JS,-IFL)
20931           ENDIF
20932   230   CONTINUE
20933  
20934 C...Update counter number of multiple interactions.
20935         NMI(1)=1
20936         NMI(2)=1
20937  
20938 C...Set up starting values for iteration in xT2.
20939         IF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
20940      &  ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
20941      &  ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
20942      &  ISUBSV.NE.96)) THEN
20943           XT2=(1D0-VINT(141))*(1D0-VINT(142))
20944         ELSE
20945           XT2=VINT(25)
20946           IF(ISET(ISUBSV).EQ.1) XT2=VINT(21)
20947           IF(ISET(ISUBSV).EQ.2)
20948      &    XT2=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
20949           IF(ISET(ISUBSV).GE.3.AND.ISET(ISUBSV).LE.5) XT2=VINT(26)
20950         ENDIF
20951         IF(MSTP(82).LE.1) THEN
20952           SIGRAT=XSEC(ISUB,1)/MAX(1D-10,VINT(315)*VINT(316)*SIGT(0,0,5))
20953           IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGRAT=SIGRAT*
20954      &    VINT(317)/(VINT(318)*VINT(320))
20955           XT2FAC=SIGRAT*VINT(149)/(1D0-VINT(149))
20956         ELSE
20957           XT2FAC=VNT146*VINT(148)*XSEC(ISUB,1)/
20958      &    MAX(1D-10,SIGT(0,0,5))*VINT(149)*(1D0+VINT(149))
20959         ENDIF
20960         VINT(63)=0D0
20961         VINT(64)=0D0
20962  
20963 C...Iterate downwards in xT2.
20964   240   IF((MINT(35).EQ.2.AND.MSTP(81).EQ.10).OR.ISUBSV.EQ.95) THEN
20965           XT2=0D0
20966           GOTO 440
20967         ELSEIF(MSTP(82).LE.1) THEN
20968           XT2=XT2FAC*XT2/(XT2FAC-XT2*LOG(PYR(0)))
20969           IF(XT2.LT.VINT(149)) GOTO 440
20970         ELSE
20971           IF(XT2.LE.0.01001D0*VINT(149)) GOTO 440
20972           XT2=XT2FAC*(XT2+VINT(149))/(XT2FAC-(XT2+VINT(149))*
20973      &    LOG(PYR(0)))-VINT(149)
20974           IF(XT2.LE.0D0) GOTO 440
20975           XT2=MAX(0.01D0*VINT(149),XT2)
20976         ENDIF
20977         VINT(25)=XT2
20978  
20979 C...Choose tau and y*. Calculate cos(theta-hat).
20980         IF(PYR(0).LE.COEF(ISUB,1)) THEN
20981           TAUT=(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)**PYR(0)
20982           TAU=XT2*(1D0+TAUT)**2/(4D0*TAUT)
20983         ELSE
20984           TAU=XT2*(1D0+TAN(PYR(0)*ATAN(SQRT(1D0/XT2-1D0)))**2)
20985         ENDIF
20986         VINT(21)=TAU
20987 C...New: require shat > 1.
20988         IF(TAU*VINT(2).LT.1D0) GOTO 240
20989         CALL PYKLIM(2)
20990         RYST=PYR(0)
20991         MYST=1
20992         IF(RYST.GT.COEF(ISUB,8)) MYST=2
20993         IF(RYST.GT.COEF(ISUB,8)+COEF(ISUB,9)) MYST=3
20994         CALL PYKMAP(2,MYST,PYR(0))
20995         VINT(23)=SQRT(MAX(0D0,1D0-XT2/TAU))*(-1)**INT(1.5D0+PYR(0))
20996  
20997 C...Check that x not used up. Accept or reject kinematical variables.
20998         X1M=SQRT(TAU)*EXP(VINT(22))
20999         X2M=SQRT(TAU)*EXP(-VINT(22))
21000         IF(VINT(143)-X1M.LT.0.01D0.OR.VINT(144)-X2M.LT.0.01D0) GOTO 240
21001         VINT(71)=0.5D0*VINT(1)*SQRT(XT2)
21002         CALL PYSIGH(NCHN,SIGS)
21003         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS*VINT(320)
21004         IF(SIGS.LT.XSEC(ISUB,1)*PYR(0)) GOTO 240
21005         IF(MINT(141).NE.0.OR.MINT(142).NE.0) SIGS=SIGS/VINT(320)
21006  
21007 C...Reset K, P and V vectors.
21008         DO 260 I=N+1,N+4
21009           DO 250 J=1,5
21010             K(I,J)=0
21011             P(I,J)=0D0
21012             V(I,J)=0D0
21013   250     CONTINUE
21014   260   CONTINUE
21015         PT=0.5D0*VINT(1)*SQRT(XT2)
21016  
21017 C...Choose flavour of reacting partons (and subprocess).
21018         RSIGS=SIGS*PYR(0)
21019         DO 270 ICHN=1,NCHN
21020           KFL1=ISIG(ICHN,1)
21021           KFL2=ISIG(ICHN,2)
21022           ICONMI=ISIG(ICHN,3)
21023           RSIGS=RSIGS-SIGH(ICHN)
21024           IF(RSIGS.LE.0D0) GOTO 280
21025   270   CONTINUE
21026  
21027 C...Reassign to appropriate process codes.
21028   280   ISUBMI=ICONMI/10
21029         ICONMI=MOD(ICONMI,10)
21030  
21031 C...Choose new quark flavour for annihilation graphs
21032         IF(ISUBMI.EQ.12.OR.ISUBMI.EQ.53) THEN
21033           SH=TAU*VINT(2)
21034           CALL PYWIDT(21,SH,WDTP,WDTE)
21035   290     RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0)
21036           DO 300 I=1,MDCY(21,3)
21037             KFLF=KFDP(I+MDCY(21,2)-1,1)
21038             RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4))
21039             IF(RKFL.LE.0D0) GOTO 310
21040   300     CONTINUE
21041   310     IF(ISUBMI.EQ.53.AND.ICONMI.LE.2) THEN
21042             IF(KFLF.GE.4) GOTO 290
21043           ELSEIF(ISUBMI.EQ.53.AND.ICONMI.LE.4) THEN
21044             KFLF=4
21045             ICONMI=ICONMI-2
21046           ELSEIF(ISUBMI.EQ.53) THEN
21047             KFLF=5
21048             ICONMI=ICONMI-4
21049           ENDIF
21050         ENDIF
21051  
21052 C...Final state flavours and colour flow: default values
21053         JS=1
21054         KFL3=KFL1
21055         KFL4=KFL2
21056         KCC=20
21057         KCS=ISIGN(1,KFL1)
21058  
21059         IF(ISUBMI.EQ.11) THEN
21060 C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2
21061           KCC=ICONMI
21062           IF(KFL1*KFL2.LT.0) KCC=KCC+2
21063  
21064         ELSEIF(ISUBMI.EQ.12) THEN
21065 C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2
21066           KFL3=ISIGN(KFLF,KFL1)
21067           KFL4=-KFL3
21068           KCC=4
21069  
21070         ELSEIF(ISUBMI.EQ.13) THEN
21071 C...f + fbar -> g + g; th arbitrary
21072           KFL3=21
21073           KFL4=21
21074           KCC=ICONMI+4
21075  
21076         ELSEIF(ISUBMI.EQ.28) THEN
21077 C...f + g -> f + g; th = (p(f)-p(f))**2
21078           IF(KFL1.EQ.21) JS=2
21079           KCC=ICONMI+6
21080           IF(KFL1.EQ.21) KCC=KCC+2
21081           IF(KFL1.NE.21) KCS=ISIGN(1,KFL1)
21082           IF(KFL2.NE.21) KCS=ISIGN(1,KFL2)
21083  
21084         ELSEIF(ISUBMI.EQ.53) THEN
21085 C...g + g -> f + fbar; th arbitrary
21086           KCS=(-1)**INT(1.5D0+PYR(0))
21087           KFL3=ISIGN(KFLF,KCS)
21088           KFL4=-KFL3
21089           KCC=ICONMI+10
21090  
21091         ELSEIF(ISUBMI.EQ.68) THEN
21092 C...g + g -> g + g; th arbitrary
21093           KCC=ICONMI+12
21094           KCS=(-1)**INT(1.5D0+PYR(0))
21095         ENDIF
21096  
21097 C...Store flavours of scattering.
21098         MINT(13)=KFL1
21099         MINT(14)=KFL2
21100         MINT(15)=KFL1
21101         MINT(16)=KFL2
21102         MINT(21)=KFL3
21103         MINT(22)=KFL4
21104  
21105 C...Set flavours and mothers of scattering partons.
21106         K(N+1,1)=14
21107         K(N+2,1)=14
21108         K(N+3,1)=3
21109         K(N+4,1)=3
21110         K(N+1,2)=KFL1
21111         K(N+2,2)=KFL2
21112         K(N+3,2)=KFL3
21113         K(N+4,2)=KFL4
21114         K(N+1,3)=MINT(83)+1
21115         K(N+2,3)=MINT(83)+2
21116         K(N+3,3)=N+1
21117         K(N+4,3)=N+2
21118  
21119 C...Store colour connection indices.
21120         DO 320 J=1,2
21121           JC=J
21122           IF(KCS.EQ.-1) JC=3-J
21123           IF(ICOL(KCC,1,JC).NE.0) K(N+1,J+3)=N+ICOL(KCC,1,JC)
21124           IF(ICOL(KCC,2,JC).NE.0) K(N+2,J+3)=N+ICOL(KCC,2,JC)
21125           IF(ICOL(KCC,3,JC).NE.0) K(N+3,J+3)=MSTU(5)*(N+ICOL(KCC,3,JC))
21126           IF(ICOL(KCC,4,JC).NE.0) K(N+4,J+3)=MSTU(5)*(N+ICOL(KCC,4,JC))
21127   320   CONTINUE
21128  
21129 C...Store incoming and outgoing partons in their CM-frame.
21130         SHR=SQRT(TAU)*VINT(1)
21131         P(N+1,3)=0.5D0*SHR
21132         P(N+1,4)=0.5D0*SHR
21133         P(N+2,3)=-0.5D0*SHR
21134         P(N+2,4)=0.5D0*SHR
21135         P(N+3,5)=PYMASS(K(N+3,2))
21136         P(N+4,5)=PYMASS(K(N+4,2))
21137         IF(P(N+3,5)+P(N+4,5).GE.SHR) GOTO 240
21138         P(N+3,4)=0.5D0*(SHR+(P(N+3,5)**2-P(N+4,5)**2)/SHR)
21139         P(N+3,3)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,5)**2))
21140         P(N+4,4)=SHR-P(N+3,4)
21141         P(N+4,3)=-P(N+3,3)
21142  
21143 C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4)
21144         PHI=PARU(2)*PYR(0)
21145         CALL PYROBO(N+3,N+4,ACOS(VINT(23)),PHI,0D0,0D0,0D0)
21146  
21147 C...Set up default values before showers.
21148         MINT(31)=MINT(31)+1
21149         IPU1=N+1
21150         IPU2=N+2
21151         IPU3=N+3
21152         IPU4=N+4
21153         VINT(141)=VINT(41)
21154         VINT(142)=VINT(42)
21155         N=N+4
21156  
21157 C...Showering of initial state partons (optional).
21158 C...Note: no showering of final state partons here; it comes later.
21159         IF(MSTP(84).GE.1.AND.MSTP(61).GE.1) THEN
21160           MINT(51)=0
21161           ALAMSV=PARJ(81)
21162           PARJ(81)=PARP(72)
21163           NSAV=N
21164           DO 340 I=1,4
21165             DO 330 J=1,5
21166               KSAV(I,J)=K(N-4+I,J)
21167               PSAV(I,J)=P(N-4+I,J)
21168   330       CONTINUE
21169   340     CONTINUE
21170           CALL PYSSPA(IPU1,IPU2)
21171           PARJ(81)=ALAMSV
21172 C...If shower failed then restore to situation before shower.
21173           IF(MINT(51).GE.1) THEN
21174             N=NSAV
21175             DO 360 I=1,4
21176               DO 350 J=1,5
21177                 K(N-4+I,J)=KSAV(I,J)
21178                 P(N-4+I,J)=PSAV(I,J)
21179   350         CONTINUE
21180   360       CONTINUE
21181             IPU1=N-3
21182             IPU2=N-2
21183             VINT(141)=VINT(41)
21184             VINT(142)=VINT(42)
21185           ENDIF
21186         ENDIF
21187  
21188 C...Keep track of loose colour ends and information on scattering.
21189   370   IMI(1,MINT(31),1)=IPU1
21190         IMI(2,MINT(31),1)=IPU2
21191         IMI(1,MINT(31),2)=0
21192         IMI(2,MINT(31),2)=0
21193         XMI(1,MINT(31))=VINT(141)
21194         XMI(2,MINT(31))=VINT(142)
21195         PT2MI(MINT(31))=VINT(54)
21196         IMISEP(MINT(31))=N
21197  
21198 C...Decide whether quarks in last scattering were valence, companion or
21199 C...sea.
21200         DO 430 JS=1,2
21201           KFBEAM=MINT(10+JS)
21202           KFSBM=ISIGN(1,MINT(10+JS))
21203           IFL=K(IMI(JS,MINT(31),1),2)
21204           IMI(JS,MINT(31),2)=0
21205           IF (IABS(IFL).GT.6) GOTO 430
21206  
21207 C...Get PDFs at X and Q2 of the parton shower initiator for the
21208 C...last scattering. At this point VINT(143:144) do not yet
21209 C...include the scattered x values VINT(141:142).
21210           X=VINT(140+JS)/VINT(142+JS)
21211           IF(MSTP(84).GE.1.AND.MSTP(61).GE.1) THEN
21212             Q2=PARP(62)**2
21213           ELSE
21214             Q2=VINT(54)
21215           ENDIF
21216 C...Note: XPSVC = x*pdf.
21217           MINT(30)=JS
21218           CALL PYPDFU(KFBEAM,X,Q2,XPQ)
21219           SEA=XPSVC(IFL,-1)
21220           VAL=XPSVC(IFL,0)
21221           CMP=0D0
21222           DO 380 IVC=1,NVC(JS,IFL)
21223             CMP=CMP+XPSVC(IFL,IVC)
21224   380     CONTINUE
21225  
21226 C...Decide (Extra factor x cancels in the dvision).
21227           RVCS=PYR(0)*(SEA+VAL+CMP)
21228           IVNOW=1
21229   390     IF (RVCS.LE.VAL.AND.IVNOW.GE.1) THEN
21230 C...Safety check that valence present; pi0/gamma/K0S/K0L special cases.
21231             IVNOW=0
21232             IF(KFIVAL(JS,1).EQ.IFL) IVNOW=IVNOW+1
21233             IF(KFIVAL(JS,2).EQ.IFL) IVNOW=IVNOW+1
21234             IF(KFIVAL(JS,3).EQ.IFL) IVNOW=IVNOW+1
21235             IF(KFIVAL(JS,1).EQ.0) THEN
21236               IF(KFBEAM.EQ.111.AND.IABS(IFL).LE.2) IVNOW=1
21237               IF(KFBEAM.EQ.22.AND.IABS(IFL).LE.5) IVNOW=1
21238               IF((KFBEAM.EQ.130.OR.KFBEAM.EQ.310).AND.
21239      &        (IABS(IFL).EQ.1.OR.IABS(IFL).EQ.3)) IVNOW=1
21240             ELSE
21241               DO 400 I1=1,NMI(JS)
21242                 IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
21243      &            IVNOW=IVNOW-1
21244   400         CONTINUE
21245             ENDIF
21246             IF(IVNOW.EQ.0) GOTO 390
21247 C...Mark valence.
21248             IMI(JS,MINT(31),2)=0
21249 C...Sets valence content of gamma, pi0, K0S, K0L if not done.
21250             IF(KFIVAL(JS,1).EQ.0) THEN
21251               IF(KFBEAM.EQ.111.OR.KFBEAM.EQ.22) THEN
21252                 KFIVAL(JS,1)=IFL
21253                 KFIVAL(JS,2)=-IFL
21254               ELSEIF(KFBEAM.EQ.130.OR.KFBEAM.EQ.310) THEN
21255                 KFIVAL(JS,1)=IFL
21256                 IF(IABS(IFL).EQ.1) KFIVAL(JS,2)=ISIGN(3,-IFL)
21257                 IF(IABS(IFL).NE.1) KFIVAL(JS,2)=ISIGN(1,-IFL)
21258               ENDIF
21259             ENDIF
21260  
21261           ELSEIF (RVCS.LE.VAL+SEA.OR.NVC(JS,IFL).EQ.0) THEN
21262 C...If sea, add opposite sign companion parton. Store X and I.
21263             NVC(JS,-IFL)=NVC(JS,-IFL)+1
21264             XASSOC(JS,-IFL,NVC(JS,-IFL))=X
21265 C...Set pointer to companion
21266             IMI(JS,MINT(31),2)=-NVC(JS,-IFL)
21267           ELSE
21268 C...If companion, decide which one.
21269             CMPSUM=VAL+SEA
21270             ISEL=0
21271   410       ISEL=ISEL+1
21272             CMPSUM=CMPSUM+XPSVC(IFL,ISEL)
21273             IF (RVCS.GT.CMPSUM.AND.ISEL.LT.NVC(JS,IFL)) GOTO 410
21274 C...Find original sea (anti-)quark:
21275             IASSOC=0
21276             DO 420 I1=1,NMI(JS)
21277               IF (K(IMI(JS,I1,1),2).NE.-IFL) GOTO 420
21278               IF (-IMI(JS,I1,2).EQ.ISEL) THEN
21279                 IMI(JS,MINT(31),2)=IMI(JS,I1,1)
21280                 IMI(JS,I1,2)=IMI(JS,MINT(31),1)
21281               ENDIF
21282   420       CONTINUE
21283 C...Change X to what associated companion had, so that the correct
21284 C...amount of momentum can be subtracted from the companion sum below.
21285             X=XASSOC(JS,IFL,ISEL)
21286 C...Mark companion read.
21287             XASSOC(JS,IFL,ISEL)=0D0
21288           ENDIF
21289  430    CONTINUE
21290  
21291 C...Global statistics.
21292         MINT(351)=MINT(351)+1
21293         VINT(351)=VINT(351)+PT
21294         IF (MINT(351).EQ.1) VINT(356)=PT
21295  
21296 C...Update remaining energy and other counters.
21297         IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
21298           CALL PYERRM(11,'(PYMIGN:) no more memory left in PYJETS')
21299           MINT(51)=1
21300           RETURN
21301         ENDIF
21302         NMI(1)=NMI(1)+1
21303         NMI(2)=NMI(2)+1
21304         VINT(151)=VINT(151)+VINT(41)
21305         VINT(152)=VINT(152)+VINT(42)
21306         VINT(143)=VINT(143)-VINT(141)
21307         VINT(144)=VINT(144)-VINT(142)
21308  
21309 C...Iterate, with more interactions allowed.
21310         IF(MINT(31).LT.240) GOTO 240
21311  440    CONTINUE
21312  
21313 C...Restore saved quantities for hardest interaction.
21314         MINT(1)=ISUBSV
21315         MINT(13)=M13SV
21316         MINT(14)=M14SV
21317         MINT(15)=M15SV
21318         MINT(16)=M16SV
21319         MINT(21)=M21SV
21320         MINT(22)=M22SV
21321         DO 450 J=11,80
21322           VINT(J)=VINTSV(J)
21323   450   CONTINUE
21324         VINT(141)=V141SV
21325         VINT(142)=V142SV
21326  
21327       ENDIF
21328  
21329 C...Format statements for printout.
21330  5000 FORMAT(/1X,'****** PYMIGN: initialization of multiple inter',
21331      &'actions for MSTP(82) =',I2,' ******')
21332  5100 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
21333      &D9.2,' mb: rejected')
21334  5200 FORMAT(8X,'pT0 =',F5.2,' GeV gives sigma(parton-parton) =',1P,
21335      &D9.2,' mb: accepted')
21336  
21337       RETURN
21338       END
21339  
21340 C*********************************************************************
21341  
21342 C...PYMIHK
21343 C...Finds left-behind remnant flavour content and hooks up
21344 C...the colour flow between the hard scattering and remnants
21345  
21346       SUBROUTINE PYMIHK
21347  
21348 C...Double precision and integer declarations.
21349       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
21350       IMPLICIT INTEGER(I-N)
21351       INTEGER PYK,PYCHGE,PYCOMP
21352 C...The event record
21353       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
21354 C...Parameters
21355       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
21356       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
21357       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
21358       COMMON/PYINT1/MINT(400),VINT(400)
21359 C...The common block of dangling ends
21360       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
21361      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
21362      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
21363       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINTM/
21364 C...Local variables
21365       PARAMETER (NERSIZ=4000)
21366       COMMON /PYCBLS/MCO(NERSIZ,2),NCC,JCCO(NERSIZ,2),JCCN(NERSIZ,2)
21367      &     ,MACCPT
21368       COMMON /PYCTAG/NCT,MCT(NERSIZ,2)
21369       SAVE /PYCBLS/,/PYCTAG/
21370       DIMENSION JST(2,3),IV(2,3),IDQ(3),NVSUM(2),NBRTOT(2),NG(2)
21371      &     ,ITJUNC(2),MOUT(2),INSR(1000,3),ISTR(6),YMI(240)
21372       DATA NERRPR/0/
21373       SAVE NERRPR
21374       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)
21375  
21376 C...Set up error checkers
21377       IBOOST=0
21378  
21379 C...Initialize colour arrays: MCO (Original) and MCT (New)
21380       DO 110 I=MINT(84)+1,NERSIZ
21381         DO 100 JC=1,2
21382           MCT(I,JC)=0
21383           MCO(I,JC)=0
21384   100   CONTINUE
21385 C...Also zero colour tracing information, if existed.
21386         IF (I.LE.N) THEN
21387           K(I,4)=MOD(K(I,4),MSTU(5)**2)
21388           K(I,5)=MOD(K(I,5),MSTU(5)**2)
21389         ENDIF
21390   110 CONTINUE
21391  
21392 C...Initialize colour tag collapse arrays:
21393 C...JCCO (Original) and JCCN (New).
21394       DO 130 MG=MINT(84)+1,NERSIZ
21395         DO 120 JC=1,2
21396           JCCO(MG,JC)=0
21397           JCCN(MG,JC)=0
21398   120   CONTINUE
21399   130 CONTINUE
21400  
21401 C...Zero gluon insertion array
21402       DO 150 IM=1,1000
21403         DO 140 J=1,3
21404           INSR(IM,J)=0
21405   140   CONTINUE
21406   150 CONTINUE
21407  
21408 C...Compute hard scattering system rapidities
21409       IF (MSTP(89).EQ.1) THEN
21410         DO 160 IM=1,240
21411           IF (IM.LE.MINT(31)) THEN
21412             YMI(IM)=LOG(XMI(1,IM)/XMI(2,IM))
21413           ELSE
21414 C...Set (unsigned) rapidity = 100 for beam remnant systems.
21415             YMI(IM)=100D0
21416           ENDIF
21417   160   CONTINUE
21418       ENDIF
21419  
21420 C...Treat each side separately
21421       DO 290 JS=1,2
21422  
21423 C...Initialize side.
21424         NG(JS)=0
21425         JV=0
21426         KFS=ISIGN(1,MINT(10+JS))
21427  
21428 C...Set valence content of pi0, gamma, K0S, K0L if not yet done.
21429         IF(KFIVAL(JS,1).EQ.0) THEN
21430           IF(MINT(10+JS).EQ.111) THEN
21431             KFIVAL(JS,1)=INT(1.5D0+PYR(0))
21432             KFIVAL(JS,2)=-KFIVAL(JS,1)
21433           ELSEIF(MINT(10+JS).EQ.22) THEN
21434             PYRKF=PYR(0)
21435             KFIVAL(JS,1)=1
21436             IF(PYRKF.GT.0.1D0) KFIVAL(JS,1)=2
21437             IF(PYRKF.GT.0.5D0) KFIVAL(JS,1)=3
21438             IF(PYRKF.GT.0.6D0) KFIVAL(JS,1)=4
21439             KFIVAL(JS,2)=-KFIVAL(JS,1)
21440           ELSEIF(MINT(10+JS).EQ.130.OR.MINT(10+JS).EQ.310) THEN
21441             IF(PYR(0).GT.0.5D0) THEN
21442               KFIVAL(JS,1)=1
21443               KFIVAL(JS,2)=-3
21444             ELSE
21445               KFIVAL(JS,1)=3
21446               KFIVAL(JS,2)=-1
21447             ENDIF
21448           ENDIF
21449         ENDIF
21450  
21451 C...Initialize beam remnant sea and valence content flavour by flavour.
21452         NVSUM(JS)=0
21453         NBRTOT(JS)=0
21454         DO 210 JFA=1,6
21455 C...Count up original number of JFA valence quarks and antiquarks.
21456           NVALQ=0
21457           NVALQB=0
21458           NSEA=0
21459           DO 170 J=1,3
21460             IF(KFIVAL(JS,J).EQ.JFA) NVALQ=NVALQ+1
21461             IF(KFIVAL(JS,J).EQ.-JFA) NVALQB=NVALQB+1
21462   170     CONTINUE
21463           NVSUM(JS)=NVSUM(JS)+NVALQ+NVALQB
21464 C...Subtract kicked out valence and determine sea from flavour cons.
21465           DO 180 IM=1,NMI(JS)
21466             IFL = K(IMI(JS,IM,1),2)
21467             IFA = IABS(IFL)
21468             IFS = ISIGN(1,IFL)
21469             IF (IFL.EQ.JFA.AND.IMI(JS,IM,2).EQ.0) THEN
21470 C...Subtract K.O. valence quark from remainder.
21471               NVALQ=NVALQ-1
21472               JV=NVSUM(JS)-NVALQ-NVALQB
21473               IV(JS,JV)=IMI(JS,IM,1)
21474             ELSEIF (IFL.EQ.-JFA.AND.IMI(JS,IM,2).EQ.0) THEN
21475 C...Subtract K.O. valence antiquark from remainder.
21476               NVALQB=NVALQB-1
21477               JV=NVSUM(JS)-NVALQ-NVALQB
21478               IV(JS,JV)=IMI(JS,IM,1)
21479             ELSEIF (IFA.EQ.JFA) THEN
21480 C...Outside sea without companion: add opposite sea flavour inside.
21481               IF (IMI(JS,IM,2).LT.0) NSEA=NSEA-IFS
21482             ENDIF
21483   180     CONTINUE
21484 C...Check if space left in PYJETS for additional BR flavours
21485           NFLSUM=IABS(NSEA)+NVALQ+NVALQB
21486           NBRTOT(JS)=NBRTOT(JS)+NFLSUM
21487           IF (N+NFLSUM+1.GT.MSTU(4)) THEN
21488             CALL PYERRM(11,'(PYMIHK:) no more memory left in PYJETS')
21489             MINT(51)=1
21490             RETURN
21491           ENDIF
21492 C...Add required val+sea content to beam remnant.
21493           IF (NFLSUM.GT.0) THEN
21494             DO 200 IA=1,NFLSUM
21495 C...Insert beam remnant quark as p.t. symbolic parton in ER.
21496               N=N+1
21497               DO 190 IX=1,5
21498                 K(N,IX)=0
21499                 P(N,IX)=0D0
21500                 V(N,IX)=0D0
21501   190         CONTINUE
21502               K(N,1)=3
21503               K(N,2)=ISIGN(JFA,NSEA)
21504               IF (IA.LE.NVALQ) K(N,2)=JFA
21505               IF (IA.GT.NVALQ.AND.IA.LE.NVALQ+NVALQB) K(N,2)=-JFA
21506               K(N,3)=MINT(83)+JS
21507 C...Also update NMI, IMI, and IV arrays.
21508               NMI(JS)=NMI(JS)+1
21509               IMI(JS,NMI(JS),1)=N
21510               IMI(JS,NMI(JS),2)=-1
21511               IF (IA.LE.NVALQ+NVALQB) THEN
21512                 IMI(JS,NMI(JS),2)=0
21513                 JV=JV+1
21514                 IV(JS,JV)=IMI(JS,NMI(JS),1)
21515               ENDIF
21516   200       CONTINUE
21517           ENDIF
21518   210   CONTINUE
21519  
21520         IM=0
21521   220   IM=IM+1
21522         IF (IM.LE.NMI(JS)) THEN
21523           IF (K(IMI(JS,IM,1),2).EQ.21) THEN
21524             NG(JS)=NG(JS)+1
21525 C...Add fictitious parent gluons for companion pairs.
21526           ELSEIF (IMI(JS,IM,2).NE.0.AND.K(IMI(JS,IM,1),2).GT.0) THEN
21527 C...Randomly assign companions to sea quarks which have none.
21528             IF (IMI(JS,IM,2).LT.0) THEN
21529               IMC=PYR(0)*NMI(JS)
21530   230         IMC=MOD(IMC,NMI(JS))+1
21531               IF (K(IMI(JS,IMC,1),2).NE.-K(IMI(JS,IM,1),2)) GOTO 230
21532               IF (IMI(JS,IMC,2).GE.0) GOTO 230
21533               IMI(JS, IM,2) = IMI(JS,IMC,1)
21534               IMI(JS,IMC,2) = IMI(JS, IM,1)
21535             ENDIF
21536 C...Add fictitious parent gluon
21537             N=N+1
21538             DO 240 IX=1,5
21539               K(N,IX)=0
21540               P(N,IX)=0D0
21541               V(N,IX)=0D0
21542   240       CONTINUE
21543             K(N,1)=14
21544             K(N,2)=21
21545             K(N,3)=MINT(83)+JS
21546 C...Set gluon (anti-)colour daughter pointers
21547             K(N,4)=IMI(JS, IM,1)
21548             K(N,5)=IMI(JS, IM,2)
21549 C...Set quark (anti-)colour parent pointers
21550             K(IMI(JS, IM,2),5)=K(IMI(JS, IM,2),5)+MSTU(5)*N
21551             K(IMI(JS, IM,1),4)=K(IMI(JS, IM,1),4)+MSTU(5)*N
21552 C...Add gluon to IMI
21553             NMI(JS)=NMI(JS)+1
21554             IMI(JS,NMI(JS),1)=N
21555             IMI(JS,NMI(JS),2)=0
21556           ENDIF
21557           GOTO 220
21558         ENDIF
21559  
21560 C...If incoming (anti-)baryon, insert inside (anti-)junction.
21561 C...Set up initial v-v-j-v configuration. Otherwise set up
21562 C...mesonic v-vbar configuration
21563         IF (IABS(MINT(10+JS)).GT.1000) THEN
21564 C...Determine junction type (1: B=1 2: B=-1)
21565           ITJUNC(JS) = (3-KFS)/2
21566 C...Insert junction.
21567           N=N+1
21568           DO 250 IX=1,5
21569             K(N,IX)=0
21570             P(N,IX)=0D0
21571             V(N,IX)=0D0
21572   250     CONTINUE
21573 C...Set special junction codes:
21574           K(N,1)=42
21575           K(N,2)=88
21576 C...Set parent to side.
21577           K(N,3)=MINT(83)+JS
21578           K(N,4)=ITJUNC(JS)*MSTU(5)
21579           K(N,5)=0
21580 C...Connect valence quarks to junction.
21581           MOUT(JS)=0
21582           MANTI=ITJUNC(JS)-1
21583 C...Set (anti)colour mother = junction.
21584           DO 260 JV=1,3
21585             K(IV(JS,JV),4+MANTI)=MOD(K(IV(JS,JV),4+MANTI),MSTU(5))
21586      &           +MSTU(5)*N
21587 C...Keep track of partons adjacent to junction:
21588             JST(JS,JV)=IV(JS,JV)
21589   260     CONTINUE
21590         ELSE
21591 C...Mesons: set up initial q-qbar topology
21592           ITJUNC(JS)=0
21593           IF (K(IV(JS,1),2).GT.0) THEN
21594             IQ=IV(JS,1)
21595             IQBAR=IV(JS,2)
21596           ELSE
21597             IQ=IV(JS,2)
21598             IQBAR=IV(JS,1)
21599           ENDIF
21600           IV(JS,3)=0
21601           JST(JS,1)=IQ
21602           JST(JS,2)=IQBAR
21603           JST(JS,3)=0
21604           K(IQ,4)=MOD(K(IQ,4),MSTU(5))+MSTU(5)*IQBAR
21605           K(IQBAR,5)=MOD(K(IQBAR,5),MSTU(5))+MSTU(5)*IQ
21606 C...Special for mesons. Insert gluon if BR empty.
21607           IF (NBRTOT(JS).EQ.0) THEN
21608             N=N+1
21609             DO 270 IX=1,5
21610               K(N,IX)=0
21611               P(N,IX)=0D0
21612               V(N,IX)=0D0
21613   270       CONTINUE
21614             K(N,1)=3
21615             K(N,2)=21
21616             K(N,3)=MINT(83)+JS
21617             K(N,4)=0
21618             K(N,5)=0
21619             NBRTOT(JS)=1
21620             NG(JS)=NG(JS)+1
21621 C...Add gluon to IMI
21622             NMI(JS)=NMI(JS)+1
21623             IMI(JS,NMI(JS),1)=N
21624             IMI(JS,NMI(JS),2)=0
21625           ENDIF
21626           MOUT(JS)=0
21627         ENDIF
21628  
21629 C...Count up number of valence quarks outside BR.
21630         DO 280 JV=1,3
21631           IF (JST(JS,JV).LE.MINT(53).AND.JST(JS,JV).GT.0)
21632      &         MOUT(JS)=MOUT(JS)+1
21633   280   CONTINUE
21634  
21635   290 CONTINUE
21636  
21637 C...Now both sides have been prepared in an initial vvjv (baryonic) or
21638 C...v(g)vbar (mesonic) configuration.
21639  
21640 C...Create colour line tags starting from initiators.
21641       NCT=0
21642       DO 320 IM=1,MINT(31)
21643 C...Consider each side in turn.
21644         DO 310 JS=1,2
21645           I1=IMI(JS,IM,1)
21646           I2=IMI(3-JS,IM,1)
21647           DO 300 JCS=4,5
21648             IF (K(I1,2).NE.21.AND.(9-2*JCS).NE.ISIGN(1,K(I1,2)))
21649      &           GOTO 300
21650             IF (K(I1,JCS)/MSTU(5)**2.NE.0) GOTO 300
21651  
21652             KCS=JCS
21653             CALL PYCTTR(I1,KCS,I2)
21654             IF(MINT(51).NE.0) RETURN
21655  
21656   300     CONTINUE
21657   310   CONTINUE
21658   320 CONTINUE
21659  
21660       DO 340 JS=1,2
21661 C...Create colour tags for beam remnant partons.
21662         DO 330 IM=MINT(31)+1,NMI(JS)
21663           IP=IMI(JS,IM,1)
21664           IF (K(IP,2).NE.21) THEN
21665             JC=(3-ISIGN(1,K(IP,2)))/2
21666             IF (MCT(IP,JC).EQ.0) THEN
21667               NCT=NCT+1
21668               MCT(IP,JC)=NCT
21669             ENDIF
21670           ELSE
21671 C...Gluons
21672             ICD=K(IP,4)
21673             IAD=K(IP,5)
21674             IF (ICD.NE.0) THEN
21675 C...Fictituous gluons just inherit from their quark daughters.
21676               ICC=MCT(ICD,1)
21677               IAC=MCT(IAD,2)
21678             ELSE
21679 C...Real beam remnant gluons get their own colours
21680               ICC=NCT+1
21681               IAC=NCT+2
21682               NCT=NCT+2
21683             ENDIF
21684             MCT(IP,1)=ICC
21685             MCT(IP,2)=IAC
21686           ENDIF
21687   330   CONTINUE
21688   340 CONTINUE
21689  
21690 C...Create colour tags for colour lines which are detached from the
21691 C...initial state.
21692  
21693       DO 360 MQGST=1,2
21694         DO 350 I=MINT(84)+1,N
21695  
21696 C...Look for coloured string endpoint, or (later) leftover gluon.
21697           IF (K(I,1).NE.3) GOTO 350
21698           KC=PYCOMP(K(I,2))
21699           IF(KC.EQ.0) GOTO 350
21700           KQ=KCHG(KC,2)
21701           IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 350
21702  
21703 C...Pick up loose string end with no previous tag.
21704           KCS=4
21705           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
21706           IF(MCT(I,KCS-3).NE.0) GOTO 350
21707  
21708           CALL PYCTTR(I,KCS,I)
21709           IF(MINT(51).NE.0) RETURN
21710  
21711   350   CONTINUE
21712   360 CONTINUE
21713  
21714 C...Store original colour tags
21715       DO 370 I=MINT(84)+1,N
21716         MCO(I,1)=MCT(I,1)
21717         MCO(I,2)=MCT(I,2)
21718   370 CONTINUE
21719  
21720 C...Iteratively add gluons to already existing string pieces, enforcing
21721 C...various possible orderings, and rejecting insertions that would give
21722 C...rise to singlet gluons.
21723 C...<kappa tau> normalization.
21724       RM0=1.5D0
21725       MRETRY=0
21726       PARP80=PARP(80)
21727  
21728 C...Set up simplified kinematics.
21729 C...Boost hard interaction systems.
21730       IBOOST=IBOOST+1
21731       DO 380 IM=1,MINT(31)
21732         BETA=(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
21733         CALL PYROBO(IMISEP(IM-1)+1,IMISEP(IM),0D0,0D0,0D0,0D0,BETA)
21734   380 CONTINUE
21735 C...Assign preliminary beam remnant momenta.
21736       DO 390 I=MINT(53)+1,N
21737         JS=K(I,3)
21738         P(I,1)=0D0
21739         P(I,2)=0D0
21740         IF (K(I,2).NE.88) THEN
21741           P(I,4)=0.5D0*VINT(142+JS)*VINT(1)/MAX(1,NMI(JS)-MINT(31))
21742           P(I,3)=P(I,4)
21743           IF (JS.EQ.2) P(I,3)=-P(I,3)
21744         ELSE
21745 C...Junctions are wildcards for the present.
21746           P(I,4)=0D0
21747           P(I,3)=0D0
21748         ENDIF
21749   390 CONTINUE
21750  
21751 C...Reset colour processing information.
21752   400 DO 410 I=MINT(84)+1,N
21753         K(I,4)=MOD(K(I,4),MSTU(5)**2)
21754         K(I,5)=MOD(K(I,5),MSTU(5)**2)
21755   410 CONTINUE
21756  
21757       NCC=0
21758       DO 430 JS=1,2
21759 C...If meson,  without gluon in BR, collapse q-qbar colour tags:
21760         IF (ITJUNC(JS).EQ.0) THEN
21761           JC1=MCT(JST(JS,1),1)
21762           JC2=MCT(JST(JS,2),2)
21763           NCC=NCC+1
21764           JCCO(NCC,1)=MAX(JC1,JC2)
21765           JCCO(NCC,2)=MIN(JC1,JC2)
21766 C...Collapse colour tags in event record
21767           DO 420 I=MINT(84)+1,N
21768             IF (MCT(I,1).EQ.JCCO(NCC,1)) MCT(I,1)=JCCO(NCC,2)
21769             IF (MCT(I,2).EQ.JCCO(NCC,1)) MCT(I,2)=JCCO(NCC,2)
21770   420     CONTINUE
21771         ENDIF
21772   430 CONTINUE
21773  
21774   440 JS=1
21775       IF (PYR(0).GT.0.5D0.OR.NG(1).EQ.0) JS=2
21776       IF (NG(JS).GT.0) THEN
21777         NOPT=0
21778         RLOPT=1D9
21779 C...Start at random gluon (optimizes speed for random attachments)
21780         NMGL=0
21781         IMGL=PYR(0)*NMI(JS)+1
21782   450   IMGL=MOD(IMGL,NMI(JS))+1
21783         NMGL=NMGL+1
21784 C...Only loop through NMI once (with upper limit to save time)
21785         IF (NMGL.LE.NMI(JS).AND.NOPT.LE.3) THEN
21786           IGL  = IMI(JS,IMGL,1)
21787 C...If not gluon or if already connected, try next.
21788           IF (K(IGL,2).NE.21.OR.K(IGL,4)/MSTU(5).NE.0
21789      &         .OR.K(IGL,5)/MSTU(5).NE.0) GOTO 450
21790 C...Now loop through all possible insertions of this gluon.
21791           NMP1=0
21792           IMP1=PYR(0)*NMI(JS)+1
21793   460     IMP1=MOD(IMP1,NMI(JS))+1
21794           NMP1=NMP1+1
21795           IF (IMP1.EQ.IMGL) GOTO 460
21796 C...Only loop through NMI once (with upper limit to save time).
21797           IF (NMP1.LE.NMI(JS).AND.NOPT.LE.3) THEN
21798             IP1  = IMI(JS,IMP1,1)
21799 C...Try both colour mother and colour anti-mother.
21800 C...Randomly select which one to try first.
21801             NANTI=0
21802             MANTI=PYR(0)*2
21803   470       MANTI=MOD(MANTI+1,2)
21804             NANTI=NANTI+1
21805             IF (NANTI.LE.2) THEN
21806               IP2 =MOD(K(IP1,4+MANTI)/MSTU(5),MSTU(5))
21807 C...Reject if no appropriate mother (or if mother is fictitious
21808 C...parent gluon.)
21809               IF (IP2.LE.0) GOTO 470
21810               IF (K(IP2,2).EQ.21.AND.IP2.GT.MINT(53)) GOTO 470
21811 C...Also reject if this link has already been tried.
21812               IF (K(IP1,4+MANTI)/MSTU(5)**2.EQ.2) GOTO 470
21813               IF (K(IP2,5-MANTI)/MSTU(5)**2.EQ.2) GOTO 470
21814 C...Set flag to indicate that this link has now been tried for this
21815 C...gluon. IP2 may be junction, which has several mothers.
21816               K(IP1,4+MANTI)=K(IP1,4+MANTI)+2*MSTU(5)**2
21817               IF (K(IP2,2).NE.88) THEN
21818                 K(IP2,5-MANTI)=K(IP2,5-MANTI)+2*MSTU(5)**2
21819               ENDIF
21820  
21821 C...JCG1: Original colour tag of gluon on IP1 side
21822 C...JCG2: Original colour tag of gluon on IP2 side
21823 C...JCP1: Original colour tag of IP1 on gluon side
21824 C...JCP2: Original colour tag of IP2 on gluon side.
21825               JCG1=MCO(IGL,2-MANTI)
21826               JCG2=MCO(IGL,1+MANTI)
21827               JCP1=MCO(IP1,1+MANTI)
21828               JCP2=MCO(IP2,2-MANTI)
21829  
21830               CALL PYMIHG(JCP1,JCG1,JCP2,JCG2)
21831 C...Reject gluon attachments that give rise to singlet gluons.
21832               IF (MACCPT.EQ.0) GOTO 470
21833  
21834 C...Update colours
21835               JCG1=MCT(IGL,2-MANTI)
21836               JCG2=MCT(IGL,1+MANTI)
21837               JCP1=MCT(IP1,1+MANTI)
21838               JCP2=MCT(IP2,2-MANTI)
21839  
21840 C...Select whether to accept this insertion
21841               IF (MSTP(89).EQ.0) THEN
21842 C...Random insertions: no measure.
21843                 RL=1D0
21844 C...For random ordering, we want to suppress beam remnant breakups
21845 C...already at this point.
21846                 IF (IP1.GT.MINT(53).AND.IP2.GT.MINT(53)
21847      &               .AND.MOUT(JS).NE.0.AND.PYR(0).GT.PARP80) THEN
21848                   NMP1=0
21849                   NMGL=0
21850                   GOTO 470
21851                 ENDIF
21852               ELSEIF (MSTP(89).EQ.1) THEN
21853 C...Rapidity ordering:
21854 C...YGL = Rapidity of gluon.
21855                 YGL=YMI(IMGL)
21856 C...If fictitious gluon
21857                 IF (YGL.EQ.100D0) THEN
21858                   YGL=(3-2*JS)*100D0
21859                   IDA1=MOD(K(IGL,4),MSTU(5))
21860                   IDA2=MOD(K(IGL,5),MSTU(5))
21861                   DO 480 IMT=1,NMI(JS)
21862 C...Select (arbitrarily) the most central daughter.
21863                     IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2)
21864      &                   THEN
21865                       IF (ABS(YGL).GT.ABS(YMI(IMT))) YGL=YMI(IMT)
21866                     ENDIF
21867   480             CONTINUE
21868                 ENDIF
21869 C...YP1 = Rapidity IP1
21870                 YP1=YMI(IMP1)
21871 C...If fictitious gluon
21872                 IF (YP1.EQ.100D0) THEN
21873                   YP1=(3-2*JS)*YP1
21874                   IDA1=MOD(K(IP1,4),MSTU(5))
21875                   IDA2=MOD(K(IP1,5),MSTU(5))
21876                   DO 490 IMT=1,NMI(JS)
21877 C...Select (arbitrarily) the most central daughter.
21878                     IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2)
21879      &                   THEN
21880                       IF (ABS(YP1).GT.ABS(YMI(IMT))) YP1=YMI(IMT)
21881                     ENDIF
21882   490             CONTINUE
21883                 ENDIF
21884 C...YP2 = Rapidity of mother system
21885                 IF (K(IP2,2).NE.88) THEN
21886                   DO 500 IMT=1,NMI(JS)
21887                     IF (IMI(JS,IMT,1).EQ.IP2) YP2=YMI(IMT)
21888   500             CONTINUE
21889 C...If fictitious gluon
21890                   IF (YP2.EQ.100D0) THEN
21891                     YP2=(3-2*JS)*YP2
21892                     IDA1=MOD(K(IP2,4),MSTU(5))
21893                     IDA2=MOD(K(IP2,5),MSTU(5))
21894                     DO 510 IMT=1,NMI(JS)
21895 C...Select (arbitrarily) the most central daughter.
21896                       IF (IMI(JS,IMT,1).EQ.IDA1.OR.IMI(JS,IMT,1).EQ.IDA2
21897      &                     ) THEN
21898                         IF (ABS(YP2).GT.ABS(YMI(IMT))) YP2=YMI(IMT)
21899                       ENDIF
21900   510               CONTINUE
21901                   ENDIF
21902 C...Assign (arbitrarily) 100D0 to junction also
21903                 ELSE
21904                   YP2=(3-2*JS)*100D0
21905                 ENDIF
21906                 RL=ABS(YGL-YP1)+ABS(YGL-YP2)
21907               ELSEIF (MSTP(89).EQ.2) THEN
21908 C...Lambda ordering:
21909 C...Compute lambda measure for this insertion.
21910                 RL=1D0
21911                 DO 520 IST=1,6
21912                   ISTR(IST)=0
21913   520           CONTINUE
21914 C...If IP2 is junction, not caught below.
21915                 IF (JCP2.EQ.0) THEN
21916                   ITJU=MOD(K(IP2,4)/MSTU(5),MSTU(5))
21917 C...Anti-junction is colour endpoint et vv., always on JCG2.
21918                   ISTR(5-ITJU)=IP2
21919                 ENDIF
21920                 DO 530 I=MINT(84)+1,N
21921                   IF (K(I,1).LT.10) THEN
21922 C...The new string pieces
21923                     IF (MCT(I,1).EQ.JCG1) ISTR(1)=I
21924                     IF (MCT(I,2).EQ.JCG1) ISTR(2)=I
21925                     IF (MCT(I,1).EQ.JCG2) ISTR(3)=I
21926                     IF (MCT(I,2).EQ.JCG2) ISTR(4)=I
21927                   ENDIF
21928   530           CONTINUE
21929 C...Also identify junctions as string endpoints.
21930                 DO 540 I=MINT(84)+1,N
21931                   ICMO=MOD(K(I,4)/MSTU(5),MSTU(5))
21932                   IAMO=MOD(K(I,5)/MSTU(5),MSTU(5))
21933 C...Find partons adjacent to junctions.
21934                   IF (ICMO.GT.0.AND.ICMO.LE.N) THEN
21935                     IF (K(ICMO,1).EQ.42.AND.MCT(I,1).EQ.JCG1.AND.ISTR(2)
21936      &                  .EQ.0) ISTR(2) = ICMO
21937                     IF (K(ICMO,1).EQ.42.AND.MCT(I,1).EQ.JCG2.AND.ISTR(4)
21938      &                  .EQ.0) ISTR(4) = ICMO
21939                   ENDIF
21940                   IF (IAMO.GT.0.AND.IAMO.LE.N) THEN
21941                     IF (K(IAMO,1).EQ.42.AND.MCT(I,2).EQ.JCG1.AND.ISTR(1)
21942      &                  .EQ.0) ISTR(1) = IAMO
21943                     IF (K(IAMO,1).EQ.42.AND.MCT(I,2).EQ.JCG2.AND.ISTR(3)
21944      &                  .EQ.0) ISTR(3) = IAMO
21945                   ENDIF
21946   540           CONTINUE
21947 C...The old string piece
21948                 ISTR(5)=ISTR(1+2*MANTI)
21949                 ISTR(6)=ISTR(4-2*MANTI)
21950                 IF (ISTR(1).EQ.0.OR.ISTR(2).EQ.0.OR.ISTR(3).EQ.0.OR.
21951      &              ISTR(4).EQ.0.OR.ISTR(5).EQ.0.OR.ISTR(6).EQ.0) THEN
21952 C...If one or more of the colour tags for this connection is/are still
21953 C...dangling, skip this attempt for the time being. 
21954                   RL=1D6
21955                 ELSE
21956                   RL=MAX(1D0,FOUR(ISTR(1),ISTR(2)))*MAX(1D0,FOUR(ISTR(3)
21957      &                ,ISTR(4)))/MAX(1D0,FOUR(ISTR(5),ISTR(6)))
21958                   RL=LOG(RL)
21959                 ENDIF
21960               ENDIF
21961 C...Allow some breadth to speed things up.
21962               IF (ABS(1D0-RL/RLOPT).LT.0.05D0) THEN
21963                 NOPT=NOPT+1
21964               ELSEIF (RL.GT.RLOPT) THEN
21965                 GOTO 470
21966               ELSE
21967                 NOPT=1
21968                 RLOPT=RL
21969               ENDIF
21970 C...INSR(NOPT,1)=Gluon colour mother
21971 C...INSR(NOPT,2)=Gluon
21972 C...INSR(NOPT,3)=Gluon anticolour mother
21973               IF (NOPT.GT.1000) GOTO 470
21974               INSR(NOPT,1+2*MANTI)=IP2
21975               INSR(NOPT,2)=IGL
21976               INSR(NOPT,3-2*MANTI)=IP1
21977               IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 470
21978             ENDIF
21979             IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 460
21980           ENDIF
21981 C...Reset link test information.
21982           DO 550 I=MINT(84)+1,N
21983             K(I,4)=MOD(K(I,4),MSTU(5)**2)
21984             K(I,5)=MOD(K(I,5),MSTU(5)**2)
21985   550     CONTINUE
21986           IF (MSTP(89).GT.0.OR.NOPT.EQ.0) GOTO 450
21987         ENDIF
21988 C...Now we have a list of best gluon insertions, none of which cause
21989 C...singlets to arise. If list is empty, try again a few times. Note:
21990 C...this should never happen if we have a meson with a gluon inserted
21991 C...in the beam remnant, since that breaks up the colour line.
21992         IF (NOPT.EQ.0) THEN
21993 C...Abandon BR-g-BR suppression for retries. This is not serious, it
21994 C...just means we happened to start with trying a bad sequence.
21995           PARP80=1D0
21996           IF (MRETRY.LE.10.AND.(ITJUNC(1).NE.0.OR.JST(1,3).EQ.0).AND
21997      &         .(ITJUNC(2).NE.0.OR.JST(2,3).EQ.0)) THEN
21998             MRETRY=MRETRY+1
21999             DO 590 JS=1,2
22000               IF (ITJUNC(JS).NE.0) THEN
22001                 JST(JS,1)=IV(JS,1)
22002                 JST(JS,2)=IV(JS,2)
22003                 JST(JS,3)=IV(JS,3)
22004 C...Reset valence quark parent pointers
22005                 DO 560 I=MINT(53)+1,N
22006                   IF (K(I,2).EQ.88.AND.K(I,3).EQ.JS) IJU=I
22007   560           CONTINUE
22008                 MANTI=ITJUNC(JS)-1
22009 C...Set (anti)colour mother = junction.
22010                 DO 570 JV=1,3
22011                   K(IV(JS,JV),4+MANTI)=MOD(K(IV(JS,JV),4+MANTI),MSTU(5))
22012      &                 +MSTU(5)*IJU
22013   570           CONTINUE
22014               ELSE
22015 C...Same for mesons. JST unchanged, so needn't be restored.
22016                 IQ=JST(JS,1)
22017                 IQBAR=JST(JS,2)
22018                 K(IQ,4)=MOD(K(IQ,4),MSTU(5))+MSTU(5)*IQBAR
22019                 K(IQBAR,5)=MOD(K(IQBAR,5),MSTU(5))+MSTU(5)*IQ
22020               ENDIF
22021 C...Also reset gluon parent pointers.
22022               NG(JS)=0
22023               DO 580 IM=1,NMI(JS)
22024                 I=IMI(JS,IM,1)
22025                 IF (K(I,2).EQ.21) THEN
22026                   K(I,4)=MOD(K(I,4),MSTU(5))
22027                   K(I,5)=MOD(K(I,5),MSTU(5))
22028                   NG(JS)=NG(JS)+1
22029                 ENDIF
22030   580         CONTINUE
22031   590       CONTINUE
22032 C...Reset colour tags
22033             DO 600 I=MINT(84)+1,N
22034               MCT(I,1)=MCO(I,1)
22035               MCT(I,2)=MCO(I,2)
22036   600       CONTINUE
22037             GOTO 400
22038           ELSE
22039             IF(NERRPR.LT.5) THEN
22040               NERRPR=NERRPR+1
22041               CALL PYLIST(4)
22042               CALL PYERRM(19,'(PYMIHK:) No physical colour flow found!')
22043               WRITE(MSTU(11),*) 'NG:', NG,'   MOUT:', MOUT(JS)
22044             ENDIF
22045 C...Kill event and start another.
22046             MINT(51)=1
22047             RETURN
22048           ENDIF
22049         ELSE
22050 C...Select between insertions, suppressing insertions wholly in the BR.
22051           IIN=PYR(0)*NOPT+1
22052   610     IIN=MOD(IIN,NOPT)+1
22053           IF (INSR(IIN,1).GT.MINT(53).AND.INSR(IIN,3).GT.MINT(53)
22054      &         .AND.MOUT(JS).NE.0.AND.PYR(0).GT.PARP80) GOTO 610
22055         ENDIF
22056  
22057 C...Now we know which gluon to insert where. Colour tags in JCCO and
22058 C...colour connection information should be updated, NG(JS) should be
22059 C...counted down, and a new loop performed if there are still gluons
22060 C...left on any side.
22061         ICM=INSR(IIN,1)
22062         IACM=INSR(IIN,3)
22063         IGL=INSR(IIN,2)
22064 C...JCG : Original gluon colour tag
22065 C...JCAG: Original gluon anticolour tag.
22066 C...JCM : Original anticolour tag of gluon colour mother
22067 C...JACM: Original colour tag of gluon anticolour mother
22068         JCG=MCO(IGL,1)
22069         JCM=MCO(ICM,2)
22070         JACG=MCO(IGL,2)
22071         JACM=MCO(IACM,1)
22072  
22073         CALL PYMIHG(JACM,JACG,JCM,JCG)
22074         IF (MACCPT.EQ.0) THEN
22075           IF(NERRPR.LT.5) THEN
22076             NERRPR=NERRPR+1
22077             CALL PYLIST(4)
22078             CALL PYERRM(11,'(PYMIHK:) Unphysical colour flow!')
22079             WRITE(MSTU(11),*) 'attaching', IGL,' between', ICM, IACM
22080           ENDIF
22081 C...Kill event and start another.
22082           MINT(51)=1
22083           RETURN
22084         ELSE
22085 C...If everything went fine, store new JCCN in JCCO.
22086           NCC=NCC+1
22087           DO 620 ICC=1,NCC
22088             JCCO(ICC,1)=JCCN(ICC,1)
22089             JCCO(ICC,2)=JCCN(ICC,2)
22090   620     CONTINUE
22091         ENDIF
22092  
22093 C...One gluon attached is counted as equivalent to one end outside.
22094         MOUT(JS)=1
22095 C...Set IGL colour mother = ICM.
22096         K(IGL,4)=MOD(K(IGL,4),MSTU(5))+MSTU(5)*ICM
22097 C...Set ICM anticolour mother = IGL colour.
22098         IF (K(ICM,2).NE.88) THEN
22099           K(ICM,5)=MOD(K(ICM,5),MSTU(5))+MSTU(5)*IGL
22100         ELSE
22101 C...If ICM is junction, just update JST array for now.
22102           DO 630 MSJ=1,3
22103             IF (JST(JS,MSJ).EQ.IACM) JST(JS,MSJ)=IGL
22104   630     CONTINUE
22105         ENDIF
22106 C...Set IGL anticolour mother = IACM.
22107         K(IGL,5)=MOD(K(IGL,5),MSTU(5))+MSTU(5)*IACM
22108 C...Set IACM anticolour mother = IGL anticolour.
22109         IF (K(IACM,2).NE.88) THEN
22110           K(IACM,4)=MOD(K(IACM,4),MSTU(5))+MSTU(5)*IGL
22111         ELSE
22112 C...If IACM is junction, just update JST array for now.
22113           DO 640 MSJ=1,3
22114             IF (JST(JS,MSJ).EQ.ICM) JST(JS,MSJ)=IGL
22115   640     CONTINUE
22116         ENDIF
22117 C...Count down # unconnected gluons.
22118         NG(JS)=NG(JS)-1
22119       ENDIF
22120       IF (NG(1).GT.0.OR.NG(2).GT.0) GOTO 440
22121  
22122       DO 840 JS=1,2
22123 C...Collapse fictitious gluons.
22124         DO 670 IGL=MINT(53)+1,N
22125           IF (K(IGL,2).EQ.21.AND.K(IGL,3).EQ.MINT(83)+JS.AND.
22126      &         K(IGL,1).EQ.14) THEN
22127             ICM=K(IGL,4)/MSTU(5)
22128             IAM=K(IGL,5)/MSTU(5)
22129             ICD=MOD(K(IGL,4),MSTU(5))
22130             IAD=MOD(K(IGL,5),MSTU(5))
22131 C...Set gluon daughters pointing to gluon mothers
22132             K(IAD,5)=MOD(K(IAD,5),MSTU(5))+MSTU(5)*IAM
22133             K(ICD,4)=MOD(K(ICD,4),MSTU(5))+MSTU(5)*ICM
22134 C...Set gluon mothers pointing to gluon daughters.
22135             IF (K(ICM,2).NE.88) THEN
22136               K(ICM,5)=MOD(K(ICM,5),MSTU(5))+MSTU(5)*ICD
22137             ELSE
22138 C...Special case: mother=junction. Just update JST array for now.
22139               DO 650 MSJ=1,3
22140                 IF (JST(JS,MSJ).EQ.IGL) JST(JS,MSJ)=ICD
22141   650         CONTINUE
22142             ENDIF
22143             IF (K(IAM,2).NE.88) THEN
22144               K(IAM,4)=MOD(K(IAM,4),MSTU(5))+MSTU(5)*IAD
22145             ELSE
22146               DO 660 MSJ=1,3
22147                 IF (JST(JS,MSJ).EQ.IGL) JST(JS,MSJ)=IAD
22148   660         CONTINUE
22149             ENDIF
22150           ENDIF
22151   670   CONTINUE
22152  
22153 C...Erase collapsed gluons from NMI and IMI (but keep them in ER)
22154         IM=NMI(JS)+1
22155   680   IM=IM-1
22156         IF (IM.GT.MINT(31).AND.K(IMI(JS,IM,1),2).NE.21) GOTO 680
22157         IF (IM.GT.MINT(31)) THEN
22158           NMI(JS)=NMI(JS)-1
22159           DO 690 IMR=IM,NMI(JS)
22160             IMI(JS,IMR,1)=IMI(JS,IMR+1,1)
22161             IMI(JS,IMR,2)=IMI(JS,IMR+1,2)
22162   690     CONTINUE
22163           GOTO 680
22164         ENDIF
22165  
22166 C...Finally, connect junction.
22167         IF (ITJUNC(JS).NE.0) THEN
22168           DO 700 I=MINT(53)+1,N
22169             IF (K(I,2).EQ.88.AND.K(I,3).EQ.MINT(83)+JS) IJU=I
22170   700     CONTINUE
22171 C...NBRJQ counts # of jq, NBRVQ # of jv, inside BR.
22172           NBRJQ =0
22173           NBRVQ =0
22174           DO 720 MSJ=1,3
22175             IDQ(MSJ)=0
22176 C...Find jq with no glue inbetween inside beam remnant.
22177             IF (JST(JS,MSJ).GT.MINT(53).AND.IABS(K(JST(JS,MSJ),2)).LE.5)
22178      &           THEN
22179               NBRJQ=NBRJQ+1
22180 C...Set IDQ = -I if q non-valence and = +I if q valence.
22181               IDQ(NBRJQ)=-JST(JS,MSJ)
22182               DO 710 JV=1,3
22183                 IF (IV(JS,JV).EQ.JST(JS,MSJ)) THEN
22184                   IDQ(NBRJQ)=JST(JS,MSJ)
22185                   NBRVQ=NBRVQ+1
22186                 ENDIF
22187   710         CONTINUE
22188             ENDIF
22189             I12=MOD(MSJ+1,2)
22190             I45=5
22191             IF (MSJ.EQ.3) I45=4
22192             K(IJU,I45)=K(IJU,I45)+(MSTU(5)**I12)*JST(JS,MSJ)
22193   720     CONTINUE
22194  
22195 C...Check if diquark can be formed.
22196           IF ((MSTP(88).GE.0.AND.NBRVQ.GE.2).OR.(NBRJQ.GE.2.AND.MSTP(88)
22197      &         .GE.1)) THEN
22198 C...If there is less than 2 valence quarks connected to junction
22199 C...and MSTP(88)>1, use random non-valence quarks to fill up.
22200             IF (NBRVQ.LE.1) THEN
22201               NDIQ=NBRVQ
22202   730         JFLIP=NBRJQ*PYR(0)+1
22203               IF (IDQ(JFLIP).LT.0) THEN
22204                 IDQ(JFLIP)=-IDQ(JFLIP)
22205                 NDIQ=NDIQ+1
22206               ENDIF
22207               IF (NDIQ.LE.1) GOTO 730
22208             ENDIF
22209 C...Place selected quarks first in IDQ, ordered in flavour.
22210             DO 740 JDQ=1,3
22211               IF (IDQ(JDQ).LE.0) THEN
22212                 ITEMP1  = IDQ(JDQ)
22213                 IDQ(JDQ)= IDQ(3)
22214                 IDQ(3)  = -ITEMP1
22215                 IF (IABS(K(IDQ(1),2)).LT.IABS(K(IDQ(2),2))) THEN
22216                   ITEMP1  = IDQ(1)
22217                   IDQ(1)  = IDQ(2)
22218                   IDQ(2)  = ITEMP1
22219                 ENDIF
22220               ENDIF
22221   740       CONTINUE
22222 C...Choose diquark spin.
22223             IF (NBRVQ.EQ.2) THEN
22224 C...If the selected quarks are both valence, we may use SU(6) rules
22225 C...to figure out which spin the diquark has, by a subdivision of the
22226 C...original beam hadron into the selected diquark system plus a kicked
22227 C...out quark, IKO.
22228               JKO=6
22229               DO 760 JDQ=1,2
22230                 DO 750 JV=1,3
22231                   IF (IDQ(JDQ).EQ.IV(JS,JV)) JKO=JKO-JV
22232   750           CONTINUE
22233   760         CONTINUE
22234               IKO=IV(JS,JKO)
22235               CALL PYSPLI(MINT(10+JS),K(IKO,2),KFDUM,KFDQ)
22236             ELSE
22237 C...If one or more of the selected quarks are not valence, we cannot use
22238 C...SU(6) subdivisions of the original beam hadron. Instead, with the
22239 C...flavours of the diquark already selected, we assume for now
22240 C...50:50 spin-1:spin-0 (where spin-0 possible).
22241               KFDQ=1000*K(IDQ(1),2)+100*K(IDQ(2),2)
22242               IS=3
22243               IF (K(IDQ(1),2).NE.K(IDQ(2),2).AND.
22244      &           (1D0+3D0*PARJ(4))*PYR(0).LT.1D0) IS=1
22245               KFDQ=KFDQ+ISIGN(IS,KFDQ)
22246             ENDIF
22247  
22248 C...Collapse diquark-j-quark system to baryon, if allowed and possible.
22249 C...Note: third quark can per definition not also be valence,
22250 C...therefore we can only do this if we are allowed to use sea quarks.
22251   770       IF (IDQ(3).NE.0.AND.MSTP(88).GE.2) THEN
22252               NTRY=0
22253   780         NTRY=NTRY+1
22254               CALL PYKFDI(KFDQ,K(IABS(IDQ(3)),2),KFDUM,KFBAR)
22255               IF (KFBAR.EQ.0.AND.NTRY.LE.100) THEN
22256                 GOTO 780
22257               ELSEIF(NTRY.GT.100) THEN
22258 C...If no baryon can be found, give up and form diquark.
22259                 IDQ(3)=0
22260                 GOTO 770
22261               ELSE
22262 C...Replace junction by baryon.
22263                 K(IJU,1)=1
22264                 K(IJU,2)=KFBAR
22265                 K(IJU,3)=MINT(83)+JS
22266                 K(IJU,4)=0
22267                 K(IJU,5)=0
22268                 P(IJU,5)=PYMASS(KFBAR)
22269                 DO 790 MSJ=1,3
22270 C...Prepare removal of participating quarks from ER.
22271                   K(JST(JS,MSJ),1)=-1
22272   790           CONTINUE
22273               ENDIF
22274             ELSE
22275 C...If collapse to baryon not possible or not allowed, replace junction
22276 C...by diquark. This way, collapsed gluons that were pointing at the
22277 C...junction will now point (correctly) at diquark.
22278               MANTI=ITJUNC(JS)-1
22279               K(IJU,1)=3
22280               K(IJU,2)=KFDQ
22281               K(IJU,3)=MINT(83)+JS
22282               K(IJU,4)=0
22283               K(IJU,5)=0
22284               DO 800 MSJ=1,3
22285                 IP=JST(JS,MSJ)
22286                 IF (IP.NE.IDQ(1).AND.IP.NE.IDQ(2)) THEN
22287                   K(IJU,4+MANTI)=0
22288                   K(IJU,5-MANTI)=IP*MSTU(5)
22289                   K(IP,4+MANTI)=MOD(K(IP,4+MANTI),MSTU(5))+
22290      &                 MSTU(5)*IJU
22291                   MCT(IJU,2-MANTI)=MCT(IP,1+MANTI)
22292                 ELSE
22293 C...Prepare removal of participating quarks from ER.
22294                   K(IP,1)=-1
22295                 ENDIF
22296   800         CONTINUE
22297             ENDIF
22298  
22299 C...Update so ER pointers to collapsed quarks
22300 C...now go to collapsed object.
22301             DO 820 I=MINT(84)+1,N
22302               IF ((K(I,3).EQ.MINT(83)+JS.OR.K(I,3).EQ.MINT(83)+2+JS).AND
22303      &             .K(I,1).GT.0) THEN
22304                 DO 810 ISID=4,5
22305                   IMO=K(I,ISID)/MSTU(5)
22306                   IDA=MOD(K(I,ISID),MSTU(5))
22307                   IF (IMO.GT.0) THEN
22308                     IF (K(IMO,1).EQ.-1) IMO=IJU
22309                   ENDIF
22310                   IF (IDA.GT.0) THEN
22311                     IF (K(IDA,1).EQ.-1) IDA=IJU
22312                   ENDIF
22313                   K(I,ISID)=IDA+MSTU(5)*IMO
22314   810           CONTINUE
22315               ENDIF
22316   820       CONTINUE
22317           ENDIF
22318         ENDIF
22319  
22320 C...Finally, if beam remnant is empty, insert a gluon in beam remnant.
22321 C...(this only happens for baryons, where we want to force the gluon
22322 C...to sit next to the junction. Mesons handled above.)
22323         IF (NBRTOT(JS).EQ.0) THEN
22324           N=N+1
22325           DO 830 IX=1,5
22326             K(N,IX)=0
22327             P(N,IX)=0D0
22328             V(N,IX)=0D0
22329   830     CONTINUE
22330           IGL=N
22331           K(IGL,1)=3
22332           K(IGL,2)=21
22333           K(IGL,3)=MINT(83)+JS
22334           IF (ITJUNC(JS).NE.0) THEN
22335 C...Incoming baryons. Pick random leg in JST (NVSUM = 3 for baryons)
22336             JLEG=PYR(0)*NVSUM(JS)+1
22337             I1=JST(JS,JLEG)
22338             JST(JS,JLEG)=IGL
22339             JCT=MCT(I1,ITJUNC(JS))
22340             MCT(IGL,3-ITJUNC(JS))=JCT
22341             NCT=NCT+1
22342             MCT(IGL,ITJUNC(JS))=NCT
22343             MANTI=ITJUNC(JS)-1
22344           ELSE
22345 C...Meson. Should not happen.
22346             CALL PYERRM(19,'(PYMIHK:) Empty meson beam remnant')
22347             IF(NERRPR.LT.5) THEN
22348               WRITE(MSTU(11),*) 'This should not have been possible!'
22349               CALL PYLIST(4)
22350               NERRPR=NERRPR+1
22351             ENDIF
22352             MINT(51)=1
22353             RETURN
22354           ENDIF
22355           I2=MOD(K(I1,4+MANTI)/MSTU(5),MSTU(5))
22356           K(I1,4+MANTI)=MOD(K(I1,4+MANTI),MSTU(5))+MSTU(5)*IGL
22357           K(IGL,5-MANTI)=MOD(K(IGL,5-MANTI),MSTU(5))+MSTU(5)*I1
22358           K(IGL,4+MANTI)=MOD(K(IGL,4+MANTI),MSTU(5))+MSTU(5)*I2
22359           IF (K(I2,2).NE.88) THEN
22360             K(I2,5-MANTI)=MOD(K(I2,5-MANTI),MSTU(5))+MSTU(5)*IGL
22361           ELSE
22362             IF (MOD(K(I2,4),MSTU(5)).EQ.I1) THEN
22363               K(I2,4)=(K(I2,4)/MSTU(5))*MSTU(5)+IGL
22364             ELSEIF(MOD(K(I2,5)/MSTU(5),MSTU(5)).EQ.I1) THEN
22365               K(I2,5)=MOD(K(I2,5),MSTU(5))+MSTU(5)*IGL
22366             ELSE
22367               K(I2,5)=(K(I2,5)/MSTU(5))*MSTU(5)+IGL
22368             ENDIF
22369           ENDIF
22370         ENDIF
22371   840 CONTINUE
22372  
22373 C...Remove collapsed quarks and junctions from ER and update IMI.
22374       CALL PYEDIT(11)
22375  
22376 C...Also update beam remnant part of IMI.
22377       NMI(1)=MINT(31)
22378       NMI(2)=MINT(31)
22379       DO 850 I=MINT(53)+1,N
22380         IF (K(I,1).LE.0) GOTO 850
22381 C...Restore BR quark/diquark/baryon pointers in IMI.
22382         IF ((K(I,2).NE.21.OR.K(I,1).NE.14).AND.K(I,2).NE.88) THEN
22383           JS=K(I,3)-MINT(83)
22384           NMI(JS)=NMI(JS)+1
22385           IMI(JS,NMI(JS),1)=I
22386           IMI(JS,NMI(JS),2)=0
22387         ENDIF
22388   850 CONTINUE
22389  
22390 C...Restore companion information from collapsed gluons.
22391       DO 870 I=MINT(53)+1,N
22392         IF (K(I,2).EQ.21.AND.K(I,1).EQ.14) THEN
22393           JS=K(I,3)-MINT(83)
22394           JCD=MOD(K(I,4),MSTU(5))
22395           JAD=MOD(K(I,5),MSTU(5))
22396           DO 860 IM=1,NMI(JS)
22397             IF (IMI(JS,IM,1).EQ.JCD) IMC=IM
22398             IF (IMI(JS,IM,1).EQ.JAD) IMA=IM
22399   860     CONTINUE
22400           IMI(JS,IMC,2)=IMI(JS,IMA,1)
22401           IMI(JS,IMA,2)=IMI(JS,IMC,1)
22402         ENDIF
22403   870 CONTINUE
22404  
22405 C...Renumber colour lines (since some have disappeared)
22406       JCT=0
22407       JCD=0
22408   880 JCT=JCT+1
22409       MFOUND=0
22410       I=MINT(84)
22411   890 I=I+1
22412       IF (I.EQ.N+1) THEN
22413         IF (MFOUND.EQ.0) JCD=JCD+1
22414       ELSEIF (MCT(I,1).EQ.JCT.AND.K(I,1).GE.1) THEN
22415         MCT(I,1)=JCT-JCD
22416         MFOUND=1
22417       ELSEIF (MCT(I,2).EQ.JCT.AND.K(I,1).GE.1) THEN
22418         MCT(I,2)=JCT-JCD
22419         MFOUND=1
22420       ENDIF
22421       IF (I.LE.N) GOTO 890
22422       IF (JCT.LT.NCT) GOTO 880
22423       NCT=JCT-JCD
22424  
22425 C...Reset hard interaction subsystems to their CM frames.
22426       IF (IBOOST.EQ.1) THEN
22427         DO 900 IM=1,MINT(31)
22428           BETA=-(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
22429           CALL PYROBO(IMISEP(IM-1)+1,IMISEP(IM),0D0,0D0,0D0,0D0,BETA)
22430   900   CONTINUE
22431 C...Zero beam remnant longitudinal momenta and energies
22432         DO 910 I=MINT(53)+1,N
22433           P(I,3)=0D0
22434           P(I,4)=0D0
22435   910   CONTINUE
22436       ELSE
22437         CALL PYERRM(9
22438      &       ,'(PYMIHK:) Inconsistent kinematics. Too many boosts.')
22439 C...Kill event and start another.
22440         MINT(51)=1
22441         RETURN
22442       ENDIF
22443  
22444  9999 RETURN
22445       END
22446 C*********************************************************************
22447  
22448 C...PYCTTR
22449 C...Adapted from PYPREP.
22450 C...Assigns LHA1 colour tags to coloured partons based on
22451 C...K(I,4) and K(I,5) colour connection record.
22452 C...KCS negative signifies that a previous tracing should be continued.
22453 C...(in case the tag to be continued is empty, the routine exits)
22454 C...Starts at I and ends at I or IEND.
22455 C...Special considerations for systems with junctions.
22456 C...Special: if IEND=-1, means trace this parton to its color partner,
22457 C...         then exit. If no partner found, exit with 0. 
22458 
22459       SUBROUTINE PYCTTR(I,KCS,IEND)
22460 C...Double precision and integer declarations.
22461       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22462       INTEGER PYK,PYCHGE,PYCOMP
22463 C...Commonblocks.
22464       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22465       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22466       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
22467       COMMON/PYINT1/MINT(400),VINT(400)
22468 C...The common block of colour tags.
22469       COMMON/PYCTAG/NCT,MCT(4000,2)
22470       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/
22471       DATA NERRPR/0/
22472       SAVE NERRPR
22473  
22474 C...Skip if parton not existing or does not have KCS
22475       IF (K(I,1).LE.0) GOTO 120
22476       KC=PYCOMP(K(I,2))
22477       IF (KC.EQ.0) GOTO 120
22478       KQ=KCHG(KC,2)
22479       IF (KQ.EQ.0) GOTO 120
22480       IF (IABS(KQ).EQ.1.AND.KQ*(9-2*ABS(KCS)).NE.ISIGN(1,K(I,2))) 
22481      &    GOTO 120
22482  
22483       IF (KCS.GT.0) THEN
22484         NCT=NCT+1
22485 C...Set colour tag of first parton.
22486         MCT(I,KCS-3)=NCT
22487         NCS=NCT
22488       ELSE
22489         KCS=-KCS
22490         NCS=MCT(I,KCS-3)
22491         IF (NCS.EQ.0) GOTO 120
22492       ENDIF
22493  
22494       IA=I
22495       NSTP=0
22496   100 NSTP=NSTP+1
22497       IF(NSTP.GT.4*N) THEN
22498         CALL PYERRM(14,'(PYCTTR:) caught in infinite loop')
22499         GOTO 120
22500       ENDIF
22501  
22502 C...Finished if reached final-state triplet.
22503       IF(K(IA,1).EQ.3) THEN
22504         IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) GOTO 120
22505       ENDIF
22506  
22507 C...Also finished if reached junction.
22508       IF(K(IA,1).EQ.42) THEN
22509         GOTO 120
22510       ENDIF
22511  
22512 C...GOTO next parton in colour space.
22513   110 IB=IA
22514 C...If IB's KCS daughter not traced and exists, goto KCS daughter.
22515       IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5))
22516      &     .NE.0) THEN
22517         IA=MOD(K(IB,KCS),MSTU(5))
22518         K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
22519         MREV=0
22520       ELSE
22521 C...If KCS mother traced or KCS mother nonexistent, switch colour.
22522         IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
22523      &       MSTU(5)).EQ.0) THEN
22524           KCS=9-KCS
22525           NCT=NCT+1
22526           NCS=NCT
22527 C...Assign new colour tag on other side of old parton.
22528           MCT(IB,KCS-3)=NCT
22529         ENDIF
22530 C...Goto (new) KCS mother, set mother traced tag
22531         IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
22532         K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
22533         MREV=1
22534       ENDIF
22535       IF(IA.LE.0.OR.IA.GT.N) THEN
22536         IF (IEND.EQ.-1) THEN
22537           IEND=0
22538           GOTO 120
22539         ENDIF
22540         CALL PYERRM(12,'(PYCTTR:) colour tag tracing failed')
22541         IF(NERRPR.LT.5) THEN
22542           write(*,*) 'began at ',I
22543           write(*,*) 'ended going from', IB, ' to', IA, '  KCS=',KCS,
22544      &        '  NCS=',NCS,'  MREV=',MREV
22545           CALL PYLIST(4)
22546           NERRPR=NERRPR+1
22547         ENDIF
22548         MINT(51)=1
22549         RETURN
22550       ENDIF
22551       IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5),
22552      &     MSTU(5)).EQ.IB) THEN
22553         IF(MREV.EQ.1) KCS=9-KCS
22554         IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
22555 C...Set KSC mother traced tag for IA
22556         K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
22557       ELSE
22558         IF(MREV.EQ.0) KCS=9-KCS
22559         IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
22560 C...Set KCS daughter traced tag for IA
22561         K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
22562       ENDIF
22563 C...Assign new colour tag
22564       MCT(IA,KCS-3)=NCS
22565 C...Finish if IEND=-1 and found final-state color partner 
22566       IF (IEND.EQ.-1.AND.K(IA,1).LT.10) THEN
22567         IEND=IA
22568         GOTO 120        
22569       ENDIF
22570       IF (IA.NE.I.AND.IA.NE.IEND) GOTO 100
22571  
22572   120 RETURN
22573       END
22574  
22575 *********************************************************************
22576  
22577 C...PYMIHG
22578 C...Collapse JCP1 and connecting tags to JCG1.
22579 C...Collapse JCP2 and connecting tags to JCG2.
22580  
22581       SUBROUTINE PYMIHG(JCP1,JCG1,JCP2,JCG2)
22582 C...Double precision and integer declarations.
22583       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22584       IMPLICIT INTEGER(I-N)
22585       INTEGER PYK,PYCHGE,PYCOMP
22586 C...The event record
22587       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22588 C...Parameters
22589       COMMON/PYINT1/MINT(400),VINT(400)
22590       SAVE /PYJETS/,/PYINT1/
22591 C...Local variables
22592       COMMON /PYCBLS/MCO(4000,2),NCC,JCCO(4000,2),JCCN(4000,2),MACCPT
22593       COMMON /PYCTAG/NCT,MCT(4000,2)
22594       SAVE /PYCBLS/,/PYCTAG/
22595  
22596 C...Break up JCP1<->JCP2 tag and create JCP1<->JCG1 and JCP2<->JCG2 tags
22597 C...in temporary tag collapse array JCCN. Only break up one connection.
22598       MACCPT=1
22599       MCLPS=0
22600       DO 100 ICC=1,NCC
22601         JCCN(ICC,1)=JCCO(ICC,1)
22602         JCCN(ICC,2)=JCCO(ICC,2)
22603 C...If there was a mother, it was previously connected to JCP1.
22604 C...Should be changed to JCP2.
22605         IF (MCLPS.EQ.0) THEN
22606           IF (JCCN(ICC,1).EQ.MAX(JCP1,JCP2).AND.JCCN(ICC,2).EQ.MIN(JCP1
22607      &         ,JCP2)) THEN
22608             JCCN(ICC,1)=MAX(JCG2,JCP2)
22609             JCCN(ICC,2)=MIN(JCG2,JCP2)
22610             MCLPS=1
22611           ENDIF
22612         ENDIF
22613   100 CONTINUE
22614 C...Also collapse colours on JCP1 side of JCG1
22615       IF (JCP1.NE.0) THEN
22616         JCCN(NCC+1,1)=MAX(JCP1,JCG1)
22617         JCCN(NCC+1,2)=MIN(JCP1,JCG1)
22618       ELSE
22619         JCCN(NCC+1,1)=MAX(JCP2,JCG2)
22620         JCCN(NCC+1,2)=MIN(JCP2,JCG2)
22621       ENDIF
22622  
22623 C...Initialize event record colour tag array MCT array to MCO.
22624        DO 110 I=MINT(84)+1,N
22625         MCT(I,1)=MCO(I,1)
22626         MCT(I,2)=MCO(I,2)
22627   110 CONTINUE
22628  
22629 C...Collapse tags:
22630 C...IS = 1 : All tags connecting to JCG1 on JCG1 side -> JCG1
22631 C...IS = 2 : All tags connecting to JCG2 on JCG2 side -> JCG2
22632 C...IS = 3 : All tags connecting to JCG1 on JCP1 side -> JCG1
22633 C...IS = 4 : All tags connecting to JCG2 on JCP2 side -> JCG2
22634       DO 160 IS=1,4
22635 C...Skip if junction.
22636         IF ((IS.EQ.4.AND.JCP2.EQ.0).OR.(IS.EQ.3).AND.JCP1.EQ.0) GOTO 160
22637 C...Define starting point in tag space.
22638 C...JCA = previous tag
22639 C...JCO = present tag
22640 C...JCN = new tag
22641         IF (MOD(IS,2).EQ.1) THEN
22642           JCO=JCP1
22643           JCN=JCG1
22644           JCALL=JCG1
22645         ELSEIF (MOD(IS,2).EQ.0) THEN
22646           JCO=JCP2
22647           JCN=JCG2
22648           JCALL=JCG2
22649         ENDIF
22650         ITRACE=0
22651   120   ITRACE=ITRACE+1
22652         IF (ITRACE.GT.1000) THEN
22653 C...NB: Proper error message should be defined here.
22654           CALL PYERRM(14
22655      &         ,'(PYMIHG:) Inf loop when collapsing colours.')
22656           MINT(57)=MINT(57)+1
22657           MINT(51)=1
22658           RETURN
22659         ENDIF
22660 C...Collapse all JCN tags to JCALL
22661         DO 130 I=MINT(84)+1,N
22662           IF (MCO(I,1).EQ.JCN) MCT(I,1)=JCALL
22663           IF (MCO(I,2).EQ.JCN) MCT(I,2)=JCALL
22664   130   CONTINUE
22665 C...IS = 1,2: first step forward. IS = 3,4: first step backward.
22666         IF (IS.GT.2.AND.(JCN.EQ.JCALL)) THEN
22667           JCA=JCN
22668           JCN=JCO
22669         ELSE
22670           JCA=JCO
22671           JCO=JCN
22672         ENDIF
22673 C...If possible, step from JCO to new tag JCN not equal to JCA.
22674         DO 140 ICC=1,NCC+1
22675           IF (JCCN(ICC,1).EQ.JCO.AND.JCCN(ICC,2).NE.JCA) JCN=
22676      &         JCCN(ICC,2)
22677           IF (JCCN(ICC,2).EQ.JCO.AND.JCCN(ICC,1).NE.JCA) JCN=
22678      &         JCCN(ICC,1)
22679   140   CONTINUE
22680 C...Iterate if new colour was arrived at, but don't go in circles.
22681         IF (JCN.NE.JCO.AND.JCN.NE.JCALL) GOTO 120
22682 C...Change all JCN tags in MCO to JCALL in MCT.
22683         DO 150 I=MINT(84)+1,N
22684           IF (MCO(I,1).EQ.JCN) MCT(I,1)=JCALL
22685           IF (MCO(I,2).EQ.JCN) MCT(I,2)=JCALL
22686 C...If gluon and colour tag = anticolour tag (and not = 0) try again.
22687           IF (K(I,2).EQ.21.AND.MCT(I,1).EQ.MCT(I,2).AND.MCT(I,1)
22688      &         .NE.0) MACCPT=0
22689   150   CONTINUE
22690   160 CONTINUE
22691  
22692       DO 200 JCL=NCT,1,-1
22693         JCA=0
22694         JCN=JCL
22695   170   JCO=JCN
22696         DO 180 ICC=1,NCC+1
22697           IF (JCCN(ICC,1).EQ.JCO.AND.JCCN(ICC,2).NE.JCA) JCN
22698      &         =JCCN(ICC,2)
22699           IF (JCCN(ICC,2).EQ.JCO.AND.JCCN(ICC,1).NE.JCA) JCN
22700      &         =JCCN(ICC,1)
22701   180   CONTINUE
22702 C...Overpaint all JCN with JCL
22703         IF (JCN.NE.JCO.AND.JCN.NE.JCL) THEN
22704           DO 190 I=MINT(84)+1,N
22705             IF (MCT(I,1).EQ.JCN) MCT(I,1)=JCL
22706             IF (MCT(I,2).EQ.JCN) MCT(I,2)=JCL
22707 C...If gluon and colour tag = anticolour tag (and not = 0) try again.
22708             IF (K(I,2).EQ.21.AND.MCT(I,1).EQ.MCT(I,2).AND.MCT(I,1)
22709      &           .NE.0) MACCPT=0
22710   190     CONTINUE
22711           JCA=JCO
22712           GOTO 170
22713         ENDIF
22714   200 CONTINUE
22715  
22716       RETURN
22717       END
22718  
22719 C*********************************************************************
22720  
22721 C...PYMIRM
22722 C...Picks primordial kT and shares longitudinal momentum among
22723 C...beam remnants.
22724  
22725       SUBROUTINE PYMIRM
22726  
22727 C...Double precision and integer declarations.
22728       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
22729       IMPLICIT INTEGER(I-N)
22730       INTEGER PYK,PYCHGE,PYCOMP
22731 C...The event record
22732       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
22733 C...Parameters
22734       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
22735       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
22736       COMMON/PYINT1/MINT(400),VINT(400)
22737 C...The common block of colour tags.
22738       COMMON/PYCTAG/NCT,MCT(4000,2)
22739 C...The common block of dangling ends
22740       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
22741      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
22742      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
22743       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/,/PYINTM/,/PYCTAG/
22744 C...Local variables
22745       DIMENSION W(0:2,0:2),VB(3),NNXT(2),IVALQ(2),ICOMQ(2)
22746 C...W(I,J)|  J=0    |   1   |   2   |
22747 C...  I=0 | Wrem**2 |  W+   |  W-   |
22748 C...    1 | W1**2   |  W1+  |  W1-  |
22749 C...    2 | W2**2   |  W2+  |  W2-  |
22750 C...4-product
22751       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)
22752 C...Tentative parametrization of <kT> as a function of Q.
22753       SIGPT(Q)=MAX(PARJ(21),2.1D0*Q/(7D0+Q))
22754 C      SIGPT(Q)=MAX(0.36D0,4D0*SQRT(Q)/(10D0+SQRT(Q))
22755 C      SIGPT(Q)=MAX(PARJ(21),3D0*SQRT(Q)/(5D0+SQRT(Q))
22756       GETPT(Q,SIGMA)=MIN(SIGMA*SQRT(-LOG(PYR(0))),PARP(93))
22757 C...Lambda kinematic function.
22758       FLAM(A,B,C)=A**2+B**2+C**2-2D0*(A*B+B*C+C*A)
22759  
22760 C...Beginning and end of beam remnant partons
22761       NOUT=MINT(53)
22762       ISUB=MINT(1)
22763  
22764 C...Loopback point if kinematic choices gives impossible configuration.
22765       NTRY=0
22766   100 NTRY=NTRY+1
22767  
22768 C...Assign kT values on each side separately.
22769       DO 180 JS=1,2
22770  
22771 C...First zero all kT on this side. Skip if no kT to generate.
22772         DO 110 IM=1,NMI(JS)
22773           P(IMI(JS,IM,1),1)=0D0
22774           P(IMI(JS,IM,1),2)=0D0
22775   110   CONTINUE
22776         IF(MSTP(91).LE.0) GOTO 180
22777  
22778 C...Now assign kT to each (non-collapsed) parton in IMI.
22779         DO 170 IM=1,NMI(JS)
22780           I=IMI(JS,IM,1)
22781 C...Select kT according to truncated gaussian or 1/kt6 tails.
22782 C...For first interaction, either use rms width = PARP(91) or fitted.
22783           IF (IM.EQ.1) THEN
22784             SIGMA=PARP(91)
22785             IF (MSTP(91).GE.11.AND.MSTP(91).LE.20) THEN
22786               Q=SQRT(PT2MI(IM))
22787               SIGMA=SIGPT(Q)
22788             ENDIF
22789           ELSE
22790 C...For subsequent interactions and BR partons use fragmentation width.
22791             SIGMA=PARJ(21)
22792           ENDIF
22793           PHI=PARU(2)*PYR(0)
22794           PT=0D0
22795           IF(NTRY.LE.100) THEN
22796  111        IF (MSTP(91).EQ.1.OR.MSTP(91).EQ.11) THEN
22797               PT=GETPT(Q,SIGMA)
22798               PTX=PT*COS(PHI)
22799               PTY=PT*SIN(PHI)
22800             ELSEIF (MSTP(91).EQ.2) THEN
22801               CALL PYERRM(1,'(PYMIRM:) Sorry, MSTP(91)=2 not '//
22802      &          'available, using MSTP(91)=1.')
22803               CALL PYGIVE('MSTP(91)=1')
22804               GOTO 111
22805             ELSEIF(MSTP(91).EQ.3.OR.MSTP(91).EQ.13) THEN
22806 C...Use distribution with kt**6 tails, rms width = PARP(91).
22807               EPS=SQRT(3D0/2D0)*SIGMA
22808 C...Generate PTX and PTY separately, each propto 1/KT**6
22809               DO 119 IXY=1,2
22810 C...Decide which interval to try
22811  112            P12=1D0/(1D0+27D0/40D0*SIGMA**6/EPS**6)
22812                 IF (PYR(0).LT.P12) THEN
22813 C...Use flat approx with accept/reject up to EPS.
22814                   PT=PYR(0)*EPS
22815                   WT=(3D0/2D0*SIGMA**2/(PT**2+3D0/2D0*SIGMA**2))**3
22816                   IF (PYR(0).GT.WT) GOTO 112
22817                 ELSE
22818 C...Above EPS, use 1/kt**6 approx with accept/reject.
22819                   PT=EPS/(PYR(0)**(1D0/5D0))
22820                   WT=PT**6/(PT**2+3D0/2D0*SIGMA**2)**3
22821                   IF (PYR(0).GT.WT) GOTO 112
22822                 ENDIF
22823                 MSIGN=1
22824                 IF (PYR(0).GT.0.5D0) MSIGN=-1
22825                 IF (IXY.EQ.1) PTX=MSIGN*PT
22826                 IF (IXY.EQ.2) PTY=MSIGN*PT
22827  119          CONTINUE
22828             ELSEIF (MSTP(91).EQ.4.OR.MSTP(91).EQ.14) THEN
22829               PTX=SIGMA*(SQRT(6D0)*PYR(0)-SQRT(3D0/2D0))
22830               PTY=SIGMA*(SQRT(6D0)*PYR(0)-SQRT(3D0/2D0))
22831             ENDIF
22832 C...Adjust final PT. Impose upper cutoff, or zero for soft evts.
22833             PT=SQRT(PTX**2+PTY**2)
22834             WT=1D0
22835             IF (PT.GT.PARP(93)) WT=SQRT(PARP(93)/PT)
22836             IF(ISUB.EQ.95.AND.IM.EQ.1) WT=0D0
22837             PTX=PTX*WT
22838             PTY=PTY*WT
22839             PT=SQRT(PTX**2+PTY**2)
22840           ENDIF
22841  
22842           P(I,1)=P(I,1)+PTX
22843           P(I,2)=P(I,2)+PTY
22844  
22845 C...Compensation kicks, with varying degree of local anticorrelations.
22846           MCORR=MSTP(90)
22847           IF (MCORR.EQ.0.OR.ISUB.EQ.95) THEN
22848             PTCX=-PTX/(NMI(JS)-1)
22849             PTCY=-PTY/(NMI(JS)-1)
22850             IF(ISUB.EQ.95) THEN
22851               PTCX=-PTX/(NMI(JS)-2)
22852               PTCY=-PTY/(NMI(JS)-2)
22853             ENDIF
22854             DO 120 IMC=1,NMI(JS)
22855               IF (IMC.EQ.IM) GOTO 120
22856               IF(ISUB.EQ.95.AND.IMC.EQ.1) GOTO 120
22857               P(IMI(JS,IMC,1),1)=P(IMI(JS,IMC,1),1)+PTCX
22858               P(IMI(JS,IMC,1),2)=P(IMI(JS,IMC,1),2)+PTCY
22859   120       CONTINUE
22860           ELSEIF (MCORR.GE.1) THEN
22861             DO 140 MSID=4,5
22862               NNXT(MSID-3)=0
22863 C...Count up # of neighbours on either side
22864               IMO=I
22865   130         IMO=K(IMO,MSID)/MSTU(5)
22866               IF (IMO.EQ.0) GOTO 140
22867               NNXT(MSID-3)=NNXT(MSID-3)+1
22868 C...Stop at quarks and junctions
22869               IF (MCORR.EQ.1.AND.K(IMO,2).EQ.21) GOTO 130
22870   140       CONTINUE
22871 C...How should compensation be shared when unequal numbers on the
22872 C...two sides? 50/50 regardless? N1:N2? Assume latter for now.
22873             NSUM=NNXT(1)+NNXT(2)
22874             T1=0
22875             DO 160 MSID=4,5
22876 C...Total momentum to be compensated on this side
22877               IF (NNXT(MSID-3).EQ.0) GOTO 160
22878               PTCX=-(NNXT(MSID-3)*PTX)/NSUM
22879               PTCY=-(NNXT(MSID-3)*PTY)/NSUM
22880 C...RS: compensation supression factor as we go out from parton I.
22881 C...Hardcoded behaviour RS=0.5, i.e. 1/2**n falloff,
22882 C...since (for now) MSTP(90) provides enough variability.
22883               RS=0.5D0
22884               FAC=(1D0-RS)/(RS*(1-RS**NNXT(MSID-3)))
22885               IMO=I
22886   150         IDA=IMO
22887               IMO=K(IMO,MSID)/MSTU(5)
22888               IF (IMO.EQ.0) GOTO 160
22889               FAC=FAC*RS
22890               IF (K(IMO,2).NE.88) THEN
22891                 P(IMO,1)=P(IMO,1)+FAC*PTCX
22892                 P(IMO,2)=P(IMO,2)+FAC*PTCY
22893                 IF (MCORR.EQ.1.AND.K(IMO,2).EQ.21) GOTO 150
22894 C...If we reach junction, divide out the kT that would have been
22895 C...assigned to the junction on each of its other legs.
22896               ELSE
22897                 L1=MOD(K(IMO,4),MSTU(5))
22898                 L2=K(IMO,5)/MSTU(5)
22899                 L3=MOD(K(IMO,5),MSTU(5))
22900                 P(L1,1)=P(L1,1)+0.5D0*FAC*PTCX
22901                 P(L1,2)=P(L1,2)+0.5D0*FAC*PTCY
22902                 P(L2,1)=P(L2,1)+0.5D0*FAC*PTCX
22903                 P(L2,2)=P(L2,2)+0.5D0*FAC*PTCY
22904                 P(L3,1)=P(L3,1)+0.5D0*FAC*PTCX
22905                 P(L3,2)=P(L3,2)+0.5D0*FAC*PTCY
22906                 P(IDA,1)=P(IDA,1)-0.5D0*FAC*PTCX
22907                 P(IDA,2)=P(IDA,2)-0.5D0*FAC*PTCY
22908               ENDIF
22909  
22910   160       CONTINUE
22911           ENDIF
22912   170   CONTINUE
22913 C...End assignment of kT values to initiators and remnants.
22914   180 CONTINUE
22915  
22916 C...Check kinematics constraints for non-BR partons.
22917       DO 190 IM=1,MINT(31)
22918         SHAT=XMI(1,IM)*XMI(2,IM)*VINT(2)
22919         PT1=SQRT(P(IMI(1,IM,1),1)**2+P(IMI(1,IM,1),2)**2)
22920         PT2=SQRT(P(IMI(2,IM,1),1)**2+P(IMI(2,IM,1),2)**2)
22921         PT1PT2=P(IMI(1,IM,1),1)*P(IMI(2,IM,1),1)
22922      &        +P(IMI(1,IM,1),2)*P(IMI(2,IM,1),2)
22923         IF (SHAT.LT.2D0*(PT1*PT2-PT1PT2).AND.NTRY.LE.100) THEN
22924           IF(NTRY.GE.100) THEN
22925 C...Kill this event and start another.
22926             CALL PYERRM(1,
22927      &           '(PYMIRM:) No consistent (x,kT) sets found')
22928             MINT(51)=1
22929             RETURN
22930           ENDIF
22931           GOTO 100
22932         ENDIF
22933   190 CONTINUE
22934  
22935 C...Calculate W+ and W- available for combined remnant system.
22936       W(0,1)=VINT(1)
22937       W(0,2)=VINT(1)
22938       DO 200 IM=1,MINT(31)
22939         PT2 = (P(IMI(1,IM,1),1)+P(IMI(2,IM,1),1))**2
22940      &       +(P(IMI(1,IM,1),2)+P(IMI(2,IM,1),2))**2
22941         ST=XMI(1,IM)*XMI(2,IM)*VINT(2)+PT2
22942         W(0,1)=W(0,1)-SQRT(XMI(1,IM)/XMI(2,IM)*ST)
22943         W(0,2)=W(0,2)-SQRT(XMI(2,IM)/XMI(1,IM)*ST)
22944   200 CONTINUE
22945 C...Also store Wrem**2 = W+ * W-
22946       W(0,0)=W(0,1)*W(0,2)
22947  
22948       IF ((W(0,0).LT.0D0.OR.W(0,1)+W(0,2).LT.0D0).AND.NTRY.LE.100) THEN
22949           IF(NTRY.GE.100) THEN
22950 C...Kill this event and start another.
22951             CALL PYERRM(1,
22952      &    '(PYMIRM:) Negative beam remnant mass squared unavoidable')
22953             MINT(51)=1
22954             RETURN
22955           ENDIF
22956           GOTO 100
22957       ENDIF
22958 
22959 C...Assign unscaled x values to partons/hadrons in each of the
22960 C...beam remnants and calculate unscaled W+ and W- from them.
22961       NTRYX=0
22962   210 NTRYX=NTRYX+1
22963       DO 280 JS=1,2
22964         W(JS,1)=0D0
22965         W(JS,2)=0D0
22966         DO 270 IM=MINT(31)+1,NMI(JS)
22967           I=IMI(JS,IM,1)
22968           KF=K(I,2)
22969           KFA=IABS(KF)
22970           ICOMP=IMI(JS,IM,2)
22971  
22972 C...Skip collapsed gluons and junctions. Reset.
22973           IF (KFA.EQ.21.AND.K(I,1).EQ.14) GOTO 270
22974           IF (KFA.EQ.88) GOTO 270
22975           X=0D0
22976           IVALQ(1)=0
22977           IVALQ(2)=0
22978           ICOMQ(1)=0
22979           ICOMQ(2)=0
22980  
22981 C...If gluon then only beam remnant, so takes all.
22982           IF(KFA.EQ.21) THEN
22983             X=1D0
22984 C...If valence quark then use parametrized valence distribution.
22985           ELSEIF(KFA.LE.6.AND.ICOMP.EQ.0) THEN
22986             IVALQ(1)=KF
22987 C...If companion quark then derive from companion x.
22988           ELSEIF(KFA.LE.6) THEN
22989             ICOMQ(1)=ICOMP
22990 C...If valence diquark then use two parametrized valence distributions.
22991           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0.AND.
22992      &    ICOMP.EQ.0) THEN
22993             IVALQ(1)=ISIGN(KFA/1000,KF)
22994             IVALQ(2)=ISIGN(MOD(KFA/100,10),KF)
22995 C...If valence+sea diquark then combine valence + companion choices.
22996           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0.AND.
22997      &    ICOMP.LT.MSTU(5)) THEN
22998             IF(KFA/1000.EQ.IABS(K(ICOMP,2))) THEN
22999               IVALQ(1)=ISIGN(MOD(KFA/100,10),KF)
23000             ELSE
23001               IVALQ(1)=ISIGN(KFA/1000,KF)
23002             ENDIF
23003             ICOMQ(1)=ICOMP
23004 C...Extra code: workaround for diquark made out of two sea
23005 C...quarks, but where not (yet) ICOMP > MSTU(5).
23006             DO 220 IM1=1,MINT(31)
23007               IF(IMI(JS,IM1,2).EQ.I.AND.IMI(JS,IM1,1).NE.ICOMP) THEN
23008                 ICOMQ(2)=IMI(JS,IM1,1)
23009                 IVALQ(1)=0
23010               ENDIF
23011   220       CONTINUE
23012 C...If sea diquark then sum of two derived from companion x.
23013           ELSEIF(KFA.GT.1000.AND.MOD(KFA/10,10).EQ.0) THEN
23014              ICOMQ(1)=MOD(ICOMP,MSTU(5))
23015              ICOMQ(2)=ICOMP/MSTU(5)
23016 C...If meson or baryon then use fragmentation function.
23017 C...Somewhat arbitrary split into old and new flavour, but OK normally.
23018           ELSE
23019             KFL3=MOD(KFA/10,10)
23020             IF(MOD(KFA/1000,10).EQ.0) THEN
23021               KFL1=MOD(KFA/100,10)
23022             ELSE
23023               KFL1=MOD(KFA,10000)-10*KFL3-1
23024               IF(MOD(KFA/1000,10).EQ.MOD(KFA/100,10).AND.
23025      &        MOD(KFA,10).EQ.2) KFL1=KFL1+2
23026             ENDIF
23027             PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
23028             CALL PYZDIS(KFL1,KFL3,PR,X)
23029           ENDIF
23030  
23031           DO 260 IQ=1,2
23032 C...Calculation of x of valence quark: assume form (1-x)^a/sqrt(x),
23033 C...where a=3.5 for u in proton, =2 for d in proton and =0.8 for meson.
23034 C...In other baryons combine u and d from proton appropriately.
23035             IF(IVALQ(IQ).NE.0) THEN
23036               NVAL=0
23037               IF(KFIVAL(JS,1).EQ.IVALQ(IQ)) NVAL=NVAL+1
23038               IF(KFIVAL(JS,2).EQ.IVALQ(IQ)) NVAL=NVAL+1
23039               IF(KFIVAL(JS,3).EQ.IVALQ(IQ)) NVAL=NVAL+1
23040 C...Meson.
23041               IF(KFIVAL(JS,3).EQ.0) THEN
23042                 MDU=0
23043 C...Baryon with three identical quarks: mix u and d forms.
23044               ELSEIF(NVAL.EQ.3) THEN
23045                 MDU=INT(PYR(0)+5D0/3D0)
23046 C...Baryon, one of two identical quarks: u form.
23047               ELSEIF(NVAL.EQ.2) THEN
23048                 MDU=2
23049 C...Baryon with two identical quarks, but not the one picked: d form.
23050               ELSEIF(KFIVAL(JS,1).EQ.KFIVAL(JS,2).OR.KFIVAL(JS,2).EQ.
23051      &        KFIVAL(JS,3).OR.KFIVAL(JS,1).EQ.KFIVAL(JS,3)) THEN
23052                 MDU=1
23053 C...Baryon with three nonidentical quarks: mix u and d forms.
23054               ELSE
23055                 MDU=INT(PYR(0)+5D0/3D0)
23056               ENDIF
23057               XPOW=0.8D0
23058               IF(MDU.EQ.1) XPOW=3.5D0
23059               IF(MDU.EQ.2) XPOW=2D0
23060   230         XX=PYR(0)**2
23061               IF((1D0-XX)**XPOW.LT.PYR(0)) GOTO 230
23062               X=X+XX
23063             ENDIF
23064  
23065 C...Calculation of x of companion quark.
23066             IF(ICOMQ(IQ).NE.0) THEN
23067               XCOMP=1D-4
23068               DO 240 IM1=1,MINT(31)
23069                 IF(IMI(JS,IM1,1).EQ.ICOMQ(IQ)) XCOMP=XMI(JS,IM1)
23070   240         CONTINUE
23071               NPOW=MAX(0,MIN(4,MSTP(87)))
23072   250         XX=XCOMP*(1D0/(1D0-PYR(0)*(1D0-XCOMP))-1D0)
23073               CORR=((1D0-XCOMP-XX)/(1D0-XCOMP))**NPOW*
23074      &        (XCOMP**2+XX**2)/(XCOMP+XX)**2
23075               IF(CORR.LT.PYR(0)) GOTO 250
23076               X=X+XX
23077             ENDIF
23078   260     CONTINUE
23079  
23080 C...Optionally enchance x of composite systems (e.g. diquarks)
23081           IF (KFA.GT.100) X=PARP(79)*X
23082  
23083 C...Store x. Also calculate light cone energies of each system.
23084           XMI(JS,IM)=X
23085           W(JS,JS)=W(JS,JS)+X
23086           W(JS,3-JS)=W(JS,3-JS)+(P(I,5)**2+P(I,1)**2+P(I,2)**2)/X
23087   270   CONTINUE
23088         W(JS,JS)=W(JS,JS)*W(0,JS)
23089         W(JS,3-JS)=W(JS,3-JS)/W(0,JS)
23090         W(JS,0)=W(JS,1)*W(JS,2)
23091   280 CONTINUE
23092  
23093 C...Check W1 W2 < Wrem (can be done before rescaling, since W
23094 C...insensitive to global rescalings of the BR x values).
23095       IF (SQRT(W(1,0))+SQRT(W(2,0)).GT.SQRT(W(0,0)).AND.NTRYX.LE.100)
23096      &     THEN
23097         GOTO 210
23098       ELSEIF (NTRYX.GT.100.AND.NTRY.LE.100) THEN
23099         GOTO 100
23100       ELSEIF (NTRYX.GT.100) THEN
23101         CALL PYERRM(1,'(PYMIRM:) No consistent (x,kT) sets found')
23102         MINT(57)=MINT(57)+1
23103         MINT(51)=1
23104         RETURN
23105       ENDIF
23106  
23107 C...Compute x rescaling factors
23108       COMTRM=W(0,0)+SQRT(FLAM(W(0,0),W(1,0),W(2,0)))
23109       R1=(COMTRM+W(1,0)-W(2,0))/(2D0*W(1,1)*W(0,2))
23110       R2=(COMTRM+W(2,0)-W(1,0))/(2D0*W(2,2)*W(0,1))
23111  
23112       IF (R1.LT.0.OR.R2.LT.0) THEN
23113         CALL PYERRM(19,'(PYMIRM:) negative rescaling factors !')
23114         MINT(57)=MINT(57)+1
23115         MINT(51)=1
23116       ENDIF
23117  
23118 C...Rescale W(1,*) and W(2,*) (not really necessary, but consistent).
23119       W(1,1)=W(1,1)*R1
23120       W(1,2)=W(1,2)/R1
23121       W(2,1)=W(2,1)/R2
23122       W(2,2)=W(2,2)*R2
23123  
23124 C...Rescale BR x values.
23125       DO 290 IM=MINT(31)+1,MAX(NMI(1),NMI(2))
23126         XMI(1,IM)=XMI(1,IM)*R1
23127         XMI(2,IM)=XMI(2,IM)*R2
23128   290 CONTINUE
23129  
23130 C...Now we have a consistent set of x and kT values.
23131 C...First set up the initiators and their daughters correctly.
23132       DO 300 IM=1,MINT(31)
23133         I1=IMI(1,IM,1)
23134         I2=IMI(2,IM,1)
23135         ST=XMI(1,IM)*XMI(2,IM)*VINT(2)+(P(I1,1)+P(I2,1))**2+
23136      &       (P(I1,2)+P(I2,2))**2
23137         PT12=P(I1,1)**2+P(I1,2)**2
23138         PT22=P(I2,1)**2+P(I2,2)**2
23139 C...p_z
23140         P(I1,3)=SQRT(FLAM(ST,PT12,PT22)/(4D0*ST))
23141         P(I2,3)=-P(I1,3)
23142 C...Energies (masses should be zero at this stage)
23143         P(I1,4)=SQRT(PT12+P(I1,3)**2)
23144         P(I2,4)=SQRT(PT22+P(I2,3)**2)
23145  
23146 C...Transverse 12 system initiator velocity:
23147         VB(1)=(P(I1,1)+P(I2,1))/SQRT(ST)
23148         VB(2)=(P(I1,2)+P(I2,2))/SQRT(ST)
23149 C...Boost to overall initiator system rest frame
23150         CALL PYROBO(I1,I1,0D0,0D0,-VB(1),-VB(2),0D0)
23151         CALL PYROBO(I2,I2,0D0,0D0,-VB(1),-VB(2),0D0)
23152 
23153 C...Compute phi,theta coordinates of I1 and rotate z axis.
23154         PHI=PYANGL(P(I1,1),P(I1,2))
23155         THE=PYANGL(P(I1,3),SQRT(P(I1,1)**2+P(I1,2)**2))
23156         IMIN=IMISEP(IM-1)+1
23157 C...(include documentation lines if MI = 1)
23158         IF (IM.EQ.1) IMIN=MINT(83)+5
23159         IMAX=IMISEP(IM)
23160 C...Rotate entire system in phi
23161         CALL PYROBO(IMIN,IMAX,0D0,-PHI,0D0,0D0,0D0)
23162 C...Only rotate 12 system in theta
23163         CALL PYROBO(I1,I1,-THE,0D0,0D0,0D0,0D0)
23164         CALL PYROBO(I2,I2,-THE,0D0,0D0,0D0,0D0)
23165 
23166 C...Now boost entire system back to LAB
23167         VB(3)=(XMI(1,IM)-XMI(2,IM))/(XMI(1,IM)+XMI(2,IM))
23168         CALL PYROBO(IMIN,IMAX,THE,PHI,VB(1),VB(2),0D0)
23169         CALL PYROBO(IMIN,IMAX,0D0,0D0,0D0,0D0,VB(3))
23170 
23171   300 CONTINUE
23172  
23173  
23174 C...For the beam remnant partons/hadrons, we only need to set pz and E.
23175       DO 320 JS=1,2
23176         DO 310 IM=MINT(31)+1,NMI(JS)
23177           I=IMI(JS,IM,1)
23178 C...Skip collapsed gluons and junctions.
23179           IF (K(I,2).EQ.21.AND.K(I,1).EQ.14) GOTO 310
23180           IF (KFA.EQ.88) GOTO 310
23181           RMT2=P(I,5)**2+P(I,1)**2+P(I,2)**2
23182           P(I,4)=0.5D0*(XMI(JS,IM)*W(0,JS)+RMT2/(XMI(JS,IM)*W(0,JS)))
23183           P(I,3)=0.5D0*(XMI(JS,IM)*W(0,JS)-RMT2/(XMI(JS,IM)*W(0,JS)))
23184           IF (JS.EQ.2) P(I,3)=-P(I,3)
23185   310   CONTINUE
23186   320 CONTINUE
23187  
23188  
23189 C...Documentation lines
23190       DO 340 JS=1,2
23191         IN=MINT(83)+JS+2
23192         IO=IMI(JS,1,1)
23193         K(IN,1)=21
23194         K(IN,2)=K(IO,2)
23195         K(IN,3)=MINT(83)+JS
23196         K(IN,4)=0
23197         K(IN,5)=0
23198         DO 330 J=1,5
23199           P(IN,J)=P(IO,J)
23200           V(IN,J)=V(IO,J)
23201   330   CONTINUE
23202         MCT(IN,1)=MCT(IO,1)
23203         MCT(IN,2)=MCT(IO,2)
23204   340 CONTINUE
23205  
23206 C...Final state colour reconnections.
23207       IF (MSTP(95).NE.1.OR.MINT(31).LE.1) GOTO 380
23208  
23209 C...Number of colour tags for which a recoupling will be tried.
23210       NTOT=NCT
23211 C...Number of recouplings to try
23212       MINT(34)=0
23213       NRECP=0
23214       NITER=0
23215   350 NRECP=MINT(34)
23216       NITER=NITER+1
23217       IITER=0
23218   360 IITER=IITER+1
23219       IF (IITER.LE.PARP(78)*NTOT) THEN
23220 C...Select two colour tags at random
23221 C...NB: jj strings do not have colour tags assigned to them,
23222 C...thus they are as yet not affected by anything done here.
23223         JCT=PYR(0)*NCT+1
23224         KCT=MOD(INT(JCT+PYR(0)*NCT),NCT)+1
23225         IJ1=0
23226         IJ2=0
23227         IK1=0
23228         IK2=0
23229 C...Find final state partons with this (anti)colour
23230         DO 370 I=MINT(84)+1,N
23231           IF (K(I,1).EQ.3) THEN
23232             IF (MCT(I,1).EQ.JCT) IJ1=I
23233             IF (MCT(I,2).EQ.JCT) IJ2=I
23234             IF (MCT(I,1).EQ.KCT) IK1=I
23235             IF (MCT(I,2).EQ.KCT) IK2=I
23236           ENDIF
23237   370   CONTINUE
23238 C...Only consider recouplings not involving junctions for now.
23239         IF (IJ1.EQ.0.OR.IJ2.EQ.0.OR.IK1.EQ.0.OR.IK2.EQ.0) GOTO 360
23240  
23241         RLO=2D0*FOUR(IJ1,IJ2)*2D0*FOUR(IK1,IK2)
23242         RLN=2D0*FOUR(IJ1,IK2)*2D0*FOUR(IK1,IJ2)
23243         IF (RLN.LT.RLO.AND.MCT(IJ2,1).NE.KCT.AND.MCT(IK2,1).NE.JCT) THEN
23244           MCT(IJ2,2)=KCT
23245           MCT(IK2,2)=JCT
23246 C...Count up number of reconnections
23247           MINT(34)=MINT(34)+1
23248         ENDIF
23249         IF (MINT(34).LE.1000) THEN
23250           GOTO 360
23251         ELSE
23252           CALL PYERRM(4,'(PYMIRM:) caught in infinite loop')
23253           GOTO 380
23254         ENDIF
23255       ENDIF
23256       IF (NRECP.LT.MINT(34)) GOTO 350
23257  
23258 C...Signal PYPREP to use /PYCTAG/ information rather than K(I,KCS).
23259   380 MINT(33)=1
23260  
23261       RETURN
23262       END
23263 
23264 C*********************************************************************
23265  
23266 C...PYFSCR
23267 C...Performs colour annealing.
23268 C...MSTP(95) : CR Type
23269 C...         = 1  : old cut-and-paste reconnections, handled in PYMIHK
23270 C...         = 2  : Type I(no gg loops); hadron-hadron only
23271 C...         = 3  : Type I(no gg loops); all beams
23272 C...         = 4  : Type II(gg loops)  ; hadron-hadron only
23273 C...         = 5  : Type II(gg loops)  ; all beams
23274 C...         = 6  : Type S             ; hadron-hadron only
23275 C...         = 7  : Type S             ; all beams
23276 C...Types I and II are described in Sandhoff+Skands, in hep-ph/0604120.
23277 C...Type S is driven by starting only from free triplets, not octets.
23278 C...A string piece remains unchanged with probability
23279 C...    PKEEP = (1-PARP(78))**N
23280 C...This scaling corresponds to each string piece having to go through
23281 C...N other ones, each with probability PARP(78) for reconnection, where
23282 C...N is here chosen simply as the number of multiple interactions,
23283 C...for a rough scaling with the general level of activity.
23284  
23285       SUBROUTINE PYFSCR(IP)
23286 C...Double precision and integer declarations.
23287       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23288       INTEGER PYK,PYCHGE,PYCOMP
23289 C...Commonblocks.
23290       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
23291       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23292       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23293       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23294       COMMON/PYINT1/MINT(400),VINT(400)
23295 C...The common block of colour tags.
23296       COMMON/PYCTAG/NCT,MCT(4000,2)
23297       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/,/PYCTAG/,
23298      &/PYPARS/
23299 C...MCN: Temporary storage of new colour tags
23300       INTEGER MCN(4000,2)
23301 C...Arrays for storing color string lengths
23302       INTEGER ICR(4000),MSCR(4000)
23303       INTEGER IOPT(4000)
23304       DOUBLE PRECISION RLOPTC(4000)
23305  
23306 C...Function to give four-product.
23307       FOUR(I,J)=P(I,4)*P(J,4)
23308      &          -P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3)
23309  
23310 C...Check valid range of MSTP(95), local copy
23311       IF (MSTP(95).LE.1.OR.MSTP(95).GE.10) RETURN
23312       MSTP95=MOD(MSTP(95),10)
23313 C...Set whether CR allowed inside resonance systems or not
23314 C...(not implemented yet)
23315 C      MRESCR=1
23316 C      IF (MSTP(95).GE.10) MRESCR=0
23317  
23318 C...Check whether colour tags already defined
23319       IF (MINT(33).EQ.0) THEN
23320 C...Erase any existing colour tags for this event
23321         DO 100 I=1,N
23322           MCT(I,1)=0
23323           MCT(I,2)=0
23324  100    CONTINUE
23325 C...Create colour tags for this event
23326         DO 120 I=1,N
23327           IF (K(I,1).EQ.3) THEN
23328             DO 110 KCS=4,5
23329               KCSIN=KCS
23330               IF (MCT(I,KCSIN-3).EQ.0) THEN
23331                 CALL PYCTTR(I,KCSIN,I)
23332               ENDIF
23333  110        CONTINUE
23334           ENDIF
23335  120    CONTINUE
23336 C...Instruct PYPREP to use colour tags
23337         MINT(33)=1
23338       ENDIF
23339  
23340 C...For MSTP(95) even, only apply to hadron-hadron
23341       KA1=IABS(MINT(11))
23342       KA2=IABS(MINT(12))
23343       IF (MOD(MSTP(95),2).EQ.0.AND.(KA1.LT.100.OR.KA2.LT.100)) GOTO 9999
23344  
23345 C...Initialize new tag array (but do not delete old yet)
23346       LCT=NCT
23347       DO 130 I=MAX(1,IP),N
23348          MCN(I,1)=0
23349          MCN(I,2)=0
23350   130 CONTINUE
23351  
23352 C...For each final-state dipole, check whether string should be
23353 C...preserved.
23354       NCR=0
23355       IA=0
23356       IC=0
23357       
23358       DO 150 ICT=1,NCT
23359         IA=0
23360         IC=0
23361         DO 140 I=MAX(1,IP),N
23362           IF (K(I,1).EQ.3.AND.MCT(I,1).EQ.ICT) IC=I
23363           IF (K(I,1).EQ.3.AND.MCT(I,2).EQ.ICT) IA=I
23364   140   CONTINUE
23365         IF (IC.NE.0.AND.IA.NE.0) THEN
23366           CRMODF=1D0
23367 C...Opt: suppress breakup of high-boost string pieces (i.e., let them escape)
23368 C...(so far ignores the possibility that the whole "muck" may be moving.)
23369           IF (PARP(77).GT.0D0) THEN
23370             PT2STR=(P(IA,1)+P(IC,1))**2+(P(IA,2)+P(IC,2))**2
23371 C...For lepton-lepton, use actual p2/m2, otherwise approximate p2 ~ 3/2 pT2
23372             IF (KA1.LT.100.AND.KA2.LT.100) THEN
23373               P2STR = PT2STR + (P(IA,3)+P(IC,3))**2
23374             ELSE
23375               P2STR = 3D0/2D0 * PT2STR
23376             ENDIF
23377             RM2STR=(P(IA,4)+P(IC,4))**2-(P(IA,3)+P(IC,3))**2-PT2STR
23378             RM2STR=MAX(RM2STR,PMAS(PYCOMP(111),1)**2)
23379 C...Estimate number of particles ~ log(M2), cut off at 1.
23380             RLOGM2=MAX(1D0,LOG(RM2STR))
23381             P2AVG=P2STR/RLOGM2
23382 C...Supress reconnection probability by 1/(1+P77*P2AVG)
23383             CRMODF=1D0/(1D0+PARP(77)**2*P2AVG)
23384           ENDIF
23385           PKEEP=(1D0-PARP(78)*CRMODF)**MINT(31)
23386           IF (PYR(0).LE.PKEEP) THEN
23387             LCT=LCT+1
23388             MCN(IC,1)=LCT
23389             MCN(IA,2)=LCT
23390           ELSE
23391 C...Add coloured parton
23392             NCR=NCR+1
23393             ICR(NCR)=IC
23394             MSCR(NCR)=1
23395             IOPT(NCR)=0
23396             RLOPTC(NCR)=1D19
23397 C...Add anti-coloured parton
23398             NCR=NCR+1
23399             ICR(NCR)=IA   
23400             MSCR(NCR)=2
23401             IOPT(NCR)=0
23402             RLOPTC(NCR)=1D19
23403           ENDIF
23404         ENDIF
23405   150 CONTINUE
23406  
23407 C...Skip if there is only one possibility
23408       IF (NCR.LE.2) THEN
23409         GOTO 9999
23410       ENDIF
23411 
23412 C...Reorder, so ordered in I (in order to correspond to old algorithm)
23413       NLOOP=0
23414  151  NLOOP=NLOOP+1
23415       MORD=1
23416       DO 155 IC1=1,NCR-1
23417         I1=ICR(IC1)
23418         I2=ICR(IC1+1)
23419         IF (I1.GT.I2) THEN
23420           IT=I1
23421           MST=MSCR(IC1)
23422           ICR(IC1)=I2
23423           MSCR(IC1)=MSCR(IC1+1)
23424           ICR(IC1+1)=IT
23425           MSCR(IC1+1)=MST
23426           MORD=0
23427         ENDIF
23428  155  CONTINUE
23429 C...Max do 1000 reordering loops
23430       IF (MORD.EQ.0.AND.NLOOP.LE.1000) GOTO 151
23431 
23432 C...Loop over CR partons
23433 C...(Ignore junctions for now.)
23434       NLOOP=0
23435   160 NLOOP=NLOOP+1
23436       RLMAX=0D0
23437       ICRMAX=0
23438 C...Loop over coloured partons
23439       DO 230 IC1=1,NCR
23440 C...Retrieve parton Event Record index and Colour Side
23441         I=ICR(IC1)
23442         MSI=MSCR(IC1)
23443 C...Skip already connected partons        
23444         IF (MCN(I,MSI).NE.0) GOTO 230
23445 C...Shorthand for colour charge
23446         MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
23447 C...For Seattle algorithm, only start from partons with one dangling
23448 C...colour tag
23449         IF (MSTP(95).GE.6.AND.MSTP(95).LE.9) THEN
23450           IF (MCI.EQ.2.AND.MCN(I,1).EQ.0.AND.MCN(I,2).EQ.0) GOTO 230
23451         ENDIF
23452 C...Retrieve saved optimal partner                
23453         IO=IOPT(IC1) 
23454         IF (IO.NE.0) THEN 
23455 C...Reject saved optimal partner if latter is now connected
23456 C...(Also reject if using model S1, since saved partner may
23457 C...now give rise to gg loop.)
23458           IF (MCN(IO,3-MSI).NE.0.OR.MSTP(95).LE.3) THEN
23459             IOPT(IC1)=0
23460             RLOPTC(IC1)=1D19
23461           ENDIF
23462         ENDIF
23463         RLOPT=RLOPTC(IC1)
23464 C...Search for new optimal partner if necessary
23465         IF (IOPT(IC1).EQ.0) THEN
23466           MBROPT=0
23467           MGGOPT=0
23468           RLOPT=1D19
23469 C...Loop over partons you can connect to
23470           DO 210 IC2=1,NCR
23471             J=ICR(IC2)
23472             MSJ=MSCR(IC2)
23473 C...Skip if already connected
23474             IF (MCN(J,MSJ).NE.0) GOTO 210
23475 C...Skip if this not colour-anticolour pair
23476             IF (MSI.EQ.MSJ) GOTO 210          
23477 C...And do not let gluons connect to themselves
23478             IF (I.EQ.J) GOTO 210
23479 C...Suppress direct connections between partons in same Beam Remnant
23480             MBRSTR=0
23481             IF (K(I,3).LE.2.AND.K(I,3).GE.1.AND.K(I,3).EQ.K(J,3))
23482      &          MBRSTR=1
23483 C...Shorthand for colour charge
23484             MCJ=KCHG(PYCOMP(K(J,2)),2)*ISIGN(1,K(J,2))
23485 C...Check for gluon loops
23486             MGGSTR=0
23487             IF (MCJ.EQ.2.AND.MCI.EQ.2) THEN
23488               IF (MCN(I,2).EQ.MCN(J,1).AND.MSTP(95).LE.3.AND.
23489      &            MCN(I,2).NE.0) MGGSTR=1
23490             ENDIF
23491 C...Save connection with smallest lambda measure
23492             RL=FOUR(I,J)
23493 C...Optional: Seattle v2: multiply gluons by 1/2 since two strings connected
23494             IF (MSTP(95).GE.7.AND.MSTP(95).LE.8) THEN
23495               IF (K(I,2).EQ.21) RL=0.5D0*RL
23496               IF (K(J,2).EQ.21) RL=0.5D0*RL
23497             ENDIF
23498 C...If best so far was a BR string and this is not, also save.
23499 C...If best so far was a gg string and this is not, also save.
23500 C...NB: this is not fool-proof. If the algorithm finds a BR or gg
23501 C...string with a small Lambda measure as the last step, this connection
23502 C...will be saved regardless of whether other possibilities existed.
23503 C...I.e., there should really be a check whether another possibility has
23504 C...already been found, but since these models are now actively in use
23505 C...and uncertainties are anyway large, the algorithm is left as it is. 
23506 C...(correction --> Pythia 8 ?)
23507             IF (RL.LT.RLOPT.OR.(RL.EQ.RLOPT.AND.PYR(0).LE.0.5D0)
23508      &          .OR.(MBROPT.EQ.1.AND.MBRSTR.EQ.0)
23509      &          .OR.(MGGOPT.EQ.1.AND.MGGSTR.EQ.0)) THEN
23510               RLOPT=RL
23511               RLOPTC(IC1)=RLOPT
23512               IOPT(IC1)=J
23513               MBROPT=MBRSTR
23514               MGGOPT=MGGSTR
23515             ENDIF
23516  210      CONTINUE
23517         ENDIF
23518         IF (IOPT(IC1).NE.0) THEN
23519 C...Save pair with largest RLOPT so far
23520           IF (RLOPT.GE.RLMAX) THEN
23521             ICRMAX=IC1
23522             RLMAX=RLOPT
23523           ENDIF
23524         ENDIF
23525  230  CONTINUE
23526 C...Save and iterate
23527       IF (ICRMAX.GT.0) THEN
23528         LCT=LCT+1
23529         ILMAX=ICR(ICRMAX)
23530         JLMAX=IOPT(ICRMAX)
23531         ICMAX=MSCR(ICRMAX)
23532         JCMAX=3-ICMAX
23533         MCN(ILMAX,ICMAX)=LCT
23534         MCN(JLMAX,JCMAX)=LCT        
23535         IF (NLOOP.LE.2*(N-IP)) THEN
23536           GOTO 160
23537         ELSE
23538           CALL PYERRM(31,' PYFSCR: infinite loop in color annealing')
23539           CALL PYSTOP(11)
23540         ENDIF
23541       ELSE
23542 C...Save and exit. First check for leftover gluon(s)
23543         DO 260 I=MAX(1,IP),N
23544 C...Check colour charge
23545           MCI=KCHG(PYCOMP(K(I,2)),2)*ISIGN(1,K(I,2))
23546           IF (K(I,1).NE.3.OR.MCI.NE.2) GOTO 260
23547           IF(MCN(I,1).EQ.0.AND.MCN(I,2).EQ.0) THEN
23548 C...Decide where to put left-over gluon (minimal insertion)
23549             ILMAX=0
23550             RLMAX=1D19
23551             DO 250 KCT=NCT+1,LCT
23552               DO 240 IT=MAX(1,IP),N
23553                 IF (IT.EQ.I.OR.K(IT,1).NE.3) GOTO 240
23554                 IF (MCN(IT,1).EQ.KCT) IC=IT
23555                 IF (MCN(IT,2).EQ.KCT) IA=IT
23556  240          CONTINUE
23557               RL=FOUR(IC,I)*FOUR(IA,I)
23558               IF (RL.LT.RLMAX) THEN
23559                 RLMAX=RL
23560                 ICMAX=IC
23561                 IAMAX=IA
23562               ENDIF
23563  250        CONTINUE
23564             LCT=LCT+1
23565             MCN(I,1)=MCN(ICMAX,1)
23566             MCN(I,2)=LCT
23567             MCN(ICMAX,1)=LCT
23568           ENDIF
23569  260    CONTINUE
23570 C...Here we need to loop over entire event.
23571         DO 270 IZ=MAX(1,IP),N
23572 C...Do not erase parton shower colour history
23573           IF (K(IZ,1).NE.3) GOTO 270
23574 C...Check colour charge
23575           MCI=KCHG(PYCOMP(K(IZ,2)),2)*ISIGN(1,K(IZ,2))
23576           IF (MCI.EQ.0) GOTO 270
23577           IF (MCN(IZ,1).NE.0) MCT(IZ,1)=MCN(IZ,1)
23578           IF (MCN(IZ,2).NE.0) MCT(IZ,2)=MCN(IZ,2)
23579  270    CONTINUE
23580       ENDIF
23581       
23582  9999 RETURN
23583       END
23584 
23585 C*********************************************************************
23586  
23587 C...PYDIFF
23588 C...Handles diffractive and elastic scattering.
23589  
23590       SUBROUTINE PYDIFF
23591  
23592 C...Double precision and integer declarations.
23593       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23594       IMPLICIT INTEGER(I-N)
23595       INTEGER PYK,PYCHGE,PYCOMP
23596 C...Commonblocks.
23597       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
23598       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23599       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23600       COMMON/PYINT1/MINT(400),VINT(400)
23601       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
23602  
23603 C...Reset K, P and V vectors. Store incoming particles.
23604       DO 110 JT=1,MSTP(126)+10
23605         I=MINT(83)+JT
23606         DO 100 J=1,5
23607           K(I,J)=0
23608           P(I,J)=0D0
23609           V(I,J)=0D0
23610   100   CONTINUE
23611   110 CONTINUE
23612       N=MINT(84)
23613       MINT(3)=0
23614       MINT(21)=0
23615       MINT(22)=0
23616       MINT(23)=0
23617       MINT(24)=0
23618       MINT(4)=4
23619       DO 130 JT=1,2
23620         I=MINT(83)+JT
23621         K(I,1)=21
23622         K(I,2)=MINT(10+JT)
23623         DO 120 J=1,5
23624           P(I,J)=VINT(285+5*JT+J)
23625   120   CONTINUE
23626   130 CONTINUE
23627       MINT(6)=2
23628  
23629 C...Subprocess; kinematics.
23630       SQLAM=(VINT(2)-VINT(63)-VINT(64))**2-4D0*VINT(63)*VINT(64)
23631       PZ=SQRT(SQLAM)/(2D0*VINT(1))
23632       DO 200 JT=1,2
23633         I=MINT(83)+JT
23634         PE=(VINT(2)+VINT(62+JT)-VINT(65-JT))/(2D0*VINT(1))
23635         KFH=MINT(102+JT)
23636  
23637 C...Elastically scattered particle. (Except elastic GVMD states.)
23638         IF(MINT(16+JT).LE.0.AND.(MINT(10+JT).NE.22.OR.
23639      &  MINT(106+JT).NE.3)) THEN
23640           N=N+1
23641           K(N,1)=1
23642           K(N,2)=KFH
23643           K(N,3)=I+2
23644           P(N,3)=PZ*(-1)**(JT+1)
23645           P(N,4)=PE
23646           P(N,5)=SQRT(VINT(62+JT))
23647  
23648 C...Decay rho from elastic scattering of gamma with sin**2(theta)
23649 C...distribution of decay products (in rho rest frame).
23650           IF(KFH.EQ.113.AND.MINT(10+JT).EQ.22.AND.MSTP(102).EQ.1) THEN
23651             NSAV=N
23652             DBETAZ=P(N,3)/SQRT(P(N,3)**2+P(N,5)**2)
23653             P(N,3)=0D0
23654             P(N,4)=P(N,5)
23655             CALL PYDECY(NSAV)
23656             IF(N.EQ.NSAV+2.AND.IABS(K(NSAV+1,2)).EQ.211) THEN
23657               PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
23658               CALL PYROBO(NSAV+1,NSAV+2,0D0,-PHI,0D0,0D0,0D0)
23659               THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
23660               CALL PYROBO(NSAV+1,NSAV+2,-THE,0D0,0D0,0D0,0D0)
23661   140         CTHE=2D0*PYR(0)-1D0
23662               IF(1D0-CTHE**2.LT.PYR(0)) GOTO 140
23663               CALL PYROBO(NSAV+1,NSAV+2,ACOS(CTHE),PHI,0D0,0D0,0D0)
23664             ENDIF
23665             CALL PYROBO(NSAV,NSAV+2,0D0,0D0,0D0,0D0,DBETAZ)
23666           ENDIF
23667  
23668 C...Diffracted particle: low-mass system to two particles.
23669         ELSEIF(VINT(62+JT).LT.(VINT(66+JT)+PARP(103))**2) THEN
23670           N=N+2
23671           K(N-1,1)=1
23672           K(N,1)=1
23673           K(N-1,3)=I+2
23674           K(N,3)=I+2
23675           PMMAS=SQRT(VINT(62+JT))
23676           NTRY=0
23677   150     NTRY=NTRY+1
23678           IF(NTRY.LT.20) THEN
23679             MINT(105)=MINT(102+JT)
23680             MINT(109)=MINT(106+JT)
23681             CALL PYSPLI(KFH,21,KFL1,KFL2)
23682             CALL PYKFDI(KFL1,0,KFL3,KF1)
23683             IF(KF1.EQ.0) GOTO 150
23684             CALL PYKFDI(KFL2,-KFL3,KFLDUM,KF2)
23685             IF(KF2.EQ.0) GOTO 150
23686           ELSE
23687             KF1=KFH
23688             KF2=111
23689           ENDIF
23690           PM1=PYMASS(KF1)
23691           PM2=PYMASS(KF2)
23692           IF(PM1+PM2+PARJ(64).GT.PMMAS) GOTO 150
23693           K(N-1,2)=KF1
23694           K(N,2)=KF2
23695           P(N-1,5)=PM1
23696           P(N,5)=PM2
23697           PZP=SQRT(MAX(0D0,(PMMAS**2-PM1**2-PM2**2)**2-
23698      &    4D0*PM1**2*PM2**2))/(2D0*PMMAS)
23699           P(N-1,3)=PZP
23700           P(N,3)=-PZP
23701           P(N-1,4)=SQRT(PM1**2+PZP**2)
23702           P(N,4)=SQRT(PM2**2+PZP**2)
23703           CALL PYROBO(N-1,N,ACOS(2D0*PYR(0)-1D0),PARU(2)*PYR(0),
23704      &    0D0,0D0,0D0)
23705           DBETAZ=PZ*(-1)**(JT+1)/SQRT(PZ**2+PMMAS**2)
23706           CALL PYROBO(N-1,N,0D0,0D0,0D0,0D0,DBETAZ)
23707  
23708 C...Diffracted particle: valence quark kicked out.
23709         ELSEIF(MSTP(101).EQ.1.OR.(MSTP(101).EQ.3.AND.PYR(0).LT.
23710      &    PARP(101))) THEN
23711           N=N+2
23712           K(N-1,1)=2
23713           K(N,1)=1
23714           K(N-1,3)=I+2
23715           K(N,3)=I+2
23716           MINT(105)=MINT(102+JT)
23717           MINT(109)=MINT(106+JT)
23718           CALL PYSPLI(KFH,21,K(N,2),K(N-1,2))
23719           P(N-1,5)=PYMASS(K(N-1,2))
23720           P(N,5)=PYMASS(K(N,2))
23721           SQLAM=(VINT(62+JT)-P(N-1,5)**2-P(N,5)**2)**2-
23722      &    4D0*P(N-1,5)**2*P(N,5)**2
23723           P(N-1,3)=(PE*SQRT(SQLAM)+PZ*(VINT(62+JT)+P(N-1,5)**2-
23724      &    P(N,5)**2))/(2D0*VINT(62+JT))*(-1)**(JT+1)
23725           P(N-1,4)=SQRT(P(N-1,3)**2+P(N-1,5)**2)
23726           P(N,3)=PZ*(-1)**(JT+1)-P(N-1,3)
23727           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
23728  
23729 C...Diffracted particle: gluon kicked out.
23730         ELSE
23731           N=N+3
23732           K(N-2,1)=2
23733           K(N-1,1)=2
23734           K(N,1)=1
23735           K(N-2,3)=I+2
23736           K(N-1,3)=I+2
23737           K(N,3)=I+2
23738           MINT(105)=MINT(102+JT)
23739           MINT(109)=MINT(106+JT)
23740           CALL PYSPLI(KFH,21,K(N,2),K(N-2,2))
23741           K(N-1,2)=21
23742           P(N-2,5)=PYMASS(K(N-2,2))
23743           P(N-1,5)=0D0
23744           P(N,5)=PYMASS(K(N,2))
23745 C...Energy distribution for particle into two jets.
23746   160     IMB=1
23747           IF(MOD(KFH/1000,10).NE.0) IMB=2
23748           CHIK=PARP(92+2*IMB)
23749           IF(MSTP(92).LE.1) THEN
23750             IF(IMB.EQ.1) CHI=PYR(0)
23751             IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
23752           ELSEIF(MSTP(92).EQ.2) THEN
23753             CHI=1D0-PYR(0)**(1D0/(1D0+CHIK))
23754           ELSEIF(MSTP(92).EQ.3) THEN
23755             CUT=2D0*0.3D0/VINT(1)
23756   170       CHI=PYR(0)**2
23757             IF((CHI**2/(CHI**2+CUT**2))**0.25D0*(1D0-CHI)**CHIK.LT.
23758      &      PYR(0)) GOTO 170
23759           ELSEIF(MSTP(92).EQ.4) THEN
23760             CUT=2D0*0.3D0/VINT(1)
23761             CUTR=(1D0+SQRT(1D0+CUT**2))/CUT
23762   180       CHIR=CUT*CUTR**PYR(0)
23763             CHI=(CHIR**2-CUT**2)/(2D0*CHIR)
23764             IF((1D0-CHI)**CHIK.LT.PYR(0)) GOTO 180
23765           ELSE
23766             CUT=2D0*0.3D0/VINT(1)
23767             CUTA=CUT**(1D0-PARP(98))
23768             CUTB=(1D0+CUT)**(1D0-PARP(98))
23769   190       CHI=(CUTA+PYR(0)*(CUTB-CUTA))**(1D0/(1D0-PARP(98)))
23770             IF(((CHI+CUT)**2/(2D0*(CHI**2+CUT**2)))**
23771      &      (0.5D0*PARP(98))*(1D0-CHI)**CHIK.LT.PYR(0)) GOTO 190
23772           ENDIF
23773           IF(CHI.LT.P(N,5)**2/VINT(62+JT).OR.CHI.GT.1D0-P(N-2,5)**2/
23774      &    VINT(62+JT)) GOTO 160
23775           SQM=P(N-2,5)**2/(1D0-CHI)+P(N,5)**2/CHI
23776           PZI=(PE*(VINT(62+JT)-SQM)+PZ*(VINT(62+JT)+SQM))/
23777      &    (2D0*VINT(62+JT))
23778           PEI=SQRT(PZI**2+SQM)
23779           PQQP=(1D0-CHI)*(PEI+PZI)
23780           P(N-2,3)=0.5D0*(PQQP-P(N-2,5)**2/PQQP)*(-1)**(JT+1)
23781           P(N-2,4)=SQRT(P(N-2,3)**2+P(N-2,5)**2)
23782           P(N-1,4)=0.5D0*(VINT(62+JT)-SQM)/(PEI+PZI)
23783           P(N-1,3)=P(N-1,4)*(-1)**JT
23784           P(N,3)=PZI*(-1)**(JT+1)-P(N-2,3)
23785           P(N,4)=SQRT(P(N,3)**2+P(N,5)**2)
23786         ENDIF
23787  
23788 C...Documentation lines.
23789         K(I+2,1)=21
23790         IF(MINT(16+JT).EQ.0) K(I+2,2)=KFH
23791         IF(MINT(16+JT).NE.0.OR.(MINT(10+JT).EQ.22.AND.
23792      &  MINT(106+JT).EQ.3)) K(I+2,2)=ISIGN(9900000,KFH)+10*(KFH/10)
23793         K(I+2,3)=I
23794         P(I+2,3)=PZ*(-1)**(JT+1)
23795         P(I+2,4)=PE
23796         P(I+2,5)=SQRT(VINT(62+JT))
23797   200 CONTINUE
23798  
23799 C...Rotate outgoing partons/particles using cos(theta).
23800       IF(VINT(23).LT.0.9D0) THEN
23801         CALL PYROBO(MINT(83)+3,N,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0)
23802       ELSE
23803         CALL PYROBO(MINT(83)+3,N,ASIN(VINT(59)),VINT(24),0D0,0D0,0D0)
23804       ENDIF
23805  
23806       RETURN
23807       END
23808  
23809 C*********************************************************************
23810  
23811 C...PYDISG
23812 C...Set up a DIS process as gamma* + f -> f, with beam remnant
23813 C...and showering added consecutively. Photon flux by the PYGAGA
23814 C...routine (if at all).
23815  
23816       SUBROUTINE PYDISG
23817  
23818 C...Double precision and integer declarations.
23819       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
23820       IMPLICIT INTEGER(I-N)
23821       INTEGER PYK,PYCHGE,PYCOMP
23822 C...Parameter statement to help give large particle numbers.
23823       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
23824      &KEXCIT=4000000,KDIMEN=5000000)
23825 C...Commonblocks.
23826       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
23827       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
23828       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
23829       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
23830       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
23831       COMMON/PYINT1/MINT(400),VINT(400)
23832       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/
23833 C...Local arrays.
23834       DIMENSION PMS(4)
23835  
23836 C...Choice of subprocess, number of documentation lines
23837       IDOC=7
23838       MINT(3)=IDOC-6
23839       MINT(4)=IDOC
23840       IPU1=MINT(84)+1
23841       IPU2=MINT(84)+2
23842       IPU3=MINT(84)+3
23843       ISIDE=1
23844       IF(MINT(107).EQ.4) ISIDE=2
23845  
23846 C...Reset K, P and V vectors. Store incoming particles
23847       DO 110 JT=1,MSTP(126)+20
23848         I=MINT(83)+JT
23849         DO 100 J=1,5
23850           K(I,J)=0
23851           P(I,J)=0D0
23852           V(I,J)=0D0
23853   100   CONTINUE
23854   110 CONTINUE
23855       DO 130 JT=1,2
23856         I=MINT(83)+JT
23857         K(I,1)=21
23858         K(I,2)=MINT(10+JT)
23859         DO 120 J=1,5
23860           P(I,J)=VINT(285+5*JT+J)
23861   120   CONTINUE
23862   130 CONTINUE
23863       MINT(6)=2
23864  
23865 C...Store incoming partons in hadronic CM-frame
23866       DO 140 JT=1,2
23867         I=MINT(84)+JT
23868         K(I,1)=14
23869         K(I,2)=MINT(14+JT)
23870         K(I,3)=MINT(83)+2+JT
23871   140 CONTINUE
23872       IF(MINT(15).EQ.22) THEN
23873         P(MINT(84)+1,3)=0.5D0*(VINT(1)+VINT(307)/VINT(1))
23874         P(MINT(84)+1,4)=0.5D0*(VINT(1)-VINT(307)/VINT(1))
23875         P(MINT(84)+1,5)=-SQRT(VINT(307))
23876         P(MINT(84)+2,3)=-0.5D0*VINT(307)/VINT(1)
23877         P(MINT(84)+2,4)=0.5D0*VINT(307)/VINT(1)
23878         KFRES=MINT(16)
23879         ISIDE=2
23880       ELSE
23881         P(MINT(84)+1,3)=0.5D0*VINT(308)/VINT(1)
23882         P(MINT(84)+1,4)=0.5D0*VINT(308)/VINT(1)
23883         P(MINT(84)+2,3)=-0.5D0*(VINT(1)+VINT(308)/VINT(1))
23884         P(MINT(84)+2,4)=0.5D0*(VINT(1)-VINT(308)/VINT(1))
23885         P(MINT(84)+1,5)=-SQRT(VINT(308))
23886         KFRES=MINT(15)
23887         ISIDE=1
23888       ENDIF
23889       SIDESG=(-1D0)**(ISIDE-1)
23890  
23891 C...Copy incoming partons to documentation lines.
23892       DO 170 JT=1,2
23893         I1=MINT(83)+4+JT
23894         I2=MINT(84)+JT
23895         K(I1,1)=21
23896         K(I1,2)=K(I2,2)
23897         K(I1,3)=I1-2
23898         DO 150 J=1,5
23899           P(I1,J)=P(I2,J)
23900   150   CONTINUE
23901  
23902 C...Second copy for partons before ISR shower, since no such.
23903         I1=MINT(83)+2+JT
23904         K(I1,1)=21
23905         K(I1,2)=K(I2,2)
23906         K(I1,3)=I1-2
23907         DO 160 J=1,5
23908           P(I1,J)=P(I2,J)
23909   160   CONTINUE
23910   170 CONTINUE
23911  
23912 C...Define initial partons.
23913       NTRY=0
23914   180 NTRY=NTRY+1
23915       IF(NTRY.GT.100) THEN
23916         MINT(51)=1
23917         RETURN
23918       ENDIF
23919  
23920 C...Scattered quark in hadronic CM frame.
23921       I=MINT(83)+7
23922       K(IPU3,1)=3
23923       K(IPU3,2)=KFRES
23924       K(IPU3,3)=I
23925       P(IPU3,5)=PYMASS(KFRES)
23926       P(IPU3,3)=P(IPU1,3)+P(IPU2,3)
23927       P(IPU3,4)=P(IPU1,4)+P(IPU2,4)
23928       P(IPU3,5)=0D0
23929       K(I,1)=21
23930       K(I,2)=KFRES
23931       K(I,3)=MINT(83)+4+ISIDE
23932       P(I,3)=P(IPU3,3)
23933       P(I,4)=P(IPU3,4)
23934       P(I,5)=P(IPU3,5)
23935       N=IPU3
23936       MINT(21)=KFRES
23937       MINT(22)=0
23938  
23939 C...No primordial kT, or chosen according to truncated Gaussian or
23940 C...exponential, or (for photon) predetermined or power law.
23941   190 IF(MINT(40+ISIDE).EQ.2.AND.MINT(10+ISIDE).NE.22) THEN
23942         IF(MSTP(91).LE.0) THEN
23943           PT=0D0
23944         ELSEIF(MSTP(91).EQ.1) THEN
23945           PT=PARP(91)*SQRT(-LOG(PYR(0)))
23946         ELSE
23947           RPT1=PYR(0)
23948           RPT2=PYR(0)
23949           PT=-PARP(92)*LOG(RPT1*RPT2)
23950         ENDIF
23951         IF(PT.GT.PARP(93)) GOTO 190
23952       ELSEIF(MINT(106+ISIDE).EQ.3) THEN
23953         PTA=SQRT(VINT(282+ISIDE))
23954         PTB=0D0
23955         IF(MSTP(66).EQ.5.AND.MSTP(93).EQ.1) THEN
23956           PTB=PARP(99)*SQRT(-LOG(PYR(0)))
23957         ELSEIF(MSTP(66).EQ.5.AND.MSTP(93).EQ.2) THEN
23958           RPT1=PYR(0)
23959           RPT2=PYR(0)
23960           PTB=-PARP(99)*LOG(RPT1*RPT2)
23961         ENDIF
23962         IF(PTB.GT.PARP(100)) GOTO 190
23963         PT=SQRT(PTA**2+PTB**2+2D0*PTA*PTB*COS(PARU(2)*PYR(0)))
23964         IF(NTRY.GT.10) PT=PT*0.8D0**(NTRY-10)
23965       ELSEIF(IABS(MINT(14+ISIDE)).LE.8.OR.MINT(14+ISIDE).EQ.21) THEN
23966         IF(MSTP(93).LE.0) THEN
23967           PT=0D0
23968         ELSEIF(MSTP(93).EQ.1) THEN
23969           PT=PARP(99)*SQRT(-LOG(PYR(0)))
23970         ELSEIF(MSTP(93).EQ.2) THEN
23971           RPT1=PYR(0)
23972           RPT2=PYR(0)
23973           PT=-PARP(99)*LOG(RPT1*RPT2)
23974         ELSEIF(MSTP(93).EQ.3) THEN
23975           HA=PARP(99)**2
23976           HB=PARP(100)**2
23977           PT=SQRT(MAX(0D0,HA*(HA+HB)/(HA+HB-PYR(0)*HB)-HA))
23978         ELSE
23979           HA=PARP(99)**2
23980           HB=PARP(100)**2
23981           IF(MSTP(93).EQ.5) HB=MIN(VINT(48),PARP(100)**2)
23982           PT=SQRT(MAX(0D0,HA*((HA+HB)/HA)**PYR(0)-HA))
23983         ENDIF
23984         IF(PT.GT.PARP(100)) GOTO 190
23985       ELSE
23986         PT=0D0
23987       ENDIF
23988       VINT(156+ISIDE)=PT
23989       PHI=PARU(2)*PYR(0)
23990       P(IPU3,1)=PT*COS(PHI)
23991       P(IPU3,2)=PT*SIN(PHI)
23992       P(IPU3,4)=SQRT(P(IPU3,5)**2+PT**2+P(IPU3,3)**2)
23993       PMS(3-ISIDE)=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2
23994       PCP=P(IPU3,4)+ABS(P(IPU3,3))
23995  
23996 C...Find one or two beam remnants.
23997       MINT(105)=MINT(102+ISIDE)
23998       MINT(109)=MINT(106+ISIDE)
23999       CALL PYSPLI(MINT(10+ISIDE),MINT(12+ISIDE),KFLCH,KFLSP)
24000       IF(MINT(51).NE.0) THEN
24001         MINT(51)=0
24002         GOTO 180
24003       ENDIF
24004  
24005 C...Store first remnant parton, with colour info and kinematics.
24006       I=N+1
24007       K(I,1)=1
24008       K(I,2)=KFLSP
24009       K(I,3)=MINT(83)+ISIDE
24010       P(I,5)=PYMASS(K(I,2))
24011       KCOL=KCHG(PYCOMP(KFLSP),2)
24012       IF(KCOL.NE.0) THEN
24013         K(I,1)=3
24014         KFLS=(3-KCOL*ISIGN(1,KFLSP))/2
24015         K(I,KFLS+3)=MSTU(5)*IPU3
24016         K(IPU3,6-KFLS)=MSTU(5)*I
24017         ICOLR=I
24018       ENDIF
24019       IF(KFLCH.EQ.0) THEN
24020         P(I,1)=-P(IPU3,1)
24021         P(I,2)=-P(IPU3,2)
24022         PMS(ISIDE)=P(I,5)**2+P(I,1)**2+P(I,2)**2
24023         P(I,3)=-P(IPU3,3)
24024         P(I,4)=SQRT(PMS(ISIDE)+P(I,3)**2)
24025         PRP=P(I,4)+ABS(P(I,3))
24026  
24027 C...When extra remnant parton or hadron: store extra remnant.
24028       ELSE
24029         I=I+1
24030         K(I,1)=1
24031         K(I,2)=KFLCH
24032         K(I,3)=MINT(83)+ISIDE
24033         P(I,5)=PYMASS(K(I,2))
24034         KCOL=KCHG(PYCOMP(KFLCH),2)
24035         IF(KCOL.NE.0) THEN
24036           K(I,1)=3
24037           KFLS=(3-KCOL*ISIGN(1,KFLCH))/2
24038           K(I,KFLS+3)=MSTU(5)*IPU3
24039           K(IPU3,6-KFLS)=MSTU(5)*I
24040           ICOLR=I
24041         ENDIF
24042  
24043 C...Relative transverse momentum when two remnants.
24044         LOOP=0
24045   200   LOOP=LOOP+1
24046         CALL PYPTDI(1,P(I-1,1),P(I-1,2))
24047         P(I-1,1)=P(I-1,1)-0.5D0*P(IPU3,1)
24048         P(I-1,2)=P(I-1,2)-0.5D0*P(IPU3,2)
24049         PMS(3)=P(I-1,5)**2+P(I-1,1)**2+P(I-1,2)**2
24050         P(I,1)=-P(IPU3,1)-P(I-1,1)
24051         P(I,2)=-P(IPU3,2)-P(I-1,2)
24052         PMS(4)=P(I,5)**2+P(I,1)**2+P(I,2)**2
24053  
24054 C...Relative distribution of energy for particle into jet plus particle.
24055         IMB=1
24056         IF(MOD(MINT(10+ISIDE)/1000,10).NE.0) IMB=2
24057         IF(MSTP(94).LE.1) THEN
24058           IF(IMB.EQ.1) CHI=PYR(0)
24059           IF(IMB.EQ.2) CHI=1D0-SQRT(PYR(0))
24060           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
24061         ELSEIF(MSTP(94).EQ.2) THEN
24062           CHI=1D0-PYR(0)**(1D0/(1D0+PARP(93+2*IMB)))
24063           IF(MOD(KFLCH/1000,10).NE.0) CHI=1D0-CHI
24064         ELSEIF(MSTP(94).EQ.3) THEN
24065           CALL PYZDIS(1,0,PMS(4),ZZ)
24066           CHI=ZZ
24067         ELSE
24068           CALL PYZDIS(1000,0,PMS(4),ZZ)
24069           CHI=ZZ
24070         ENDIF
24071  
24072 C...Construct total transverse mass; reject if too large.
24073         CHI=MAX(1D-8,MIN(1D0-1D-8,CHI))
24074         PMS(ISIDE)=PMS(4)/CHI+PMS(3)/(1D0-CHI)
24075         IF(PMS(ISIDE).GT.P(IPU3,4)**2) THEN
24076           IF(LOOP.LT.10) GOTO 200
24077           GOTO 180
24078         ENDIF
24079         VINT(158+ISIDE)=CHI
24080  
24081 C...Subdivide longitudinal momentum according to value selected above.
24082         PRP=SQRT(PMS(ISIDE)+P(IPU3,3)**2)+ABS(P(IPU3,3))
24083         PW1=(1D0-CHI)*PRP
24084         P(I-1,4)=0.5D0*(PW1+PMS(3)/PW1)
24085         P(I-1,3)=0.5D0*(PW1-PMS(3)/PW1)*SIDESG
24086         PW2=CHI*PRP
24087         P(I,4)=0.5D0*(PW2+PMS(4)/PW2)
24088         P(I,3)=0.5D0*(PW2-PMS(4)/PW2)*SIDESG
24089       ENDIF
24090       N=I
24091  
24092 C...Boost current and remnant systems to correct frame.
24093       IF(SQRT(PMS(1))+SQRT(PMS(2)).GT.0.99D0*VINT(1)) GOTO 180
24094       DSQLAM=SQRT(MAX(0D0,(VINT(2)-PMS(1)-PMS(2))**2-4D0*PMS(1)*PMS(2)))
24095       DRKC=(VINT(2)+PMS(3-ISIDE)-PMS(ISIDE)+DSQLAM)/
24096      &(2D0*VINT(1)*PCP)
24097       DRKR=(VINT(2)+PMS(ISIDE)-PMS(3-ISIDE)+DSQLAM)/
24098      &(2D0*VINT(1)*PRP)
24099       DBEC=-SIDESG*(DRKC**2-1D0)/(DRKC**2+1D0)
24100       DBER=SIDESG*(DRKR**2-1D0)/(DRKR**2+1D0)
24101       CALL PYROBO(IPU3,IPU3,0D0,0D0,0D0,0D0,DBEC)
24102       CALL PYROBO(IPU3+1,N,0D0,0D0,0D0,0D0,DBER)
24103  
24104 C...Let current quark shower; recoil but no showering by colour partner.
24105       QMAX=2D0*SQRT(VINT(309-ISIDE))
24106       MSTJ48=MSTJ(48)
24107       MSTJ(48)=1
24108       PARJ86=PARJ(86)
24109       PARJ(86)=0D0
24110       IF(MSTP(71).EQ.1) CALL PYSHOW(IPU3,ICOLR,QMAX)
24111       MSTJ(48)=MSTJ48
24112       PARJ(86)=PARJ86
24113  
24114       RETURN
24115       END
24116  
24117 C*********************************************************************
24118  
24119 C...PYDOCU
24120 C...Handles the documentation of the process in MSTI and PARI,
24121 C...and also computes cross-sections based on accumulated statistics.
24122  
24123       SUBROUTINE PYDOCU
24124  
24125 C...Double precision and integer declarations.
24126       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24127       IMPLICIT INTEGER(I-N)
24128       INTEGER PYK,PYCHGE,PYCOMP
24129 C...Commonblocks.
24130       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
24131       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
24132       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
24133       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
24134       COMMON/PYINT1/MINT(400),VINT(400)
24135       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
24136       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
24137       SAVE /PYJETS/,/PYDAT1/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,
24138      &/PYINT5/
24139  
24140 C...Calculate Monte Carlo estimates of cross-sections.
24141       ISUB=MINT(1)
24142       IF(MSTP(111).NE.-1) NGEN(ISUB,3)=NGEN(ISUB,3)+1
24143       NGEN(0,3)=NGEN(0,3)+1
24144       XSEC(0,3)=0D0
24145       DO 100 I=1,500
24146         IF(I.EQ.96.OR.I.EQ.97) THEN
24147           XSEC(I,3)=0D0
24148         ELSEIF(MSUB(95).EQ.1.AND.(I.EQ.11.OR.I.EQ.12.OR.I.EQ.13.OR.
24149      &    I.EQ.28.OR.I.EQ.53.OR.I.EQ.68)) THEN
24150           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
24151      &    DBLE(NGEN(96,2)))
24152         ELSEIF(MSUB(95).EQ.1.AND.I.GE.381.AND.I.LE.386) THEN
24153           XSEC(I,3)=XSEC(96,2)*NGEN(I,3)/MAX(1D0,DBLE(NGEN(96,1))*
24154      &    DBLE(NGEN(96,2)))
24155         ELSEIF(MSUB(I).EQ.0.OR.NGEN(I,1).EQ.0) THEN
24156           XSEC(I,3)=0D0
24157         ELSEIF(NGEN(I,2).EQ.0) THEN
24158           XSEC(I,3)=XSEC(I,2)*NGEN(0,3)/(DBLE(NGEN(I,1))*
24159      &    DBLE(NGEN(0,2)))
24160         ELSE
24161           XSEC(I,3)=XSEC(I,2)*NGEN(I,3)/(DBLE(NGEN(I,1))*
24162      &    DBLE(NGEN(I,2)))
24163         ENDIF
24164         XSEC(0,3)=XSEC(0,3)+XSEC(I,3)
24165   100 CONTINUE
24166  
24167 C...Rescale to known low-pT cross-section for standard QCD processes.
24168       IF(MSUB(95).EQ.1) THEN
24169         XSECH=XSEC(11,3)+XSEC(12,3)+XSEC(13,3)+XSEC(28,3)+XSEC(53,3)+
24170      &  XSEC(68,3)+XSEC(95,3)
24171         XSECW=XSEC(97,2)/MAX(1D0,DBLE(NGEN(97,1)))
24172         IF(XSECH.GT.1D-20.AND.XSECW.GT.1D-20) THEN
24173           FAC=XSECW/XSECH
24174           XSEC(11,3)=FAC*XSEC(11,3)
24175           XSEC(12,3)=FAC*XSEC(12,3)
24176           XSEC(13,3)=FAC*XSEC(13,3)
24177           XSEC(28,3)=FAC*XSEC(28,3)
24178           XSEC(53,3)=FAC*XSEC(53,3)
24179           XSEC(68,3)=FAC*XSEC(68,3)
24180           XSEC(95,3)=FAC*XSEC(95,3)
24181           XSEC(0,3)=XSEC(0,3)-XSECH+XSECW
24182         ENDIF
24183       ENDIF
24184  
24185 C...Save information for gamma-p and gamma-gamma.
24186       IF(MINT(121).GT.1) THEN
24187         IGA=MINT(122)
24188         CALL PYSAVE(2,IGA)
24189         CALL PYSAVE(5,0)
24190       ENDIF
24191  
24192 C...Reset information on hard interaction.
24193       DO 110 J=1,200
24194         MSTI(J)=0
24195         PARI(J)=0D0
24196   110 CONTINUE
24197  
24198 C...Copy integer valued information from MINT into MSTI.
24199       DO 120 J=1,32
24200         MSTI(J)=MINT(J)
24201   120 CONTINUE
24202       IF(MINT(121).GT.1) MSTI(9)=MINT(122)
24203  
24204 C...Store cross-section variables in PARI.
24205       PARI(1)=XSEC(0,3)
24206       PARI(2)=XSEC(0,3)/MINT(5)
24207       PARI(7)=VINT(97)
24208       PARI(9)=VINT(99)
24209       PARI(10)=VINT(100)
24210       VINT(98)=VINT(98)+VINT(100)
24211       IF(MSTP(142).EQ.1) PARI(2)=XSEC(0,3)/VINT(98)
24212  
24213 C...Store kinematics variables in PARI.
24214       PARI(11)=VINT(1)
24215       PARI(12)=VINT(2)
24216       IF(ISUB.NE.95) THEN
24217         DO 130 J=13,26
24218           PARI(J)=VINT(30+J)
24219   130   CONTINUE
24220         PARI(29)=VINT(39)
24221         PARI(30)=VINT(40)
24222         PARI(31)=VINT(141)
24223         PARI(32)=VINT(142)
24224         PARI(33)=VINT(41)
24225         PARI(34)=VINT(42)
24226         PARI(35)=PARI(33)-PARI(34)
24227         PARI(36)=VINT(21)
24228         PARI(37)=VINT(22)
24229         PARI(38)=VINT(26)
24230         PARI(39)=VINT(157)
24231         PARI(40)=VINT(158)
24232         PARI(41)=VINT(23)
24233         PARI(42)=2D0*VINT(47)/VINT(1)
24234       ENDIF
24235  
24236 C...Store information on scattered partons in PARI.
24237       IF(ISUB.NE.95.AND.MINT(7)*MINT(8).NE.0) THEN
24238         DO 140 IS=7,8
24239           I=MINT(IS)
24240           PARI(36+IS)=P(I,3)/VINT(1)
24241           PARI(38+IS)=P(I,4)/VINT(1)
24242           PR=MAX(1D-20,P(I,5)**2+P(I,1)**2+P(I,2)**2)
24243           PARI(40+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
24244      &    SQRT(PR),1D20)),P(I,3))
24245           PR=MAX(1D-20,P(I,1)**2+P(I,2)**2)
24246           PARI(42+IS)=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/
24247      &    SQRT(PR),1D20)),P(I,3))
24248           PARI(44+IS)=P(I,3)/SQRT(1D-20+P(I,1)**2+P(I,2)**2+P(I,3)**2)
24249           PARI(46+IS)=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
24250           PARI(48+IS)=PYANGL(P(I,1),P(I,2))
24251   140   CONTINUE
24252       ENDIF
24253  
24254 C...Store sum up transverse and longitudinal momenta.
24255       PARI(65)=2D0*PARI(17)
24256       IF(ISUB.LE.90.OR.ISUB.GE.95) THEN
24257         DO 150 I=MSTP(126)+1,N
24258           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 150
24259           PT=SQRT(P(I,1)**2+P(I,2)**2)
24260           PARI(69)=PARI(69)+PT
24261           IF(I.LE.MINT(52)) PARI(66)=PARI(66)+PT
24262           IF(I.GT.MINT(52).AND.I.LE.MINT(53)) PARI(68)=PARI(68)+PT
24263   150   CONTINUE
24264         PARI(67)=PARI(68)
24265         PARI(71)=VINT(151)
24266         PARI(72)=VINT(152)
24267         PARI(73)=VINT(151)
24268         PARI(74)=VINT(152)
24269       ELSE
24270         PARI(66)=PARI(65)
24271         PARI(69)=PARI(65)
24272       ENDIF
24273  
24274 C...Store various other pieces of information into PARI.
24275       PARI(61)=VINT(148)
24276       PARI(75)=VINT(155)
24277       PARI(76)=VINT(156)
24278       PARI(77)=VINT(159)
24279       PARI(78)=VINT(160)
24280       PARI(81)=VINT(138)
24281  
24282 C...Store information on lepton -> lepton + gamma in PYGAGA.
24283       MSTI(71)=MINT(141)
24284       MSTI(72)=MINT(142)
24285       PARI(101)=VINT(301)
24286       PARI(102)=VINT(302)
24287       DO 160 I=103,114
24288         PARI(I)=VINT(I+202)
24289   160 CONTINUE
24290  
24291 C...Set information for PYTABU.
24292       IF(ISET(ISUB).EQ.1.OR.ISET(ISUB).EQ.3) THEN
24293         MSTU(161)=MINT(21)
24294         MSTU(162)=0
24295       ELSEIF(ISET(ISUB).EQ.5) THEN
24296         MSTU(161)=MINT(23)
24297         MSTU(162)=0
24298       ELSE
24299         MSTU(161)=MINT(21)
24300         MSTU(162)=MINT(22)
24301       ENDIF
24302  
24303       RETURN
24304       END
24305  
24306 C*********************************************************************
24307  
24308 C...PYFRAM
24309 C...Performs transformations between different coordinate frames.
24310  
24311       SUBROUTINE PYFRAM(IFRAME)
24312  
24313 C...Double precision and integer declarations.
24314       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24315       IMPLICIT INTEGER(I-N)
24316       INTEGER PYK,PYCHGE,PYCOMP
24317 C...Commonblocks.
24318       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
24319       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
24320       COMMON/PYINT1/MINT(400),VINT(400)
24321       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
24322  
24323 C...Check that transformation can and should be done.
24324       IF(IFRAME.EQ.1.OR.IFRAME.EQ.2.OR.(IFRAME.EQ.3.AND.
24325      &MINT(91).EQ.1)) THEN
24326         IF(IFRAME.EQ.MINT(6)) RETURN
24327       ELSE
24328         WRITE(MSTU(11),5000) IFRAME,MINT(6)
24329         RETURN
24330       ENDIF
24331  
24332       IF(MINT(6).EQ.1) THEN
24333 C...Transform from fixed target or user specified frame to
24334 C...overall CM frame.
24335         CALL PYROBO(0,0,0D0,0D0,-VINT(8),-VINT(9),-VINT(10))
24336         CALL PYROBO(0,0,0D0,-VINT(7),0D0,0D0,0D0)
24337         CALL PYROBO(0,0,-VINT(6),0D0,0D0,0D0,0D0)
24338       ELSEIF(MINT(6).EQ.3) THEN
24339 C...Transform from hadronic CM frame in DIS to overall CM frame.
24340         CALL PYROBO(0,0,-VINT(221),-VINT(222),-VINT(223),-VINT(224),
24341      &  -VINT(225))
24342       ENDIF
24343  
24344       IF(IFRAME.EQ.1) THEN
24345 C...Transform from overall CM frame to fixed target or user specified
24346 C...frame.
24347         CALL PYROBO(0,0,VINT(6),VINT(7),VINT(8),VINT(9),VINT(10))
24348       ELSEIF(IFRAME.EQ.3) THEN
24349 C...Transform from overall CM frame to hadronic CM frame in DIS.
24350         CALL PYROBO(0,0,0D0,0D0,VINT(223),VINT(224),VINT(225))
24351         CALL PYROBO(0,0,0D0,VINT(222),0D0,0D0,0D0)
24352         CALL PYROBO(0,0,VINT(221),0D0,0D0,0D0,0D0)
24353       ENDIF
24354  
24355 C...Set information about new frame.
24356       MINT(6)=IFRAME
24357       MSTI(6)=IFRAME
24358  
24359  5000 FORMAT(1X,'Error: illegal values in subroutine PYFRAM.',1X,
24360      &'No transformation performed.'/1X,'IFRAME =',1X,I5,'; MINT(6) =',
24361      &1X,I5)
24362  
24363       RETURN
24364       END
24365  
24366 C*********************************************************************
24367  
24368 C...PYWIDT
24369 C...Calculates full and partial widths of resonances.
24370  
24371       SUBROUTINE PYWIDT(KFLR,SH,WDTP,WDTE)
24372  
24373 C...Double precision and integer declarations.
24374       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24375       IMPLICIT INTEGER(I-N)
24376       INTEGER PYK,PYCHGE,PYCOMP
24377 C...Parameter statement to help give large particle numbers.
24378       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
24379      &KEXCIT=4000000,KDIMEN=5000000)
24380 C...Commonblocks.
24381       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
24382       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
24383       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
24384       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
24385       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
24386       COMMON/PYINT1/MINT(400),VINT(400)
24387       COMMON/PYINT4/MWID(500),WIDS(500,5)
24388       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
24389       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
24390      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
24391       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
24392       COMMON/PYPUED/IUED(0:99),RUED(0:99)
24393       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
24394      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYTCSM/,/PYPUED/
24395 C...Local arrays and saved variables.
24396       COMPLEX*16 ZMIXC(4,4),AL,BL,AR,BR,FL,FR
24397       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
24398      &WID2SV(3,2),WDTPP(0:400),WDTEP(0:400,0:5)
24399 C...UED: equivalences between ordered particles (451->475)
24400 C...and UED particle code (5 000 000 + id)
24401       PARAMETER(KKFLMI=451,KKFLMA=475)
24402       DIMENSION CHIDEL(3), IUEDPR(25)
24403       DIMENSION IUEDEQ(KKFLMA),MUED(2)
24404       COMMON/SW1/SW21,CW21
24405       DATA (IUEDEQ(I),I=KKFLMI,KKFLMA)/
24406      & 6100001,6100002,6100003,6100004,6100005,6100006, 
24407      & 5100001,5100002,5100003,5100004,5100005,5100006, 
24408      & 6100011,6100013,6100015,                         
24409      & 5100012,5100011,5100014,5100013,5100016,5100015, 
24410      & 5100021,5100022,5100023,5100024/                 
24411 C...Save local variables
24412       SAVE MOFSV,WIDWSV,WID2SV
24413 C...Initial values
24414       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
24415       DATA CHIDEL/1.1D-03,1.D0,7.4D+2/
24416       DATA IUEDPR/25*0/
24417 C...UED: inline functions used in kk width calculus
24418       FKAC1(X,Y)=1.-X**2/Y**2
24419       FKAC2(X,Y)=2.+X**2/Y**2
24420  
24421 C...Compressed code and sign; mass.
24422       KFLA=IABS(KFLR)
24423       KFLS=ISIGN(1,KFLR)
24424       KC=PYCOMP(KFLA)
24425       SHR=SQRT(SH)
24426       PMR=PMAS(KC,1)
24427  
24428 C...Reset width information.
24429       DO 110 I=0,MDCY(KC,3)
24430         WDTP(I)=0D0
24431         DO 100 J=0,5
24432           WDTE(I,J)=0D0
24433   100   CONTINUE
24434   110 CONTINUE
24435  
24436 C...Allow for fudge factor to rescale resonance width.
24437       FUDGE=1D0
24438       IF(MSTP(110).NE.0.AND.(MWID(KC).EQ.1.OR.MWID(KC).EQ.2.OR.
24439      &(MWID(KC).EQ.3.AND.MINT(63).EQ.1))) THEN
24440         IF(MSTP(110).EQ.KFLA) THEN
24441           FUDGE=PARP(110)
24442         ELSEIF(MSTP(110).EQ.-1) THEN
24443           IF(KFLA.NE.6.AND.KFLA.NE.23.AND.KFLA.NE.24) FUDGE=PARP(110)
24444         ELSEIF(MSTP(110).EQ.-2) THEN
24445           FUDGE=PARP(110)
24446         ENDIF
24447       ENDIF
24448  
24449 C...Not to be treated as a resonance: return.
24450       IF((MWID(KC).LE.0.OR.MWID(KC).GE.4).AND.KFLA.NE.21.AND.
24451      &KFLA.NE.22) THEN
24452         WDTP(0)=1D0
24453         WDTE(0,0)=1D0
24454         MINT(61)=0
24455         MINT(62)=0
24456         MINT(63)=0
24457         RETURN
24458  
24459 C...Treatment as a resonance based on tabulated branching ratios.
24460       ELSEIF(MWID(KC).EQ.2.OR.(MWID(KC).EQ.3.AND.MINT(63).EQ.0)) THEN
24461 C...Loop over possible decay channels; skip irrelevant ones.
24462         DO 120 I=1,MDCY(KC,3)
24463           IDC=I+MDCY(KC,2)-1
24464           IF(MDME(IDC,1).LT.0) GOTO 120
24465  
24466 C...Read out decay products and nominal masses.
24467           KFD1=KFDP(IDC,1)
24468           KFC1=PYCOMP(KFD1)
24469           IF(KCHG(KFC1,3).EQ.1) KFD1=KFLS*KFD1
24470           PM1=PMAS(KFC1,1)
24471           KFD2=KFDP(IDC,2)
24472           KFC2=PYCOMP(KFD2)
24473           IF(KCHG(KFC2,3).EQ.1) KFD2=KFLS*KFD2
24474           PM2=PMAS(KFC2,1)
24475           KFD3=KFDP(IDC,3)
24476           PM3=0D0
24477           IF(KFD3.NE.0) THEN
24478             KFC3=PYCOMP(KFD3)
24479             IF(KCHG(KFC3,3).EQ.1) KFD3=KFLS*KFD3
24480             PM3=PMAS(KFC3,1)
24481           ENDIF
24482  
24483 C...Naive partial width and alternative threshold factors.
24484           WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)
24485           IF(MDME(IDC,2).GE.51.AND.MDME(IDC,2).LE.53.AND.
24486      &    PM1+PM2+PM3.GE.SHR) THEN
24487              WDTP(I)=0D0
24488           ELSEIF(MDME(IDC,2).EQ.52.AND.KFD3.EQ.0) THEN
24489             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,(SH-PM1**2-PM2**2)**2-
24490      &      4D0*PM1**2*PM2**2))/SH
24491           ELSEIF(MDME(IDC,2).EQ.52) THEN
24492             PMA=MAX(PM1,PM2,PM3)
24493             PMC=MIN(PM1,PM2,PM3)
24494             PMB=PM1+PM2+PM3-PMA-PMC
24495             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMC-PMC)
24496             PMAN=PMA**2/SH
24497             PMBN=PMB**2/SH
24498             PMCN=PMC**2/SH
24499             PMBCN=PMBC**2/SH
24500             WDTP(I)=WDTP(I)*SQRT(MAX(0D0,
24501      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
24502      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
24503      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
24504      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
24505      &      ((1D0-PMBCN)*PMBCN*SH)
24506           ELSEIF(MDME(IDC,2).EQ.53.AND.KFD3.EQ.0) THEN
24507             WDTP(I)=WDTP(I)*SQRT(
24508      &      MAX(0D0,(SH-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2)/
24509      &      MAX(1D-4,(PMR**2-PM1**2-PM2**2)**2-4D0*PM1**2*PM2**2))
24510           ELSEIF(MDME(IDC,2).EQ.53) THEN
24511             PMA=MAX(PM1,PM2,PM3)
24512             PMC=MIN(PM1,PM2,PM3)
24513             PMB=PM1+PM2+PM3-PMA-PMC
24514             PMBC=PMB+PMC+0.5D0*(SHR-PMA-PMB-PMC)
24515             PMAN=PMA**2/SH
24516             PMBN=PMB**2/SH
24517             PMCN=PMC**2/SH
24518             PMBCN=PMBC**2/SH
24519             FACACT=SQRT(MAX(0D0,
24520      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
24521      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
24522      &      ((SHR-PMA)**2-(PMB+PMC)**2)*
24523      &      (1D0+0.25D0*(PMA+PMB+PMC)/SHR)/
24524      &      ((1D0-PMBCN)*PMBCN*SH)
24525             PMBC=PMB+PMC+0.5D0*(PMR-PMA-PMB-PMC)
24526             PMAN=PMA**2/PMR**2
24527             PMBN=PMB**2/PMR**2
24528             PMCN=PMC**2/PMR**2
24529             PMBCN=PMBC**2/PMR**2
24530             FACNOM=SQRT(MAX(0D0,
24531      &      ((1D0-PMAN-PMBCN)**2-4D0*PMAN*PMBCN)*
24532      &      ((PMBCN-PMBN-PMCN)**2-4D0*PMBN*PMCN)))*
24533      &      ((PMR-PMA)**2-(PMB+PMC)**2)*
24534      &      (1D0+0.25D0*(PMA+PMB+PMC)/PMR)/
24535      &      ((1D0-PMBCN)*PMBCN*PMR**2)
24536             WDTP(I)=WDTP(I)*FACACT/MAX(1D-6,FACNOM)
24537           ENDIF
24538           WDTP(I)=FUDGE*WDTP(I)
24539           WDTP(0)=WDTP(0)+WDTP(I)
24540  
24541 C...Calculate secondary width (at most two identical/opposite).
24542           WID2=1D0
24543           IF(MDME(IDC,1).GT.0) THEN
24544             IF(KFD2.EQ.KFD1) THEN
24545               IF(KCHG(KFC1,3).EQ.0) THEN
24546                 WID2=WIDS(KFC1,1)
24547               ELSEIF(KFD1.GT.0) THEN
24548                 WID2=WIDS(KFC1,4)
24549               ELSE
24550                 WID2=WIDS(KFC1,5)
24551               ENDIF
24552               IF(KFD3.GT.0) THEN
24553                 WID2=WID2*WIDS(KFC3,2)
24554               ELSEIF(KFD3.LT.0) THEN
24555                 WID2=WID2*WIDS(KFC3,3)
24556               ENDIF
24557             ELSEIF(KFD2.EQ.-KFD1) THEN
24558               WID2=WIDS(KFC1,1)
24559               IF(KFD3.GT.0) THEN
24560                 WID2=WID2*WIDS(KFC3,2)
24561               ELSEIF(KFD3.LT.0) THEN
24562                 WID2=WID2*WIDS(KFC3,3)
24563               ENDIF
24564             ELSEIF(KFD3.EQ.KFD1) THEN
24565               IF(KCHG(KFC1,3).EQ.0) THEN
24566                 WID2=WIDS(KFC1,1)
24567               ELSEIF(KFD1.GT.0) THEN
24568                 WID2=WIDS(KFC1,4)
24569               ELSE
24570                 WID2=WIDS(KFC1,5)
24571               ENDIF
24572               IF(KFD2.GT.0) THEN
24573                 WID2=WID2*WIDS(KFC2,2)
24574               ELSEIF(KFD2.LT.0) THEN
24575                 WID2=WID2*WIDS(KFC2,3)
24576               ENDIF
24577             ELSEIF(KFD3.EQ.-KFD1) THEN
24578               WID2=WIDS(KFC1,1)
24579               IF(KFD2.GT.0) THEN
24580                 WID2=WID2*WIDS(KFC2,2)
24581               ELSEIF(KFD2.LT.0) THEN
24582                 WID2=WID2*WIDS(KFC2,3)
24583               ENDIF
24584             ELSEIF(KFD3.EQ.KFD2) THEN
24585               IF(KCHG(KFC2,3).EQ.0) THEN
24586                 WID2=WIDS(KFC2,1)
24587               ELSEIF(KFD2.GT.0) THEN
24588                 WID2=WIDS(KFC2,4)
24589               ELSE
24590                 WID2=WIDS(KFC2,5)
24591               ENDIF
24592               IF(KFD1.GT.0) THEN
24593                 WID2=WID2*WIDS(KFC1,2)
24594               ELSEIF(KFD1.LT.0) THEN
24595                 WID2=WID2*WIDS(KFC1,3)
24596               ENDIF
24597             ELSEIF(KFD3.EQ.-KFD2) THEN
24598               WID2=WIDS(KFC2,1)
24599               IF(KFD1.GT.0) THEN
24600                 WID2=WID2*WIDS(KFC1,2)
24601               ELSEIF(KFD1.LT.0) THEN
24602                 WID2=WID2*WIDS(KFC1,3)
24603               ENDIF
24604             ELSE
24605               IF(KFD1.GT.0) THEN
24606                 WID2=WIDS(KFC1,2)
24607               ELSE
24608                 WID2=WIDS(KFC1,3)
24609               ENDIF
24610               IF(KFD2.GT.0) THEN
24611                 WID2=WID2*WIDS(KFC2,2)
24612               ELSE
24613                 WID2=WID2*WIDS(KFC2,3)
24614               ENDIF
24615               IF(KFD3.GT.0) THEN
24616                 WID2=WID2*WIDS(KFC3,2)
24617               ELSEIF(KFD3.LT.0) THEN
24618                 WID2=WID2*WIDS(KFC3,3)
24619               ENDIF
24620             ENDIF
24621  
24622 C...Store effective widths according to case.
24623             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24624             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24625             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24626             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24627           ENDIF
24628   120   CONTINUE
24629 C...Return.
24630         MINT(61)=0
24631         MINT(62)=0
24632         MINT(63)=0
24633         RETURN
24634       ENDIF
24635  
24636 C...Here begins detailed dynamical calculation of resonance widths.
24637 C...Shared treatment of Higgs states.
24638       KFHIGG=25
24639       IHIGG=1
24640       IF(KFLA.EQ.35.OR.KFLA.EQ.36) THEN
24641         KFHIGG=KFLA
24642         IHIGG=KFLA-33
24643       ENDIF
24644  
24645 C...Common electroweak and strong constants.
24646       XW=PARU(102)
24647       XWV=XW
24648       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
24649       XW1=1D0-XW
24650       AEM=PYALEM(SH)
24651       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
24652       AS=PYALPS(SH)
24653       RADC=1D0+AS/PARU(1)
24654  
24655       IF(KFLA.EQ.6) THEN
24656 C...t quark.
24657         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24658         RADCT=1D0-2.5D0*AS/PARU(1)
24659         DO 140 I=1,MDCY(KC,3)
24660           IDC=I+MDCY(KC,2)-1
24661           IF(MDME(IDC,1).LT.0) GOTO 140
24662           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24663           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24664           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
24665           WID2=1D0
24666           IF(I.GE.4.AND.I.LE.7) THEN
24667 C...t -> W + q; including approximate QCD correction factor.
24668             WDTP(I)=FAC*VCKM(3,I-3)*RADCT*
24669      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24670      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24671             IF(KFLR.GT.0) THEN
24672               WID2=WIDS(24,2)
24673               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
24674             ELSE
24675               WID2=WIDS(24,3)
24676               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
24677             ENDIF
24678           ELSEIF(I.EQ.9) THEN
24679 C...t -> H + b.
24680             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
24681             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24682      &      ((1D0+RM2-RM1)*(RM2R*PARU(141)**2+1D0/PARU(141)**2)+
24683      &      4D0*SQRT(RM2R*RM2))
24684             WID2=WIDS(37,2)
24685             IF(KFLR.LT.0) WID2=WIDS(37,3)
24686 CMRENNA++
24687           ELSEIF(I.GE.10.AND.I.LE.13.AND.IMSS(1).NE.0) THEN
24688 C...t -> ~t + ~chi_i0, i = 1, 2, 3 or 4.
24689             BETA=ATAN(RMSS(5))
24690             SINB=SIN(BETA)
24691             TANW=SQRT(PARU(102)/(1D0-PARU(102)))
24692             ET=KCHG(6,1)/3D0
24693             T3L=SIGN(0.5D0,ET)
24694             KFC1=PYCOMP(KFDP(IDC,1))
24695             KFC2=PYCOMP(KFDP(IDC,2))
24696             PMNCHI=PMAS(KFC1,1)
24697             PMSTOP=PMAS(KFC2,1)
24698             IF(SHR.GT.PMNCHI+PMSTOP) THEN
24699               IZ=I-9
24700               DO 130 IK=1,4
24701                 ZMIXC(IZ,IK)=DCMPLX(ZMIX(IZ,IK),ZMIXI(IZ,IK))
24702   130         CONTINUE
24703               AL=SHR*DCONJG(ZMIXC(IZ,4))/(2.0D0*PMAS(24,1)*SINB)
24704               AR=-ET*ZMIXC(IZ,1)*TANW
24705               BL=T3L*(ZMIXC(IZ,2)-ZMIXC(IZ,1)*TANW)-AR
24706               BR=AL
24707               FL=SFMIX(6,1)*AL+SFMIX(6,2)*AR
24708               FR=SFMIX(6,1)*BL+SFMIX(6,2)*BR
24709               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
24710      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
24711               WDTP(I)=(0.5D0*PYALEM(SH)/PARU(102))*PCM*
24712      &        ((ABS(FL)**2+ABS(FR)**2)*(SH+PMNCHI**2-PMSTOP**2)+
24713      &        SMZ(IZ)*4D0*SHR*DBLE(FL*DCONJG(FR)))/SH
24714               IF(KFLR.GT.0) THEN
24715                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
24716               ELSE
24717                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
24718               ENDIF
24719             ENDIF
24720           ELSEIF(I.EQ.14.AND.IMSS(1).NE.0) THEN
24721 C...t -> ~g + ~t
24722             KFC1=PYCOMP(KFDP(IDC,1))
24723             KFC2=PYCOMP(KFDP(IDC,2))
24724             PMNCHI=PMAS(KFC1,1)
24725             PMSTOP=PMAS(KFC2,1)
24726             IF(SHR.GT.PMNCHI+PMSTOP) THEN
24727               RL=SFMIX(6,1)
24728               RR=-SFMIX(6,2)
24729               PCM=SQRT((SH-(PMNCHI+PMSTOP)**2)*
24730      &        (SH-(PMNCHI-PMSTOP)**2))/(2D0*SHR)
24731               WDTP(I)=4D0/3D0*0.5D0*PYALPS(SH)*PCM*((RL**2+RR**2)*
24732      &        (SH+PMNCHI**2-PMSTOP**2)+PMNCHI*4D0*SHR*RL*RR)/SH
24733               IF(KFLR.GT.0) THEN
24734                 WID2=WIDS(KFC1,2)*WIDS(KFC2,2)
24735               ELSE
24736                 WID2=WIDS(KFC1,2)*WIDS(KFC2,3)
24737               ENDIF
24738             ENDIF
24739           ELSEIF(I.EQ.15.AND.IMSS(1).NE.0) THEN
24740 C...t -> ~gravitino + ~t
24741             XMP2=RMSS(29)**2
24742             KFC1=PYCOMP(KFDP(IDC,1))
24743             XMGR2=PMAS(KFC1,1)**2
24744             WDTP(I)=SH**2*SHR/(96D0*PARU(1)*XMP2*XMGR2)*(1D0-RM2)**4
24745             KFC2=PYCOMP(KFDP(IDC,2))
24746             WID2=WIDS(KFC2,2)
24747             IF(KFLR.LT.0) WID2=WIDS(KFC2,3)
24748 CMRENNA--
24749           ENDIF
24750           WDTP(I)=FUDGE*WDTP(I)
24751           WDTP(0)=WDTP(0)+WDTP(I)
24752           IF(MDME(IDC,1).GT.0) THEN
24753             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24754             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24755             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24756             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24757           ENDIF
24758   140   CONTINUE
24759  
24760       ELSEIF(KFLA.EQ.7) THEN
24761 C...b' quark.
24762         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24763         DO 150 I=1,MDCY(KC,3)
24764           IDC=I+MDCY(KC,2)-1
24765           IF(MDME(IDC,1).LT.0) GOTO 150
24766           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24767           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24768           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 150
24769           WID2=1D0
24770           IF(I.GE.4.AND.I.LE.7) THEN
24771 C...b' -> W + q.
24772             WDTP(I)=FAC*VCKM(I-3,4)*
24773      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24774      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24775             IF(KFLR.GT.0) THEN
24776               WID2=WIDS(24,3)
24777               IF(I.EQ.6) WID2=WID2*WIDS(6,2)
24778               IF(I.EQ.7) WID2=WID2*WIDS(8,2)
24779             ELSE
24780               WID2=WIDS(24,2)
24781               IF(I.EQ.6) WID2=WID2*WIDS(6,3)
24782               IF(I.EQ.7) WID2=WID2*WIDS(8,3)
24783             ENDIF
24784             WID2=WIDS(24,3)
24785             IF(KFLR.LT.0) WID2=WIDS(24,2)
24786           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
24787 C...b' -> H + q.
24788             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24789      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
24790             IF(KFLR.GT.0) THEN
24791               WID2=WIDS(37,3)
24792               IF(I.EQ.10) WID2=WID2*WIDS(6,2)
24793             ELSE
24794               WID2=WIDS(37,2)
24795               IF(I.EQ.10) WID2=WID2*WIDS(6,3)
24796             ENDIF
24797           ENDIF
24798           WDTP(I)=FUDGE*WDTP(I)
24799           WDTP(0)=WDTP(0)+WDTP(I)
24800           IF(MDME(IDC,1).GT.0) THEN
24801             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24802             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24803             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24804             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24805           ENDIF
24806   150   CONTINUE
24807  
24808       ELSEIF(KFLA.EQ.8) THEN
24809 C...t' quark.
24810         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24811         DO 160 I=1,MDCY(KC,3)
24812           IDC=I+MDCY(KC,2)-1
24813           IF(MDME(IDC,1).LT.0) GOTO 160
24814           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24815           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24816           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 160
24817           WID2=1D0
24818           IF(I.GE.4.AND.I.LE.7) THEN
24819 C...t' -> W + q.
24820             WDTP(I)=FAC*VCKM(4,I-3)*
24821      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24822      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24823             IF(KFLR.GT.0) THEN
24824               WID2=WIDS(24,2)
24825               IF(I.EQ.7) WID2=WID2*WIDS(7,2)
24826             ELSE
24827               WID2=WIDS(24,3)
24828               IF(I.EQ.7) WID2=WID2*WIDS(7,3)
24829             ENDIF
24830           ELSEIF(I.EQ.9.OR.I.EQ.10) THEN
24831 C...t' -> H + q.
24832             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24833      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
24834             IF(KFLR.GT.0) THEN
24835               WID2=WIDS(37,2)
24836               IF(I.EQ.10) WID2=WID2*WIDS(7,2)
24837             ELSE
24838               WID2=WIDS(37,3)
24839               IF(I.EQ.10) WID2=WID2*WIDS(7,3)
24840             ENDIF
24841           ENDIF
24842           WDTP(I)=FUDGE*WDTP(I)
24843           WDTP(0)=WDTP(0)+WDTP(I)
24844           IF(MDME(IDC,1).GT.0) THEN
24845             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24846             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24847             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24848             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24849           ENDIF
24850   160   CONTINUE
24851  
24852       ELSEIF(KFLA.EQ.17) THEN
24853 C...tau' lepton.
24854         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24855         DO 170 I=1,MDCY(KC,3)
24856           IDC=I+MDCY(KC,2)-1
24857           IF(MDME(IDC,1).LT.0) GOTO 170
24858           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24859           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24860           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 170
24861           WID2=1D0
24862           IF(I.EQ.3) THEN
24863 C...tau' -> W + nu'_tau.
24864             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24865      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24866             IF(KFLR.GT.0) THEN
24867               WID2=WIDS(24,3)
24868               WID2=WID2*WIDS(18,2)
24869             ELSE
24870               WID2=WIDS(24,2)
24871               WID2=WID2*WIDS(18,3)
24872             ENDIF
24873           ELSEIF(I.EQ.5) THEN
24874 C...tau' -> H + nu'_tau.
24875             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24876      &      ((1D0+RM2-RM1)*(PARU(141)**2+RM2/PARU(141)**2)+4D0*RM2)
24877             IF(KFLR.GT.0) THEN
24878               WID2=WIDS(37,3)
24879               WID2=WID2*WIDS(18,2)
24880             ELSE
24881               WID2=WIDS(37,2)
24882               WID2=WID2*WIDS(18,3)
24883             ENDIF
24884           ENDIF
24885           WDTP(I)=FUDGE*WDTP(I)
24886           WDTP(0)=WDTP(0)+WDTP(I)
24887           IF(MDME(IDC,1).GT.0) THEN
24888             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24889             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24890             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24891             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24892           ENDIF
24893   170   CONTINUE
24894  
24895       ELSEIF(KFLA.EQ.18) THEN
24896 C...nu'_tau neutrino.
24897         FAC=(AEM/(16D0*XW))*(SH/PMAS(24,1)**2)*SHR
24898         DO 180 I=1,MDCY(KC,3)
24899           IDC=I+MDCY(KC,2)-1
24900           IF(MDME(IDC,1).LT.0) GOTO 180
24901           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
24902           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
24903           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 180
24904           WID2=1D0
24905           IF(I.EQ.2) THEN
24906 C...nu'_tau -> W + tau'.
24907             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24908      &      ((1D0-RM2)**2+(1D0+RM2)*RM1-2D0*RM1**2)
24909             IF(KFLR.GT.0) THEN
24910               WID2=WIDS(24,2)
24911               WID2=WID2*WIDS(17,2)
24912             ELSE
24913               WID2=WIDS(24,3)
24914               WID2=WID2*WIDS(17,3)
24915             ENDIF
24916           ELSEIF(I.EQ.3) THEN
24917 C...nu'_tau -> H + tau'.
24918             WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
24919      &      ((1D0+RM2-RM1)*(RM2*PARU(141)**2+1D0/PARU(141)**2)+4D0*RM2)
24920             IF(KFLR.GT.0) THEN
24921               WID2=WIDS(37,2)
24922               WID2=WID2*WIDS(17,2)
24923             ELSE
24924               WID2=WIDS(37,3)
24925               WID2=WID2*WIDS(17,3)
24926             ENDIF
24927           ENDIF
24928           WDTP(I)=FUDGE*WDTP(I)
24929           WDTP(0)=WDTP(0)+WDTP(I)
24930           IF(MDME(IDC,1).GT.0) THEN
24931             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24932             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24933             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24934             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24935           ENDIF
24936   180   CONTINUE
24937  
24938       ELSEIF(KFLA.EQ.21) THEN
24939 C...QCD:
24940 C***Note that widths are not given in dimensional quantities here.
24941         DO 190 I=1,MDCY(KC,3)
24942           IDC=I+MDCY(KC,2)-1
24943           IF(MDME(IDC,1).LT.0) GOTO 190
24944           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24945           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24946           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 190
24947           WID2=1D0
24948           IF(I.LE.8) THEN
24949 C...QCD -> q + qbar
24950             WDTP(I)=(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24951             IF(I.EQ.6) WID2=WIDS(6,1)
24952             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24953           ENDIF
24954           WDTP(I)=FUDGE*WDTP(I)
24955           WDTP(0)=WDTP(0)+WDTP(I)
24956           IF(MDME(IDC,1).GT.0) THEN
24957             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24958             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24959             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24960             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24961           ENDIF
24962   190   CONTINUE
24963  
24964       ELSEIF(KFLA.EQ.22) THEN
24965 C...QED photon.
24966 C***Note that widths are not given in dimensional quantities here.
24967         DO 200 I=1,MDCY(KC,3)
24968           IDC=I+MDCY(KC,2)-1
24969           IF(MDME(IDC,1).LT.0) GOTO 200
24970           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
24971           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
24972           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 200
24973           WID2=1D0
24974           IF(I.LE.8) THEN
24975 C...QED -> q + qbar.
24976             EF=KCHG(I,1)/3D0
24977             FCOF=3D0*RADC
24978             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
24979             WDTP(I)=FCOF*EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24980             IF(I.EQ.6) WID2=WIDS(6,1)
24981             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
24982           ELSEIF(I.LE.12) THEN
24983 C...QED -> l+ + l-.
24984             EF=KCHG(9+2*(I-8),1)/3D0
24985             WDTP(I)=EF**2*(1D0+2D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
24986             IF(I.EQ.12) WID2=WIDS(17,1)
24987           ENDIF
24988           WDTP(I)=FUDGE*WDTP(I)
24989           WDTP(0)=WDTP(0)+WDTP(I)
24990           IF(MDME(IDC,1).GT.0) THEN
24991             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
24992             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
24993             WDTE(I,0)=WDTE(I,MDME(IDC,1))
24994             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
24995           ENDIF
24996   200   CONTINUE
24997  
24998       ELSEIF(KFLA.EQ.23) THEN
24999 C...Z0:
25000         ICASE=1
25001         XWC=1D0/(16D0*XW*XW1)
25002         FAC=(AEM*XWC/3D0)*SHR
25003   210   CONTINUE
25004         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
25005           VINT(111)=0D0
25006           VINT(112)=0D0
25007           VINT(114)=0D0
25008         ENDIF
25009         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25010           KFI=IABS(MINT(15))
25011           IF(KFI.GT.20) KFI=IABS(MINT(16))
25012           EI=KCHG(KFI,1)/3D0
25013           AI=SIGN(1D0,EI)
25014           VI=AI-4D0*EI*XWV
25015           SQMZ=PMAS(23,1)**2
25016           HZ=SHR*WDTP(0)
25017           IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=1D0
25018           IF(MSTP(43).EQ.3) VINT(112)=
25019      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
25020           IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
25021      &    XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
25022         ENDIF
25023         DO 220 I=1,MDCY(KC,3)
25024           IDC=I+MDCY(KC,2)-1
25025           IF(MDME(IDC,1).LT.0) GOTO 220
25026           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
25027           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
25028           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 220
25029           WID2=1D0
25030           IF(I.LE.8) THEN
25031 C...Z0 -> q + qbar
25032             EF=KCHG(I,1)/3D0
25033             AF=SIGN(1D0,EF+0.1D0)
25034             VF=AF-4D0*EF*XWV
25035             FCOF=3D0*RADC
25036             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
25037             IF(I.EQ.6) WID2=WIDS(6,1)
25038             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
25039           ELSEIF(I.LE.16) THEN
25040 C...Z0 -> l+ + l-, nu + nubar
25041             EF=KCHG(I+2,1)/3D0
25042             AF=SIGN(1D0,EF+0.1D0)
25043             VF=AF-4D0*EF*XWV
25044             FCOF=1D0
25045             IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
25046           ENDIF
25047           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
25048           IF(ICASE.EQ.1) THEN
25049             WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
25050      &      BE34
25051           ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25052             WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
25053      &      EF*VF+(VI**2+AI**2)*VINT(114)*VF**2)*(1D0+2D0*RM1)+
25054      &      (VI**2+AI**2)*VINT(114)*AF**2*(1D0-4D0*RM1))*BE34
25055           ELSEIF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
25056             FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
25057             FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
25058             FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
25059           ENDIF
25060           IF(ICASE.EQ.1) WDTP(I)=FUDGE*WDTP(I)
25061           IF(ICASE.EQ.1) WDTP(0)=WDTP(0)+WDTP(I)
25062           IF(MDME(IDC,1).GT.0) THEN
25063             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
25064      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
25065               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25066               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
25067      &        WDTE(I,MDME(IDC,1))
25068               WDTE(I,0)=WDTE(I,MDME(IDC,1))
25069               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25070             ENDIF
25071             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
25072               IF(MSTP(43).EQ.1.OR.MSTP(43).EQ.3) VINT(111)=
25073      &        VINT(111)+FGGF*WID2
25074               IF(MSTP(43).EQ.3) VINT(112)=VINT(112)+FGZF*WID2
25075               IF(MSTP(43).EQ.2.OR.MSTP(43).EQ.3) VINT(114)=
25076      &        VINT(114)+FZZF*WID2
25077             ENDIF
25078           ENDIF
25079   220   CONTINUE
25080         IF(MINT(61).GE.1) ICASE=3-ICASE
25081         IF(ICASE.EQ.2) GOTO 210
25082  
25083       ELSEIF(KFLA.EQ.24) THEN
25084 C...W+/-:
25085         FAC=(AEM/(24D0*XW))*SHR
25086         DO 230 I=1,MDCY(KC,3)
25087           IDC=I+MDCY(KC,2)-1
25088           IF(MDME(IDC,1).LT.0) GOTO 230
25089           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
25090           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
25091           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 230
25092           WID2=1D0
25093           IF(I.LE.16) THEN
25094 C...W+/- -> q + qbar'
25095             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
25096             IF(KFLR.GT.0) THEN
25097               IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
25098               IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
25099               IF(I.GE.13) WID2=WID2*WIDS(7,3)
25100             ELSE
25101               IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
25102               IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
25103               IF(I.GE.13) WID2=WID2*WIDS(7,2)
25104             ENDIF
25105           ELSEIF(I.LE.20) THEN
25106 C...W+/- -> l+/- + nu
25107             FCOF=1D0
25108             IF(KFLR.GT.0) THEN
25109               IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
25110             ELSE
25111               IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
25112             ENDIF
25113           ENDIF
25114           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
25115      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25116           WDTP(I)=FUDGE*WDTP(I)
25117           WDTP(0)=WDTP(0)+WDTP(I)
25118           IF(MDME(IDC,1).GT.0) THEN
25119             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25120             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25121             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25122             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25123           ENDIF
25124   230   CONTINUE
25125  
25126       ELSEIF(KFLA.EQ.25.OR.KFLA.EQ.35.OR.KFLA.EQ.36) THEN
25127 C...h0 (or H0, or A0):
25128         SHFS=SH
25129         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
25130         DO 270 I=1,MDCY(KFHIGG,3)
25131           IDC=I+MDCY(KFHIGG,2)-1
25132           IF(MDME(IDC,1).LT.0) GOTO 270
25133           KFC1=PYCOMP(KFDP(IDC,1))
25134           KFC2=PYCOMP(KFDP(IDC,2))
25135           RM1=PMAS(KFC1,1)**2/SH
25136           RM2=PMAS(KFC2,1)**2/SH
25137           IF(I.NE.16.AND.I.NE.17.AND.SQRT(RM1)+SQRT(RM2).GT.1D0)
25138      &    GOTO 270
25139           WID2=1D0
25140  
25141           IF(I.LE.8) THEN
25142 C...h0 -> q + qbar
25143             WDTP(I)=FAC*3D0*(PYMRUN(KFDP(IDC,1),SH)**2/SHFS)*
25144      &      SQRT(MAX(0D0,1D0-4D0*RM1))*RADC
25145 C...A0 behaves like beta, ho and H0 like beta**3.
25146             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
25147             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
25148               IF(MOD(I,2).EQ.1) WDTP(I)=WDTP(I)*PARU(151+10*IHIGG)**2
25149               IF(MOD(I,2).EQ.0) WDTP(I)=WDTP(I)*PARU(152+10*IHIGG)**2
25150               IF(IMSS(1).NE.0.AND.KFC1.EQ.5) THEN
25151                 WDTP(I)=WDTP(I)/(1D0+RMSS(41))**2
25152                 IF(IHIGG.NE.3) THEN
25153                   WDTP(I)=WDTP(I)*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
25154      &            PARU(151+10*IHIGG))**2
25155                 ENDIF
25156               ENDIF
25157             ENDIF
25158             IF(I.EQ.6) WID2=WIDS(6,1)
25159             IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
25160           ELSEIF(I.LE.12) THEN
25161 C...h0 -> l+ + l-
25162             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))*(SH/SHFS)
25163 C...A0 behaves like beta, ho and H0 like beta**3.
25164             IF(IHIGG.NE.3) WDTP(I)=WDTP(I)*(1D0-4D0*RM1)
25165             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
25166      &      PARU(153+10*IHIGG)**2
25167             IF(I.EQ.12) WID2=WIDS(17,1)
25168  
25169           ELSEIF(I.EQ.13) THEN
25170 C...h0 -> g + g; quark loop contribution only
25171             ETARE=0D0
25172             ETAIM=0D0
25173             DO 240 J=1,2*MSTP(1)
25174               EPS=(2D0*PMAS(J,1))**2/SH
25175 C...Loop integral; function of eps=4m^2/shat; different for A0.
25176               IF(EPS.LE.1D0) THEN
25177                 IF(EPS.GT.1D-4) THEN
25178                   ROOT=SQRT(1D0-EPS)
25179                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
25180                 ELSE
25181                   RLN=LOG(4D0/EPS-2D0)
25182                 ENDIF
25183                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
25184                 PHIIM=0.5D0*PARU(1)*RLN
25185               ELSE
25186                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
25187                 PHIIM=0D0
25188               ENDIF
25189               IF(IHIGG.LE.2) THEN
25190                 ETAREJ=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
25191                 ETAIMJ=-0.5D0*EPS*(1D0-EPS)*PHIIM
25192               ELSE
25193                 ETAREJ=-0.5D0*EPS*PHIRE
25194                 ETAIMJ=-0.5D0*EPS*PHIIM
25195               ENDIF
25196 C...Couplings (=1 for standard model Higgs).
25197               IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
25198                 IF(MOD(J,2).EQ.1) THEN
25199                   ETAREJ=ETAREJ*PARU(151+10*IHIGG)
25200                   ETAIMJ=ETAIMJ*PARU(151+10*IHIGG)
25201                 ELSE
25202                   ETAREJ=ETAREJ*PARU(152+10*IHIGG)
25203                   ETAIMJ=ETAIMJ*PARU(152+10*IHIGG)
25204                 ENDIF
25205               ENDIF
25206               ETARE=ETARE+ETAREJ
25207               ETAIM=ETAIM+ETAIMJ
25208   240       CONTINUE
25209             ETA2=ETARE**2+ETAIM**2
25210             WDTP(I)=FAC*(AS/PARU(1))**2*ETA2
25211  
25212           ELSEIF(I.EQ.14) THEN
25213 C...h0 -> gamma + gamma; quark, lepton, W+- and H+- loop contributions
25214             ETARE=0D0
25215             ETAIM=0D0
25216             JMAX=3*MSTP(1)+1
25217             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
25218             DO 250 J=1,JMAX
25219               IF(J.LE.2*MSTP(1)) THEN
25220                 EJ=KCHG(J,1)/3D0
25221                 EPS=(2D0*PMAS(J,1))**2/SH
25222               ELSEIF(J.LE.3*MSTP(1)) THEN
25223                 JL=2*(J-2*MSTP(1))-1
25224                 EJ=KCHG(10+JL,1)/3D0
25225                 EPS=(2D0*PMAS(10+JL,1))**2/SH
25226               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
25227                 EPS=(2D0*PMAS(24,1))**2/SH
25228               ELSE
25229                 EPS=(2D0*PMAS(37,1))**2/SH
25230               ENDIF
25231 C...Loop integral; function of eps=4m^2/shat.
25232               IF(EPS.LE.1D0) THEN
25233                 IF(EPS.GT.1D-4) THEN
25234                   ROOT=SQRT(1D0-EPS)
25235                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
25236                 ELSE
25237                   RLN=LOG(4D0/EPS-2D0)
25238                 ENDIF
25239                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
25240                 PHIIM=0.5D0*PARU(1)*RLN
25241               ELSE
25242                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
25243                 PHIIM=0D0
25244               ENDIF
25245               IF(J.LE.3*MSTP(1)) THEN
25246 C...Fermion loops: loop integral different for A0; charges.
25247                 IF(IHIGG.LE.2) THEN
25248                   PHIPRE=-0.5D0*EPS*(1D0+(1D0-EPS)*PHIRE)
25249                   PHIPIM=-0.5D0*EPS*(1D0-EPS)*PHIIM
25250                 ELSE
25251                   PHIPRE=-0.5D0*EPS*PHIRE
25252                   PHIPIM=-0.5D0*EPS*PHIIM
25253                 ENDIF
25254                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
25255                   EJC=3D0*EJ**2
25256                   EJH=PARU(151+10*IHIGG)
25257                 ELSEIF(J.LE.2*MSTP(1)) THEN
25258                   EJC=3D0*EJ**2
25259                   EJH=PARU(152+10*IHIGG)
25260                 ELSE
25261                   EJC=EJ**2
25262                   EJH=PARU(153+10*IHIGG)
25263                 ENDIF
25264                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
25265                 ETAREJ=EJC*EJH*PHIPRE
25266                 ETAIMJ=EJC*EJH*PHIPIM
25267               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
25268 C...W loops: loop integral and charges.
25269                 ETAREJ=0.5D0+0.75D0*EPS*(1D0+(2D0-EPS)*PHIRE)
25270                 ETAIMJ=0.75D0*EPS*(2D0-EPS)*PHIIM
25271                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
25272                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
25273                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
25274                 ENDIF
25275               ELSE
25276 C...Charged H loops: loop integral and charges.
25277                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*
25278      &          PARU(158+10*IHIGG+2*(IHIGG/3))
25279                 ETAREJ=EPS*(1D0-EPS*PHIRE)*FACHHH
25280                 ETAIMJ=-EPS**2*PHIIM*FACHHH
25281               ENDIF
25282               ETARE=ETARE+ETAREJ
25283               ETAIM=ETAIM+ETAIMJ
25284   250       CONTINUE
25285             ETA2=ETARE**2+ETAIM**2
25286             WDTP(I)=FAC*(AEM/PARU(1))**2*0.5D0*ETA2
25287  
25288           ELSEIF(I.EQ.15) THEN
25289 C...h0 -> gamma + Z0; quark, lepton, W and H+- loop contributions
25290             ETARE=0D0
25291             ETAIM=0D0
25292             JMAX=3*MSTP(1)+1
25293             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) JMAX=JMAX+1
25294             DO 260 J=1,JMAX
25295               IF(J.LE.2*MSTP(1)) THEN
25296                 EJ=KCHG(J,1)/3D0
25297                 AJ=SIGN(1D0,EJ+0.1D0)
25298                 VJ=AJ-4D0*EJ*XWV
25299                 EPS=(2D0*PMAS(J,1))**2/SH
25300                 EPSP=(2D0*PMAS(J,1)/PMAS(23,1))**2
25301               ELSEIF(J.LE.3*MSTP(1)) THEN
25302                 JL=2*(J-2*MSTP(1))-1
25303                 EJ=KCHG(10+JL,1)/3D0
25304                 AJ=SIGN(1D0,EJ+0.1D0)
25305                 VJ=AJ-4D0*EJ*XWV
25306                 EPS=(2D0*PMAS(10+JL,1))**2/SH
25307                 EPSP=(2D0*PMAS(10+JL,1)/PMAS(23,1))**2
25308               ELSE
25309                 EPS=(2D0*PMAS(24,1))**2/SH
25310                 EPSP=(2D0*PMAS(24,1)/PMAS(23,1))**2
25311               ENDIF
25312 C...Loop integrals; functions of eps=4m^2/shat and eps'=4m^2/m_Z^2.
25313               IF(EPS.LE.1D0) THEN
25314                 ROOT=SQRT(1D0-EPS)
25315                 IF(EPS.GT.1D-4) THEN
25316                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
25317                 ELSE
25318                   RLN=LOG(4D0/EPS-2D0)
25319                 ENDIF
25320                 PHIRE=-0.25D0*(RLN**2-PARU(1)**2)
25321                 PHIIM=0.5D0*PARU(1)*RLN
25322                 PSIRE=0.5D0*ROOT*RLN
25323                 PSIIM=-0.5D0*ROOT*PARU(1)
25324               ELSE
25325                 PHIRE=(ASIN(1D0/SQRT(EPS)))**2
25326                 PHIIM=0D0
25327                 PSIRE=SQRT(EPS-1D0)*ASIN(1D0/SQRT(EPS))
25328                 PSIIM=0D0
25329               ENDIF
25330               IF(EPSP.LE.1D0) THEN
25331                 ROOT=SQRT(1D0-EPSP)
25332                 IF(EPSP.GT.1D-4) THEN
25333                   RLN=LOG((1D0+ROOT)/(1D0-ROOT))
25334                 ELSE
25335                   RLN=LOG(4D0/EPSP-2D0)
25336                 ENDIF
25337                 PHIREP=-0.25D0*(RLN**2-PARU(1)**2)
25338                 PHIIMP=0.5D0*PARU(1)*RLN
25339                 PSIREP=0.5D0*ROOT*RLN
25340                 PSIIMP=-0.5D0*ROOT*PARU(1)
25341               ELSE
25342                 PHIREP=(ASIN(1D0/SQRT(EPSP)))**2
25343                 PHIIMP=0D0
25344                 PSIREP=SQRT(EPSP-1D0)*ASIN(1D0/SQRT(EPSP))
25345                 PSIIMP=0D0
25346               ENDIF
25347               FXYRE=EPS*EPSP/(8D0*(EPS-EPSP))*(1D0+EPS*EPSP/(EPS-EPSP)*
25348      &        (PHIRE-PHIREP)+2D0*EPS/(EPS-EPSP)*(PSIRE-PSIREP))
25349               FXYIM=EPS**2*EPSP/(8D0*(EPS-EPSP)**2)*
25350      &        (EPSP*(PHIIM-PHIIMP)+2D0*(PSIIM-PSIIMP))
25351               F1RE=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIRE-PHIREP)
25352               F1IM=-EPS*EPSP/(2D0*(EPS-EPSP))*(PHIIM-PHIIMP)
25353               IF(J.LE.3*MSTP(1)) THEN
25354 C...Fermion loops: loop integral different for A0; charges.
25355                 IF(IHIGG.EQ.3) FXYRE=0D0
25356                 IF(IHIGG.EQ.3) FXYIM=0D0
25357                 IF(J.LE.2*MSTP(1).AND.MOD(J,2).EQ.1) THEN
25358                   EJC=-3D0*EJ*VJ
25359                   EJH=PARU(151+10*IHIGG)
25360                 ELSEIF(J.LE.2*MSTP(1)) THEN
25361                   EJC=-3D0*EJ*VJ
25362                   EJH=PARU(152+10*IHIGG)
25363                 ELSE
25364                   EJC=-EJ*VJ
25365                   EJH=PARU(153+10*IHIGG)
25366                 ENDIF
25367                 IF(MSTP(4).EQ.0.AND.IHIGG.EQ.1) EJH=1D0
25368                 ETAREJ=EJC*EJH*(FXYRE-0.25D0*F1RE)
25369                 ETAIMJ=EJC*EJH*(FXYIM-0.25D0*F1IM)
25370               ELSEIF(J.EQ.3*MSTP(1)+1) THEN
25371 C...W loops: loop integral and charges.
25372                 HEPS=(1D0+2D0/EPS)*XW/XW1-(5D0+2D0/EPS)
25373                 ETAREJ=-XW1*((3D0-XW/XW1)*F1RE+HEPS*FXYRE)
25374                 ETAIMJ=-XW1*((3D0-XW/XW1)*F1IM+HEPS*FXYIM)
25375                 IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
25376                   ETAREJ=ETAREJ*PARU(155+10*IHIGG)
25377                   ETAIMJ=ETAIMJ*PARU(155+10*IHIGG)
25378                 ENDIF
25379               ELSE
25380 C...Charged H loops: loop integral and charges.
25381                 FACHHH=(PMAS(24,1)/PMAS(37,1))**2*(1D0-2D0*XW)*
25382      &          PARU(158+10*IHIGG+2*(IHIGG/3))
25383                 ETAREJ=FACHHH*FXYRE
25384                 ETAIMJ=FACHHH*FXYIM
25385               ENDIF
25386               ETARE=ETARE+ETAREJ
25387               ETAIM=ETAIM+ETAIMJ
25388   260       CONTINUE
25389             ETA2=(ETARE**2+ETAIM**2)/(XW*XW1)
25390             WDTP(I)=FAC*(AEM/PARU(1))**2*(1D0-PMAS(23,1)**2/SH)**3*ETA2
25391             WID2=WIDS(23,2)
25392  
25393           ELSEIF(I.LE.17) THEN
25394 C...h0 -> Z0 + Z0, W+ + W-
25395             PM1=PMAS(IABS(KFDP(IDC,1)),1)
25396             PG1=PMAS(IABS(KFDP(IDC,1)),2)
25397             IF(MINT(62).GE.1) THEN
25398               IF(MSTP(42).EQ.0.OR.(4D0*(PM1+10D0*PG1)**2.LT.SH.AND.
25399      &        CKIN(46).LT.CKIN(45).AND.CKIN(48).LT.CKIN(47).AND.
25400      &        MAX(CKIN(45),CKIN(47)).LT.PM1-10D0*PG1)) THEN
25401                 MOFSV(IHIGG,I-15)=0
25402                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
25403      &          1D0-4D0*RM1))
25404                 WID2=1D0
25405               ELSE
25406                 MOFSV(IHIGG,I-15)=1
25407                 RMAS=SQRT(MAX(0D0,SH))
25408                 CALL PYOFSH(1,KFLA,KFDP(IDC,1),KFDP(IDC,2),RMAS,WIDW,
25409      &          WID2)
25410                 WIDWSV(IHIGG,I-15)=WIDW
25411                 WID2SV(IHIGG,I-15)=WID2
25412               ENDIF
25413             ELSE
25414               IF(MOFSV(IHIGG,I-15).EQ.0) THEN
25415                 WIDW=(1D0-4D0*RM1+12D0*RM1**2)*SQRT(MAX(0D0,
25416      &          1D0-4D0*RM1))
25417                 WID2=1D0
25418               ELSE
25419                 WIDW=WIDWSV(IHIGG,I-15)
25420                 WID2=WID2SV(IHIGG,I-15)
25421               ENDIF
25422             ENDIF
25423             WDTP(I)=FAC*WIDW/(2D0*(18-I))
25424             IF(MSTP(49).NE.0) WDTP(I)=WDTP(I)*PMAS(KFHIGG,1)**2/SHFS
25425             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) WDTP(I)=WDTP(I)*
25426      &      PARU(138+I+10*IHIGG)**2
25427             WID2=WID2*WIDS(7+I,1)
25428  
25429           ELSEIF(I.EQ.18.AND.IHIGG.GE.2) THEN
25430 C...H0 -> Z0 + h0, A0-> Z0 + h0
25431             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
25432      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25433             IF(IHIGG.EQ.2) THEN
25434              WDTP(I)=WDTP(I)*PARU(179)**2
25435             ELSEIF(IHIGG.EQ.3) THEN
25436              WDTP(I)=WDTP(I)*PARU(186)**2
25437             ENDIF
25438             WID2=WIDS(23,2)*WIDS(25,2)
25439  
25440           ELSEIF(I.EQ.19.AND.IHIGG.GE.2) THEN
25441 C...H0 -> h0 + h0, A0-> h0 + h0
25442             WDTP(I)=FAC*0.25D0*
25443      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
25444             IF(IHIGG.EQ.2) THEN
25445              WDTP(I)=WDTP(I)*PARU(176)**2
25446             ELSEIF(IHIGG.EQ.3) THEN
25447              WDTP(I)=WDTP(I)*PARU(169)**2
25448             ENDIF
25449             WID2=WIDS(25,1)
25450           ELSEIF((I.EQ.20.OR.I.EQ.21).AND.IHIGG.GE.2) THEN
25451 C...H0 -> W+/- + H-/+, A0 -> W+/- + H-/+
25452             WDTP(I)=FAC*0.5D0*SQRT(MAX(0D0,
25453      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25454      &      *PARU(195+IHIGG)**2
25455             IF(I.EQ.20) THEN
25456               WID2=WIDS(24,2)*WIDS(37,3)
25457             ELSEIF(I.EQ.21) THEN
25458               WID2=WIDS(24,3)*WIDS(37,2)
25459             ENDIF
25460  
25461           ELSEIF(I.EQ.22.AND.IHIGG.EQ.2) THEN
25462 C...H0 -> Z0 + A0.
25463             WDTP(I)=FAC*0.5D0*PARU(187)**2*SQRT(MAX(0D0,
25464      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25465             WID2=WIDS(36,2)*WIDS(23,2)
25466  
25467           ELSEIF(I.EQ.23.AND.IHIGG.EQ.2) THEN
25468 C...H0 -> h0 + A0.
25469             WDTP(I)=FAC*0.5D0*PARU(180)**2*
25470      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
25471             WID2=WIDS(25,2)*WIDS(36,2)
25472  
25473           ELSEIF(I.EQ.24.AND.IHIGG.EQ.2) THEN
25474 C...H0 -> A0 + A0
25475             WDTP(I)=FAC*0.25D0*PARU(177)**2*
25476      &      PMAS(23,1)**4/SH**2*SQRT(MAX(0D0,1D0-4D0*RM1))
25477             WID2=WIDS(36,1)
25478  
25479 CMRENNA++
25480           ELSE
25481 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
25482             RM10=RM1*SH/PMR**2
25483             RM20=RM2*SH/PMR**2
25484             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
25485             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
25486             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
25487               WFAC=0D0
25488             ELSE
25489               WFAC=WFAC/WFAC0
25490             ENDIF
25491             WDTP(I)=PMAS(KFLA,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
25492 CMRENNA--
25493             IF(KFC2.EQ.KFC1) THEN
25494               WID2=WIDS(KFC1,1)
25495             ELSE
25496               KSGN1=2
25497               IF(KFDP(IDC,1).LT.0) KSGN1=3
25498               KSGN2=2
25499               IF(KFDP(IDC,2).LT.0) KSGN2=3
25500               WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
25501             ENDIF
25502           ENDIF
25503           WDTP(I)=FUDGE*WDTP(I)
25504           WDTP(0)=WDTP(0)+WDTP(I)
25505           IF(MDME(IDC,1).GT.0) THEN
25506             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25507             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25508             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25509             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25510           ENDIF
25511   270   CONTINUE
25512  
25513       ELSEIF(KFLA.EQ.32) THEN
25514 C...Z'0:
25515         ICASE=1
25516         XWC=1D0/(16D0*XW*XW1)
25517         FAC=(AEM*XWC/3D0)*SHR
25518         VINT(117)=0D0
25519   280   CONTINUE
25520         IF(MINT(61).GE.1.AND.ICASE.EQ.2) THEN
25521           VINT(111)=0D0
25522           VINT(112)=0D0
25523           VINT(113)=0D0
25524           VINT(114)=0D0
25525           VINT(115)=0D0
25526           VINT(116)=0D0
25527         ENDIF
25528         IF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25529           KFAI=IABS(MINT(15))
25530           EI=KCHG(KFAI,1)/3D0
25531           AI=SIGN(1D0,EI+0.1D0)
25532           VI=AI-4D0*EI*XWV
25533           KFAIC=1
25534           IF(KFAI.LE.10.AND.MOD(KFAI,2).EQ.0) KFAIC=2
25535           IF(KFAI.GT.10.AND.MOD(KFAI,2).NE.0) KFAIC=3
25536           IF(KFAI.GT.10.AND.MOD(KFAI,2).EQ.0) KFAIC=4
25537           IF(KFAI.LE.2.OR.KFAI.EQ.11.OR.KFAI.EQ.12) THEN
25538             VPI=PARU(119+2*KFAIC)
25539             API=PARU(120+2*KFAIC)
25540           ELSEIF(KFAI.LE.4.OR.KFAI.EQ.13.OR.KFAI.EQ.14) THEN
25541             VPI=PARJ(178+2*KFAIC)
25542             API=PARJ(179+2*KFAIC)
25543           ELSE
25544             VPI=PARJ(186+2*KFAIC)
25545             API=PARJ(187+2*KFAIC)
25546           ENDIF
25547           SQMZ=PMAS(23,1)**2
25548           HZ=SHR*VINT(117)
25549           SQMZP=PMAS(32,1)**2
25550           HZP=SHR*WDTP(0)
25551           IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
25552      &    MSTP(44).EQ.7) VINT(111)=1D0
25553           IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=
25554      &    2D0*XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+HZ**2)
25555           IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=
25556      &    2D0*XWC*SH*(SH-SQMZP)/((SH-SQMZP)**2+HZP**2)
25557           IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
25558      &    MSTP(44).EQ.7) VINT(114)=XWC**2*SH**2/((SH-SQMZ)**2+HZ**2)
25559           IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=
25560      &    2D0*XWC**2*SH**2*((SH-SQMZ)*(SH-SQMZP)+HZ*HZP)/
25561      &    (((SH-SQMZ)**2+HZ**2)*((SH-SQMZP)**2+HZP**2))
25562           IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
25563      &    MSTP(44).EQ.7) VINT(116)=XWC**2*SH**2/((SH-SQMZP)**2+HZP**2)
25564         ENDIF
25565         DO 290 I=1,MDCY(KC,3)
25566           IDC=I+MDCY(KC,2)-1
25567           IF(MDME(IDC,1).LT.0) GOTO 290
25568           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25569           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25570           IF(SQRT(RM1)+SQRT(RM2).GT.1D0.OR.MDME(IDC,1).LT.0) GOTO 290
25571           WID2=1D0
25572           IF(I.LE.16) THEN
25573             IF(I.LE.8) THEN
25574 C...Z'0 -> q + qbar
25575               EF=KCHG(I,1)/3D0
25576               AF=SIGN(1D0,EF+0.1D0)
25577               VF=AF-4D0*EF*XWV
25578               IF(I.LE.2) THEN
25579                 VPF=PARU(123-2*MOD(I,2))
25580                 APF=PARU(124-2*MOD(I,2))
25581               ELSEIF(I.LE.4) THEN
25582                 VPF=PARJ(182-2*MOD(I,2))
25583                 APF=PARJ(183-2*MOD(I,2))
25584               ELSE
25585                 VPF=PARJ(190-2*MOD(I,2))
25586                 APF=PARJ(191-2*MOD(I,2))
25587               ENDIF
25588               FCOF=3D0*RADC
25589               IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
25590      &        PYHFTH(SH,SH*RM1,1D0)
25591               IF(I.EQ.6) WID2=WIDS(6,1)
25592               IF((I.EQ.7.OR.I.EQ.8)) WID2=WIDS(I,1)
25593             ELSEIF(I.LE.16) THEN
25594 C...Z'0 -> l+ + l-, nu + nubar
25595               EF=KCHG(I+2,1)/3D0
25596               AF=SIGN(1D0,EF+0.1D0)
25597               VF=AF-4D0*EF*XWV
25598               IF(I.LE.10) THEN
25599                 VPF=PARU(127-2*MOD(I,2))
25600                 APF=PARU(128-2*MOD(I,2))
25601               ELSEIF(I.LE.12) THEN
25602                 VPF=PARJ(186-2*MOD(I,2))
25603                 APF=PARJ(187-2*MOD(I,2))
25604               ELSE
25605                 VPF=PARJ(194-2*MOD(I,2))
25606                 APF=PARJ(195-2*MOD(I,2))
25607               ENDIF
25608               FCOF=1D0
25609               IF((I.EQ.15.OR.I.EQ.16)) WID2=WIDS(2+I,1)
25610             ENDIF
25611             BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
25612             IF(ICASE.EQ.1) THEN
25613               WDTPZ=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
25614               WDTP(I)=FAC*FCOF*(VPF**2*(1D0+2D0*RM1)+
25615      &        APF**2*(1D0-4D0*RM1))*BE34
25616             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25617               WDTP(I)=FAC*FCOF*((EI**2*VINT(111)*EF**2+EI*VI*VINT(112)*
25618      &        EF*VF+EI*VPI*VINT(113)*EF*VPF+(VI**2+AI**2)*VINT(114)*
25619      &        VF**2+(VI*VPI+AI*API)*VINT(115)*VF*VPF+(VPI**2+API**2)*
25620      &        VINT(116)*VPF**2)*(1D0+2D0*RM1)+((VI**2+AI**2)*VINT(114)*
25621      &        AF**2+(VI*VPI+AI*API)*VINT(115)*AF*APF+(VPI**2+API**2)*
25622      &        VINT(116)*APF**2)*(1D0-4D0*RM1))*BE34
25623             ELSEIF(MINT(61).EQ.2) THEN
25624               FGGF=FCOF*EF**2*(1D0+2D0*RM1)*BE34
25625               FGZF=FCOF*EF*VF*(1D0+2D0*RM1)*BE34
25626               FGZPF=FCOF*EF*VPF*(1D0+2D0*RM1)*BE34
25627               FZZF=FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*BE34
25628               FZZPF=FCOF*(VF*VPF*(1D0+2D0*RM1)+AF*APF*(1D0-4D0*RM1))*
25629      &        BE34
25630               FZPZPF=FCOF*(VPF**2*(1D0+2D0*RM1)+APF**2*(1D0-4D0*RM1))*
25631      &        BE34
25632             ENDIF
25633           ELSEIF(I.EQ.17) THEN
25634 C...Z'0 -> W+ + W-
25635             WDTPZP=PARU(129)**2*XW1**2*
25636      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25637      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
25638             IF(ICASE.EQ.1) THEN
25639               WDTPZ=0D0
25640               WDTP(I)=FAC*WDTPZP
25641             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25642               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
25643             ELSEIF(MINT(61).EQ.2) THEN
25644               FGGF=0D0
25645               FGZF=0D0
25646               FGZPF=0D0
25647               FZZF=0D0
25648               FZZPF=0D0
25649               FZPZPF=WDTPZP
25650             ENDIF
25651             WID2=WIDS(24,1)
25652           ELSEIF(I.EQ.18) THEN
25653 C...Z'0 -> H+ + H-
25654             CZC=2D0*(1D0-2D0*XW)
25655             BE34C=(1D0-4D0*RM1)*SQRT(MAX(0D0,1D0-4D0*RM1))
25656             IF(ICASE.EQ.1) THEN
25657               WDTPZ=0.25D0*PARU(142)**2*CZC**2*BE34C
25658               WDTP(I)=FAC*0.25D0*PARU(143)**2*CZC**2*BE34C
25659             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25660               WDTP(I)=FAC*0.25D0*(EI**2*VINT(111)+PARU(142)*EI*VI*
25661      &        VINT(112)*CZC+PARU(143)*EI*VPI*VINT(113)*CZC+PARU(142)**2*
25662      &        (VI**2+AI**2)*VINT(114)*CZC**2+PARU(142)*PARU(143)*
25663      &        (VI*VPI+AI*API)*VINT(115)*CZC**2+PARU(143)**2*
25664      &        (VPI**2+API**2)*VINT(116)*CZC**2)*BE34C
25665             ELSEIF(MINT(61).EQ.2) THEN
25666               FGGF=0.25D0*BE34C
25667               FGZF=0.25D0*PARU(142)*CZC*BE34C
25668               FGZPF=0.25D0*PARU(143)*CZC*BE34C
25669               FZZF=0.25D0*PARU(142)**2*CZC**2*BE34C
25670               FZZPF=0.25D0*PARU(142)*PARU(143)*CZC**2*BE34C
25671               FZPZPF=0.25D0*PARU(143)**2*CZC**2*BE34C
25672             ENDIF
25673             WID2=WIDS(37,1)
25674           ELSEIF(I.EQ.19) THEN
25675 C...Z'0 -> Z0 + gamma.
25676           ELSEIF(I.EQ.20) THEN
25677 C...Z'0 -> Z0 + h0
25678             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25679             WDTPZP=PARU(145)**2*4D0*ABS(1D0-2D0*XW)*
25680      &      (3D0*RM1+0.25D0*FLAM**2)*FLAM
25681             IF(ICASE.EQ.1) THEN
25682               WDTPZ=0D0
25683               WDTP(I)=FAC*WDTPZP
25684             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25685               WDTP(I)=FAC*(VPI**2+API**2)*VINT(116)*WDTPZP
25686             ELSEIF(MINT(61).EQ.2) THEN
25687               FGGF=0D0
25688               FGZF=0D0
25689               FGZPF=0D0
25690               FZZF=0D0
25691               FZZPF=0D0
25692               FZPZPF=WDTPZP
25693             ENDIF
25694             WID2=WIDS(23,2)*WIDS(25,2)
25695           ELSEIF(I.EQ.21.OR.I.EQ.22) THEN
25696 C...Z' -> h0 + A0 or H0 + A0.
25697             BE34C=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25698             IF(I.EQ.21) THEN
25699               CZAH=PARU(186)
25700               CZPAH=PARU(188)
25701             ELSE
25702               CZAH=PARU(187)
25703               CZPAH=PARU(189)
25704             ENDIF
25705             IF(ICASE.EQ.1) THEN
25706               WDTPZ=CZAH**2*BE34C
25707               WDTP(I)=FAC*CZPAH**2*BE34C
25708             ELSEIF(MINT(61).EQ.1.AND.ICASE.EQ.2) THEN
25709               WDTP(I)=FAC*(CZAH**2*(VI**2+AI**2)*VINT(114)+CZAH*CZPAH*
25710      &        (VI*VPI+AI*API)*VINT(115)+CZPAH**2*(VPI**2+API**2)*
25711      &        VINT(116))*BE34C
25712             ELSEIF(MINT(61).EQ.2) THEN
25713               FGGF=0D0
25714               FGZF=0D0
25715               FGZPF=0D0
25716               FZZF=CZAH**2*BE34C
25717               FZZPF=CZAH*CZPAH*BE34C
25718               FZPZPF=CZPAH**2*BE34C
25719             ENDIF
25720             IF(I.EQ.21) WID2=WIDS(25,2)*WIDS(36,2)
25721             IF(I.EQ.22) WID2=WIDS(35,2)*WIDS(36,2)
25722           ENDIF
25723           IF(ICASE.EQ.1) THEN
25724             VINT(117)=VINT(117)+FAC*WDTPZ
25725             WDTP(I)=FUDGE*WDTP(I)
25726             WDTP(0)=WDTP(0)+WDTP(I)
25727           ENDIF
25728           IF(MDME(IDC,1).GT.0) THEN
25729             IF((ICASE.EQ.1.AND.MINT(61).NE.1).OR.
25730      &      (ICASE.EQ.2.AND.MINT(61).EQ.1)) THEN
25731               WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25732               WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+
25733      &        WDTE(I,MDME(IDC,1))
25734               WDTE(I,0)=WDTE(I,MDME(IDC,1))
25735               WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25736             ENDIF
25737             IF(MINT(61).EQ.2.AND.ICASE.EQ.2) THEN
25738               IF(MSTP(44).EQ.1.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.5.OR.
25739      &        MSTP(44).EQ.7) VINT(111)=VINT(111)+FGGF*WID2
25740               IF(MSTP(44).EQ.4.OR.MSTP(44).EQ.7) VINT(112)=VINT(112)+
25741      &        FGZF*WID2
25742               IF(MSTP(44).EQ.5.OR.MSTP(44).EQ.7) VINT(113)=VINT(113)+
25743      &        FGZPF*WID2
25744               IF(MSTP(44).EQ.2.OR.MSTP(44).EQ.4.OR.MSTP(44).EQ.6.OR.
25745      &        MSTP(44).EQ.7) VINT(114)=VINT(114)+FZZF*WID2
25746               IF(MSTP(44).EQ.6.OR.MSTP(44).EQ.7) VINT(115)=VINT(115)+
25747      &        FZZPF*WID2
25748               IF(MSTP(44).EQ.3.OR.MSTP(44).EQ.5.OR.MSTP(44).EQ.6.OR.
25749      &        MSTP(44).EQ.7) VINT(116)=VINT(116)+FZPZPF*WID2
25750             ENDIF
25751           ENDIF
25752   290   CONTINUE
25753         IF(MINT(61).GE.1) ICASE=3-ICASE
25754         IF(ICASE.EQ.2) GOTO 280
25755  
25756       ELSEIF(KFLA.EQ.34) THEN
25757 C...W'+/-:
25758         FAC=(AEM/(24D0*XW))*SHR
25759         DO 300 I=1,MDCY(KC,3)
25760           IDC=I+MDCY(KC,2)-1
25761           IF(MDME(IDC,1).LT.0) GOTO 300
25762           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25763           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25764           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 300
25765           WID2=1D0
25766           IF(I.LE.20) THEN
25767             IF(I.LE.16) THEN
25768 C...W'+/- -> q + qbar'
25769               FCOF=3D0*RADC*(PARU(131)**2+PARU(132)**2)*
25770      &        VCKM((I-1)/4+1,MOD(I-1,4)+1)
25771               IF(KFLR.GT.0) THEN
25772                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,2)
25773                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,2)
25774                 IF(I.GE.13) WID2=WID2*WIDS(7,3)
25775               ELSE
25776                 IF(MOD(I,4).EQ.3) WID2=WIDS(6,3)
25777                 IF(MOD(I,4).EQ.0) WID2=WIDS(8,3)
25778                 IF(I.GE.13) WID2=WID2*WIDS(7,2)
25779               ENDIF
25780             ELSEIF(I.LE.20) THEN
25781 C...W'+/- -> l+/- + nu
25782               FCOF=PARU(133)**2+PARU(134)**2
25783               IF(KFLR.GT.0) THEN
25784                 IF(I.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
25785               ELSE
25786                 IF(I.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
25787               ENDIF
25788             ENDIF
25789             WDTP(I)=FAC*FCOF*0.5D0*(2D0-RM1-RM2-(RM1-RM2)**2)*
25790      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25791           ELSEIF(I.EQ.21) THEN
25792 C...W'+/- -> W+/- + Z0
25793             WDTP(I)=FAC*PARU(135)**2*0.5D0*XW1*(RM1/RM2)*
25794      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
25795      &      (1D0+10D0*RM1+10D0*RM2+RM1**2+RM2**2+10D0*RM1*RM2)
25796             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(23,2)
25797             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(23,2)
25798           ELSEIF(I.EQ.23) THEN
25799 C...W'+/- -> W+/- + h0
25800             FLAM=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25801             WDTP(I)=FAC*PARU(146)**2*2D0*(3D0*RM1+0.25D0*FLAM**2)*FLAM
25802             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
25803             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
25804           ENDIF
25805           WDTP(I)=FUDGE*WDTP(I)
25806           WDTP(0)=WDTP(0)+WDTP(I)
25807           IF(MDME(IDC,1).GT.0) THEN
25808             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25809             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25810             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25811             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25812           ENDIF
25813   300   CONTINUE
25814  
25815       ELSEIF(KFLA.EQ.37) THEN
25816 C...H+/-:
25817 C        IF(MSTP(49).EQ.0) THEN
25818         SHFS=SH
25819 C        ELSE
25820 C          SHFS=PMAS(37,1)**2
25821 C        ENDIF
25822         FAC=(AEM/(8D0*XW))*(SHFS/PMAS(24,1)**2)*SHR
25823         DO 310 I=1,MDCY(KC,3)
25824           IDC=I+MDCY(KC,2)-1
25825           IF(MDME(IDC,1).LT.0) GOTO 310
25826           KFC1=PYCOMP(KFDP(IDC,1))
25827           KFC2=PYCOMP(KFDP(IDC,2))
25828           RM1=PMAS(KFC1,1)**2/SH
25829           RM2=PMAS(KFC2,1)**2/SH
25830           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 310
25831           WID2=1D0
25832           IF(I.LE.4) THEN
25833 C...H+/- -> q + qbar'
25834             RM1R=PYMRUN(KFDP(IDC,1),SH)**2/SH
25835             RM2R=PYMRUN(KFDP(IDC,2),SH)**2/SH
25836             WDTP(I)=FAC*3D0*RADC*MAX(0D0,(RM1R*PARU(141)**2+
25837      &      RM2R/PARU(141)**2)*(1D0-RM1R-RM2R)-4D0*RM1R*RM2R)*
25838      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
25839             IF(KFLR.GT.0) THEN
25840               IF(I.EQ.3) WID2=WIDS(6,2)
25841               IF(I.EQ.4) WID2=WIDS(7,3)*WIDS(8,2)
25842             ELSE
25843               IF(I.EQ.3) WID2=WIDS(6,3)
25844               IF(I.EQ.4) WID2=WIDS(7,2)*WIDS(8,3)
25845             ENDIF
25846           ELSEIF(I.LE.8) THEN
25847 C...H+/- -> l+/- + nu
25848             WDTP(I)=FAC*((RM1*PARU(141)**2+RM2/PARU(141)**2)*
25849      &      (1D0-RM1-RM2)-4D0*RM1*RM2)*SQRT(MAX(0D0,
25850      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))*(SH/SHFS)
25851             IF(KFLR.GT.0) THEN
25852               IF(I.EQ.8) WID2=WIDS(17,3)*WIDS(18,2)
25853             ELSE
25854               IF(I.EQ.8) WID2=WIDS(17,2)*WIDS(18,3)
25855             ENDIF
25856           ELSEIF(I.EQ.9) THEN
25857 C...H+/- -> W+/- + h0.
25858             WDTP(I)=FAC*PARU(195)**2*0.5D0*SQRT(MAX(0D0,
25859      &      (1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25860             IF(KFLR.GT.0) WID2=WIDS(24,2)*WIDS(25,2)
25861             IF(KFLR.LT.0) WID2=WIDS(24,3)*WIDS(25,2)
25862  
25863 CMRENNA++
25864           ELSE
25865 C...Add in SUSY decays (two-body) by rescaling by phase space factor.
25866             RM10=RM1*SH/PMR**2
25867             RM20=RM2*SH/PMR**2
25868             WFAC0=1D0+RM10**2+RM20**2-2D0*(RM10+RM20+RM10*RM20)
25869             WFAC=1D0+RM1**2+RM2**2-2D0*(RM1+RM2+RM1*RM2)
25870             IF(WFAC.LE.0D0 .OR. WFAC0.LE.0D0) THEN
25871               WFAC=0D0
25872             ELSE
25873               WFAC=WFAC/WFAC0
25874             ENDIF
25875             WDTP(I)=PMAS(KC,2)*BRAT(IDC)*(SHR/PMR)*SQRT(WFAC)
25876 CMRENNA--
25877             KSGN1=2
25878             IF(KFLS*KFDP(IDC,1).LT.0.AND.KCHG(KFC1,3).EQ.1) KSGN1=3
25879             KSGN2=2
25880             IF(KFLS*KFDP(IDC,2).LT.0.AND.KCHG(KFC2,3).EQ.1) KSGN2=3
25881             WID2=WIDS(KFC1,KSGN1)*WIDS(KFC2,KSGN2)
25882           ENDIF
25883           WDTP(I)=FUDGE*WDTP(I)
25884           WDTP(0)=WDTP(0)+WDTP(I)
25885           IF(MDME(IDC,1).GT.0) THEN
25886             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25887             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25888             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25889             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25890           ENDIF
25891   310   CONTINUE
25892  
25893       ELSEIF(KFLA.EQ.41) THEN
25894 C...R:
25895         FAC=(AEM/(12D0*XW))*SHR
25896         DO 320 I=1,MDCY(KC,3)
25897           IDC=I+MDCY(KC,2)-1
25898           IF(MDME(IDC,1).LT.0) GOTO 320
25899           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25900           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25901           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 320
25902           WID2=1D0
25903           IF(I.LE.6) THEN
25904 C...R -> q + qbar'
25905             FCOF=3D0*RADC
25906           ELSEIF(I.LE.9) THEN
25907 C...R -> l+ + l'-
25908             FCOF=1D0
25909           ENDIF
25910           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
25911      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
25912           IF(KFLR.GT.0) THEN
25913             IF(I.EQ.4) WID2=WIDS(6,3)
25914             IF(I.EQ.5) WID2=WIDS(7,3)
25915             IF(I.EQ.6) WID2=WIDS(6,2)*WIDS(8,3)
25916             IF(I.EQ.9) WID2=WIDS(17,3)
25917           ELSE
25918             IF(I.EQ.4) WID2=WIDS(6,2)
25919             IF(I.EQ.5) WID2=WIDS(7,2)
25920             IF(I.EQ.6) WID2=WIDS(6,3)*WIDS(8,2)
25921             IF(I.EQ.9) WID2=WIDS(17,2)
25922           ENDIF
25923           WDTP(I)=FUDGE*WDTP(I)
25924           WDTP(0)=WDTP(0)+WDTP(I)
25925           IF(MDME(IDC,1).GT.0) THEN
25926             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25927             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25928             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25929             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25930           ENDIF
25931   320   CONTINUE
25932  
25933       ELSEIF(KFLA.EQ.42) THEN
25934 C...LQ (leptoquark).
25935         FAC=(AEM/4D0)*PARU(151)*SHR
25936         DO 330 I=1,MDCY(KC,3)
25937           IDC=I+MDCY(KC,2)-1
25938           IF(MDME(IDC,1).LT.0) GOTO 330
25939           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
25940           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
25941           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 330
25942           WDTP(I)=FAC*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
25943           WID2=1D0
25944           ILQQ=KFDP(IDC,1)*ISIGN(1,KFLR)
25945           IF(ILQQ.GE.6) WID2=WIDS(ILQQ,2)
25946           IF(ILQQ.LE.-6) WID2=WIDS(-ILQQ,3)
25947           ILQL=KFDP(IDC,2)*ISIGN(1,KFLR)
25948           IF(ILQL.GE.17) WID2=WID2*WIDS(ILQL,2)
25949           IF(ILQL.LE.-17) WID2=WID2*WIDS(-ILQL,3)
25950           WDTP(I)=FUDGE*WDTP(I)
25951           WDTP(0)=WDTP(0)+WDTP(I)
25952           IF(MDME(IDC,1).GT.0) THEN
25953             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
25954             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
25955             WDTE(I,0)=WDTE(I,MDME(IDC,1))
25956             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
25957           ENDIF
25958   330   CONTINUE
25959  
25960 C...UED: kk state width decays : flav: 451 476
25961       ELSEIF(IUED(1).EQ.1.AND.
25962      &       PYCOMP(ABS(KFLA)).GE.KKFLMI.AND.
25963      &       PYCOMP(ABS(KFLA)).LE.KKFLMA) THEN
25964          KCLA=PYCOMP(KFLA)
25965 C...q*_S,q*_D,l*_S,l*_D,gamma*,g*,Z*,W*
25966          RMFLAS=PMAS(KCLA,1)
25967          FACSH=SH/PMAS(KCLA,1)**2
25968          ALPHEM=PYALEM(RMFLAS**2)
25969          ALPHS=PYALPS(RMFLAS**2)
25970 
25971 C...uedcor parameters (alpha_s is calculated at mkk scale)
25972 C...alpha_em is calculated at z pole !
25973          ALPHEM=PARU(101)
25974          FACSH=1.
25975          
25976          DO 1070 I=1,MDCY(KCLA,3)
25977           IDC=I+MDCY(KCLA,2)-1
25978 
25979           IF(MDME(IDC,1).LT.0) GOTO 1070
25980           KFC1=PYCOMP(ABS(KFDP(IDC,1)))
25981           KFC2=PYCOMP(ABS(KFDP(IDC,2)))
25982           RM1=PMAS(KFC1,1)**2/SH
25983           RM2=PMAS(KFC2,1)**2/SH
25984           IF(SQRT(RM1)+SQRT(RM2).GT.1D0)
25985      &    GOTO 1070
25986           WID2=1D0
25987 
25988 C...N.B. RINV=RUED(1)
25989           RMKK=RUED(1)
25990           RMWKK=PMAS(475,1)
25991           RMZKK=PMAS(474,1)
25992           SW2=PARU(102)
25993           CW2=1.-SW2 
25994           KKCLA=KCLA-KKFLMI+1
25995           IF(ABS(KFC1).GE.KKFLMI)KKPART=KFC1
25996           IF(ABS(KFC2).GE.KKFLMI)KKPART=KFC2
25997           IF(KKCLA.LE.6) THEN
25998 C...q*_S -> q + gamma* (in first time sw21=0)
25999              FAC=0.25*ALPHEM*RMFLAS*0.5*CW21/CW2*KCHG(KCLA,1)**2/9.
26000 C...Eventually change the following by enabling a choice of open or closed.
26001 C...Only the gamma_kk channel is open.
26002              IF(MOD(I,2).EQ.0)
26003      +            WDTP(I)=FAC*FKAC2(RMFLAS,RMKK)*FKAC1(RMKK,RMFLAS)**2
26004              WDTP(I)=FACSH*WDTP(I)
26005              WID2=WIDS(473,2)
26006            ELSEIF(KKCLA.GT.6.AND.KKCLA.LE.12)THEN
26007 C...q*_D -> q + Z*/W*
26008               FAC=0.25*ALPHEM*RMFLAS/(4.*SW2)
26009               GAMMAW=FAC*FKAC2(RMFLAS,RMWKK)*FKAC1(RMWKK,RMFLAS)**2
26010               IF(I.EQ.1)THEN
26011 C...q*_D -> q + Z*
26012                  WDTP(I)=0.5*GAMMAW
26013                  WID2=WIDS(474,2)                 
26014               ELSEIF(I.EQ.2)THEN
26015 C...q*_D -> q + W*
26016                  WDTP(I)=GAMMAW
26017                  WID2=WIDS(475,2)                 
26018               ENDIF
26019               WDTP(I)=FACSH*WDTP(I)
26020 C...q*_D -> q + gamma* is closed
26021            ELSEIF(KKCLA.GT.12.AND.KKCLA.LE.21)THEN
26022 C...l*_S,l*_D -> gamma* + l*_S/l*_D(=nu_l,l)
26023               FAC=ALPHEM/4.*RMFLAS/CW2/8.
26024               RMGAKK=PMAS(473,1)
26025               WDTP(I)=FAC*FKAC2(RMFLAS,RMGAKK)*
26026      +                FKAC1(RMGAKK,RMFLAS)**2
26027               WDTP(I)=FACSH*WDTP(I)
26028               WID2=WIDS(473,2)
26029            ELSEIF(KKCLA.EQ.22)THEN
26030               RMQST=PMAS(KKPART,1)
26031               WID2=WIDS(KKPART,2)
26032 C...g* -> q*_S/q*_D + q
26033               FAC=10.*ALPHS/12.*RMFLAS
26034               WDTP(I)=FAC*FKAC1(RMQST,RMFLAS)**2*FKAC2(RMQST,RMFLAS)
26035               WDTP(I)=FACSH*WDTP(I)
26036            ELSEIF(KKCLA.EQ.23)THEN
26037 C...gamma* decays to graviton + gamma : initial value is used
26038              ICHI=IUED(4)/2
26039              WDTP(I)=RMFLAS*(RMFLAS/RUED(2))**(IUED(4)+2)
26040      &            *CHIDEL(ICHI)
26041            ELSEIF(KKCLA.EQ.24)THEN 
26042 C...Z* -> l*_S + l is closed
26043 C...  Z* -> l*_D + l
26044              IF(I.LE.3)GOTO 1070
26045 c...  After closing the channels for a Z* decaying into positively charged 
26046 C...  KK lepton singlets, close the channels for a Z* decaying into negatively 
26047 C...  charged KK lepton singlets + positively charged SM particles
26048              IF(I.GE.10.AND.I.LE.12)GOTO 1070
26049              FAC=3./2.*ALPHEM/24./SW2*RMZKK
26050              RMLST=PMAS(KKPART,1)
26051              WDTP(I)=FAC*FKAC1(RMLST,RMZKK)**2*FKAC2(RMLST,RMZKK)
26052              WDTP(I)=FACSH*WDTP(I)
26053              WID2=WIDS(KKPART,2)                 
26054            ELSEIF(KKCLA.EQ.25)THEN 
26055 C...W* -> l*_D lbar
26056              FAC=3.*ALPHEM/12./SW2*RMWKK
26057              RMLST=PMAS(KKPART,1)
26058              WDTP(I)=FAC*FKAC1(RMLST,RMWKK)**2*FKAC2(RMLST,RMWKK)
26059              WDTP(I)=FACSH*WDTP(I)
26060              WID2=WIDS(KKPART,2)                 
26061            ENDIF
26062           WDTP(0)=WDTP(0)+WDTP(I)
26063           IF(MDME(IDC,1).GT.0) THEN
26064             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26065             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26066             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26067             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26068           ENDIF
26069  1070   CONTINUE
26070         IUEDPR(KKCLA)=1
26071 
26072       ELSEIF(KFLA.EQ.KTECHN+111.OR.KFLA.EQ.KTECHN+221) THEN
26073 C...Techni-pi0 and techni-pi0':
26074         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
26075         DO 340 I=1,MDCY(KC,3)
26076           IDC=I+MDCY(KC,2)-1
26077           IF(MDME(IDC,1).LT.0) GOTO 340
26078           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
26079           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
26080           RM1=PM1**2/SH
26081           RM2=PM2**2/SH
26082           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 340
26083           WID2=1D0
26084 C...pi_tc -> g + g
26085           IF(I.EQ.8) THEN
26086             FACP=(AS/(4D0*PARU(1))*ITCM(1)/RTCM(1))**2
26087      &      /(8D0*PARU(1))*SH*SHR
26088             IF(KFLA.EQ.KTECHN+111) THEN
26089               FACP=FACP*RTCM(9)
26090             ELSE
26091               FACP=FACP*RTCM(10)
26092             ENDIF
26093             WDTP(I)=FACP
26094           ELSE
26095 C...pi_tc -> f + fbar.
26096             FCOF=1D0
26097             IKA=IABS(KFDP(IDC,1))
26098             IF(IKA.LT.10) FCOF=3D0*RADC
26099             HM1=PM1
26100             HM2=PM2
26101             IF(IKA.GE.4.AND.IKA.LE.6) THEN
26102                FCOF=FCOF*RTCM(1+IKA)**2
26103                HM1=PYMRUN(KFDP(IDC,1),SH)
26104                HM2=PYMRUN(KFDP(IDC,2),SH)
26105             ELSEIF(IKA.EQ.15) THEN
26106                FCOF=FCOF*RTCM(8)**2
26107             ENDIF
26108             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
26109      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26110           ENDIF
26111           WDTP(I)=FUDGE*WDTP(I)
26112           WDTP(0)=WDTP(0)+WDTP(I)
26113           IF(MDME(IDC,1).GT.0) THEN
26114             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26115             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26116             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26117             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26118           ENDIF
26119   340   CONTINUE
26120  
26121       ELSEIF(KFLA.EQ.KTECHN+211) THEN
26122 C...pi+_tc
26123         FAC=(1D0/(32D0*PARU(1)*RTCM(1)**2))*SHR
26124         DO 350 I=1,MDCY(KC,3)
26125           IDC=I+MDCY(KC,2)-1
26126           IF(MDME(IDC,1).LT.0) GOTO 350
26127           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
26128           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
26129           PM3=0D0
26130           IF(I.EQ.5) PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
26131           RM1=PM1**2/SH
26132           RM2=PM2**2/SH
26133           RM3=PM3**2/SH
26134           IF(SQRT(RM1)+SQRT(RM2)+SQRT(RM3).GT.1D0) GOTO 350
26135           WID2=1D0
26136 C...pi_tc -> f + f'.
26137           FCOF=1D0
26138           IF(IABS(KFDP(IDC,1)).LT.10) FCOF=3D0*RADC
26139 C...pi_tc+ -> W b b~
26140           IF(I.EQ.5.AND.SHR.LT.PMAS(6,1)+PMAS(5,1)) THEN
26141             FCOF=3D0*RADC
26142             XMT2=PMAS(6,1)**2/SH
26143             FACP=FAC/(4D0*PARU(1))*FCOF*XMT2*RTCM(7)**2
26144             KFC3=PYCOMP(KFDP(IDC,3))
26145             CHECK = SQRT(RM1)+SQRT(RM2)+SQRT(RM3)
26146             CHECK = SQRT(RM1)
26147             T0 = (1D0-CHECK**2)*
26148      &      (XMT2*(6D0*XMT2**2+3D0*XMT2*RM1-4D0*RM1**2)-
26149      &      (5D0*XMT2**2+2D0*XMT2*RM1-8D0*RM1**2))/(4D0*XMT2**2)
26150             T1 = (1D0-XMT2)*(RM1-XMT2)*((XMT2**2+XMT2*RM1+4D0*RM1**2)
26151      &      -3D0*XMT2**2*(XMT2+RM1))/(2D0*XMT2**3)
26152             T3 = RM1**2/XMT2**3*(3D0*XMT2-4D0*RM1+4D0*XMT2*RM1)
26153             WDTP(I)=FACP*(T0 + T1*LOG((XMT2-CHECK**2)/(XMT2-1D0))
26154      &      +T3*LOG(CHECK))
26155             IF(KFLR.GT.0) THEN
26156                WID2=WIDS(24,2)
26157             ELSE
26158                WID2=WIDS(24,3)
26159             ENDIF
26160           ELSE
26161             FCOF=1D0
26162             IKA=IABS(KFDP(IDC,1))
26163             IF(IKA.LT.10) FCOF=3D0*RADC
26164             HM1=PM1
26165             HM2=PM2
26166             IF(I.GE.1.AND.I.LE.5) THEN
26167               IF(I.LE.2) THEN
26168                 FCOF=FCOF*RTCM(5)**2
26169               ELSEIF(I.LE.4) THEN
26170                 FCOF=FCOF*RTCM(6)**2
26171               ELSEIF(I.EQ.5) THEN
26172                 FCOF=FCOF*RTCM(7)**2
26173               ENDIF
26174               HM1=PYMRUN(KFDP(IDC,1),SH)
26175               HM2=PYMRUN(KFDP(IDC,2),SH)
26176             ELSEIF(I.EQ.8) THEN
26177               FCOF=FCOF*RTCM(8)**2
26178             ENDIF
26179             WDTP(I)=FAC*FCOF*(HM1+HM2)**2*
26180      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26181           ENDIF
26182           WDTP(I)=FUDGE*WDTP(I)
26183           WDTP(0)=WDTP(0)+WDTP(I)
26184           IF(MDME(IDC,1).GT.0) THEN
26185             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26186             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26187             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26188             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26189           ENDIF
26190   350     CONTINUE
26191  
26192       ELSEIF(KFLA.EQ.KTECHN+331) THEN
26193 C...Techni-eta.
26194         FAC=(SH/PARP(46)**2)*SHR
26195         DO 360 I=1,MDCY(KC,3)
26196           IDC=I+MDCY(KC,2)-1
26197           IF(MDME(IDC,1).LT.0) GOTO 360
26198           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26199           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26200           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 360
26201           WID2=1D0
26202           IF(I.LE.2) THEN
26203             WDTP(I)=FAC*RM1*SQRT(MAX(0D0,1D0-4D0*RM1))/(4D0*PARU(1))
26204             IF(I.EQ.2) WID2=WIDS(6,1)
26205           ELSE
26206             WDTP(I)=FAC*5D0*AS**2/(96D0*PARU(1)**3)
26207           ENDIF
26208           WDTP(I)=FUDGE*WDTP(I)
26209           WDTP(0)=WDTP(0)+WDTP(I)
26210           IF(MDME(IDC,1).GT.0) THEN
26211             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26212             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26213             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26214             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26215           ENDIF
26216   360   CONTINUE
26217  
26218       ELSEIF(KFLA.EQ.KTECHN+113) THEN
26219 C...Techni-rho0:
26220         ALPRHT=2.16D0*(3D0/ITCM(1))
26221         FAC=(ALPRHT/12D0)*SHR
26222         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
26223         SQMZ=PMAS(23,1)**2
26224         SQMW=PMAS(24,1)**2
26225         SHP=SH
26226         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
26227         GMMZ=SHR*WDTPP(0)
26228         XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
26229         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26230         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26231         DO 370 I=1,MDCY(KC,3)
26232           IDC=I+MDCY(KC,2)-1
26233           IF(MDME(IDC,1).LT.0) GOTO 370
26234           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26235           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26236           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 370
26237           WID2=1D0
26238           IF(I.EQ.1) THEN
26239 C...rho_tc0 -> W+ + W-.
26240 C... Multiplied by  2 for W^+_T W^-_L + W^+_L W^-_T  
26241             WDTP(I)=FAC*RTCM(3)**4*
26242      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26243      &      2D0*AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
26244      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
26245      &      RTCM(3)**2/4D0/XW/24D0/RTCM(13)**2*SHR**3
26246             WID2=WIDS(24,1)
26247           ELSEIF(I.EQ.2) THEN
26248 C...rho_tc0 -> W+ + pi_tc-.
26249 C... Multiplied by  2 for pi_T^+ W^-_T + pi_T^- W^+_T  
26250             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
26251      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26252      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
26253      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*RM1)*
26254      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
26255             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
26256           ELSEIF(I.EQ.3) THEN
26257 C...rho_tc0 -> pi_tc+ + W-.
26258             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
26259      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26260      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
26261      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*RM2)*
26262      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
26263             WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(24,3)
26264           ELSEIF(I.EQ.4) THEN
26265 C...rho_tc0 -> pi_tc+ + pi_tc-.
26266             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
26267      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26268             WID2=WIDS(PYCOMP(KTECHN+211),1)
26269           ELSEIF(I.EQ.5) THEN
26270 C...rho_tc0 -> gamma + pi_tc0
26271             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26272      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
26273      &      SHR**3
26274             WID2=WIDS(PYCOMP(KTECHN+111),2)
26275           ELSEIF(I.EQ.6) THEN
26276 C...rho_tc0 -> gamma + pi_tc0'
26277             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26278      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*SHR**3
26279             WID2=WIDS(PYCOMP(KTECHN+221),2)
26280           ELSEIF(I.EQ.7) THEN
26281 C...rho_tc0 -> Z0 + pi_tc0
26282             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26283      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
26284      &      XW/XW1*SHR**3
26285             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
26286           ELSEIF(I.EQ.8) THEN
26287 C...rho_tc0 -> Z0 + pi_tc0'
26288             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26289      &      (1D0-RTCM(4)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
26290      &      XW/XW1*SHR**3
26291             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
26292           ELSEIF(I.EQ.9) THEN
26293 C...rho_tc0 -> gamma + Z0
26294             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26295      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
26296             WID2=WIDS(23,2)
26297           ELSEIF(I.EQ.10) THEN
26298 C...rho_tc0 -> Z0 + Z0
26299             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26300      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2*XW/XW1/24D0/RTCM(12)**2*
26301      &      SHR**3
26302             WID2=WIDS(23,1)
26303           ELSE
26304 C...rho_tc0 -> f + fbar.
26305             WID2=1D0
26306             IF(I.LE.18) THEN
26307               IA=I-10
26308               FCOF=3D0*RADC
26309               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
26310             ELSE
26311               IA=I-6
26312               FCOF=1D0
26313               IF(IA.GE.17) WID2=WIDS(IA,1)
26314             ENDIF
26315             EI=KCHG(IA,1)/3D0
26316             AI=SIGN(1D0,EI+0.1D0)
26317             VI=AI-4D0*EI*XWV
26318             VALI=0.5D0*(VI+AI)
26319             VARI=0.5D0*(VI-AI)
26320             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
26321      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
26322      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
26323      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
26324           ENDIF
26325           WDTP(I)=FUDGE*WDTP(I)
26326           WDTP(0)=WDTP(0)+WDTP(I)
26327           IF(MDME(IDC,1).GT.0) THEN
26328             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26329             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26330             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26331             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26332           ENDIF
26333   370   CONTINUE
26334  
26335       ELSEIF(KFLA.EQ.KTECHN+213) THEN
26336 C...Techni-rho+/-:
26337         ALPRHT=2.16D0*(3D0/ITCM(1))
26338         FAC=(ALPRHT/12D0)*SHR
26339         SQMZ=PMAS(23,1)**2
26340         SQMW=PMAS(24,1)**2
26341         SHP=SH
26342         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
26343         GMMW=SHR*WDTPP(0)
26344         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
26345      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
26346         DO 380 I=1,MDCY(KC,3)
26347           IDC=I+MDCY(KC,2)-1
26348           IF(MDME(IDC,1).LT.0) GOTO 380
26349           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26350           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26351           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 380
26352           WID2=1D0
26353           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26354 c            WDTP(I)=AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
26355 c     &      /3D0*SHR**3
26356           IF(I.EQ.1) THEN
26357 C...rho_tc+ -> W+ + Z0.
26358 C......Goldstone
26359             WDTP(I)=FAC*RTCM(3)**4*
26360      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26361             VA2=RTCM(3)**2*(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(12)**2
26362             AA2=RTCM(3)**2/RTCM(13)**2/4D0/XW/XW1
26363 C......W_L Z_T
26364             WDTP(I)=WDTP(I)+AEM*PCM*(AA2*(PCM**2+1.5D0*RM2)+PCM**2*VA2)
26365      &      /3D0*SHR**3
26366             VA2=0D0
26367             AA2=RTCM(3)**2/RTCM(13)**2/4D0/XW
26368 C......W_T Z_L
26369             WDTP(I)=WDTP(I)+AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
26370      &      /3D0*SHR**3
26371             IF(KFLR.GT.0) THEN
26372               WID2=WIDS(24,2)*WIDS(23,2)
26373             ELSE
26374               WID2=WIDS(24,3)*WIDS(23,2)
26375             ENDIF
26376           ELSEIF(I.EQ.2) THEN
26377 C...rho_tc+ -> W+ + pi_tc0.
26378             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
26379      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26380      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
26381      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMW/SH)*
26382      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(13)**2*SHR**3
26383             IF(KFLR.GT.0) THEN
26384               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+111),2)
26385             ELSE
26386               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+111),2)
26387             ENDIF
26388           ELSEIF(I.EQ.3) THEN
26389 C...rho_tc+ -> pi_tc+ + Z0.
26390             WDTP(I)=FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*
26391      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26392      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))*
26393      &      ((1D0-RM1-RM2)**2-4D0*RM1*RM2 + 6D0*SQMZ/SH)*
26394      &      (1D0-RTCM(3)**2)/4D0/XW/XW1/24D0/RTCM(13)**2*SHR**3+
26395      &      AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26396      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
26397      &      SHR**3*XW/XW1
26398             IF(KFLR.GT.0) THEN
26399               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(23,2)
26400             ELSE
26401               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(23,2)
26402             ENDIF
26403           ELSEIF(I.EQ.4) THEN
26404 C...rho_tc+ -> pi_tc+ + pi_tc0.
26405             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*
26406      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26407             IF(KFLR.GT.0) THEN
26408               WID2=WIDS(PYCOMP(KTECHN+211),2)*WIDS(PYCOMP(KTECHN+111),2)
26409             ELSE
26410               WID2=WIDS(PYCOMP(KTECHN+211),3)*WIDS(PYCOMP(KTECHN+111),2)
26411             ENDIF
26412           ELSEIF(I.EQ.5) THEN
26413 C...rho_tc+ -> pi_tc+ + gamma
26414             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26415      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(3)**2)/24D0/RTCM(12)**2*
26416      &      SHR**3
26417             IF(KFLR.GT.0) THEN
26418               WID2=WIDS(PYCOMP(KTECHN+211),2)
26419             ELSE
26420               WID2=WIDS(PYCOMP(KTECHN+211),3)
26421             ENDIF
26422           ELSEIF(I.EQ.6) THEN
26423 C...rho_tc+ -> W+ + pi_tc0'
26424             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26425      &      (1D0-RTCM(4)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3
26426             IF(KFLR.GT.0) THEN
26427               WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+221),2)
26428             ELSE
26429               WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+221),2)
26430             ENDIF
26431           ELSEIF(I.EQ.7) THEN
26432 C...rho_tc+ -> W+ + gamma
26433             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26434      &      (2D0*RTCM(2)-1D0)**2*RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
26435             IF(KFLR.GT.0) THEN
26436               WID2=WIDS(24,2)
26437             ELSE
26438               WID2=WIDS(24,3)
26439             ENDIF
26440           ELSE
26441 C...rho_tc+ -> f + fbar'.
26442             IA=I-7
26443             WID2=1D0
26444             IF(IA.LE.16) THEN
26445               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
26446               IF(KFLR.GT.0) THEN
26447                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
26448                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
26449                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
26450               ELSE
26451                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
26452                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
26453                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
26454               ENDIF
26455             ELSE
26456               FCOF=1D0
26457               IF(KFLR.GT.0) THEN
26458                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
26459               ELSE
26460                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
26461               ENDIF
26462             ENDIF
26463             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
26464      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26465           ENDIF
26466           WDTP(I)=FUDGE*WDTP(I)
26467           WDTP(0)=WDTP(0)+WDTP(I)
26468           IF(MDME(IDC,1).GT.0) THEN
26469             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26470             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26471             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26472             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26473           ENDIF
26474   380   CONTINUE
26475  
26476       ELSEIF(KFLA.EQ.KTECHN+223) THEN
26477 C...Techni-omega:
26478         ALPRHT=2.16D0*(3D0/ITCM(1))
26479         FAC=(ALPRHT/12D0)*SHR
26480         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR*(2D0*RTCM(2)-1D0)**2
26481         SQMZ=PMAS(23,1)**2
26482         SHP=SH
26483         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
26484         GMMZ=SHR*WDTPP(0)
26485         BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
26486         BWZI=-(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
26487         DO 390 I=1,MDCY(KC,3)
26488           IDC=I+MDCY(KC,2)-1
26489           IF(MDME(IDC,1).LT.0) GOTO 390
26490           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26491           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26492           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 390
26493           WID2=1D0
26494           IF(I.EQ.1) THEN
26495 C...omega_tc0 -> gamma + pi_tc0.
26496             WDTP(I)=AEM/24D0/RTCM(12)**2*(1D0-RTCM(3)**2)*
26497      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*SHR**3
26498             WID2=WIDS(PYCOMP(KTECHN+111),2)
26499           ELSEIF(I.EQ.2) THEN
26500 C...omega_tc0 -> Z0 + pi_tc0
26501             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26502      &      (1D0-RTCM(3)**2)/24D0/RTCM(12)**2*(1D0-2D0*XW)**2/4D0/
26503      &      XW/XW1*SHR**3
26504             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+111),2)
26505           ELSEIF(I.EQ.3) THEN
26506 C...omega_tc0 -> gamma + pi_tc0'
26507             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26508      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
26509      &      SHR**3
26510             WID2=WIDS(PYCOMP(KTECHN+221),2)
26511           ELSEIF(I.EQ.4) THEN
26512 C...omega_tc0 -> Z0 + pi_tc0'
26513             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26514      &      (2D0*RTCM(2)-1D0)**2*(1D0-RTCM(4)**2)/24D0/RTCM(12)**2*
26515      &      XW/XW1*SHR**3
26516             WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
26517           ELSEIF(I.EQ.5) THEN
26518 C...omega_tc0 -> W+ + pi_tc-
26519             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26520      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
26521      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
26522      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26523             WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
26524           ELSEIF(I.EQ.6) THEN
26525 C...omega_tc0 -> pi_tc+ + W-
26526             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26527      &      (1D0-RTCM(3)**2)/4D0/XW/24D0/RTCM(12)**2*SHR**3+
26528      &      FAC*RTCM(3)**2*(1D0-RTCM(3)**2)*RTCM(11)**2*
26529      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26530             WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
26531           ELSEIF(I.EQ.7) THEN
26532 C...omega_tc0 -> W+ + W-.
26533 C... Multiplied by  2 for W^+_T W^-_L + W^+_L W^-_T  
26534             WDTP(I)=FAC*RTCM(3)**4*RTCM(11)**2*
26535      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3+
26536      &      2D0*AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26537      &      RTCM(3)**2/4D0/XW/24D0/RTCM(12)**2*SHR**3
26538             WID2=WIDS(24,1)
26539           ELSEIF(I.EQ.8) THEN
26540 C...omega_tc0 -> pi_tc+ + pi_tc-.
26541             WDTP(I)=FAC*(1D0-RTCM(3)**2)**2*RTCM(11)**2*
26542      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3
26543             WID2=WIDS(PYCOMP(KTECHN+211),1)
26544 C...omega_tc0 -> gamma + Z0
26545           ELSEIF(I.EQ.9) THEN
26546             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26547      &      RTCM(3)**2/24D0/RTCM(12)**2*SHR**3
26548             WID2=WIDS(23,2)
26549 C...omega_tc0 -> Z0 + Z0
26550           ELSEIF(I.EQ.10) THEN
26551             WDTP(I)=AEM*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))**3*
26552      &      RTCM(3)**2*(XW1-XW)**2/XW/XW1/4D0
26553      &      /24D0/RTCM(12)**2*SHR**3
26554             WID2=WIDS(23,1)
26555           ELSE
26556 C...omega_tc0 -> f + fbar.
26557             WID2=1D0
26558             IF(I.LE.18) THEN
26559               IA=I-10
26560               FCOF=3D0*RADC
26561               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
26562             ELSE
26563               IA=I-8
26564               FCOF=1D0
26565               IF(IA.GE.17) WID2=WIDS(IA,1)
26566             ENDIF
26567             EI=KCHG(IA,1)/3D0
26568             AI=SIGN(1D0,EI+0.1D0)
26569             VI=AI-4D0*EI*XWV
26570             VALI=-0.5D0*(VI+AI)
26571             VARI=-0.5D0*(VI-AI)
26572             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
26573      &      ((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
26574      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
26575      &      (EI+VALI*BWZR)*(EI+VARI*BWZR)+VALI*VARI*BWZI**2))
26576           ENDIF
26577           WDTP(I)=FUDGE*WDTP(I)
26578           WDTP(0)=WDTP(0)+WDTP(I)
26579           IF(MDME(IDC,1).GT.0) THEN
26580             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26581             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26582             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26583             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26584           ENDIF
26585   390   CONTINUE
26586  
26587 C.....V8 -> quark anti-quark
26588       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
26589         FAC=AS/6D0*SHR
26590         TANT3=RTCM(21)
26591         IF(ITCM(2).EQ.0) THEN
26592           IMDL=1
26593         ELSEIF(ITCM(2).EQ.1) THEN
26594           IMDL=2
26595         ENDIF
26596         DO 400 I=1,MDCY(KC,3)
26597           IDC=I+MDCY(KC,2)-1
26598           IF(MDME(IDC,1).LT.0) GOTO 400
26599           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
26600           RM1=PM1**2/SH
26601           IF(RM1.GT.0.25D0) GOTO 400
26602           WID2=1D0
26603           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
26604             FMIX=1D0/TANT3**2
26605           ELSE
26606             FMIX=TANT3**2
26607           ENDIF
26608           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
26609           IF(I.EQ.6) WID2=WIDS(6,1)
26610           WDTP(I)=FUDGE*WDTP(I)
26611           WDTP(0)=WDTP(0)+WDTP(I)
26612           IF(MDME(IDC,1).GT.0) THEN
26613             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26614             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26615             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26616             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26617           ENDIF
26618   400   CONTINUE
26619  
26620       ELSEIF(KFLA.EQ.KTECHN+100111.OR.KFLA.EQ.KTECHN+200111) THEN
26621         FAC=(1D0/(4D0*PARU(1)*RTCM(1)**2))*SHR
26622         CLEBF=0D0
26623         DO 410 I=1,MDCY(KC,3)
26624           IDC=I+MDCY(KC,2)-1
26625           IF(MDME(IDC,1).LT.0) GOTO 410
26626           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26627           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26628           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 410
26629           WID2=1D0
26630 C...pi_tc -> g + g
26631           IF(I.EQ.7) THEN
26632             IF(KFLA.EQ.KTECHN+100111) THEN
26633               CLEBG=4D0/3D0
26634             ELSE
26635               CLEBG=5D0/3D0
26636             ENDIF
26637             FACP=(AS/(8D0*PARU(1))*ITCM(1)/RTCM(1))**2
26638      &      /(2D0*PARU(1))*SH*SHR*CLEBG
26639             WDTP(I)=FACP
26640           ELSE
26641 C...pi_tc -> f + fbar.
26642             IF(I.EQ.6) WID2=WIDS(6,1)
26643             FCOF=1D0
26644             IKA=IABS(KFDP(IDC,1))
26645             IF(IKA.LT.10) FCOF=3D0*RADC
26646             HM1=PYMRUN(KFDP(IDC,1),SH)
26647             WDTP(I)=FAC*FCOF*HM1**2*CLEBF*
26648      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
26649           ENDIF
26650           WDTP(I)=FUDGE*WDTP(I)
26651           WDTP(0)=WDTP(0)+WDTP(I)
26652           IF(MDME(IDC,1).GT.0) THEN
26653             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26654             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26655             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26656             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26657           ENDIF
26658   410   CONTINUE
26659  
26660       ELSEIF(KFLA.GE.KTECHN+100113.AND.KFLA.LE.KTECHN+400113) THEN
26661         FAC=AS/6D0*SHR
26662         ALPRHT=2.16D0*(3D0/ITCM(1))
26663         TANT3=RTCM(21)
26664         SIN2T=2D0*TANT3/(TANT3**2+1D0)
26665         SINT3=TANT3/SQRT(TANT3**2+1D0)
26666         CSXPP=RTCM(22)
26667         RM82=RTCM(27)**2
26668         X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
26669      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)
26670         X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
26671      &  RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)
26672         X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
26673      &  SINT3**2)*2D0
26674         X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
26675      &  SINT3**2)*2D0
26676         CALL PYWIDX(KTECHN+100021,SH,WDTPP,WDTEP)
26677  
26678         IF(WDTPP(0).GT.RTCM(33)*SHR) WDTPP(0)=RTCM(33)*SHR
26679         GMV8=SHR*WDTPP(0)
26680         RMV8=PMAS(PYCOMP(KTECHN+100021),1)
26681         FV8RE=SH*(SH-RMV8**2)/((SH-RMV8**2)**2+GMV8**2)
26682         FV8IM=SH*GMV8/((SH-RMV8**2)**2+GMV8**2)
26683         IF(ITCM(2).EQ.0) THEN
26684           IMDL=1
26685         ELSE
26686           IMDL=2
26687         ENDIF
26688         DO 420 I=1,MDCY(KC,3)
26689           IF(I.EQ.7.AND.(KFLA.EQ.KTECHN+200113.OR.
26690      &    KFLA.EQ.KTECHN+300113)) GOTO 420
26691           IDC=I+MDCY(KC,2)-1
26692           IF(MDME(IDC,1).LT.0) GOTO 420
26693           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26694           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26695           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 420
26696           WID2=1D0
26697           IF(I.LE.6) THEN
26698             IF(I.EQ.6) WID2=WIDS(6,1)
26699             XIG=1D0
26700             IF(KFLA.EQ.KTECHN+200113) THEN
26701               XIG=0D0
26702               XIJ=X12
26703             ELSEIF(KFLA.EQ.KTECHN+300113) THEN
26704               XIG=0D0
26705               XIJ=X21
26706             ELSEIF(KFLA.EQ.KTECHN+100113) THEN
26707               XIJ=X11
26708             ELSE
26709               XIJ=X22
26710             ENDIF
26711             IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
26712               FMIX=1D0/TANT3/SIN2T
26713             ELSE
26714               FMIX=-TANT3/SIN2T
26715             ENDIF
26716             XFAC=(XIG+FMIX*XIJ*FV8RE)**2+(FMIX*XIJ*FV8IM)**2
26717             WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*AS/ALPRHT*XFAC
26718           ELSEIF(I.EQ.7) THEN
26719             WDTP(I)=SHR*AS**2/(4D0*ALPRHT)
26720           ELSEIF(KFLA.EQ.KTECHN+400113.AND.I.LE.9) THEN
26721             PSH=SHR*(1D0-RM1)/2D0
26722             WDTP(I)=AS/9D0*PSH**3/RM82
26723             IF(I.EQ.8) THEN
26724               WDTP(I)=2D0*WDTP(I)*CSXPP**2
26725               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
26726             ELSE
26727               WDTP(I)=5D0*WDTP(I)
26728               WID2=WIDS(PYCOMP(KFDP(IDC,1)),2)
26729             ENDIF
26730           ENDIF
26731           WDTP(I)=FUDGE*WDTP(I)
26732           WDTP(0)=WDTP(0)+WDTP(I)
26733           IF(MDME(IDC,1).GT.0) THEN
26734             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26735             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26736             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26737             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26738           ENDIF
26739   420   CONTINUE
26740  
26741       ELSEIF(KFLA.EQ.KEXCIT+1) THEN
26742 C...d* excited quark.
26743         FAC=(SH/RTCM(41)**2)*SHR
26744         DO 430 I=1,MDCY(KC,3)
26745           IDC=I+MDCY(KC,2)-1
26746           IF(MDME(IDC,1).LT.0) GOTO 430
26747           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26748           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26749           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 430
26750           WID2=1D0
26751           IF(I.EQ.1) THEN
26752 C...d* -> g + d.
26753             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
26754             WID2=1D0
26755           ELSEIF(I.EQ.2) THEN
26756 C...d* -> gamma + d.
26757             QF=-RTCM(43)/2D0+RTCM(44)/6D0
26758             WDTP(I)=FAC*AEM*QF**2/4D0
26759             WID2=1D0
26760           ELSEIF(I.EQ.3) THEN
26761 C...d* -> Z0 + d.
26762             QF=-RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
26763             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26764      &      (1D0-RM1)**2*(2D0+RM1)
26765             WID2=WIDS(23,2)
26766           ELSEIF(I.EQ.4) THEN
26767 C...d* -> W- + u.
26768             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26769      &      (1D0-RM1)**2*(2D0+RM1)
26770             IF(KFLR.GT.0) WID2=WIDS(24,3)
26771             IF(KFLR.LT.0) WID2=WIDS(24,2)
26772           ENDIF
26773           WDTP(I)=FUDGE*WDTP(I)
26774           WDTP(0)=WDTP(0)+WDTP(I)
26775           IF(MDME(IDC,1).GT.0) THEN
26776             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26777             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26778             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26779             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26780           ENDIF
26781   430   CONTINUE
26782  
26783       ELSEIF(KFLA.EQ.KEXCIT+2) THEN
26784 C...u* excited quark.
26785         FAC=(SH/RTCM(41)**2)*SHR
26786         DO 440 I=1,MDCY(KC,3)
26787           IDC=I+MDCY(KC,2)-1
26788           IF(MDME(IDC,1).LT.0) GOTO 440
26789           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26790           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26791           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 440
26792           WID2=1D0
26793           IF(I.EQ.1) THEN
26794 C...u* -> g + u.
26795             WDTP(I)=FAC*AS*RTCM(45)**2/3D0
26796             WID2=1D0
26797           ELSEIF(I.EQ.2) THEN
26798 C...u* -> gamma + u.
26799             QF=RTCM(43)/2D0+RTCM(44)/6D0
26800             WDTP(I)=FAC*AEM*QF**2/4D0
26801             WID2=1D0
26802           ELSEIF(I.EQ.3) THEN
26803 C...u* -> Z0 + u.
26804             QF=RTCM(43)*XW1/2D0-RTCM(44)*XW/6D0
26805             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26806      &      (1D0-RM1)**2*(2D0+RM1)
26807             WID2=WIDS(23,2)
26808           ELSEIF(I.EQ.4) THEN
26809 C...u* -> W+ + d.
26810             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26811      &      (1D0-RM1)**2*(2D0+RM1)
26812             IF(KFLR.GT.0) WID2=WIDS(24,2)
26813             IF(KFLR.LT.0) WID2=WIDS(24,3)
26814           ENDIF
26815           WDTP(I)=FUDGE*WDTP(I)
26816           WDTP(0)=WDTP(0)+WDTP(I)
26817           IF(MDME(IDC,1).GT.0) THEN
26818             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26819             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26820             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26821             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26822           ENDIF
26823   440   CONTINUE
26824  
26825       ELSEIF(KFLA.EQ.KEXCIT+11) THEN
26826 C...e* excited lepton.
26827         FAC=(SH/RTCM(41)**2)*SHR
26828         DO 450 I=1,MDCY(KC,3)
26829           IDC=I+MDCY(KC,2)-1
26830           IF(MDME(IDC,1).LT.0) GOTO 450
26831           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26832           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26833           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 450
26834           WID2=1D0
26835           IF(I.EQ.1) THEN
26836 C...e* -> gamma + e.
26837             QF=-RTCM(43)/2D0-RTCM(44)/2D0
26838             WDTP(I)=FAC*AEM*QF**2/4D0
26839             WID2=1D0
26840           ELSEIF(I.EQ.2) THEN
26841 C...e* -> Z0 + e.
26842             QF=-RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
26843             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26844      &      (1D0-RM1)**2*(2D0+RM1)
26845             WID2=WIDS(23,2)
26846           ELSEIF(I.EQ.3) THEN
26847 C...e* -> W- + nu.
26848             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26849      &      (1D0-RM1)**2*(2D0+RM1)
26850             IF(KFLR.GT.0) WID2=WIDS(24,3)
26851             IF(KFLR.LT.0) WID2=WIDS(24,2)
26852           ENDIF
26853           WDTP(I)=FUDGE*WDTP(I)
26854           WDTP(0)=WDTP(0)+WDTP(I)
26855           IF(MDME(IDC,1).GT.0) THEN
26856             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26857             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26858             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26859             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26860           ENDIF
26861   450   CONTINUE
26862  
26863       ELSEIF(KFLA.EQ.KEXCIT+12) THEN
26864 C...nu*_e excited neutrino.
26865         FAC=(SH/RTCM(41)**2)*SHR
26866         DO 460 I=1,MDCY(KC,3)
26867           IDC=I+MDCY(KC,2)-1
26868           IF(MDME(IDC,1).LT.0) GOTO 460
26869           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26870           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26871           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 460
26872           WID2=1D0
26873           IF(I.EQ.1) THEN
26874 C...nu*_e -> Z0 + nu*_e.
26875             QF=RTCM(43)*XW1/2D0+RTCM(44)*XW/2D0
26876             WDTP(I)=FAC*AEM*QF**2/(8D0*XW*XW1)*
26877      &      (1D0-RM1)**2*(2D0+RM1)
26878             WID2=WIDS(23,2)
26879           ELSEIF(I.EQ.2) THEN
26880 C...nu*_e -> W+ + e.
26881             WDTP(I)=FAC*AEM*RTCM(43)**2/(16D0*XW)*
26882      &      (1D0-RM1)**2*(2D0+RM1)
26883             IF(KFLR.GT.0) WID2=WIDS(24,2)
26884             IF(KFLR.LT.0) WID2=WIDS(24,3)
26885           ENDIF
26886           WDTP(I)=FUDGE*WDTP(I)
26887           WDTP(0)=WDTP(0)+WDTP(I)
26888           IF(MDME(IDC,1).GT.0) THEN
26889             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26890             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26891             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26892             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26893           ENDIF
26894   460   CONTINUE
26895  
26896       ELSEIF(KFLA.EQ.KDIMEN+39) THEN
26897 C...G* (graviton resonance):
26898         FAC=(PARP(50)**2/PARU(1))*SHR
26899         DO 470 I=1,MDCY(KC,3)
26900           IDC=I+MDCY(KC,2)-1
26901           IF(MDME(IDC,1).LT.0) GOTO 470
26902           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26903           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26904           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 470
26905           WID2=1D0
26906           IF(I.LE.8) THEN
26907 C...G* -> q + qbar
26908             FCOF=3D0*RADC
26909             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*
26910      &      PYHFTH(SH,SH*RM1,1D0)
26911             WDTP(I)=FAC*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
26912      &      (1D0+8D0*RM1/3D0)/320D0
26913             IF(I.EQ.6) WID2=WIDS(6,1)
26914             IF(I.EQ.7.OR.I.EQ.8) WID2=WIDS(I,1)
26915           ELSEIF(I.LE.16) THEN
26916 C...G* -> l+ + l-, nu + nubar
26917             FCOF=1D0
26918             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))**3*
26919      &      (1D0+8D0*RM1/3D0)/320D0
26920             IF(I.EQ.15.OR.I.EQ.16) WID2=WIDS(2+I,1)
26921           ELSEIF(I.EQ.17) THEN
26922 C...G* -> g + g.
26923             WDTP(I)=FAC/20D0
26924           ELSEIF(I.EQ.18) THEN
26925 C...G* -> gamma + gamma.
26926             WDTP(I)=FAC/160D0
26927           ELSEIF(I.EQ.19) THEN
26928 C...G* -> Z0 + Z0.
26929             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
26930      &      14D0*RM1/3D0+4D0*RM1**2)/160D0
26931             WID2=WIDS(23,1)
26932           ELSEIF(I.EQ.20) THEN
26933 C...G* -> W+ + W-.
26934             WDTP(I)=FAC*SQRT(MAX(0D0,1D0-4D0*RM1))*(13D0/12D0+
26935      &      14D0*RM1/3D0+4D0*RM1**2)/80D0
26936             WID2=WIDS(24,1)
26937           ENDIF
26938           WDTP(I)=FUDGE*WDTP(I)
26939           WDTP(0)=WDTP(0)+WDTP(I)
26940           IF(MDME(IDC,1).GT.0) THEN
26941             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26942             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26943             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26944             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26945           ENDIF
26946   470   CONTINUE
26947  
26948       ELSEIF(KFLA.EQ.9900012.OR.KFLA.EQ.9900014.OR.KFLA.EQ.9900016) THEN
26949 C...nu_eR, nu_muR, nu_tauR: righthanded Majorana neutrinos.
26950         PMWR=MAX(1.001D0*SHR,PMAS(PYCOMP(9900024),1))
26951         FAC=(AEM**2/(768D0*PARU(1)*XW**2))*SHR**5/PMWR**4
26952         DO 480 I=1,MDCY(KC,3)
26953           IDC=I+MDCY(KC,2)-1
26954           IF(MDME(IDC,1).LT.0) GOTO 480
26955           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
26956           PM2=PMAS(PYCOMP(KFDP(IDC,2)),1)
26957           PM3=PMAS(PYCOMP(KFDP(IDC,3)),1)
26958           IF(PM1+PM2+PM3.GE.SHR) GOTO 480
26959           WID2=1D0
26960           IF(I.LE.9) THEN
26961 C...nu_lR -> l- qbar q'
26962             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
26963             IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
26964           ELSEIF(I.LE.18) THEN
26965 C...nu_lR -> l+ q qbar'
26966             FCOF=3D0*RADC*VCKM((I-10)/3+1,MOD(I-10,3)+1)
26967             IF(MOD(I-9,3).EQ.0) WID2=WIDS(6,3)
26968           ELSE
26969 C...nu_lR -> l- l'+ nu_lR' + charge conjugate.
26970             FCOF=1D0
26971             WID2=WIDS(PYCOMP(KFDP(IDC,3)),2)
26972           ENDIF
26973           X=(PM1+PM2+PM3)/SHR
26974           FX=1D0-8D0*X**2+8D0*X**6-X**8-24D0*X**4*LOG(X)
26975           Y=(SHR/PMWR)**2
26976           FY=(12D0*(1D0-Y)*LOG(1D0-Y)+12D0*Y-6D0*Y**2-2D0*Y**3)/Y**4
26977           WDTP(I)=FAC*FCOF*FX*FY
26978           WDTP(I)=FUDGE*WDTP(I)
26979           WDTP(0)=WDTP(0)+WDTP(I)
26980           IF(MDME(IDC,1).GT.0) THEN
26981             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
26982             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
26983             WDTE(I,0)=WDTE(I,MDME(IDC,1))
26984             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
26985           ENDIF
26986   480   CONTINUE
26987  
26988       ELSEIF(KFLA.EQ.9900023) THEN
26989 C...Z_R0:
26990         FAC=(AEM/(48D0*XW*XW1*(1D0-2D0*XW)))*SHR
26991         DO 490 I=1,MDCY(KC,3)
26992           IDC=I+MDCY(KC,2)-1
26993           IF(MDME(IDC,1).LT.0) GOTO 490
26994           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
26995           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
26996           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 490
26997           WID2=1D0
26998           SYMMET=1D0
26999           IF(I.LE.6) THEN
27000 C...Z_R0 -> q + qbar
27001             EF=KCHG(I,1)/3D0
27002             AF=SIGN(1D0,EF+0.1D0)*(1D0-2D0*XW)
27003             VF=SIGN(1D0,EF+0.1D0)-4D0*EF*XW
27004             FCOF=3D0*RADC
27005             IF(I.EQ.6) WID2=WIDS(6,1)
27006           ELSEIF(I.EQ.7.OR.I.EQ.10.OR.I.EQ.13) THEN
27007 C...Z_R0 -> l+ + l-
27008             AF=-(1D0-2D0*XW)
27009             VF=-1D0+4D0*XW
27010             FCOF=1D0
27011           ELSEIF(I.EQ.8.OR.I.EQ.11.OR.I.EQ.14) THEN
27012 C...Z0 -> nu_L + nu_Lbar, assumed Majorana.
27013             AF=-2D0*XW
27014             VF=0D0
27015             FCOF=1D0
27016             SYMMET=0.5D0
27017           ELSEIF(I.LE.15) THEN
27018 C...Z0 -> nu_R + nu_R, assumed Majorana.
27019             AF=2D0*XW1
27020             VF=0D0
27021             FCOF=1D0
27022             WID2=WIDS(PYCOMP(KFDP(IDC,1)),1)
27023             SYMMET=0.5D0
27024           ENDIF
27025           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
27026      &    SQRT(MAX(0D0,1D0-4D0*RM1))*SYMMET
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   490   CONTINUE
27036  
27037       ELSEIF(KFLA.EQ.9900024) THEN
27038 C...W_R+/-:
27039         FAC=(AEM/(24D0*XW))*SHR
27040         DO 500 I=1,MDCY(KC,3)
27041           IDC=I+MDCY(KC,2)-1
27042           IF(MDME(IDC,1).LT.0) GOTO 500
27043           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27044           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27045           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 500
27046           WID2=1D0
27047           IF(I.LE.9) THEN
27048 C...W_R+/- -> q + qbar'
27049             FCOF=3D0*RADC*VCKM((I-1)/3+1,MOD(I-1,3)+1)
27050             IF(KFLR.GT.0) THEN
27051               IF(MOD(I,3).EQ.0) WID2=WIDS(6,2)
27052             ELSE
27053               IF(MOD(I,3).EQ.0) WID2=WIDS(6,3)
27054             ENDIF
27055           ELSEIF(I.LE.12) THEN
27056 C...W_R+/- -> l+/- + nu_R
27057             FCOF=1D0
27058           ENDIF
27059           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
27060      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27061           WDTP(I)=FUDGE*WDTP(I)
27062           WDTP(0)=WDTP(0)+WDTP(I)
27063           IF(MDME(IDC,1).GT.0) THEN
27064             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27065             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27066             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27067             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27068           ENDIF
27069   500  CONTINUE
27070  
27071       ELSEIF(KFLA.EQ.9900041) THEN
27072 C...H_L++/--:
27073         FAC=(1D0/(8D0*PARU(1)))*SHR
27074         DO 510 I=1,MDCY(KC,3)
27075           IDC=I+MDCY(KC,2)-1
27076           IF(MDME(IDC,1).LT.0) GOTO 510
27077           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27078           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27079           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 510
27080           WID2=1D0
27081           IF(I.LE.6) THEN
27082 C...H_L++/-- -> l+/- + l'+/-
27083             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
27084      &      (IABS(KFDP(IDC,2))-9)/2)**2
27085             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
27086           ELSEIF(I.EQ.7) THEN
27087 C...H_L++/-- -> W_L+/- + W_L+/-
27088             FCOF=0.5D0*PARP(190)**4*PARP(192)**2/PMAS(24,1)**2*
27089      &      (3D0*RM1+0.25D0/RM1-1D0)
27090             WID2=WIDS(24,4+(1-KFLS)/2)
27091           ENDIF
27092           WDTP(I)=FAC*FCOF*
27093      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27094           WDTP(I)=FUDGE*WDTP(I)
27095           WDTP(0)=WDTP(0)+WDTP(I)
27096           IF(MDME(IDC,1).GT.0) THEN
27097             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27098             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27099             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27100             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27101           ENDIF
27102   510   CONTINUE
27103  
27104       ELSEIF(KFLA.EQ.9900042) THEN
27105 C...H_R++/--:
27106         FAC=(1D0/(8D0*PARU(1)))*SHR
27107         DO 520 I=1,MDCY(KC,3)
27108           IDC=I+MDCY(KC,2)-1
27109           IF(MDME(IDC,1).LT.0) GOTO 520
27110           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27111           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27112           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 520
27113           WID2=1D0
27114           IF(I.LE.6) THEN
27115 C...H_R++/-- -> l+/- + l'+/-
27116             FCOF=PARP(180+3*((IABS(KFDP(IDC,1))-11)/2)+
27117      &      (IABS(KFDP(IDC,2))-9)/2)**2
27118             IF(KFDP(IDC,1).NE.KFDP(IDC,2)) FCOF=2D0*FCOF
27119           ELSEIF(I.EQ.7) THEN
27120 C...H_R++/-- -> W_R+/- + W_R+/-
27121             FCOF=PARP(191)**2*(3D0*RM1+0.25D0/RM1-1D0)
27122             WID2=WIDS(PYCOMP(9900024),4+(1-KFLS)/2)
27123           ENDIF
27124           WDTP(I)=FAC*FCOF*
27125      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27126           WDTP(I)=FUDGE*WDTP(I)
27127           WDTP(0)=WDTP(0)+WDTP(I)
27128           IF(MDME(IDC,1).GT.0) THEN
27129             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27130             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27131             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27132             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27133           ENDIF
27134   520  CONTINUE
27135 
27136       ELSEIF(KFLA.EQ.KTECHN+115) THEN
27137 C...Techni-a2:
27138 C...Need to update to alpha_rho
27139         ALPRHT=2.16D0*(3D0/ITCM(1))*RTCM(47)**2
27140         FAC=(ALPRHT/12D0)*SHR
27141         FACF=(1D0/6D0)*(AEM**2/ALPRHT)*SHR
27142         SQMZ=PMAS(23,1)**2
27143         SQMW=PMAS(24,1)**2
27144         SHP=SH
27145         CALL PYWIDX(23,SHP,WDTPP,WDTEP)
27146         GMMZ=SHR*WDTPP(0)
27147         XWRHT=1D0/(4D0*XW*(1D0-XW))
27148         BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
27149         BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
27150         DO 530 I=1,MDCY(KC,3)
27151           IDC=I+MDCY(KC,2)-1
27152           IF(MDME(IDC,1).LT.0) GOTO 530
27153           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27154           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27155           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 530
27156           WID2=1D0
27157           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27158           IF(I.LE.4) THEN
27159             FACPV=PCM**2
27160             FACPA=PCM**2+1.5D0*RM1            
27161             VA2=0D0
27162             AA2=0D0
27163 C...a2_tc0 -> W+ + W-
27164             IF(I.EQ.1) THEN
27165               AA2=2D0*RTCM(3)**2/4D0/XW/RTCM(49)**2
27166 C...Multiplied by 2 for W^+_T W^-_L + W^+_L W^-_T.(KL)
27167               WID2=WIDS(24,1)
27168 C...a2_tc0 -> W+ + pi_tc- + c.c.
27169             ELSEIF(I.EQ.2.OR.I.EQ.3) THEN
27170               AA2=(1D0-RTCM(3)**2)/4D0/XW/RTCM(49)**2
27171               IF(I.EQ.6) THEN
27172                 WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+211),3)
27173               ELSE
27174                 WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+211),2)
27175               ENDIF
27176             ELSEIF(I.EQ.4) THEN
27177 C...a2_tc0 -> Z0 + pi_tc0'
27178               VA2=(1D0-RTCM(4)**2)/4D0/XW/XW1/RTCM(48)**2
27179               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+221),2)
27180             ENDIF
27181             WDTP(I)=AEM*SHR**3*PCM/3D0*(VA2*FACPV+AA2*FACPA)
27182           ELSEIF(I.GE.5.AND.I.LE.10) THEN
27183             FACPV=PCM**2*(1D0+RM1+RM2)+3D0*RM1*RM2
27184             FACPA=PCM**2*(1D0+RM1+RM2)
27185             VA2=0D0
27186             AA2=0D0
27187             IF(I.EQ.5) THEN
27188 C...a_T^0 -> gamma rho_T^0
27189               VA2=(2D0*RTCM(2)-1D0)**2/RTCM(50)**4
27190               WID2=WIDS(PYCOMP(KTECHN+113),2)
27191             ELSEIF(I.EQ.6) THEN
27192 C...a_T^0 -> gamma omega_T
27193               VA2=1D0/RTCM(50)**4
27194               WID2=WIDS(PYCOMP(KTECHN+223),2)
27195             ELSEIF(I.EQ.7.OR.I.EQ.8) THEN
27196 C...a_T^0 -> W^+- rho_T^-+
27197               AA2=.25D0/XW/RTCM(51)**4
27198               IF(I.EQ.7) THEN
27199                 WID2=WIDS(24,2)*WIDS(PYCOMP(KTECHN+213),3)
27200               ELSE
27201                 WID2=WIDS(24,3)*WIDS(PYCOMP(KTECHN+213),2)
27202               ENDIF
27203             ELSEIF(I.EQ.9) THEN
27204 C...a_T^0 -> Z^0 rho_T^0
27205               VA2=(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(50)**4
27206               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+113),2)
27207             ELSEIF(I.EQ.10) THEN
27208 C...a_T^0 -> Z^0 omega_T
27209               VA2=.25D0*(1D0-2D0*XW)**2/XW/XW1/RTCM(50)**4
27210               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+223),2)
27211             ENDIF            
27212             WDTP(I)=AEM*SHR**5*PCM/12D0*(VA2*FACPV+AA2*FACPA)
27213           ELSE
27214 C...a2_tc0 -> f + fbar.
27215             WID2=1D0
27216             IF(I.LE.18) THEN
27217               IA=I-10
27218               FCOF=3D0*RADC
27219               IF(IA.GE.6.AND.IA.LE.8) WID2=WIDS(IA,1)
27220             ELSE
27221               IA=I-8
27222               FCOF=1D0
27223               IF(IA.GE.17) WID2=WIDS(IA,1)
27224             ENDIF
27225             EI=KCHG(IA,1)/3D0
27226             AI=SIGN(1D0,EI+0.1D0)
27227             VI=AI-4D0*EI*XWV
27228             VALI=0.5D0*(VI+AI)
27229             VARI=0.5D0*(VI-AI)
27230             WDTP(I)=FACF*FCOF*SQRT(MAX(0D0,1D0-4D0*RM1))*((1D0-RM1)*
27231      &      ((VALI*BWZR)**2+(VALI*BWZI)**2+
27232      &      (VARI*BWZR)**2+(VARI*BWZI)**2)+6D0*RM1*(
27233      &      (VALI*BWZR)*(VARI*BWZR)+VALI*VARI*BWZI**2))
27234           ENDIF
27235           WDTP(I)=FUDGE*WDTP(I)
27236           WDTP(0)=WDTP(0)+WDTP(I)
27237           IF(MDME(IDC,1).GT.0) THEN
27238             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27239             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27240             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27241             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27242           ENDIF
27243   530   CONTINUE
27244  
27245       ELSEIF(KFLA.EQ.KTECHN+215) THEN
27246 C...Techni-a2+/-:
27247         ALPRHT=2.16D0*(3D0/ITCM(1))*RTCM(47)**2
27248         FAC=(ALPRHT/12D0)*SHR
27249         SQMZ=PMAS(23,1)**2
27250         SQMW=PMAS(24,1)**2
27251         SHP=SH
27252         CALL PYWIDX(24,SHP,WDTPP,WDTEP)
27253         GMMW=SHR*WDTPP(0)
27254         FACF=(1D0/12D0)*(AEM**2/ALPRHT)*SHR*
27255      &  (0.125D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
27256         DO 540 I=1,MDCY(KC,3)
27257           IDC=I+MDCY(KC,2)-1
27258           IF(MDME(IDC,1).LT.0) GOTO 540
27259           RM1=PMAS(PYCOMP(KFDP(IDC,1)),1)**2/SH
27260           RM2=PMAS(PYCOMP(KFDP(IDC,2)),1)**2/SH
27261           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 540
27262           WID2=1D0
27263           PCM=.5D0*SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27264           IF(KFLR.GT.0) THEN
27265             ICHANN=2
27266           ELSE
27267             ICHANN=3
27268           ENDIF
27269           IF(I.LE.7) THEN
27270             AA2=0
27271             VA2=0
27272 C...a2_tc+ -> gamma + W+.
27273             IF(I.EQ.1) THEN
27274               AA2=RTCM(3)**2/RTCM(49)**2
27275               WID2=WIDS(24,ICHANN)
27276 C...a2_tc+ -> gamma + pi_tc+.
27277             ELSEIF(I.EQ.2) THEN
27278               AA2=(1D0-RTCM(3)**2)/RTCM(49)**2
27279               WID2=WIDS(PYCOMP(KTECHN+211),ICHANN)
27280 C...a2_tc+ -> W+ + Z
27281             ELSEIF(I.EQ.3) THEN
27282               AA2=RTCM(3)**2*(1D0/4D0/XW1 +
27283      &                       (XW-XW1)**2/4./XW/XW1)/RTCM(49)**2
27284               WID2=WIDS(24,ICHANN)*WIDS(23,2)
27285 C...a2_tc+ -> W+ + pi_tc0.
27286             ELSEIF(I.EQ.4) THEN
27287               AA2=(1D0-RTCM(3)**2)/4D0/XW/RTCM(49)**2
27288               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+111),2)
27289 C...a2_tc+ -> W+ + pi_tc'0.
27290             ELSEIF(I.EQ.5) THEN
27291               VA2=(1D0-RTCM(4)**2)/4D0/XW/RTCM(48)**2
27292               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+221),2)
27293 C...a2_tc+ -> Z0 + pi_tc+.
27294             ELSEIF(I.EQ.6) THEN
27295               AA2=(1D0-RTCM(3)**2)/4D0/XW/XW1*(1D0-2D0*XW)**2/
27296      &         RTCM(49)**2
27297               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+211),ICHANN)
27298             ENDIF
27299             WDTP(I)=AEM*PCM*(AA2*(PCM**2+1.5D0*RM1)+PCM**2*VA2)
27300      &      /3D0*SHR**3
27301           ELSEIF(I.LE.10) THEN
27302             FACPV=PCM**2*(1D0+RM1+RM2)+3D0*RM1*RM2
27303             FACPA=PCM**2*(1D0+RM1+RM2)
27304             VA2=0D0
27305             AA2=0D0
27306 C...a2_tc+ -> gamma + rho_tc+
27307             IF(I.EQ.7) THEN
27308               VA2=(2D0*RTCM(2)-1D0)**2/RTCM(50)**4
27309               WID2=WIDS(PYCOMP(KTECHN+213),ICHANN)
27310 C...a2_tc+ -> W+ + rho_T^0
27311             ELSEIF(I.EQ.8) THEN
27312               AA2=1D0/(4D0*XW)/RTCM(51)**4
27313               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+113),2)
27314 C...a2_tc+ -> W+ + omega_T
27315             ELSEIF(I.EQ.9) THEN
27316               VA2=.25D0/XW/RTCM(50)**4
27317               WID2=WIDS(24,ICHANN)*WIDS(PYCOMP(KTECHN+223),2)
27318 C...a2_tc+ -> Z^0  + rho_T^+
27319             ELSEIF(I.EQ.10) THEN
27320               VA2=(2D0*RTCM(2)-1D0)**2*XW/XW1/RTCM(50)**4
27321               AA2=1D0/(4D0*XW*XW1)/RTCM(51)**4
27322               WID2=WIDS(23,2)*WIDS(PYCOMP(KTECHN+213),ICHANN)
27323             ENDIF            
27324             WDTP(I)=AEM*SHR**5*PCM/12D0*(VA2*FACPV+AA2*FACPA)
27325           ELSE
27326 C...a2_tc+ -> f + fbar'.
27327             IA=I-10
27328             WID2=1D0
27329             IF(IA.LE.16) THEN
27330               FCOF=3D0*RADC*VCKM((IA-1)/4+1,MOD(IA-1,4)+1)
27331               IF(KFLR.GT.0) THEN
27332                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,2)
27333                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,2)
27334                 IF(IA.GE.13) WID2=WID2*WIDS(7,3)
27335               ELSE
27336                 IF(MOD(IA,4).EQ.3) WID2=WIDS(6,3)
27337                 IF(MOD(IA,4).EQ.0) WID2=WIDS(8,3)
27338                 IF(IA.GE.13) WID2=WID2*WIDS(7,2)
27339               ENDIF
27340             ELSE
27341               FCOF=1D0
27342               IF(KFLR.GT.0) THEN
27343                 IF(IA.EQ.20) WID2=WIDS(17,3)*WIDS(18,2)
27344               ELSE
27345                 IF(IA.EQ.20) WID2=WIDS(17,2)*WIDS(18,3)
27346               ENDIF
27347             ENDIF
27348             WDTP(I)=FACF*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
27349      &      SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27350           ENDIF
27351           WDTP(I)=FUDGE*WDTP(I)
27352           WDTP(0)=WDTP(0)+WDTP(I)
27353           IF(MDME(IDC,1).GT.0) THEN
27354             WDTE(I,MDME(IDC,1))=WDTP(I)*WID2
27355             WDTE(0,MDME(IDC,1))=WDTE(0,MDME(IDC,1))+WDTE(I,MDME(IDC,1))
27356             WDTE(I,0)=WDTE(I,MDME(IDC,1))
27357             WDTE(0,0)=WDTE(0,0)+WDTE(I,0)
27358           ENDIF
27359   540   CONTINUE
27360  
27361       ENDIF
27362       MINT(61)=0
27363       MINT(62)=0
27364       MINT(63)=0
27365       RETURN
27366       END
27367  
27368 C***********************************************************************
27369  
27370 C...PYOFSH
27371 C...Calculates partial width and differential cross-section maxima
27372 C...of channels/processes not allowed on mass-shell, and selects
27373 C...masses in such channels/processes.
27374  
27375       SUBROUTINE PYOFSH(MOFSH,KFMO,KFD1,KFD2,PMMO,RET1,RET2)
27376  
27377 C...Double precision and integer declarations.
27378       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27379       IMPLICIT INTEGER(I-N)
27380       INTEGER PYK,PYCHGE,PYCOMP
27381 C...Commonblocks.
27382       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27383       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27384       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
27385       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
27386       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27387       COMMON/PYINT1/MINT(400),VINT(400)
27388       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
27389       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
27390       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
27391      &/PYINT2/,/PYINT5/
27392 C...Local arrays.
27393       DIMENSION KFD(2),MBW(2),PMD(2),PGD(2),PMG(2),PML(2),PMU(2),
27394      &PMH(2),ATL(2),ATU(2),ATH(2),RMG(2),INX1(100),XPT1(100),
27395      &FPT1(100),INX2(100),XPT2(100),FPT2(100),WDTP(0:400),
27396      &WDTE(0:400,0:5)
27397  
27398 C...Find if particles equal, maximum mass, matrix elements, etc.
27399       MINT(51)=0
27400       ISUB=MINT(1)
27401       KFD(1)=IABS(KFD1)
27402       KFD(2)=IABS(KFD2)
27403       MEQL=0
27404       IF(KFD(1).EQ.KFD(2)) MEQL=1
27405       MLM=0
27406       IF(MOFSH.GE.2.AND.MEQL.EQ.1) MLM=INT(1.5D0+PYR(0))
27407       IF(MOFSH.LE.2.OR.MOFSH.EQ.5) THEN
27408         NOFF=44
27409         PMMX=PMMO
27410       ELSE
27411         NOFF=40
27412         PMMX=VINT(1)
27413         IF(CKIN(2).GT.CKIN(1)) PMMX=MIN(CKIN(2),VINT(1))
27414       ENDIF
27415       MMED=0
27416       IF((KFMO.EQ.25.OR.KFMO.EQ.35.OR.KFMO.EQ.36).AND.MEQL.EQ.1.AND.
27417      &(KFD(1).EQ.23.OR.KFD(1).EQ.24)) MMED=1
27418       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(1).EQ.23.OR.
27419      &KFD(1).EQ.24).AND.(KFD(2).EQ.23.OR.KFD(2).EQ.24)) MMED=2
27420       IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(2).EQ.25.OR.
27421      &KFD(2).EQ.35.OR.KFD(2).EQ.36)) MMED=3
27422       LOOP=1
27423  
27424 C...Find where Breit-Wigners are required, else select discrete masses.
27425   100 DO 110 I=1,2
27426         KFCA=PYCOMP(KFD(I))
27427         IF(KFCA.GT.0) THEN
27428           PMD(I)=PMAS(KFCA,1)
27429           PGD(I)=PMAS(KFCA,2)
27430         ELSE
27431           PMD(I)=0D0
27432           PGD(I)=0D0
27433         ENDIF
27434         IF(MSTP(42).LE.0.OR.PGD(I).LT.PARP(41)) THEN
27435           MBW(I)=0
27436           PMG(I)=PMD(I)
27437           RMG(I)=(PMG(I)/PMMX)**2
27438         ELSE
27439           MBW(I)=1
27440         ENDIF
27441   110 CONTINUE
27442  
27443 C...Find allowed mass range and Breit-Wigner parameters.
27444       DO 120 I=1,2
27445         IF(MOFSH.EQ.1.AND.LOOP.EQ.1.AND.MBW(I).EQ.1) THEN
27446           PML(I)=PARP(42)
27447           PMU(I)=PMMX-PARP(42)
27448           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
27449           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
27450         ELSEIF(MBW(I).EQ.1.AND.MOFSH.NE.5) THEN
27451           ILM=I
27452           IF(MLM.EQ.2) ILM=3-I
27453           PML(I)=MAX(CKIN(NOFF+2*ILM-1),PARP(42))
27454           IF(MBW(3-I).EQ.0) THEN
27455             PMU(I)=PMMX-PMD(3-I)
27456           ELSE
27457             PMU(I)=PMMX-MAX(CKIN(NOFF+5-2*ILM),PARP(42))
27458           ENDIF
27459           IF(CKIN(NOFF+2*ILM).GT.CKIN(NOFF+2*ILM-1)) PMU(I)=
27460      &    MIN(PMU(I),CKIN(NOFF+2*ILM))
27461           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
27462           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
27463           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
27464           IF(MBW(I).EQ.1) THEN
27465             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
27466             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
27467             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
27468      &      PGD(I)))
27469           ENDIF
27470         ELSEIF(MBW(I).EQ.1.AND.MOFSH.EQ.5) THEN
27471           ILM=I
27472           IF(MLM.EQ.2) ILM=3-I
27473           PML(I)=MAX(CKIN(48+I),PARP(42))
27474           PMU(I)=PMMX-MAX(CKIN(51-I),PARP(42))
27475           IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I))
27476           IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX)
27477           IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX)
27478           IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1
27479           IF(MBW(I).EQ.1) THEN
27480             ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
27481             ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I)))
27482             IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)*
27483      &      PGD(I)))
27484           ENDIF
27485         ENDIF
27486   120 CONTINUE
27487       IF(MBW(1).LT.0.OR.MBW(2).LT.0.OR.(MBW(1).EQ.0.AND.MBW(2).EQ.0))
27488      &THEN
27489         CALL PYERRM(3,'(PYOFSH:) no allowed decay product masses')
27490         MINT(51)=1
27491         RETURN
27492       ENDIF
27493  
27494 C...Calculation of partial width of resonance.
27495       IF(MOFSH.EQ.1) THEN
27496  
27497 C..If only one integration, pick that to be the inner.
27498         IF(MBW(1).EQ.0) THEN
27499           PM2=PMD(1)
27500           PMD(1)=PMD(2)
27501           PGD(1)=PGD(2)
27502           PML(1)=PML(2)
27503           PMU(1)=PMU(2)
27504         ELSEIF(MBW(2).EQ.0) THEN
27505           PM2=PMD(2)
27506         ENDIF
27507  
27508 C...Start outer loop of integration.
27509         IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
27510           ATL2=ATAN((PML(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
27511           ATU2=ATAN((PMU(2)**2-PMD(2)**2)/(PMD(2)*PGD(2)))
27512           NPT2=1
27513           XPT2(1)=1D0
27514           INX2(1)=0
27515           FMAX2=0D0
27516         ENDIF
27517   130   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
27518           PM2S=PMD(2)**2+PMD(2)*PGD(2)*TAN(ATL2+XPT2(NPT2)*(ATU2-ATL2))
27519           PM2=MIN(PMU(2),MAX(PML(2),SQRT(MAX(0D0,PM2S))))
27520         ENDIF
27521         RM2=(PM2/PMMX)**2
27522  
27523 C...Start inner loop of integration.
27524         PML1=PML(1)
27525         PMU1=MIN(PMU(1),PMMX-PM2)
27526         IF(MEQL.EQ.1) PMU1=MIN(PMU1,PM2)
27527         ATL1=ATAN((PML1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
27528         ATU1=ATAN((PMU1**2-PMD(1)**2)/(PMD(1)*PGD(1)))
27529         IF(PML1+PARJ(64).GE.PMU1.OR.ATL1+1D-7.GE.ATU1) THEN
27530           FUNC2=0D0
27531           GOTO 180
27532         ENDIF
27533         NPT1=1
27534         XPT1(1)=1D0
27535         INX1(1)=0
27536         FMAX1=0D0
27537   140   PM1S=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL1+XPT1(NPT1)*(ATU1-ATL1))
27538         PM1=MIN(PMU1,MAX(PML1,SQRT(MAX(0D0,PM1S))))
27539         RM1=(PM1/PMMX)**2
27540  
27541 C...Evaluate function value - inner loop.
27542         FUNC1=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
27543         IF(MMED.EQ.1) FUNC1=FUNC1*((1D0-RM1-RM2)**2+8D0*RM1*RM2)
27544         IF(MMED.EQ.2) FUNC1=FUNC1**3*(1D0+10D0*RM1+10D0*RM2+RM1**2+
27545      &  RM2**2+10D0*RM1*RM2)
27546         IF(FUNC1.GT.FMAX1) FMAX1=FUNC1
27547         FPT1(NPT1)=FUNC1
27548  
27549 C...Go to next position in inner loop.
27550         IF(NPT1.EQ.1) THEN
27551           NPT1=NPT1+1
27552           XPT1(NPT1)=0D0
27553           INX1(NPT1)=1
27554           GOTO 140
27555         ELSEIF(NPT1.LE.8) THEN
27556           NPT1=NPT1+1
27557           IF(NPT1.LE.4.OR.NPT1.EQ.6) ISH1=1
27558           ISH1=ISH1+1
27559           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
27560           INX1(NPT1)=INX1(ISH1)
27561           INX1(ISH1)=NPT1
27562           GOTO 140
27563         ELSEIF(NPT1.LT.100) THEN
27564           ISN1=ISH1
27565   150     ISH1=ISH1+1
27566           IF(ISH1.GT.NPT1) ISH1=2
27567           IF(ISH1.EQ.ISN1) GOTO 160
27568           DFPT1=ABS(FPT1(ISH1)-FPT1(INX1(ISH1)))
27569           IF(DFPT1.LT.PARP(43)*FMAX1) GOTO 150
27570           NPT1=NPT1+1
27571           XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1)))
27572           INX1(NPT1)=INX1(ISH1)
27573           INX1(ISH1)=NPT1
27574           GOTO 140
27575         ENDIF
27576  
27577 C...Calculate integral over inner loop.
27578   160   FSUM1=0D0
27579         DO 170 IPT1=2,NPT1
27580           FSUM1=FSUM1+0.5D0*(FPT1(IPT1)+FPT1(INX1(IPT1)))*
27581      &    (XPT1(INX1(IPT1))-XPT1(IPT1))
27582   170   CONTINUE
27583         FUNC2=FSUM1*(ATU1-ATL1)/PARU(1)
27584   180   IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN
27585           IF(FUNC2.GT.FMAX2) FMAX2=FUNC2
27586           FPT2(NPT2)=FUNC2
27587  
27588 C...Go to next position in outer loop.
27589           IF(NPT2.EQ.1) THEN
27590             NPT2=NPT2+1
27591             XPT2(NPT2)=0D0
27592             INX2(NPT2)=1
27593             GOTO 130
27594           ELSEIF(NPT2.LE.8) THEN
27595             NPT2=NPT2+1
27596             IF(NPT2.LE.4.OR.NPT2.EQ.6) ISH2=1
27597             ISH2=ISH2+1
27598             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
27599             INX2(NPT2)=INX2(ISH2)
27600             INX2(ISH2)=NPT2
27601             GOTO 130
27602           ELSEIF(NPT2.LT.100) THEN
27603             ISN2=ISH2
27604   190       ISH2=ISH2+1
27605             IF(ISH2.GT.NPT2) ISH2=2
27606             IF(ISH2.EQ.ISN2) GOTO 200
27607             DFPT2=ABS(FPT2(ISH2)-FPT2(INX2(ISH2)))
27608             IF(DFPT2.LT.PARP(43)*FMAX2) GOTO 190
27609             NPT2=NPT2+1
27610             XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2)))
27611             INX2(NPT2)=INX2(ISH2)
27612             INX2(ISH2)=NPT2
27613             GOTO 130
27614           ENDIF
27615  
27616 C...Calculate integral over outer loop.
27617   200     FSUM2=0D0
27618           DO 210 IPT2=2,NPT2
27619             FSUM2=FSUM2+0.5D0*(FPT2(IPT2)+FPT2(INX2(IPT2)))*
27620      &      (XPT2(INX2(IPT2))-XPT2(IPT2))
27621   210     CONTINUE
27622           FSUM2=FSUM2*(ATU2-ATL2)/PARU(1)
27623           IF(MEQL.EQ.1) FSUM2=2D0*FSUM2
27624         ELSE
27625           FSUM2=FUNC2
27626         ENDIF
27627  
27628 C...Save result; second integration for user-selected mass range.
27629         IF(LOOP.EQ.1) WIDW=FSUM2
27630         WID2=FSUM2
27631         IF(LOOP.EQ.1.AND.(CKIN(46).GE.CKIN(45).OR.CKIN(48).GE.CKIN(47)
27632      &  .OR.MAX(CKIN(45),CKIN(47)).GE.1.01D0*PARP(42))) THEN
27633           LOOP=2
27634           GOTO 100
27635         ENDIF
27636         RET1=WIDW
27637         RET2=WID2/WIDW
27638  
27639 C...Select two decay product masses of a resonance.
27640       ELSEIF(MOFSH.EQ.2.OR.MOFSH.EQ.5) THEN
27641   220   DO 230 I=1,2
27642           IF(MBW(I).EQ.0) GOTO 230
27643           PMBW=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*
27644      &    (ATU(I)-ATL(I)))
27645           PMG(I)=MIN(PMU(I),MAX(PML(I),SQRT(MAX(0D0,PMBW))))
27646           RMG(I)=(PMG(I)/PMMX)**2
27647   230   CONTINUE
27648         IF((MEQL.EQ.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
27649      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) GOTO 220
27650  
27651 C...Weight with matrix element (if none known, use beta factor).
27652         FLAM=SQRT(MAX(0D0,(1D0-RMG(1)-RMG(2))**2-4D0*RMG(1)*RMG(2)))
27653         IF(MMED.EQ.1) THEN
27654           WTBE=FLAM*((1D0-RMG(1)-RMG(2))**2+8D0*RMG(1)*RMG(2))
27655         ELSEIF(MMED.EQ.2) THEN
27656           WTBE=FLAM**3*(1D0+10D0*RMG(1)+10D0*RMG(2)+RMG(1)**2+
27657      &    RMG(2)**2+10D0*RMG(1)*RMG(2))
27658         ELSEIF(MMED.EQ.3) THEN
27659           WTBE=FLAM*(RMG(1)+FLAM**2/12D0)
27660         ELSE
27661           WTBE=FLAM
27662         ENDIF
27663         IF(WTBE.LT.PYR(0)) GOTO 220
27664         RET1=PMG(1)
27665         RET2=PMG(2)
27666  
27667 C...Find suitable set of masses for initialization of 2 -> 2 processes.
27668       ELSEIF(MOFSH.EQ.3) THEN
27669         IF(MBW(1).NE.0.AND.MBW(2).EQ.0) THEN
27670           PMG(1)=MIN(PMD(1),0.5D0*(PML(1)+PMU(1)))
27671           PMG(2)=PMD(2)
27672         ELSEIF(MBW(2).NE.0.AND.MBW(1).EQ.0) THEN
27673           PMG(1)=PMD(1)
27674           PMG(2)=MIN(PMD(2),0.5D0*(PML(2)+PMU(2)))
27675         ELSE
27676           IDIV=-1
27677   240     IDIV=IDIV+1
27678           PMG(1)=MIN(PMD(1),0.1D0*(IDIV*PML(1)+(10-IDIV)*PMU(1)))
27679           PMG(2)=MIN(PMD(2),0.1D0*(IDIV*PML(2)+(10-IDIV)*PMU(2)))
27680           IF(IDIV.LE.9.AND.PMG(1)+PMG(2).GT.0.9D0*PMMX) GOTO 240
27681         ENDIF
27682         RET1=PMG(1)
27683         RET2=PMG(2)
27684  
27685 C...Evaluate importance of excluded tails of Breit-Wigners.
27686         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
27687      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
27688         IF(MEQL.LE.1) THEN
27689           VINT(80)=1D0
27690           DO 250 I=1,2
27691             IF(MBW(I).NE.0) VINT(80)=VINT(80)*1.25D0*(ATU(I)-ATL(I))/
27692      &      PARU(1)
27693   250     CONTINUE
27694         ELSE
27695           VINT(80)=(1.25D0/PARU(1))**2*MAX((ATU(1)-ATL(1))*
27696      &    (ATH(2)-ATL(2)),(ATH(1)-ATL(1))*(ATU(2)-ATL(2)))
27697         ENDIF
27698         IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.30.OR.ISUB.EQ.35).AND.
27699      &  MSTP(43).NE.2) VINT(80)=2D0*VINT(80)
27700         IF(ISUB.EQ.22.AND.MSTP(43).NE.2) VINT(80)=4D0*VINT(80)
27701         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
27702  
27703 C...Pick one particle to be the lighter (if improves efficiency).
27704       ELSEIF(MOFSH.EQ.4) THEN
27705         IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2)
27706      &  .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2
27707   260   IF(MEQL.EQ.2) MLM=INT(1.5D0+PYR(0))
27708  
27709 C...Select two masses according to Breit-Wigner + flat in s + 1/s.
27710         DO 270 I=1,2
27711           IF(MBW(I).EQ.0) GOTO 270
27712           PMV=PMU(I)
27713           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
27714           ATV=ATU(I)
27715           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
27716           RBR=PYR(0)
27717           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
27718      &    ISUB.EQ.35).AND.MSTP(43).NE.2) RBR=2D0*RBR
27719           IF(RBR.LT.0.8D0) THEN
27720             PMSR=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*(ATV-ATL(I)))
27721             PMG(I)=MIN(PMV,MAX(PML(I),SQRT(MAX(0D0,PMSR))))
27722           ELSEIF(RBR.LT.0.9D0) THEN
27723             PMG(I)=SQRT(MAX(0D0,PML(I)**2+PYR(0)*(PMV**2-PML(I)**2)))
27724           ELSEIF(RBR.LT.1.5D0) THEN
27725             PMG(I)=PML(I)*(PMV/PML(I))**PYR(0)
27726           ELSE
27727             PMG(I)=SQRT(MAX(0D0,PML(I)**2*PMV**2/(PML(I)**2+PYR(0)*
27728      &      (PMV**2-PML(I)**2))))
27729           ENDIF
27730   270   CONTINUE
27731         IF((MEQL.GE.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR.
27732      &  PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN
27733           IF(MINT(48).EQ.1.AND.MSTP(171).EQ.0) THEN
27734             NGEN(0,1)=NGEN(0,1)+1
27735             NGEN(MINT(1),1)=NGEN(MINT(1),1)+1
27736             GOTO 260
27737           ELSE
27738             MINT(51)=1
27739             RETURN
27740           ENDIF
27741         ENDIF
27742         RET1=PMG(1)
27743         RET2=PMG(2)
27744  
27745 C...Give weight for selected mass distribution.
27746         VINT(80)=1D0
27747         DO 280 I=1,2
27748           IF(MBW(I).EQ.0) GOTO 280
27749           PMV=PMU(I)
27750           IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I)
27751           ATV=ATU(I)
27752           IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I)
27753           F0=PMD(I)*PGD(I)/((PMG(I)**2-PMD(I)**2)**2+
27754      &    (PMD(I)*PGD(I))**2)/PARU(1)
27755           F1=1D0
27756           F2=1D0/PMG(I)**2
27757           F3=1D0/PMG(I)**4
27758           FI0=(ATV-ATL(I))/PARU(1)
27759           FI1=PMV**2-PML(I)**2
27760           FI2=2D0*LOG(PMV/PML(I))
27761           FI3=1D0/PML(I)**2-1D0/PMV**2
27762           IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR.
27763      &    ISUB.EQ.35).AND.MSTP(43).NE.2) THEN
27764             VINT(80)=VINT(80)*20D0/(8D0+(FI0/F0)*(F1/FI1+6D0*F2/FI2+
27765      &      5D0*F3/FI3))
27766           ELSE
27767             VINT(80)=VINT(80)*10D0/(8D0+(FI0/F0)*(F1/FI1+F2/FI2))
27768           ENDIF
27769           VINT(80)=VINT(80)*FI0
27770   280   CONTINUE
27771         IF(MEQL.GE.1) VINT(80)=2D0*VINT(80)
27772       ENDIF
27773  
27774       RETURN
27775       END
27776  
27777 C***********************************************************************
27778  
27779 C...PYRECO
27780 C...Handles the possibility of colour reconnection in W+W- events,
27781 C...Based on the main scenarios of the Sjostrand and Khoze study:
27782 C...I, II, II', intermediate and instantaneous; plus one model
27783 C...along the lines of the Gustafson and Hakkinen: GH.
27784 C...Note: also handles Z0 Z0 and W-W+ events, but notation below
27785 C...is as if first resonance is W+ and second W-.
27786  
27787       SUBROUTINE PYRECO(IW1,IW2,NSD1,NAFT1)
27788  
27789 C...Double precision and integer declarations.
27790       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
27791       IMPLICIT INTEGER(I-N)
27792       INTEGER PYK,PYCHGE,PYCOMP
27793 C...Parameter value; number of points in MC integration.
27794       PARAMETER (NPT=100)
27795 C...Commonblocks.
27796       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
27797       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
27798       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
27799       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
27800       COMMON/PYINT1/MINT(400),VINT(400)
27801       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
27802 C...Local arrays.
27803       DIMENSION NBEG(2),NEND(2),INP(50),INM(50),BEWW(3),XP(3),XM(3),
27804      &V1(3),V2(3),BETP(50,4),DIRP(50,3),BETM(50,4),DIRM(50,3),
27805      &XD(4),XB(4),IAP(NPT),IAM(NPT),WTA(NPT),V1P(3),V2P(3),V1M(3),
27806      &V2M(3),Q(4,3),XPP(3),XMM(3),IPC(20),IMC(20),TC(0:20),TPC(20),
27807      &TMC(20),IJOIN(100)
27808  
27809 C...Functions to give four-product and to do determinants.
27810       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)
27811       DETER(I,J,L)=Q(I,1)*Q(J,2)*Q(L,3)-Q(I,1)*Q(L,2)*Q(J,3)+
27812      &Q(J,1)*Q(L,2)*Q(I,3)-Q(J,1)*Q(I,2)*Q(L,3)+
27813      &Q(L,1)*Q(I,2)*Q(J,3)-Q(L,1)*Q(J,2)*Q(I,3)
27814  
27815 C...Only allow fraction of recoupling for GH, intermediate and
27816 C...instantaneous.
27817       IF(MSTP(115).EQ.5.OR.MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
27818         IF(PYR(0).GT.PARP(120)) RETURN
27819       ENDIF
27820       ISUB=MINT(1)
27821  
27822 C...Common part for scenarios I, II, II', and GH.
27823       IF(MSTP(115).EQ.1.OR.MSTP(115).EQ.2.OR.MSTP(115).EQ.3.OR.
27824      &MSTP(115).EQ.5) THEN
27825  
27826 C...Read out frequently-used parameters.
27827         PI=PARU(1)
27828         HBAR=PARU(3)
27829         PMW=PMAS(24,1)
27830         IF(ISUB.EQ.22) PMW=PMAS(23,1)
27831         PGW=PMAS(24,2)
27832         IF(ISUB.EQ.22) PGW=PMAS(23,2)
27833         TFRAG=PARP(115)
27834         RHAD=PARP(116)
27835         FACT=PARP(117)
27836         BLOWR=PARP(118)
27837         BLOWT=PARP(119)
27838  
27839 C...Find range of decay products of the W's.
27840 C...Background: the W's are stored in IW1 and IW2.
27841 C...Their direct decay products in NSD1+1 through NSD1+4.
27842 C...Products after shower (if any) in NSD1+5 through NAFT1
27843 C...for first W and in NAFT1+1 through N for the second.
27844         IF(NAFT1.GT.NSD1+4) THEN
27845           NBEG(1)=NSD1+5
27846           NEND(1)=NAFT1
27847         ELSE
27848           NBEG(1)=NSD1+1
27849           NEND(1)=NSD1+2
27850         ENDIF
27851         IF(N.GT.NAFT1) THEN
27852           NBEG(2)=NAFT1+1
27853           NEND(2)=N
27854         ELSE
27855           NBEG(2)=NSD1+3
27856           NEND(2)=NSD1+4
27857         ENDIF
27858  
27859 C...Rearrange parton shower products along strings.
27860         NOLD=N
27861         CALL PYPREP(NSD1+1)
27862         IF(MINT(51).NE.0) RETURN
27863  
27864 C...Find partons pointing back to W+ and W-; store them with quark
27865 C...end of string first.
27866         NNP=0
27867         NNM=0
27868         ISGP=0
27869         ISGM=0
27870         DO 120 I=NOLD+1,N
27871           IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 120
27872           IF(IABS(K(I,2)).GE.22) GOTO 120
27873           IF(K(I,3).GE.NBEG(1).AND.K(I,3).LE.NEND(1)) THEN
27874             IF(ISGP.EQ.0) ISGP=ISIGN(1,K(I,2))
27875             NNP=NNP+1
27876             IF(ISGP.EQ.1) THEN
27877               INP(NNP)=I
27878             ELSE
27879               DO 100 I1=NNP,2,-1
27880                 INP(I1)=INP(I1-1)
27881   100         CONTINUE
27882               INP(1)=I
27883             ENDIF
27884             IF(K(I,1).EQ.1) ISGP=0
27885           ELSEIF(K(I,3).GE.NBEG(2).AND.K(I,3).LE.NEND(2)) THEN
27886             IF(ISGM.EQ.0) ISGM=ISIGN(1,K(I,2))
27887             NNM=NNM+1
27888             IF(ISGM.EQ.1) THEN
27889               INM(NNM)=I
27890             ELSE
27891               DO 110 I1=NNM,2,-1
27892                 INM(I1)=INM(I1-1)
27893   110         CONTINUE
27894               INM(1)=I
27895             ENDIF
27896             IF(K(I,1).EQ.1) ISGM=0
27897           ENDIF
27898   120   CONTINUE
27899  
27900 C...Boost to W+W- rest frame (not strictly needed).
27901         DO 130 J=1,3
27902           BEWW(J)=(P(IW1,J)+P(IW2,J))/(P(IW1,4)+P(IW2,4))
27903   130   CONTINUE
27904         CALL PYROBO(IW1,IW1,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27905         CALL PYROBO(IW2,IW2,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27906         CALL PYROBO(NOLD+1,N,0D0,0D0,-BEWW(1),-BEWW(2),-BEWW(3))
27907  
27908 C...Select decay vertices of W+ and W-.
27909         TP=HBAR*(-LOG(PYR(0)))*P(IW1,4)/
27910      &  SQRT((P(IW1,5)**2-PMW**2)**2+(P(IW1,5)**2*PGW/PMW)**2)
27911         TM=HBAR*(-LOG(PYR(0)))*P(IW2,4)/
27912      &  SQRT((P(IW2,5)**2-PMW**2)**2+(P(IW2,5)**2*PGW/PMW)**2)
27913         GTMAX=MAX(TP,TM)
27914         DO 140 J=1,3
27915           XP(J)=TP*P(IW1,J)/P(IW1,4)
27916           XM(J)=TM*P(IW2,J)/P(IW2,4)
27917   140   CONTINUE
27918  
27919 C...Begin scenario I specifics.
27920         IF(MSTP(115).EQ.1) THEN
27921  
27922 C...Reconstruct velocity and direction of W+ string pieces.
27923           DO 170 IIP=1,NNP-1
27924             IF(K(INP(IIP),2).LT.0) GOTO 170
27925             I1=INP(IIP)
27926             I2=INP(IIP+1)
27927             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
27928             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
27929             DO 150 J=1,3
27930               V1(J)=P(I1,J)/P1A
27931               V2(J)=P(I2,J)/P2A
27932               BETP(IIP,J)=0.5D0*(V1(J)+V2(J))
27933               DIRP(IIP,J)=V1(J)-V2(J)
27934   150       CONTINUE
27935             BETP(IIP,4)=1D0/SQRT(1D0-BETP(IIP,1)**2-BETP(IIP,2)**2-
27936      &      BETP(IIP,3)**2)
27937             DIRL=SQRT(DIRP(IIP,1)**2+DIRP(IIP,2)**2+DIRP(IIP,3)**2)
27938             DO 160 J=1,3
27939               DIRP(IIP,J)=DIRP(IIP,J)/DIRL
27940   160       CONTINUE
27941   170     CONTINUE
27942  
27943 C...Reconstruct velocity and direction of W- string pieces.
27944           DO 200 IIM=1,NNM-1
27945             IF(K(INM(IIM),2).LT.0) GOTO 200
27946             I1=INM(IIM)
27947             I2=INM(IIM+1)
27948             P1A=SQRT(P(I1,1)**2+P(I1,2)**2+P(I1,3)**2)
27949             P2A=SQRT(P(I2,1)**2+P(I2,2)**2+P(I2,3)**2)
27950             DO 180 J=1,3
27951               V1(J)=P(I1,J)/P1A
27952               V2(J)=P(I2,J)/P2A
27953               BETM(IIM,J)=0.5D0*(V1(J)+V2(J))
27954               DIRM(IIM,J)=V1(J)-V2(J)
27955   180       CONTINUE
27956             BETM(IIM,4)=1D0/SQRT(1D0-BETM(IIM,1)**2-BETM(IIM,2)**2-
27957      &      BETM(IIM,3)**2)
27958             DIRL=SQRT(DIRM(IIM,1)**2+DIRM(IIM,2)**2+DIRM(IIM,3)**2)
27959             DO 190 J=1,3
27960               DIRM(IIM,J)=DIRM(IIM,J)/DIRL
27961   190       CONTINUE
27962   200     CONTINUE
27963  
27964 C...Loop over number of space-time points.
27965           NACC=0
27966           SUM=0D0
27967           DO 250 IPT=1,NPT
27968  
27969 C...Pick x,y,z,t Gaussian (width RHAD and TFRAG, respectively).
27970             R=SQRT(-LOG(PYR(0)))
27971             PHI=2D0*PI*PYR(0)
27972             X=BLOWR*RHAD*R*COS(PHI)
27973             Y=BLOWR*RHAD*R*SIN(PHI)
27974             R=SQRT(-LOG(PYR(0)))
27975             PHI=2D0*PI*PYR(0)
27976             Z=BLOWR*RHAD*R*COS(PHI)
27977             T=GTMAX+BLOWT*SQRT(0.5D0)*TFRAG*R*ABS(SIN(PHI))
27978  
27979 C...Reject impossible points. Weight for sample distribution.
27980             IF(T**2-X**2-Y**2-Z**2.LT.0D0) GOTO 250
27981             WTSMP=EXP(-(X**2+Y**2+Z**2)/(BLOWR*RHAD)**2)*
27982      &      EXP(-2D0*(T-GTMAX)**2/(BLOWT*TFRAG)**2)
27983  
27984 C...Loop over W+ string pieces and find one with largest weight.
27985             IMAXP=0
27986             WTMAXP=1D-10
27987             XD(1)=X-XP(1)
27988             XD(2)=Y-XP(2)
27989             XD(3)=Z-XP(3)
27990             XD(4)=T-TP
27991             DO 220 IIP=1,NNP-1
27992               IF(K(INP(IIP),2).LT.0) GOTO 220
27993               BED=BETP(IIP,1)*XD(1)+BETP(IIP,2)*XD(2)+BETP(IIP,3)*XD(3)
27994               BEDG=BETP(IIP,4)*(BETP(IIP,4)*BED/(1D0+BETP(IIP,4))-XD(4))
27995               DO 210 J=1,3
27996                 XB(J)=XD(J)+BEDG*BETP(IIP,J)
27997   210         CONTINUE
27998               XB(4)=BETP(IIP,4)*(XD(4)-BED)
27999               SR2=XB(1)**2+XB(2)**2+XB(3)**2
28000               SZ2=(DIRP(IIP,1)*XB(1)+DIRP(IIP,2)*XB(2)+
28001      &        DIRP(IIP,3)*XB(3))**2
28002               WTP=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
28003      &        TFRAG**2)
28004               IF(XB(4)-SQRT(SR2).LT.0D0) WTP=0D0
28005               IF(WTP.GT.WTMAXP) THEN
28006                 IMAXP=IIP
28007                 WTMAXP=WTP
28008               ENDIF
28009   220       CONTINUE
28010  
28011 C...Loop over W- string pieces and find one with largest weight.
28012             IMAXM=0
28013             WTMAXM=1D-10
28014             XD(1)=X-XM(1)
28015             XD(2)=Y-XM(2)
28016             XD(3)=Z-XM(3)
28017             XD(4)=T-TM
28018             DO 240 IIM=1,NNM-1
28019               IF(K(INM(IIM),2).LT.0) GOTO 240
28020               BED=BETM(IIM,1)*XD(1)+BETM(IIM,2)*XD(2)+BETM(IIM,3)*XD(3)
28021               BEDG=BETM(IIM,4)*(BETM(IIM,4)*BED/(1D0+BETM(IIM,4))-XD(4))
28022               DO 230 J=1,3
28023                 XB(J)=XD(J)+BEDG*BETM(IIM,J)
28024   230         CONTINUE
28025               XB(4)=BETM(IIM,4)*(XD(4)-BED)
28026               SR2=XB(1)**2+XB(2)**2+XB(3)**2
28027               SZ2=(DIRM(IIM,1)*XB(1)+DIRM(IIM,2)*XB(2)+
28028      &        DIRM(IIM,3)*XB(3))**2
28029               WTM=EXP(-(SR2-SZ2)/(2D0*RHAD**2))*EXP(-(XB(4)**2-SZ2)/
28030      &        TFRAG**2)
28031               IF(XB(4)-SQRT(SR2).LT.0D0) WTM=0D0
28032               IF(WTM.GT.WTMAXM) THEN
28033                 IMAXM=IIM
28034                 WTMAXM=WTM
28035               ENDIF
28036   240       CONTINUE
28037  
28038 C...Result of integration.
28039             WT=0D0
28040             IF(IMAXP.NE.0.AND.IMAXM.NE.0) THEN
28041               WT=WTMAXP*WTMAXM/WTSMP
28042               SUM=SUM+WT
28043               NACC=NACC+1
28044               IAP(NACC)=IMAXP
28045               IAM(NACC)=IMAXM
28046               WTA(NACC)=WT
28047             ENDIF
28048   250     CONTINUE
28049           RES=BLOWR**3*BLOWT*SUM/NPT
28050  
28051 C...Decide whether to reconnect and, if so, where.
28052           IACC=0
28053           PREC=1D0-EXP(-FACT*RES)
28054           IF(PREC.GT.PYR(0)) THEN
28055             RSUM=PYR(0)*SUM
28056             DO 260 IA=1,NACC
28057               IACC=IA
28058               RSUM=RSUM-WTA(IA)
28059               IF(RSUM.LE.0D0) GOTO 270
28060   260       CONTINUE
28061   270       IIP=IAP(IACC)
28062             IIM=IAM(IACC)
28063           ENDIF
28064  
28065 C...Begin scenario II and II' specifics.
28066         ELSEIF(MSTP(115).EQ.2.OR.MSTP(115).EQ.3) THEN
28067  
28068 C...Loop through all string pieces, one from W+ and one from W-.
28069           NCROSS=0
28070           TC(0)=0D0
28071           DO 340 IIP=1,NNP-1
28072             IF(K(INP(IIP),2).LT.0) GOTO 340
28073             I1P=INP(IIP)
28074             I2P=INP(IIP+1)
28075             DO 330 IIM=1,NNM-1
28076               IF(K(INM(IIM),2).LT.0) GOTO 330
28077               I1M=INM(IIM)
28078               I2M=INM(IIM+1)
28079  
28080 C...Find endpoint velocity vectors.
28081               DO 280 J=1,3
28082                 V1P(J)=P(I1P,J)/P(I1P,4)
28083                 V2P(J)=P(I2P,J)/P(I2P,4)
28084                 V1M(J)=P(I1M,J)/P(I1M,4)
28085                 V2M(J)=P(I2M,J)/P(I2M,4)
28086   280         CONTINUE
28087  
28088 C...Define q matrix and find t.
28089               DO 290 J=1,3
28090                 Q(1,J)=V2P(J)-V1P(J)
28091                 Q(2,J)=-(V2M(J)-V1M(J))
28092                 Q(3,J)=XP(J)-XM(J)-TP*V1P(J)+TM*V1M(J)
28093                 Q(4,J)=V1P(J)-V1M(J)
28094   290         CONTINUE
28095               T=-DETER(1,2,3)/DETER(1,2,4)
28096  
28097 C...Find alpha and beta; i.e. coordinates of crossing point.
28098               S11=Q(1,1)*(T-TP)
28099               S12=Q(2,1)*(T-TM)
28100               S13=Q(3,1)+Q(4,1)*T
28101               S21=Q(1,2)*(T-TP)
28102               S22=Q(2,2)*(T-TM)
28103               S23=Q(3,2)+Q(4,2)*T
28104               DEN=S11*S22-S12*S21
28105               ALP=(S12*S23-S22*S13)/DEN
28106               BET=(S21*S13-S11*S23)/DEN
28107  
28108 C...Check if solution acceptable.
28109               IANSW=1
28110               IF(T.LT.GTMAX) IANSW=0
28111               IF(ALP.LT.0D0.OR.ALP.GT.1D0) IANSW=0
28112               IF(BET.LT.0D0.OR.BET.GT.1D0) IANSW=0
28113  
28114 C...Find point of crossing and check that not inconsistent.
28115               DO 300 J=1,3
28116                 XPP(J)=XP(J)+(V1P(J)+ALP*(V2P(J)-V1P(J)))*(T-TP)
28117                 XMM(J)=XM(J)+(V1M(J)+BET*(V2M(J)-V1M(J)))*(T-TM)
28118   300         CONTINUE
28119               D2PM=(XPP(1)-XMM(1))**2+(XPP(2)-XMM(2))**2+
28120      &        (XPP(3)-XMM(3))**2
28121               D2P=XPP(1)**2+XPP(2)**2+XPP(3)**2
28122               D2M=XMM(1)**2+XMM(2)**2+XMM(3)**2
28123               IF(D2PM.GT.1D-4*(D2P+D2M)) IANSW=-1
28124  
28125 C...Find string eigentimes at crossing.
28126               IF(IANSW.EQ.1) THEN
28127                 TAUP=SQRT(MAX(0D0,(T-TP)**2-(XPP(1)-XP(1))**2-
28128      &          (XPP(2)-XP(2))**2-(XPP(3)-XP(3))**2))
28129                 TAUM=SQRT(MAX(0D0,(T-TM)**2-(XMM(1)-XM(1))**2-
28130      &          (XMM(2)-XM(2))**2-(XMM(3)-XM(3))**2))
28131               ELSE
28132                 TAUP=0D0
28133                 TAUM=0D0
28134               ENDIF
28135  
28136 C...Order crossings by time. End loop over crossings.
28137               IF(IANSW.EQ.1.AND.NCROSS.LT.20) THEN
28138                 NCROSS=NCROSS+1
28139                 DO 310 I1=NCROSS,1,-1
28140                   IF(T.GT.TC(I1-1).OR.I1.EQ.1) THEN
28141                     IPC(I1)=IIP
28142                     IMC(I1)=IIM
28143                     TC(I1)=T
28144                     TPC(I1)=TAUP
28145                     TMC(I1)=TAUM
28146                     GOTO 320
28147                   ELSE
28148                     IPC(I1)=IPC(I1-1)
28149                     IMC(I1)=IMC(I1-1)
28150                     TC(I1)=TC(I1-1)
28151                     TPC(I1)=TPC(I1-1)
28152                     TMC(I1)=TMC(I1-1)
28153                   ENDIF
28154   310           CONTINUE
28155   320           CONTINUE
28156               ENDIF
28157   330       CONTINUE
28158   340     CONTINUE
28159  
28160 C...Loop over crossings; find first (if any) acceptable one.
28161           IACC=0
28162           IF(NCROSS.GE.1) THEN
28163             DO 350 IC=1,NCROSS
28164               PNFRAG=EXP(-(TPC(IC)**2+TMC(IC)**2)/TFRAG**2)
28165               IF(PNFRAG.GT.PYR(0)) THEN
28166 C...Scenario II: only compare with fragmentation time.
28167                 IF(MSTP(115).EQ.2) THEN
28168                   IACC=IC
28169                   IIP=IPC(IACC)
28170                   IIM=IMC(IACC)
28171                   GOTO 360
28172 C...Scenario II': also require that string length decreases.
28173                 ELSE
28174                   IIP=IPC(IC)
28175                   IIM=IMC(IC)
28176                   I1P=INP(IIP)
28177                   I2P=INP(IIP+1)
28178                   I1M=INM(IIM)
28179                   I2M=INM(IIM+1)
28180                   ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
28181                   ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
28182                   IF(ELNEW.LT.ELOLD) THEN
28183                     IACC=IC
28184                     IIP=IPC(IACC)
28185                     IIM=IMC(IACC)
28186                     GOTO 360
28187                   ENDIF
28188                 ENDIF
28189               ENDIF
28190   350       CONTINUE
28191   360       CONTINUE
28192           ENDIF
28193  
28194 C...Begin scenario GH specifics.
28195         ELSEIF(MSTP(115).EQ.5) THEN
28196  
28197 C...Loop through all string pieces, one from W+ and one from W-.
28198           IACC=0
28199           ELMIN=1D0
28200           DO 380 IIP=1,NNP-1
28201             IF(K(INP(IIP),2).LT.0) GOTO 380
28202             I1P=INP(IIP)
28203             I2P=INP(IIP+1)
28204             DO 370 IIM=1,NNM-1
28205               IF(K(INM(IIM),2).LT.0) GOTO 370
28206               I1M=INM(IIM)
28207               I2M=INM(IIM+1)
28208  
28209 C...Look for largest decrease of (exponent of) Lambda measure.
28210               ELOLD=FOUR(I1P,I2P)*FOUR(I1M,I2M)
28211               ELNEW=FOUR(I1P,I2M)*FOUR(I1M,I2P)
28212               ELDIF=ELNEW/MAX(1D-10,ELOLD)
28213               IF(ELDIF.LT.ELMIN) THEN
28214                 IACC=IIP+IIM
28215                 ELMIN=ELDIF
28216                 IPC(1)=IIP
28217                 IMC(1)=IIM
28218               ENDIF
28219   370       CONTINUE
28220   380     CONTINUE
28221           IIP=IPC(1)
28222           IIM=IMC(1)
28223         ENDIF
28224  
28225 C...Common for scenarios I, II, II' and GH: reconnect strings.
28226         IF(IACC.NE.0) THEN
28227           MINT(32)=1
28228           NJOIN=0
28229           DO 390 IS=1,NNP+NNM
28230             NJOIN=NJOIN+1
28231             IF(IS.LE.IIP) THEN
28232               I=INP(IS)
28233             ELSEIF(IS.LE.IIP+NNM-IIM) THEN
28234               I=INM(IS-IIP+IIM)
28235             ELSEIF(IS.LE.IIP+NNM) THEN
28236               I=INM(IS-IIP-NNM+IIM)
28237             ELSE
28238               I=INP(IS-NNM)
28239             ENDIF
28240             IJOIN(NJOIN)=I
28241             IF(K(I,2).LT.0) THEN
28242               CALL PYJOIN(NJOIN,IJOIN)
28243               NJOIN=0
28244             ENDIF
28245   390     CONTINUE
28246  
28247 C...Restore original event record if no reconnection.
28248         ELSE
28249           DO 400 I=NSD1+1,NOLD
28250             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14) THEN
28251               K(I,4)=MOD(K(I,4),MSTU(5)**2)
28252               K(I,5)=MOD(K(I,5),MSTU(5)**2)
28253             ENDIF
28254   400     CONTINUE
28255           DO 410 I=NOLD+1,N
28256             K(K(I,3),1)=3
28257   410     CONTINUE
28258           N=NOLD
28259         ENDIF
28260  
28261 C...Boost back system.
28262         CALL PYROBO(IW1,IW1,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
28263         CALL PYROBO(IW2,IW2,0D0,0D0,BEWW(1),BEWW(2),BEWW(3))
28264         IF(N.GT.NOLD) CALL PYROBO(NOLD+1,N,0D0,0D0,
28265      &  BEWW(1),BEWW(2),BEWW(3))
28266  
28267 C...Common part for intermediate and instantaneous scenarios.
28268       ELSEIF(MSTP(115).EQ.11.OR.MSTP(115).EQ.12) THEN
28269         MINT(32)=1
28270  
28271 C...Remove old shower products and reset showering ones.
28272         N=NSD1+4
28273         DO 420 I=NSD1+1,NSD1+4
28274           K(I,1)=3
28275           K(I,4)=MOD(K(I,4),MSTU(5)**2)
28276           K(I,5)=MOD(K(I,5),MSTU(5)**2)
28277   420   CONTINUE
28278  
28279 C...Identify quark-antiquark pairs.
28280         IQ1=NSD1+1
28281         IQ2=NSD1+2
28282         IQ3=NSD1+3
28283         IF(K(IQ1,2)*K(IQ3,2).LT.0) IQ3=NSD1+4
28284         IQ4=2*NSD1+7-IQ3
28285  
28286 C...Reconnect strings.
28287         IJOIN(1)=IQ1
28288         IJOIN(2)=IQ4
28289         CALL PYJOIN(2,IJOIN)
28290         IJOIN(1)=IQ3
28291         IJOIN(2)=IQ2
28292         CALL PYJOIN(2,IJOIN)
28293  
28294 C...Do new parton showers in intermediate scenario.
28295         IF(MSTP(71).GE.1.AND.MSTP(115).EQ.11) THEN
28296           MSTJ50=MSTJ(50)
28297           MSTJ(50)=0
28298           CALL PYSHOW(IQ1,IQ2,P(IW1,5))
28299           CALL PYSHOW(IQ3,IQ4,P(IW2,5))
28300           MSTJ(50)=MSTJ50
28301  
28302 C...Do new parton showers in instantaneous scenario.
28303         ELSEIF(MSTP(71).GE.1.AND.MSTP(115).EQ.12) THEN
28304           PPM2=(P(IQ1,4)+P(IQ4,4))**2-(P(IQ1,1)+P(IQ4,1))**2-
28305      &    (P(IQ1,2)+P(IQ4,2))**2-(P(IQ1,3)+P(IQ4,3))**2
28306           PPM=SQRT(MAX(0D0,PPM2))
28307           CALL PYSHOW(IQ1,IQ4,PPM)
28308           PPM2=(P(IQ3,4)+P(IQ2,4))**2-(P(IQ3,1)+P(IQ2,1))**2-
28309      &    (P(IQ3,2)+P(IQ2,2))**2-(P(IQ3,3)+P(IQ2,3))**2
28310           PPM=SQRT(MAX(0D0,PPM2))
28311           CALL PYSHOW(IQ3,IQ2,PPM)
28312         ENDIF
28313       ENDIF
28314  
28315       RETURN
28316       END
28317  
28318 C***********************************************************************
28319  
28320 C...PYKLIM
28321 C...Checks generated variables against pre-set kinematical limits;
28322 C...also calculates limits on variables used in generation.
28323  
28324       SUBROUTINE PYKLIM(ILIM)
28325  
28326 C...Double precision and integer declarations.
28327       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28328       IMPLICIT INTEGER(I-N)
28329       INTEGER PYK,PYCHGE,PYCOMP
28330 C...Commonblocks.
28331       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
28332       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28333       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28334       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
28335       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
28336       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28337       COMMON/PYINT1/MINT(400),VINT(400)
28338       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
28339       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
28340      &/PYINT1/,/PYINT2/
28341  
28342 C...Common kinematical expressions.
28343       MINT(51)=0
28344       ISUB=MINT(1)
28345       ISTSB=ISET(ISUB)
28346       IF(ISUB.EQ.96) GOTO 100
28347       SQM3=VINT(63)
28348       SQM4=VINT(64)
28349       IF(ILIM.NE.0) THEN
28350         IF(ABS(SQM3).LT.1D-4.AND.ABS(SQM4).LT.1D-4) THEN
28351           CKIN09=MAX(CKIN(9),CKIN(13))
28352           CKIN10=MIN(CKIN(10),CKIN(14))
28353           CKIN11=MAX(CKIN(11),CKIN(15))
28354           CKIN12=MIN(CKIN(12),CKIN(16))
28355         ELSE
28356           CKIN09=MAX(CKIN(9),MIN(0D0,CKIN(13)))
28357           CKIN10=MIN(CKIN(10),MAX(0D0,CKIN(14)))
28358           CKIN11=MAX(CKIN(11),MIN(0D0,CKIN(15)))
28359           CKIN12=MIN(CKIN(12),MAX(0D0,CKIN(16)))
28360         ENDIF
28361       ENDIF
28362       IF(ILIM.NE.1) THEN
28363         TAU=VINT(21)
28364         RM3=SQM3/(TAU*VINT(2))
28365         RM4=SQM4/(TAU*VINT(2))
28366         BE34=SQRT(MAX(1D-20,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
28367       ENDIF
28368       PTHMIN=CKIN(3)
28369       IF(MIN(SQM3,SQM4).LT.CKIN(6)**2.AND.ISTSB.NE.1.AND.ISTSB.NE.3)
28370      &PTHMIN=MAX(CKIN(3),CKIN(5))
28371  
28372       IF(ILIM.EQ.0) THEN
28373 C...Check generated values of tau, y*, cos(theta-hat), and tau' against
28374 C...pre-set kinematical limits.
28375         YST=VINT(22)
28376         CTH=VINT(23)
28377         TAUP=VINT(26)
28378         TAUE=TAU
28379         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
28380         X1=SQRT(TAUE)*EXP(YST)
28381         X2=SQRT(TAUE)*EXP(-YST)
28382         XF=X1-X2
28383         IF(MINT(47).NE.1) THEN
28384           IF(TAU*VINT(2).LT.CKIN(1)**2) MINT(51)=1
28385           IF(CKIN(2).GE.0D0.AND.TAU*VINT(2).GT.CKIN(2)**2) MINT(51)=1
28386           IF(YST.LT.CKIN(7).OR.YST.GT.CKIN(8)) MINT(51)=1
28387           IF(XF.LT.CKIN(25).OR.XF.GT.CKIN(26)) MINT(51)=1
28388         ENDIF
28389         IF(MINT(45).NE.1) THEN
28390           IF(X1.LT.CKIN(21).OR.X1.GT.CKIN(22)) MINT(51)=1
28391         ENDIF
28392         IF(MINT(46).NE.1) THEN
28393           IF(X2.LT.CKIN(23).OR.X2.GT.CKIN(24)) MINT(51)=1
28394         ENDIF
28395         IF(MINT(45).EQ.2) THEN
28396           IF(X1.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
28397         ENDIF
28398         IF(MINT(46).EQ.2) THEN
28399           IF(X2.GT.1D0-2D0*PARP(111)/VINT(1)) MINT(51)=1
28400         ENDIF
28401         IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
28402           PTH=0.5D0*BE34*SQRT(TAU*VINT(2)*MAX(0D0,1D0-CTH**2))
28403           EXPY3=MAX(1D-20,(1D0+RM3-RM4+BE34*CTH)/
28404      &    MAX(1D-20,(1D0+RM3-RM4-BE34*CTH)))
28405           EXPY4=MAX(1D-20,(1D0-RM3+RM4-BE34*CTH)/
28406      &    MAX(1D-20,(1D0-RM3+RM4+BE34*CTH)))
28407           Y3=YST+0.5D0*LOG(EXPY3)
28408           Y4=YST+0.5D0*LOG(EXPY4)
28409           YLARGE=MAX(Y3,Y4)
28410           YSMALL=MIN(Y3,Y4)
28411           ETALAR=20D0
28412           ETASMA=-20D0
28413           STH=SQRT(MAX(0D0,1D0-CTH**2))
28414           EXSQ3=SQRT(MAX(1D-20,((1D0+RM3-RM4)*COSH(YST)+BE34*SINH(YST)*
28415      &    CTH)**2-4D0*RM3))
28416           EXSQ4=SQRT(MAX(1D-20,((1D0-RM3+RM4)*COSH(YST)-BE34*SINH(YST)*
28417      &    CTH)**2-4D0*RM4))
28418           IF(STH.GE.1D-10) THEN
28419             EXPET3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH+EXSQ3)/
28420      &      (BE34*STH)
28421             EXPET4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH+EXSQ4)/
28422      &      (BE34*STH)
28423             ETA3=LOG(MIN(1D10,MAX(1D-10,EXPET3)))
28424             ETA4=LOG(MIN(1D10,MAX(1D-10,EXPET4)))
28425             ETALAR=MAX(ETA3,ETA4)
28426             ETASMA=MIN(ETA3,ETA4)
28427           ENDIF
28428           CTS3=((1D0+RM3-RM4)*SINH(YST)+BE34*COSH(YST)*CTH)/EXSQ3
28429           CTS4=((1D0-RM3+RM4)*SINH(YST)-BE34*COSH(YST)*CTH)/EXSQ4
28430           CTSLAR=MIN(1D0,MAX(-1D0,CTS3,CTS4))
28431           CTSSMA=MAX(-1D0,MIN(1D0,CTS3,CTS4))
28432           SH=TAU*VINT(2)
28433           RPTS=4D0*VINT(71)**2/SH
28434           BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
28435           RM34=MAX(1D-20,2D0*RM3*RM4)
28436           IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
28437      &    RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
28438           RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
28439           THA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
28440           UHA=0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
28441           IF(PTH.LT.PTHMIN) MINT(51)=1
28442           IF(CKIN(4).GE.0D0.AND.PTH.GT.CKIN(4)) MINT(51)=1
28443           IF(YLARGE.LT.CKIN(9).OR.YLARGE.GT.CKIN(10)) MINT(51)=1
28444           IF(YSMALL.LT.CKIN(11).OR.YSMALL.GT.CKIN(12)) MINT(51)=1
28445           IF(ETALAR.LT.CKIN(13).OR.ETALAR.GT.CKIN(14)) MINT(51)=1
28446           IF(ETASMA.LT.CKIN(15).OR.ETASMA.GT.CKIN(16)) MINT(51)=1
28447           IF(CTSLAR.LT.CKIN(17).OR.CTSLAR.GT.CKIN(18)) MINT(51)=1
28448           IF(CTSSMA.LT.CKIN(19).OR.CTSSMA.GT.CKIN(20)) MINT(51)=1
28449           IF(CTH.LT.CKIN(27).OR.CTH.GT.CKIN(28)) MINT(51)=1
28450           IF(THA.LT.CKIN(35)) MINT(51)=1
28451           IF(CKIN(36).GE.0D0.AND.THA.GT.CKIN(36)) MINT(51)=1
28452           IF(UHA.LT.CKIN(37)) MINT(51)=1
28453           IF(CKIN(38).GE.0D0.AND.UHA.GT.CKIN(38)) MINT(51)=1
28454         ENDIF
28455         IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
28456           IF(TAUP*VINT(2).LT.CKIN(31)**2) MINT(51)=1
28457           IF(CKIN(32).GE.0D0.AND.TAUP*VINT(2).GT.CKIN(32)**2) MINT(51)=1
28458         ENDIF
28459  
28460 C...Additional cuts on W2 (approximately) in DIS.
28461         IF(ISUB.EQ.10.AND.MINT(43).GE.2) THEN
28462           XBJ=X2
28463           IF(IABS(MINT(12)).LT.20) XBJ=X1
28464           Q2BJ=THA
28465           W2BJ=Q2BJ*(1D0-XBJ)/XBJ
28466           IF(W2BJ.LT.CKIN(39)) MINT(51)=1
28467           IF(CKIN(40).GT.0D0.AND.W2BJ.GT.CKIN(40)) MINT(51)=1
28468         ENDIF
28469  
28470       ELSEIF(ILIM.EQ.1) THEN
28471 C...Calculate limits on tau
28472 C...0) due to definition
28473         TAUMN0=0D0
28474         TAUMX0=1D0
28475 C...1) due to limits on subsystem mass
28476         TAUMN1=CKIN(1)**2/VINT(2)
28477         TAUMX1=1D0
28478         IF(CKIN(2).GE.0D0) TAUMX1=CKIN(2)**2/VINT(2)
28479 C...2) due to limits on pT-hat (and non-overlapping rapidity intervals)
28480         TM3=SQRT(SQM3+PTHMIN**2)
28481         TM4=SQRT(SQM4+PTHMIN**2)
28482         YDCOSH=1D0
28483         IF(CKIN09.GT.CKIN12) YDCOSH=COSH(CKIN09-CKIN12)
28484         TAUMN2=(TM3**2+2D0*TM3*TM4*YDCOSH+TM4**2)/VINT(2)
28485         TAUMX2=1D0
28486 C...3) due to limits on pT-hat and cos(theta-hat)
28487         CTH2MN=MIN(CKIN(27)**2,CKIN(28)**2)
28488         CTH2MX=MAX(CKIN(27)**2,CKIN(28)**2)
28489         TAUMN3=0D0
28490         IF(CKIN(27)*CKIN(28).GT.0D0) TAUMN3=
28491      &  (SQRT(SQM3+PTHMIN**2/(1D0-CTH2MN))+
28492      &  SQRT(SQM4+PTHMIN**2/(1D0-CTH2MN)))**2/VINT(2)
28493         TAUMX3=1D0
28494         IF(CKIN(4).GE.0D0.AND.CTH2MX.LT.1D0) TAUMX3=
28495      &  (SQRT(SQM3+CKIN(4)**2/(1D0-CTH2MX))+
28496      &  SQRT(SQM4+CKIN(4)**2/(1D0-CTH2MX)))**2/VINT(2)
28497 C...4) due to limits on x1 and x2
28498         TAUMN4=CKIN(21)*CKIN(23)
28499         TAUMX4=CKIN(22)*CKIN(24)
28500 C...5) due to limits on xF
28501         TAUMN5=0D0
28502         TAUMX5=MAX(1D0-CKIN(25),1D0+CKIN(26))
28503 C...6) due to limits on that and uhat
28504         TAUMN6=(SQM3+SQM4+CKIN(35)+CKIN(37))/VINT(2)
28505         TAUMX6=1D0
28506         IF(CKIN(36).GT.0D0.AND.CKIN(38).GT.0D0) TAUMX6=
28507      &  (SQM3+SQM4+CKIN(36)+CKIN(38))/VINT(2)
28508  
28509 C...Net effect of all separate limits.
28510         VINT(11)=MAX(TAUMN0,TAUMN1,TAUMN2,TAUMN3,TAUMN4,TAUMN5,TAUMN6)
28511         VINT(31)=MIN(TAUMX0,TAUMX1,TAUMX2,TAUMX3,TAUMX4,TAUMX5,TAUMX6)
28512         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
28513           VINT(11)=1D0-1D-9
28514           VINT(31)=1D0+1D-9
28515         ELSEIF(MINT(47).EQ.5) THEN
28516           VINT(31)=MIN(VINT(31),1D0-2D-10)
28517         ELSEIF(MINT(47).GE.6) THEN
28518           VINT(31)=MIN(VINT(31),1D0-1D-10)
28519         ENDIF
28520         IF(VINT(31).LE.VINT(11)) MINT(51)=1
28521  
28522       ELSEIF(ILIM.EQ.2) THEN
28523 C...Calculate limits on y*
28524         TAUE=TAU
28525         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
28526         TAURT=SQRT(TAUE)
28527 C...0) due to kinematics
28528         YSTMN0=LOG(TAURT)
28529         YSTMX0=-YSTMN0
28530 C...1) due to explicit limits
28531         YSTMN1=CKIN(7)
28532         YSTMX1=CKIN(8)
28533 C...2) due to limits on x1
28534         YSTMN2=LOG(MAX(TAUE,CKIN(21))/TAURT)
28535         YSTMX2=LOG(MAX(TAUE,CKIN(22))/TAURT)
28536 C...3) due to limits on x2
28537         YSTMN3=-LOG(MAX(TAUE,CKIN(24))/TAURT)
28538         YSTMX3=-LOG(MAX(TAUE,CKIN(23))/TAURT)
28539 C...4) due to limits on xF
28540         YEPMN4=0.5D0*ABS(CKIN(25))/TAURT
28541         YSTMN4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMN4**2)+YEPMN4)),CKIN(25))
28542         YEPMX4=0.5D0*ABS(CKIN(26))/TAURT
28543         YSTMX4=SIGN(LOG(MAX(1D-20,SQRT(1D0+YEPMX4**2)+YEPMX4)),CKIN(26))
28544 C...5) due to simultaneous limits on y-large and y-small
28545         YEPSMN=(RM3-RM4)*SINH(CKIN09-CKIN11)
28546         YEPSMX=(RM3-RM4)*SINH(CKIN10-CKIN12)
28547         YDIFMN=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMN**2)-YEPSMN)))
28548         YDIFMX=ABS(LOG(MAX(1D-20,SQRT(1D0+YEPSMX**2)-YEPSMX)))
28549         YSTMN5=0.5D0*(CKIN09+CKIN11-YDIFMN)
28550         YSTMX5=0.5D0*(CKIN10+CKIN12+YDIFMX)
28551 C...6) due to simultaneous limits on cos(theta-hat) and y-large or
28552 C...   y-small
28553         CTHLIM=SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAUE*VINT(2))))
28554         RZMN=BE34*MAX(CKIN(27),-CTHLIM)
28555         RZMX=BE34*MIN(CKIN(28),CTHLIM)
28556         YEX3MX=(1D0+RM3-RM4+RZMX)/MAX(1D-10,1D0+RM3-RM4-RZMX)
28557         YEX4MX=(1D0+RM4-RM3-RZMN)/MAX(1D-10,1D0+RM4-RM3+RZMN)
28558         YEX3MN=MAX(1D-10,1D0+RM3-RM4+RZMN)/(1D0+RM3-RM4-RZMN)
28559         YEX4MN=MAX(1D-10,1D0+RM4-RM3-RZMX)/(1D0+RM4-RM3+RZMX)
28560         YSTMN6=CKIN09-0.5D0*LOG(MAX(YEX3MX,YEX4MX))
28561         YSTMX6=CKIN12-0.5D0*LOG(MIN(YEX3MN,YEX4MN))
28562  
28563 C...Net effect of all separate limits.
28564         VINT(12)=MAX(YSTMN0,YSTMN1,YSTMN2,YSTMN3,YSTMN4,YSTMN5,YSTMN6)
28565         VINT(32)=MIN(YSTMX0,YSTMX1,YSTMX2,YSTMX3,YSTMX4,YSTMX5,YSTMX6)
28566         IF(MINT(47).EQ.1) THEN
28567           VINT(12)=-1D-9
28568           VINT(32)=1D-9
28569         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
28570           VINT(12)=(1D0-1D-9)*YSTMX0
28571           VINT(32)=(1D0+1D-9)*YSTMX0
28572         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
28573           VINT(12)=-(1D0+1D-9)*YSTMX0
28574           VINT(32)=-(1D0-1D-9)*YSTMX0
28575         ELSEIF(MINT(47).EQ.5) THEN
28576           YSTEE=LOG((1D0-1D-10)/TAURT)
28577           VINT(12)=MAX(VINT(12),-YSTEE)
28578           VINT(32)=MIN(VINT(32),YSTEE)
28579         ENDIF
28580         IF(VINT(32).LE.VINT(12)) MINT(51)=1
28581  
28582       ELSEIF(ILIM.EQ.3) THEN
28583 C...Calculate limits on cos(theta-hat)
28584         YST=VINT(22)
28585 C...0) due to definition
28586         CTNMN0=-1D0
28587         CTNMX0=0D0
28588         CTPMN0=0D0
28589         CTPMX0=1D0
28590 C...1) due to explicit limits
28591         CTNMN1=MIN(0D0,CKIN(27))
28592         CTNMX1=MIN(0D0,CKIN(28))
28593         CTPMN1=MAX(0D0,CKIN(27))
28594         CTPMX1=MAX(0D0,CKIN(28))
28595 C...2) due to limits on pT-hat
28596         CTNMN2=-SQRT(MAX(0D0,1D0-4D0*PTHMIN**2/(BE34**2*TAU*VINT(2))))
28597         CTPMX2=-CTNMN2
28598         CTNMX2=0D0
28599         CTPMN2=0D0
28600         IF(CKIN(4).GE.0D0) THEN
28601           CTNMX2=-SQRT(MAX(0D0,1D0-4D0*CKIN(4)**2/
28602      &    (BE34**2*TAU*VINT(2))))
28603           CTPMN2=-CTNMX2
28604         ENDIF
28605 C...3) due to limits on y-large and y-small
28606         CTNMN3=MIN(0D0,MAX((1D0+RM3-RM4)/BE34*TANH(CKIN11-YST),
28607      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN10-YST)))
28608         CTNMX3=MIN(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN12-YST),
28609      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN09-YST))
28610         CTPMN3=MAX(0D0,(1D0+RM3-RM4)/BE34*TANH(CKIN09-YST),
28611      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN12-YST))
28612         CTPMX3=MAX(0D0,MIN((1D0+RM3-RM4)/BE34*TANH(CKIN10-YST),
28613      &  -(1D0-RM3+RM4)/BE34*TANH(CKIN11-YST)))
28614 C...4) due to limits on that
28615         CTNMN4=-1D0
28616         CTNMX4=0D0
28617         CTPMN4=0D0
28618         CTPMX4=1D0
28619         SH=TAU*VINT(2)
28620         IF(CKIN(35).GT.0D0) THEN
28621           CTLIM=(1D0-RM3-RM4-2D0*CKIN(35)/SH)/BE34
28622           IF(CTLIM.GT.0D0) THEN
28623             CTPMX4=CTLIM
28624           ELSE
28625             CTPMX4=0D0
28626             CTNMX4=CTLIM
28627           ENDIF
28628         ENDIF
28629         IF(CKIN(36).GT.0D0) THEN
28630           CTLIM=(1D0-RM3-RM4-2D0*CKIN(36)/SH)/BE34
28631           IF(CTLIM.LT.0D0) THEN
28632             CTNMN4=CTLIM
28633           ELSE
28634             CTNMN4=0D0
28635             CTPMN4=CTLIM
28636           ENDIF
28637         ENDIF
28638 C...5) due to limits on uhat
28639         CTNMN5=-1D0
28640         CTNMX5=0D0
28641         CTPMN5=0D0
28642         CTPMX5=1D0
28643         IF(CKIN(37).GT.0D0) THEN
28644           CTLIM=(2D0*CKIN(37)/SH-(1D0-RM3-RM4))/BE34
28645           IF(CTLIM.LT.0D0) THEN
28646             CTNMN5=CTLIM
28647           ELSE
28648             CTNMN5=0D0
28649             CTPMN5=CTLIM
28650           ENDIF
28651         ENDIF
28652         IF(CKIN(38).GT.0D0) THEN
28653           CTLIM=(2D0*CKIN(38)/SH-(1D0-RM3-RM4))/BE34
28654           IF(CTLIM.GT.0D0) THEN
28655             CTPMX5=CTLIM
28656           ELSE
28657             CTPMX5=0D0
28658             CTNMX5=CTLIM
28659           ENDIF
28660         ENDIF
28661  
28662 C...Net effect of all separate limits.
28663         VINT(13)=MAX(CTNMN0,CTNMN1,CTNMN2,CTNMN3,CTNMN4,CTNMN5)
28664         VINT(33)=MIN(CTNMX0,CTNMX1,CTNMX2,CTNMX3,CTNMX4,CTNMX5)
28665         VINT(14)=MAX(CTPMN0,CTPMN1,CTPMN2,CTPMN3,CTPMN4,CTPMN5)
28666         VINT(34)=MIN(CTPMX0,CTPMX1,CTPMX2,CTPMX3,CTPMX4,CTPMX5)
28667         IF(VINT(33).LE.VINT(13).AND.VINT(34).LE.VINT(14)) MINT(51)=1
28668 
28669         IF(VINT(14).GT.VINT(34)) VINT(34)=VINT(14)
28670         IF(VINT(13).GT.VINT(33)) VINT(33)=VINT(13)
28671 
28672       ELSEIF(ILIM.EQ.4) THEN
28673 C...Calculate limits on tau'
28674 C...0) due to kinematics
28675         TAPMN0=TAU
28676         IF(ISTSB.EQ.5.AND.VINT(201).GT.0D0) THEN
28677           PQRAT=(VINT(201)+VINT(206))/VINT(1)
28678           TAPMN0=(SQRT(TAU)+PQRAT)**2
28679         ENDIF
28680         TAPMX0=1D0
28681 C...1) due to explicit limits
28682         TAPMN1=CKIN(31)**2/VINT(2)
28683         TAPMX1=1D0
28684         IF(CKIN(32).GE.0D0) TAPMX1=CKIN(32)**2/VINT(2)
28685  
28686 C...Net effect of all separate limits.
28687         VINT(16)=MAX(TAPMN0,TAPMN1)
28688         VINT(36)=MIN(TAPMX0,TAPMX1)
28689         IF(MINT(47).EQ.1) THEN
28690           VINT(16)=1D0-1D-9
28691           VINT(36)=1D0+1D-9
28692         ELSEIF(MINT(47).EQ.5) THEN
28693           VINT(36)=MIN(VINT(36),1D0-2D-10)
28694         ELSEIF(MINT(47).EQ.6.OR.MINT(47).EQ.7) THEN
28695           VINT(36)=MIN(VINT(36),1D0-1D-10)
28696         ENDIF
28697         IF(VINT(36).LE.VINT(16)) MINT(51)=1
28698  
28699       ENDIF
28700       RETURN
28701  
28702 C...Special case for low-pT and multiple interactions:
28703 C...effective kinematical limits for tau, y*, cos(theta-hat).
28704   100 IF(ILIM.EQ.0) THEN
28705       ELSEIF(ILIM.EQ.1) THEN
28706         IF(MSTP(82).LE.1) THEN
28707           VINT(11)=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
28708      &    VINT(2)
28709         ELSE
28710           VINT(11)=(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/VINT(2)
28711         ENDIF
28712         VINT(31)=1D0
28713       ELSEIF(ILIM.EQ.2) THEN
28714         VINT(12)=0.5D0*LOG(VINT(21))
28715         VINT(32)=-VINT(12)
28716       ELSEIF(ILIM.EQ.3) THEN
28717         IF(MSTP(82).LE.1) THEN
28718           ST2EFF=4D0*(PARP(81)*(VINT(1)/PARP(89))**PARP(90))**2/
28719      &    (VINT(21)*VINT(2))
28720         ELSE
28721           ST2EFF=0.01D0*(PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2/
28722      &    (VINT(21)*VINT(2))
28723         ENDIF
28724         VINT(13)=-SQRT(MAX(0D0,1D0-ST2EFF))
28725         VINT(33)=0D0
28726         VINT(14)=0D0
28727         VINT(34)=-VINT(13)
28728       ENDIF
28729  
28730       RETURN
28731       END
28732  
28733 C*********************************************************************
28734  
28735 C...PYKMAP
28736 C...Maps a uniform distribution into a distribution of a kinematical
28737 C...variable according to one of the possibilities allowed. It is
28738 C...assumed that kinematical limits have been set by a PYKLIM call.
28739  
28740       SUBROUTINE PYKMAP(IVAR,MVAR,VVAR)
28741  
28742 C...Double precision and integer declarations.
28743       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
28744       IMPLICIT INTEGER(I-N)
28745       INTEGER PYK,PYCHGE,PYCOMP
28746 C...Commonblocks.
28747       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
28748       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
28749       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
28750       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
28751       COMMON/PYINT1/MINT(400),VINT(400)
28752       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
28753       SAVE /PYDAT1/,/PYDAT2/,/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/
28754  
28755 C...Convert VVAR to tau variable.
28756       ISUB=MINT(1)
28757       ISTSB=ISET(ISUB)
28758       IF(IVAR.EQ.1) THEN
28759         TAUMIN=VINT(11)
28760         TAUMAX=VINT(31)
28761         IF(MVAR.EQ.3.OR.MVAR.EQ.4) THEN
28762           TAURE=VINT(73)
28763           GAMRE=VINT(74)
28764         ELSEIF(MVAR.EQ.5.OR.MVAR.EQ.6) THEN
28765           TAURE=VINT(75)
28766           GAMRE=VINT(76)
28767         ELSEIF(MVAR.EQ.8.OR.MVAR.EQ.9) THEN
28768           TAURE=VINT(77)
28769           GAMRE=VINT(78)
28770         ENDIF
28771         IF(MINT(47).EQ.1.AND.(ISTSB.EQ.1.OR.ISTSB.EQ.2)) THEN
28772           TAU=1D0
28773         ELSEIF(MVAR.EQ.1) THEN
28774           TAU=TAUMIN*(TAUMAX/TAUMIN)**VVAR
28775         ELSEIF(MVAR.EQ.2) THEN
28776           TAU=TAUMAX*TAUMIN/(TAUMIN+(TAUMAX-TAUMIN)*VVAR)
28777         ELSEIF(MVAR.EQ.3.OR.MVAR.EQ.5.OR.MVAR.EQ.8) THEN
28778           RATGEN=(TAURE+TAUMAX)/(TAURE+TAUMIN)*TAUMIN/TAUMAX
28779           TAU=TAURE*TAUMIN/((TAURE+TAUMIN)*RATGEN**VVAR-TAUMIN)
28780         ELSEIF(MVAR.EQ.4.OR.MVAR.EQ.6.OR.MVAR.EQ.9) THEN
28781           AUPP=ATAN((TAUMAX-TAURE)/GAMRE)
28782           ALOW=ATAN((TAUMIN-TAURE)/GAMRE)
28783           TAU=TAURE+GAMRE*TAN(ALOW+(AUPP-ALOW)*VVAR)
28784         ELSEIF(MINT(47).EQ.5) THEN
28785           AUPP=LOG(MAX(2D-10,1D0-TAUMAX))
28786           ALOW=LOG(MAX(2D-10,1D0-TAUMIN))
28787           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28788         ELSE
28789           AUPP=LOG(MAX(1D-10,1D0-TAUMAX))
28790           ALOW=LOG(MAX(1D-10,1D0-TAUMIN))
28791           TAU=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28792         ENDIF
28793         VINT(21)=MIN(TAUMAX,MAX(TAUMIN,TAU))
28794  
28795 C...Convert VVAR to y* variable.
28796       ELSEIF(IVAR.EQ.2) THEN
28797         YSTMIN=VINT(12)
28798         YSTMAX=VINT(32)
28799         TAUE=VINT(21)
28800         IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=VINT(26)
28801         IF(MINT(47).EQ.1) THEN
28802           YST=0D0
28803         ELSEIF(MINT(47).EQ.2.OR.MINT(47).EQ.6) THEN
28804           YST=-0.5D0*LOG(TAUE)
28805         ELSEIF(MINT(47).EQ.3.OR.MINT(47).EQ.7) THEN
28806           YST=0.5D0*LOG(TAUE)
28807         ELSEIF(MVAR.EQ.1) THEN
28808           YST=YSTMIN+(YSTMAX-YSTMIN)*SQRT(VVAR)
28809         ELSEIF(MVAR.EQ.2) THEN
28810           YST=YSTMAX-(YSTMAX-YSTMIN)*SQRT(1D0-VVAR)
28811         ELSEIF(MVAR.EQ.3) THEN
28812           AUPP=ATAN(EXP(YSTMAX))
28813           ALOW=ATAN(EXP(YSTMIN))
28814           YST=LOG(TAN(ALOW+(AUPP-ALOW)*VVAR))
28815         ELSEIF(MVAR.EQ.4) THEN
28816           YST0=-0.5D0*LOG(TAUE)
28817           AUPP=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0))
28818           ALOW=LOG(MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
28819           YST=YST0-LOG(1D0+EXP(ALOW+VVAR*(AUPP-ALOW)))
28820         ELSE
28821           YST0=-0.5D0*LOG(TAUE)
28822           AUPP=LOG(MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
28823           ALOW=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0))
28824           YST=LOG(1D0+EXP(AUPP+VVAR*(ALOW-AUPP)))-YST0
28825         ENDIF
28826         VINT(22)=MIN(YSTMAX,MAX(YSTMIN,YST))
28827  
28828 C...Convert VVAR to cos(theta-hat) variable.
28829       ELSEIF(IVAR.EQ.3) THEN
28830         RM34=MAX(1D-20,2D0*VINT(63)*VINT(64)/(VINT(21)*VINT(2))**2)
28831         RSQM=1D0+RM34
28832         IF(2D0*VINT(71)**2/(VINT(21)*VINT(2)).LT.0.0001D0)
28833      &  RM34=MAX(RM34,2D0*VINT(71)**2/(VINT(21)*VINT(2)))
28834         CTNMIN=VINT(13)
28835         CTNMAX=VINT(33)
28836         CTPMIN=VINT(14)
28837         CTPMAX=VINT(34)
28838         IF(MVAR.EQ.1) THEN
28839           ANEG=CTNMAX-CTNMIN
28840           APOS=CTPMAX-CTPMIN
28841           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28842             VCTN=VVAR*(ANEG+APOS)/ANEG
28843             CTH=CTNMIN+(CTNMAX-CTNMIN)*VCTN
28844           ELSE
28845             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28846             CTH=CTPMIN+(CTPMAX-CTPMIN)*VCTP
28847           ENDIF
28848         ELSEIF(MVAR.EQ.2) THEN
28849           RMNMIN=MAX(RM34,RSQM-CTNMIN)
28850           RMNMAX=MAX(RM34,RSQM-CTNMAX)
28851           RMPMIN=MAX(RM34,RSQM-CTPMIN)
28852           RMPMAX=MAX(RM34,RSQM-CTPMAX)
28853           ANEG=LOG(RMNMIN/RMNMAX)
28854           APOS=LOG(RMPMIN/RMPMAX)
28855           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28856             VCTN=VVAR*(ANEG+APOS)/ANEG
28857             CTH=RSQM-RMNMIN*(RMNMAX/RMNMIN)**VCTN
28858           ELSE
28859             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28860             CTH=RSQM-RMPMIN*(RMPMAX/RMPMIN)**VCTP
28861           ENDIF
28862         ELSEIF(MVAR.EQ.3) THEN
28863           RMNMIN=MAX(RM34,RSQM+CTNMIN)
28864           RMNMAX=MAX(RM34,RSQM+CTNMAX)
28865           RMPMIN=MAX(RM34,RSQM+CTPMIN)
28866           RMPMAX=MAX(RM34,RSQM+CTPMAX)
28867           ANEG=LOG(RMNMAX/RMNMIN)
28868           APOS=LOG(RMPMAX/RMPMIN)
28869           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28870             VCTN=VVAR*(ANEG+APOS)/ANEG
28871             CTH=RMNMIN*(RMNMAX/RMNMIN)**VCTN-RSQM
28872           ELSE
28873             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28874             CTH=RMPMIN*(RMPMAX/RMPMIN)**VCTP-RSQM
28875           ENDIF
28876         ELSEIF(MVAR.EQ.4) THEN
28877           RMNMIN=MAX(RM34,RSQM-CTNMIN)
28878           RMNMAX=MAX(RM34,RSQM-CTNMAX)
28879           RMPMIN=MAX(RM34,RSQM-CTPMIN)
28880           RMPMAX=MAX(RM34,RSQM-CTPMAX)
28881           ANEG=1D0/RMNMAX-1D0/RMNMIN
28882           APOS=1D0/RMPMAX-1D0/RMPMIN
28883           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28884             VCTN=VVAR*(ANEG+APOS)/ANEG
28885             CTH=RSQM-1D0/(1D0/RMNMIN+ANEG*VCTN)
28886           ELSE
28887             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28888             CTH=RSQM-1D0/(1D0/RMPMIN+APOS*VCTP)
28889           ENDIF
28890         ELSEIF(MVAR.EQ.5) THEN
28891           RMNMIN=MAX(RM34,RSQM+CTNMIN)
28892           RMNMAX=MAX(RM34,RSQM+CTNMAX)
28893           RMPMIN=MAX(RM34,RSQM+CTPMIN)
28894           RMPMAX=MAX(RM34,RSQM+CTPMAX)
28895           ANEG=1D0/RMNMIN-1D0/RMNMAX
28896           APOS=1D0/RMPMIN-1D0/RMPMAX
28897           IF(ANEG.GT.0D0.AND.VVAR*(ANEG+APOS).LE.ANEG) THEN
28898             VCTN=VVAR*(ANEG+APOS)/ANEG
28899             CTH=1D0/(1D0/RMNMIN-ANEG*VCTN)-RSQM
28900           ELSE
28901             VCTP=(VVAR*(ANEG+APOS)-ANEG)/APOS
28902             CTH=1D0/(1D0/RMPMIN-APOS*VCTP)-RSQM
28903           ENDIF
28904         ENDIF
28905         IF(CTH.LT.0D0) CTH=MIN(CTNMAX,MAX(CTNMIN,CTH))
28906         IF(CTH.GT.0D0) CTH=MIN(CTPMAX,MAX(CTPMIN,CTH))
28907         VINT(23)=CTH
28908  
28909 C...Convert VVAR to tau' variable.
28910       ELSEIF(IVAR.EQ.4) THEN
28911         TAU=VINT(21)
28912         TAUPMN=VINT(16)
28913         TAUPMX=VINT(36)
28914         IF(MINT(47).EQ.1) THEN
28915           TAUP=1D0
28916         ELSEIF(MVAR.EQ.1) THEN
28917           TAUP=TAUPMN*(TAUPMX/TAUPMN)**VVAR
28918         ELSEIF(MVAR.EQ.2) THEN
28919           AUPP=(1D0-TAU/TAUPMX)**4
28920           ALOW=(1D0-TAU/TAUPMN)**4
28921           TAUP=TAU/MAX(1D-10,1D0-(ALOW+(AUPP-ALOW)*VVAR)**0.25D0)
28922         ELSEIF(MINT(47).EQ.5) THEN
28923           AUPP=LOG(MAX(2D-10,1D0-TAUPMX))
28924           ALOW=LOG(MAX(2D-10,1D0-TAUPMN))
28925           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28926         ELSE
28927           AUPP=LOG(MAX(1D-10,1D0-TAUPMX))
28928           ALOW=LOG(MAX(1D-10,1D0-TAUPMN))
28929           TAUP=1D0-EXP(AUPP+VVAR*(ALOW-AUPP))
28930         ENDIF
28931         VINT(26)=MIN(TAUPMX,MAX(TAUPMN,TAUP))
28932  
28933 C...Selection of extra variables needed in 2 -> 3 process:
28934 C...pT1, pT2, phi1, phi2, y3 for three outgoing particles.
28935 C...Since no options are available, the functions of PYKLIM
28936 C...and PYKMAP are joint for these choices.
28937       ELSEIF(IVAR.EQ.5) THEN
28938  
28939 C...Read out total energy and particle masses.
28940         MINT(51)=0
28941         MPTPK=1
28942         IF(ISUB.EQ.123.OR.ISUB.EQ.124.OR.ISUB.EQ.173.OR.ISUB.EQ.174
28943      &  .OR.ISUB.EQ.178.OR.ISUB.EQ.179.OR.ISUB.EQ.351.OR.ISUB.EQ.352)
28944      &  MPTPK=2
28945         SHP=VINT(26)*VINT(2)
28946         SHPR=SQRT(SHP)
28947         PM1=VINT(201)
28948         PM2=VINT(206)
28949         PM3=SQRT(VINT(21))*VINT(1)
28950         IF(PM1+PM2+PM3.GT.0.9999D0*SHPR) THEN
28951           MINT(51)=1
28952           RETURN
28953         ENDIF
28954         PMRS1=VINT(204)**2
28955         PMRS2=VINT(209)**2
28956  
28957 C...Specify coefficients of pT choice; upper and lower limits.
28958         IF(MPTPK.EQ.1) THEN
28959           HWT1=0.4D0
28960           HWT2=0.4D0
28961         ELSE
28962           HWT1=0.05D0
28963           HWT2=0.05D0
28964         ENDIF
28965         HWT3=1D0-HWT1-HWT2
28966         PTSMX1=((SHP-PM1**2-(PM2+PM3)**2)**2-(2D0*PM1*(PM2+PM3))**2)/
28967      &  (4D0*SHP)
28968         IF(CKIN(52).GT.0D0) PTSMX1=MIN(PTSMX1,CKIN(52)**2)
28969         PTSMN1=CKIN(51)**2
28970         PTSMX2=((SHP-PM2**2-(PM1+PM3)**2)**2-(2D0*PM2*(PM1+PM3))**2)/
28971      &  (4D0*SHP)
28972         IF(CKIN(54).GT.0D0) PTSMX2=MIN(PTSMX2,CKIN(54)**2)
28973         PTSMN2=CKIN(53)**2
28974  
28975 C...Select transverse momenta according to
28976 C...dp_T^2 * (a + b/(M^2 + p_T^2) + c/(M^2 + p_T^2)^2).
28977         HMX=PMRS1+PTSMX1
28978         HMN=PMRS1+PTSMN1
28979         IF(HMX.LT.1.0001D0*HMN) THEN
28980           MINT(51)=1
28981           RETURN
28982         ENDIF
28983         HDE=PTSMX1-PTSMN1
28984         RPT=PYR(0)
28985         IF(RPT.LT.HWT1) THEN
28986           PTS1=PTSMN1+PYR(0)*HDE
28987         ELSEIF(RPT.LT.HWT1+HWT2) THEN
28988           PTS1=MAX(PTSMN1,HMN*(HMX/HMN)**PYR(0)-PMRS1)
28989         ELSE
28990           PTS1=MAX(PTSMN1,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS1)
28991         ENDIF
28992         WTPTS1=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS1+PTS1))+
28993      &  HWT3*HMN*HMX/(PMRS1+PTS1)**2)
28994         HMX=PMRS2+PTSMX2
28995         HMN=PMRS2+PTSMN2
28996         IF(HMX.LT.1.0001D0*HMN) THEN
28997           MINT(51)=1
28998           RETURN
28999         ENDIF
29000         HDE=PTSMX2-PTSMN2
29001         RPT=PYR(0)
29002         IF(RPT.LT.HWT1) THEN
29003           PTS2=PTSMN2+PYR(0)*HDE
29004         ELSEIF(RPT.LT.HWT1+HWT2) THEN
29005           PTS2=MAX(PTSMN2,HMN*(HMX/HMN)**PYR(0)-PMRS2)
29006         ELSE
29007           PTS2=MAX(PTSMN2,HMN*HMX/(HMN+PYR(0)*HDE)-PMRS2)
29008         ENDIF
29009         WTPTS2=HDE/(HWT1+HWT2*HDE/(LOG(HMX/HMN)*(PMRS2+PTS2))+
29010      &  HWT3*HMN*HMX/(PMRS2+PTS2)**2)
29011  
29012 C...Select azimuthal angles and check pT choice.
29013         PHI1=PARU(2)*PYR(0)
29014         PHI2=PARU(2)*PYR(0)
29015         PHIR=PHI2-PHI1
29016         PTS3=MAX(0D0,PTS1+PTS2+2D0*SQRT(PTS1*PTS2)*COS(PHIR))
29017         IF(PTS3.LT.CKIN(55)**2.OR.(CKIN(56).GT.0D0.AND.PTS3.GT.
29018      &  CKIN(56)**2)) THEN
29019           MINT(51)=1
29020           RETURN
29021         ENDIF
29022  
29023 C...Calculate transverse masses and check phase space not closed.
29024         PMS1=PM1**2+PTS1
29025         PMS2=PM2**2+PTS2
29026         PMS3=PM3**2+PTS3
29027         PMT1=SQRT(PMS1)
29028         PMT2=SQRT(PMS2)
29029         PMT3=SQRT(PMS3)
29030         PM12=(PMT1+PMT2)**2
29031         IF(PMT1+PMT2+PMT3.GT.0.9999D0*SHPR) THEN
29032           MINT(51)=1
29033           RETURN
29034         ENDIF
29035  
29036 C...Select rapidity for particle 3 and check phase space not closed.
29037         Y3MAX=LOG((SHP+PMS3-PM12+SQRT(MAX(0D0,(SHP-PMS3-PM12)**2-
29038      &  4D0*PMS3*PM12)))/(2D0*SHPR*PMT3))
29039         IF(Y3MAX.LT.1D-6) THEN
29040           MINT(51)=1
29041           RETURN
29042         ENDIF
29043         Y3=(2D0*PYR(0)-1D0)*0.999999D0*Y3MAX
29044         PZ3=PMT3*SINH(Y3)
29045         PE3=PMT3*COSH(Y3)
29046  
29047 C...Find momentum transfers in two mirror solutions (in 1-2 frame).
29048         PZ12=-PZ3
29049         PE12=SHPR-PE3
29050         PMS12=PE12**2-PZ12**2
29051         SQL12=SQRT(MAX(0D0,(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2))
29052         IF(SQL12.LT.1D-6*SHP) THEN
29053           MINT(51)=1
29054           RETURN
29055         ENDIF
29056         PMM1=PMS12+PMS1-PMS2
29057         PMM2=PMS12+PMS2-PMS1
29058         TFAC=-SHPR/(2D0*PMS12)
29059         T1P=TFAC*(PE12-PZ12)*(PMM1-SQL12)
29060         T1N=TFAC*(PE12-PZ12)*(PMM1+SQL12)
29061         T2P=TFAC*(PE12+PZ12)*(PMM2-SQL12)
29062         T2N=TFAC*(PE12+PZ12)*(PMM2+SQL12)
29063  
29064 C...Construct relative mirror weights and make choice.
29065         IF(MPTPK.EQ.1.OR.ISUB.EQ.351.OR.ISUB.EQ.352) THEN
29066           WTPU=1D0
29067           WTNU=1D0
29068         ELSE
29069           WTPU=1D0/((T1P-PMRS1)*(T2P-PMRS2))**2
29070           WTNU=1D0/((T1N-PMRS1)*(T2N-PMRS2))**2
29071         ENDIF
29072         WTP=WTPU/(WTPU+WTNU)
29073         WTN=WTNU/(WTPU+WTNU)
29074         EPS=1D0
29075         IF(WTN.GT.PYR(0)) EPS=-1D0
29076  
29077 C...Store result of variable choice and associated weights.
29078         VINT(202)=PTS1
29079         VINT(207)=PTS2
29080         VINT(203)=PHI1
29081         VINT(208)=PHI2
29082         VINT(205)=WTPTS1
29083         VINT(210)=WTPTS2
29084         VINT(211)=Y3
29085         VINT(212)=Y3MAX
29086         VINT(213)=EPS
29087         IF(EPS.GT.0D0) THEN
29088           VINT(214)=1D0/WTP
29089           VINT(215)=T1P
29090           VINT(216)=T2P
29091         ELSE
29092           VINT(214)=1D0/WTN
29093           VINT(215)=T1N
29094           VINT(216)=T2N
29095         ENDIF
29096         VINT(217)=-0.5D0*TFAC*(PE12-PZ12)*(PMM2+EPS*SQL12)
29097         VINT(218)=-0.5D0*TFAC*(PE12+PZ12)*(PMM1+EPS*SQL12)
29098         VINT(219)=0.5D0*(PMS12-PTS3)
29099         VINT(220)=SQL12
29100       ENDIF
29101  
29102       RETURN
29103       END
29104  
29105 C***********************************************************************
29106  
29107 C...PYSIGH
29108 C...Differential matrix elements for all included subprocesses
29109 C...Note that what is coded is (disregarding the COMFAC factor)
29110 C...1) for 2 -> 1 processes: s-hat/pi*d(sigma-hat), where,
29111 C...when d(sigma-hat) is given in the zero-width limit, the delta
29112 C...function in tau is replaced by a (modified) Breit-Wigner:
29113 C...1/pi*s*H_res/((s*tau-m_res^2)^2+H_res^2),
29114 C...where H_res = s-hat/m_res*Gamma_res(s-hat);
29115 C...2) for 2 -> 2 processes: (s-hat)**2/pi*d(sigma-hat)/d(t-hat);
29116 C...i.e., dimensionless quantities
29117 C...3) for 2 -> 3 processes: abs(M)^2, where the total cross-section is
29118 C...Integral abs(M)^2/(2shat') * (prod_(i=1)^3 d^3p_i/((2pi)^3*2E_i)) *
29119 C...(2pi)^4 delta^4(P - sum p_i)
29120 C...COMFAC contains the factor pi/s (or equivalent) and
29121 C...the conversion factor from GeV^-2 to mb
29122  
29123       SUBROUTINE PYSIGH(NCHN,SIGS)
29124  
29125 C...Double precision and integer declarations
29126       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29127       IMPLICIT INTEGER(I-N)
29128       INTEGER PYK,PYCHGE,PYCOMP
29129 C...Parameter statement to help give large particle numbers.
29130       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
29131      &KEXCIT=4000000,KDIMEN=5000000)
29132 C...Commonblocks
29133       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
29134       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29135       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29136       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
29137       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
29138       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29139       COMMON/PYINT1/MINT(400),VINT(400)
29140       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
29141       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
29142       COMMON/PYINT4/MWID(500),WIDS(500,5)
29143       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
29144       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
29145       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
29146       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
29147      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
29148       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
29149       COMMON/PYPUED/IUED(0:99),RUED(0:99)
29150       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
29151      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
29152      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
29153      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
29154       COMMON/PYTCCO/COEFX(194:380,2)
29155       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,
29156      &/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYINT7/,
29157      &/PYMSSM/,/PYSSMT/,/PYTCSM/,/PYPUED/,/PYSGCM/,/PYTCCO/
29158 C...Local arrays and complex variables
29159       DIMENSION XPQ(-25:25)
29160  
29161 C...Map of processes onto which routine to call
29162 C...in order to evaluate cross section:
29163 C...0 = not implemented;
29164 C...1 = standard QCD (including photons);
29165 C...2 = heavy flavours;
29166 C...3 = W/Z;
29167 C...4 = Higgs (2 doublets; including longitudinal W/Z scattering);
29168 C...5 = SUSY;
29169 C...6 = Technicolor;
29170 C...7 = exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
29171 C...8 = Universal Extra Dimensions
29172       DIMENSION MAPPR(500)
29173       DATA (MAPPR(I),I=1,180)/
29174      &    3,  3,  4,  0,  4,  0,  0,  4,  0,  1,
29175      1    1,  1,  1,  1,  3,  3,  0,  1,  3,  3,
29176      2    0,  3,  3,  4,  3,  4,  0,  1,  1,  3,
29177      3    3,  4,  1,  1,  3,  3,  0,  0,  0,  0,
29178      4    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
29179      5    0,  0,  1,  1,  0,  0,  0,  1,  0,  0,
29180      6    0,  0,  0,  0,  0,  0,  0,  1,  3,  3,
29181      7    4,  4,  4,  0,  0,  4,  4,  0,  0,  1,
29182      8    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
29183      9    1,  1,  1,  1,  1,  1,  0,  0,  1,  0,
29184      &    0,  4,  4,  2,  2,  2,  2,  2,  0,  4,
29185      1    4,  4,  4,  1,  1,  0,  0,  0,  0,  0,
29186      2    4,  4,  4,  4,  0,  0,  0,  0,  0,  0,
29187      3    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
29188      4    7,  7,  4,  7,  7,  7,  7,  7,  6,  0,
29189      5    4,  4,  4,  0,  0,  4,  4,  4,  0,  0,
29190      6    4,  7,  7,  7,  6,  6,  7,  7,  7,  0,
29191      7    4,  4,  4,  4,  0,  4,  4,  4,  4,  0/
29192       DATA (MAPPR(I),I=181,500)/
29193      8    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
29194      9    6,  6,  6,  6,  6,  0,  0,  0,  0,  0,
29195      &    100*5,
29196      &    5,  0,  0,  0,  0,  0,  0,  0,  0,  0,
29197      &    8,  8,  8,  8,  8,  8,  8,  8,  8,  0,
29198      1    20*0,
29199      4    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
29200      5    7,  7,  7,  7,  0,  0,  0,  0,  0,  0,
29201      6    6,  6,  6,  6,  6,  6,  6,  6,  0,  6,
29202      7    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
29203      8    6,  6,  6,  6,  6,  6,  6,  6,  0,  0,
29204      9    7,  7,  7,  7,  7,  0,  0,  0,  0,  0,
29205      &    4,  4,  18*0,
29206      2    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
29207      3    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
29208      4     20*0,
29209      6    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
29210      7    2,  2,  2,  2,  2,  2,  2,  2,  2,  0,
29211      8     20*0/
29212  
29213 C...Reset number of channels and cross-section
29214       NCHN=0
29215       SIGS=0D0
29216  
29217 C...Read process to consider.
29218       ISUB=MINT(1)
29219       ISUBSV=ISUB
29220       MAP=MAPPR(ISUB)
29221  
29222 C...Read kinematical variables and limits
29223       ISTSB=ISET(ISUBSV)
29224       TAUMIN=VINT(11)
29225       YSTMIN=VINT(12)
29226       CTNMIN=VINT(13)
29227       CTPMIN=VINT(14)
29228       TAUPMN=VINT(16)
29229       TAU=VINT(21)
29230       YST=VINT(22)
29231       CTH=VINT(23)
29232       XT2=VINT(25)
29233       TAUP=VINT(26)
29234       TAUMAX=VINT(31)
29235       YSTMAX=VINT(32)
29236       CTNMAX=VINT(33)
29237       CTPMAX=VINT(34)
29238       TAUPMX=VINT(36)
29239  
29240 C...Derive kinematical quantities
29241       TAUE=TAU
29242       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUE=TAUP
29243       X(1)=SQRT(TAUE)*EXP(YST)
29244       X(2)=SQRT(TAUE)*EXP(-YST)
29245       IF(MINT(45).EQ.2.AND.ISTSB.GE.1) THEN
29246         IF(X(1).GT.1D0-1D-7) RETURN
29247       ELSEIF(MINT(45).EQ.3) THEN
29248         X(1)=MIN(1D0-1.1D-10,X(1))
29249       ENDIF
29250       IF(MINT(46).EQ.2.AND.ISTSB.GE.1) THEN
29251         IF(X(2).GT.1D0-1D-7) RETURN
29252       ELSEIF(MINT(46).EQ.3) THEN
29253         X(2)=MIN(1D0-1.1D-10,X(2))
29254       ENDIF
29255       SH=MAX(1D0,TAU*VINT(2))
29256       SQM3=VINT(63)
29257       SQM4=VINT(64)
29258       RM3=SQM3/SH
29259       RM4=SQM4/SH
29260       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
29261       RPTS=4D0*VINT(71)**2/SH
29262       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
29263       RM34=MAX(1D-20,2D0*RM3*RM4)
29264       RSQM=1D0+RM34
29265       IF(2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)).LT.0.0001D0)
29266      &RM34=MAX(RM34,2D0*VINT(71)**2/MAX(1D0,VINT(21)*VINT(2)))
29267       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
29268       IF(ISTSB.EQ.0) THEN
29269         TH=VINT(45)
29270         UH=-0.5D0*SH*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
29271         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*VINT(59)**2)
29272       ELSE
29273 C...Kinematics with incoming masses tricky: now depends on how
29274 C...subprocess has been set up w.r.t. order of incoming partons.
29275         RM1=0D0
29276         IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) RM1=-VINT(3)**2/SH
29277         RM2=0D0
29278         IF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) RM2=-VINT(4)**2/SH
29279         IF(ISUB.EQ.35) THEN
29280           RM2=MIN(RM1,RM2)
29281           RM1=0D0
29282         ENDIF
29283         BE12=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
29284         TUCOM=(1D0-RM1-RM2)*(1D0-RM3-RM4)
29285         TH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM4-2D0*RM2*RM3-
29286      &  BE12*BE34*CTH)
29287         UH=-0.5D0*SH*MAX(RTHM,TUCOM-2D0*RM1*RM3-2D0*RM2*RM4+
29288      &  BE12*BE34*CTH)
29289         SQPTH=MAX(VINT(71)**2,0.25D0*SH*BE34**2*(1D0-CTH**2))
29290       ENDIF
29291       SHR=SQRT(SH)
29292       SH2=SH**2
29293       TH2=TH**2
29294       UH2=UH**2
29295  
29296 C...Choice of Q2 scale for hard process (e.g. alpha_s).
29297       IF(ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5) THEN
29298         Q2=SH
29299       ELSEIF(ISTSB.EQ.8) THEN
29300         IF(MINT(107).EQ.4) Q2=VINT(307)
29301         IF(MINT(108).EQ.4) Q2=VINT(308)
29302       ELSEIF(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9) THEN
29303         Q2IN1=0D0
29304         IF(MINT(11).EQ.22.AND.VINT(3).LT.0D0) Q2IN1=VINT(3)**2
29305         Q2IN2=0D0
29306         IF(MINT(12).EQ.22.AND.VINT(4).LT.0D0) Q2IN2=VINT(4)**2
29307         IF(MSTP(32).EQ.1) THEN
29308           Q2=2D0*SH*TH*UH/(SH**2+TH**2+UH**2)
29309         ELSEIF(MSTP(32).EQ.2) THEN
29310           Q2=SQPTH+0.5D0*(SQM3+SQM4)
29311         ELSEIF(MSTP(32).EQ.3) THEN
29312           Q2=MIN(-TH,-UH)
29313         ELSEIF(MSTP(32).EQ.4) THEN
29314           Q2=SH
29315         ELSEIF(MSTP(32).EQ.5) THEN
29316           Q2=-TH
29317         ELSEIF(MSTP(32).EQ.6) THEN
29318           XSF1=X(1)
29319           IF(ISTSB.EQ.9) XSF1=X(1)/VINT(143)
29320           XSF2=X(2)
29321           IF(ISTSB.EQ.9) XSF2=X(2)/VINT(144)
29322           Q2=(1D0+XSF1*Q2IN1/SH+XSF2*Q2IN2/SH)*
29323      &    (SQPTH+0.5D0*(SQM3+SQM4))
29324         ELSEIF(MSTP(32).EQ.7) THEN
29325           Q2=(1D0+Q2IN1/SH+Q2IN2/SH)*(SQPTH+0.5D0*(SQM3+SQM4))
29326         ELSEIF(MSTP(32).EQ.8) THEN
29327           Q2=SQPTH+0.5D0*(Q2IN1+Q2IN2+SQM3+SQM4)
29328         ELSEIF(MSTP(32).EQ.9) THEN
29329           Q2=SQPTH+Q2IN1+Q2IN2+SQM3+SQM4
29330         ELSEIF(MSTP(32).EQ.10) THEN
29331           Q2=VINT(2)
29332 C..Begin JA 040914
29333         ELSEIF(MSTP(32).EQ.11) THEN
29334           Q2=0.25*(SQM3+SQM4+2*SQRT(SQM3*SQM4))
29335         ELSEIF(MSTP(32).EQ.12) THEN
29336           Q2=PARP(193)
29337 C..End JA
29338         ELSEIF(MSTP(32).EQ.13) THEN
29339           Q2=SQPTH
29340         ENDIF
29341         IF(MINT(35).LE.2.AND.ISTSB.EQ.9) Q2=SQPTH
29342         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2=Q2+
29343      &  (PARP(82)*(VINT(1)/PARP(89))**PARP(90))**2
29344       ENDIF
29345  
29346 C...Choice of Q2 scale for parton densities.
29347       Q2SF=Q2
29348 C..Begin JA 040914
29349       IF(MSTP(32).EQ.12.AND.(MOD(ISTSB,2).EQ.0.OR.ISTSB.EQ.9)
29350      &     .OR.MSTP(39).EQ.8.AND.(ISTSB.GE.3.AND.ISTSB.LE.5))
29351      &     Q2=PARP(194)
29352 C..End JA
29353       IF(ISTSB.GE.3.AND.ISTSB.LE.5) THEN
29354         Q2SF=PMAS(23,1)**2
29355         IF(ISUB.EQ.8.OR.ISUB.EQ.76.OR.ISUB.EQ.77.OR.ISUB.EQ.124.OR.
29356      &  ISUB.EQ.174.OR.ISUB.EQ.179.OR.ISUB.EQ.351) Q2SF=PMAS(24,1)**2 
29357         IF(ISUB.EQ.352) Q2SF=PMAS(PYCOMP(9900024),1)**2
29358         IF(ISUB.EQ.121.OR.ISUB.EQ.122.OR.ISUB.EQ.181.OR.ISUB.EQ.182.OR.
29359      &  ISUB.EQ.186.OR.ISUB.EQ.187.OR.ISUB.EQ.401.OR.ISUB.EQ.402) THEN
29360           Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,2)),1)**2
29361           IF(MSTP(39).EQ.2) Q2SF=
29362      &         MAX(VINT(201)**2+VINT(202),VINT(206)**2+VINT(207))
29363           IF(MSTP(39).EQ.3) Q2SF=SH
29364           IF(MSTP(39).EQ.4) Q2SF=VINT(26)*VINT(2)
29365           IF(MSTP(39).EQ.5) Q2SF=PMAS(PYCOMP(KFPR(ISUBSV,1)),1)**2
29366 C..Begin JA 040914
29367           IF(MSTP(39).EQ.6) Q2SF=0.25*(VINT(201)+SQRT(SH))**2
29368           IF(MSTP(39).EQ.7) Q2SF=
29369      &         (VINT(201)**2+VINT(202)+VINT(206)**2+VINT(207))/2d0
29370           IF(MSTP(39).EQ.8) Q2SF=PARP(193)
29371 C..End JA
29372         ENDIF
29373       ENDIF
29374       IF(MINT(35).GE.3.AND.ISTSB.EQ.9) Q2SF=SQPTH
29375  
29376       Q2PS=Q2SF
29377       Q2SF=Q2SF*PARP(34)
29378       IF(MSTP(69).GE.1.AND.MINT(47).EQ.5) Q2SF=VINT(2)
29379       IF(MSTP(69).GE.2) Q2SF=VINT(2)
29380  
29381 C...Identify to which class(es) subprocess belongs
29382       ISMECR=0
29383       ISQCD=0
29384       ISJETS=0
29385       IF (ISUBSV.EQ.1.OR.ISUBSV.EQ.2.OR.ISUBSV.EQ.3.OR.
29386      &     ISUBSV.EQ.102.OR.ISUBSV.EQ.141.OR.ISUBSV.EQ.142.OR.
29387      &     ISUBSV.EQ.144.OR.ISUBSV.EQ.151.OR.ISUBSV.EQ.152.OR.
29388      &     ISUBSV.EQ.156.OR.ISUBSV.EQ.157) ISMECR=1
29389       IF (ISUBSV.EQ.11.OR.ISUBSV.EQ.12.OR.ISUBSV.EQ.13.OR.
29390      &     ISUBSV.EQ.28.OR.ISUBSV.EQ.53.OR.ISUBSV.EQ.68) ISQCD=1
29391       IF ((ISUBSV.EQ.81.OR.ISUBSV.EQ.82).AND.MINT(55).LE.5) ISQCD=1
29392       IF (ISUBSV.GE.381.AND.ISUBSV.LE.386) ISQCD=1
29393       IF ((ISUBSV.EQ.387.OR.ISUBSV.EQ.388).AND.MINT(55).LE.5) ISQCD=1
29394       IF (ISTSB.EQ.9) ISQCD=1
29395       IF ((ISUBSV.GE.86.AND.ISUBSV.LE.89).OR.ISUBSV.EQ.107.OR.
29396      &     (ISUBSV.GE.14.AND.ISUBSV.LE.16).OR.(ISUBSV.GE.29.AND.
29397      &     ISUBSV.LE.32).OR.(ISUBSV.GE.111.AND.ISUBSV.LE.113).OR.
29398      &     ISUBSV.EQ.115.OR.(ISUBSV.GE.183.AND.ISUBSV.LE.185).OR.
29399      &     (ISUBSV.GE.188.AND.ISUBSV.LE.190).OR.ISUBSV.EQ.161.OR.
29400      &     ISUBSV.EQ.167.OR.ISUBSV.EQ.168.OR.(ISUBSV.GE.393.AND.
29401      &     ISUBSV.LE.395).OR.(ISUBSV.GE.421.AND.ISUBSV.LE.439).OR.
29402      &     (ISUBSV.GE.461.AND.ISUBSV.LE.479)) ISJETS=1
29403 C...WBF is special case of ISJETS
29404       IF (ISUBSV.EQ.5.OR.ISUBSV.EQ.8.OR.
29405      &    (ISUBSV.GE.71.AND.ISUBSV.LE.73).OR.
29406      &    ISUBSV.EQ.76.OR.ISUBSV.EQ.77.OR.
29407      &    (ISUBSV.GE.121.AND.ISUBSV.LE.124).OR.
29408      &    ISUBSV.EQ.173.OR.ISUBSV.EQ.174.OR.
29409      &    ISUBSV.EQ.178.OR.ISUBSV.EQ.179.OR.
29410      &    ISUBSV.EQ.181.OR.ISUBSV.EQ.182.OR.
29411      &    ISUBSV.EQ.186.OR.ISUBSV.EQ.187.OR.
29412      &    ISUBSV.EQ.351.OR.ISUBSV.EQ.352) ISJETS=2
29413 C...Some processes with photons also belong here.
29414       IF (ISUBSV.EQ.10.OR.(ISUBSV.GE.18.AND.ISUBSV.LE.20).OR.
29415      &     (ISUBSV.GE.33.AND.ISUBSV.LE.36).OR.ISUBSV.EQ.54.OR.
29416      &     ISUBSV.EQ.58.OR.ISUBSV.EQ.69.OR.ISUBSV.EQ.70.OR.
29417      &     ISUBSV.EQ.80.OR.(ISUBSV.GE.83.AND.ISUBSV.LE.85).OR.
29418      &     (ISUBSV.GE.106.AND.ISUBSV.LE.110).OR.ISUBSV.EQ.114.OR.
29419      &     (ISUBSV.GE.131.AND.ISUBSV.LE.140)) ISJETS=3
29420 
29421 C...Choice of Q2 scale for parton-shower activity.
29422       IF(MSTP(22).GE.1.AND.(ISUB.EQ.10.OR.ISUB.EQ.83).AND.
29423      &(MINT(43).EQ.2.OR.MINT(43).EQ.3)) THEN
29424         XBJ=X(2)
29425         IF(MINT(43).EQ.3) XBJ=X(1)
29426         IF(MSTP(22).EQ.1) THEN
29427           Q2PS=-TH
29428         ELSEIF(MSTP(22).EQ.2) THEN
29429           Q2PS=((1D0-XBJ)/XBJ)*(-TH)
29430         ELSEIF(MSTP(22).EQ.3) THEN
29431           Q2PS=SQRT((1D0-XBJ)/XBJ)*(-TH)
29432         ELSE
29433           Q2PS=(1D0-XBJ)*MAX(1D0,-LOG(XBJ))*(-TH)
29434         ENDIF
29435       ENDIF
29436 C...For multiple interactions, start from scale defined above
29437 C...For all other QCD or "+jets"-type events, start shower from pThard.
29438       IF (ISJETS.EQ.1.OR.ISQCD.EQ.1.AND.ISTSB.NE.9) Q2PS=SQPTH
29439       IF((MSTP(68).EQ.1.OR.MSTP(68).EQ.3).AND.ISMECR.EQ.1) THEN
29440 C...Max shower scale = s for ME corrected processes.
29441 C...(pT-ordering: max pT2 is s/4)
29442         Q2PS=VINT(2)
29443         IF (MINT(35).GE.3) Q2PS=Q2PS*0.25D0
29444       ELSEIF(MSTP(68).GE.2.AND.ISQCD.EQ.0.AND.ISJETS.EQ.0) THEN
29445 C...Max shower scale = s for all non-QCD, non-"+ jet" type processes.
29446 C...(pT-ordering: max pT2 is s/4)
29447         Q2PS=VINT(2)
29448         IF (MINT(35).GE.3) Q2PS=Q2PS*0.25D0
29449       ENDIF
29450       IF(MINT(35).EQ.2.AND.ISTSB.EQ.9) Q2PS=SQPTH
29451 
29452 C...Elastic and diffractive events not associated with scales so set 0.
29453       IF(ISUBSV.GE.91.AND.ISUBSV.LE.94) THEN
29454         Q2SF=0D0
29455         Q2PS=0D0
29456       ENDIF
29457  
29458 C...Store derived kinematical quantities
29459       VINT(41)=X(1)
29460       VINT(42)=X(2)
29461       VINT(44)=SH
29462       VINT(43)=SQRT(SH)
29463       VINT(45)=TH
29464       VINT(46)=UH
29465       IF(ISTSB.NE.8) VINT(48)=SQPTH
29466       IF(ISTSB.NE.8) VINT(47)=SQRT(SQPTH)
29467       VINT(50)=TAUP*VINT(2)
29468       VINT(49)=SQRT(MAX(0D0,VINT(50)))
29469       VINT(52)=Q2
29470       VINT(51)=SQRT(Q2)
29471       VINT(54)=Q2SF
29472       VINT(53)=SQRT(Q2SF)
29473       VINT(56)=Q2PS
29474       VINT(55)=SQRT(Q2PS)
29475  
29476 C...Set starting scale for multiple interactions
29477       IF (ISUBSV.EQ.95) THEN
29478         XT2GMX=0D0
29479       ELSEIF(MSTP(86).EQ.3.OR.(MSTP(86).EQ.2.AND.ISUBSV.NE.11.AND.
29480      &      ISUBSV.NE.12.AND.ISUBSV.NE.13.AND.ISUBSV.NE.28.AND.
29481      &      ISUBSV.NE.53.AND.ISUBSV.NE.68.AND.ISUBSV.NE.95.AND.
29482      &      ISUBSV.NE.96)) THEN
29483 C...All accessible phase space allowed.
29484         XT2GMX=(1D0-VINT(41))*(1D0-VINT(42))
29485       ELSE
29486 C...Scale of hard process sets limit.
29487 C...2 -> 1. Limit is tau = x1*x2.
29488 C...2 -> 2. Limit is XT2 for hard process + FS masses.
29489 C...2 -> n > 2. Limit is tau' = tau of outer process.
29490         XT2GMX=VINT(25)
29491         IF(ISTSB.EQ.1) XT2GMX=VINT(21)
29492         IF(ISTSB.EQ.2)
29493      &      XT2GMX=(4D0*VINT(48)+2D0*VINT(63)+2D0*VINT(64))/VINT(2)
29494         IF(ISTSB.GE.3.AND.ISTSB.LE.5) XT2GMX=VINT(26)
29495       ENDIF
29496       VINT(62)=0.25D0*XT2GMX*VINT(2)
29497       VINT(61)=SQRT(MAX(0D0,VINT(62)))
29498  
29499 C...Calculate parton distributions
29500       IF(ISTSB.LE.0) GOTO 160
29501       IF(MINT(47).GE.2) THEN
29502         DO 110 I=3-MIN(2,MINT(45)),MIN(2,MINT(46))
29503           XSF=X(I)
29504           IF(ISTSB.EQ.9) XSF=X(I)/VINT(142+I)
29505           IF(ISUB.EQ.99) THEN
29506             IF(MINT(140+I).EQ.0) THEN
29507               XSF=VINT(309-I)/(VINT(2)+VINT(309-I)-VINT(I+2)**2)
29508             ELSE
29509               XSF=VINT(309-I)/(VINT(2)+VINT(307)+VINT(308))
29510             ENDIF
29511             VINT(40+I)=XSF
29512             Q2SF=VINT(309-I)
29513           ENDIF
29514           MINT(105)=MINT(102+I)
29515           MINT(109)=MINT(106+I)
29516           VINT(120)=VINT(2+I)
29517           IF(MSTP(57).LE.1) THEN
29518             CALL PYPDFU(MINT(10+I),XSF,Q2SF,XPQ)
29519           ELSE
29520             CALL PYPDFL(MINT(10+I),XSF,Q2SF,XPQ)
29521           ENDIF
29522 C...Safety margin against heavy flavour very close to threshold,
29523 C...e.g. caused by mismatch in c and b masses.
29524           IF(Q2SF.LT.1.1*PMAS(4,1)**2) THEN
29525             XPQ(4)=0D0
29526             XPQ(-4)=0D0
29527           ENDIF
29528           IF(Q2SF.LT.1.1*PMAS(5,1)**2) THEN
29529             XPQ(5)=0D0
29530             XPQ(-5)=0D0
29531           ENDIF
29532           DO 100 KFL=-25,25
29533             XSFX(I,KFL)=XPQ(KFL)
29534   100     CONTINUE
29535   110   CONTINUE
29536       ENDIF
29537  
29538 C...Calculate alpha_em, alpha_strong and K-factor
29539       XW=PARU(102)
29540       XWV=XW
29541       IF(MSTP(8).GE.2.OR.(ISUB.GE.71.AND.ISUB.LE.77)) XW=
29542      &1D0-(PMAS(24,1)/PMAS(23,1))**2
29543       XW1=1D0-XW
29544       XWC=1D0/(16D0*XW*XW1)
29545       AEM=PYALEM(Q2)
29546       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
29547       IF(MSTP(33).NE.3) AS=PYALPS(PARP(34)*Q2)
29548       FACK=1D0
29549       FACA=1D0
29550       IF(MSTP(33).EQ.1) THEN
29551         FACK=PARP(31)
29552       ELSEIF(MSTP(33).EQ.2) THEN
29553         FACK=PARP(31)
29554         FACA=PARP(32)/PARP(31)
29555       ELSEIF(MSTP(33).EQ.3) THEN
29556         Q2AS=PARP(33)*Q2
29557         IF(ISTSB.EQ.9.AND.MSTP(82).GE.2) Q2AS=Q2AS+
29558      &  PARU(112)*PARP(82)*(VINT(1)/PARP(89))**PARP(90)
29559         AS=PYALPS(Q2AS)
29560       ENDIF
29561       VINT(138)=1D0
29562       VINT(57)=AEM
29563       VINT(58)=AS
29564  
29565 C...Set flags for allowed reacting partons/leptons
29566       DO 140 I=1,2
29567         DO 120 J=-25,25
29568           KFAC(I,J)=0
29569   120   CONTINUE
29570         IF(MINT(44+I).EQ.1) THEN
29571           KFAC(I,MINT(10+I))=1
29572         ELSEIF(MINT(40+I).EQ.1.AND.MSTP(12).EQ.0) THEN
29573           KFAC(I,MINT(10+I))=1
29574           KFAC(I,22)=1
29575           KFAC(I,24)=1
29576           KFAC(I,-24)=1
29577         ELSE
29578           DO 130 J=-25,25
29579             KFAC(I,J)=KFIN(I,J)
29580             IF(IABS(J).GT.MSTP(58).AND.IABS(J).LE.10) KFAC(I,J)=0
29581             IF(XSFX(I,J).LT.1D-10) KFAC(I,J)=0
29582   130     CONTINUE
29583         ENDIF
29584   140 CONTINUE
29585  
29586 C...Lower and upper limit for fermion flavour loops
29587       MMIN1=0
29588       MMAX1=0
29589       MMIN2=0
29590       MMAX2=0
29591       DO 150 J=-20,20
29592         IF(KFAC(1,-J).EQ.1) MMIN1=-J
29593         IF(KFAC(1,J).EQ.1) MMAX1=J
29594         IF(KFAC(2,-J).EQ.1) MMIN2=-J
29595         IF(KFAC(2,J).EQ.1) MMAX2=J
29596   150 CONTINUE
29597       MMINA=MIN(MMIN1,MMIN2)
29598       MMAXA=MAX(MMAX1,MMAX2)
29599  
29600 C...Common resonance mass and width combinations
29601       SQMZ=PMAS(23,1)**2
29602       SQMW=PMAS(24,1)**2
29603       GMMZ=PMAS(23,1)*PMAS(23,2)
29604       GMMW=PMAS(24,1)*PMAS(24,2)
29605  
29606 C...Polarization factors...implemented so far for W+W-(25)
29607       POLR=(1D0+PARJ(132))*(1D0-PARJ(131))
29608       POLL=(1D0-PARJ(132))*(1D0+PARJ(131))
29609       POLRR=(1D0+PARJ(132))*(1D0+PARJ(131))
29610       POLLL=(1D0-PARJ(132))*(1D0-PARJ(131))
29611  
29612 C...Phase space integral in tau
29613       COMFAC=PARU(1)*PARU(5)/VINT(2)
29614       IF(MINT(41).EQ.2.AND.MINT(42).EQ.2) COMFAC=COMFAC*FACK
29615       IF((MINT(47).GE.2.OR.(ISTSB.GE.3.AND.ISTSB.LE.5)).AND.
29616      &ISTSB.NE.8.AND.ISTSB.NE.9) THEN
29617         ATAU1=LOG(TAUMAX/TAUMIN)
29618         ATAU2=(TAUMAX-TAUMIN)/(TAUMAX*TAUMIN)
29619         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/TAU
29620         IF(MINT(72).GE.1) THEN
29621           TAUR1=VINT(73)
29622           GAMR1=VINT(74)
29623           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR1)/(TAUMAX+TAUR1))
29624           ATAU3=ATAUD/TAUR1
29625           IF(ATAUD.GT.1D-10) H1=H1+
29626      &    (ATAU1/ATAU3)*COEF(ISUBSV,3)/(TAU+TAUR1)
29627           ATAUD=ATAN((TAUMAX-TAUR1)/GAMR1)-ATAN((TAUMIN-TAUR1)/GAMR1)
29628           ATAU4=ATAUD/GAMR1
29629           IF(ATAUD.GT.1D-10) H1=H1+
29630      &    (ATAU1/ATAU4)*COEF(ISUBSV,4)*TAU/((TAU-TAUR1)**2+GAMR1**2)
29631         ENDIF
29632         IF(MINT(72).GE.2) THEN
29633           TAUR2=VINT(75)
29634           GAMR2=VINT(76)
29635           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR2)/(TAUMAX+TAUR2))
29636           ATAU5=ATAUD/TAUR2
29637           IF(ATAUD.GT.1D-10) H1=H1+
29638      &    (ATAU1/ATAU5)*COEF(ISUBSV,5)/(TAU+TAUR2)
29639           ATAUD=ATAN((TAUMAX-TAUR2)/GAMR2)-ATAN((TAUMIN-TAUR2)/GAMR2)
29640           ATAU6=ATAUD/GAMR2
29641           IF(ATAUD.GT.1D-10) H1=H1+
29642      &    (ATAU1/ATAU6)*COEF(ISUBSV,6)*TAU/((TAU-TAUR2)**2+GAMR2**2)
29643         ENDIF
29644         IF(MINT(72).EQ.3) THEN
29645           TAUR3=VINT(77)
29646           GAMR3=VINT(78)
29647           ATAUD=LOG(TAUMAX/TAUMIN*(TAUMIN+TAUR3)/(TAUMAX+TAUR3))
29648           ATAU50=ATAUD/TAUR3
29649           IF(ATAUD.GT.1D-10) H1=H1+
29650      &    (ATAU1/ATAU50)*COEFX(ISUBSV,1)/(TAU+TAUR3)
29651           ATAUD=ATAN((TAUMAX-TAUR3)/GAMR3)-ATAN((TAUMIN-TAUR3)/GAMR3)
29652           ATAU60=ATAUD/GAMR3
29653           IF(ATAUD.GT.1D-10) H1=H1+
29654      &    (ATAU1/ATAU60)*COEFX(ISUBSV,2)*TAU/((TAU-TAUR3)**2+GAMR3**2)
29655         ENDIF
29656         IF(MINT(47).EQ.5.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
29657           ATAU7=LOG(MAX(2D-10,1D0-TAUMIN)/MAX(2D-10,1D0-TAUMAX))
29658           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
29659      &    MAX(2D-10,1D0-TAU)
29660         ELSEIF(MINT(47).GE.6.AND.(ISTSB.LE.2.OR.ISTSB.GE.5)) THEN
29661           ATAU7=LOG(MAX(1D-10,1D0-TAUMIN)/MAX(1D-10,1D0-TAUMAX))
29662           IF(ATAU7.GT.1D-10) H1=H1+(ATAU1/ATAU7)*COEF(ISUBSV,7)*TAU/
29663      &    MAX(1D-10,1D0-TAU)
29664         ENDIF
29665         COMFAC=COMFAC*ATAU1/(TAU*H1)
29666       ENDIF
29667  
29668 C...Phase space integral in y*
29669       IF((MINT(47).EQ.4.OR.MINT(47).EQ.5).AND.ISTSB.NE.8.AND.ISTSB.NE.9)
29670      &THEN
29671         AYST0=YSTMAX-YSTMIN
29672         IF(AYST0.LT.1D-10) THEN
29673           COMFAC=0D0
29674         ELSE
29675           AYST1=0.5D0*(YSTMAX-YSTMIN)**2
29676           AYST2=AYST1
29677           AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
29678           H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
29679      &    (AYST0/AYST2)*COEF(ISUBSV,9)*(YSTMAX-YST)+
29680      &    (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
29681           IF(MINT(45).EQ.3) THEN
29682             YST0=-0.5D0*LOG(TAUE)
29683             AYST4=LOG(MAX(1D-10,EXP(YST0-YSTMIN)-1D0)/
29684      &      MAX(1D-10,EXP(YST0-YSTMAX)-1D0))
29685             IF(AYST4.GT.1D-10) H2=H2+(AYST0/AYST4)*COEF(ISUBSV,11)/
29686      &      MAX(1D-10,1D0-EXP(YST-YST0))
29687           ENDIF
29688           IF(MINT(46).EQ.3) THEN
29689             YST0=-0.5D0*LOG(TAUE)
29690             AYST5=LOG(MAX(1D-10,EXP(YST0+YSTMAX)-1D0)/
29691      &      MAX(1D-10,EXP(YST0+YSTMIN)-1D0))
29692             IF(AYST5.GT.1D-10) H2=H2+(AYST0/AYST5)*COEF(ISUBSV,12)/
29693      &      MAX(1D-10,1D0-EXP(-YST-YST0))
29694           ENDIF
29695           COMFAC=COMFAC*AYST0/H2
29696         ENDIF
29697       ENDIF
29698  
29699 C...2 -> 1 processes: reduction in angular part of phase space integral
29700 C...for case of decaying resonance
29701       ACTH0=CTNMAX-CTNMIN+CTPMAX-CTPMIN
29702       IF((ISTSB.EQ.1.OR.ISTSB.EQ.3.OR.ISTSB.EQ.5)) THEN
29703         IF(MDCY(PYCOMP(KFPR(ISUBSV,1)),1).EQ.1) THEN
29704           IF(KFPR(ISUB,1).EQ.25.OR.KFPR(ISUB,1).EQ.37.OR.
29705      &    KFPR(ISUB,1).EQ.39) THEN
29706             COMFAC=COMFAC*0.5D0*ACTH0
29707           ELSE
29708             COMFAC=COMFAC*0.125D0*(3D0*ACTH0+CTNMAX**3-CTNMIN**3+
29709      &      CTPMAX**3-CTPMIN**3)
29710           ENDIF
29711         ENDIF
29712  
29713 C...2 -> 2 processes: angular part of phase space integral
29714       ELSEIF(ISTSB.EQ.2.OR.ISTSB.EQ.4) THEN
29715         ACTH1=LOG((MAX(RM34,RSQM-CTNMIN)*MAX(RM34,RSQM-CTPMIN))/
29716      &  (MAX(RM34,RSQM-CTNMAX)*MAX(RM34,RSQM-CTPMAX)))
29717         ACTH2=LOG((MAX(RM34,RSQM+CTNMAX)*MAX(RM34,RSQM+CTPMAX))/
29718      &  (MAX(RM34,RSQM+CTNMIN)*MAX(RM34,RSQM+CTPMIN)))
29719         ACTH3=1D0/MAX(RM34,RSQM-CTNMAX)-1D0/MAX(RM34,RSQM-CTNMIN)+
29720      &  1D0/MAX(RM34,RSQM-CTPMAX)-1D0/MAX(RM34,RSQM-CTPMIN)
29721         ACTH4=1D0/MAX(RM34,RSQM+CTNMIN)-1D0/MAX(RM34,RSQM+CTNMAX)+
29722      &  1D0/MAX(RM34,RSQM+CTPMIN)-1D0/MAX(RM34,RSQM+CTPMAX)
29723         H3=COEF(ISUBSV,13)+
29724      &  (ACTH0/ACTH1)*COEF(ISUBSV,14)/MAX(RM34,RSQM-CTH)+
29725      &  (ACTH0/ACTH2)*COEF(ISUBSV,15)/MAX(RM34,RSQM+CTH)+
29726      &  (ACTH0/ACTH3)*COEF(ISUBSV,16)/MAX(RM34,RSQM-CTH)**2+
29727      &  (ACTH0/ACTH4)*COEF(ISUBSV,17)/MAX(RM34,RSQM+CTH)**2
29728         COMFAC=COMFAC*ACTH0*0.5D0*BE34/H3
29729  
29730 C...2 -> 2 processes: take into account final state Breit-Wigners
29731         COMFAC=COMFAC*VINT(80)
29732       ENDIF
29733  
29734 C...2 -> 3, 4 processes: phace space integral in tau'
29735       IF(MINT(47).GE.2.AND.ISTSB.GE.3.AND.ISTSB.LE.5) THEN
29736         ATAUP1=LOG(TAUPMX/TAUPMN)
29737         ATAUP2=((1D0-TAU/TAUPMX)**4-(1D0-TAU/TAUPMN)**4)/(4D0*TAU)
29738         H4=COEF(ISUBSV,18)+
29739      &  (ATAUP1/ATAUP2)*COEF(ISUBSV,19)*(1D0-TAU/TAUP)**3/TAUP
29740         IF(MINT(47).EQ.5) THEN
29741           ATAUP3=LOG(MAX(2D-10,1D0-TAUPMN)/MAX(2D-10,1D0-TAUPMX))
29742           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(2D-10,1D0-TAUP)
29743         ELSEIF(MINT(47).GE.6) THEN
29744           ATAUP3=LOG(MAX(1D-10,1D0-TAUPMN)/MAX(1D-10,1D0-TAUPMX))
29745           H4=H4+(ATAUP1/ATAUP3)*COEF(ISUBSV,20)*TAUP/MAX(1D-10,1D0-TAUP)
29746         ENDIF
29747         COMFAC=COMFAC*ATAUP1/H4
29748       ENDIF
29749  
29750 C...2 -> 3, 4 processes: effective W/Z parton distributions
29751       IF(ISTSB.EQ.3.OR.ISTSB.EQ.4) THEN
29752         IF(1D0-TAU/TAUP.GT.1D-4) THEN
29753           FZW=(1D0+TAU/TAUP)*LOG(TAUP/TAU)-2D0*(1D0-TAU/TAUP)
29754         ELSE
29755           FZW=1D0/6D0*(1D0-TAU/TAUP)**3*TAU/TAUP
29756         ENDIF
29757         COMFAC=COMFAC*FZW
29758       ENDIF
29759  
29760 C...2 -> 3 processes: phase space integrals for pT1, pT2, y3, mirror
29761       IF(ISTSB.EQ.5) THEN
29762         COMFAC=COMFAC*VINT(205)*VINT(210)*VINT(212)*VINT(214)/
29763      &  (128D0*PARU(1)**4*VINT(220))*(TAU**2/TAUP)
29764       ENDIF
29765  
29766 C...Phase space integral for low-pT and multiple interactions
29767       IF(ISTSB.EQ.9) THEN
29768         COMFAC=PARU(1)*PARU(5)*FACK*0.5D0*VINT(2)/SH2
29769         ATAU1=LOG(2D0*(1D0+SQRT(1D0-XT2))/XT2-1D0)
29770         ATAU2=2D0*ATAN(1D0/XT2-1D0)/SQRT(XT2)
29771         H1=COEF(ISUBSV,1)+(ATAU1/ATAU2)*COEF(ISUBSV,2)/SQRT(TAU)
29772         COMFAC=COMFAC*ATAU1/H1
29773         AYST0=YSTMAX-YSTMIN
29774         AYST1=0.5D0*(YSTMAX-YSTMIN)**2
29775         AYST3=2D0*(ATAN(EXP(YSTMAX))-ATAN(EXP(YSTMIN)))
29776         H2=(AYST0/AYST1)*COEF(ISUBSV,8)*(YST-YSTMIN)+
29777      &  (AYST0/AYST1)*COEF(ISUBSV,9)*(YSTMAX-YST)+
29778      &  (AYST0/AYST3)*COEF(ISUBSV,10)/COSH(YST)
29779         COMFAC=COMFAC*AYST0/H2
29780         IF(MSTP(82).LE.1) COMFAC=COMFAC*XT2**2*(1D0/VINT(149)-1D0)
29781 C...For MSTP(82)>=2 an additional factor (xT2/(xT2+VINT(149))**2 is
29782 C...introduced to make cross-section finite for xT2 -> 0
29783         IF(MSTP(82).GE.2) COMFAC=COMFAC*XT2**2/(VINT(149)*
29784      &  (1D0+VINT(149)))
29785       ENDIF
29786  
29787 C...Real gamma + gamma: include factor 2 when different nature
29788   160 IF(MINT(11).EQ.22.AND.MINT(12).EQ.22.AND.MINT(123).GE.4.AND.
29789      &MSTP(14).LE.10) COMFAC=2D0*COMFAC
29790  
29791 C...Extra factors to include the effects of
29792 C...longitudinal resolved photons (but not direct or DIS ones).
29793       DO 170 ISDE=1,2
29794         IF(MINT(10+ISDE).EQ.22.AND.MINT(106+ISDE).GE.1.AND.
29795      &  MINT(106+ISDE).LE.3) THEN
29796           VINT(314+ISDE)=1D0
29797           XY=PARP(166+ISDE)
29798           IF(MSTP(16).EQ.0) THEN
29799             IF(VINT(304+ISDE).GT.0D0.AND.VINT(304+ISDE).LT.1D0)
29800      &      XY=VINT(304+ISDE)
29801           ELSE
29802             IF(VINT(308+ISDE).GT.0D0.AND.VINT(308+ISDE).LT.1D0)
29803      &      XY=VINT(308+ISDE)
29804           ENDIF
29805           Q2GA=VINT(306+ISDE)
29806           IF(MSTP(17).GT.0.AND.XY.GT.0D0.AND.XY.LT.1D0.AND.
29807      &    Q2GA.GT.0D0) THEN
29808             REDUCE=0D0
29809             IF(MSTP(17).EQ.1) THEN
29810               REDUCE=4D0*Q2*Q2GA/(Q2+Q2GA)**2
29811             ELSEIF(MSTP(17).EQ.2) THEN
29812               REDUCE=4D0*Q2GA/(Q2+Q2GA)
29813             ELSEIF(MSTP(17).EQ.3) THEN
29814               PMVIRT=PMAS(PYCOMP(113),1)
29815               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29816             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.1) THEN
29817               PMVIRT=PMAS(PYCOMP(113),1)
29818               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
29819             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.2) THEN
29820               PMVIRT=PMAS(PYCOMP(113),1)
29821               REDUCE=4D0*PMVIRT**2*Q2GA/(PMVIRT**2+Q2GA)**2
29822             ELSEIF(MSTP(17).EQ.4.AND.MINT(106+ISDE).EQ.3) THEN
29823               PMVSMN=4D0*PARP(15)**2
29824               PMVSMX=4D0*VINT(154)**2
29825               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
29826               REDLON=(3D0*PMVSMN+Q2GA)/(PMVSMN+Q2GA)**3-
29827      &        (3D0*PMVSMX+Q2GA)/(PMVSMX+Q2GA)**3
29828               REDUCE=4D0*(Q2GA/6D0)*REDLON/REDTRA
29829             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.1) THEN
29830               PMVIRT=PMAS(PYCOMP(113),1)
29831               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29832             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.2) THEN
29833               PMVIRT=PMAS(PYCOMP(113),1)
29834               REDUCE=4D0*Q2GA/(PMVIRT**2+Q2GA)
29835             ELSEIF(MSTP(17).EQ.5.AND.MINT(106+ISDE).EQ.3) THEN
29836               PMVSMN=4D0*PARP(15)**2
29837               PMVSMX=4D0*VINT(154)**2
29838               REDTRA=1D0/(PMVSMN+Q2GA)-1D0/(PMVSMX+Q2GA)
29839               REDLON=1D0/(PMVSMN+Q2GA)**2-1D0/(PMVSMX+Q2GA)**2
29840               REDUCE=4D0*(Q2GA/2D0)*REDLON/REDTRA
29841             ENDIF
29842             BEAMAS=PYMASS(11)
29843             IF(VINT(302+ISDE).GT.0D0) BEAMAS=VINT(302+ISDE)
29844             FRACLT=1D0/(1D0+XY**2/2D0/(1D0-XY)*
29845      &      (1D0-2D0*BEAMAS**2/Q2GA))
29846             VINT(314+ISDE)=1D0+PARP(165)*REDUCE*FRACLT
29847           ENDIF
29848         ELSE
29849           VINT(314+ISDE)=1D0
29850         ENDIF
29851         COMFAC=COMFAC*VINT(314+ISDE)
29852   170 CONTINUE
29853  
29854 C...Evaluate cross sections - done in separate routines by kind
29855 C...of physics, to keep PYSIGH of sensible size.
29856       IF(MAP.EQ.1) THEN
29857 C...Standard QCD (including photons).
29858         CALL PYSGQC(NCHN,SIGS)
29859       ELSEIF(MAP.EQ.2) THEN
29860 C...Heavy flavours.
29861         CALL PYSGHF(NCHN,SIGS)
29862       ELSEIF(MAP.EQ.3) THEN
29863 C...W/Z.
29864         CALL PYSGWZ(NCHN,SIGS)
29865       ELSEIF(MAP.EQ.4) THEN
29866 C...Higgs (2 doublets; including longitudinal W/Z scattering).
29867         CALL PYSGHG(NCHN,SIGS)
29868       ELSEIF(MAP.EQ.5) THEN
29869 C...SUSY.
29870         CALL PYSGSU(NCHN,SIGS)
29871       ELSEIF(MAP.EQ.6) THEN
29872 C...Technicolor.
29873         CALL PYSGTC(NCHN,SIGS)
29874       ELSEIF(MAP.EQ.7) THEN
29875 C...Exotics (Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*).
29876         CALL PYSGEX(NCHN,SIGS)
29877       ELSEIF(MAP.EQ.8) THEN
29878 C... Universal Extra Dimensions
29879          CALL PYXUED(NCHN,SIGS)
29880       ENDIF
29881  
29882 C...Multiply with parton distributions
29883       IF(ISUB.LE.90.OR.ISUB.GE.96) THEN
29884         DO 180 ICHN=1,NCHN
29885           IF(MINT(45).GE.2) THEN
29886             KFL1=ISIG(ICHN,1)
29887             SIGH(ICHN)=SIGH(ICHN)*XSFX(1,KFL1)
29888           ENDIF
29889           IF(MINT(46).GE.2) THEN
29890             KFL2=ISIG(ICHN,2)
29891             SIGH(ICHN)=SIGH(ICHN)*XSFX(2,KFL2)
29892           ENDIF
29893           SIGS=SIGS+SIGH(ICHN)
29894   180   CONTINUE
29895       ENDIF
29896  
29897       RETURN
29898       END
29899  
29900 C*********************************************************************
29901  
29902 C...PYSGQC
29903 C...Subprocess cross sections for QCD processes,
29904 C...including photons.
29905 C...Auxiliary to PYSIGH.
29906  
29907       SUBROUTINE PYSGQC(NCHN,SIGS)
29908  
29909 C...Double precision and integer declarations
29910       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
29911       IMPLICIT INTEGER(I-N)
29912       INTEGER PYK,PYCHGE,PYCOMP
29913 C...Parameter statement to help give large particle numbers.
29914       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
29915      &KEXCIT=4000000,KDIMEN=5000000)
29916 C...Commonblocks
29917       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
29918       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
29919       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
29920       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
29921       COMMON/PYINT1/MINT(400),VINT(400)
29922       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
29923       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
29924       COMMON/PYINT4/MWID(500),WIDS(500,5)
29925       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
29926       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
29927      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
29928      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
29929      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
29930       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
29931      &/PYINT3/,/PYINT4/,/PYINT7/,/PYSGCM/
29932 C...Local arrays
29933       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
29934  
29935 C...Differential cross section expressions.
29936  
29937       IF(ISUB.LE.20) THEN
29938         IF(ISUB.EQ.10) THEN
29939 C...f + f' -> f + f' (gamma/Z/W exchange)
29940           FACGGF=COMFAC*AEM**2*2D0*(SH2+UH2)/TH2
29941           FACGZF=COMFAC*AEM**2*XWC*4D0*SH2/(TH*(TH-SQMZ))
29942           FACZZF=COMFAC*(AEM*XWC)**2*2D0*SH2/(TH-SQMZ)**2
29943           FACWWF=COMFAC*(0.5D0*AEM/XW)**2*SH2/(TH-SQMW)**2
29944           DO 110 I=MMIN1,MMAX1
29945             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 110
29946             IA=IABS(I)
29947             DO 100 J=MMIN2,MMAX2
29948               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 100
29949               JA=IABS(J)
29950 C...Electroweak couplings
29951               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
29952               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
29953               VI=AI-4D0*EI*XWV
29954               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
29955               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
29956               VJ=AJ-4D0*EJ*XWV
29957               EPSIJ=ISIGN(1,I*J)
29958 C...gamma/Z exchange, only gamma exchange, or only Z exchange
29959               IF(MSTP(21).GE.1.AND.MSTP(21).LE.4) THEN
29960                 IF(MSTP(21).EQ.1.OR.MSTP(21).EQ.4) THEN
29961                   FACNCF=FACGGF*EI**2*EJ**2+FACGZF*EI*EJ*
29962      &            (VI*VJ*(1D0+UH2/SH2)+AI*AJ*EPSIJ*(1D0-UH2/SH2))+
29963      &            FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*(1D0+UH2/SH2)+
29964      &            4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
29965                 ELSEIF(MSTP(21).EQ.2) THEN
29966                   FACNCF=FACGGF*EI**2*EJ**2
29967                 ELSE
29968                   FACNCF=FACZZF*((VI**2+AI**2)*(VJ**2+AJ**2)*
29969      &            (1D0+UH2/SH2)+4D0*VI*VJ*AI*AJ*EPSIJ*(1D0-UH2/SH2))
29970                 ENDIF
29971 C...Extrafactor 2 for only one incoming neutrino spin state.
29972                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACNCF=2D0*FACNCF
29973                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACNCF=2D0*FACNCF
29974                 NCHN=NCHN+1
29975                 ISIG(NCHN,1)=I
29976                 ISIG(NCHN,2)=J
29977                 ISIG(NCHN,3)=1
29978                 SIGH(NCHN)=FACNCF
29979               ENDIF
29980 C...W exchange
29981               IF((MSTP(21).EQ.1.OR.MSTP(21).EQ.5).AND.AI*AJ.LT.0D0) THEN
29982                 FACCCF=FACWWF*VINT(180+I)*VINT(180+J)
29983                 IF(EPSIJ.LT.0D0) FACCCF=FACCCF*UH2/SH2
29984                 IF(IA.GT.10.AND.MOD(IA,2).EQ.0) FACCCF=2D0*FACCCF
29985                 IF(JA.GT.10.AND.MOD(JA,2).EQ.0) FACCCF=2D0*FACCCF
29986                 NCHN=NCHN+1
29987                 ISIG(NCHN,1)=I
29988                 ISIG(NCHN,2)=J
29989                 ISIG(NCHN,3)=2
29990                 SIGH(NCHN)=FACCCF
29991               ENDIF
29992   100       CONTINUE
29993   110     CONTINUE
29994  
29995         ELSEIF(ISUB.EQ.11) THEN
29996 C...f + f' -> f + f' (g exchange)
29997           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
29998           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
29999      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
30000           FACQQ2=COMFAC*AS**2*4D0/9D0*((SH2+TH2)/UH2-
30001      &    MSTP(34)*2D0/3D0*SH2/(TH*UH))
30002           DO 130 I=MMIN1,MMAX1
30003             IA=IABS(I)
30004             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 130
30005             DO 120 J=MMIN2,MMAX2
30006               JA=IABS(J)
30007               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 120
30008               NCHN=NCHN+1
30009               ISIG(NCHN,1)=I
30010               ISIG(NCHN,2)=J
30011               ISIG(NCHN,3)=1
30012               SIGH(NCHN)=FACQQ1
30013               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
30014               IF(I.EQ.J) THEN
30015                 SIGH(NCHN)=0.5D0*SIGH(NCHN)
30016                 NCHN=NCHN+1
30017                 ISIG(NCHN,1)=I
30018                 ISIG(NCHN,2)=J
30019                 ISIG(NCHN,3)=2
30020                 SIGH(NCHN)=0.5D0*FACQQ2
30021               ENDIF
30022   120       CONTINUE
30023   130     CONTINUE
30024  
30025         ELSEIF(ISUB.EQ.12) THEN
30026 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
30027           CALL PYWIDT(21,SH,WDTP,WDTE)
30028           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
30029      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
30030           DO 140 I=MMINA,MMAXA
30031             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30032      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
30033             NCHN=NCHN+1
30034             ISIG(NCHN,1)=I
30035             ISIG(NCHN,2)=-I
30036             ISIG(NCHN,3)=1
30037             SIGH(NCHN)=FACQQB
30038   140     CONTINUE
30039  
30040         ELSEIF(ISUB.EQ.13) THEN
30041 C...f + fbar -> g + g (q + qbar -> g + g only)
30042           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
30043      &    UH2/SH2)
30044           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
30045      &    TH2/SH2)
30046           DO 150 I=MMINA,MMAXA
30047             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30048      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
30049             NCHN=NCHN+1
30050             ISIG(NCHN,1)=I
30051             ISIG(NCHN,2)=-I
30052             ISIG(NCHN,3)=1
30053             SIGH(NCHN)=0.5D0*FACGG1
30054             NCHN=NCHN+1
30055             ISIG(NCHN,1)=I
30056             ISIG(NCHN,2)=-I
30057             ISIG(NCHN,3)=2
30058             SIGH(NCHN)=0.5D0*FACGG2
30059   150     CONTINUE
30060  
30061         ELSEIF(ISUB.EQ.14) THEN
30062 C...f + fbar -> g + gamma (q + qbar -> g + gamma only)
30063           FACGG=COMFAC*AS*AEM*8D0/9D0*(TH2+UH2)/(TH*UH)
30064           DO 160 I=MMINA,MMAXA
30065             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30066      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
30067             EI=KCHG(IABS(I),1)/3D0
30068             NCHN=NCHN+1
30069             ISIG(NCHN,1)=I
30070             ISIG(NCHN,2)=-I
30071             ISIG(NCHN,3)=1
30072             SIGH(NCHN)=FACGG*EI**2
30073   160     CONTINUE
30074  
30075         ELSEIF(ISUB.EQ.18) THEN
30076 C...f + fbar -> gamma + gamma
30077           FACGG=COMFAC*AEM**2*2D0*(TH2+UH2)/(TH*UH)
30078           DO 170 I=MMINA,MMAXA
30079             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 170
30080             EI=KCHG(IABS(I),1)/3D0
30081             FCOI=1D0
30082             IF(IABS(I).LE.10) FCOI=FACA/3D0
30083             NCHN=NCHN+1
30084             ISIG(NCHN,1)=I
30085             ISIG(NCHN,2)=-I
30086             ISIG(NCHN,3)=1
30087             SIGH(NCHN)=0.5D0*FACGG*FCOI*EI**4
30088   170     CONTINUE
30089         ENDIF
30090  
30091       ELSEIF(ISUB.LE.40) THEN
30092         IF(ISUB.EQ.28) THEN
30093 C...f + g -> f + g (q + g -> q + g only)
30094           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
30095      &    UH/SH)*FACA
30096           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
30097      &    SH/UH)
30098           DO 190 I=MMINA,MMAXA
30099             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 190
30100             DO 180 ISDE=1,2
30101               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
30102               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
30103               NCHN=NCHN+1
30104               ISIG(NCHN,ISDE)=I
30105               ISIG(NCHN,3-ISDE)=21
30106               ISIG(NCHN,3)=1
30107               SIGH(NCHN)=FACQG1
30108               NCHN=NCHN+1
30109               ISIG(NCHN,ISDE)=I
30110               ISIG(NCHN,3-ISDE)=21
30111               ISIG(NCHN,3)=2
30112               SIGH(NCHN)=FACQG2
30113   180       CONTINUE
30114   190     CONTINUE
30115  
30116         ELSEIF(ISUB.EQ.29) THEN
30117 C...f + g -> f + gamma (q + g -> q + gamma only)
30118           FGQ=COMFAC*FACA*AS*AEM*1D0/3D0*(SH2+UH2)/(-SH*UH)
30119           DO 210 I=MMINA,MMAXA
30120             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 210
30121             EI=KCHG(IABS(I),1)/3D0
30122             FACGQ=FGQ*EI**2
30123             DO 200 ISDE=1,2
30124               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 200
30125               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 200
30126               NCHN=NCHN+1
30127               ISIG(NCHN,ISDE)=I
30128               ISIG(NCHN,3-ISDE)=21
30129               ISIG(NCHN,3)=1
30130               SIGH(NCHN)=FACGQ
30131   200       CONTINUE
30132   210     CONTINUE
30133  
30134         ELSEIF(ISUB.EQ.33) THEN
30135 C...f + gamma -> f + g (q + gamma -> q + g only)
30136           FGQ=COMFAC*AS*AEM*8D0/3D0*(SH2+UH2)/(-SH*UH)
30137           DO 230 I=MMINA,MMAXA
30138             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 230
30139             EI=KCHG(IABS(I),1)/3D0
30140             FACGQ=FGQ*EI**2
30141             DO 220 ISDE=1,2
30142               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 220
30143               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 220
30144               NCHN=NCHN+1
30145               ISIG(NCHN,ISDE)=I
30146               ISIG(NCHN,3-ISDE)=22
30147               ISIG(NCHN,3)=1
30148               SIGH(NCHN)=FACGQ
30149   220       CONTINUE
30150   230     CONTINUE
30151  
30152         ELSEIF(ISUB.EQ.34) THEN
30153 C...f + gamma -> f + gamma
30154           FGQ=COMFAC*AEM**2*2D0*(SH2+UH2)/(-SH*UH)
30155           DO 250 I=MMINA,MMAXA
30156             IF(I.EQ.0) GOTO 250
30157             EI=KCHG(IABS(I),1)/3D0
30158             FACGQ=FGQ*EI**4
30159             DO 240 ISDE=1,2
30160               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 240
30161               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 240
30162               NCHN=NCHN+1
30163               ISIG(NCHN,ISDE)=I
30164               ISIG(NCHN,3-ISDE)=22
30165               ISIG(NCHN,3)=1
30166               SIGH(NCHN)=FACGQ
30167   240       CONTINUE
30168   250     CONTINUE
30169         ENDIF
30170  
30171       ELSEIF(ISUB.LE.80) THEN
30172         IF(ISUB.EQ.53) THEN
30173 C...g + g -> f + fbar (g + g -> q + qbar only)
30174           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 270
30175           IDC0=MDCY(21,2)-1
30176 C...Begin by d, u, s flavours.
30177           FLAVWT=0D0
30178           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
30179      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
30180           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
30181      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
30182           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
30183      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
30184           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
30185      &    UH2/SH2)*FLAVWT*FACA
30186           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
30187      &    TH2/SH2)*FLAVWT*FACA
30188           NCHN=NCHN+1
30189           ISIG(NCHN,1)=21
30190           ISIG(NCHN,2)=21
30191           ISIG(NCHN,3)=1
30192           SIGH(NCHN)=FACQQ1
30193           NCHN=NCHN+1
30194           ISIG(NCHN,1)=21
30195           ISIG(NCHN,2)=21
30196           ISIG(NCHN,3)=2
30197           SIGH(NCHN)=FACQQ2
30198 C...Next c and b flavours: modified that and uhat for fixed
30199 C...cos(theta-hat).
30200           DO 260 IFL=4,5
30201           SQMAVG=PMAS(IFL,1)**2
30202           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
30203             BE34=SQRT(1D0-4D0*SQMAVG/SH)
30204             THQ=-0.5D0*SH*(1D0-BE34*CTH)
30205             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30206             THUHQ=THQ*UHQ-SQMAVG*SH
30207             IF(MSTP(34).EQ.0) THEN
30208               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
30209               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
30210             ELSE
30211               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30212      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
30213               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30214      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
30215             ENDIF
30216             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
30217             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
30218             NCHN=NCHN+1
30219             ISIG(NCHN,1)=21
30220             ISIG(NCHN,2)=21
30221             ISIG(NCHN,3)=1+2*(IFL-3)
30222             SIGH(NCHN)=FACQQ1
30223             NCHN=NCHN+1
30224             ISIG(NCHN,1)=21
30225             ISIG(NCHN,2)=21
30226             ISIG(NCHN,3)=2+2*(IFL-3)
30227             SIGH(NCHN)=FACQQ2
30228           ENDIF
30229   260     CONTINUE
30230   270     CONTINUE
30231  
30232         ELSEIF(ISUB.EQ.54) THEN
30233 C...g + gamma -> f + fbar (g + gamma -> q + qbar only)
30234           CALL PYWIDT(21,SH,WDTP,WDTE)
30235           WDTESU=0D0
30236           DO 280 I=1,MIN(8,MDCY(21,3))
30237             EF=KCHG(I,1)/3D0
30238             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
30239      &      WDTE(I,4))
30240   280     CONTINUE
30241           FACQQ=COMFAC*AEM*AS*WDTESU*(TH2+UH2)/(TH*UH)
30242           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30243             NCHN=NCHN+1
30244             ISIG(NCHN,1)=21
30245             ISIG(NCHN,2)=22
30246             ISIG(NCHN,3)=1
30247             SIGH(NCHN)=FACQQ
30248           ENDIF
30249           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
30250             NCHN=NCHN+1
30251             ISIG(NCHN,1)=22
30252             ISIG(NCHN,2)=21
30253             ISIG(NCHN,3)=1
30254             SIGH(NCHN)=FACQQ
30255           ENDIF
30256  
30257         ELSEIF(ISUB.EQ.58) THEN
30258 C...gamma + gamma -> f + fbar
30259           CALL PYWIDT(22,SH,WDTP,WDTE)
30260           WDTESU=0D0
30261           DO 290 I=1,MIN(12,MDCY(22,3))
30262             IF(I.LE.8) EF= KCHG(I,1)/3D0
30263             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
30264             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
30265      &      WDTE(I,4))
30266   290     CONTINUE
30267           FACFF=COMFAC*AEM**2*WDTESU*2D0*(TH2+UH2)/(TH*UH)
30268           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
30269             NCHN=NCHN+1
30270             ISIG(NCHN,1)=22
30271             ISIG(NCHN,2)=22
30272             ISIG(NCHN,3)=1
30273             SIGH(NCHN)=FACFF
30274           ENDIF
30275  
30276         ELSEIF(ISUB.EQ.68) THEN
30277 C...g + g -> g + g
30278           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 300
30279           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+2D0*TH/SH+
30280      &    TH2/SH2)*FACA
30281           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+2D0*SH/UH+
30282      &    SH2/UH2)*FACA
30283           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+2D0*UH/TH+
30284      &    UH2/TH2)
30285           NCHN=NCHN+1
30286           ISIG(NCHN,1)=21
30287           ISIG(NCHN,2)=21
30288           ISIG(NCHN,3)=1
30289           SIGH(NCHN)=0.5D0*FACGG1
30290           NCHN=NCHN+1
30291           ISIG(NCHN,1)=21
30292           ISIG(NCHN,2)=21
30293           ISIG(NCHN,3)=2
30294           SIGH(NCHN)=0.5D0*FACGG2
30295           NCHN=NCHN+1
30296           ISIG(NCHN,1)=21
30297           ISIG(NCHN,2)=21
30298           ISIG(NCHN,3)=3
30299           SIGH(NCHN)=0.5D0*FACGG3
30300   300     CONTINUE
30301  
30302         ELSEIF(ISUB.EQ.80) THEN
30303 C...q + gamma -> q' + pi+/-
30304           FQPI=COMFAC*(2D0*AEM/9D0)*(-SH/TH)*(1D0/SH2+1D0/TH2)
30305           ASSH=PYALPS(MAX(0.5D0,0.5D0*SH))
30306           Q2FPSH=0.55D0/LOG(MAX(2D0,2D0*SH))
30307           DELSH=UH*SQRT(ASSH*Q2FPSH)
30308           ASUH=PYALPS(MAX(0.5D0,-0.5D0*UH))
30309           Q2FPUH=0.55D0/LOG(MAX(2D0,-2D0*UH))
30310           DELUH=SH*SQRT(ASUH*Q2FPUH)
30311           DO 320 I=MAX(-2,MMINA),MIN(2,MMAXA)
30312             IF(I.EQ.0) GOTO 320
30313             EI=KCHG(IABS(I),1)/3D0
30314             EJ=SIGN(1D0-ABS(EI),EI)
30315             DO 310 ISDE=1,2
30316               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 310
30317               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 310
30318               NCHN=NCHN+1
30319               ISIG(NCHN,ISDE)=I
30320               ISIG(NCHN,3-ISDE)=22
30321               ISIG(NCHN,3)=1
30322               SIGH(NCHN)=FQPI*(EI*DELSH+EJ*DELUH)**2
30323   310       CONTINUE
30324   320     CONTINUE
30325         ENDIF
30326  
30327       ELSEIF(ISUB.LE.100) THEN
30328         IF(ISUB.EQ.91) THEN
30329 C...Elastic scattering
30330           SIGS=VINT(315)*VINT(316)*SIGT(0,0,1)
30331  
30332         ELSEIF(ISUB.EQ.92) THEN
30333 C...Single diffractive scattering (first side, i.e. XB)
30334           SIGS=VINT(315)*VINT(316)*SIGT(0,0,2)
30335  
30336         ELSEIF(ISUB.EQ.93) THEN
30337 C...Single diffractive scattering (second side, i.e. AX)
30338           SIGS=VINT(315)*VINT(316)*SIGT(0,0,3)
30339  
30340         ELSEIF(ISUB.EQ.94) THEN
30341 C...Double diffractive scattering
30342           SIGS=VINT(315)*VINT(316)*SIGT(0,0,4)
30343  
30344         ELSEIF(ISUB.EQ.95) THEN
30345 C...Low-pT scattering
30346           SIGS=VINT(315)*VINT(316)*SIGT(0,0,5)
30347  
30348         ELSEIF(ISUB.EQ.96) THEN
30349 C...Multiple interactions: sum of QCD processes
30350           CALL PYWIDT(21,SH,WDTP,WDTE)
30351  
30352 C...q + q' -> q + q'
30353           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)/TH2
30354           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)/TH2*FACA-
30355      &    MSTP(34)*2D0/3D0*UH2/(SH*TH))
30356           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)/UH2
30357           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
30358           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
30359           DO 340 I=-5,5
30360             IF(I.EQ.0) GOTO 340
30361             DO 330 J=-5,5
30362               IF(J.EQ.0) GOTO 330
30363               NCHN=NCHN+1
30364               ISIG(NCHN,1)=I
30365               ISIG(NCHN,2)=J
30366               ISIG(NCHN,3)=111
30367               SIGH(NCHN)=FACQQ1
30368               IF(I.EQ.-J) SIGH(NCHN)=FACQQB
30369               IF(I.EQ.J) THEN
30370                 SIGH(NCHN)=0.5D0*FACQQ1*RATQQI
30371                 NCHN=NCHN+1
30372                 ISIG(NCHN,1)=I
30373                 ISIG(NCHN,2)=J
30374                 ISIG(NCHN,3)=112
30375                 SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
30376               ENDIF
30377   330       CONTINUE
30378   340     CONTINUE
30379  
30380 C...q + qbar -> q' + qbar' or g + g
30381           FACQQB=COMFAC*AS**2*4D0/9D0*(TH2+UH2)/SH2*
30382      &    (WDTE(0,1)+WDTE(0,2)+WDTE(0,3)+WDTE(0,4))
30383           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
30384      &    UH2/SH2)
30385           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
30386      &    TH2/SH2)
30387           DO 350 I=-5,5
30388             IF(I.EQ.0) GOTO 350
30389             NCHN=NCHN+1
30390             ISIG(NCHN,1)=I
30391             ISIG(NCHN,2)=-I
30392             ISIG(NCHN,3)=121
30393             SIGH(NCHN)=FACQQB
30394             NCHN=NCHN+1
30395             ISIG(NCHN,1)=I
30396             ISIG(NCHN,2)=-I
30397             ISIG(NCHN,3)=131
30398             SIGH(NCHN)=0.5D0*FACGG1
30399             NCHN=NCHN+1
30400             ISIG(NCHN,1)=I
30401             ISIG(NCHN,2)=-I
30402             ISIG(NCHN,3)=132
30403             SIGH(NCHN)=0.5D0*FACGG2
30404   350     CONTINUE
30405  
30406 C...q + g -> q + g
30407           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
30408      &    UH/SH)*FACA
30409           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
30410      &    SH/UH)
30411           DO 370 I=-5,5
30412             IF(I.EQ.0) GOTO 370
30413             DO 360 ISDE=1,2
30414               NCHN=NCHN+1
30415               ISIG(NCHN,ISDE)=I
30416               ISIG(NCHN,3-ISDE)=21
30417               ISIG(NCHN,3)=281
30418               SIGH(NCHN)=FACQG1
30419               NCHN=NCHN+1
30420               ISIG(NCHN,ISDE)=I
30421               ISIG(NCHN,3-ISDE)=21
30422               ISIG(NCHN,3)=282
30423               SIGH(NCHN)=FACQG2
30424   360       CONTINUE
30425   370     CONTINUE
30426  
30427 C...g + g -> q + qbar (only d, u, s)
30428           IDC0=MDCY(21,2)-1
30429           FLAVWT=0D0
30430           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
30431      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
30432           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
30433      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
30434           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
30435      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
30436           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
30437      &    UH2/SH2)*FLAVWT*FACA
30438           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
30439      &    TH2/SH2)*FLAVWT*FACA
30440           NCHN=NCHN+1
30441           ISIG(NCHN,1)=21
30442           ISIG(NCHN,2)=21
30443           ISIG(NCHN,3)=531
30444           SIGH(NCHN)=FACQQ1
30445           NCHN=NCHN+1
30446           ISIG(NCHN,1)=21
30447           ISIG(NCHN,2)=21
30448           ISIG(NCHN,3)=532
30449           SIGH(NCHN)=FACQQ2
30450  
30451 C...g + g -> c + cbar, b + bbar: modified that/uhat for fixed
30452 C...cos(theta-hat)
30453           DO 380 IFL=4,5
30454           SQMAVG=PMAS(IFL,1)**2
30455           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
30456             BE34=SQRT(1D0-4D0*SQMAVG/SH)
30457             THQ=-0.5D0*SH*(1D0-BE34*CTH)
30458             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30459             THUHQ=THQ*UHQ-SQMAVG*SH
30460             IF(MSTP(34).EQ.0) THEN
30461               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
30462               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
30463             ELSE
30464               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30465      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
30466               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30467      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
30468             ENDIF
30469             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
30470             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
30471             NCHN=NCHN+1
30472             ISIG(NCHN,1)=21
30473             ISIG(NCHN,2)=21
30474             ISIG(NCHN,3)=531+2*(IFL-3)
30475             SIGH(NCHN)=FACQQ1
30476             NCHN=NCHN+1
30477             ISIG(NCHN,1)=21
30478             ISIG(NCHN,2)=21
30479             ISIG(NCHN,3)=532+2*(IFL-3)
30480             SIGH(NCHN)=FACQQ2
30481           ENDIF
30482   380     CONTINUE
30483  
30484 C...g + g -> g + g
30485           FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
30486      &    2D0*TH/SH+TH2/SH2)*FACA
30487           FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
30488      &    2D0*SH/UH+SH2/UH2)*FACA
30489           FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3+
30490      &    2D0*UH/TH+UH2/TH2)
30491           NCHN=NCHN+1
30492           ISIG(NCHN,1)=21
30493           ISIG(NCHN,2)=21
30494           ISIG(NCHN,3)=681
30495           SIGH(NCHN)=0.5D0*FACGG1
30496           NCHN=NCHN+1
30497           ISIG(NCHN,1)=21
30498           ISIG(NCHN,2)=21
30499           ISIG(NCHN,3)=682
30500           SIGH(NCHN)=0.5D0*FACGG2
30501           NCHN=NCHN+1
30502           ISIG(NCHN,1)=21
30503           ISIG(NCHN,2)=21
30504           ISIG(NCHN,3)=683
30505           SIGH(NCHN)=0.5D0*FACGG3
30506  
30507         ELSEIF(ISUB.EQ.99) THEN
30508 C...f + gamma* -> f.
30509           IF(MINT(107).EQ.4) THEN
30510             Q2GA=VINT(307)
30511             P2GA=VINT(308)
30512             ISDE=2
30513           ELSE
30514             Q2GA=VINT(308)
30515             P2GA=VINT(307)
30516             ISDE=1
30517           ENDIF
30518           COMFAC=PARU(5)*4D0*PARU(1)**2*PARU(101)*VINT(315)*VINT(316)
30519           PM2RHO=PMAS(PYCOMP(113),1)**2
30520           IF(MSTP(19).EQ.0) THEN
30521             COMFAC=COMFAC/Q2GA
30522           ELSEIF(MSTP(19).EQ.1) THEN
30523             COMFAC=COMFAC/(Q2GA+PM2RHO)
30524           ELSEIF(MSTP(19).EQ.2) THEN
30525             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
30526           ELSE
30527             COMFAC=COMFAC*Q2GA/(Q2GA+PM2RHO)**2
30528             W2GA=VINT(2)
30529             IF(MINT(11).EQ.22.AND.MINT(12).EQ.22) THEN
30530               RDRDS=4.1D-3*W2GA**2.167D0/((Q2GA+0.15D0*W2GA)**2*
30531      &        Q2GA**0.75D0)*(1D0+0.11D0*Q2GA*P2GA/(1D0+0.02D0*P2GA**2))
30532               XGA=Q2GA/(W2GA+VINT(307)+VINT(308))
30533             ELSE
30534               RDRDS=1.5D-4*W2GA**2.167D0/((Q2GA+0.041D0*W2GA)**2*
30535      &        Q2GA**0.57D0)
30536               XGA=Q2GA/(W2GA+Q2GA-PMAS(PYCOMP(MINT(10+ISDE)),1)**2)
30537             ENDIF
30538             COMFAC=COMFAC*EXP(-MAX(1D-10,RDRDS))
30539             IF(MSTP(19).EQ.4) COMFAC=COMFAC/MAX(1D-2,1D0-XGA)
30540           ENDIF
30541           DO 390 I=MMINA,MMAXA
30542             IF(I.EQ.0.OR.KFAC(ISDE,I).EQ.0) GOTO 390
30543             IF(IABS(I).LT.10.AND.IABS(I).GT.MSTP(58)) GOTO 390
30544             EI=KCHG(IABS(I),1)/3D0
30545             NCHN=NCHN+1
30546             ISIG(NCHN,ISDE)=I
30547             ISIG(NCHN,3-ISDE)=22
30548             ISIG(NCHN,3)=1
30549             SIGH(NCHN)=COMFAC*EI**2
30550   390     CONTINUE
30551         ENDIF
30552  
30553       ELSE
30554         IF(ISUB.EQ.114.OR.ISUB.EQ.115) THEN
30555 C...g + g -> gamma + gamma or g + g -> g + gamma
30556           A0STUR=0D0
30557           A0STUI=0D0
30558           A0TSUR=0D0
30559           A0TSUI=0D0
30560           A0UTSR=0D0
30561           A0UTSI=0D0
30562           A1STUR=0D0
30563           A1STUI=0D0
30564           A2STUR=0D0
30565           A2STUI=0D0
30566           ALST=LOG(-SH/TH)
30567           ALSU=LOG(-SH/UH)
30568           ALTU=LOG(TH/UH)
30569           IMAX=2*MSTP(1)
30570           IF(MSTP(38).GE.1.AND.MSTP(38).LE.8) IMAX=MSTP(38)
30571           DO 400 I=1,IMAX
30572             EI=KCHG(IABS(I),1)/3D0
30573             EIWT=EI**2
30574             IF(ISUB.EQ.115) EIWT=EI
30575             SQMQ=PMAS(I,1)**2
30576             EPSS=4D0*SQMQ/SH
30577             EPST=4D0*SQMQ/TH
30578             EPSU=4D0*SQMQ/UH
30579             IF((MSTP(38).GE.1.AND.MSTP(38).LE.8).OR.EPSS.LT.1D-4) THEN
30580               B0STUR=1D0+(TH-UH)/SH*ALTU+0.5D0*(TH2+UH2)/SH2*(ALTU**2+
30581      &        PARU(1)**2)
30582               B0STUI=0D0
30583               B0TSUR=1D0+(SH-UH)/TH*ALSU+0.5D0*(SH2+UH2)/TH2*ALSU**2
30584               B0TSUI=-PARU(1)*((SH-UH)/TH+(SH2+UH2)/TH2*ALSU)
30585               B0UTSR=1D0+(SH-TH)/UH*ALST+0.5D0*(SH2+TH2)/UH2*ALST**2
30586               B0UTSI=-PARU(1)*((SH-TH)/UH+(SH2+TH2)/UH2*ALST)
30587               B1STUR=-1D0
30588               B1STUI=0D0
30589               B2STUR=-1D0
30590               B2STUI=0D0
30591             ELSE
30592               CALL PYWAUX(1,EPSS,W1SR,W1SI)
30593               CALL PYWAUX(1,EPST,W1TR,W1TI)
30594               CALL PYWAUX(1,EPSU,W1UR,W1UI)
30595               CALL PYWAUX(2,EPSS,W2SR,W2SI)
30596               CALL PYWAUX(2,EPST,W2TR,W2TI)
30597               CALL PYWAUX(2,EPSU,W2UR,W2UI)
30598               CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
30599               CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
30600               CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
30601               CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
30602               CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
30603               CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
30604               B0STUR=1D0+(1D0+2D0*TH/SH)*W1TR+(1D0+2D0*UH/SH)*W1UR+
30605      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TR+W2UR)-
30606      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTR+Y3TUSR)-
30607      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUR+Y3UTSR)+
30608      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
30609      &        0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
30610               B0STUI=(1D0+2D0*TH/SH)*W1TI+(1D0+2D0*UH/SH)*W1UI+
30611      &        0.5D0*((TH2+UH2)/SH2-EPSS)*(W2TI+W2UI)-
30612      &        0.25D0*EPST*(1D0-0.5D0*EPSS)*(Y3SUTI+Y3TUSI)-
30613      &        0.25D0*EPSU*(1D0-0.5D0*EPSS)*(Y3STUI+Y3UTSI)+
30614      &        0.25D0*(-2D0*(TH2+UH2)/SH2+4D0*EPSS+EPST+EPSU+
30615      &        0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
30616               B0TSUR=1D0+(1D0+2D0*SH/TH)*W1SR+(1D0+2D0*UH/TH)*W1UR+
30617      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SR+W2UR)-
30618      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSR+Y3SUTR)-
30619      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUR+Y3USTR)+
30620      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
30621      &        0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)
30622               B0TSUI=(1D0+2D0*SH/TH)*W1SI+(1D0+2D0*UH/TH)*W1UI+
30623      &        0.5D0*((SH2+UH2)/TH2-EPST)*(W2SI+W2UI)-
30624      &        0.25D0*EPSS*(1D0-0.5D0*EPST)*(Y3TUSI+Y3SUTI)-
30625      &        0.25D0*EPSU*(1D0-0.5D0*EPST)*(Y3TSUI+Y3USTI)+
30626      &        0.25D0*(-2D0*(SH2+UH2)/TH2+4D0*EPST+EPSS+EPSU+
30627      &        0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)
30628               B0UTSR=1D0+(1D0+2D0*TH/UH)*W1TR+(1D0+2D0*SH/UH)*W1SR+
30629      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TR+W2SR)-
30630      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTR+Y3TSUR)-
30631      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSR+Y3STUR)+
30632      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
30633      &        0.5D0*EPST*EPSS)*(Y3TUSR+Y3SUTR)
30634               B0UTSI=(1D0+2D0*TH/UH)*W1TI+(1D0+2D0*SH/UH)*W1SI+
30635      &        0.5D0*((TH2+SH2)/UH2-EPSU)*(W2TI+W2SI)-
30636      &        0.25D0*EPST*(1D0-0.5D0*EPSU)*(Y3USTI+Y3TSUI)-
30637      &        0.25D0*EPSS*(1D0-0.5D0*EPSU)*(Y3UTSI+Y3STUI)+
30638      &        0.25D0*(-2D0*(TH2+SH2)/UH2+4D0*EPSU+EPST+EPSS+
30639      &        0.5D0*EPST*EPSS)*(Y3TUSI+Y3SUTI)
30640               B1STUR=-1D0-0.25D0*(EPSS+EPST+EPSU)*(W2SR+W2TR+W2UR)+
30641      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTR+Y3TUSR)+
30642      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUR+Y3UTSR)+
30643      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUR+Y3USTR)
30644               B1STUI=-0.25D0*(EPSS+EPST+EPSU)*(W2SI+W2TI+W2UI)+
30645      &        0.25D0*(EPSU+0.5D0*EPSS*EPST)*(Y3SUTI+Y3TUSI)+
30646      &        0.25D0*(EPST+0.5D0*EPSS*EPSU)*(Y3STUI+Y3UTSI)+
30647      &        0.25D0*(EPSS+0.5D0*EPST*EPSU)*(Y3TSUI+Y3USTI)
30648               B2STUR=-1D0+0.125D0*EPSS*EPST*(Y3SUTR+Y3TUSR)+
30649      &        0.125D0*EPSS*EPSU*(Y3STUR+Y3UTSR)+
30650      &        0.125D0*EPST*EPSU*(Y3TSUR+Y3USTR)
30651               B2STUI=0.125D0*EPSS*EPST*(Y3SUTI+Y3TUSI)+
30652      &        0.125D0*EPSS*EPSU*(Y3STUI+Y3UTSI)+
30653      &        0.125D0*EPST*EPSU*(Y3TSUI+Y3USTI)
30654             ENDIF
30655             A0STUR=A0STUR+EIWT*B0STUR
30656             A0STUI=A0STUI+EIWT*B0STUI
30657             A0TSUR=A0TSUR+EIWT*B0TSUR
30658             A0TSUI=A0TSUI+EIWT*B0TSUI
30659             A0UTSR=A0UTSR+EIWT*B0UTSR
30660             A0UTSI=A0UTSI+EIWT*B0UTSI
30661             A1STUR=A1STUR+EIWT*B1STUR
30662             A1STUI=A1STUI+EIWT*B1STUI
30663             A2STUR=A2STUR+EIWT*B2STUR
30664             A2STUI=A2STUI+EIWT*B2STUI
30665   400     CONTINUE
30666           ASQSUM=A0STUR**2+A0STUI**2+A0TSUR**2+A0TSUI**2+A0UTSR**2+
30667      &    A0UTSI**2+4D0*A1STUR**2+4D0*A1STUI**2+A2STUR**2+A2STUI**2
30668           FACGG=COMFAC*FACA/(16D0*PARU(1)**2)*AS**2*AEM**2*ASQSUM
30669           FACGP=COMFAC*FACA*5D0/(192D0*PARU(1)**2)*AS**3*AEM*ASQSUM
30670           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
30671           NCHN=NCHN+1
30672           ISIG(NCHN,1)=21
30673           ISIG(NCHN,2)=21
30674           ISIG(NCHN,3)=1
30675           IF(ISUB.EQ.114) SIGH(NCHN)=0.5D0*FACGG
30676           IF(ISUB.EQ.115) SIGH(NCHN)=FACGP
30677   410     CONTINUE
30678  
30679         ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN
30680 C...f + gamma*_(T,L) -> f + g (q + gamma*_(T,L) -> q + g only)
30681           PH=0D0
30682           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
30683      &    PH=VINT(3)**2
30684           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
30685      &    PH=VINT(4)**2
30686           IF(ISUB.EQ.131) THEN
30687             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**2*
30688      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
30689           ELSE
30690             FGQ=COMFAC*AS*AEM*8D0/3D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
30691           ENDIF
30692           DO 430 I=MMINA,MMAXA
30693             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
30694             EI=KCHG(IABS(I),1)/3D0
30695             FACGQ=FGQ*EI**2
30696             DO 420 ISDE=1,2
30697               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 420
30698               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 420
30699               NCHN=NCHN+1
30700               ISIG(NCHN,ISDE)=I
30701               ISIG(NCHN,3-ISDE)=22
30702               ISIG(NCHN,3)=1
30703               SIGH(NCHN)=FACGQ
30704   420       CONTINUE
30705   430     CONTINUE
30706  
30707         ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN
30708 C...f + gamma*_(T,L) -> f + gamma
30709           PH=0D0
30710           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
30711      &    PH=VINT(3)**2
30712           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
30713      &    PH=VINT(4)**2
30714           IF(ISUB.EQ.133) THEN
30715             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**2*
30716      &      ((SH2+UH2-2D0*PH*TH)/(-SH*UH)-2D0*PH*TH/(SH+PH)**2)
30717           ELSE
30718             FGQ=COMFAC*AEM**2*2D0*SH**2/(SH+PH)**4*(-4D0*PH*TH)
30719           ENDIF
30720           DO 450 I=MMINA,MMAXA
30721             IF(I.EQ.0) GOTO 450
30722             EI=KCHG(IABS(I),1)/3D0
30723             FACGQ=FGQ*EI**4
30724             DO 440 ISDE=1,2
30725               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 440
30726               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 440
30727               NCHN=NCHN+1
30728               ISIG(NCHN,ISDE)=I
30729               ISIG(NCHN,3-ISDE)=22
30730               ISIG(NCHN,3)=1
30731               SIGH(NCHN)=FACGQ
30732   440       CONTINUE
30733   450     CONTINUE
30734  
30735         ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN
30736 C...g + gamma*_(T,L) -> f + fbar (g + gamma*_(T,L) -> q + qbar only)
30737           PH=0D0
30738           IF(MINT(15).EQ.22.AND.MINT(107).EQ.0.AND.VINT(3).LT.0D0)
30739      &    PH=VINT(3)**2
30740           IF(MINT(16).EQ.22.AND.MINT(108).EQ.0.AND.VINT(4).LT.0D0)
30741      &    PH=VINT(4)**2
30742           CALL PYWIDT(21,SH,WDTP,WDTE)
30743           WDTESU=0D0
30744           DO 460 I=1,MIN(8,MDCY(21,3))
30745             EF=KCHG(I,1)/3D0
30746             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
30747      &      WDTE(I,4))
30748   460     CONTINUE
30749           IF(ISUB.EQ.135) THEN
30750             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**2*
30751      &      ((TH2+UH2-2D0*PH*SH)/(TH*UH)+4D0*PH*SH/(SH+PH)**2)
30752           ELSE
30753             FACQQ=COMFAC*AEM*AS*WDTESU*SH**2/(SH+PH)**4*8D0*PH*SH
30754           ENDIF
30755           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30756             NCHN=NCHN+1
30757             ISIG(NCHN,1)=21
30758             ISIG(NCHN,2)=22
30759             ISIG(NCHN,3)=1
30760             SIGH(NCHN)=FACQQ
30761           ENDIF
30762           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
30763             NCHN=NCHN+1
30764             ISIG(NCHN,1)=22
30765             ISIG(NCHN,2)=21
30766             ISIG(NCHN,3)=1
30767             SIGH(NCHN)=FACQQ
30768           ENDIF
30769  
30770         ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN
30771 C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar
30772           PH1=0D0
30773           IF(VINT(3).LT.0D0) PH1=VINT(3)**2
30774           PH2=0D0
30775           IF(VINT(4).LT.0D0) PH2=VINT(4)**2
30776           CALL PYWIDT(22,SH,WDTP,WDTE)
30777           WDTESU=0D0
30778           DO 470 I=1,MIN(12,MDCY(22,3))
30779             IF(I.LE.8) EF= KCHG(I,1)/3D0
30780             IF(I.GE.9) EF= KCHG(9+2*(I-8),1)/3D0
30781             WDTESU=WDTESU+EF**2*(WDTE(I,1)+WDTE(I,2)+WDTE(I,3)+
30782      &      WDTE(I,4))
30783   470     CONTINUE
30784           DLAMB2=(TH+UH)**2-4D0*PH1*PH2
30785           IF(ISUB.EQ.137) THEN
30786             FPARAM=-SH*(TH+UH)/DLAMB2
30787             FACFF=COMFAC*AEM**2*WDTESU*2D0*SH2/(DLAMB2*TH2*UH2)*
30788      &      (TH*UH-PH1*PH2)*((TH2+UH2)*(1D0-2D0*FPARAM*(1D0-FPARAM))-
30789      &      2D0*PH1*PH2*FPARAM**2)
30790           ELSEIF(ISUB.EQ.138) THEN
30791             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
30792      &      PH2*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH1*SH*(TH-UH)**2/DLAMB2)+
30793      &      2D0*PH1**2*(TH-UH)**2)
30794           ELSEIF(ISUB.EQ.139) THEN
30795             FACFF=COMFAC*AEM**2*WDTESU*4D0*SH2*SH/(DLAMB2**2*TH2*UH2)*
30796      &      PH1*(4D0*(TH*UH-PH1*PH2)*(TH*UH+PH2*SH*(TH-UH)**2/DLAMB2)+
30797      &      2D0*PH2**2*(TH-UH)**2)
30798           ELSE
30799             FACFF=COMFAC*AEM**2*WDTESU*32D0*SH2**2/(DLAMB2**3*TH2*UH2)*
30800      &      PH1*PH2*(TH*UH-PH1*PH2)*(TH-UH)**2
30801           ENDIF
30802           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
30803             NCHN=NCHN+1
30804             ISIG(NCHN,1)=22
30805             ISIG(NCHN,2)=22
30806             ISIG(NCHN,3)=1
30807             SIGH(NCHN)=FACFF
30808           ENDIF
30809  
30810         ENDIF
30811       ENDIF
30812  
30813       RETURN
30814       END
30815  
30816 C*********************************************************************
30817  
30818 C...PYSGHF
30819 C...Subprocess cross sections for heavy flavour production,
30820 C...open and closed.
30821 C...Auxiliary to PYSIGH.
30822  
30823       SUBROUTINE PYSGHF(NCHN,SIGS)
30824  
30825 C...Double precision and integer declarations
30826       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
30827       IMPLICIT INTEGER(I-N)
30828       INTEGER PYK,PYCHGE,PYCOMP
30829 C...Parameter statement to help give large particle numbers.
30830       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
30831      &KEXCIT=4000000,KDIMEN=5000000)
30832 C...Commonblocks
30833       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
30834       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
30835       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
30836       COMMON/PYINT1/MINT(400),VINT(400)
30837       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
30838       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
30839       COMMON/PYINT4/MWID(500),WIDS(500,5)
30840       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
30841      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
30842      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
30843      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
30844       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
30845      &/PYINT4/,/PYSGCM/
30846 C...Local arrays
30847       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
30848  
30849 C...Determine where are charmonium/bottomonium wave function parameters.
30850       IONIUM=140
30851       IF(ISUB.GE.461.AND.ISUB.LE.479) IONIUM=145
30852  
30853 C...Convert bottomonium process into equivalent charmonium ones.
30854       IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40
30855  
30856 C...Differential cross section expressions.
30857  
30858       IF(ISUB.LE.100) THEN
30859         IF(ISUB.EQ.81) THEN
30860 C...q + qbar -> Q + Qbar
30861           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30862           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30863           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30864           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
30865      &    2D0*SQMAVG/SH)
30866           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
30867           WID2=1D0
30868           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30869           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30870           FACQQB=FACQQB*WID2
30871           DO 100 I=MMINA,MMAXA
30872             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
30873      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
30874             NCHN=NCHN+1
30875             ISIG(NCHN,1)=I
30876             ISIG(NCHN,2)=-I
30877             ISIG(NCHN,3)=1
30878             SIGH(NCHN)=FACQQB
30879   100     CONTINUE
30880  
30881         ELSEIF(ISUB.EQ.82) THEN
30882 C...g + g -> Q + Qbar
30883           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30884           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30885           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30886           THUHQ=THQ*UHQ-SQMAVG*SH
30887           IF(MSTP(34).EQ.0) THEN
30888             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
30889             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
30890           ELSE
30891             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30892      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
30893             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
30894      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
30895           ENDIF
30896           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
30897           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
30898           IF(MSTP(35).GE.1) THEN
30899             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
30900             FACQQ1=FACQQ1*FATRE
30901             FACQQ2=FACQQ2*FATRE
30902           ENDIF
30903           WID2=1D0
30904           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30905           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30906           FACQQ1=FACQQ1*WID2
30907           FACQQ2=FACQQ2*WID2
30908           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 110
30909           NCHN=NCHN+1
30910           ISIG(NCHN,1)=21
30911           ISIG(NCHN,2)=21
30912           ISIG(NCHN,3)=1
30913           SIGH(NCHN)=FACQQ1
30914           NCHN=NCHN+1
30915           ISIG(NCHN,1)=21
30916           ISIG(NCHN,2)=21
30917           ISIG(NCHN,3)=2
30918           SIGH(NCHN)=FACQQ2
30919   110     CONTINUE
30920  
30921         ELSEIF(ISUB.EQ.83) THEN
30922 C...f + q -> f' + Q
30923           FACQQS=COMFAC*(0.5D0*AEM/XW)**2*SH*(SH-SQM3)/(SQMW-TH)**2
30924           FACQQU=COMFAC*(0.5D0*AEM/XW)**2*UH*(UH-SQM3)/(SQMW-TH)**2
30925           DO 130 I=MMIN1,MMAX1
30926             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 130
30927             DO 120 J=MMIN2,MMAX2
30928               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 120
30929               IF(I*J.GT.0.AND.MOD(IABS(I+J),2).EQ.0) GOTO 120
30930               IF(I*J.LT.0.AND.MOD(IABS(I+J),2).EQ.1) GOTO 120
30931               IF(IABS(I).LT.MINT(55).AND.MOD(IABS(I+MINT(55)),2).EQ.1)
30932      &        THEN
30933                 NCHN=NCHN+1
30934                 ISIG(NCHN,1)=I
30935                 ISIG(NCHN,2)=J
30936                 ISIG(NCHN,3)=1
30937                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
30938      &          (IABS(I)+1)/2)*VINT(180+J)
30939                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(I)/2,
30940      &          (MINT(55)+1)/2)*VINT(180+J)
30941                 WID2=1D0
30942                 IF(I.GT.0) THEN
30943                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
30944                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30945      &            WIDS(MINT(55),2)
30946                 ELSE
30947                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
30948                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30949      &            WIDS(MINT(55),3)
30950                 ENDIF
30951                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
30952                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
30953               ENDIF
30954               IF(IABS(J).LT.MINT(55).AND.MOD(IABS(J+MINT(55)),2).EQ.1)
30955      &        THEN
30956                 NCHN=NCHN+1
30957                 ISIG(NCHN,1)=I
30958                 ISIG(NCHN,2)=J
30959                 ISIG(NCHN,3)=2
30960                 IF(MOD(MINT(55),2).EQ.0) FACCKM=VCKM(MINT(55)/2,
30961      &          (IABS(J)+1)/2)*VINT(180+I)
30962                 IF(MOD(MINT(55),2).EQ.1) FACCKM=VCKM(IABS(J)/2,
30963      &          (MINT(55)+1)/2)*VINT(180+I)
30964                 WID2=1D0
30965                 IF(J.GT.0) THEN
30966                   IF(MINT(55).EQ.6) WID2=WIDS(6,2)
30967                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30968      &            WIDS(MINT(55),2)
30969                 ELSE
30970                   IF(MINT(55).EQ.6) WID2=WIDS(6,3)
30971                   IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=
30972      &            WIDS(MINT(55),3)
30973                 ENDIF
30974                 IF(I*J.GT.0) SIGH(NCHN)=FACQQS*FACCKM*WID2
30975                 IF(I*J.LT.0) SIGH(NCHN)=FACQQU*FACCKM*WID2
30976               ENDIF
30977   120       CONTINUE
30978   130     CONTINUE
30979  
30980         ELSEIF(ISUB.EQ.84) THEN
30981 C...g + gamma -> Q + Qbar
30982           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
30983           THQ=-0.5D0*SH*(1D0-BE34*CTH)
30984           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
30985           FACQQ=COMFAC*AS*AEM*(KCHG(IABS(MINT(55)),1)/3D0)**2*
30986      &    (THQ**2+UHQ**2+4D0*SQMAVG*SH*(1D0-SQMAVG*SH/(THQ*UHQ)))/
30987      &    (THQ*UHQ)
30988           IF(MSTP(35).GE.1) FACQQ=FACQQ*PYHFTH(SH,SQMAVG,0D0)
30989           WID2=1D0
30990           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
30991           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
30992           FACQQ=FACQQ*WID2
30993           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
30994             NCHN=NCHN+1
30995             ISIG(NCHN,1)=21
30996             ISIG(NCHN,2)=22
30997             ISIG(NCHN,3)=1
30998             SIGH(NCHN)=FACQQ
30999           ENDIF
31000           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
31001             NCHN=NCHN+1
31002             ISIG(NCHN,1)=22
31003             ISIG(NCHN,2)=21
31004             ISIG(NCHN,3)=1
31005             SIGH(NCHN)=FACQQ
31006           ENDIF
31007  
31008         ELSEIF(ISUB.EQ.85) THEN
31009 C...gamma + gamma -> F + Fbar (heavy fermion, quark or lepton)
31010           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
31011           THQ=-0.5D0*SH*(1D0-BE34*CTH)
31012           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
31013           FACFF=COMFAC*AEM**2*(KCHG(IABS(MINT(56)),1)/3D0)**4*2D0*
31014      &    ((1D0-PARJ(131)*PARJ(132))*(THQ*UHQ-SQMAVG*SH)*
31015      &    (UHQ**2+THQ**2+2D0*SQMAVG*SH)+(1D0+PARJ(131)*PARJ(132))*
31016      &    SQMAVG*SH**2*(SH-2D0*SQMAVG))/(THQ*UHQ)**2
31017           IF(IABS(MINT(56)).LT.10) FACFF=3D0*FACFF
31018           IF(IABS(MINT(56)).LT.10.AND.MSTP(35).GE.1)
31019      &    FACFF=FACFF*PYHFTH(SH,SQMAVG,1D0)
31020           WID2=1D0
31021           IF(MINT(56).EQ.6) WID2=WIDS(6,1)
31022           IF(MINT(56).EQ.7.OR.MINT(56).EQ.8) WID2=WIDS(MINT(56),1)
31023           IF(MINT(56).EQ.17) WID2=WIDS(17,1)
31024           FACFF=FACFF*WID2
31025           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
31026             NCHN=NCHN+1
31027             ISIG(NCHN,1)=22
31028             ISIG(NCHN,2)=22
31029             ISIG(NCHN,3)=1
31030             SIGH(NCHN)=FACFF
31031           ENDIF
31032  
31033         ELSEIF(ISUB.EQ.86) THEN
31034 C...g + g -> J/Psi + g
31035           FACQQG=COMFAC*AS**3*(5D0/9D0)*PARP(38)*SQRT(SQM3)*
31036      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
31037      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
31038           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31039             NCHN=NCHN+1
31040             ISIG(NCHN,1)=21
31041             ISIG(NCHN,2)=21
31042             ISIG(NCHN,3)=1
31043             SIGH(NCHN)=FACQQG
31044           ENDIF
31045  
31046         ELSEIF(ISUB.EQ.87) THEN
31047 C...g + g -> chi_0c + g
31048           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31049           QGTW=(SH*TH*UH)/SH**3
31050           RGTW=SQM3/SH
31051           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
31052      &    (9D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
31053      &    6D0*RGTW*PGTW**3*QGTW*(2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)-
31054      &    PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)+
31055      &    2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)+6D0*RGTW**2*QGTW**4)/
31056      &    (QGTW*(QGTW-RGTW*PGTW)**4)
31057           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31058             NCHN=NCHN+1
31059             ISIG(NCHN,1)=21
31060             ISIG(NCHN,2)=21
31061             ISIG(NCHN,3)=1
31062             SIGH(NCHN)=FACQQG
31063           ENDIF
31064  
31065         ELSEIF(ISUB.EQ.88) THEN
31066 C...g + g -> chi_1c + g
31067           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31068           QGTW=(SH*TH*UH)/SH**3
31069           RGTW=SQM3/SH
31070           FACQQG=COMFAC*AS**3*12D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
31071      &    PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)+2D0*QGTW*(-RGTW**4+
31072      &    5D0*RGTW**2*PGTW+PGTW**2)-15D0*RGTW*QGTW**2)/
31073      &    (QGTW-RGTW*PGTW)**4
31074           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31075             NCHN=NCHN+1
31076             ISIG(NCHN,1)=21
31077             ISIG(NCHN,2)=21
31078             ISIG(NCHN,3)=1
31079             SIGH(NCHN)=FACQQG
31080           ENDIF
31081  
31082         ELSEIF(ISUB.EQ.89) THEN
31083 C...g + g -> chi_2c + g
31084           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31085           QGTW=(SH*TH*UH)/SH**3
31086           RGTW=SQM3/SH
31087           FACQQG=COMFAC*AS**3*4D0*(PARP(39)/SQRT(SQM3))*(1D0/SH)*
31088      &    (12D0*RGTW**2*PGTW**4*(RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)-
31089      &    3D0*RGTW*PGTW**3*QGTW*(8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)+
31090      &    2D0*PGTW**2*QGTW**2*(-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)+
31091      &    RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)+12D0*RGTW**2*
31092      &    QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31093           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31094             NCHN=NCHN+1
31095             ISIG(NCHN,1)=21
31096             ISIG(NCHN,2)=21
31097             ISIG(NCHN,3)=1
31098             SIGH(NCHN)=FACQQG
31099           ENDIF
31100         ENDIF
31101  
31102       ELSEIF(ISUB.LE.200) THEN
31103         IF(ISUB.EQ.104) THEN
31104 C...g + g -> chi_c0.
31105           KC=PYCOMP(10441)
31106           FACBW=COMFAC*12D0*AS**2*PARP(39)*PMAS(KC,2)/
31107      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
31108           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
31109           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31110             NCHN=NCHN+1
31111             ISIG(NCHN,1)=21
31112             ISIG(NCHN,2)=21
31113             ISIG(NCHN,3)=1
31114             SIGH(NCHN)=FACBW
31115           ENDIF
31116  
31117         ELSEIF(ISUB.EQ.105) THEN
31118 C...g + g -> chi_c2.
31119           KC=PYCOMP(445)
31120           FACBW=COMFAC*16D0*AS**2*PARP(39)*PMAS(KC,2)/
31121      &    ((SH-PMAS(KC,1)**2)**2+(PMAS(KC,1)*PMAS(KC,2))**2)
31122           IF(ABS(SQRT(SH)-PMAS(KC,1)).GT.50D0*PMAS(KC,2)) FACBW=0D0
31123           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31124             NCHN=NCHN+1
31125             ISIG(NCHN,1)=21
31126             ISIG(NCHN,2)=21
31127             ISIG(NCHN,3)=1
31128             SIGH(NCHN)=FACBW
31129           ENDIF
31130  
31131         ELSEIF(ISUB.EQ.106) THEN
31132 C...g + g -> J/Psi + gamma.
31133           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
31134           FACQQG=COMFAC*AEM*EQ**2*AS**2*(4D0/3D0)*PARP(38)*SQRT(SQM3)*
31135      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
31136      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
31137           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31138             NCHN=NCHN+1
31139             ISIG(NCHN,1)=21
31140             ISIG(NCHN,2)=21
31141             ISIG(NCHN,3)=1
31142             SIGH(NCHN)=FACQQG
31143           ENDIF
31144  
31145         ELSEIF(ISUB.EQ.107) THEN
31146 C...g + gamma -> J/Psi + g.
31147           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
31148           FACQQG=COMFAC*AEM*EQ**2*AS**2*(32D0/3D0)*PARP(38)*SQRT(SQM3)*
31149      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
31150      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
31151           IF(KFAC(1,21)*KFAC(2,22).NE.0) THEN
31152             NCHN=NCHN+1
31153             ISIG(NCHN,1)=21
31154             ISIG(NCHN,2)=22
31155             ISIG(NCHN,3)=1
31156             SIGH(NCHN)=FACQQG
31157           ENDIF
31158           IF(KFAC(1,22)*KFAC(2,21).NE.0) THEN
31159             NCHN=NCHN+1
31160             ISIG(NCHN,1)=22
31161             ISIG(NCHN,2)=21
31162             ISIG(NCHN,3)=1
31163             SIGH(NCHN)=FACQQG
31164           ENDIF
31165  
31166         ELSEIF(ISUB.EQ.108) THEN
31167 C...gamma + gamma -> J/Psi + gamma.
31168           EQ=KCHG(MOD(KFPR(ISUB,1)/10,10),1)/3D0
31169           FACQQG=COMFAC*AEM**3*EQ**6*384D0*PARP(38)*SQRT(SQM3)*
31170      &    (((SH*(SH-SQM3))**2+(TH*(TH-SQM3))**2+(UH*(UH-SQM3))**2)/
31171      &    ((TH-SQM3)*(UH-SQM3))**2)/(SH-SQM3)**2
31172           IF(KFAC(1,22)*KFAC(2,22).NE.0) THEN
31173             NCHN=NCHN+1
31174             ISIG(NCHN,1)=22
31175             ISIG(NCHN,2)=22
31176             ISIG(NCHN,3)=1
31177             SIGH(NCHN)=FACQQG
31178           ENDIF
31179         ENDIF
31180  
31181 C...QUARKONIA+++
31182 C...Additional code by Stefan Wolf
31183       ELSE
31184  
31185 C...Common code for quarkonium production.
31186         SHTH=SH+TH
31187         THUH=TH+UH
31188         UHSH=UH+SH
31189         SHTH2=SHTH**2
31190         THUH2=THUH**2
31191         UHSH2=UHSH**2
31192         IF ( (ISUB.GE.421.AND.ISUB.LE.424).OR.
31193      &       (ISUB.GE.431.AND.ISUB.LE.433)) THEN
31194           SQMQQ=SQM3
31195         ELSEIF((ISUB.GE.425.AND.ISUB.LE.430).OR.
31196      &         (ISUB.GE.434.AND.ISUB.LE.439)) THEN
31197           SQMQQ=SQM4
31198         ENDIF
31199         SQMQQR=SQRT(SQMQQ)
31200         IF(MSTP(145).EQ.1) THEN
31201            IF ( (ISUB.GE.421.AND.ISUB.LE.427).OR.
31202      &          (ISUB.GE.431.AND.ISUB.LE.436)) THEN
31203               AQ=UHSH/(2D0*X(1)) + SHTH/(2D0*X(2))
31204               BQ=UHSH/(2D0*X(1)) - SHTH/(2D0*X(2))
31205               ATILK1=X(1)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*AQ
31206               ATILK2=X(2)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*AQ
31207               BTILK1=-X(1)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*BQ
31208               BTILK2=X(2)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*BQ
31209            ELSEIF( (ISUB.GE.428.AND.ISUB.LE.430).OR.
31210      &             ISUB.GE.437) THEN
31211               AQ=SHTH/(2D0*X(1)) + UHSH/(2D0*X(2))
31212               BQ=SHTH/(2D0*X(1)) - UHSH/(2D0*X(2))
31213               ATILK1=X(1)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*AQ
31214               ATILK2=X(2)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*AQ
31215               BTILK1=-X(1)*VINT(2)/2D0-SHTH/(2D0*SQMQQ)*BQ
31216               BTILK2=X(2)*VINT(2)/2D0-UHSH/(2D0*SQMQQ)*BQ
31217            ENDIF
31218            AQ2=AQ**2
31219            BQ2=BQ**2
31220            SMQQ2=SQMQQ*VINT(2)
31221 C...Polarisation frames
31222            IF(MSTP(146).EQ.1) THEN
31223 C...Recoil frame
31224               POLH1=SQRT(AQ2-SMQQ2)
31225               POLH2=SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
31226               AZ=-SQMQQR/POLH1
31227               BZ=0D0
31228               AX=AQ*BQ/(POLH1*POLH2)
31229               BX=-POLH1/POLH2
31230            ELSEIF(MSTP(146).EQ.2) THEN
31231 C...Gottfried Jackson frame
31232               POLH1=AQ+BQ
31233               POLH2=POLH1*SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
31234               AZ=SQMQQR/POLH1
31235               BZ=AZ
31236               AX=-(BQ2+AQ*BQ+SMQQ2)/POLH2
31237               BX=(AQ2+AQ*BQ-SMQQ2)/POLH2
31238            ELSEIF(MSTP(146).EQ.3) THEN
31239 C...Target frame
31240               POLH1=AQ-BQ
31241               POLH2=POLH1*SQRT(VINT(2)*(AQ2-BQ2-SMQQ2))
31242               AZ=-SQMQQR/POLH1
31243               BZ=-AZ
31244               AX=-(BQ2-AQ*BQ+SMQQ2)/POLH2
31245               BX=-(AQ2-AQ*BQ-SMQQ2)/POLH2
31246            ELSEIF(MSTP(146).EQ.4) THEN
31247 C...Collins Soper frame
31248               POLH1=AQ2-BQ2
31249               POLH2=SQRT(VINT(2)*POLH1)
31250               AZ=-BQ/POLH2
31251               BZ=AQ/POLH2
31252               AX=-SQMQQR*AQ/SQRT(POLH1*(POLH1-SMQQ2))
31253               BX=SQMQQR*BQ/SQRT(POLH1*(POLH1-SMQQ2))
31254            ENDIF
31255 C...Contract EL1(lam) EL2(lam') with K1 and K2 (initial parton momenta)
31256            EL1K10=AZ*ATILK1+BZ*BTILK1
31257            EL1K20=AZ*ATILK2+BZ*BTILK2
31258            EL2K10=EL1K10
31259            EL2K20=EL1K20
31260            EL1K11=1D0/SQRT(2D0)*(AX*ATILK1+BX*BTILK1)
31261            EL1K21=1D0/SQRT(2D0)*(AX*ATILK2+BX*BTILK2)
31262            EL2K11=EL1K11
31263            EL2K21=EL1K21
31264         ENDIF
31265  
31266         IF(ISUB.EQ.421) THEN
31267 C...g + g -> QQ~[3S11] + g
31268           IF(MSTP(145).EQ.0) THEN
31269 *            FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
31270 *     &            (SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/(SHTH2*THUH2*UHSH2)
31271             FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
31272      &            (SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/SHTH2/THUH2/UHSH2
31273 *            FACQQG=COMFAC*PARU(1)*AS**3*(10D0/81D0)*SQMQQR*
31274 *     &           (SH2/(SHTH2*UHSH2)+TH2/(SHTH2*THUH2)+UH2/(THUH2*UHSH2))
31275           ELSE
31276             FF=-PARU(1)*AS**3*(10D0/81D0)*SQMQQR/THUH2/SHTH2/UHSH2
31277             AA=(SHTH2*UH2+UHSH2*TH2+THUH2*SH2)/2D0
31278             BB=2D0*(SH2+TH2)
31279             CC=2D0*(SH2+UH2)
31280             DD=2D0*SH2
31281             IF(MSTP(147).EQ.0) THEN
31282                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31283      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31284             ELSEIF(MSTP(147).EQ.1) THEN
31285                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31286      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31287             ELSEIF(MSTP(147).EQ.3) THEN
31288                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31289      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31290             ELSEIF(MSTP(147).EQ.4) THEN
31291                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31292      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31293             ELSEIF(MSTP(147).EQ.5) THEN
31294                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31295      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31296             ELSEIF(MSTP(147).EQ.6) THEN
31297                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31298      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31299             ENDIF
31300             FACQQG=COMFAC*FF*FACQQG
31301           ENDIF
31302           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31303             NCHN=NCHN+1
31304             ISIG(NCHN,1)=21
31305             ISIG(NCHN,2)=21
31306             ISIG(NCHN,3)=1
31307             SIGH(NCHN)=FACQQG*PARP(IONIUM+1)
31308           ENDIF
31309  
31310         ELSEIF(ISUB.EQ.422) THEN
31311 C...g + g -> QQ~[3S18] + g
31312           IF(MSTP(145).EQ.0) THEN
31313             FACQQG=-COMFAC*PARU(1)*AS**3*(1D0/72D0)*
31314      &            (16D0*SQMQQ**2-27D0*(SHTH2+THUH2+UHSH2))/
31315      &            (SQMQQ*SQMQQR)*
31316      &            ((SH2*THUH2+TH2*UHSH2+UH2*SHTH2)/SHTH2/THUH2/UHSH2)
31317           ELSE
31318             FF=PARU(1)*AS**3*(16D0*SQMQQ**2-27D0*(SHTH2+THUH2+UHSH2))/
31319      &            (72D0*SQMQQ*SQMQQR*SHTH2*THUH2*UHSH2)
31320             AA=(SHTH2*UH2+UHSH2*TH2+THUH2*SH2)/2D0
31321             BB=2D0*(SH2+TH2)
31322             CC=2D0*(SH2+UH2)
31323             DD=2D0*SH2
31324             IF(MSTP(147).EQ.0) THEN
31325                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31326      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31327             ELSEIF(MSTP(147).EQ.1) THEN
31328                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31329      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31330             ELSEIF(MSTP(147).EQ.3) THEN
31331                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31332      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31333             ELSEIF(MSTP(147).EQ.4) THEN
31334                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31335      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31336             ELSEIF(MSTP(147).EQ.5) THEN
31337                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31338      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31339             ELSEIF(MSTP(147).EQ.6) THEN
31340                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31341      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31342             ENDIF
31343             FACQQG=COMFAC*FF*FACQQG
31344           ENDIF
31345 C...Split total contribution into different colour flows just like
31346 C...in g g -> g g (recalculate kinematics for massless partons).
31347           THP=-0.5D0*SH*(1D0-CTH)
31348           UHP=-0.5D0*SH*(1D0+CTH)
31349           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
31350           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
31351           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
31352           FACGGS=FACGG1+FACGG2+FACGG3
31353           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31354              NCHN=NCHN+1
31355              ISIG(NCHN,1)=21
31356              ISIG(NCHN,2)=21
31357              ISIG(NCHN,3)=1
31358              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG1/FACGGS
31359              NCHN=NCHN+1
31360              ISIG(NCHN,1)=21
31361              ISIG(NCHN,2)=21
31362              ISIG(NCHN,3)=2
31363              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG2/FACGGS
31364              NCHN=NCHN+1
31365              ISIG(NCHN,1)=21
31366              ISIG(NCHN,2)=21
31367              ISIG(NCHN,3)=3
31368              SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG3/FACGGS
31369           ENDIF
31370  
31371         ELSEIF(ISUB.EQ.423) THEN
31372 C...g + g -> QQ~[1S08] + g
31373           IF(MSTP(145).EQ.0) THEN
31374 *            FACQQG=COMFAC*PARU(1)*AS**3*(5D0/16D0)*
31375 *     &           (SHTH2*UH2+THUH2*SH2+UHSH2*TH2)/(SQMQQR*SH*TH*UH)*
31376 *     &           (12D0*SQMQQ*SH*TH*UH+SHTH2**2+THUH2**2+UHSH2**2)/
31377 *     &           (SHTH2*THUH2*UHSH2)
31378             FACQQG=COMFAC*PARU(1)*AS**3*(5D0/16D0)*SQMQQR*
31379      &            (UH2/(THUH2*UHSH2)+SH2/(SHTH2*UHSH2)+
31380      &            TH2/(SHTH2*THUH2))*
31381      &            (12D0+(SHTH2**2+THUH2**2+UHSH2**2)/(SQMQQ*SH*TH*UH))
31382           ELSE
31383             FA=PARU(1)*AS**3*(5D0/48D0)*SQMQQR*
31384      &            (UH2/(THUH2*UHSH2)+SH2/(SHTH2*UHSH2)+
31385      &            TH2/(SHTH2*THUH2))*
31386      &            (12D0+(SHTH2**2+THUH2**2+UHSH2**2)/(SQMQQ*SH*TH*UH))
31387             IF(MSTP(147).EQ.0) THEN
31388                FACQQG=COMFAC*FA
31389             ELSEIF(MSTP(147).EQ.1) THEN
31390                FACQQG=COMFAC*2D0*FA
31391             ELSEIF(MSTP(147).EQ.3) THEN
31392                FACQQG=COMFAC*FA
31393             ELSEIF(MSTP(147).EQ.4) THEN
31394                FACQQG=COMFAC*FA
31395             ELSEIF(MSTP(147).EQ.5) THEN
31396                FACQQG=0D0
31397             ELSEIF(MSTP(147).EQ.6) THEN
31398                FACQQG=0D0
31399             ENDIF
31400           ENDIF
31401 C...Split total contribution into different colour flows just like
31402 C...in g g -> g g (recalculate kinematics for massless partons).
31403           THP=-0.5D0*SH*(1D0-CTH)
31404           UHP=-0.5D0*SH*(1D0+CTH)
31405           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
31406           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
31407           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
31408           FACGGS=FACGG1+FACGG2+FACGG3
31409           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31410              NCHN=NCHN+1
31411              ISIG(NCHN,1)=21
31412              ISIG(NCHN,2)=21
31413              ISIG(NCHN,3)=1
31414              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG1/FACGGS
31415              NCHN=NCHN+1
31416              ISIG(NCHN,1)=21
31417              ISIG(NCHN,2)=21
31418              ISIG(NCHN,3)=2
31419              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG2/FACGGS
31420              NCHN=NCHN+1
31421              ISIG(NCHN,1)=21
31422              ISIG(NCHN,2)=21
31423              ISIG(NCHN,3)=3
31424              SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG3/FACGGS
31425           ENDIF
31426  
31427         ELSEIF(ISUB.EQ.424) THEN
31428 C...g + g -> QQ~[3PJ8] + g
31429           POLY=SH2+SH*TH+TH2
31430           IF(MSTP(145).EQ.0) THEN
31431             FACQQG=COMFAC*5D0*PARU(1)*AS**3*(3D0*SH*TH*SHTH*POLY**4
31432      &            -SQMQQ*POLY**2*(7D0*SH**6+36D0*SH**5*TH+45D0*SH**4*TH2
31433      &            +28D0*SH**3*TH**3+45D0*SH2*TH**4+36D0*SH*TH**5
31434      &            +7D0*TH**6)
31435      &            +SQMQQ**2*SHTH*(35D0*SH**8+169D0*SH**7*TH
31436      &            +299D0*SH**6*TH2+401D0*SH**5*TH**3+418D0*SH**4*TH**4
31437      &            +401D0*SH**3*TH**5+299D0*SH2*TH**6+169D0*SH*TH**7
31438      &            +35D0*TH**8)
31439      &            -SQMQQ**3*(84D0*SH**8+432D0*SH**7*TH+905D0*SH**6*TH2
31440      &            +1287D0*SH**5*TH**3+1436D0*SH**4*TH**4
31441      &            +1287D0*SH**3*TH**5+905D0*SH2*TH**6+432D0*SH*TH**7
31442      &            +84D0*TH**8)
31443      &            +SQMQQ**4*SHTH*(126D0*SH**6+451D0*SH**5*TH
31444      &            +677D0*SH**4*TH2+836D0*SH**3*TH**3+677D0*SH2*TH**4
31445      &            +451D0*SH*TH**5+126D0*TH**6)
31446      &            -3D0*SQMQQ**5*(42D0*SH**6+171D0*SH**5*TH
31447      &            +304D0*SH**4*TH2+362D0*SH**3*TH**3+304D0*SH2*TH**4
31448      &            +171D0*SH*TH**5+42D0*TH**6)
31449      &            +2D0*SQMQQ**6*SHTH*(42D0*SH**4+106D0*SH**3*TH
31450      &            +119D0*SH2*TH2+106D0*SH*TH**3+42D0*TH**4)
31451      &            -SQMQQ**7*(35D0*SH**4+99D0*SH**3*TH+120D0*SH2*TH2
31452      &            +99D0*SH*TH**3+35D0*TH**4)
31453      &            +7D0*SQMQQ**8*SHTH*POLY)/
31454      &            (SH*TH*UH*SQMQQR*SQMQQ*
31455      &            SHTH*SHTH2*THUH*THUH2*UHSH*UHSH2)
31456           ELSE
31457             FF=-5D0*PARU(1)*AS**3/(SH2*TH2*UH2
31458      &            *SQMQQR*SQMQQ*SHTH*SHTH2*THUH*THUH2*UHSH*UHSH2)
31459             AA=SH*TH*UH*(SH*TH*SHTH*POLY**4
31460      &           -SQMQQ*SHTH2*POLY**2*
31461      &           (SH**4+6D0*SH**3*TH-6D0*SH2*TH2+6D0*SH*TH**3+TH**4)
31462      &           +SQMQQ**2*SHTH*(5D0*SH**8+35D0*SH**7*TH+49D0*SH**6*TH2
31463      &           +57D0*SH**5*TH**3+46D0*SH**4*TH**4+57D0*SH**3*TH**5
31464      &           +49D0*SH2*TH**6+35D0*SH*TH**7+5D0*TH**8)
31465      &           -SQMQQ**3*(16D0*SH**8+104D0*SH**7*TH+215D0*SH**6*TH2
31466      &           +291D0*SH**5*TH**3+316D0*SH**4*TH**4+291D0*SH**3*TH**5
31467      &           +215D0*SH2*TH**6+104D0*SH*TH**7+16D0*TH**8)
31468      &           +SQMQQ**4*SHTH*(34D0*SH**6+145D0*SH**5*TH
31469      &           +211D0*SH**4*TH2+262D0*SH**3*TH**3+211D0*SH2*TH**4
31470      &           +145D0*SH*TH**5+34D0*TH**6)
31471      &           -SQMQQ**5*(44D0*SH**6+193D0*SH**5*TH+346D0*SH**4*TH2
31472      &           +410D0*SH**3*TH**3+346D0*SH2*TH**4+193D0*SH*TH**5
31473      &           +44D0*TH**6)
31474      &           +2D0*SQMQQ**6*SHTH*(17D0*SH**4+45D0*SH**3*TH
31475      &           +49D0*SH2*TH2+45D0*SH*TH**3+17D0*TH**4)
31476      &           -SQMQQ**7*(3D0*SH2+2D0*SH*TH+3D0*TH2)
31477      &           *(5D0*SH2+11D0*SH*TH+5D0*TH2)
31478      &           +3D0*SQMQQ**8*SHTH*POLY)
31479             BB=4D0*SHTH2*POLY**3
31480      &           *(SH**4+SH**3*TH-SH2*TH2+SH*TH**3+TH**4)
31481      &           -SQMQQ*SHTH*(20D0*SH**10+84D0*SH**9*TH+166D0*SH**8*TH2
31482      &           +231D0*SH**7*TH**3+250D0*SH**6*TH**4+250D0*SH**5*TH**5
31483      &           +250D0*SH**4*TH**6+231D0*SH**3*TH**7+166D0*SH2*TH**8
31484      &           +84D0*SH*TH**9+20D0*TH**10)
31485      &           +SQMQQ**2*SHTH2*(40D0*SH**8+86D0*SH**7*TH
31486      &           +66D0*SH**6*TH2+67D0*SH**5*TH**3+6D0*SH**4*TH**4
31487      &           +67D0*SH**3*TH**5+66D0*SH2*TH**6+86D0*SH*TH**7
31488      &           +40D0*TH**8)
31489      &           -SQMQQ**3*SHTH*(40D0*SH**8+57D0*SH**7*TH
31490      &           -110D0*SH**6*TH2-263D0*SH**5*TH**3-384D0*SH**4*TH**4
31491      &           -263D0*SH**3*TH**5-110D0*SH2*TH**6+57D0*SH*TH**7
31492      &           +40D0*TH**8)
31493      &           +SQMQQ**4*(20D0*SH**8-33D0*SH**7*TH-368D0*SH**6*TH2
31494      &           -751D0*SH**5*TH**3-920D0*SH**4*TH**4-751D0*SH**3*TH**5
31495      &           -368D0*SH2*TH**6-33D0*SH*TH**7+20D0*TH**8)
31496      &           -SQMQQ**5*SHTH*(4D0*SH**6-81D0*SH**5*TH-242D0*SH**4*TH2
31497      &           -250D0*SH**3*TH**3-242D0*SH2*TH**4-81D0*SH*TH**5
31498      &           +4D0*TH**6)
31499      &           -SQMQQ**6*SH*TH*(41D0*SH**4+120D0*SH**3*TH
31500      &           +142D0*SH2*TH2+120D0*SH*TH**3+41D0*TH**4)
31501      &           +8D0*SQMQQ**7*SH*TH*SHTH*POLY
31502             CC=4D0*TH2*POLY**3
31503      &           *(-SH**4-2D0*SH**3*TH+2D0*SH2*TH2+3D0*SH*TH**3+TH**4)
31504      &           -SQMQQ*TH2*(-20D0*SH**9-56D0*SH**8*TH-24D0*SH**7*TH2
31505      &           +147D0*SH**6*TH**3+409D0*SH**5*TH**4+599D0*SH**4*TH**5
31506      &           +571D0*SH**3*TH**6+370D0*SH2*TH**7+148D0*SH*TH**8
31507      &           +28D0*TH**9)
31508      &           +SQMQQ**2*(4D0*SH**10+20D0*SH**9*TH-16D0*SH**8*TH2
31509      &           -48D0*SH**7*TH**3+150D0*SH**6*TH**4+611D0*SH**5*TH**5
31510      &           +1060D0*SH**4*TH**6+1155D0*SH**3*TH**7+854D0*SH2*TH**8
31511      &           +394D0*SH*TH**9+84D0*TH**10)
31512      &           -SQMQQ**3*SHTH*(20D0*SH**8+68D0*SH**7*TH-20D0*SH**6*TH2
31513      &           +32D0*SH**5*TH**3+286D0*SH**4*TH**4+577D0*SH**3*TH**5
31514      &           +618D0*SH2*TH**6+443D0*SH*TH**7+140D0*TH**8)
31515      &           +SQMQQ**4*(40D0*SH**8+152D0*SH**7*TH+94D0*SH**6*TH2
31516      &           +38D0*SH**5*TH**3+290D0*SH**4*TH**4+631D0*SH**3*TH**5
31517      &           +738D0*SH2*TH**6+513D0*SH*TH**7+140D0*TH**8)
31518      &           -SQMQQ**5*(40D0*SH**7+129D0*SH**6*TH+53D0*SH**5*TH2
31519      &           +7D0*SH**4*TH**3+129D0*SH**3*TH**4+264D0*SH2*TH**5
31520      &           +266D0*SH*TH**6+84D0*TH**7)
31521      &           +SQMQQ**6*(20D0*SH**6+55D0*SH**5*TH+2D0*SH**4*TH2
31522      &           -15D0*SH**3*TH**3+30D0*SH2*TH**4+76D0*SH*TH**5
31523      &           +28D0*TH**6)
31524      &           -SQMQQ**7*SHTH*(4D0*SH**4+7D0*SH**3*TH-14D0*SH2*TH2
31525      &           +7D0*SH*TH**3+4*TH**4)
31526      &           +SQMQQ**8*SH*(SH-TH)**2*TH
31527             DD=2D0*TH2*SHTH2*POLY**3
31528      &           *(-SH2+2*SH*TH+2*TH2)
31529      &           +SQMQQ*(4D0*SH**11+22D0*SH**10*TH+70D0*SH**9*TH2
31530      &           +115D0*SH**8*TH**3+71D0*SH**7*TH**4-119D0*SH**6*TH**5
31531      &           -381D0*SH**5*TH**6-552D0*SH**4*TH**7-512D0*SH**3*TH**8
31532      &           -320D0*SH2*TH**9-126D0*SH*TH**10-24D0*TH**11)
31533      &           -SQMQQ**2*SHTH*(20D0*SH**9+84D0*SH**8*TH
31534      &           +212D0*SH**7*TH2+247D0*SH**6*TH**3+105D0*SH**5*TH**4
31535      &           -178D0*SH**4*TH**5-380D0*SH**3*TH**6-364D0*SH2*TH**7
31536      &           -210D0*SH*TH**8-60D0*TH**9)
31537      &           +SQMQQ**3*SHTH*(40D0*SH**8+159D0*SH**7*TH
31538      &           +374D0*SH**6*TH2+404D0*SH**5*TH**3+192D0*SH**4*TH**4
31539      &           -141D0*SH**3*TH**5-264D0*SH2*TH**6-216D0*SH*TH**7
31540      &           -80D0*TH**8)
31541      &           -SQMQQ**4*(40D0*SH**8+197D0*SH**7*TH+506D0*SH**6*TH2
31542      &           +672D0*SH**5*TH**3+460D0*SH**4*TH**4+79D0*SH**3*TH**5
31543      &           -138D0*SH2*TH**6-164D0*SH*TH**7-60D0*TH**8)
31544      &           +SQMQQ**5*(20D0*SH**7+107D0*SH**6*TH+267D0*SH**5*TH2
31545      &           +307D0*SH**4*TH**3+185D0*SH**3*TH**4+56D0*SH2*TH**5
31546      &           -30D0*SH*TH**6-24D0*TH**7)
31547      &           -SQMQQ**6*(4D0*SH**6+31D0*SH**5*TH+74D0*SH**4*TH2
31548      &           +71D0*SH**3*TH**3+46D0*SH2*TH**4+10D0*SH*TH**5
31549      &           -4D0*TH**6)
31550      &           +4D0*SQMQQ**7*SH*TH*SHTH*POLY
31551             IF(MSTP(147).EQ.0) THEN
31552                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31553      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31554             ELSEIF(MSTP(147).EQ.1) THEN
31555                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31556      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31557             ELSEIF(MSTP(147).EQ.3) THEN
31558                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31559      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31560             ELSEIF(MSTP(147).EQ.4) THEN
31561                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31562      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31563             ELSEIF(MSTP(147).EQ.5) THEN
31564                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31565      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31566             ELSEIF(MSTP(147).EQ.6) THEN
31567                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31568      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31569             ENDIF
31570             FACQQG=COMFAC*FF*FACQQG
31571           ENDIF
31572 C...Split total contribution into different colour flows just like
31573 C...in g g -> g g (recalculate kinematics for massless partons).
31574           THP=-0.5D0*SH*(1D0-CTH)
31575           UHP=-0.5D0*SH*(1D0+CTH)
31576           FACGG1=(SH/THP)**2+2D0*SH/THP+3D0+2D0*THP/SH+(THP/SH)**2
31577           FACGG2=(UHP/SH)**2+2D0*UHP/SH+3D0+2D0*SH/UHP+(SH/UHP)**2
31578           FACGG3=(THP/UHP)**2+2D0*THP/UHP+3D0+2D0*UHP/THP+(UHP/THP)**2
31579           FACGGS=FACGG1+FACGG2+FACGG3
31580           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31581              NCHN=NCHN+1
31582              ISIG(NCHN,1)=21
31583              ISIG(NCHN,2)=21
31584              ISIG(NCHN,3)=1
31585              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG1/FACGGS
31586              NCHN=NCHN+1
31587              ISIG(NCHN,1)=21
31588              ISIG(NCHN,2)=21
31589              ISIG(NCHN,3)=2
31590              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG2/FACGGS
31591              NCHN=NCHN+1
31592              ISIG(NCHN,1)=21
31593              ISIG(NCHN,2)=21
31594              ISIG(NCHN,3)=3
31595              SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG3/FACGGS
31596           ENDIF
31597  
31598         ELSEIF(ISUB.EQ.425) THEN
31599 C...q + g -> q + QQ~[3S18]
31600           IF(MSTP(145).EQ.0) THEN
31601             FACQQG=-COMFAC*PARU(1)*AS**3*(1D0/27D0)*
31602      &            (4D0*(SH2+UH2)-SH*UH)*(SHTH2+THUH2)/
31603      &            (SQMQQ*SQMQQR*SH*UH*UHSH2)
31604           ELSE
31605             FF=PARU(1)*AS**3*(4D0*(SH2+UH2)-SH*UH)/
31606      &            (54D0*SQMQQ*SQMQQR*SH*UH*UHSH2)
31607             AA=SHTH2+THUH2
31608             BB=4D0
31609             CC=8D0
31610             DD=4D0
31611             IF(MSTP(147).EQ.0) THEN
31612                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31613      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31614             ELSEIF(MSTP(147).EQ.1) THEN
31615                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31616      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31617             ELSEIF(MSTP(147).EQ.3) THEN
31618                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31619      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31620             ELSEIF(MSTP(147).EQ.4) THEN
31621                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31622      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31623             ELSEIF(MSTP(147).EQ.5) THEN
31624                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31625      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31626             ELSEIF(MSTP(147).EQ.6) THEN
31627                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31628      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31629             ENDIF
31630             FACQQG=COMFAC*FF*FACQQG
31631           ENDIF
31632 C...Split total contribution into different colour flows just like
31633 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
31634 C...(recalculate kinematics for massless partons).
31635           THP=-0.5D0*SH*(1D0-CTH)
31636           UHP=-0.5D0*SH*(1D0+CTH)
31637           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
31638           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
31639           FACQGS=FACQG1+FACQG2
31640           DO 2442 I=MMINA,MMAXA
31641             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2442
31642             DO 2441 ISDE=1,2
31643               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2441
31644               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2441
31645               NCHN=NCHN+1
31646               ISIG(NCHN,ISDE)=I
31647               ISIG(NCHN,3-ISDE)=21
31648               ISIG(NCHN,3)=1
31649               SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACQG1/FACQGS
31650               NCHN=NCHN+1
31651               ISIG(NCHN,ISDE)=I
31652               ISIG(NCHN,3-ISDE)=21
31653               ISIG(NCHN,3)=2
31654               SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACQG2/FACQGS
31655  2441       CONTINUE
31656  2442     CONTINUE
31657  
31658         ELSEIF(ISUB.EQ.426) THEN
31659 C...q + g -> q + QQ~[1S08]
31660           IF(MSTP(145).EQ.0) THEN
31661             FACQQG=-COMFAC*PARU(1)*AS**3*(5D0/18D0)*
31662      &            (SH2+UH2)/(SQMQQR*TH*UHSH2)
31663           ELSE
31664             FA=-PARU(1)*AS**3*(5D0/54D0)*(SH2+UH2)/(SQMQQR*TH*UHSH2)
31665             IF(MSTP(147).EQ.0) THEN
31666                FACQQG=COMFAC*FA
31667             ELSEIF(MSTP(147).EQ.1) THEN
31668                FACQQG=COMFAC*2D0*FA
31669             ELSEIF(MSTP(147).EQ.3) THEN
31670                FACQQG=COMFAC*FA
31671             ELSEIF(MSTP(147).EQ.4) THEN
31672                FACQQG=COMFAC*FA
31673             ELSEIF(MSTP(147).EQ.5) THEN
31674                FACQQG=0D0
31675             ELSEIF(MSTP(147).EQ.6) THEN
31676                FACQQG=0D0
31677             ENDIF
31678           ENDIF
31679 C...Split total contribution into different colour flows just like
31680 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
31681 C...(recalculate kinematics for massless partons).
31682           THP=-0.5D0*SH*(1D0-CTH)
31683           UHP=-0.5D0*SH*(1D0+CTH)
31684           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
31685           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
31686           FACQGS=FACQG1+FACQG2
31687           DO 2444 I=MMINA,MMAXA
31688             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2444
31689             DO 2443 ISDE=1,2
31690               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2443
31691               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2443
31692               NCHN=NCHN+1
31693               ISIG(NCHN,ISDE)=I
31694               ISIG(NCHN,3-ISDE)=21
31695               ISIG(NCHN,3)=1
31696               SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACQG1/FACQGS
31697               NCHN=NCHN+1
31698               ISIG(NCHN,ISDE)=I
31699               ISIG(NCHN,3-ISDE)=21
31700               ISIG(NCHN,3)=2
31701               SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACQG2/FACQGS
31702  2443       CONTINUE
31703  2444     CONTINUE
31704  
31705         ELSEIF(ISUB.EQ.427) THEN
31706 C...q + g -> q + QQ~[3PJ8]
31707           IF(MSTP(145).EQ.0) THEN
31708             FACQQG=-COMFAC*PARU(1)*AS**3*(10D0/9D0)*
31709      &            ((7D0*UHSH+8D0*TH)*(SH2+UH2)
31710      &            +4D0*TH*(2D0*SQMQQ**2-SHTH2-THUH2))/
31711      &            (SQMQQ*SQMQQR*TH*UHSH2*UHSH)
31712           ELSE
31713             FF=10D0*PARU(1)*AS**3/
31714      &            (9D0*SQMQQ*SQMQQR*TH2*UHSH2*UHSH)
31715             AA=TH*UHSH*(2D0*SQMQQ**2+SHTH2+THUH2)
31716             BB=8D0*(SHTH2+TH*UH)
31717             CC=8D0*UHSH*(SHTH+THUH)
31718             DD=4D0*(2D0*SQMQQ*SH+TH*UHSH)
31719             IF(MSTP(147).EQ.0) THEN
31720                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31721      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31722             ELSEIF(MSTP(147).EQ.1) THEN
31723                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31724      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31725             ELSEIF(MSTP(147).EQ.3) THEN
31726                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31727      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31728             ELSEIF(MSTP(147).EQ.4) THEN
31729                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31730      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31731             ELSEIF(MSTP(147).EQ.5) THEN
31732                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31733      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31734             ELSEIF(MSTP(147).EQ.6) THEN
31735                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31736      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31737             ENDIF
31738             FACQQG=COMFAC*FF*FACQQG
31739           ENDIF
31740 C...Split total contribution into different colour flows just like
31741 C...in ISUB.EQ.28 [f + g -> f + g (q + g -> q + g only)]
31742 C...(recalculate kinematics for massless partons).
31743           THP=-0.5D0*SH*(1D0-CTH)
31744           UHP=-0.5D0*SH*(1D0+CTH)
31745           FACQG1=9D0/4D0*(UHP/THP)**2-UHP/SH
31746           FACQG2=9D0/4D0*(SH/THP)**2-SH/UHP
31747           FACQGS=FACQG1+FACQG2
31748           DO 2446 I=MMINA,MMAXA
31749             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2446
31750             DO 2445 ISDE=1,2
31751               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2445
31752               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2445
31753               NCHN=NCHN+1
31754               ISIG(NCHN,ISDE)=I
31755               ISIG(NCHN,3-ISDE)=21
31756               ISIG(NCHN,3)=1
31757               SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACQG1/FACQGS
31758               NCHN=NCHN+1
31759               ISIG(NCHN,ISDE)=I
31760               ISIG(NCHN,3-ISDE)=21
31761               ISIG(NCHN,3)=2
31762               SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACQG2/FACQGS
31763  2445       CONTINUE
31764  2446     CONTINUE
31765  
31766         ELSEIF(ISUB.EQ.428) THEN
31767 C...q + q~ -> g + QQ~[3S18]
31768           IF(MSTP(145).EQ.0) THEN
31769             FACQQG=COMFAC*PARU(1)*AS**3*(8D0/81D0)*
31770      &            (4D0*(TH2+UH2)-TH*UH)*(SHTH2+UHSH2)/
31771      &            (SQMQQ*SQMQQR*TH*UH*THUH2)
31772           ELSE
31773             FF=-4D0*PARU(1)*AS**3*(4D0*(TH2+UH2)-TH*UH)/
31774      &            (81D0*SQMQQ*SQMQQR*TH*UH*THUH2)
31775             AA=SHTH2+UHSH2
31776             BB=4D0
31777             CC=4D0
31778             DD=0D0
31779             IF(MSTP(147).EQ.0) THEN
31780                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31781      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31782             ELSEIF(MSTP(147).EQ.1) THEN
31783                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31784      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31785             ELSEIF(MSTP(147).EQ.3) THEN
31786                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31787      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31788             ELSEIF(MSTP(147).EQ.4) THEN
31789                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31790      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31791             ELSEIF(MSTP(147).EQ.5) THEN
31792                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31793      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31794             ELSEIF(MSTP(147).EQ.6) THEN
31795                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31796      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31797             ENDIF
31798             FACQQG=COMFAC*FF*FACQQG
31799           ENDIF
31800 C...Split total contribution into different colour flows just like
31801 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31802 C...(recalculate kinematics for massless partons).
31803           THP=-0.5D0*SH*(1D0-CTH)
31804           UHP=-0.5D0*SH*(1D0+CTH)
31805           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31806           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31807           FACGGS=FACGG1+FACGG2
31808           DO 2447 I=MMINA,MMAXA
31809             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31810      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2447
31811             NCHN=NCHN+1
31812             ISIG(NCHN,1)=I
31813             ISIG(NCHN,2)=-I
31814             ISIG(NCHN,3)=1
31815             SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG1/FACGGS
31816             NCHN=NCHN+1
31817             ISIG(NCHN,1)=I
31818             ISIG(NCHN,2)=-I
31819             ISIG(NCHN,3)=2
31820             SIGH(NCHN)=FACQQG*PARP(IONIUM+2)*FACGG2/FACGGS
31821  2447     CONTINUE
31822  
31823         ELSEIF(ISUB.EQ.429) THEN
31824 C...q + q~ -> g + QQ~[1S08]
31825           IF(MSTP(145).EQ.0) THEN
31826             FACQQG=COMFAC*PARU(1)*AS**3*(20D0/27D0)*
31827      &            (TH2+UH2)/(SQMQQR*SH*THUH2)
31828           ELSE
31829             FA=PARU(1)*AS**3*(20D0/81D0)*(TH2+UH2)/(SQMQQR*SH*THUH2)
31830             IF(MSTP(147).EQ.0) THEN
31831                FACQQG=COMFAC*FA
31832             ELSEIF(MSTP(147).EQ.1) THEN
31833                FACQQG=COMFAC*2D0*FA
31834             ELSEIF(MSTP(147).EQ.3) THEN
31835                FACQQG=COMFAC*FA
31836             ELSEIF(MSTP(147).EQ.4) THEN
31837                FACQQG=COMFAC*FA
31838             ELSEIF(MSTP(147).EQ.5) THEN
31839                FACQQG=0D0
31840             ELSEIF(MSTP(147).EQ.6) THEN
31841                FACQQG=0D0
31842             ENDIF
31843           ENDIF
31844 C...Split total contribution into different colour flows just like
31845 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31846 C...(recalculate kinematics for massless partons).
31847           THP=-0.5D0*SH*(1D0-CTH)
31848           UHP=-0.5D0*SH*(1D0+CTH)
31849           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31850           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31851           FACGGS=FACGG1+FACGG2
31852           DO 2448 I=MMINA,MMAXA
31853             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31854      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2448
31855             NCHN=NCHN+1
31856             ISIG(NCHN,1)=I
31857             ISIG(NCHN,2)=-I
31858             ISIG(NCHN,3)=1
31859             SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG1/FACGGS
31860             NCHN=NCHN+1
31861             ISIG(NCHN,1)=I
31862             ISIG(NCHN,2)=-I
31863             ISIG(NCHN,3)=2
31864             SIGH(NCHN)=FACQQG*PARP(IONIUM+3)*FACGG2/FACGGS
31865  2448     CONTINUE
31866  
31867         ELSEIF(ISUB.EQ.430) THEN
31868 C...q + q~ -> g + QQ~[3PJ8]
31869           IF(MSTP(145).EQ.0) THEN
31870             FACQQG=COMFAC*PARU(1)*AS**3*(80D0/27D0)*
31871      &            ((7D0*THUH+8D0*SH)*(TH2+UH2)
31872      &            +4D0*SH*(2D0*SQMQQ**2-SHTH2-UHSH2))/
31873      &            (SQMQQ*SQMQQR*SH*THUH2*THUH)
31874           ELSE
31875             FF=-80D0*PARU(1)*AS**3/(27D0*SQMQQ*SQMQQR*SH2*THUH2*THUH)
31876             AA=SH*THUH*(2D0*SQMQQ**2+SHTH2+UHSH2)
31877             BB=8D0*(UHSH2+SH*TH)
31878             CC=8D0*(SHTH2+SH*UH)
31879             DD=4D0*(SHTH2+UHSH2+SH*SQMQQ-SQMQQ**2)
31880             IF(MSTP(147).EQ.0) THEN
31881                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31882      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31883             ELSEIF(MSTP(147).EQ.1) THEN
31884                FACQQG=2D0*(-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31885      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11)))
31886             ELSEIF(MSTP(147).EQ.3) THEN
31887                FACQQG=-AA+SQMQQ*(BB*EL1K10*EL2K10+CC*EL1K20*EL2K20
31888      &              +DD*(EL1K10*EL2K20+EL1K20*EL2K10))
31889             ELSEIF(MSTP(147).EQ.4) THEN
31890                FACQQG=-AA+SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31891      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31892             ELSEIF(MSTP(147).EQ.5) THEN
31893                FACQQG=SQMQQ*(BB*EL1K11*EL2K10+CC*EL1K21*EL2K20
31894      &              +DD*(EL1K11*EL2K20+EL1K21*EL2K10))
31895             ELSEIF(MSTP(147).EQ.6) THEN
31896                FACQQG=SQMQQ*(BB*EL1K11*EL2K11+CC*EL1K21*EL2K21
31897      &              +DD*(EL1K11*EL2K21+EL1K21*EL2K11))
31898             ENDIF
31899             FACQQG=COMFAC*FF*FACQQG
31900           ENDIF
31901 C...Split total contribution into different colour flows just like
31902 C...in ISUB.EQ.13 [f + fbar -> g + g (q + qbar -> g + g only)]
31903 C...(recalculate kinematics for massless partons).
31904           THP=-0.5D0*SH*(1D0-CTH)
31905           UHP=-0.5D0*SH*(1D0+CTH)
31906           FACGG1=UH/TH-9D0/4D0*UH2/SH2
31907           FACGG2=TH/UH-9D0/4D0*TH2/SH2
31908           FACGGS=FACGG1+FACGG2
31909           DO 2449 I=MMINA,MMAXA
31910             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
31911      &            KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2449
31912             NCHN=NCHN+1
31913             ISIG(NCHN,1)=I
31914             ISIG(NCHN,2)=-I
31915             ISIG(NCHN,3)=1
31916             SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG1/FACGGS
31917             NCHN=NCHN+1
31918             ISIG(NCHN,1)=I
31919             ISIG(NCHN,2)=-I
31920             ISIG(NCHN,3)=2
31921             SIGH(NCHN)=FACQQG*PARP(IONIUM+4)*FACGG2/FACGGS
31922  2449     CONTINUE
31923  
31924         ELSEIF(ISUB.EQ.431) THEN
31925 C...g + g -> QQ~[3P01] + g
31926           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31927           QGTW=(SH*TH*UH)/SH**3
31928           RGTW=SQMQQ/SH
31929           IF(MSTP(145).EQ.0) THEN
31930             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(9D0*SQMQQR*SH)*
31931      &            (9D0*RGTW**2*PGTW**4*
31932      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
31933      &            -6D0*RGTW*PGTW**3*QGTW*
31934      &            (2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)
31935      &            -PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)
31936      &            +2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)
31937      &            +6D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31938           ELSE
31939             FC1=PARU(1)*AS**3*8D0/(27D0*SQMQQR*SH)*
31940      &            (9D0*RGTW**2*PGTW**4*
31941      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
31942      &            -6D0*RGTW*PGTW**3*QGTW*
31943      &            (2D0*RGTW**4-5D0*RGTW**2*PGTW+PGTW**2)
31944      &            -PGTW**2*QGTW**2*(RGTW**4+2D0*RGTW**2*PGTW-PGTW**2)
31945      &            +2D0*RGTW*PGTW*QGTW**3*(RGTW**2-PGTW)
31946      &            +6D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
31947             IF(MSTP(147).EQ.0) THEN
31948                FACQQG=COMFAC*FC1
31949             ELSEIF(MSTP(147).EQ.1) THEN
31950                FACQQG=COMFAC*2D0*FC1
31951             ELSEIF(MSTP(147).EQ.3) THEN
31952                FACQQG=COMFAC*FC1
31953             ELSEIF(MSTP(147).EQ.4) THEN
31954                FACQQG=COMFAC*FC1
31955             ELSEIF(MSTP(147).EQ.5) THEN
31956                FACQQG=0D0
31957             ELSEIF(MSTP(147).EQ.6) THEN
31958                FACQQG=0D0
31959             ENDIF
31960           ENDIF
31961           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
31962             NCHN=NCHN+1
31963             ISIG(NCHN,1)=21
31964             ISIG(NCHN,2)=21
31965             ISIG(NCHN,3)=1
31966             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
31967           ENDIF
31968  
31969         ELSEIF(ISUB.EQ.432) THEN
31970 C...g + g -> QQ~[3P11] + g
31971           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
31972           QGTW=(SH*TH*UH)/SH**3
31973           RGTW=SQMQQ/SH
31974           IF(MSTP(145).EQ.0) THEN
31975             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(3D0*SQMQQR*SH)*
31976      &            PGTW**2*(RGTW*PGTW**2*(RGTW**2-4D0*PGTW)
31977      &            +2D0*QGTW*(-RGTW**4+5D0*RGTW**2*PGTW+PGTW**2)
31978      &            -15D0*RGTW*QGTW**2)/(QGTW-RGTW*PGTW)**4
31979           ELSE
31980             FF=4D0/3D0*PARU(1)*AS**3*SQMQQR/SHTH2**2/THUH2**2/UHSH2**2
31981             C1=(4D0*PGTW**5+23D0*PGTW**2*QGTW**2
31982      &            +(-14D0*PGTW**3*QGTW+3D0*QGTW**3)*RGTW
31983      &            -(PGTW**4+2D0*PGTW*QGTW**2)*RGTW**2
31984      &            +3D0*PGTW**2*QGTW*RGTW**3)*SH2**5
31985             C2=2D0*SHTH2*(SH2*THUH*(SH*THUH*(SH-TH)*(SH-UH)
31986      &            -TH*UH*(TH-UH)**2)+SH2**2*(TH-UH)*(TH2+UH2-SH*THUH)
31987      &            *(PGTW**2-QGTW*(SH+2D0*UH)/SH))
31988             C3=2D0*UHSH2*(SH2*THUH*(SH*THUH*(SH-TH)*(SH-UH)
31989      &            -TH*UH*(TH-UH)**2)-SH2**2*(TH-UH)*(TH2+UH2-SH*THUH)
31990      &            *(PGTW**2-QGTW*(SH+2D0*TH)/SH))
31991             C4=-4D0*THUH*(TH-UH)**2*
31992      &            (TH**3*UH**3+SH2**2*(2D0*TH+UH)*(TH+2D0*UH)
31993      &            -SH2*TH*UH*(TH2+UH2))
31994      &            +4D0*THUH2*(SH**3*(SH2**2+TH2**2+UH2**2)
31995      &            -SH*TH*UH*(SH2**2+TH*UH*(TH2-3D0*TH*UH+UH2)
31996      &            +SH2*(5D0*THUH2-17D0*TH*UH)))
31997             IF(MSTP(147).EQ.0) THEN
31998                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
31999      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32000             ELSEIF(MSTP(147).EQ.1) THEN
32001                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32002      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
32003             ELSEIF(MSTP(147).EQ.3) THEN
32004                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32005      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32006             ELSEIF(MSTP(147).EQ.4) THEN
32007                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32008      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32009             ELSEIF(MSTP(147).EQ.5) THEN
32010                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
32011      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
32012             ELSEIF(MSTP(147).EQ.6) THEN
32013                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32014      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32015             ENDIF
32016             FACQQG=COMFAC*FF*FACQQG
32017           ENDIF
32018           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32019             NCHN=NCHN+1
32020             ISIG(NCHN,1)=21
32021             ISIG(NCHN,2)=21
32022             ISIG(NCHN,3)=1
32023             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32024           ENDIF
32025  
32026         ELSEIF(ISUB.EQ.433) THEN
32027 C...g + g -> QQ~[3P21] + g
32028           PGTW=(SH*TH+TH*UH+UH*SH)/SH2
32029           QGTW=(SH*TH*UH)/SH**3
32030           RGTW=SQMQQ/SH
32031           IF(MSTP(145).EQ.0) THEN
32032             FACQQG=COMFAC*PARU(1)*AS**3*8D0/(9D0*SQMQQR*SH)*
32033      &            (12D0*RGTW**2*PGTW**4*
32034      &            (RGTW**4-2D0*RGTW**2*PGTW+PGTW**2)
32035      &            -3D0*RGTW*PGTW**3*QGTW*
32036      &            (8D0*RGTW**4-RGTW**2*PGTW+4D0*PGTW**2)
32037      &            +2D0*PGTW**2*QGTW**2*
32038      &            (-7D0*RGTW**4+43D0*RGTW**2*PGTW+PGTW**2)
32039      &            +RGTW*PGTW*QGTW**3*(16D0*RGTW**2-61D0*PGTW)
32040      &            +12D0*RGTW**2*QGTW**4)/(QGTW*(QGTW-RGTW*PGTW)**4)
32041           ELSE
32042             FF=(16D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/
32043      &            (3D0*SH2*TH2*UH2*SHTH2**2*THUH2**2*UHSH2**2)
32044             C1=PGTW**2*QGTW*(PGTW*RGTW-QGTW)**2*(RGTW**2-2D0*PGTW)
32045      &            *SH*SH2**7
32046             C2=2D0*SHTH2*(-SH2**3*TH2**3-SH**5*TH**5*UH*SHTH
32047      &            +SH2**2*TH2**2*UH2*(8D0*SHTH2-5D0*SH*TH)
32048      &            +SH**3*TH**3*UH**3*SHTH*(17D0*SHTH2-2D0*SH*TH)
32049      &            +SH2*TH2*UH2**2*(105D0*SH2*TH2+64D0*SH*TH*(SH2+TH2)
32050      &            +10D0*(SH2**2+TH2**2))
32051      &            +SH2*TH2*UH**5*SHTH*(32D0*SHTH2+7D0*SH*TH)
32052      &            -UH2**3*(SH2**3-87D0*SH**3*TH**3+TH2**3
32053      &            -45D0*SH2*TH2*(SH2+TH2)-5D0*SH*TH*(SH2**2+TH2**2))
32054      &            +SH*TH*UH**7*SHTH*(7D0*SHTH2+12D0*SH*TH)
32055      &            +4D0*SH*TH*UH2**4*SHTH2)
32056             C3=2D0*UHSH2*(-SH2**3*UH2**3-SH**5*UH**5*TH*UHSH
32057      &            +SH2**2*UH2**2*TH2*(8D0*UHSH2-5D0*SH*UH)
32058      &            +SH**3*UH**3*TH**3*UHSH*(17D0*UHSH2-2D0*SH*UH)
32059      &            +SH2*UH2*TH2**2*(105D0*SH2*UH2+64D0*SH*UH*(SH2+UH2)
32060      &            +10D0*(SH2**2+UH2**2))
32061      &            +SH2*UH2*TH**5*UHSH*(32D0*UHSH2+7D0*SH*UH)
32062      &            -TH2**3*(SH2**3-87D0*SH**3*UH**3+UH2**3
32063      &            -45D0*SH2*UH2*(SH2+UH2)-5D0*SH*UH*(SH2**2+UH2**2))
32064      &            +SH*UH*TH**7*UHSH*(7D0*UHSH2+12D0*SH*UH)
32065      &            +4D0*SH*UH*TH2**4*UHSH2)
32066             C4=-2D0*SHTH*UHSH*(-2D0*TH2**3*UH2**3
32067      &            -SH**5*TH2*UH2*THUH*(5D0*TH+3D0*UH)*(3D0*TH+5D0*UH)
32068      &            +SH2**3*(2D0*TH+UH)*(TH+2D0*UH)*(TH2-UH2)**2
32069      &            -SH*TH2**2*UH2**2*THUH*(5D0*THUH2-4D0*TH*UH)
32070      &            -SH2*TH**3*UH**3*THUH2*(13D0*THUH2-16D0*TH*UH)
32071      &            -SH**3*TH2*UH2*(92D0*TH2*UH2*THUH
32072      &            +53D0*TH*UH*(TH**3+UH**3)+11D0*(TH**5+UH**5))
32073      &            -SH2**2*TH*UH*(114D0*TH**3*UH**3
32074      &            +83D0*TH2*UH2*(TH2+UH2)+28D0*TH*UH*(TH2**2+UH2**2)
32075      &            +3D0*(TH2**3+UH2**3)))
32076             C5=4D0*SH*TH*UH2*SHTH2*(2D0*SH*TH+SH*UH+TH*UH)**2
32077      &            *(2D0*UH*SQMQQ**2+SHTH*(SH*TH-UH2))
32078             C6=4D0*SH*UH*TH2*UHSH2*(2D0*SH*UH+SH*TH+TH*UH)**2
32079      &            *(2D0*TH*SQMQQ**2+UHSH*(SH*UH-TH2))
32080             C7=4D0*SH*TH*UH2*SHTH*(SH2**2*TH**3*(11D0*SH+16D0*TH)
32081      &            +SH**3*TH2*UH*(31D0*SH2+83D0*SH*TH+61D0*TH2)
32082      &            +SH2*TH*UH2*(19D0*SH**3+110D0*SH2*TH+156D0*SH*TH2+
32083      &            82D0*TH**3)
32084      &            +SH*TH*UH**3*(43D0*SH**3+132D0*SH2*TH+124D0*SH*TH2
32085      &            +45D0*TH**3)
32086      &            +TH*UH2**2*(37D0*SH**3+68D0*SH2*TH+43D0*SH*TH2+
32087      &            8D0*TH**3)
32088      &            +TH*UH**5*(11D0*SH2+13D0*SH*TH+5D0*TH2)
32089      &            +SH**3*UH**3*(3D0*UHSH2-2D0*SH*UH)
32090      &            +TH**5*UHSH*(5D0*UHSH2+2D0*SH*UH))
32091             C8=4D0*SH*UH*TH2*UHSH*(SH2**2*UH**3*(11D0*SH+16D0*UH)
32092      &            +SH**3*UH2*TH*(31D0*SH2+83D0*SH*UH+61D0*UH2)
32093      &            +SH2*UH*TH2*(19D0*SH**3+110D0*SH2*UH+156D0*SH*UH2+
32094      &            82D0*UH**3)
32095      &            +SH*UH*TH**3*(43D0*SH**3+132D0*SH2*UH+124D0*SH*UH2
32096      &            +45D0*UH**3)
32097      &            +UH*TH2**2*(37D0*SH**3+68D0*SH2*UH+43D0*SH*UH2+
32098      &            8D0*UH**3)
32099      &            +UH*TH**5*(11D0*SH2+13D0*SH*UH+5D0*UH2)
32100      &            +SH**3*TH**3*(3D0*SHTH2-2D0*SH*TH)
32101      &            +UH**5*SHTH*(5D0*SHTH2+2D0*SH*TH))
32102             C9=4D0*SHTH*UHSH*(2D0*TH**5*UH**5*THUH
32103      &            +4D0*SH*TH2**2*UH2**2*THUH2
32104      &            -SH2*TH**3*UH**3*THUH*(TH2+UH2)
32105      &            -2D0*SH**3*TH2*UH2*(THUH2**2+2D0*TH*UH*THUH2-TH2*UH2)
32106      &            +SH2**2*TH*UH*THUH*(-TH*UH*THUH2+3D0*(TH2**2+UH2**2))
32107      &            +SH**5*(4D0*TH2*UH2*(THUH2-TH*UH)
32108      &            +5D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3)))
32109             C0=-4D0*(2D0*TH2**3*UH2**3*SQMQQ
32110      &            -SH2*TH2**2*UH2**2*THUH*(19D0*THUH2-4D0*TH*UH)
32111      &            -SH**3*TH**3*UH**3*THUH2*(32D0*THUH2+29D0*TH*UH)
32112      &            -SH2**2*TH2*UH2*THUH*(264D0*TH2*UH2
32113      &            +136D0*TH*UH*(TH2+UH2)+15D0*(TH2**2+UH2**2))
32114      &            +SH**5*TH*UH*(-428D0*TH**3*UH**3
32115      &            -256D0*TH2*UH2*(TH2+UH2)-43D0*TH*UH*(TH2**2+UH2**2)
32116      &            +2D0*(TH2**3+UH2**3))
32117      &            +SH**7*(-46D0*TH**3*UH**3-21D0*TH2*UH2*(TH2+UH2)
32118      &            +2D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3))
32119      &            +SH2**3*THUH*(-134*TH**3*UH**3-53D0*TH2*UH2*(TH2+UH2)
32120      &            +4D0*TH*UH*(TH2**2+UH2**2)+2D0*(TH2**3+UH2**3)))
32121             IF(MSTP(147).EQ.0) THEN
32122                FACQQG=1D0/3D0*(C1*3D0
32123      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
32124      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
32125      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
32126      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
32127      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
32128      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32129      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32130      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
32131      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32132      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32133      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
32134      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
32135             ELSEIF(MSTP(147).EQ.1) THEN
32136                FACQQG=C1*2D0
32137      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
32138      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
32139      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
32140      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
32141      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
32142      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
32143      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
32144      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
32145      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
32146      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
32147      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
32148      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
32149      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
32150             ELSEIF(MSTP(147).EQ.2) THEN
32151                FACQQG=2D0*(C1
32152      &              -C2*EL1K11*EL2K11
32153      &              -C3*EL1K21*EL2K21
32154      &              -C4*EL1K11*EL2K21
32155      &              +C5*(EL1K11*EL2K11)**2
32156      &              +C6*(EL1K21*EL2K21)**2
32157      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
32158      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
32159      &              +(C9+C0)*(EL1K11*EL2K21)**2)
32160             ENDIF
32161             FACQQG=COMFAC*FF*FACQQG
32162           ENDIF
32163           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
32164             NCHN=NCHN+1
32165             ISIG(NCHN,1)=21
32166             ISIG(NCHN,2)=21
32167             ISIG(NCHN,3)=1
32168             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32169           ENDIF
32170  
32171         ELSEIF(ISUB.EQ.434) THEN
32172 C...q + g -> q + QQ~[3P01]
32173           IF(MSTP(145).EQ.0) THEN
32174             FACQQG=-COMFAC*PARU(1)*AS**3*(16D0/81D0)*
32175      &            (TH-3D0*SQMQQ)**2*(SH2+UH2)/(SQMQQR*TH*UHSH2**2)
32176           ELSE
32177             FA=-PARU(1)*AS**3*(16D0/243D0)*
32178      &            (TH-3D0*SQMQQ)**2*(SH2+UH2)/(SQMQQR*TH*UHSH2**2)
32179             IF(MSTP(147).EQ.0) THEN
32180                FACQQG=COMFAC*FA
32181             ELSEIF(MSTP(147).EQ.1) THEN
32182                FACQQG=COMFAC*2D0*FA
32183             ELSEIF(MSTP(147).EQ.3) THEN
32184                FACQQG=COMFAC*FA
32185             ELSEIF(MSTP(147).EQ.4) THEN
32186                FACQQG=COMFAC*FA
32187             ELSEIF(MSTP(147).EQ.5) THEN
32188                FACQQG=0D0
32189             ELSEIF(MSTP(147).EQ.6) THEN
32190                FACQQG=0D0
32191             ENDIF
32192           ENDIF
32193           DO 2452 I=MMINA,MMAXA
32194             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2452
32195             DO 2451 ISDE=1,2
32196               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2451
32197               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2451
32198               NCHN=NCHN+1
32199               ISIG(NCHN,ISDE)=I
32200               ISIG(NCHN,3-ISDE)=21
32201               ISIG(NCHN,3)=1
32202               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32203  2451       CONTINUE
32204  2452     CONTINUE
32205  
32206         ELSEIF(ISUB.EQ.435) THEN
32207 C...q + g -> q + QQ~[3P11]
32208           IF(MSTP(145).EQ.0) THEN
32209             FACQQG=-COMFAC*PARU(1)*AS**3*(32D0/27D0)*
32210      &            (4D0*SQMQQ*SH*UH+TH*(SH2+UH2))/(SQMQQR*UHSH2**2)
32211           ELSE
32212             FF=(64D0*PARU(1)*AS**3*SQMQQR)/(27D0*UHSH2**2)
32213             C1=SH*UH
32214             C2=2D0*SH
32215             C3=0D0
32216             C4=2D0*(SH-UH)
32217             IF(MSTP(147).EQ.0) THEN
32218                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32219      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32220             ELSEIF(MSTP(147).EQ.1) THEN
32221                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32222      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
32223             ELSEIF(MSTP(147).EQ.3) THEN
32224                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32225      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32226             ELSEIF(MSTP(147).EQ.4) THEN
32227                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32228      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32229             ELSEIF(MSTP(147).EQ.5) THEN
32230                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
32231      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
32232             ELSEIF(MSTP(147).EQ.6) THEN
32233                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32234      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32235             ENDIF
32236             FACQQG=COMFAC*FF*FACQQG
32237           ENDIF
32238           DO 2454 I=MMINA,MMAXA
32239             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2454
32240             DO 2453 ISDE=1,2
32241               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2453
32242               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2453
32243               NCHN=NCHN+1
32244               ISIG(NCHN,ISDE)=I
32245               ISIG(NCHN,3-ISDE)=21
32246               ISIG(NCHN,3)=1
32247               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32248  2453       CONTINUE
32249  2454     CONTINUE
32250  
32251         ELSEIF(ISUB.EQ.436) THEN
32252 C...q + g -> q + QQ~[3P21]
32253           IF(MSTP(145).EQ.0) THEN
32254             FACQQG=-COMFAC*PARU(1)*AS**3*(32D0/81D0)*
32255      &            ((6D0*SQMQQ**2+TH2)*UHSH2
32256      &            -2D0*SH*UH*(TH2+6D0*SQMQQ*UHSH))/
32257      &            (SQMQQR*TH*UHSH2**2)
32258           ELSE
32259             FF=-(32D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/(27D0*TH2*UHSH2**2)
32260             C1=TH*UHSH2
32261             C2=4D0*(SH2+TH2+2D0*TH*UHSH)
32262             C3=4D0*UHSH2
32263             C4=8D0*SH*UHSH
32264             C5=8D0*TH
32265             C6=0D0
32266             C7=16D0*TH
32267             C8=0D0
32268             C9=-16D0*UHSH
32269             C0=16D0*SQMQQ
32270             IF(MSTP(147).EQ.0) THEN
32271                FACQQG=1D0/3D0*(C1*3D0
32272      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
32273      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
32274      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
32275      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
32276      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
32277      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32278      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32279      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
32280      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32281      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32282      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
32283      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
32284             ELSEIF(MSTP(147).EQ.1) THEN
32285                FACQQG=C1*2D0
32286      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
32287      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
32288      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
32289      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
32290      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
32291      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
32292      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
32293      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
32294      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
32295      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
32296      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
32297      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
32298      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
32299             ELSEIF(MSTP(147).EQ.2) THEN
32300                FACQQG=2D0*(C1
32301      &              -C2*EL1K11*EL2K11
32302      &              -C3*EL1K21*EL2K21
32303      &              -C4*EL1K11*EL2K21
32304      &              +C5*(EL1K11*EL2K11)**2
32305      &              +C6*(EL1K21*EL2K21)**2
32306      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
32307      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
32308      &              +(C9+C0)*(EL1K11*EL2K21)**2)
32309             ENDIF
32310             FACQQG=COMFAC*FF*FACQQG
32311           ENDIF
32312           DO 2456 I=MMINA,MMAXA
32313             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 2456
32314             DO 2455 ISDE=1,2
32315               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 2455
32316               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 2455
32317               NCHN=NCHN+1
32318               ISIG(NCHN,ISDE)=I
32319               ISIG(NCHN,3-ISDE)=21
32320               ISIG(NCHN,3)=1
32321               SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32322  2455       CONTINUE
32323  2456     CONTINUE
32324  
32325         ELSEIF(ISUB.EQ.437) THEN
32326 C...q + q~ -> g + QQ~[3P01]
32327           IF(MSTP(145).EQ.0) THEN
32328             FACQQG=COMFAC*PARU(1)*AS**3*(128D0/243D0)*
32329      &            (SH-3D0*SQMQQ)**2*(TH2+UH2)/(SQMQQR*SH*THUH2**2)
32330           ELSE
32331             FA=PARU(1)*AS**3*(128D0/729D0)*
32332      &            (SH-3D0*SQMQQ)**2*(TH2+UH2)/(SQMQQR*SH*THUH2**2)
32333             IF(MSTP(147).EQ.0) THEN
32334                FACQQG=COMFAC*FA
32335             ELSEIF(MSTP(147).EQ.1) THEN
32336                FACQQG=COMFAC*2D0*FA
32337             ELSEIF(MSTP(147).EQ.3) THEN
32338                FACQQG=COMFAC*FA
32339             ELSEIF(MSTP(147).EQ.4) THEN
32340                FACQQG=COMFAC*FA
32341             ELSEIF(MSTP(147).EQ.5) THEN
32342                FACQQG=0D0
32343             ELSEIF(MSTP(147).EQ.6) THEN
32344                FACQQG=0D0
32345             ENDIF
32346           ENDIF
32347           DO 2457 I=MMINA,MMAXA
32348             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
32349      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2457
32350             NCHN=NCHN+1
32351             ISIG(NCHN,1)=I
32352             ISIG(NCHN,2)=-I
32353             ISIG(NCHN,3)=1
32354             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32355  2457     CONTINUE
32356  
32357         ELSEIF(ISUB.EQ.438) THEN
32358 C...q + q~ -> g + QQ~[3P11]
32359           IF(MSTP(145).EQ.0) THEN
32360             FACQQG=COMFAC*PARU(1)*AS**3*256D0/81D0*
32361      &            (4D0*SQMQQ*TH*UH+SH*(TH2+UH2))/(SQMQQR*THUH2**2)
32362           ELSE
32363             FF=-(512D0*PARU(1)*AS**3*SQMQQR)/(81D0*THUH2**2)
32364             C1=TH*UH
32365             C2=2D0*UH
32366             C3=2D0*TH
32367             C4=2D0*THUH
32368             IF(MSTP(147).EQ.0) THEN
32369                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32370      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32371             ELSEIF(MSTP(147).EQ.1) THEN
32372                FACQQG=2D0*(-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32373      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0)
32374             ELSEIF(MSTP(147).EQ.3) THEN
32375                FACQQG=-C1+C2*EL1K10*EL2K10+C3*EL1K20*EL2K20
32376      &              +C4*(EL1K10*EL2K20+EL1K20*EL2K10)/2D0
32377             ELSEIF(MSTP(147).EQ.4) THEN
32378                FACQQG=-C1+C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32379      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32380             ELSEIF(MSTP(147).EQ.5) THEN
32381                FACQQG=C2*EL1K11*EL2K10+C3*EL1K21*EL2K20
32382      &              +C4*(EL1K11*EL2K20+EL1K21*EL2K10)/2D0
32383             ELSEIF(MSTP(147).EQ.6) THEN
32384                FACQQG=C2*EL1K11*EL2K11+C3*EL1K21*EL2K21
32385      &              +C4*(EL1K11*EL2K21+EL1K21*EL2K11)/2D0
32386             ENDIF
32387             FACQQG=COMFAC*FF*FACQQG
32388           ENDIF
32389           DO 2458 I=MMINA,MMAXA
32390             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
32391      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2458
32392             NCHN=NCHN+1
32393             ISIG(NCHN,1)=I
32394             ISIG(NCHN,2)=-I
32395             ISIG(NCHN,3)=1
32396             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32397  2458     CONTINUE
32398  
32399         ELSEIF(ISUB.EQ.439) THEN
32400 C...q + q~ -> g + QQ~[3P21]
32401           IF(MSTP(145).EQ.0) THEN
32402             FACQQG=COMFAC*PARU(1)*AS**3*(256D0/243D0)*
32403      &            ((6D0*SQMQQ**2+SH2)*THUH2
32404      &            -2D0*TH*UH*(SH2+6D0*SQMQQ*THUH))/
32405      &            (SQMQQR*SH*THUH2**2)
32406           ELSE
32407             FF=(256D0*PARU(1)*AS**3*SQMQQ*SQMQQR)/(81D0*SH2*THUH2**2)
32408             C1=SH*THUH2
32409             C2=4D0*(SH2+UH2+2D0*SH*THUH)
32410             C3=4D0*(SH2+TH2+2D0*SH*THUH)
32411             C4=8D0*(SH2-TH*UH+2D0*SH*THUH)
32412             C5=8D0*SH
32413             C6=C5
32414             C7=16D0*SH
32415             C8=C7
32416             C9=-16D0*THUH
32417             C0=16D0*SQMQQ
32418             IF(MSTP(147).EQ.0) THEN
32419                FACQQG=1D0/3D0*(C1*3D0
32420      &              -C2*(2D0*EL1K10*EL2K10+EL1K11*EL2K11)
32421      &              -C3*(2D0*EL1K20*EL2K20+EL1K21*EL2K21)
32422      &              -C4*(2D0*EL1K10*EL2K20+EL1K11*EL2K21)
32423      &              +C5*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)**2
32424      &              +C6*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)**2
32425      &              +C7*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32426      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32427      &              +C8*2D0*(EL1K20*EL2K20-EL1K21*EL2K21)
32428      &                     *(EL1K10*EL2K20-EL1K11*EL2K21)
32429      &              +C9*2D0*(EL1K10*EL2K10-EL1K11*EL2K11)
32430      &                     *(EL1K20*EL2K20-EL1K21*EL2K21)
32431      &              +C0*2D0*(EL1K10*EL2K20-EL1K11*EL2K21)**2)
32432             ELSEIF(MSTP(147).EQ.1) THEN
32433                FACQQG=C1*2D0
32434      &              -C2*(EL1K10*EL2K10+EL1K11*EL2K11)
32435      &              -C3*(EL1K20*EL2K20+EL1K21*EL2K21)
32436      &              -C4*(EL1K10*EL2K20+EL1K11*EL2K21)
32437      &              +C5*4D0*EL1K10*EL2K10*EL1K11*EL2K11
32438      &              +C6*4D0*EL1K20*EL2K20*EL1K21*EL2K21
32439      &              +C7*2D0*(EL1K10*EL2K10*EL1K11*EL2K21
32440      &                      +EL1K10*EL2K20*EL1K11*EL2K11)
32441      &              +C8*2D0*(EL1K20*EL2K20*EL1K11*EL2K21
32442      &                      +EL1K10*EL2K20*EL1K21*EL2K21)
32443      &              +C9*4D0*EL1K10*EL2K20*EL1K11*EL2K21
32444      &              +C0*(EL1K10*EL2K10*EL1K21*EL2K21
32445      &              +2D0*EL1K10*EL2K20*EL1K11*EL2K21
32446      &                  +EL1K20*EL2K20*EL1K11*EL2K11)
32447             ELSEIF(MSTP(147).EQ.2) THEN
32448                FACQQG=2D0*(C1
32449      &              -C2*EL1K11*EL2K11
32450      &              -C3*EL1K21*EL2K21
32451      &              -C4*EL1K11*EL2K21
32452      &              +C5*(EL1K11*EL2K11)**2
32453      &              +C6*(EL1K21*EL2K21)**2
32454      &              +C7*EL1K11*EL2K11*EL1K11*EL2K21
32455      &              +C8*EL1K21*EL2K21*EL1K11*EL2K21
32456      &              +(C9+C0)*(EL1K11*EL2K21)**2)
32457             ENDIF
32458             FACQQG=COMFAC*FF*FACQQG
32459           ENDIF
32460           DO 2459 I=MMINA,MMAXA
32461             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
32462      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 2459
32463             NCHN=NCHN+1
32464             ISIG(NCHN,1)=I
32465             ISIG(NCHN,2)=-I
32466             ISIG(NCHN,3)=1
32467             SIGH(NCHN)=FACQQG*PARP(IONIUM+5)
32468  2459     CONTINUE
32469         ENDIF
32470 C...QUARKONIA---
32471  
32472       ENDIF
32473  
32474       RETURN
32475       END
32476  
32477 C*********************************************************************
32478  
32479 C...PYSGWZ
32480 C...Subprocess cross sections for W/Z processes,
32481 C...except that longitudinal WW scattering is in Higgs sector.
32482 C...Auxiliary to PYSIGH.
32483  
32484       SUBROUTINE PYSGWZ(NCHN,SIGS)
32485  
32486 C...Double precision and integer declarations
32487       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
32488       IMPLICIT INTEGER(I-N)
32489       INTEGER PYK,PYCHGE,PYCOMP
32490 C...Parameter statement to help give large particle numbers.
32491       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
32492      &KEXCIT=4000000,KDIMEN=5000000)
32493 C...Commonblocks
32494       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
32495       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
32496       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
32497       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
32498       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
32499       COMMON/PYINT1/MINT(400),VINT(400)
32500       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
32501       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
32502       COMMON/PYINT4/MWID(500),WIDS(500,5)
32503       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
32504       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
32505      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
32506      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
32507      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
32508       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
32509      &/PYINT2/,/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
32510 C...Local arrays and complex numbers
32511       DIMENSION WDTP(0:400),WDTE(0:400,0:5),HGZ(6,3),HL3(3),HR3(3),
32512      &HL4(3),HR4(3)
32513       COMPLEX*16 COULCK,COULCP,COULCD,COULCR,COULCS
32514  
32515 C...Differential cross section expressions.
32516  
32517       IF(ISUB.LE.20) THEN
32518         IF(ISUB.EQ.1) THEN
32519 C...f + fbar -> gamma*/Z0
32520           MINT(61)=2
32521           CALL PYWIDT(23,SH,WDTP,WDTE)
32522           HS=SHR*WDTP(0)
32523           FACZ=4D0*COMFAC*3D0
32524           HP0=AEM/3D0*SH
32525           HP1=AEM/3D0*XWC*SH
32526           DO 100 I=MMINA,MMAXA
32527             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
32528             EI=KCHG(IABS(I),1)/3D0
32529             AI=SIGN(1D0,EI)
32530             VI=AI-4D0*EI*XWV
32531             HI0=HP0
32532             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
32533             HI1=HP1
32534             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
32535             NCHN=NCHN+1
32536             ISIG(NCHN,1)=I
32537             ISIG(NCHN,2)=-I
32538             ISIG(NCHN,3)=1
32539             SIGH(NCHN)=FACZ*(EI**2/SH2*HI0*HP0*VINT(111)+
32540      &      EI*VI*(1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*
32541      &      (HI0*HP1+HI1*HP0)*VINT(112)+(VI**2+AI**2)/
32542      &      ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114))
32543   100     CONTINUE
32544  
32545         ELSEIF(ISUB.EQ.2) THEN
32546 C...f + fbar' -> W+/-
32547           CALL PYWIDT(24,SH,WDTP,WDTE)
32548           HS=SHR*WDTP(0)
32549           FACBW=4D0*COMFAC/((SH-SQMW)**2+HS**2)*3D0
32550           HP=AEM/(24D0*XW)*SH
32551           DO 120 I=MMIN1,MMAX1
32552             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
32553             IA=IABS(I)
32554             DO 110 J=MMIN2,MMAX2
32555               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
32556               JA=IABS(J)
32557               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
32558               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
32559      &        GOTO 110
32560               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
32561               HI=HP*2D0
32562               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
32563               NCHN=NCHN+1
32564               ISIG(NCHN,1)=I
32565               ISIG(NCHN,2)=J
32566               ISIG(NCHN,3)=1
32567               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
32568               SIGH(NCHN)=HI*FACBW*HF
32569   110       CONTINUE
32570   120     CONTINUE
32571  
32572         ELSEIF(ISUB.EQ.15) THEN
32573 C...f + fbar -> g + (gamma*/Z0) (q + qbar -> g + (gamma*/Z0) only)
32574           FACZG=COMFAC*AS*AEM*(8D0/9D0)*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
32575 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32576           HFGG=0D0
32577           HFGZ=0D0
32578           HFZZ=0D0
32579           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32580           DO 130 I=1,MIN(16,MDCY(23,3))
32581             IDC=I+MDCY(23,2)-1
32582             IF(MDME(IDC,1).LT.0) GOTO 130
32583             IMDM=0
32584             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
32585      &      IMDM=1
32586             IF(I.LE.8) THEN
32587               EF=KCHG(I,1)/3D0
32588               AF=SIGN(1D0,EF+0.1D0)
32589               VF=AF-4D0*EF*XWV
32590             ELSEIF(I.LE.16) THEN
32591               EF=KCHG(I+2,1)/3D0
32592               AF=SIGN(1D0,EF+0.1D0)
32593               VF=AF-4D0*EF*XWV
32594             ENDIF
32595             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32596             IF(4D0*RM1.LT.1D0) THEN
32597               FCOF=1D0
32598               IF(I.LE.8) FCOF=3D0*RADC4
32599               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32600               IF(IMDM.EQ.1) THEN
32601                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32602                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32603                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
32604      &          AF**2*(1D0-4D0*RM1))*BE34
32605               ENDIF
32606             ENDIF
32607   130     CONTINUE
32608 C...Propagators: as simulated in PYOFSH and as desired
32609           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32610           MINT15=MINT(15)
32611           MINT(15)=1
32612           MINT(61)=1
32613           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32614           MINT(15)=MINT15
32615           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32616           HFGG=HFGG*HFAEM*VINT(111)/SQM4
32617           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
32618           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
32619 C...Loop over flavours; consider full gamma/Z structure
32620           DO 140 I=MMINA,MMAXA
32621             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
32622      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140
32623             EI=KCHG(IABS(I),1)/3D0
32624             AI=SIGN(1D0,EI)
32625             VI=AI-4D0*EI*XWV
32626             NCHN=NCHN+1
32627             ISIG(NCHN,1)=I
32628             ISIG(NCHN,2)=-I
32629             ISIG(NCHN,3)=1
32630             SIGH(NCHN)=FACZG*(EI**2*HFGG+EI*VI*HFGZ+
32631      &      (VI**2+AI**2)*HFZZ)/HBW4
32632   140     CONTINUE
32633  
32634         ELSEIF(ISUB.EQ.16) THEN
32635 C...f + fbar' -> g + W+/- (q + qbar' -> g + W+/- only)
32636           FACWG=COMFAC*AS*AEM/XW*2D0/9D0*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
32637 C...Propagators: as simulated in PYOFSH and as desired
32638           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32639           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32640           GMMWC=SQRT(SQM4)*WDTP(0)
32641           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
32642           FACWG=FACWG*HBW4C/HBW4
32643           DO 160 I=MMIN1,MMAX1
32644             IA=IABS(I)
32645             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 160
32646             DO 150 J=MMIN2,MMAX2
32647               JA=IABS(J)
32648               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 150
32649               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 150
32650               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
32651               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
32652               FCKM=VCKM((IA+1)/2,(JA+1)/2)
32653               NCHN=NCHN+1
32654               ISIG(NCHN,1)=I
32655               ISIG(NCHN,2)=J
32656               ISIG(NCHN,3)=1
32657               SIGH(NCHN)=FACWG*FCKM*WIDSC
32658   150       CONTINUE
32659   160     CONTINUE
32660  
32661         ELSEIF(ISUB.EQ.19) THEN
32662 C...f + fbar -> gamma + (gamma*/Z0)
32663           FACGZ=COMFAC*2D0*AEM**2*(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
32664 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32665           HFGG=0D0
32666           HFGZ=0D0
32667           HFZZ=0D0
32668           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32669           DO 170 I=1,MIN(16,MDCY(23,3))
32670             IDC=I+MDCY(23,2)-1
32671             IF(MDME(IDC,1).LT.0) GOTO 170
32672             IMDM=0
32673             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
32674      &      IMDM=1
32675             IF(I.LE.8) THEN
32676               EF=KCHG(I,1)/3D0
32677               AF=SIGN(1D0,EF+0.1D0)
32678               VF=AF-4D0*EF*XWV
32679             ELSEIF(I.LE.16) THEN
32680               EF=KCHG(I+2,1)/3D0
32681               AF=SIGN(1D0,EF+0.1D0)
32682               VF=AF-4D0*EF*XWV
32683             ENDIF
32684             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32685             IF(4D0*RM1.LT.1D0) THEN
32686               FCOF=1D0
32687               IF(I.LE.8) FCOF=3D0*RADC4
32688               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32689               IF(IMDM.EQ.1) THEN
32690                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32691                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32692                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
32693      &          AF**2*(1D0-4D0*RM1))*BE34
32694               ENDIF
32695             ENDIF
32696   170     CONTINUE
32697 C...Propagators: as simulated in PYOFSH and as desired
32698           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32699           MINT15=MINT(15)
32700           MINT(15)=1
32701           MINT(61)=1
32702           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32703           MINT(15)=MINT15
32704           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32705           HFGG=HFGG*HFAEM*VINT(111)/SQM4
32706           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
32707           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
32708 C...Loop over flavours; consider full gamma/Z structure
32709           DO 180 I=MMINA,MMAXA
32710             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 180
32711             EI=KCHG(IABS(I),1)/3D0
32712             AI=SIGN(1D0,EI)
32713             VI=AI-4D0*EI*XWV
32714             FCOI=1D0
32715             IF(IABS(I).LE.10) FCOI=FACA/3D0
32716             NCHN=NCHN+1
32717             ISIG(NCHN,1)=I
32718             ISIG(NCHN,2)=-I
32719             ISIG(NCHN,3)=1
32720             SIGH(NCHN)=FACGZ*FCOI*EI**2*(EI**2*HFGG+EI*VI*HFGZ+
32721      &      (VI**2+AI**2)*HFZZ)/HBW4
32722   180     CONTINUE
32723  
32724         ELSEIF(ISUB.EQ.20) THEN
32725 C...f + fbar' -> gamma + W+/-
32726           FACGW=COMFAC*0.5D0*AEM**2/XW
32727 C...Propagators: as simulated in PYOFSH and as desired
32728           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32729           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32730           GMMWC=SQRT(SQM4)*WDTP(0)
32731           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
32732           FACGW=FACGW*HBW4C/HBW4
32733 C...Anomalous couplings
32734           TERM1=(TH2+UH2+2D0*SQM4*SH)/(TH*UH)
32735           TERM2=0D0
32736           TERM3=0D0
32737           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
32738             TERM2=RTCM(46)*(TH-UH)/(TH+UH)
32739             TERM3=0.5D0*RTCM(46)**2*(TH*UH+(TH2+UH2)*SH/
32740      &      (4D0*SQMW))/(TH+UH)**2
32741           ENDIF
32742           DO 200 I=MMIN1,MMAX1
32743             IA=IABS(I)
32744             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 200
32745             DO 190 J=MMIN2,MMAX2
32746               JA=IABS(J)
32747               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 190
32748               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 190
32749               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
32750      &        GOTO 190
32751               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
32752               WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
32753               IF(IA.LE.10) THEN
32754                 FACWR=UH/(TH+UH)-1D0/3D0
32755                 FCKM=VCKM((IA+1)/2,(JA+1)/2)
32756                 FCOI=FACA/3D0
32757               ELSE
32758                 FACWR=-TH/(TH+UH)
32759                 FCKM=1D0
32760                 FCOI=1D0
32761               ENDIF
32762               FACWK=TERM1*FACWR**2+TERM2*FACWR+TERM3
32763               NCHN=NCHN+1
32764               ISIG(NCHN,1)=I
32765               ISIG(NCHN,2)=J
32766               ISIG(NCHN,3)=1
32767               SIGH(NCHN)=FACGW*FACWK*FCOI*FCKM*WIDSC
32768   190       CONTINUE
32769   200     CONTINUE
32770         ENDIF
32771  
32772       ELSEIF(ISUB.LE.40) THEN
32773         IF(ISUB.EQ.22) THEN
32774 C...f + fbar -> (gamma*/Z0) + (gamma*/Z0)
32775 C...Kinematics dependence
32776           FACZZ=COMFAC*AEM**2*((TH2+UH2+2D0*(SQM3+SQM4)*SH)/(TH*UH)-
32777      &    SQM3*SQM4*(1D0/TH2+1D0/UH2))
32778 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
32779           DO 220 I=1,6
32780             DO 210 J=1,3
32781               HGZ(I,J)=0D0
32782   210       CONTINUE
32783   220     CONTINUE
32784           RADC3=1D0+PYALPS(SQM3)/PARU(1)
32785           RADC4=1D0+PYALPS(SQM4)/PARU(1)
32786           DO 230 I=1,MIN(16,MDCY(23,3))
32787             IDC=I+MDCY(23,2)-1
32788             IF(MDME(IDC,1).LT.0) GOTO 230
32789             IMDM=0
32790             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2) IMDM=1
32791             IF(MDME(IDC,1).EQ.4.OR.MDME(IDC,1).EQ.5) IMDM=MDME(IDC,1)-2
32792             IF(I.LE.8) THEN
32793               EF=KCHG(I,1)/3D0
32794               AF=SIGN(1D0,EF+0.1D0)
32795               VF=AF-4D0*EF*XWV
32796             ELSEIF(I.LE.16) THEN
32797               EF=KCHG(I+2,1)/3D0
32798               AF=SIGN(1D0,EF+0.1D0)
32799               VF=AF-4D0*EF*XWV
32800             ENDIF
32801             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM3
32802             IF(4D0*RM1.LT.1D0) THEN
32803               FCOF=1D0
32804               IF(I.LE.8) FCOF=3D0*RADC3
32805               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32806               IF(IMDM.GE.1) THEN
32807                 HGZ(1,IMDM)=HGZ(1,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32808                 HGZ(2,IMDM)=HGZ(2,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32809                 HGZ(3,IMDM)=HGZ(3,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
32810      &          AF**2*(1D0-4D0*RM1))*BE34
32811               ENDIF
32812             ENDIF
32813             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
32814             IF(4D0*RM1.LT.1D0) THEN
32815               FCOF=1D0
32816               IF(I.LE.8) FCOF=3D0*RADC4
32817               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
32818               IF(IMDM.GE.1) THEN
32819                 HGZ(4,IMDM)=HGZ(4,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34
32820                 HGZ(5,IMDM)=HGZ(5,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
32821                 HGZ(6,IMDM)=HGZ(6,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+
32822      &          AF**2*(1D0-4D0*RM1))*BE34
32823               ENDIF
32824             ENDIF
32825   230     CONTINUE
32826 C...Propagators: as simulated in PYOFSH and as desired
32827           HBW3=(1D0/PARU(1))*GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
32828           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
32829           MINT15=MINT(15)
32830           MINT(15)=1
32831           MINT(61)=1
32832           CALL PYWIDT(23,SQM3,WDTP,WDTE)
32833           MINT(15)=MINT15
32834           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32835           DO 240 J=1,3
32836             HGZ(1,J)=HGZ(1,J)*HFAEM*VINT(111)/SQM3
32837             HGZ(2,J)=HGZ(2,J)*HFAEM*VINT(112)/SQM3
32838             HGZ(3,J)=HGZ(3,J)*HFAEM*VINT(114)/SQM3
32839   240     CONTINUE
32840           MINT15=MINT(15)
32841           MINT(15)=1
32842           MINT(61)=1
32843           CALL PYWIDT(23,SQM4,WDTP,WDTE)
32844           MINT(15)=MINT15
32845           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
32846           DO 250 J=1,3
32847             HGZ(4,J)=HGZ(4,J)*HFAEM*VINT(111)/SQM4
32848             HGZ(5,J)=HGZ(5,J)*HFAEM*VINT(112)/SQM4
32849             HGZ(6,J)=HGZ(6,J)*HFAEM*VINT(114)/SQM4
32850   250     CONTINUE
32851 C...Loop over flavours; separate left- and right-handed couplings
32852           DO 270 I=MMINA,MMAXA
32853             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 270
32854             EI=KCHG(IABS(I),1)/3D0
32855             AI=SIGN(1D0,EI)
32856             VI=AI-4D0*EI*XWV
32857             VALI=VI-AI
32858             VARI=VI+AI
32859             FCOI=1D0
32860             IF(IABS(I).LE.10) FCOI=FACA/3D0
32861             DO 260 J=1,3
32862               HL3(J)=EI**2*HGZ(1,J)+EI*VALI*HGZ(2,J)+VALI**2*HGZ(3,J)
32863               HR3(J)=EI**2*HGZ(1,J)+EI*VARI*HGZ(2,J)+VARI**2*HGZ(3,J)
32864               HL4(J)=EI**2*HGZ(4,J)+EI*VALI*HGZ(5,J)+VALI**2*HGZ(6,J)
32865               HR4(J)=EI**2*HGZ(4,J)+EI*VARI*HGZ(5,J)+VARI**2*HGZ(6,J)
32866   260       CONTINUE
32867             FACLR=HL3(1)*HL4(1)+HL3(1)*(HL4(2)+HL4(3))+
32868      &      HL4(1)*(HL3(2)+HL3(3))+HL3(2)*HL4(3)+HL4(2)*HL3(3)+
32869      &      HR3(1)*HR4(1)+HR3(1)*(HR4(2)+HR4(3))+
32870      &      HR4(1)*(HR3(2)+HR3(3))+HR3(2)*HR4(3)+HR4(2)*HR3(3)
32871             NCHN=NCHN+1
32872             ISIG(NCHN,1)=I
32873             ISIG(NCHN,2)=-I
32874             ISIG(NCHN,3)=1
32875             SIGH(NCHN)=0.5D0*FACZZ*FCOI*FACLR/(HBW3*HBW4)
32876   270     CONTINUE
32877  
32878         ELSEIF(ISUB.EQ.23) THEN
32879 C...f + fbar' -> Z0 + W+/- (Z0 only, i.e. no gamma* admixture.)
32880           FACZW=COMFAC*0.5D0*(AEM/XW)**2
32881           FACZW=FACZW*WIDS(23,2)
32882           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32883           FACBW=1D0/((SH-SQMW)**2+GMMW**2)
32884           DO 290 I=MMIN1,MMAX1
32885             IA=IABS(I)
32886             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 290
32887             DO 280 J=MMIN2,MMAX2
32888               JA=IABS(J)
32889               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 280
32890               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 280
32891               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
32892      &        GOTO 280
32893               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
32894               EI=KCHG(IA,1)/3D0
32895               AI=SIGN(1D0,EI+0.1D0)
32896               VI=AI-4D0*EI*XWV
32897               EJ=KCHG(JA,1)/3D0
32898               AJ=SIGN(1D0,EJ+0.1D0)
32899               VJ=AJ-4D0*EJ*XWV
32900               IF(VI+AI.GT.0) THEN
32901                 VISAV=VI
32902                 AISAV=AI
32903                 VI=VJ
32904                 AI=AJ
32905                 VJ=VISAV
32906                 AJ=AISAV
32907               ENDIF
32908               FCKM=1D0
32909               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
32910               FCOI=1D0
32911               IF(IA.LE.10) FCOI=FACA/3D0
32912               NCHN=NCHN+1
32913               ISIG(NCHN,1)=I
32914               ISIG(NCHN,2)=J
32915               ISIG(NCHN,3)=1
32916               SIGH(NCHN)=FACZW*FCOI*FCKM*(FACBW*((9D0-8D0*XW)/4D0*THUH+
32917      &        (8D0*XW-6D0)/4D0*SH*(SQM3+SQM4))+(THUH-SH*(SQM3+SQM4))*
32918      &        (SH-SQMW)*FACBW*0.5D0*((VJ+AJ)/TH-(VI+AI)/UH)+
32919      &        THUH/(16D0*XW1)*((VJ+AJ)**2/TH2+(VI+AI)**2/UH2)+
32920      &        SH*(SQM3+SQM4)/(8D0*XW1)*(VI+AI)*(VJ+AJ)/(TH*UH))*
32921      &        WIDS(24,(5-KCHW)/2)
32922 C***Protect against slightly negative cross sections. (Reason yet to be
32923 C***sorted out. One possibility: addition of width to the W propagator.)
32924               SIGH(NCHN)=MAX(0D0,SIGH(NCHN))
32925   280       CONTINUE
32926   290     CONTINUE
32927  
32928         ELSEIF(ISUB.EQ.25) THEN
32929 C...f + fbar -> W+ + W-
32930 C...Propagators: Z0, W+- as simulated in PYOFSH and as desired
32931           GMMZC=GMMZ
32932           HBWZC=SH**2/((SH-SQMZ)**2+GMMZC**2)
32933           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
32934           CALL PYWIDT(24,SQM3,WDTP,WDTE)
32935           GMMW3=SQRT(SQM3)*WDTP(0)
32936           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
32937           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
32938           CALL PYWIDT(24,SQM4,WDTP,WDTE)
32939           GMMW4=SQRT(SQM4)*WDTP(0)
32940           HBW4C=GMMW4/((SQM4-SQMW)**2+GMMW4**2)
32941 C...Kinematical functions
32942           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
32943           THUH34=(2D0*SH*(SQM3+SQM4)+THUH)/(SQM3*SQM4)
32944           GS=(((SH-SQM3-SQM4)**2-4D0*SQM3*SQM4)*THUH34+12D0*THUH)/SH2
32945           GT=THUH34+4D0*THUH/TH2
32946           GST=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/TH)/SH
32947           GU=THUH34+4D0*THUH/UH2
32948           GSU=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/UH)/SH
32949 C...Common factors and couplings
32950           FACWW=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)
32951           FACWW=FACWW*WIDS(24,1)
32952           CGG=AEM**2/2D0
32953           CGZ=AEM**2/(4D0*XW)*HBWZC*(1D0-SQMZ/SH)
32954           CZZ=AEM**2/(32D0*XW**2)*HBWZC
32955           CNG=AEM**2/(4D0*XW)
32956           CNZ=AEM**2/(16D0*XW**2)*HBWZC*(1D0-SQMZ/SH)
32957           CNN=AEM**2/(16D0*XW**2)
32958 C...Coulomb factor for W+W- pair
32959           IF(MSTP(40).GE.1.AND.MSTP(40).LE.3) THEN
32960             COULE=(SH-4D0*SQMW)/(4D0*PMAS(24,1))
32961             COULP=MAX(1D-10,0.5D0*BE34*SQRT(SH))
32962             IF(COULE.LT.100D0*PMAS(24,2)) THEN
32963               COULP1=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
32964      &        PMAS(24,2)**2)-COULE))
32965             ELSE
32966               COULP1=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/COULE))
32967             ENDIF
32968             IF(COULE.GT.-100D0*PMAS(24,2)) THEN
32969               COULP2=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+
32970      &        PMAS(24,2)**2)+COULE))
32971             ELSE
32972               COULP2=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/
32973      &        ABS(COULE)))
32974             ENDIF
32975             IF(MSTP(40).EQ.1) THEN
32976               COULDC=PARU(1)-2D0*ATAN((COULP1**2+COULP2**2-COULP**2)/
32977      &        MAX(1D-10,2D0*COULP*COULP1))
32978               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
32979             ELSEIF(MSTP(40).EQ.2) THEN
32980               COULCK=DCMPLX(DBLE(COULP1),DBLE(COULP2))
32981               COULCP=DCMPLX(0D0,DBLE(COULP))
32982               COULCD=(COULCK+COULCP)/(COULCK-COULCP)
32983               COULCR=1D0+DBLE(PARU(101)*SQRT(SH))/
32984      &        (4D0*COULCP)*LOG(COULCD)
32985               COULCS=DCMPLX(0D0,0D0)
32986               NSTP=100
32987               DO 300 ISTP=1,NSTP
32988                 COULXX=(ISTP-0.5)/NSTP
32989                 COULCS=COULCS+(1D0/COULXX)*LOG((1D0+COULXX*COULCD)/
32990      &          (1D0+COULXX/COULCD))
32991   300         CONTINUE
32992               COULCR=COULCR+DBLE(PARU(101)**2*SH)/(16D0*COULCP*COULCK)*
32993      &        (COULCS/NSTP)
32994               FACCOU=ABS(COULCR)**2
32995             ELSEIF(MSTP(40).EQ.3) THEN
32996               COULDC=PARU(1)-2D0*(1D0-BE34)**2*ATAN((COULP1**2+
32997      &        COULP2**2-COULP**2)/MAX(1D-10,2D0*COULP*COULP1))
32998               FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34)
32999             ENDIF
33000           ELSEIF(MSTP(40).EQ.4) THEN
33001             FACCOU=1D0+0.5D0*PARU(101)*PARU(1)/MAX(1D-5,BE34)
33002           ELSE
33003             FACCOU=1D0
33004           ENDIF
33005           VINT(95)=FACCOU
33006           FACWW=FACWW*FACCOU
33007 C...Loop over allowed flavours
33008           DO 310 I=MMINA,MMAXA
33009             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
33010             EI=KCHG(IABS(I),1)/3D0
33011             AI=SIGN(1D0,EI+0.1D0)
33012             VI=AI-4D0*EI*XWV
33013             FCOI=1D0
33014             IF(IABS(I).LE.10) FCOI=FACA/3D0
33015             IF(MSTP(50).LE.0.OR.IABS(I).LE.10) THEN
33016               IF(AI.LT.0D0) THEN
33017                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS+
33018      &          (CNG*EI+CNZ*(VI+AI))*GST+CNN*GT
33019               ELSE
33020                 DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS-
33021      &          (CNG*EI+CNZ*(VI+AI))*GSU+CNN*GU
33022               ENDIF
33023             ELSE
33024               XMW02=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
33025               BET=SQRT(1D0-4D0*XMW02/SH)
33026               GAT=1D0/SQRT(1D0-BET**2)
33027               STHE2=1D0-CTH**2
33028               AMPZG=BET**3*(16D0+(4D0*BET**2*GAT**2+3D0/GAT**2)*STHE2)
33029               AMPNU=BET*(2D0+BET**2*GAT**2*STHE2/2D0+
33030      &        2D0*BET**2*(1D0-BET**2)*STHE2/(1D0-2D0*BET*CTH+BET**2)**2)
33031               AMPNG=BET*((1D0+BET**2)*(4D0+BET**2*GAT**2*STHE2)+
33032      &        2D0*(1D0-BET**2)*(BET**2*STHE2-2D0*(1D0-BET**2))/
33033      &        (1D0-2D0*BET*CTH+BET**2))
33034               PROPI1=(0.25D0*SQMZ/XMW02)*HBWZC*(1D0-SQMZ/SH)
33035               PROPI2=(0.25D0*SQMZ/XMW02)**2*HBWZC
33036               A0=(2D0*(XMW02/SQMZ)-(1D0-BET**2)*XW)*POLL
33037               A1=(2D0*(XMW02/SQMZ)**2-2*XMW02/SQMZ*(1D0-BET**2)*XW)*POLL
33038               A2=(1D0-BET**2)**2*XW**2*(POLR+POLL)/2D0
33039               ATOT=AMPNU*POLL+(A1+A2)*PROPI2*AMPZG-A0*PROPI1*AMPNG
33040               ATOT=ATOT*CNN/SQMW*SH/BET*2D0
33041               DSIGWW=ATOT
33042             ENDIF
33043             NCHN=NCHN+1
33044             ISIG(NCHN,1)=I
33045             ISIG(NCHN,2)=-I
33046             ISIG(NCHN,3)=1
33047             SIGH(NCHN)=FACWW*FCOI*DSIGWW
33048   310     CONTINUE
33049  
33050         ELSEIF(ISUB.EQ.30) THEN
33051 C...f + g -> f + (gamma*/Z0) (q + g -> q + (gamma*/Z0) only)
33052           FZQ=COMFAC*FACA*AS*AEM*(1D0/3D0)*(SH2+UH2+2D0*SQM4*TH)/
33053      &    (-SH*UH)
33054 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
33055           HFGG=0D0
33056           HFGZ=0D0
33057           HFZZ=0D0
33058           RADC4=1D0+PYALPS(SQM4)/PARU(1)
33059           DO 320 I=1,MIN(16,MDCY(23,3))
33060             IDC=I+MDCY(23,2)-1
33061             IF(MDME(IDC,1).LT.0) GOTO 320
33062             IMDM=0
33063             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
33064      &      IMDM=1
33065             IF(I.LE.8) THEN
33066               EF=KCHG(I,1)/3D0
33067               AF=SIGN(1D0,EF+0.1D0)
33068               VF=AF-4D0*EF*XWV
33069             ELSEIF(I.LE.16) THEN
33070               EF=KCHG(I+2,1)/3D0
33071               AF=SIGN(1D0,EF+0.1D0)
33072               VF=AF-4D0*EF*XWV
33073             ENDIF
33074             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
33075             IF(4D0*RM1.LT.1D0) THEN
33076               FCOF=1D0
33077               IF(I.LE.8) FCOF=3D0*RADC4
33078               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
33079               IF(IMDM.EQ.1) THEN
33080                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
33081                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
33082                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
33083      &          AF**2*(1D0-4D0*RM1))*BE34
33084               ENDIF
33085             ENDIF
33086   320     CONTINUE
33087 C...Propagators: as simulated in PYOFSH and as desired
33088           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
33089           MINT15=MINT(15)
33090           MINT(15)=1
33091           MINT(61)=1
33092           CALL PYWIDT(23,SQM4,WDTP,WDTE)
33093           MINT(15)=MINT15
33094           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
33095           HFGG=HFGG*HFAEM*VINT(111)/SQM4
33096           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
33097           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
33098 C...Loop over flavours; consider full gamma/Z structure
33099           DO 340 I=MMINA,MMAXA
33100             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
33101             EI=KCHG(IABS(I),1)/3D0
33102             AI=SIGN(1D0,EI)
33103             VI=AI-4D0*EI*XWV
33104             FACZQ=FZQ*(EI**2*HFGG+EI*VI*HFGZ+
33105      &      (VI**2+AI**2)*HFZZ)/HBW4
33106             DO 330 ISDE=1,2
33107               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
33108               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
33109               NCHN=NCHN+1
33110               ISIG(NCHN,ISDE)=I
33111               ISIG(NCHN,3-ISDE)=21
33112               ISIG(NCHN,3)=1
33113               SIGH(NCHN)=FACZQ
33114   330       CONTINUE
33115   340     CONTINUE
33116  
33117         ELSEIF(ISUB.EQ.31) THEN
33118 C...f + g -> f' + W+/- (q + g -> q' + W+/- only)
33119           FACWQ=COMFAC*FACA*AS*AEM/XW*1D0/12D0*
33120      &    (SH2+UH2+2D0*SQM4*TH)/(-SH*UH)
33121 C...Propagators: as simulated in PYOFSH and as desired
33122           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
33123           CALL PYWIDT(24,SQM4,WDTP,WDTE)
33124           GMMWC=SQRT(SQM4)*WDTP(0)
33125           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
33126           FACWQ=FACWQ*HBW4C/HBW4
33127           DO 360 I=MMINA,MMAXA
33128             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
33129             IA=IABS(I)
33130             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
33131             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
33132             DO 350 ISDE=1,2
33133               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
33134               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
33135               NCHN=NCHN+1
33136               ISIG(NCHN,ISDE)=I
33137               ISIG(NCHN,3-ISDE)=21
33138               ISIG(NCHN,3)=1
33139               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
33140   350       CONTINUE
33141   360     CONTINUE
33142  
33143         ELSEIF(ISUB.EQ.35) THEN
33144 C...f + gamma -> f + (gamma*/Z0)
33145           IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) THEN
33146             FZQN=SH2+UH2+2D0*(SQM4-VINT(3)**2)*TH
33147             FZQDTM=VINT(3)**2*SQM4-SH*(UH-VINT(4)**2)
33148           ELSEIF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) THEN
33149             FZQN=SH2+UH2+2D0*(SQM4-VINT(4)**2)*TH
33150             FZQDTM=VINT(4)**2*SQM4-SH*(UH-VINT(3)**2)
33151           ELSE
33152             FZQN=SH2+UH2+2D0*SQM4*TH
33153             FZQDTM=-SH*UH
33154           ENDIF
33155           FZQN=COMFAC*2D0*AEM**2*MAX(0D0,FZQN)
33156 C...gamma, gamma/Z interference and Z couplings to final fermion pairs
33157           HFGG=0D0
33158           HFGZ=0D0
33159           HFZZ=0D0
33160           RADC4=1D0+PYALPS(SQM4)/PARU(1)
33161           DO 370 I=1,MIN(16,MDCY(23,3))
33162             IDC=I+MDCY(23,2)-1
33163             IF(MDME(IDC,1).LT.0) GOTO 370
33164             IMDM=0
33165             IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4)
33166      &      IMDM=1
33167             IF(I.LE.8) THEN
33168               EF=KCHG(I,1)/3D0
33169               AF=SIGN(1D0,EF+0.1D0)
33170               VF=AF-4D0*EF*XWV
33171             ELSEIF(I.LE.16) THEN
33172               EF=KCHG(I+2,1)/3D0
33173               AF=SIGN(1D0,EF+0.1D0)
33174               VF=AF-4D0*EF*XWV
33175             ENDIF
33176             RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4
33177             IF(4D0*RM1.LT.1D0) THEN
33178               FCOF=1D0
33179               IF(I.LE.8) FCOF=3D0*RADC4
33180               BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
33181               IF(IMDM.EQ.1) THEN
33182                 HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34
33183                 HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34
33184                 HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+
33185      &          AF**2*(1D0-4D0*RM1))*BE34
33186               ENDIF
33187             ENDIF
33188   370     CONTINUE
33189 C...Propagators: as simulated in PYOFSH and as desired
33190           HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2)
33191           MINT15=MINT(15)
33192           MINT(15)=1
33193           MINT(61)=1
33194           CALL PYWIDT(23,SQM4,WDTP,WDTE)
33195           MINT(15)=MINT15
33196           HFAEM=(PARU(108)/PARU(2))*(2D0/3D0)
33197           HFGG=HFGG*HFAEM*VINT(111)/SQM4
33198           HFGZ=HFGZ*HFAEM*VINT(112)/SQM4
33199           HFZZ=HFZZ*HFAEM*VINT(114)/SQM4
33200 C...Loop over flavours; consider full gamma/Z structure
33201           DO 390 I=MMINA,MMAXA
33202             IF(I.EQ.0) GOTO 390
33203             EI=KCHG(IABS(I),1)/3D0
33204             AI=SIGN(1D0,EI)
33205             VI=AI-4D0*EI*XWV
33206             FACZQ=EI**2*(EI**2*HFGG+EI*VI*HFGZ+
33207      &      (VI**2+AI**2)*HFZZ)/HBW4
33208             FZQD=MAX(PMAS(IABS(I),1)**2*SQM4,FZQDTM)
33209             DO 380 ISDE=1,2
33210               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 380
33211               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 380
33212               NCHN=NCHN+1
33213               ISIG(NCHN,ISDE)=I
33214               ISIG(NCHN,3-ISDE)=22
33215               ISIG(NCHN,3)=1
33216               SIGH(NCHN)=FACZQ*FZQN/FZQD
33217   380       CONTINUE
33218   390     CONTINUE
33219  
33220         ELSEIF(ISUB.EQ.36) THEN
33221 C...f + gamma -> f' + W+/-
33222           FWQ=COMFAC*AEM**2/(2D0*XW)*
33223      &    (SH2+UH2+2D0*SQM4*TH)/(SQPTH*SQM4-SH*UH)
33224 C...Propagators: as simulated in PYOFSH and as desired
33225           HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2)
33226           CALL PYWIDT(24,SQM4,WDTP,WDTE)
33227           GMMWC=SQRT(SQM4)*WDTP(0)
33228           HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2)
33229           FWQ=FWQ*HBW4C/HBW4
33230           DO 410 I=MMINA,MMAXA
33231             IF(I.EQ.0) GOTO 410
33232             IA=IABS(I)
33233             EIA=ABS(KCHG(IABS(I),1)/3D0)
33234             FACWQ=FWQ*(EIA-SH/(SH+UH))**2
33235             KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
33236             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0)
33237             DO 400 ISDE=1,2
33238               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 400
33239               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 400
33240               NCHN=NCHN+1
33241               ISIG(NCHN,ISDE)=I
33242               ISIG(NCHN,3-ISDE)=22
33243               ISIG(NCHN,3)=1
33244               SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC
33245   400       CONTINUE
33246   410     CONTINUE
33247         ENDIF
33248  
33249       ELSEIF(ISUB.LE.100) THEN
33250         IF(ISUB.EQ.69) THEN
33251 C...gamma + gamma -> W+ + W-
33252           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
33253           FPROP=SH2/((SQMWE-TH)*(SQMWE-UH))
33254           FACWW=COMFAC*6D0*AEM**2*(1D0-FPROP*(4D0/3D0+2D0*SQMWE/SH)+
33255      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/SH)**2))*WIDS(24,1)
33256           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 420
33257           NCHN=NCHN+1
33258           ISIG(NCHN,1)=22
33259           ISIG(NCHN,2)=22
33260           ISIG(NCHN,3)=1
33261           SIGH(NCHN)=FACWW
33262   420     CONTINUE
33263  
33264         ELSEIF(ISUB.EQ.70) THEN
33265 C...gamma + W+/- -> Z0 + W+/-
33266           SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4))
33267           FPROP=(TH-SQMWE)**2/(-SH*(SQMWE-UH))
33268           FACZW=COMFAC*6D0*AEM**2*(XW1/XW)*
33269      &    (1D0-FPROP*(4D0/3D0+2D0*SQMWE/(TH-SQMWE))+
33270      &    FPROP**2*(2D0/3D0+2D0*(SQMWE/(TH-SQMWE))**2))*WIDS(23,2)
33271           DO 440 KCHW=1,-1,-2
33272             DO 430 ISDE=1,2
33273               IF(KFAC(ISDE,22)*KFAC(3-ISDE,24*KCHW).EQ.0) GOTO 430
33274               NCHN=NCHN+1
33275               ISIG(NCHN,ISDE)=22
33276               ISIG(NCHN,3-ISDE)=24*KCHW
33277               ISIG(NCHN,3)=1
33278               SIGH(NCHN)=FACZW*WIDS(24,(5-KCHW)/2)
33279   430       CONTINUE
33280   440     CONTINUE
33281         ENDIF
33282       ENDIF
33283  
33284       RETURN
33285       END
33286  
33287 C*********************************************************************
33288  
33289 C...PYSGHG
33290 C...Subprocess cross sections for Higgs processes,
33291 C...except Higgs pairs in PYSGSU, but including WW scattering.
33292 C...Auxiliary to PYSIGH.
33293  
33294       SUBROUTINE PYSGHG(NCHN,SIGS)
33295  
33296 C...Double precision and integer declarations
33297       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
33298       IMPLICIT INTEGER(I-N)
33299       INTEGER PYK,PYCHGE,PYCOMP
33300 C...Parameter statement to help give large particle numbers.
33301       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
33302      &KEXCIT=4000000,KDIMEN=5000000)
33303 C...Commonblocks
33304       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
33305       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
33306       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
33307       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
33308       COMMON/PYINT1/MINT(400),VINT(400)
33309       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
33310       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
33311       COMMON/PYINT4/MWID(500),WIDS(500,5)
33312       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
33313       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
33314       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
33315      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
33316      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
33317      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
33318       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
33319      &/PYINT3/,/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/
33320 C...Local arrays and complex variables
33321       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
33322       COMPLEX*16 A004,A204,A114,A00U,A20U,A11U
33323       COMPLEX*16 CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF
33324  
33325 C...Convert H or A process into equivalent h one
33326       IHIGG=1
33327       KFHIGG=25
33328       IF(ISUB.EQ.401.OR.ISUB.EQ.402) THEN
33329          KFHIGG=KFPR(ISUB,1)
33330       END IF
33331       IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND.
33332      &ISUB.LE.190)) THEN
33333         IHIGG=2
33334         IF(MOD(ISUB-1,10).GE.5) IHIGG=3
33335         KFHIGG=33+IHIGG
33336         IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3
33337         IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102
33338         IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103
33339         IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24
33340         IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26
33341         IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123
33342         IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124
33343         IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121
33344         IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122
33345         IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111
33346         IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112
33347         IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113
33348       ENDIF
33349       SQMH=PMAS(KFHIGG,1)**2
33350       GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2)
33351  
33352 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33353       IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ.
33354      &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN
33355 C...Calculate M_R and N_R functions for Higgs-like and QCD-like models
33356         IF(MSTP(46).LE.4) THEN
33357           HDTLH=LOG(PMAS(25,1)/PARP(44))
33358           HDTMR=(4.5D0*PARU(1)/SQRT(3D0)-74D0/9D0)/8D0+HDTLH/12D0
33359           HDTNR=-1D0/18D0+HDTLH/6D0
33360         ELSE
33361           HDTNM=0.125D0*(1D0/(288D0*PARU(1)**2)+(PARP(47)/PARP(45))**2)
33362           HDTLQ=LOG(PARP(45)/PARP(44))
33363           HDTMR=-(4D0*PARU(1))**2*0.5D0*HDTNM+HDTLQ/12D0
33364           HDTNR=(4D0*PARU(1))**2*HDTNM+HDTLQ/6D0
33365         ENDIF
33366  
33367 C...Calculate lowest and next-to-lowest order partial wave amplitudes
33368         HDTV=1D0/(16D0*PARU(1)*PARP(47)**2)
33369         A00L=DBLE(HDTV*SH)
33370         A20L=-0.5D0*A00L
33371         A11L=A00L/6D0
33372         HDTLS=LOG(SH/PARP(44)**2)
33373         A004=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
33374      &  CMPLX(DBLE((176D0*HDTMR+112D0*HDTNR)/3D0+11D0/27D0-
33375      &  (50D0/9D0)*HDTLS),DBLE(4D0*PARU(1)))
33376         A204=DBLE((HDTV*SH)**2/(4D0*PARU(1)))*
33377      &  CMPLX(DBLE(32D0*(HDTMR+2D0*HDTNR)/3D0+25D0/54D0-
33378      &  (20D0/9D0)*HDTLS),DBLE(PARU(1)))
33379         A114=DBLE((HDTV*SH)**2/(6D0*PARU(1)))*
33380      &  CMPLX(DBLE(4D0*(-2D0*HDTMR+HDTNR)-1D0/18D0),DBLE(PARU(1)/6D0))
33381  
33382 C...Unitarize partial wave amplitudes with Pade or K-matrix method
33383         IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN
33384           A00U=A00L/(1D0-A004/A00L)
33385           A20U=A20L/(1D0-A204/A20L)
33386           A11U=A11L/(1D0-A114/A11L)
33387         ELSE
33388           A00U=(A00L+DBLE(A004))/(1D0-DCMPLX(0.D0,A00L+DBLE(A004)))
33389           A20U=(A20L+DBLE(A204))/(1D0-DCMPLX(0.D0,A20L+DBLE(A204)))
33390           A11U=(A11L+DBLE(A114))/(1D0-DCMPLX(0.D0,A11L+DBLE(A114)))
33391         ENDIF
33392       ENDIF
33393  
33394 C...Differential cross section expressions.
33395  
33396       IF(ISUB.LE.60) THEN
33397         IF(ISUB.EQ.3) THEN
33398 C...f + fbar -> h0 (or H0, or A0)
33399           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33400           HS=SHR*WDTP(0)
33401           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33402           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33403      &    FACBW=0D0
33404           HP=AEM/(8D0*XW)*SH/SQMW*SH
33405           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33406           DO 100 I=MMINA,MMAXA
33407             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
33408             IA=IABS(I)
33409             RMQ=PYMRUN(IA,SH)**2/SH
33410             HI=HP*RMQ
33411             IF(IA.LE.10) HI=HP*RMQ*FACA/3D0
33412             IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
33413               IKFI=1
33414               IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
33415               IF(IA.GT.10) IKFI=3
33416               HI=HI*PARU(150+10*IHIGG+IKFI)**2
33417               IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
33418                 HI=HI/(1D0+RMSS(41))**2
33419                 IF(IHIGG.NE.3) THEN
33420                   HI=HI*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
33421      &            PARU(151+10*IHIGG))**2
33422                 ENDIF
33423               ENDIF
33424             ENDIF
33425             NCHN=NCHN+1
33426             ISIG(NCHN,1)=I
33427             ISIG(NCHN,2)=-I
33428             ISIG(NCHN,3)=1
33429             SIGH(NCHN)=HI*FACBW*HF
33430   100     CONTINUE
33431  
33432         ELSEIF(ISUB.EQ.5) THEN
33433 C...Z0 + Z0 -> h0
33434           CALL PYWIDT(25,SH,WDTP,WDTE)
33435           HS=SHR*WDTP(0)
33436           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33437           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
33438           HP=AEM/(8D0*XW)*SH/SQMW*SH
33439           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33440           HI=HP/4D0
33441           FACI=8D0/(PARU(1)**2*XW1)*(AEM*XWC)**2
33442           DO 120 I=MMIN1,MMAX1
33443             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
33444             DO 110 J=MMIN2,MMAX2
33445               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
33446               EI=KCHG(IABS(I),1)/3D0
33447               AI=SIGN(1D0,EI)
33448               VI=AI-4D0*EI*XWV
33449               EJ=KCHG(IABS(J),1)/3D0
33450               AJ=SIGN(1D0,EJ)
33451               VJ=AJ-4D0*EJ*XWV
33452               NCHN=NCHN+1
33453               ISIG(NCHN,1)=I
33454               ISIG(NCHN,2)=J
33455               ISIG(NCHN,3)=1
33456               SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF
33457   110       CONTINUE
33458   120     CONTINUE
33459  
33460         ELSEIF(ISUB.EQ.8) THEN
33461 C...W+ + W- -> h0
33462           CALL PYWIDT(25,SH,WDTP,WDTE)
33463           HS=SHR*WDTP(0)
33464           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33465           IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0
33466           HP=AEM/(8D0*XW)*SH/SQMW*SH
33467           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33468           HI=HP/2D0
33469           FACI=1D0/(4D0*PARU(1)**2)*(AEM/XW)**2
33470           DO 140 I=MMIN1,MMAX1
33471             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
33472             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33473             DO 130 J=MMIN2,MMAX2
33474               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
33475               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33476               IF(EI*EJ.GT.0D0) GOTO 130
33477               NCHN=NCHN+1
33478               ISIG(NCHN,1)=I
33479               ISIG(NCHN,2)=J
33480               ISIG(NCHN,3)=1
33481               SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF
33482   130       CONTINUE
33483   140     CONTINUE
33484  
33485         ELSEIF(ISUB.EQ.24) THEN
33486 C...f + fbar -> Z0 + h0 (or H0, or A0)
33487 C...Propagators: Z0, h0 as simulated in PYOFSH and as desired
33488           HBW3=GMMZ/((SQM3-SQMZ)**2+GMMZ**2)
33489           CALL PYWIDT(23,SQM3,WDTP,WDTE)
33490           GMMZ3=SQRT(SQM3)*WDTP(0)
33491           HBW3C=GMMZ3/((SQM3-SQMZ)**2+GMMZ3**2)
33492           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
33493           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
33494           GMMH4=SQRT(SQM4)*WDTP(0)
33495           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
33496           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
33497           FACHZ=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*8D0*(AEM*XWC)**2*
33498      &    (THUH+2D0*SH*SQM3)/((SH-SQMZ)**2+GMMZ**2)
33499           FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2)
33500           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ*
33501      &    PARU(154+10*IHIGG)**2
33502           DO 150 I=MMINA,MMAXA
33503             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150
33504             EI=KCHG(IABS(I),1)/3D0
33505             AI=SIGN(1D0,EI)
33506             VI=AI-4D0*EI*XWV
33507             FCOI=1D0
33508             IF(IABS(I).LE.10) FCOI=FACA/3D0
33509             NCHN=NCHN+1
33510             ISIG(NCHN,1)=I
33511             ISIG(NCHN,2)=-I
33512             ISIG(NCHN,3)=1
33513             SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2)
33514   150     CONTINUE
33515  
33516         ELSEIF(ISUB.EQ.26) THEN
33517 C...f + fbar' -> W+/- + h0 (or H0, or A0)
33518 C...Propagators: W+-, h0 as simulated in PYOFSH and as desired
33519           HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2)
33520           CALL PYWIDT(24,SQM3,WDTP,WDTE)
33521           GMMW3=SQRT(SQM3)*WDTP(0)
33522           HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2)
33523           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
33524           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
33525           GMMH4=SQRT(SQM4)*WDTP(0)
33526           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
33527           THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2)
33528           FACHW=COMFAC*0.125D0*(AEM/XW)**2*(THUH+2D0*SH*SQM3)/
33529      &    ((SH-SQMW)**2+GMMW**2)*(HBW3C/HBW3)*(HBW4C/HBW4)
33530           FACHW=FACHW*WIDS(KFHIGG,2)
33531           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW*
33532      &    PARU(155+10*IHIGG)**2
33533           DO 170 I=MMIN1,MMAX1
33534             IA=IABS(I)
33535             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 170
33536             DO 160 J=MMIN2,MMAX2
33537               JA=IABS(J)
33538               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 160
33539               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 160
33540               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
33541      &        GOTO 160
33542               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
33543               FCKM=1D0
33544               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
33545               FCOI=1D0
33546               IF(IA.LE.10) FCOI=FACA/3D0
33547               NCHN=NCHN+1
33548               ISIG(NCHN,1)=I
33549               ISIG(NCHN,2)=J
33550               ISIG(NCHN,3)=1
33551               SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2)
33552   160       CONTINUE
33553   170     CONTINUE
33554  
33555         ELSEIF(ISUB.EQ.32) THEN
33556 C...f + g -> f + h0 (q + g -> q + h0 only)
33557           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24D0
33558 C...H propagator: as simulated in PYOFSH and as desired
33559           SQMHC=PMAS(25,1)**2
33560           GMMHC=PMAS(25,1)*PMAS(25,2)
33561           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
33562           CALL PYWIDT(25,SQM4,WDTP,WDTE)
33563           GMMHCC=SQRT(SQM4)*WDTP(0)
33564           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
33565           FHCQ=FHCQ*HBW4C/HBW4
33566           DO 190 I=MMINA,MMAXA
33567             IA=IABS(I)
33568             IF(IA.NE.5) GOTO 190
33569             SQML=PYMRUN(IA,SH)**2
33570             SQMQ=PMAS(IA,1)**2
33571             FACHCQ=FHCQ*SQML/SQMW*
33572      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQM4-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH-
33573      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQM4-UH)/(SQMQ-UH)*
33574      &      (SQM4-SQMQ-SH)/SH)
33575             DO 180 ISDE=1,2
33576               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
33577               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
33578               NCHN=NCHN+1
33579               ISIG(NCHN,ISDE)=I
33580               ISIG(NCHN,3-ISDE)=21
33581               ISIG(NCHN,3)=1
33582               SIGH(NCHN)=FACHCQ*WIDS(25,2)
33583   180       CONTINUE
33584   190     CONTINUE
33585         ENDIF
33586  
33587       ELSEIF(ISUB.LE.80) THEN
33588         IF(ISUB.EQ.71) THEN
33589 C...Z0 + Z0 -> Z0 + Z0
33590           IF(SH.LE.4.01D0*SQMZ) GOTO 220
33591  
33592           IF(MSTP(46).LE.2) THEN
33593 C...Exact scattering ME:s for on-mass-shell gauge bosons
33594             BE2=1D0-4D0*SQMZ/SH
33595             TH=-0.5D0*SH*BE2*(1D0-CTH)
33596             UH=-0.5D0*SH*BE2*(1D0+CTH)
33597             IF(MAX(TH,UH).GT.-1D0) GOTO 220
33598             SHANG=1D0/XW1*SQMW/SQMZ*(1D0+BE2)**2
33599             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
33600             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
33601             THANG=1D0/XW1*SQMW/SQMZ*(BE2-CTH)**2
33602             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
33603             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
33604             UHANG=1D0/XW1*SQMW/SQMZ*(BE2+CTH)**2
33605             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
33606             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
33607             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
33608      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
33609             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
33610             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+
33611      &      (ASHIM+ATHIM+AUHIM)**2)
33612             IF(MSTP(46).EQ.2) FACZZ=0D0
33613  
33614           ELSE
33615 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33616             FACZZ=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
33617      &      ABS(A00U+2D0*A20U)**2
33618           ENDIF
33619           FACZZ=FACZZ*WIDS(23,1)
33620  
33621           DO 210 I=MMIN1,MMAX1
33622             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 210
33623             EI=KCHG(IABS(I),1)/3D0
33624             AI=SIGN(1D0,EI)
33625             VI=AI-4D0*EI*XWV
33626             AVI=AI**2+VI**2
33627             DO 200 J=MMIN2,MMAX2
33628               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 200
33629               EJ=KCHG(IABS(J),1)/3D0
33630               AJ=SIGN(1D0,EJ)
33631               VJ=AJ-4D0*EJ*XWV
33632               AVJ=AJ**2+VJ**2
33633               NCHN=NCHN+1
33634               ISIG(NCHN,1)=I
33635               ISIG(NCHN,2)=J
33636               ISIG(NCHN,3)=1
33637               SIGH(NCHN)=0.5D0*FACZZ*AVI*AVJ
33638   200       CONTINUE
33639   210     CONTINUE
33640   220     CONTINUE
33641  
33642         ELSEIF(ISUB.EQ.72) THEN
33643 C...Z0 + Z0 -> W+ + W-
33644           IF(SH.LE.4.01D0*SQMZ) GOTO 250
33645  
33646           IF(MSTP(46).LE.2) THEN
33647 C...Exact scattering ME:s for on-mass-shell gauge bosons
33648             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
33649             CTH2=CTH**2
33650             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
33651             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
33652             IF(MAX(TH,UH).GT.-1D0) GOTO 250
33653             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
33654      &      (1D0-2D0*SQMZ/SH)
33655             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
33656             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
33657             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
33658      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
33659      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
33660      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
33661      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
33662             ATWIM=0D0
33663             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
33664      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
33665      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
33666      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
33667      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
33668             AUWIM=0D0
33669             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
33670             A4IM=0D0
33671             FACWW=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)*
33672      &      (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2
33673             IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2)
33674             IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+
33675      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
33676             IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+
33677      &      (ATWIM+AUWIM+A4IM)**2)
33678  
33679           ELSE
33680 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33681             FACWW=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)*
33682      &      ABS(A00U-A20U)**2
33683           ENDIF
33684           FACWW=FACWW*WIDS(24,1)
33685  
33686           DO 240 I=MMIN1,MMAX1
33687             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240
33688             EI=KCHG(IABS(I),1)/3D0
33689             AI=SIGN(1D0,EI)
33690             VI=AI-4D0*EI*XWV
33691             AVI=AI**2+VI**2
33692             DO 230 J=MMIN2,MMAX2
33693               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230
33694               EJ=KCHG(IABS(J),1)/3D0
33695               AJ=SIGN(1D0,EJ)
33696               VJ=AJ-4D0*EJ*XWV
33697               AVJ=AJ**2+VJ**2
33698               NCHN=NCHN+1
33699               ISIG(NCHN,1)=I
33700               ISIG(NCHN,2)=J
33701               ISIG(NCHN,3)=1
33702               SIGH(NCHN)=FACWW*AVI*AVJ
33703   230       CONTINUE
33704   240     CONTINUE
33705   250     CONTINUE
33706  
33707         ELSEIF(ISUB.EQ.73) THEN
33708 C...Z0 + W+/- -> Z0 + W+/-
33709           IF(SH.LE.2D0*SQMZ+2D0*SQMW) GOTO 280
33710  
33711           IF(MSTP(46).LE.2) THEN
33712 C...Exact scattering ME:s for on-mass-shell gauge bosons
33713             BE2=1D0-2D0*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2
33714             EP1=1D0-(SQMZ-SQMW)/SH
33715             EP2=1D0+(SQMZ-SQMW)/SH
33716             TH=-0.5D0*SH*BE2*(1D0-CTH)
33717             UH=(SQMZ-SQMW)**2/SH-0.5D0*SH*BE2*(1D0+CTH)
33718             IF(MAX(TH,UH).GT.-1D0) GOTO 280
33719             THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH)
33720             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
33721             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
33722             ASWRE=-XW1/SQMZ*SH/(SH-SQMW)*(-BE2*(EP1+EP2)**4*CTH+
33723      &      1D0/4D0*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4D0*BE2*CTH)+
33724      &      2D0*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH-
33725      &      1D0/16D0*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)
33726             ASWIM=0D0
33727             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-BE2*(EP2+EP1*CTH)*
33728      &      (EP1+EP2*CTH)*(BE2+EP1*EP2)+BE2*(EP2+EP1*CTH)*
33729      &      (BE2+EP1*EP2*CTH)*(2D0*EP2-EP2*CTH+EP1)-
33730      &      BE2*(EP2+EP1*CTH)**2*(BE2-EP2**2*CTH)-1D0/8D0*
33731      &      (BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+
33732      &      1D0/32D0*SH/SQMW*(BE2+EP1*EP2*CTH)**2*
33733      &      (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)*
33734      &      (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)*
33735      &      (2D0*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2*
33736      &      (BE2-EP1**2*CTH)-1D0/8D0*(BE2+EP1*EP2*CTH)**2*
33737      &      ((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+1D0/32D0*SH/SQMW*
33738      &      (BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2)
33739             AUWIM=0D0
33740             A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1D0)-
33741      &      2D0*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2D0*BE2*EP1*EP2)
33742             A4IM=0D0
33743             FACZW=COMFAC*1D0/(4096D0*PARU(1)**2*4D0*XW1)*(AEM/XW)**4*
33744      &      (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2
33745             IF(MSTP(46).LE.0) FACZW=0D0
33746             IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+
33747      &      (ATHIM+ASWIM+AUWIM+A4IM)**2)
33748             IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+
33749      &      (ASWIM+AUWIM+A4IM)**2)
33750  
33751           ELSE
33752 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33753             FACZW=COMFAC*AEM**2/(64D0*PARU(1)**2*XW**2*XW1)*16D0*
33754      &      ABS(A20U+3D0*A11U*DBLE(CTH))**2
33755           ENDIF
33756           FACZW=FACZW*WIDS(23,2)
33757  
33758           DO 270 I=MMIN1,MMAX1
33759             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 270
33760             EI=KCHG(IABS(I),1)/3D0
33761             AI=SIGN(1D0,EI)
33762             VI=AI-4D0*EI*XWV
33763             AVI=AI**2+VI**2
33764             KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I))
33765             DO 260 J=MMIN2,MMAX2
33766               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 260
33767               EJ=KCHG(IABS(J),1)/3D0
33768               AJ=SIGN(1D0,EJ)
33769               VJ=AI-4D0*EJ*XWV
33770               AVJ=AJ**2+VJ**2
33771               KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J))
33772               NCHN=NCHN+1
33773               ISIG(NCHN,1)=I
33774               ISIG(NCHN,2)=J
33775               ISIG(NCHN,3)=1
33776               SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2)
33777               NCHN=NCHN+1
33778               ISIG(NCHN,1)=I
33779               ISIG(NCHN,2)=J
33780               ISIG(NCHN,3)=2
33781               SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ
33782   260       CONTINUE
33783   270     CONTINUE
33784   280     CONTINUE
33785  
33786         ELSEIF(ISUB.EQ.75) THEN
33787 C...W+ + W- -> gamma + gamma
33788  
33789         ELSEIF(ISUB.EQ.76) THEN
33790 C...W+ + W- -> Z0 + Z0
33791           IF(SH.LE.4.01D0*SQMZ) GOTO 310
33792  
33793           IF(MSTP(46).LE.2) THEN
33794 C...Exact scattering ME:s for on-mass-shell gauge bosons
33795             BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH))
33796             CTH2=CTH**2
33797             TH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)
33798             UH=-0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)
33799             IF(MAX(TH,UH).GT.-1D0) GOTO 310
33800             SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)*
33801      &      (1D0-2D0*SQMZ/SH)
33802             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
33803             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
33804             ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0*
33805      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
33806      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
33807      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+
33808      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
33809             ATWIM=0D0
33810             AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0*
33811      &      CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0*
33812      &      ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2*
33813      &      (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2-
33814      &      2D0*(SQMW+SQMZ)/SH*BE2*CTH))
33815             AUWIM=0D0
33816             A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH)
33817             A4IM=0D0
33818             FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
33819      &      (SH/SQMW)**2*SH2
33820             IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2)
33821             IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+
33822      &      (ASHIM+ATWIM+AUWIM+A4IM)**2)
33823             IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+
33824      &      (ATWIM+AUWIM+A4IM)**2)
33825  
33826           ELSE
33827 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33828             FACZZ=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
33829      &      ABS(A00U-A20U)**2
33830           ENDIF
33831           FACZZ=FACZZ*WIDS(23,1)
33832  
33833           DO 300 I=MMIN1,MMAX1
33834             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 300
33835             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33836             DO 290 J=MMIN2,MMAX2
33837               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 290
33838               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33839               IF(EI*EJ.GT.0D0) GOTO 290
33840               NCHN=NCHN+1
33841               ISIG(NCHN,1)=I
33842               ISIG(NCHN,2)=J
33843               ISIG(NCHN,3)=1
33844               SIGH(NCHN)=0.5D0*FACZZ*VINT(180+I)*VINT(180+J)
33845   290       CONTINUE
33846   300     CONTINUE
33847   310     CONTINUE
33848  
33849         ELSEIF(ISUB.EQ.77) THEN
33850 C...W+/- + W+/- -> W+/- + W+/-
33851           IF(SH.LE.4.01D0*SQMW) GOTO 340
33852  
33853           IF(MSTP(46).LE.2) THEN
33854 C...Exact scattering ME:s for on-mass-shell gauge bosons
33855             BE2=1D0-4D0*SQMW/SH
33856             BE4=BE2**2
33857             CTH2=CTH**2
33858             CTH3=CTH**3
33859             TH=-0.5D0*SH*BE2*(1D0-CTH)
33860             UH=-0.5D0*SH*BE2*(1D0+CTH)
33861             IF(MAX(TH,UH).GT.-1D0) GOTO 340
33862             SHANG=(1D0+BE2)**2
33863             ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG
33864             ASHIM=-GMMH/((SH-SQMH)**2+GMMH**2)*SHANG
33865             THANG=(BE2-CTH)**2
33866             ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG
33867             ATHIM=-GMMH/((TH-SQMH)**2+GMMH**2)*THANG
33868             UHANG=(BE2+CTH)**2
33869             AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG
33870             AUHIM=-GMMH/((UH-SQMH)**2+GMMH**2)*UHANG
33871             SGZANG=1D0/SQMW*BE2*(3D0-BE2)**2*CTH
33872             ASGRE=XW*SGZANG
33873             ASGIM=0D0
33874             ASZRE=XW1*SH/(SH-SQMZ)*SGZANG
33875             ASZIM=0D0
33876             TGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)+BE2*(4D0-10D0*BE2+
33877      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2+BE2*CTH3)
33878             ATGRE=0.5D0*XW*SH/TH*TGZANG
33879             ATGIM=0D0
33880             ATZRE=0.5D0*XW1*SH/(TH-SQMZ)*TGZANG
33881             ATZIM=0D0
33882             UGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)-BE2*(4D0-10D0*BE2+
33883      &      BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2-BE2*CTH3)
33884             AUGRE=0.5D0*XW*SH/UH*UGZANG
33885             AUGIM=0D0
33886             AUZRE=0.5D0*XW1*SH/(UH-SQMZ)*UGZANG
33887             AUZIM=0D0
33888             A4ARE=1D0/SQMW*(1D0+2D0*BE2-6D0*BE2*CTH-CTH2)
33889             A4AIM=0D0
33890             A4SRE=2D0/SQMW*(1D0+2D0*BE2-CTH2)
33891             A4SIM=0D0
33892             FWW=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4*
33893      &      (SH/SQMW)**2*SH2
33894             IF(MSTP(46).LE.0) THEN
33895               AWWARE=ASHRE
33896               AWWAIM=ASHIM
33897               AWWSRE=0D0
33898               AWWSIM=0D0
33899             ELSEIF(MSTP(46).EQ.1) THEN
33900               AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
33901               AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
33902               AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
33903               AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
33904             ELSE
33905               AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE
33906               AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM
33907               AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE
33908               AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM
33909             ENDIF
33910             AWWA2=AWWARE**2+AWWAIM**2
33911             AWWS2=AWWSRE**2+AWWSIM**2
33912  
33913           ELSE
33914 C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron
33915             FWWA=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)*
33916      &      ABS(A00U+0.5D0*A20U+4.5D0*A11U*DBLE(CTH))**2
33917             FWWS=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*64D0*ABS(A20U)**2
33918           ENDIF
33919  
33920           DO 330 I=MMIN1,MMAX1
33921             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 330
33922             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
33923             DO 320 J=MMIN2,MMAX2
33924               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 320
33925               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
33926               IF(EI*EJ.LT.0D0) THEN
33927 C...W+W-
33928                 IF(MSTP(45).EQ.1) GOTO 320
33929                 IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1)
33930                 IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1)
33931               ELSE
33932 C...W+W+/W-W-
33933                 IF(MSTP(45).EQ.2) GOTO 320
33934                 IF(MSTP(46).LE.2) FACWW=FWW*AWWS2
33935                 IF(MSTP(46).GE.3) FACWW=FWWS
33936                 IF(EI.GT.0D0) FACWW=FACWW*WIDS(24,4)
33937                 IF(EI.LT.0D0) FACWW=FACWW*WIDS(24,5)
33938               ENDIF
33939               NCHN=NCHN+1
33940               ISIG(NCHN,1)=I
33941               ISIG(NCHN,2)=J
33942               ISIG(NCHN,3)=1
33943               SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J)
33944               IF(EI*EJ.GT.0D0) SIGH(NCHN)=0.5D0*SIGH(NCHN)
33945   320       CONTINUE
33946   330     CONTINUE
33947   340     CONTINUE
33948         ENDIF
33949  
33950       ELSEIF(ISUB.LE.120) THEN
33951         IF(ISUB.EQ.102) THEN
33952 C...g + g -> h0 (or H0, or A0)
33953           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33954           HS=SHR*WDTP(0)
33955           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33956           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33957           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33958      &    FACBW=0D0
33959 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
33960           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
33961             WDTP13=0D0
33962             DO 345 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33963               IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
33964      &            KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
33965  345        CONTINUE
33966             IF(WDTP13.EQ.0D0) CALL PYERRM(26,
33967      &          '(PYSGHG:) did not find Higgs -> g g channel')  
33968             HI=SHR*WDTP13/32D0
33969           ELSE
33970             HI=SHR*WDTP(13)/32D0 
33971           ENDIF
33972           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 350
33973           NCHN=NCHN+1
33974           ISIG(NCHN,1)=21
33975           ISIG(NCHN,2)=21
33976           ISIG(NCHN,3)=1
33977           SIGH(NCHN)=HI*FACBW*HF
33978   350     CONTINUE
33979  
33980         ELSEIF(ISUB.EQ.103) THEN
33981 C...gamma + gamma -> h0 (or H0, or A0)
33982           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
33983           HS=SHR*WDTP(0)
33984           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
33985           FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2)
33986           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
33987      &    FACBW=0D0
33988 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
33989           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
33990             WDTP14=0D0
33991             DO 355 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
33992               IF(KFDP(IDC,1).EQ.22.AND.KFDP(IDC,2).EQ.22.AND.
33993      &            KFDP(IDC,3).EQ.0) WDTP14=PMAS(KFHIGG,2)*BRAT(IDC)
33994  355        CONTINUE
33995             IF(WDTP14.EQ.0D0) CALL PYERRM(26,
33996      &          '(PYSGHG:) did not find Higgs -> gamma gamma channel') 
33997             HI=SHR*WDTP14*2D0
33998           ELSE
33999             HI=SHR*WDTP(14)*2D0
34000           ENDIF
34001           IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 360
34002           NCHN=NCHN+1
34003           ISIG(NCHN,1)=22
34004           ISIG(NCHN,2)=22
34005           ISIG(NCHN,3)=1
34006           SIGH(NCHN)=HI*FACBW*HF
34007   360     CONTINUE
34008  
34009         ELSEIF(ISUB.EQ.110) THEN
34010 C...f + fbar -> gamma + h0
34011           THUH=MAX(TH*UH,SH*CKIN(3)**2)
34012           FACHG=COMFAC*(3D0*AEM**4)/(2D0*PARU(1)**2*XW*SQMW)*SH*THUH
34013           FACHG=FACHG*WIDS(KFHIGG,2)
34014 C...Calculate loop contributions for intermediate gamma* and Z0
34015           CIGTOT=DCMPLX(0D0,0D0)
34016           CIZTOT=DCMPLX(0D0,0D0)
34017           JMAX=3*MSTP(1)+1
34018           DO 370 J=1,JMAX
34019             IF(J.LE.2*MSTP(1)) THEN
34020               FNC=1D0
34021               EJ=KCHG(J,1)/3D0
34022               AJ=SIGN(1D0,EJ+0.1D0)
34023               VJ=AJ-4D0*EJ*XWV
34024               BALP=SQM4/(2D0*PMAS(J,1))**2
34025               BBET=SH/(2D0*PMAS(J,1))**2
34026             ELSEIF(J.LE.3*MSTP(1)) THEN
34027               FNC=3D0
34028               JL=2*(J-2*MSTP(1))-1
34029               EJ=KCHG(10+JL,1)/3D0
34030               AJ=SIGN(1D0,EJ+0.1D0)
34031               VJ=AJ-4D0*EJ*XWV
34032               BALP=SQM4/(2D0*PMAS(10+JL,1))**2
34033               BBET=SH/(2D0*PMAS(10+JL,1))**2
34034             ELSE
34035               BALP=SQM4/(2D0*PMAS(24,1))**2
34036               BBET=SH/(2D0*PMAS(24,1))**2
34037             ENDIF
34038             BABI=1D0/(BALP-BBET)
34039             IF(BALP.LT.1D0) THEN
34040               F0ALP=DCMPLX(DBLE(ASIN(SQRT(BALP))),0D0)
34041               F1ALP=F0ALP**2
34042             ELSE
34043               F0ALP=DCMPLX(DBLE(LOG(SQRT(BALP)+SQRT(BALP-1D0))),
34044      &        -DBLE(0.5D0*PARU(1)))
34045               F1ALP=-F0ALP**2
34046             ENDIF
34047             F2ALP=DBLE(SQRT(ABS(BALP-1D0)/BALP))*F0ALP
34048             IF(BBET.LT.1D0) THEN
34049               F0BET=DCMPLX(DBLE(ASIN(SQRT(BBET))),0D0)
34050               F1BET=F0BET**2
34051             ELSE
34052               F0BET=DCMPLX(DBLE(LOG(SQRT(BBET)+SQRT(BBET-1D0))),
34053      &        -DBLE(0.5D0*PARU(1)))
34054               F1BET=-F0BET**2
34055             ENDIF
34056             F2BET=DBLE(SQRT(ABS(BBET-1D0)/BBET))*F0BET
34057             IF(J.LE.3*MSTP(1)) THEN
34058               FIF=DBLE(0.5D0*BABI)+DBLE(BABI**2)*(DBLE(0.5D0*(1D0-BALP+
34059      &        BBET))*(F1BET-F1ALP)+DBLE(BBET)*(F2BET-F2ALP))
34060               CIGTOT=CIGTOT+DBLE(FNC*EJ**2)*FIF
34061               CIZTOT=CIZTOT+DBLE(FNC*EJ*VJ)*FIF
34062             ELSE
34063               TXW=XW/XW1
34064               CIGTOT=CIGTOT-0.5*(DBLE(BABI*(1.5D0+BALP))+DBLE(BABI**2)*
34065      &        (DBLE(1.5D0-3D0*BALP+4D0*BBET)*(F1BET-F1ALP)+
34066      &        DBLE(BBET*(2D0*BALP+3D0))*(F2BET-F2ALP)))
34067               CIZTOT=CIZTOT-DBLE(0.5D0*BABI*XW1)*(DBLE(5D0-TXW+2D0*BALP*
34068      &        (1D0-TXW))*(1D0+DBLE(2D0*BABI*BBET)*(F2BET-F2ALP))+
34069      &        DBLE(BABI*(4D0*BBET*(3D0-TXW)-(2D0*BALP-1D0)*(5D0-TXW)))*
34070      &        (F1BET-F1ALP))
34071             ENDIF
34072   370     CONTINUE
34073           CIGTOT=CIGTOT/DBLE(SH)
34074           CIZTOT=CIZTOT*DBLE(XWC)/DCMPLX(DBLE(SH-SQMZ),DBLE(GMMZ))
34075 C...Loop over initial flavours
34076           DO 380 I=MMINA,MMAXA
34077             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
34078             EI=KCHG(IABS(I),1)/3D0
34079             AI=SIGN(1D0,EI)
34080             VI=AI-4D0*EI*XWV
34081             FCOI=1D0
34082             IF(IABS(I).LE.10) FCOI=FACA/3D0
34083             NCHN=NCHN+1
34084             ISIG(NCHN,1)=I
34085             ISIG(NCHN,2)=-I
34086             ISIG(NCHN,3)=1
34087             SIGH(NCHN)=FACHG*FCOI*(ABS(DBLE(EI)*CIGTOT+DBLE(VI)*
34088      &      CIZTOT)**2+AI**2*ABS(CIZTOT)**2)
34089   380     CONTINUE
34090  
34091         ELSEIF(ISUB.EQ.111) THEN
34092 C...f + fbar -> g + h0 (q + qbar -> g + h0 only)
34093           IF(MSTP(38).NE.0) THEN
34094 C...Simple case: only do gg <-> h exactly.
34095           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
34096 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
34097           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
34098             WDTP13=0D0
34099             DO 385 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
34100               IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
34101      &            KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
34102  385        CONTINUE
34103             IF(WDTP13.EQ.0D0) CALL PYERRM(26,
34104      &          '(PYSGHG:) did not find Higgs -> g g channel')  
34105             FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP13/SQRT(SQM4))*
34106      &          (TH**2+UH**2)/(SH*SQM4)
34107           ELSE
34108             FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP(13)/SQRT(SQM4))*
34109      &          (TH**2+UH**2)/(SH*SQM4)
34110           ENDIF
34111 C...Propagators: as simulated in PYOFSH and as desired
34112           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
34113           GMMHC=SQRT(SQM4)*WDTP(0)
34114           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
34115      &    ((SQM4-SQMH)**2+GMMHC**2)
34116           FACGH=FACGH*HBW4C/HBW4
34117           ELSE
34118 C...Messy case: do full loop integrals
34119           A5STUR=0D0
34120           A5STUI=0D0
34121           DO 390 I=1,2*MSTP(1)
34122             SQMQ=PMAS(I,1)**2
34123             EPSS=4D0*SQMQ/SH
34124             EPSH=4D0*SQMQ/SQMH
34125             CALL PYWAUX(1,EPSS,W1SR,W1SI)
34126             CALL PYWAUX(1,EPSH,W1HR,W1HI)
34127             CALL PYWAUX(2,EPSS,W2SR,W2SI)
34128             CALL PYWAUX(2,EPSH,W2HR,W2HI)
34129             A5STUR=A5STUR+EPSH*(1D0+SH/(TH+UH)*(W1SR-W1HR)+
34130      &      (0.25D0-SQMQ/(TH+UH))*(W2SR-W2HR))
34131             A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+
34132      &      (0.25D0-SQMQ/(TH+UH))*(W2SI-W2HI))
34133   390     CONTINUE
34134           FACGH=COMFAC*FACA/(144D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
34135      &    SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2)
34136           FACGH=FACGH*WIDS(25,2)
34137           ENDIF
34138           DO 400 I=MMINA,MMAXA
34139             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
34140      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
34141             NCHN=NCHN+1
34142             ISIG(NCHN,1)=I
34143             ISIG(NCHN,2)=-I
34144             ISIG(NCHN,3)=1
34145             SIGH(NCHN)=FACGH
34146   400     CONTINUE
34147  
34148         ELSEIF(ISUB.EQ.112) THEN
34149 C...f + g -> f + h0 (q + g -> q + h0 only)
34150           IF(MSTP(38).NE.0) THEN
34151 C...Simple case: only do gg <-> h exactly.
34152           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
34153 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
34154           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
34155             WDTP13=0D0
34156             DO 405 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
34157               IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
34158      &            KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
34159  405        CONTINUE
34160             IF(WDTP13.EQ.0D0) CALL PYERRM(26,
34161      &          '(PYSGHG:) did not find Higgs -> g g channel')  
34162             FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP13/SQRT(SQM4))*
34163      &          (SH**2+UH**2)/(-TH*SQM4)
34164           ELSE
34165             FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP(13)/SQRT(SQM4))*
34166      &          (SH**2+UH**2)/(-TH*SQM4)
34167           ENDIF
34168 C...Propagators: as simulated in PYOFSH and as desired
34169           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
34170           GMMHC=SQRT(SQM4)*WDTP(0)
34171           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
34172      &    ((SQM4-SQMH)**2+GMMHC**2)
34173           FACQH=FACQH*HBW4C/HBW4
34174           ELSE
34175 C...Messy case: do full loop integrals
34176           A5TSUR=0D0
34177           A5TSUI=0D0
34178           DO 410 I=1,2*MSTP(1)
34179             SQMQ=PMAS(I,1)**2
34180             EPST=4D0*SQMQ/TH
34181             EPSH=4D0*SQMQ/SQMH
34182             CALL PYWAUX(1,EPST,W1TR,W1TI)
34183             CALL PYWAUX(1,EPSH,W1HR,W1HI)
34184             CALL PYWAUX(2,EPST,W2TR,W2TI)
34185             CALL PYWAUX(2,EPSH,W2HR,W2HI)
34186             A5TSUR=A5TSUR+EPSH*(1D0+TH/(SH+UH)*(W1TR-W1HR)+
34187      &      (0.25D0-SQMQ/(SH+UH))*(W2TR-W2HR))
34188             A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+
34189      &      (0.25D0-SQMQ/(SH+UH))*(W2TI-W2HI))
34190   410     CONTINUE
34191           FACQH=COMFAC*FACA/(384D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW*
34192      &    SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2)
34193           FACQH=FACQH*WIDS(25,2)
34194           ENDIF
34195           DO 430 I=MMINA,MMAXA
34196             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430
34197             DO 420 ISDE=1,2
34198               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 420
34199               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 420
34200               NCHN=NCHN+1
34201               ISIG(NCHN,ISDE)=I
34202               ISIG(NCHN,3-ISDE)=21
34203               ISIG(NCHN,3)=1
34204               SIGH(NCHN)=FACQH
34205   420       CONTINUE
34206   430     CONTINUE
34207  
34208         ELSEIF(ISUB.EQ.113) THEN
34209 C...g + g -> g + h0
34210           IF(MSTP(38).NE.0) THEN
34211 C...Simple case: only do gg <-> h exactly.
34212           CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE)
34213 C...PS: Only use fixed-width when using SLHA decay table for this Higgs
34214           IF (IMSS(22).GE.1.AND.MWID(KFHIGG).EQ.2) THEN
34215             WDTP13=0D0
34216             DO 435 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1
34217               IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND.
34218      &            KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC)
34219  435        CONTINUE
34220             IF(WDTP13.EQ.0D0) CALL PYERRM(26,
34221      &          '(PYSGHG:) did not find Higgs -> g g channel')  
34222             FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP13/SQRT(SQM4))*
34223      &          (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4)
34224           ELSE
34225             FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP(13)/SQRT(SQM4))*
34226      &          (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4)
34227           ENDIF
34228 C...Propagators: as simulated in PYOFSH and as desired
34229           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
34230           GMMHC=SQRT(SQM4)*WDTP(0)
34231           HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/
34232      &    ((SQM4-SQMH)**2+GMMHC**2)
34233           FACGH=FACGH*HBW4C/HBW4
34234           ELSE
34235 C...Messy case: do full loop integrals
34236           A2STUR=0D0
34237           A2STUI=0D0
34238           A2USTR=0D0
34239           A2USTI=0D0
34240           A2TUSR=0D0
34241           A2TUSI=0D0
34242           A4STUR=0D0
34243           A4STUI=0D0
34244           DO 440 I=1,2*MSTP(1)
34245             SQMQ=PMAS(I,1)**2
34246             EPSS=4D0*SQMQ/SH
34247             EPST=4D0*SQMQ/TH
34248             EPSU=4D0*SQMQ/UH
34249             EPSH=4D0*SQMQ/SQMH
34250             IF(EPSH.LT.1D-6) GOTO 440
34251             CALL PYWAUX(1,EPSS,W1SR,W1SI)
34252             CALL PYWAUX(1,EPST,W1TR,W1TI)
34253             CALL PYWAUX(1,EPSU,W1UR,W1UI)
34254             CALL PYWAUX(1,EPSH,W1HR,W1HI)
34255             CALL PYWAUX(2,EPSS,W2SR,W2SI)
34256             CALL PYWAUX(2,EPST,W2TR,W2TI)
34257             CALL PYWAUX(2,EPSU,W2UR,W2UI)
34258             CALL PYWAUX(2,EPSH,W2HR,W2HI)
34259             CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI)
34260             CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI)
34261             CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI)
34262             CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI)
34263             CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI)
34264             CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI)
34265             CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI)
34266             CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI)
34267             CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI)
34268             CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI)
34269             CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI)
34270             CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI)
34271             W3STUR=YHSTUR-Y3STUR-Y3UTSR
34272             W3STUI=YHSTUI-Y3STUI-Y3UTSI
34273             W3SUTR=YHSUTR-Y3SUTR-Y3TUSR
34274             W3SUTI=YHSUTI-Y3SUTI-Y3TUSI
34275             W3TSUR=YHTSUR-Y3TSUR-Y3USTR
34276             W3TSUI=YHTSUI-Y3TSUI-Y3USTI
34277             W3TUSR=YHTUSR-Y3TUSR-Y3SUTR
34278             W3TUSI=YHTUSI-Y3TUSI-Y3SUTI
34279             W3USTR=YHUSTR-Y3USTR-Y3TSUR
34280             W3USTI=YHUSTI-Y3USTI-Y3TSUI
34281             W3UTSR=YHUTSR-Y3UTSR-Y3STUR
34282             W3UTSI=YHUTSI-Y3UTSI-Y3STUI
34283             B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2D0*TH*UH*
34284      &      (UH+2D0*SH)/(SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4D0)*
34285      &      (0.5D0*W2SR+0.5D0*W2HR-W2TR+W3STUR)+SH2*(2D0*SQMQ/
34286      &      (SH+UH)**2-0.5D0/(SH+UH))*(W2TR-W2HR)+0.5D0*TH*UH/SH*
34287      &      (W2HR-2D0*W2TR)+0.125D0*(SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUR)
34288             B2STUI=SQMQ/SQMH**2*(2D0*TH*UH*(UH+2D0*SH)/(SH+UH)**2*
34289      &      (W1TI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2TI+
34290      &      W3STUI)+SH2*(2D0*SQMQ/(SH+UH)**2-0.5D0/(SH+UH))*
34291      &      (W2TI-W2HI)+0.5D0*TH*UH/SH*(W2HI-2D0*W2TI)+0.125D0*
34292      &      (SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUI)
34293             B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2D0*UH*TH*
34294      &      (TH+2D0*SH)/(SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4D0)*
34295      &      (0.5D0*W2SR+0.5D0*W2HR-W2UR+W3SUTR)+SH2*(2D0*SQMQ/
34296      &      (SH+TH)**2-0.5D0/(SH+TH))*(W2UR-W2HR)+0.5D0*UH*TH/SH*
34297      &      (W2HR-2D0*W2UR)+0.125D0*(SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTR)
34298             B2SUTI=SQMQ/SQMH**2*(2D0*UH*TH*(TH+2D0*SH)/(SH+TH)**2*
34299      &      (W1UI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2UI+
34300      &      W3SUTI)+SH2*(2D0*SQMQ/(SH+TH)**2-0.5D0/(SH+TH))*
34301      &      (W2UI-W2HI)+0.5D0*UH*TH/SH*(W2HI-2D0*W2UI)+0.125D0*
34302      &      (SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTI)
34303             B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2D0*SH*UH*
34304      &      (UH+2D0*TH)/(TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4D0)*
34305      &      (0.5D0*W2TR+0.5D0*W2HR-W2SR+W3TSUR)+TH2*(2D0*SQMQ/
34306      &      (TH+UH)**2-0.5D0/(TH+UH))*(W2SR-W2HR)+0.5D0*SH*UH/TH*
34307      &      (W2HR-2D0*W2SR)+0.125D0*(TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUR)
34308             B2TSUI=SQMQ/SQMH**2*(2D0*SH*UH*(UH+2D0*TH)/(TH+UH)**2*
34309      &      (W1SI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2SI+
34310      &      W3TSUI)+TH2*(2D0*SQMQ/(TH+UH)**2-0.5D0/(TH+UH))*
34311      &      (W2SI-W2HI)+0.5D0*SH*UH/TH*(W2HI-2D0*W2SI)+0.125D0*
34312      &      (TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUI)
34313             B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2D0*UH*SH*
34314      &      (SH+2D0*TH)/(TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4D0)*
34315      &      (0.5D0*W2TR+0.5D0*W2HR-W2UR+W3TUSR)+TH2*(2D0*SQMQ/
34316      &      (TH+SH)**2-0.5D0/(TH+SH))*(W2UR-W2HR)+0.5D0*UH*SH/TH*
34317      &      (W2HR-2D0*W2UR)+0.125D0*(TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSR)
34318             B2TUSI=SQMQ/SQMH**2*(2D0*UH*SH*(SH+2D0*TH)/(TH+SH)**2*
34319      &      (W1UI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2UI+
34320      &      W3TUSI)+TH2*(2D0*SQMQ/(TH+SH)**2-0.5D0/(TH+SH))*
34321      &      (W2UI-W2HI)+0.5D0*UH*SH/TH*(W2HI-2D0*W2UI)+0.125D0*
34322      &      (TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSI)
34323             B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2D0*SH*TH*
34324      &      (TH+2D0*UH)/(UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4D0)*
34325      &      (0.5D0*W2UR+0.5D0*W2HR-W2SR+W3USTR)+UH2*(2D0*SQMQ/
34326      &      (UH+TH)**2-0.5D0/(UH+TH))*(W2SR-W2HR)+0.5D0*SH*TH/UH*
34327      &      (W2HR-2D0*W2SR)+0.125D0*(UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTR)
34328             B2USTI=SQMQ/SQMH**2*(2D0*SH*TH*(TH+2D0*UH)/(UH+TH)**2*
34329      &      (W1SI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2SI+
34330      &      W3USTI)+UH2*(2D0*SQMQ/(UH+TH)**2-0.5D0/(UH+TH))*
34331      &      (W2SI-W2HI)+0.5D0*SH*TH/UH*(W2HI-2D0*W2SI)+0.125D0*
34332      &      (UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTI)
34333             B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2D0*TH*SH*
34334      &      (SH+2D0*UH)/(UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4D0)*
34335      &      (0.5D0*W2UR+0.5D0*W2HR-W2TR+W3UTSR)+UH2*(2D0*SQMQ/
34336      &      (UH+SH)**2-0.5D0/(UH+SH))*(W2TR-W2HR)+0.5D0*TH*SH/UH*
34337      &      (W2HR-2D0*W2TR)+0.125D0*(UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSR)
34338             B2UTSI=SQMQ/SQMH**2*(2D0*TH*SH*(SH+2D0*UH)/(UH+SH)**2*
34339      &      (W1TI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2TI+
34340      &      W3UTSI)+UH2*(2D0*SQMQ/(UH+SH)**2-0.5D0/(UH+SH))*
34341      &      (W2TI-W2HI)+0.5D0*TH*SH/UH*(W2HI-2D0*W2TI)+0.125D0*
34342      &      (UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSI)
34343             B4STUR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
34344      &      (W2SR-W2HR+W3STUR))
34345             B4STUI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2SI-W2HI+W3STUI)
34346             B4TUSR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
34347      &      (W2TR-W2HR+W3TUSR))
34348             B4TUSI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2TI-W2HI+W3TUSI)
34349             B4USTR=0.25D0*EPSH*(-2D0/3D0+0.25D0*(EPSH-1D0)*
34350      &      (W2UR-W2HR+W3USTR))
34351             B4USTI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2UI-W2HI+W3USTI)
34352             A2STUR=A2STUR+B2STUR+B2SUTR
34353             A2STUI=A2STUI+B2STUI+B2SUTI
34354             A2USTR=A2USTR+B2USTR+B2UTSR
34355             A2USTI=A2USTI+B2USTI+B2UTSI
34356             A2TUSR=A2TUSR+B2TUSR+B2TSUR
34357             A2TUSI=A2TUSI+B2TUSI+B2TSUI
34358             A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR
34359             A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI
34360   440     CONTINUE
34361           FACGH=COMFAC*FACA*3D0/(128D0*PARU(1)**2)*AEM/XW*AS**3*
34362      &    SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+
34363      &    A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2)
34364           FACGH=FACGH*WIDS(25,2)
34365           ENDIF
34366           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 450
34367           NCHN=NCHN+1
34368           ISIG(NCHN,1)=21
34369           ISIG(NCHN,2)=21
34370           ISIG(NCHN,3)=1
34371           SIGH(NCHN)=FACGH
34372   450     CONTINUE
34373         ENDIF
34374  
34375       ELSEIF(ISUB.LE.170) THEN
34376         IF(ISUB.EQ.121) THEN
34377 C...g + g -> Q + Qbar + h0
34378           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 460
34379           IA=KFPR(ISUBSV,2)
34380           PMF=PYMRUN(IA,SH)
34381           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
34382      &    (0.5D0*PMF/PMAS(24,1))**2
34383           WID2=1D0
34384           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
34385           FACQQH=FACQQH*WID2
34386           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
34387             IKFI=1
34388             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
34389             IF(IA.GT.10) IKFI=3
34390             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
34391             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
34392               FACQQH=FACQQH/(1D0+RMSS(41))**2
34393               IF(IHIGG.NE.3) THEN
34394                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
34395      &          PARU(151+10*IHIGG))**2
34396               ENDIF
34397             ENDIF
34398           ENDIF
34399           CALL PYQQBH(WTQQBH)
34400           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34401           HS=SHR*WDTP(0)
34402           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34403           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
34404           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34405      &    FACBW=0D0
34406           NCHN=NCHN+1
34407           ISIG(NCHN,1)=21
34408           ISIG(NCHN,2)=21
34409           ISIG(NCHN,3)=1
34410           SIGH(NCHN)=FACQQH*WTQQBH*FACBW
34411   460     CONTINUE
34412  
34413         ELSEIF(ISUB.EQ.122) THEN
34414 C...q + qbar -> Q + Qbar + h0
34415           IA=KFPR(ISUBSV,2)
34416           PMF=PYMRUN(IA,SH)
34417           FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2*
34418      &    (0.5D0*PMF/PMAS(24,1))**2
34419           WID2=1D0
34420           IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1)
34421           FACQQH=FACQQH*WID2
34422           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN
34423             IKFI=1
34424             IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2
34425             IF(IA.GT.10) IKFI=3
34426             FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2
34427             IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN
34428               FACQQH=FACQQH/(1D0+RMSS(41))**2
34429               IF(IHIGG.NE.3) THEN
34430                 FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/
34431      &          PARU(151+10*IHIGG))**2
34432               ENDIF
34433             ENDIF
34434           ENDIF
34435           CALL PYQQBH(WTQQBH)
34436           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34437           HS=SHR*WDTP(0)
34438           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34439           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
34440           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34441      &    FACBW=0D0
34442           DO 470 I=MMINA,MMAXA
34443             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
34444      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 470
34445             NCHN=NCHN+1
34446             ISIG(NCHN,1)=I
34447             ISIG(NCHN,2)=-I
34448             ISIG(NCHN,3)=1
34449             SIGH(NCHN)=FACQQH*WTQQBH*FACBW
34450   470     CONTINUE
34451  
34452         ELSEIF(ISUB.EQ.123) THEN
34453 C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as
34454 C...inner process)
34455           FACNOR=COMFAC*(4D0*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32D0
34456           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
34457      &    PARU(154+10*IHIGG)**2
34458           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
34459      &    (VINT(216)-VINT(209)**2))**2
34460           FACZZ1=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
34461           FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218)
34462           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34463           HS=SHR*WDTP(0)
34464           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34465           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
34466           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34467      &    FACBW=0D0
34468           DO 490 I=MMIN1,MMAX1
34469             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 490
34470             IA=IABS(I)
34471             DO 480 J=MMIN2,MMAX2
34472               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 480
34473               JA=IABS(J)
34474               EI=KCHG(IA,1)*ISIGN(1,I)/3D0
34475               AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I)
34476               VI=AI-4D0*EI*XWV
34477               EJ=KCHG(JA,1)*ISIGN(1,J)/3D0
34478               AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J)
34479               VJ=AJ-4D0*EJ*XWV
34480               FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4D0*VI*AI*VJ*AJ
34481               FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4D0*VI*AI*VJ*AJ
34482               NCHN=NCHN+1
34483               ISIG(NCHN,1)=I
34484               ISIG(NCHN,2)=J
34485               ISIG(NCHN,3)=1
34486               SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW
34487   480       CONTINUE
34488   490     CONTINUE
34489  
34490         ELSEIF(ISUB.EQ.124) THEN
34491 C...f + f' -> f" + f"' + h0 (or H0, or A0) (W+ + W- -> h0 as
34492 C...inner process)
34493           FACNOR=COMFAC*(4D0*PARU(1)*AEM/XW)**3*SQMW
34494           IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR*
34495      &    PARU(155+10*IHIGG)**2
34496           FACPRP=1D0/((VINT(215)-VINT(204)**2)*
34497      &    (VINT(216)-VINT(209)**2))**2
34498           FACWW=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219)
34499           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34500           HS=SHR*WDTP(0)
34501           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
34502           FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2)
34503           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34504      &    FACBW=0D0
34505           DO 510 I=MMIN1,MMAX1
34506             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 510
34507             EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1)
34508             DO 500 J=MMIN2,MMAX2
34509               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 500
34510               EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1)
34511               IF(EI*EJ.GT.0D0) GOTO 500
34512               FACLR=VINT(180+I)*VINT(180+J)
34513               NCHN=NCHN+1
34514               ISIG(NCHN,1)=I
34515               ISIG(NCHN,2)=J
34516               ISIG(NCHN,3)=1
34517               SIGH(NCHN)=FACLR*FACWW*FACBW
34518   500       CONTINUE
34519   510     CONTINUE
34520  
34521         ELSEIF(ISUB.EQ.143) THEN
34522 C...f + fbar' -> H+/-
34523           SQMHC=PMAS(37,1)**2
34524           CALL PYWIDT(37,SH,WDTP,WDTE)
34525           HS=SHR*WDTP(0)
34526           FACBW=4D0*COMFAC/((SH-SQMHC)**2+HS**2)
34527           HP=AEM/(8D0*XW)*SH/SQMW*SH
34528           DO 530 I=MMIN1,MMAX1
34529             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 530
34530             IA=IABS(I)
34531             IM=(MOD(IA,10)+1)/2
34532             DO 520 J=MMIN2,MMAX2
34533               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 520
34534               JA=IABS(J)
34535               JM=(MOD(JA,10)+1)/2
34536               IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 520
34537               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
34538      &        GOTO 520
34539               IF(MOD(IA,2).EQ.0) THEN
34540                 IU=IA
34541                 IL=JA
34542               ELSE
34543                 IU=JA
34544                 IL=IA
34545               ENDIF
34546               RML=PYMRUN(IL,SH)**2/SH
34547               RMU=PYMRUN(IU,SH)**2/SH
34548               HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2)
34549               IF(IA.LE.10) HI=HI*FACA/3D0
34550               KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
34551               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4))
34552               NCHN=NCHN+1
34553               ISIG(NCHN,1)=I
34554               ISIG(NCHN,2)=J
34555               ISIG(NCHN,3)=1
34556               SIGH(NCHN)=HI*FACBW*HF
34557   520       CONTINUE
34558   530     CONTINUE
34559  
34560         ELSEIF(ISUB.EQ.161) THEN
34561 C...f + g -> f' + H+/- (b + g -> t + H+/- only)
34562 C...(choice of only b and t to avoid kinematics problems)
34563           FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24
34564 C...H propagator: as simulated in PYOFSH and as desired
34565           SQMHC=PMAS(37,1)**2
34566           GMMHC=PMAS(37,1)*PMAS(37,2)
34567           HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2)
34568           CALL PYWIDT(37,SQM4,WDTP,WDTE)
34569           GMMHCC=SQRT(SQM4)*WDTP(0)
34570           HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2)
34571           FHCQ=FHCQ*HBW4C/HBW4
34572           Q2RM=SH
34573           IF(MSTP(32).EQ.12) Q2RM=PARP(194)
34574           DO 550 I=MMINA,MMAXA
34575             IA=IABS(I)
34576             IF(IA.NE.5) GOTO 550
34577             SQML=PYMRUN(IA,Q2RM)**2
34578             IUA=IA+MOD(IA,2)
34579             SQMQ=PYMRUN(IUA,Q2RM)**2
34580             FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW*
34581      &      (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH-
34582      &      2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)*
34583      &      (SQMHC-SQMQ-SH)/SH)
34584             KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I))
34585             DO 540 ISDE=1,2
34586               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 540
34587               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 540
34588               NCHN=NCHN+1
34589               ISIG(NCHN,ISDE)=I
34590               ISIG(NCHN,3-ISDE)=21
34591               ISIG(NCHN,3)=1
34592               SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2)
34593               IF(IUA.EQ.6) SIGH(NCHN)=SIGH(NCHN)*WIDS(6,(5+KCHHC)/2)
34594   540       CONTINUE
34595   550     CONTINUE
34596         ENDIF
34597  
34598       ELSEIF(ISUB.LE.402) THEN
34599         IF(ISUB.EQ.401) THEN
34600 C...  g + g -> t + bbar + H-
34601           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 560
34602           IA=KFPR(ISUBSV,2)
34603           CALL PYSTBH(WTTBH)
34604           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34605           HS=SHR*WDTP(0)
34606           FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2)
34607           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34608      &       FACBW=0D0
34609           NCHN=NCHN+1
34610           ISIG(NCHN,1)=21
34611           ISIG(NCHN,2)=21
34612           ISIG(NCHN,3)=1
34613           SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW
34614 c     Since we don't know yet if H+ or H-, assume H+
34615 c     when calculating suppression due to closed channels.
34616           SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3)
34617           IF(ABS(WIDS(37,2)-WIDS(37,3))
34618      &       .GE.1D-6*(WIDS(37,2)+WIDS(37,3)).OR.
34619      &       ABS(WIDS(6,2)-WIDS(6,3))
34620      &       .GE.1D-6*(WIDS(6,2)+WIDS(6,3))) THEN
34621             WRITE(*,*)'Error: Process 401 cannot handle different'
34622             WRITE(*,*)'decays for H+ and H- or t and tbar.'
34623             WRITE(*,*)'Execution stopped.'
34624             CALL PYSTOP(108)
34625           END IF
34626  560      CONTINUE
34627  
34628         ELSEIF(ISUB.EQ.402) THEN
34629 C...  q + qbar -> t + bbar + H-
34630           IA=KFPR(ISUBSV,2)
34631           CALL PYSTBH(WTTBH)
34632           CALL PYWIDT(KFHIGG,SH,WDTP,WDTE)
34633           HS=SHR*WDTP(0)
34634           FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2)
34635           IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2))
34636      &       FACBW=0D0
34637           DO 570 I=MMINA,MMAXA
34638             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
34639      &         KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 570
34640             NCHN=NCHN+1
34641             ISIG(NCHN,1)=I
34642             ISIG(NCHN,2)=-I
34643             ISIG(NCHN,3)=1
34644             SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW
34645 c     Since we don't know yet if H+ or H-, assume H+
34646 c     when calculating suppression due to closed channels.
34647             SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3)
34648             IF(ABS(WIDS(37,2)-WIDS(37,3))/(WIDS(37,2)+WIDS(37,3))
34649      &         .GE.1D-6.OR.
34650      &         ABS(WIDS(6,2)-WIDS(6,3))/(WIDS(6,2)+WIDS(6,3))
34651      &         .GE.1D-6) THEN
34652               WRITE(*,*)'Error: Process 402 cannot handle different'
34653               WRITE(*,*)'decays for H+ and H- or t and tbar.'
34654               WRITE(*,*)'Execution stopped.'
34655               CALL PYSTOP(108)
34656             END IF
34657  570      CONTINUE
34658         ENDIF
34659       ENDIF
34660  
34661       RETURN
34662       END
34663  
34664 C*********************************************************************
34665  
34666 C...PYSGSU
34667 C...Subprocess cross sections for SUSY processes,
34668 C...including Higgs pair production.
34669 C...Auxiliary to PYSIGH.
34670  
34671       SUBROUTINE PYSGSU(NCHN,SIGS)
34672  
34673 C...Double precision and integer declarations
34674       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
34675       IMPLICIT INTEGER(I-N)
34676       INTEGER PYK,PYCHGE,PYCOMP
34677 C...Parameter statement to help give large particle numbers.
34678       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
34679      &KEXCIT=4000000,KDIMEN=5000000)
34680 C...Commonblocks
34681       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
34682       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
34683       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
34684       COMMON/PYINT1/MINT(400),VINT(400)
34685       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
34686       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
34687       COMMON/PYINT4/MWID(500),WIDS(500,5)
34688       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
34689       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
34690      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
34691       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
34692      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
34693      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
34694      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
34695       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
34696      &/PYINT4/,/PYMSSM/,/PYSSMT/,/PYSGCM/
34697 C...Local arrays and complex variables
34698       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
34699       COMPLEX*16 OLPP,ORPP,OLP,ORP,OL,OR,QLL,QLR
34700       COMPLEX*16 QRR,QRL,GLIJ,GRIJ,PROPW,PROPZ
34701       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
34702  
34703 CMRENNA++
34704 C...Z and W width, combinations of weak mixing angle
34705       ZWID=PMAS(23,2)
34706       WWID=PMAS(24,2)
34707       TANW=SQRT(XW/XW1)
34708       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
34709  
34710 C...Convert almost equivalent SUSY processes into each other
34711 C...Extract differences in flavours and couplings
34712  
34713 C...Sleptons and sneutrinos
34714       IF(ISUB.EQ.201.OR.ISUB.EQ.204.OR.ISUB.EQ.207) THEN
34715         KFID=MOD(KFPR(ISUB,1),KSUSY1)
34716         ISUB=201
34717         ILR=0
34718       ELSEIF(ISUB.EQ.202.OR.ISUB.EQ.205.OR.ISUB.EQ.208) THEN
34719         KFID=MOD(KFPR(ISUB,1),KSUSY1)
34720         ISUB=201
34721         ILR=1
34722       ELSEIF(ISUB.EQ.203.OR.ISUB.EQ.206.OR.ISUB.EQ.209) THEN
34723         KFID=MOD(KFPR(ISUB,1),KSUSY1)
34724         ISUB=203
34725       ELSEIF(ISUB.GE.210.AND.ISUB.LE.212) THEN
34726         IF(ISUB.EQ.210) THEN
34727           RKF=2.0D0
34728         ELSEIF(ISUB.EQ.211) THEN
34729           RKF=SFMIX(15,1)**2
34730         ELSEIF(ISUB.EQ.212) THEN
34731           RKF=SFMIX(15,2)**2
34732         ENDIF
34733           ISUB=210
34734       ELSEIF(ISUB.EQ.213.OR.ISUB.EQ.214) THEN
34735         IF(ISUB.EQ.213) THEN
34736           KFID=MOD(KFPR(ISUB,1),KSUSY1)
34737           RKF=2.0D0
34738         ELSEIF(ISUB.EQ.214) THEN
34739           KFID=16
34740           RKF=1.0D0
34741         ENDIF
34742         ISUB=213
34743  
34744 C...Neutralinos
34745       ELSEIF(ISUB.GE.216.AND.ISUB.LE.225) THEN
34746         IF(ISUB.EQ.216) THEN
34747           IZID1=1
34748           IZID2=1
34749         ELSEIF(ISUB.EQ.217) THEN
34750           IZID1=2
34751           IZID2=2
34752         ELSEIF(ISUB.EQ.218) THEN
34753           IZID1=3
34754           IZID2=3
34755         ELSEIF(ISUB.EQ.219) THEN
34756           IZID1=4
34757           IZID2=4
34758         ELSEIF(ISUB.EQ.220) THEN
34759           IZID1=1
34760           IZID2=2
34761         ELSEIF(ISUB.EQ.221) THEN
34762           IZID1=1
34763           IZID2=3
34764         ELSEIF(ISUB.EQ.222) THEN
34765           IZID1=1
34766           IZID2=4
34767         ELSEIF(ISUB.EQ.223) THEN
34768           IZID1=2
34769           IZID2=3
34770         ELSEIF(ISUB.EQ.224) THEN
34771           IZID1=2
34772           IZID2=4
34773         ELSEIF(ISUB.EQ.225) THEN
34774           IZID1=3
34775           IZID2=4
34776         ENDIF
34777         ISUB=216
34778  
34779 C...Charginos
34780       ELSEIF(ISUB.GE.226.AND.ISUB.LE.228) THEN
34781         IF(ISUB.EQ.226) THEN
34782           IZID1=1
34783           IZID2=1
34784         ELSEIF(ISUB.EQ.227) THEN
34785           IZID1=2
34786           IZID2=2
34787         ELSEIF(ISUB.EQ.228) THEN
34788           IZID1=1
34789           IZID2=2
34790         ENDIF
34791         ISUB=226
34792  
34793 C...Neutralino + chargino
34794       ELSEIF(ISUB.GE.229.AND.ISUB.LE.236) THEN
34795         IF(ISUB.EQ.229) THEN
34796           IZID1=1
34797           IZID2=1
34798         ELSEIF(ISUB.EQ.230) THEN
34799           IZID1=1
34800           IZID2=2
34801         ELSEIF(ISUB.EQ.231) THEN
34802           IZID1=1
34803           IZID2=3
34804         ELSEIF(ISUB.EQ.232) THEN
34805           IZID1=1
34806           IZID2=4
34807         ELSEIF(ISUB.EQ.233) THEN
34808           IZID1=2
34809           IZID2=1
34810         ELSEIF(ISUB.EQ.234) THEN
34811           IZID1=2
34812           IZID2=2
34813         ELSEIF(ISUB.EQ.235) THEN
34814           IZID1=2
34815           IZID2=3
34816         ELSEIF(ISUB.EQ.236) THEN
34817           IZID1=2
34818           IZID2=4
34819         ENDIF
34820         ISUB=229
34821  
34822 C...Gluino + neutralino
34823       ELSEIF(ISUB.GE.237.AND.ISUB.LE.240) THEN
34824         IF(ISUB.EQ.237) THEN
34825           IZID=1
34826         ELSEIF(ISUB.EQ.238) THEN
34827           IZID=2
34828         ELSEIF(ISUB.EQ.239) THEN
34829           IZID=3
34830         ELSEIF(ISUB.EQ.240) THEN
34831           IZID=4
34832         ENDIF
34833         ISUB=237
34834  
34835 C...Gluino + chargino
34836       ELSEIF(ISUB.GE.241.AND.ISUB.LE.242) THEN
34837         IF(ISUB.EQ.241) THEN
34838           IZID=1
34839         ELSEIF(ISUB.EQ.242) THEN
34840           IZID=2
34841         ENDIF
34842         ISUB=241
34843  
34844 C...Squark + neutralino
34845       ELSEIF(ISUB.GE.246.AND.ISUB.LE.253) THEN
34846         ILR=0
34847         IF(MOD(ISUB,2).NE.0) ILR=1
34848         IF(ISUB.LE.247) THEN
34849           IZID=1
34850         ELSEIF(ISUB.LE.249) THEN
34851           IZID=2
34852         ELSEIF(ISUB.LE.251) THEN
34853           IZID=3
34854         ELSEIF(ISUB.LE.253) THEN
34855           IZID=4
34856         ENDIF
34857         ISUB=246
34858         RKF=5D0
34859  
34860 C...Squark + chargino
34861       ELSEIF(ISUB.GE.254.AND.ISUB.LE.257) THEN
34862         IF(ISUB.LE.255) THEN
34863           IZID=1
34864         ELSEIF(ISUB.LE.257) THEN
34865           IZID=2
34866         ENDIF
34867         IF(MOD(ISUB,2).EQ.0) THEN
34868           ILR=0
34869         ELSE
34870           ILR=1
34871         ENDIF
34872         ISUB=254
34873         RKF=5D0
34874  
34875 C...Squark + gluino
34876       ELSEIF(ISUB.EQ.258.OR.ISUB.EQ.259) THEN
34877         ISUB=258
34878         RKF=4D0
34879  
34880 C...Stops
34881       ELSEIF(ISUB.EQ.261.OR.ISUB.EQ.262) THEN
34882         ILR=0
34883         IF(ISUB.EQ.262) ILR=1
34884         ISUB=261
34885       ELSEIF(ISUB.EQ.265) THEN
34886         ISUB=264
34887  
34888 C...Squarks
34889       ELSEIF(ISUB.GE.271.AND.ISUB.LE.280) THEN
34890         ILR=0
34891         IF(ISUB.LE.273) THEN
34892           IF(ISUB.EQ.273) ILR=1
34893           ISUB=271
34894           RKF=16D0
34895         ELSEIF(ISUB.LE.276) THEN
34896           IF(ISUB.EQ.276) ILR=1
34897           ISUB=274
34898           RKF=16D0
34899         ELSEIF(ISUB.LE.278) THEN
34900           IF(ISUB.EQ.278) ILR=1
34901           ISUB=277
34902           RKF=4D0
34903         ELSE
34904           IF(ISUB.EQ.280) ILR=1
34905           ISUB=279
34906           RKF=4D0
34907         ENDIF
34908 C...Sbottoms
34909       ELSEIF(ISUB.GE.281.AND.ISUB.LE.296) THEN
34910         ILR=0
34911         IF(ISUB.LE.283) THEN
34912           IF(ISUB.EQ.283) ILR=1
34913           ISUB=271
34914           RKF=4D0
34915         ELSEIF(ISUB.LE.286) THEN
34916           IF(ISUB.EQ.286) ILR=1
34917           ISUB=274
34918           RKF=4D0
34919         ELSEIF(ISUB.LE.288) THEN
34920           IF(ISUB.EQ.288) ILR=1
34921           ISUB=277
34922           RKF=1D0
34923         ELSEIF(ISUB.LE.290) THEN
34924           IF(ISUB.EQ.290) ILR=1
34925           ISUB=279
34926           RKF=1D0
34927         ELSEIF(ISUB.LE.293) THEN
34928           IF(ISUB.EQ.293) ILR=1
34929           ISUB=271
34930           RKF=1D0
34931         ELSEIF(ISUB.EQ.296) THEN
34932           ILR=1
34933           ISUB=274
34934           RKF=1D0
34935 C...Squark + gluino
34936         ELSEIF(ISUB.EQ.294.OR.ISUB.EQ.295) THEN
34937           ISUB=258
34938           RKF=1D0
34939         ENDIF
34940 C...H+/- + H0
34941       ELSEIF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN
34942         IF(ISUB.EQ.297) THEN
34943           RKF=.5D0*PARU(195)**2
34944         ELSEIF(ISUB.EQ.298) THEN
34945           RKF=.5D0*(1D0-PARU(195)**2)
34946         ENDIF
34947         ISUB=210
34948 C...A0 + H0
34949       ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN
34950         IF(ISUB.EQ.299) THEN
34951           RKF=PARU(186)**2
34952           KFID=25
34953         ELSEIF(ISUB.EQ.300) THEN
34954           RKF=PARU(187)**2
34955           KFID=35
34956         ENDIF
34957         ISUB=213
34958 C...H+ + H-
34959       ELSEIF(ISUB.EQ.301) THEN
34960         KFID=37
34961         RKF=1D0
34962         ISUB=201
34963       ENDIF
34964  
34965 C...Supersymmetric processes - all of type 2 -> 2 :
34966 C...correct final-state Breit-Wigners from fixed to running width.
34967       IF(MSTP(42).GT.0) THEN
34968         DO 100 I=1,2
34969         KFLW=KFPR(ISUBSV,I)
34970         KCW=PYCOMP(KFLW)
34971         IF(PMAS(KCW,2).LT.PARP(41)) GOTO 100
34972         IF(I.EQ.1) SQMI=SQM3
34973         IF(I.EQ.2) SQMI=SQM4
34974         SQMS=PMAS(KCW,1)**2
34975         GMMS=PMAS(KCW,1)*PMAS(KCW,2)
34976         HBWS=GMMS/((SQMI-SQMS)**2+GMMS**2)
34977         CALL PYWIDT(KFLW,SQMI,WDTP,WDTE)
34978         GMMI=SQRT(SQMI)*WDTP(0)
34979         HBWI=GMMI/((SQMI-SQMS)**2+GMMI**2)
34980         COMFAC=COMFAC*(HBWI/HBWS)
34981   100   CONTINUE
34982       ENDIF
34983  
34984 C...Differential cross section expressions.
34985  
34986       IF(ISUB.LE.210) THEN
34987         IF(ISUB.EQ.201) THEN
34988 C...f + fbar -> e_L + e_Lbar
34989           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
34990           DO 130 I=MMIN1,MMAX1
34991             IA=IABS(I)
34992             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 130
34993             EI=KCHG(IA,1)/3D0
34994             TT3I=SIGN(1D0,EI+1D-6)/2D0
34995             EJ=-1D0
34996             TT3J=-1D0/2D0
34997             FCOL=1D0
34998 C...Color factor for e+ e-
34999             IF(IA.GE.11) FCOL=3D0
35000             IF(ISUBSV.EQ.301) THEN
35001               A1=1D0
35002               A2=0D0
35003             ELSEIF(ILR.EQ.1) THEN
35004               A1=SFMIX(KFID,3)**2
35005               A2=SFMIX(KFID,4)**2
35006             ELSEIF(ILR.EQ.0) THEN
35007               A1=SFMIX(KFID,1)**2
35008               A2=SFMIX(KFID,2)**2
35009             ENDIF
35010             XLQ=(TT3J-EJ*XW)*A1
35011             XRQ=(-EJ*XW)*A2
35012             XLF=(TT3I-EI*XW)
35013             XRF=(-EI*XW)
35014             TAA=(EI*EJ)**2*(POLL+POLR)
35015             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ+XRQ)**2/XW**2/XW1**2
35016             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*ZWID/SH**2)
35017             TAZ=2D0*EI*EJ*(XLQ+XRQ)*(XLF*POLL+XRF*POLR)/XW/XW1
35018             TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
35019             TNN=0.0D0
35020             TAN=0.0D0
35021             TZN=0.0D0
35022             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
35023               FAC2=SQRT(2D0)
35024               TNN1=0D0
35025               TNN2=0D0
35026               TNN3=0D0
35027               DO 120 II=1,4
35028                 DK=1D0/(TH-SMZ(II)**2)
35029                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
35030      &          ZMIX(II,1))
35031                 FREK=FAC2*TANW*EI*ZMIX(II,1)
35032                 TNN1=TNN1+FLEK**2*DK
35033                 TNN2=TNN2+FREK**2*DK
35034                 DO 110 JJ=1,4
35035                   DL=1D0/(TH-SMZ(JJ)**2)
35036                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
35037      &            ZMIX(JJ,1))
35038                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
35039                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
35040   110           CONTINUE
35041   120         CONTINUE
35042               TNN=(UH*TH-SQM3*SQM4)*(A1**2*TNN1**2*POLL+
35043      &        A2**2*TNN2**2*POLR)
35044               TNN=(TNN+SH*A1*A2*TNN3*((1D0-PARJ(131))*(1D0-PARJ(132))+
35045      &        (1D0+PARJ(131))*(1D0+PARJ(132))))/4D0/XW**2
35046               TZN=(UH*TH-SQM3*SQM4)*(XLQ+XRQ)*
35047      &        (TNN1*XLF*A1*POLL+TNN2*XRF*A2*POLR)
35048               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
35049      &        (1D0-SQMZ/SH)/SH
35050               TZN=TZN/XW**2/XW1
35051               TAN=EI*EJ*(UH*TH-SQM3*SQM4)/SH*(A1*TNN1*POLL+
35052      &        A2*TNN2*POLR)/XW
35053             ENDIF
35054             FACQQ1=COMFAC*AEM**2*(TAA+TZZ+TAZ)*FCOL/3D0
35055             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH**2
35056             FACQQ2=COMFAC*AEM**2*(TNN+TZN+TAN)*FCOL/3D0
35057             NCHN=NCHN+1
35058             ISIG(NCHN,1)=I
35059             ISIG(NCHN,2)=-I
35060             ISIG(NCHN,3)=1
35061             SIGH(NCHN)=FACQQ1+FACQQ2
35062   130     CONTINUE
35063  
35064         ELSEIF(ISUB.EQ.203) THEN
35065 C...f + fbar -> e_L + e_Rbar
35066           DO 160 I=MMIN1,MMAX1
35067             IA=IABS(I)
35068             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 160
35069             EI=KCHG(IABS(I),1)/3D0
35070             TT3I=SIGN(1D0,EI)/2D0
35071             EJ=-1
35072             TT3J=-1D0/2D0
35073             FCOL=1D0
35074 C...Color factor for e+ e-
35075             IF(IA.GE.11) FCOL=3D0
35076             A1=SFMIX(KFID,1)**2
35077             A2=SFMIX(KFID,2)**2
35078             XLQ=(TT3J-EJ*XW)
35079             XRQ=(-EJ*XW)
35080             XLF=(TT3I-EI*XW)
35081             XRF=(-EI*XW)
35082             TZZ=(XLF**2*POLL+XRF**2*POLR)*(XLQ-XRQ)**2
35083      &      /XW**2/XW1**2*A1*A2
35084             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
35085             TNN=0.0D0
35086             TZN=0.0D0
35087             TNNA=0D0
35088             TNNB=0D0
35089             IF(IA.GE.11.AND.IA.LE.18.AND.KFID.EQ.IA) THEN
35090               FAC2=SQRT(2D0)
35091               TNN1=0D0
35092               TNN2=0D0
35093               TNN3=0D0
35094               DO 150 II=1,4
35095                 DK=1D0/(TH-SMZ(II)**2)
35096                 FLEK=-FAC2*(TT3I*ZMIX(II,2)-TANW*(TT3I-EI)*
35097      &          ZMIX(II,1))
35098                 FREK=FAC2*TANW*EI*ZMIX(II,1)
35099                 TNN1=TNN1+FLEK**2*DK
35100                 TNN2=TNN2+FREK**2*DK
35101                 DO 140 JJ=1,4
35102                   DL=1D0/(TH-SMZ(JJ)**2)
35103                   FLEL=-FAC2*(TT3J*ZMIX(JJ,2)-TANW*(TT3J-EJ)*
35104      &            ZMIX(JJ,1))
35105                   FREL=FAC2*TANW*EJ*ZMIX(JJ,1)
35106                   TNN3=TNN3+FLEK*FREK*FLEL*FREL*DK*DL*SMZ(II)*SMZ(JJ)
35107   140           CONTINUE
35108   150         CONTINUE
35109               TNN=(UH*TH-SQM3*SQM4)*A1*A2*(TNN2**2*POLR+TNN1**2*POLL)
35110               TNNA=(TNN+SH*(A1**2*POLLL+A2**2*POLRR)*TNN3)/4D0
35111               TNNB=(TNN+SH*(A1**2*POLRR+A2**2*POLLL)*TNN3)/4D0
35112               TZN=(UH*TH-SQM3*SQM4)*A1*A2
35113               TZN=TZN*(XLQ-XRQ)*(XLF*TNN1*POLL-XRF*TNN2*POLR)/XW1
35114               TZN=TZN/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*
35115      &        (1D0-SQMZ/SH)/SH
35116             ENDIF
35117             FACQQ0=COMFAC*AEM**2*TZZ*FCOL/3D0*(UH*TH-SQM3*SQM4)/SH2
35118             FACQQ2=COMFAC*AEM**2/XW**2*(TNNA+TZN)*FCOL/3D0
35119             FACQQ1=COMFAC*AEM**2/XW**2*(TNNB+TZN)*FCOL/3D0
35120 C%%%%%%%%%%%
35121             NCHN=NCHN+1
35122             ISIG(NCHN,1)=I
35123             ISIG(NCHN,2)=-I
35124             ISIG(NCHN,3)=1
35125             SIGH(NCHN)=(FACQQ0+FACQQ1)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35126      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
35127             NCHN=NCHN+1
35128             ISIG(NCHN,1)=I
35129             ISIG(NCHN,2)=-I
35130             ISIG(NCHN,3)=2
35131             SIGH(NCHN)=(FACQQ0+FACQQ2)*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
35132      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35133   160     CONTINUE
35134  
35135         ELSEIF(ISUB.EQ.210) THEN
35136 C...q + qbar' -> W*- > ~l_L + ~nu_L
35137           FAC0=RKF*COMFAC*AEM**2/XW**2/12D0
35138           FAC1=(TH*UH-SQM3*SQM4)/((SH-SQMW)**2+WWID**2*SQMW)
35139           DO 180 I=MMIN1,MMAX1
35140             IA=IABS(I)
35141             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 180
35142             DO 170 J=MMIN2,MMAX2
35143               JA=IABS(J)
35144               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 170
35145               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 170
35146               FCKM=3D0
35147               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
35148               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
35149               KCHW=2
35150               IF(KCHSUM.LT.0) KCHW=3
35151               NCHN=NCHN+1
35152               ISIG(NCHN,1)=I
35153               ISIG(NCHN,2)=J
35154               ISIG(NCHN,3)=1
35155               IF(ISUBSV.EQ.297.OR.ISUBSV.EQ.298) THEN
35156                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
35157      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35158               ELSE
35159                 FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),5-KCHW)*
35160      &          WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
35161               ENDIF
35162               SIGH(NCHN)=FAC0*FAC1*FCKM*FACR
35163   170       CONTINUE
35164   180     CONTINUE
35165         ENDIF
35166  
35167       ELSEIF(ISUB.LE.220) THEN
35168         IF(ISUB.EQ.213) THEN
35169 C...f + fbar -> ~nu_L + ~nu_Lbar
35170           IF(ISUBSV.EQ.299.OR.ISUBSV.EQ.300) THEN
35171             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35172      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35173           ELSE
35174             FACR=WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35175           ENDIF
35176           COMFAC=COMFAC*FACR
35177           PROPZ2=(SH-SQMZ)**2+ZWID**2*SQMZ
35178           XLL=0.5D0
35179           XLR=0.0D0
35180           DO 190 I=MMIN1,MMAX1
35181             IA=IABS(I)
35182             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 190
35183             EI=KCHG(IA,1)/3D0
35184             FCOL=1D0
35185 C...Color factor for e+ e-
35186             IF(IA.GE.11) FCOL=3D0
35187             XLQ=(SIGN(1D0,EI)-2D0*EI*XW)/2D0
35188             XRQ=-EI*XW
35189             TZC=0.0D0
35190             TCC=0.0D0
35191             IF(IA.GE.11.AND.KFID.EQ.IA+1) THEN
35192               TZC=VMIX(1,1)**2/(TH-SMW(1)**2)+VMIX(2,1)**2/
35193      &        (TH-SMW(2)**2)
35194               TCC=TZC**2
35195               TZC=TZC/XW1*(SH-SQMZ)/PROPZ2*XLQ*XLL
35196             ENDIF
35197             FACQQ1=(XLQ**2+XRQ**2)*(XLL+XLR)**2/XW1**2/PROPZ2
35198             FACQQ2=TZC+TCC/4D0
35199             NCHN=NCHN+1
35200             ISIG(NCHN,1)=I
35201             ISIG(NCHN,2)=-I
35202             ISIG(NCHN,3)=1
35203             SIGH(NCHN)=(FACQQ1+FACQQ2)*RKF*(UH*TH-SQM3*SQM4)*COMFAC
35204      &      *AEM**2*FCOL/3D0/XW**2
35205   190     CONTINUE
35206  
35207         ELSEIF(ISUB.EQ.216) THEN
35208 C...q + qbar -> ~chi0_1 + ~chi0_1
35209           IF(IZID1.EQ.IZID2) THEN
35210             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35211           ELSE
35212             COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35213      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35214           ENDIF
35215           FACXX=COMFAC*AEM**2/3D0/XW**2
35216           IF(IZID1.EQ.IZID2) FACXX=FACXX/2D0
35217           ZM12=SQM3
35218           ZM22=SQM4
35219           WU2 = (UH-ZM12)*(UH-ZM22)
35220           WT2 = (TH-ZM12)*(TH-ZM22)
35221           WS2 = SMZ(IZID1)*SMZ(IZID2)*SH
35222           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
35223           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
35224           DO 200 I=1,4
35225             ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
35226             IF(IZID2.NE.IZID1) THEN
35227               ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
35228             ENDIF
35229   200     CONTINUE
35230           OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
35231      &    ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
35232           ORPP=DCONJG(OLPP)
35233           DO 210 I=MMINA,MMAXA
35234             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 210
35235             EI=KCHG(IABS(I),1)/3D0
35236             T3I=SIGN(1D0,EI+1D-6)/2D0
35237             XML2=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2
35238             XMR2=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2
35239             GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
35240      &      DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
35241             GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
35242             QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
35243             QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
35244      &      /DCMPLX(TH-XML2)
35245             QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
35246             QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
35247      &      -DCONJG(GRIJ)/DCMPLX(UH-XMR2)
35248             FCOL=1D0
35249             IF(IABS(I).GE.11) FCOL=3D0
35250             FACGG1=(ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
35251      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
35252      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
35253      &      QRL*DCONJG(QRR)*POLR)*WS2
35254             NCHN=NCHN+1
35255             ISIG(NCHN,1)=I
35256             ISIG(NCHN,2)=-I
35257             ISIG(NCHN,3)=1
35258             SIGH(NCHN)=FACXX*FACGG1*FCOL
35259   210     CONTINUE
35260         ENDIF
35261  
35262       ELSEIF(ISUB.LE.230) THEN
35263         IF(ISUB.EQ.226) THEN
35264 C...f + fbar -> ~chi+_1 + ~chi-_1
35265           FACXX=COMFAC*AEM**2/3D0
35266           ZM12=SQM3
35267           ZM22=SQM4
35268           WU2 = (UH-ZM12)*(UH-ZM22)
35269           WT2 = (TH-ZM12)*(TH-ZM22)
35270           WS2 = SMW(IZID1)*SMW(IZID2)*SH
35271           PROPZ2 = (SH-SQMZ)**2 + SQMZ*ZWID**2
35272           PROPZ=DCMPLX(SH-SQMZ,-ZWID*PMAS(23,1))/DCMPLX(PROPZ2)
35273           DIFF=0D0
35274           IF(IZID1.EQ.IZID2) DIFF=1D0
35275           DO 220 I=1,2
35276             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
35277             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
35278             IF(IZID2.NE.IZID1) THEN
35279               VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
35280               UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
35281             ENDIF
35282   220     CONTINUE
35283           OLP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
35284      &    VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0+DCMPLX(XW*DIFF)
35285           ORP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
35286      &    UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0+DCMPLX(XW*DIFF)
35287           DO 230 I=MMINA,MMAXA
35288             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 230
35289             EI=KCHG(IABS(I),1)/3D0
35290             T3I=SIGN(1D0,EI+1D-6)/2D0
35291             QRL=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*ORP
35292             QLL=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*PROPZ*ORP
35293             QRR=DCMPLX(-EI/SH*DIFF)-DCMPLX(EI/XW1)*PROPZ*OLP
35294             IF(MOD(I,2).EQ.0) THEN
35295               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)-1),1)**2
35296               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
35297      &        PROPZ*OLP-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*
35298      &        DCMPLX(T3I/XW/(TH-XML2))
35299             ELSE
35300               XML2=PMAS(PYCOMP(KSUSY1+IABS(I)+1),1)**2
35301               QLR=DCMPLX(-EI/SH*DIFF)+DCMPLX((T3I-XW*EI)/XW/XW1)*
35302      &        PROPZ*OLP-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*
35303      &        DCMPLX(T3I/XW/(TH-XML2))
35304             ENDIF
35305             FCOL=1D0
35306             IF(IABS(I).GE.11) FCOL=3D0
35307             FACSUM=((ABS(QLL)**2*POLL+ABS(QRR)**2*POLR)*WU2+
35308      &      (ABS(QRL)**2*POLR+ABS(QLR)**2*POLL)*WT2+
35309      &      2D0*DBLE(QLR*DCONJG(QLL)*POLL+
35310      &      QRL*DCONJG(QRR)*POLR)*WS2)*FACXX*FCOL
35311             NCHN=NCHN+1
35312             ISIG(NCHN,1)=I
35313             ISIG(NCHN,2)=-I
35314             ISIG(NCHN,3)=1
35315             IF(IZID1.EQ.IZID2) THEN
35316               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35317             ELSE
35318               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
35319      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35320               NCHN=NCHN+1
35321               ISIG(NCHN,1)=I
35322               ISIG(NCHN,2)=-I
35323               ISIG(NCHN,3)=2
35324               SIGH(NCHN)=FACSUM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35325      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
35326             ENDIF
35327   230     CONTINUE
35328  
35329         ELSEIF(ISUB.EQ.229) THEN
35330 C...q + qbar' -> ~chi0_1 + ~chi+-_1
35331           FACXX=COMFAC*AEM**2/6D0/XW**2
35332           ZM12=SQM3
35333           ZM22=SQM4
35334           WU2 = (UH-ZM12)*(UH-ZM22)
35335           WT2 = (TH-ZM12)*(TH-ZM22)
35336           WS2 = SMW(IZID1)*SMZ(IZID2)*SH
35337           RT2I = 1D0/SQRT(2D0)
35338           PROPW = DCMPLX(SH-SQMW,-WWID*PMAS(24,1))/
35339      &    DCMPLX((SH-SQMW)**2+WWID**2*SQMW,0D0)
35340           DO 240 I=1,2
35341             VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
35342             UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
35343   240     CONTINUE
35344           DO 250 I=1,4
35345             ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
35346   250     CONTINUE
35347           OL=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
35348      &    DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)*PROPW
35349           OR=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
35350      &    ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)*PROPW
35351  
35352           DO 270 I=MMIN1,MMAX1
35353             IA=IABS(I)
35354             IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 270
35355             EI=KCHG(IA,1)/3D0
35356             T3I=SIGN(1D0,EI+1D-6)/2D0
35357             DO 260 J=MMIN2,MMAX2
35358               JA=IABS(J)
35359               IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 260
35360               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 260
35361               EJ=KCHG(JA,1)/3D0
35362               T3J=SIGN(1D0,EJ+1D-6)/2D0
35363               FCKM=3D0
35364               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
35365               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
35366               KCHW=2
35367               IF(KCHSUM.LT.0) KCHW=3
35368               IF(MOD(IA,2).EQ.0) THEN
35369                 ZMI2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
35370                 ZMJ2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
35371                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
35372      &          TANW+ZMIXC(IZID2,2)*T3I)/DCMPLX(UH-ZMI2)
35373                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
35374      &          ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
35375      &          /DCMPLX(TH-ZMJ2)
35376               ELSE
35377                 ZMI2  = PMAS(PYCOMP(KSUSY1+JA),1)**2
35378                 ZMJ2  = PMAS(PYCOMP(KSUSY1+IA),1)**2
35379                 QLL=OL+VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
35380      &          TANW+ZMIXC(IZID2,2)*T3J)/DCMPLX(UH-ZMJ2)
35381                 QLR=OR-DCONJG(UMIXC(IZID1,1))*(
35382      &          ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
35383      &          /DCMPLX(TH-ZMI2)
35384               ENDIF
35385               ZINTR=DBLE(QLR*DCONJG(QLL))
35386               FACGG1=FACXX*(ABS(QLL)**2*WU2+ABS(QLR)**2*WT2+
35387      &        2D0*ZINTR*WS2)
35388               NCHN=NCHN+1
35389               ISIG(NCHN,1)=I
35390               ISIG(NCHN,2)=J
35391               ISIG(NCHN,3)=1
35392               SIGH(NCHN)=FACGG1*FCKM*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35393      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
35394   260       CONTINUE
35395   270     CONTINUE
35396         ENDIF
35397  
35398       ELSEIF(ISUB.LE.240) THEN
35399         IF(ISUB.EQ.237) THEN
35400 C...q + qbar -> gluino + ~chi0_1
35401           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35402      &    WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35403           ASYUK=RMSS(42)*AS
35404           FAC0=COMFAC*ASYUK*AEM*4D0/9D0/XW
35405           GM2=SQM3
35406           ZM2=SQM4
35407           DO 280 I=MMINA,MMAXA
35408             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 280
35409             EI=KCHG(IABS(I),1)/3D0
35410             IA=IABS(I)
35411             XLQC = -TANW*EI*ZMIX(IZID,1)
35412             XRQC =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
35413      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
35414             XLQ2=XLQC**2
35415             XRQ2=XRQC**2
35416             XML2=PMAS(PYCOMP(KSUSY1+IA),1)**2
35417             XMR2=PMAS(PYCOMP(KSUSY2+IA),1)**2
35418             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XML2)**2
35419             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XML2)**2
35420             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XML2)/(UH-XML2)
35421             SGCHIL=XLQ2*(ATKIN+AUKIN-2D0*ATUKIN)
35422             ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMR2)**2
35423             AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMR2)**2
35424             ATUKIN=SMZ(IZID)*SQRT(GM2)*SH/(TH-XMR2)/(UH-XMR2)
35425             SGCHIR=XRQ2*(ATKIN+AUKIN-2D0*ATUKIN)
35426             NCHN=NCHN+1
35427             ISIG(NCHN,1)=I
35428             ISIG(NCHN,2)=-I
35429             ISIG(NCHN,3)=1
35430             SIGH(NCHN)=FAC0*(SGCHIL+SGCHIR)
35431   280     CONTINUE
35432         ENDIF
35433  
35434       ELSEIF(ISUB.LE.250) THEN
35435         IF(ISUB.EQ.241) THEN
35436 C...q + qbar' -> ~chi+-_1 + gluino
35437           FACWG=COMFAC*AS*AEM/XW*2D0/9D0
35438           GM2=SQM3
35439           ZM2=SQM4
35440           FAC01=2D0*UMIX(IZID,1)*VMIX(IZID,1)
35441           FAC0=UMIX(IZID,1)**2
35442           FAC1=VMIX(IZID,1)**2
35443           DO 300 I=MMIN1,MMAX1
35444             IA=IABS(I)
35445             IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 300
35446             DO 290 J=MMIN2,MMAX2
35447               JA=IABS(J)
35448               IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 290
35449               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 290
35450               FCKM=1D0
35451               IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2)
35452               KCHSUM=KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J)
35453               KCHW=2
35454               IF(KCHSUM.LT.0) KCHW=3
35455               XMU2=PMAS(PYCOMP(KSUSY1+2),1)**2
35456               XMD2=PMAS(PYCOMP(KSUSY1+1),1)**2
35457               ATKIN=(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2
35458               AUKIN=(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2
35459               ATUKIN=SMW(IZID)*SQRT(GM2)*SH/(TH-XMU2)/(UH-XMD2)
35460               XMU2=PMAS(PYCOMP(KSUSY2+2),1)**2
35461               XMD2=PMAS(PYCOMP(KSUSY2+1),1)**2
35462               ATKIN=(ATKIN+(TH-GM2)*(TH-ZM2)/(TH-XMU2)**2)/2D0
35463               AUKIN=(AUKIN+(UH-GM2)*(UH-ZM2)/(UH-XMD2)**2)/2D0
35464               ATUKIN=(ATUKIN+SMW(IZID)*SQRT(GM2)*
35465      &        SH/(TH-XMU2)/(UH-XMD2))/2D0
35466               NCHN=NCHN+1
35467               ISIG(NCHN,1)=I
35468               ISIG(NCHN,2)=J
35469               ISIG(NCHN,3)=1
35470               SIGH(NCHN)=FACWG*FCKM*(FAC0*ATKIN+FAC1*AUKIN-
35471      &        FAC01*ATUKIN)*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35472      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHW)
35473   290       CONTINUE
35474   300     CONTINUE
35475  
35476         ELSEIF(ISUB.EQ.243) THEN
35477 C...q + qbar -> gluino + gluino
35478           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35479           XMT=SQM3-TH
35480           XMU=SQM3-UH
35481           DO 310 I=MMINA,MMAXA
35482             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
35483      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310
35484             NCHN=NCHN+1
35485             XSU=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-UH
35486             XST=PMAS(PYCOMP(KSUSY1+IABS(I)),1)**2-TH
35487             FACGG1=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
35488      &      2D0*SQM3*SH)/SH2 + RMSS(42)**2*(4D0/9D0*(XMT**2/XST**2+
35489      &      XMU**2/XSU**2) + SQM3*SH/XST/XSU/9D0) - RMSS(42)*(
35490      &      (XMT**2+SH*SQM3)/SH/XST + (XMU**2+SH*SQM3)/SH/XSU ))
35491             XSU=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-UH
35492             XST=PMAS(PYCOMP(KSUSY2+IABS(I)),1)**2-TH
35493             FACGG2=COMFAC*AS**2*8D0/3D0*( (XMT**2+XMU**2+
35494      &      2D0*SQM3*SH)/SH2 + RMSS(42)**2*(4D0/9D0*(XMT**2/XST**2+
35495      &      XMU**2/XSU**2) + SQM3*SH/XST/XSU/9D0) - RMSS(42)*(
35496      &      (XMT**2+SH*SQM3)/SH/XST + (XMU**2+SH*SQM3)/SH/XSU ))
35497             ISIG(NCHN,1)=I
35498             ISIG(NCHN,2)=-I
35499             ISIG(NCHN,3)=1
35500 C...1/2 for identical particles
35501             SIGH(NCHN)=0.25D0*(FACGG1+FACGG2)
35502   310     CONTINUE
35503  
35504         ELSEIF(ISUB.EQ.244) THEN
35505 C...g + g -> gluino + gluino
35506           COMFAC=COMFAC*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35507           XMT=SQM3-TH
35508           XMU=SQM3-UH
35509           FACQQ1=COMFAC*AS**2*9D0/4D0*(
35510      &    (XMT*XMU-2D0*SQM3*(TH+SQM3))/XMT**2 -
35511      &    (XMT*XMU+SQM3*(UH-TH))/SH/XMT )
35512           FACQQ2=COMFAC*AS**2*9D0/4D0*(
35513      &    (XMU*XMT-2D0*SQM3*(UH+SQM3))/XMU**2 -
35514      &    (XMU*XMT+SQM3*(TH-UH))/SH/XMU )
35515           FACQQ3=COMFAC*AS**2*9D0/4D0*(2D0*XMT*XMU/SH2 +
35516      &    SQM3*(SH-4D0*SQM3)/XMT/XMU)
35517           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 320
35518           NCHN=NCHN+1
35519           ISIG(NCHN,1)=21
35520           ISIG(NCHN,2)=21
35521           ISIG(NCHN,3)=1
35522           SIGH(NCHN)=FACQQ1/2D0
35523           NCHN=NCHN+1
35524           ISIG(NCHN,1)=21
35525           ISIG(NCHN,2)=21
35526           ISIG(NCHN,3)=2
35527           SIGH(NCHN)=FACQQ2/2D0
35528           NCHN=NCHN+1
35529           ISIG(NCHN,1)=21
35530           ISIG(NCHN,2)=21
35531           ISIG(NCHN,3)=3
35532           SIGH(NCHN)=FACQQ3/2D0
35533   320     CONTINUE
35534  
35535         ELSEIF(ISUB.EQ.246) THEN
35536 C...g + q_j -> ~chi0_1 + ~q_j
35537           FAC0=COMFAC*AS*AEM/6D0/XW
35538           ZM2=SQM4
35539           QM2=SQM3
35540           FACZQ0=FAC0*( (ZM2-TH)/SH +
35541      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
35542      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
35543           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
35544           DO 340 I=-KFNSQ,KFNSQ,2*KFNSQ
35545             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 340
35546             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340
35547             EI=KCHG(IABS(I),1)/3D0
35548             IA=IABS(I)
35549             XRQZ = -TANW*EI*ZMIX(IZID,1)
35550             XLQZ =(SIGN(1D0,EI)*ZMIX(IZID,2)-TANW*
35551      &      (SIGN(1D0,EI)-2D0*EI)*ZMIX(IZID,1))/2D0
35552             IF(ILR.EQ.0) THEN
35553               BS=XLQZ**2*SFMIX(IA,1)**2+XRQZ**2*SFMIX(IA,2)**2
35554             ELSE
35555               BS=XLQZ**2*SFMIX(IA,3)**2+XRQZ**2*SFMIX(IA,4)**2
35556             ENDIF
35557             FACZQ=FACZQ0*BS
35558             KCHQ=2
35559             IF(I.LT.0) KCHQ=3
35560             DO 330 ISDE=1,2
35561               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330
35562               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330
35563               NCHN=NCHN+1
35564               ISIG(NCHN,ISDE)=I
35565               ISIG(NCHN,3-ISDE)=21
35566               ISIG(NCHN,3)=1
35567               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35568      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35569   330       CONTINUE
35570   340     CONTINUE
35571         ENDIF
35572  
35573       ELSEIF(ISUB.LE.260) THEN
35574         IF(ISUB.EQ.254) THEN
35575 C...g + q_j -> ~chi1_1 + ~q_i
35576           FAC0=COMFAC*AS*AEM/12D0/XW
35577           ZM2=SQM4
35578           QM2=SQM3
35579           AU=UMIX(IZID,1)**2
35580           AD=VMIX(IZID,1)**2
35581           FACZQ0=FAC0*( (ZM2-TH)/SH +
35582      &    (UH-ZM2)*(UH+QM2)/(UH-QM2)**2 -
35583      &    (SH*(UH+ZM2)+2D0*(QM2-ZM2)*(ZM2-UH))/SH/(UH-QM2) )
35584           KFNSQ1=MOD(KFPR(ISUBSV,1),KSUSY1)
35585           IF(MOD(KFNSQ1,2).EQ.0) THEN
35586             KFNSQ=KFNSQ1-1
35587             KCHW=2
35588           ELSE
35589             KFNSQ=KFNSQ1+1
35590             KCHW=3
35591           ENDIF
35592           DO 360 I=-KFNSQ,KFNSQ,2*KFNSQ
35593             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 360
35594             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360
35595             IA=IABS(I)
35596             IF(MOD(IA,2).EQ.0) THEN
35597               FACZQ=FACZQ0*AU
35598             ELSE
35599               FACZQ=FACZQ0*AD
35600             ENDIF
35601             FACZQ=FACZQ*SFMIX(KFNSQ1,1+2*ILR)**2
35602             KCHQ=2
35603             IF(I.LT.0) KCHQ=3
35604             KCHWQ=KCHW
35605             IF(I.LT.0) KCHWQ=5-KCHW
35606             DO 350 ISDE=1,2
35607               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350
35608               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350
35609               NCHN=NCHN+1
35610               ISIG(NCHN,ISDE)=I
35611               ISIG(NCHN,3-ISDE)=21
35612               ISIG(NCHN,3)=1
35613               SIGH(NCHN)=FACZQ*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35614      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHWQ)
35615   350       CONTINUE
35616   360     CONTINUE
35617  
35618         ELSEIF(ISUB.EQ.258) THEN
35619 C...g + q_j -> gluino + ~q_i
35620           XG2=SQM4
35621           XQ2=SQM3
35622           XMT=XG2-TH
35623           XMU=XG2-UH
35624           XST=XQ2-TH
35625           XSU=XQ2-UH
35626           FACQG1=0.5D0*4D0/9D0*XMT/SH + (XMT*SH+2D0*XG2*XST)/XMT**2 -
35627      &    ( (SH-XQ2+XG2)*(-XST)-SH*XG2 )/SH/(-XMT) +
35628      &    0.5D0*1D0/2D0*( XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST) +
35629      &    (-XMU)*(TH+XG2+2D0*XQ2) )/2D0/XMT/XSU
35630           FACQG2= 4D0/9D0*(-XMU)*(UH+XQ2)/XSU**2 + 1D0/18D0*
35631      &    (SH*(UH+XG2)
35632      &    +2D0*(XQ2-XG2)*XMU)/SH/(-XSU) + 0.5D0*4D0/9D0*XMT/SH +
35633      &    0.5D0*1D0/2D0*(XST*(TH+2D0*UH+XG2)-XMT*(SH-2D0*XST)+
35634      &    (-XMU)*(TH+XG2+2D0*XQ2))/2D0/XMT/XSU
35635           ASYUK=RMSS(42)*AS
35636           FACQG1=COMFAC*AS*ASYUK*FACQG1/2D0
35637           FACQG2=COMFAC*AS*ASYUK*FACQG2/2D0
35638           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
35639           DO 380 I=-KFNSQ,KFNSQ,2*KFNSQ
35640             IF(I.LT.MMINA.OR.I.GT.MMAXA) GOTO 380
35641             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 380
35642             KCHQ=2
35643             IF(I.LT.0) KCHQ=3
35644             FACSEL=RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35645      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35646             DO 370 ISDE=1,2
35647               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 370
35648               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 370
35649               NCHN=NCHN+1
35650               ISIG(NCHN,ISDE)=I
35651               ISIG(NCHN,3-ISDE)=21
35652               ISIG(NCHN,3)=1
35653               SIGH(NCHN)=FACQG1*FACSEL
35654               NCHN=NCHN+1
35655               ISIG(NCHN,ISDE)=I
35656               ISIG(NCHN,3-ISDE)=21
35657               ISIG(NCHN,3)=2
35658               SIGH(NCHN)=FACQG2*FACSEL
35659   370       CONTINUE
35660   380     CONTINUE
35661         ENDIF
35662  
35663       ELSEIF(ISUB.LE.270) THEN
35664         IF(ISUB.EQ.261) THEN
35665 C...q_i + q_ibar -> ~t_1 + ~t_1bar
35666           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )*
35667      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35668           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
35669           FAC0=AS**2*4D0/9D0
35670           DO 390 I=MMIN1,MMAX1
35671             IA=IABS(I)
35672             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 390
35673             IF(IA.GE.11.AND.IA.LE.18) THEN
35674               EI=KCHG(IA,1)/3D0
35675               EJ=KCHG(KFNSQ,1)/3D0
35676               T3I=SIGN(1D0,EI)/2D0
35677               T3J=SIGN(1D0,EJ)/2D0
35678               XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,2*ILR+1)**2
35679               XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2*ILR+2)**2
35680               XLF=2D0*(T3I-EI*XW)
35681               XRF=2D0*(-EI*XW)
35682               TAA=0.5D0*(EI*EJ)**2
35683               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
35684               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
35685               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
35686               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
35687               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
35688             ENDIF
35689             NCHN=NCHN+1
35690             ISIG(NCHN,1)=I
35691             ISIG(NCHN,2)=-I
35692             ISIG(NCHN,3)=1
35693             SIGH(NCHN)=FACQQ1*FAC0
35694   390     CONTINUE
35695  
35696         ELSEIF(ISUB.EQ.263) THEN
35697 C...f + fbar -> ~t1 + ~t2bar
35698           DO 400 I=MMIN1,MMAX1
35699             IA=IABS(I)
35700             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
35701             EI=KCHG(IABS(I),1)/3D0
35702             TT3I=SIGN(1D0,EI)/2D0
35703             EJ=2D0/3D0
35704             TT3J=1D0/2D0
35705             FCOL=1D0
35706 C...Color factor for e+ e-
35707             IF(IA.GE.11) FCOL=3D0
35708             XLQ=2D0*(TT3J-EJ*XW)
35709             XRQ=2D0*(-EJ*XW)
35710             XLF=2D0*(TT3I-EI*XW)
35711             XRF=2D0*(-EI*XW)
35712             TZZ=(XLF**2+XRF**2)*(XLQ-XRQ)**2/64D0/XW**2/XW1**2
35713             TZZ=TZZ*(SFMIX(6,1)*SFMIX(6,2))**2
35714             TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
35715 C...Factor of 2 for t1 t2bar + t2 t1bar
35716             FACQQ1=2D0*COMFAC*AEM**2*TZZ*FCOL*4D0
35717             FACQQ1=FACQQ1*( UH*TH-SQM3*SQM4 )/SH2
35718             NCHN=NCHN+1
35719             ISIG(NCHN,1)=I
35720             ISIG(NCHN,2)=-I
35721             ISIG(NCHN,3)=1
35722             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),2)*
35723      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),3)
35724             NCHN=NCHN+1
35725             ISIG(NCHN,1)=I
35726             ISIG(NCHN,2)=-I
35727             ISIG(NCHN,3)=2
35728             SIGH(NCHN)=FACQQ1*WIDS(PYCOMP(KFPR(ISUBSV,1)),3)*
35729      &      WIDS(PYCOMP(KFPR(ISUBSV,2)),2)
35730   400     CONTINUE
35731  
35732         ELSEIF(ISUB.EQ.264) THEN
35733 C...g + g -> ~t_1 + ~t_1bar
35734           XSU=SQM3-UH
35735           XST=SQM3-TH
35736           FAC0=COMFAC*AS**2*(7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )*0.5D0*
35737      &    WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35738           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
35739           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
35740           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 410
35741           NCHN=NCHN+1
35742           ISIG(NCHN,1)=21
35743           ISIG(NCHN,2)=21
35744           ISIG(NCHN,3)=1
35745           SIGH(NCHN)=FACQQ1
35746           NCHN=NCHN+1
35747           ISIG(NCHN,1)=21
35748           ISIG(NCHN,2)=21
35749           ISIG(NCHN,3)=2
35750           SIGH(NCHN)=FACQQ2
35751   410     CONTINUE
35752         ENDIF
35753  
35754       ELSEIF(ISUB.LE.280) THEN
35755         IF(ISUB.EQ.271) THEN
35756 C...q + q' -> ~q + ~q' (~g exchange)
35757           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
35758           XMT=XMG2-TH
35759           XMU=XMG2-UH
35760           XSU1=SQM3-UH
35761           XSU2=SQM4-UH
35762           XST1=SQM3-TH
35763           XST2=SQM4-TH
35764           ASYUK=RMSS(42)*AS
35765           IF(ILR.EQ.1) THEN
35766             FACQQ1=COMFAC*ASYUK**2*4D0/9D0*( -(XST1*XST2+SH*TH)/XMT**2 )
35767             FACQQ2=COMFAC*ASYUK**2*4D0/9D0*( -(XSU1*XSU2+SH*UH)/XMU**2 )
35768             FACQQB=0.0D0
35769           ELSE
35770             FACQQ1=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( SH*XMG2/XMT**2 )
35771             FACQQ2=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( SH*XMG2/XMU**2 )
35772             FACQQB=0.5D0*COMFAC*ASYUK**2*4D0/9D0*( -2D0*SH*XMG2/3D0/
35773      &      XMT/XMU )
35774           ENDIF
35775           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
35776           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
35777           DO 430 I=-KFNSQI,KFNSQI,2*KFNSQI
35778             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 430
35779             IA=IABS(I)
35780             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
35781             KCHQ=2
35782             IF(I.LT.0) KCHQ=3
35783             DO 420 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
35784               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 420
35785               JA=IABS(J)
35786               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
35787               IF(I*J.LT.0) GOTO 420
35788               NCHN=NCHN+1
35789               ISIG(NCHN,1)=I
35790               ISIG(NCHN,2)=J
35791               ISIG(NCHN,3)=1
35792               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35793      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
35794               IF(I.EQ.J) THEN
35795                 IF(ILR.EQ.0) THEN
35796                   SIGH(NCHN)=0.5D0*(FACQQ1+0.5D0*FACQQB)*RKF*
35797      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
35798                 ELSE
35799                   SIGH(NCHN)=0.5D0*FACQQ1*RKF*
35800      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35801      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
35802                 ENDIF
35803                 NCHN=NCHN+1
35804                 ISIG(NCHN,1)=I
35805                 ISIG(NCHN,2)=J
35806                 ISIG(NCHN,3)=2
35807                 IF(ILR.EQ.0) THEN
35808                   SIGH(NCHN)=0.5D0*(FACQQ2+0.5D0*FACQQB)*RKF*
35809      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ+2)
35810                 ELSE
35811                   SIGH(NCHN)=0.5D0*FACQQ2*RKF*
35812      &            WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35813      &            WIDS(PYCOMP(KFPR(ISUBSV,2)),KCHQ)
35814                 ENDIF
35815               ENDIF
35816   420       CONTINUE
35817   430     CONTINUE
35818  
35819         ELSEIF(ISUB.EQ.274) THEN
35820 C...q + qbar' -> ~q + ~qbar'
35821           XMG2=PMAS(PYCOMP(KSUSY1+21),1)**2
35822           XMT=XMG2-TH
35823           XMU=XMG2-UH
35824           IF(ILR.EQ.0) THEN
35825 C...Mrenna...Normalization.and.1/XMT
35826             FACQQ1=COMFAC*AS**2*2D0/9D0*(
35827      &      (UH*TH-SQM3*SQM4)/XMT**2 )*RMSS(42)**2
35828             FACQQB=COMFAC*AS**2*4D0/9D0*(
35829      &      (UH*TH-SQM3*SQM4)/SH2 )
35830             FACQQI=-COMFAC*AS**2*4D0/27D0*(
35831      &      (UH*TH-SQM3*SQM4)/SH/XMT )*RMSS(42)
35832             FACQQB=FACQQB+FACQQ1+FACQQI
35833           ELSE
35834             FACQQ1=COMFAC*AS**2*4D0/9D0*( XMG2*SH/XMT**2 )*RMSS(42)**2
35835             FACQQB=FACQQ1
35836           ENDIF
35837           KFNSQI=MOD(KFPR(ISUBSV,1),KSUSY1)
35838           KFNSQJ=MOD(KFPR(ISUBSV,2),KSUSY1)
35839           DO 450 I=-KFNSQI,KFNSQI,2*KFNSQI
35840             IF(I.LT.MMIN1.OR.I.GT.MMAX1) GOTO 450
35841             IA=IABS(I)
35842             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 450
35843             KCHQ=2
35844             IF(I.LT.0) KCHQ=3
35845             DO 440 J=-KFNSQJ,KFNSQJ,2*KFNSQJ
35846               IF(J.LT.MMIN2.OR.J.GT.MMAX2) GOTO 440
35847               JA=IABS(J)
35848               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 440
35849               IF(I*J.GT.0) GOTO 440
35850               NCHN=NCHN+1
35851               ISIG(NCHN,1)=I
35852               ISIG(NCHN,2)=J
35853               ISIG(NCHN,3)=1
35854               SIGH(NCHN)=FACQQ1*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),KCHQ)*
35855      &        WIDS(PYCOMP(KFPR(ISUBSV,2)),5-KCHQ)
35856               IF(ILR.EQ.0.AND.I.EQ.-J) SIGH(NCHN)=FACQQB*RKF*
35857      &        WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35858   440       CONTINUE
35859   450     CONTINUE
35860  
35861         ELSEIF(ISUB.EQ.277) THEN
35862 C...q_i + q_ibar -> ~q_j + ~q_jbar ,i .ne. j
35863 C...if i .eq. j covered in 274
35864           FACQQ1=COMFAC*( (UH*TH-SQM3*SQM4)/ SH**2 )
35865           KFNSQ=MOD(KFPR(ISUBSV,1),KSUSY1)
35866           FAC0=0D0
35867           DO 460 I=MMIN1,MMAX1
35868             IA=IABS(I)
35869             IF(I.EQ.0.OR.(IA.GT.MSTP(58).AND.IA.LE.10).OR.
35870      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
35871             IF(IA.EQ.KFNSQ) GOTO 460
35872             IF(IA.EQ.11.OR.IA.EQ.13.OR.IA.EQ.15) THEN
35873               EI=KCHG(IA,1)/3D0
35874               EJ=KCHG(KFNSQ,1)/3D0
35875               T3J=SIGN(0.5D0,EJ)
35876               T3I=SIGN(1D0,EI)/2D0
35877               IF(ILR.EQ.0) THEN
35878                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,1)
35879                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,2)
35880               ELSE
35881                 XLQ=2D0*(T3J-EJ*XW)*SFMIX(KFNSQ,3)
35882                 XRQ=2D0*(-EJ*XW)*SFMIX(KFNSQ,4)
35883               ENDIF
35884               XLF=2D0*(T3I-EI*XW)
35885               XRF=2D0*(-EI*XW)
35886               IF(ILR.EQ.0) THEN
35887                 XRQ=0D0
35888               ELSE
35889                 XLQ=0D0
35890               ENDIF
35891               TAA=0.5D0*(EI*EJ)**2
35892               TZZ=(XLF**2+XRF**2)*(XLQ+XRQ)**2/64D0/XW**2/XW1**2
35893               TZZ=TZZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)
35894               TAZ=EI*EJ*(XLQ+XRQ)*(XLF+XRF)/8D0/XW/XW1
35895               TAZ=TAZ/((1D0-SQMZ/SH)**2+SQMZ*(ZWID/SH)**2)*(1D0-SQMZ/SH)
35896               FAC0=AEM**2*12D0*(TAA+TZZ+TAZ)
35897             ELSEIF(IA.LE.6) THEN
35898               FAC0=AS**2*8D0/9D0/2D0
35899             ENDIF
35900             NCHN=NCHN+1
35901             ISIG(NCHN,1)=I
35902             ISIG(NCHN,2)=-I
35903             ISIG(NCHN,3)=1
35904             SIGH(NCHN)=FACQQ1*FAC0*RKF*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35905   460     CONTINUE
35906  
35907         ELSEIF(ISUB.EQ.279) THEN
35908 C...g + g -> ~q_j + ~q_jbar
35909           XSU=SQM3-UH
35910           XST=SQM3-TH
35911 C...5=RKF because ~t ~tbar treated separately
35912           FAC0=RKF*COMFAC*AS**2*( 7D0/48D0+3D0*(UH-TH)**2/16D0/SH2 )
35913           FACQQ1=FAC0*(0.5D0+2D0*SQM3*TH/XST**2 + 2D0*SQM3**2/XSU/XST)
35914           FACQQ2=FAC0*(0.5D0+2D0*SQM3*UH/XSU**2 + 2D0*SQM3**2/XSU/XST)
35915           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 470
35916           NCHN=NCHN+1
35917           ISIG(NCHN,1)=21
35918           ISIG(NCHN,2)=21
35919           ISIG(NCHN,3)=1
35920           SIGH(NCHN)=FACQQ1/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35921           NCHN=NCHN+1
35922           ISIG(NCHN,1)=21
35923           ISIG(NCHN,2)=21
35924           ISIG(NCHN,3)=2
35925           SIGH(NCHN)=FACQQ2/2D0*WIDS(PYCOMP(KFPR(ISUBSV,1)),1)
35926   470     CONTINUE
35927  
35928         ENDIF
35929       ENDIF
35930 CMRENNA--
35931  
35932       RETURN
35933       END
35934  
35935 C*********************************************************************
35936  
35937 C...PYSGTC
35938 C...Subprocess cross sections for Technicolor processes.
35939 C...Auxiliary to PYSIGH.
35940  
35941       SUBROUTINE PYSGTC(NCHN,SIGS)
35942  
35943 C...Double precision and integer declarations
35944       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
35945       IMPLICIT INTEGER(I-N)
35946       INTEGER PYK,PYCHGE,PYCOMP
35947 C...Parameter statement to help give large particle numbers.
35948       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
35949      &KEXCIT=4000000,KDIMEN=5000000)
35950 C...Commonblocks
35951       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
35952       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
35953       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
35954       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
35955       COMMON/PYINT1/MINT(400),VINT(400)
35956       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
35957       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
35958       COMMON/PYINT4/MWID(500),WIDS(500,5)
35959       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
35960       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
35961      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
35962      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
35963      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
35964       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
35965      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
35966 C...Local arrays and complex variables
35967       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
35968       COMPLEX*16 SSMZ,SSMR,SSMO,DETD,F2L,F2R,DARHO,DZRHO,DAOME,DZOME
35969       COMPLEX*16 SSMX,DAAST,DZAST,DWAST
35970       COMPLEX*16 DAA,DZZ,DAZ,DWW,DWRHO
35971       COMPLEX*16 ZTC(6,6),YTC(6,6),DGGS,DGGT,DGGU,DGVS,DGVT,DGVU
35972       COMPLEX*16 DQQS,DQQT,DQQU,DQTS,DQGS,DTGS
35973       COMPLEX*16 DVVS,DVVT,DVVU
35974       INTEGER INDX(6)
35975  
35976 C...Combinations of weak mixing angle.
35977       TANW=SQRT(XW/XW1)
35978       CT2W=(1D0-2D0*XW)/(2D0*XW/TANW)
35979  
35980 C...Convert almost equivalent technicolor processes into
35981 C...a few basic processes, and set distinguishing parameters.
35982       IF(ISUB.GE.361.AND.ISUB.LE.380) THEN
35983         SQTV=RTCM(12)**2
35984         SQTA=RTCM(13)**2
35985         SN2W=2D0*SQRT(XW*XW1)
35986         CS2W=1D0-2D0*XW
35987         CT2W=CS2W/SN2W
35988         CSXI=COS(ASIN(RTCM(3)))
35989         CSXIP=COS(ASIN(RTCM(4)))
35990         QUPD=2D0*RTCM(2)-1D0
35991         Q2UD=RTCM(2)**2+(RTCM(2)-1D0)**2
35992         CAB2=0D0
35993         VOGP=0D0
35994         VRGP=0D0
35995         AOGP=0D0
35996         ARGP=0D0
35997         VXGP=0D0
35998         AXGP=0D0
35999         VAGP=0D0
36000         VZGP=0D0
36001         VWGP=0D0
36002 C... rho_tc0, etc. -> W_L W_L, W_L W_T
36003         IF(ISUB.EQ.361) THEN
36004            KFA=24
36005            KFB=24
36006            CAB2=RTCM(3)**4
36007            AXGP=-RTCM(3)/(2D0*SQRT(XW))/RTCM(49)
36008            ARGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(13)
36009            VOGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(12)
36010 C...Multiply by sqrt(2) to account for W^+_T W^-_L + W^+_L W^-_T.
36011            AXGP = SQRT(2D0)*AXGP
36012            ARGP = SQRT(2D0)*ARGP
36013            VOGP = SQRT(2D0)*VOGP
36014 C... rho_tc0 -> W_L pi_tc-
36015         ELSEIF(ISUB.EQ.362) THEN
36016            KFA=24
36017            KFB=KTECHN+211
36018            ISUB=361
36019            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
36020 C... pi_tc pi_tc
36021         ELSEIF(ISUB.EQ.363) THEN
36022            KFA=KTECHN+211
36023            KFB=KTECHN+211
36024            ISUB=361
36025            CAB2=(1D0-RTCM(3)**2)**2
36026 C... rho_tc0/omega_tc -> gamma pi_tc
36027         ELSEIF(ISUB.EQ.364) THEN
36028            KFA=22
36029            KFB=KTECHN+111
36030            ISUB=361
36031            VOGP=CSXI/RTCM(12)
36032            VRGP=VOGP*QUPD
36033            VAGP=2D0*QUPD*CSXI
36034            VZGP=QUPD*CSXI*(1D0-4D0*XW)/SN2W
36035 C... gamma pi_tc'
36036         ELSEIF(ISUB.EQ.365) THEN
36037            KFA=22
36038            KFB=KTECHN+221
36039            ISUB=361
36040            VRGP=CSXIP/RTCM(12)
36041            VOGP=VRGP*QUPD
36042            VAGP=2D0*Q2UD*CSXIP
36043            VZGP=CSXIP/SN2W*(1D0-4D0*XW*Q2UD)
36044 C... Z pi_tc
36045         ELSEIF(ISUB.EQ.366) THEN
36046            KFA=23
36047            KFB=KTECHN+111
36048            ISUB=361
36049            VOGP=CSXI*CT2W/RTCM(12)
36050            VRGP=-QUPD*CSXI*TANW/RTCM(12)
36051            VAGP=QUPD*CSXI*(1D0-4D0*XW)/SN2W
36052            VZGP=-QUPD*CSXI*CS2W/XW1
36053 C... Z pi_tc'
36054         ELSEIF(ISUB.EQ.367) THEN
36055            KFA=23
36056            KFB=KTECHN+221
36057            ISUB=361
36058 C...RTCM(48) is the M_V for the techni-a
36059            VXGP=-CSXIP/SN2W/RTCM(48)
36060            VRGP=CSXIP*CT2W/RTCM(12)
36061            VOGP=-QUPD*CSXIP*TANW/RTCM(12)
36062            VAGP=CSXIP*(1D0-4D0*Q2UD*XW)/SN2W
36063            VZGP=2D0*CSXIP*(CS2W+4D0*Q2UD*XW**2)/SN2W**2
36064 C... W_T pi_tc
36065         ELSEIF(ISUB.EQ.368) THEN
36066            KFA=24
36067            KFB=KTECHN+211
36068            ISUB=361
36069 C...RTCM(49) is the M_A for the techni-a
36070            AXGP=-CSXI/(2D0*SQRT(XW))/RTCM(49)
36071            VOGP=CSXI/(2D0*SQRT(XW))/RTCM(12)
36072            ARGP=CSXI/(2D0*SQRT(XW))/RTCM(13)
36073            VAGP=QUPD*CSXI/(2D0*SQRT(XW))
36074            VZGP=-QUPD*CSXI/(2D0*SQRT(XW1))
36075 C... rho_tc+, a_T+ -> W_L Z_L, W_T Z_L
36076         ELSEIF(ISUB.EQ.370) THEN
36077            KFA=24
36078            KFB=23
36079            CAB2=RTCM(3)**4
36080            ARGP=-RTCM(3)/(2D0*SQRT(XW))/RTCM(13)
36081            AXGP=RTCM(3)/(2D0*SQRT(XW))/RTCM(49)
36082 C... W_L pi_tc0
36083         ELSEIF(ISUB.EQ.371) THEN
36084            KFA=24
36085            KFB=KTECHN+111
36086            ISUB=370
36087            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
36088 C... Z_L pi_tc+
36089         ELSEIF(ISUB.EQ.372) THEN
36090            KFA=KTECHN+211
36091            KFB=23
36092            ISUB=370
36093            CAB2=RTCM(3)**2*(1D0-RTCM(3)**2)
36094 C... pi_tc+ pi_tc0
36095         ELSEIF(ISUB.EQ.373) THEN
36096            KFA=KTECHN+211
36097            KFB=KTECHN+111
36098            ISUB=370
36099            CAB2=(1D0-RTCM(3)**2)**2
36100 C... gamma pi_tc+
36101         ELSEIF(ISUB.EQ.374) THEN
36102            KFA=KTECHN+211
36103            KFB=22
36104            ISUB=370
36105            VRGP=QUPD*CSXI/RTCM(12)
36106            VWGP=QUPD*CSXI/(2D0*SQRT(XW))
36107            AXGP=-CSXI/RTCM(49)
36108 C... Z_T pi_tc+
36109         ELSEIF(ISUB.EQ.375) THEN
36110            KFA=KTECHN+211
36111            KFB=23
36112            ISUB=370
36113            VRGP=-QUPD*CSXI*TANW/RTCM(12)
36114            ARGP=CSXI/(2D0*SQRT(XW*XW1))/RTCM(13)
36115            VWGP=-QUPD*CSXI/(2D0*SQRT(XW1))
36116            AXGP=-CSXI*CT2W/RTCM(49)
36117 C... W_T pi_tc0
36118         ELSEIF(ISUB.EQ.376) THEN
36119            KFA=24
36120            KFB=KTECHN+111
36121            ISUB=370
36122            VRGP=0D0
36123            ARGP=-CSXI/(2D0*SQRT(XW))/RTCM(13)
36124            AXGP=CSXI/(2D0*SQRT(XW))/RTCM(49)
36125 C... W_T pi_tc0'
36126         ELSEIF(ISUB.EQ.377) THEN
36127            KFA=24
36128            KFB=KTECHN+221
36129            ISUB=370
36130            VRGP=CSXIP/(2D0*SQRT(XW))/RTCM(12)
36131            VWGP=CSXIP/(2D0*XW)
36132            VXGP=-CSXIP/(2D0*SQRT(XW))/RTCM(48)
36133 C... gamma W+
36134         ELSEIF(ISUB.EQ.378) THEN
36135            KFA=24
36136            KFB=22
36137            ISUB=370
36138            VRGP=QUPD*RTCM(3)/RTCM(12)
36139            AXGP=-RTCM(3)/RTCM(49)
36140 C... gamma Z
36141         ELSEIF(ISUB.EQ.379) THEN
36142            KFA=23
36143            KFB=22
36144            ISUB=361
36145            VOGP=RTCM(3)/RTCM(12)
36146            VRGP=QUPD*RTCM(3)/RTCM(12)
36147         ELSEIF(ISUB.EQ.380) THEN
36148            KFA=23
36149            KFB=23
36150            ISUB=361
36151            VOGP=RTCM(3)*CT2W/RTCM(12)
36152            VRGP=-QUPD*RTCM(3)*TANW/RTCM(12)
36153         ENDIF
36154       ENDIF
36155  
36156 C...QCD 2 -> 2 processes: corrections from virtual technicolor exchange.
36157       IF(ISUB.GE.381.AND.ISUB.LE.388) THEN
36158         IF(ITCM(5).LE.4) THEN
36159           SQDQQS=1D0/SH2
36160           SQDQQT=1D0/TH2
36161           SQDQQU=1D0/UH2
36162           SQDGGS=SQDQQS
36163           SQDGGT=SQDQQT
36164           SQDGGU=SQDQQU
36165           REDGGS=1D0/SH
36166           REDGGT=1D0/TH
36167           REDGGU=1D0/UH
36168           REDGTU=1D0/UH/TH
36169           REDGSU=1D0/SH/UH
36170           REDGST=1D0/SH/TH
36171           REDQST=1D0/SH/TH
36172           REDQTU=1D0/UH/TH
36173           SQDLGS=0D0
36174           SQDLGT=0D0
36175           SQDQTS=SQDQQS
36176         ELSEIF(ITCM(5).EQ.5) THEN
36177           TANT3=RTCM(21)
36178           IF(ITCM(2).EQ.0) THEN
36179             IMDL=1
36180           ELSE
36181             IMDL=2
36182           ENDIF
36183           ALPRHT=2.16D0*(3D0/ITCM(1))
36184           SIN2T=2D0*TANT3/(TANT3**2+1D0)
36185           SINT3=TANT3/SQRT(TANT3**2+1D0)
36186           XIG=SQRT(PYALPS(SH)/ALPRHT)
36187           X12=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*COS(RTCM(30))+
36188      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*COS(RTCM(32)))/SQRT(2D0)/SIN2T
36189           X21=(RTCM(29)*SQRT(1D0-RTCM(29)**2)*SIN(RTCM(30))+
36190      &    RTCM(31)*SQRT(1D0-RTCM(31)**2)*SIN(RTCM(32)))/SQRT(2D0)/SIN2T
36191           X11=(.25D0*(RTCM(29)**2+RTCM(31)**2+2D0)-
36192      &    SINT3**2)*2D0/SIN2T
36193           X22=(.25D0*(2D0-RTCM(29)**2-RTCM(31)**2)-
36194      &    SINT3**2)*2D0/SIN2T
36195  
36196           SM1122=.5D0*(2D0-RTCM(29)**2-RTCM(31)**2)*RTCM(28)**2
36197           SM1112=X12*RTCM(28)**2*SIN2T
36198           SM1121=-X21*RTCM(28)**2*SIN2T
36199           SM2212=-SM1112
36200           SM2221=-SM1121
36201           SM1221=-.5D0*((1D0-RTCM(29)**2)*SIN(2D0*RTCM(30))+
36202      &    (1D0-RTCM(31)**2)*SIN(2D0*RTCM(32)))*RTCM(28)**2
36203  
36204 C.........SH LOOP
36205           ZTC(1,1)=DCMPLX(SH,0D0)
36206           CALL PYWIDT(3100021,SH,WDTP,WDTE)
36207           IF(WDTP(0).GT.RTCM(33)*SHR) WDTP(0)=RTCM(33)*SHR
36208           ZTC(2,2)=DCMPLX(SH-PMAS(PYCOMP(3100021),1)**2,-SHR*WDTP(0))
36209           CALL PYWIDT(3100113,SH,WDTP,WDTE)
36210           ZTC(3,3)=DCMPLX(SH-PMAS(PYCOMP(3100113),1)**2,-SHR*WDTP(0))
36211           CALL PYWIDT(3400113,SH,WDTP,WDTE)
36212           ZTC(4,4)=DCMPLX(SH-PMAS(PYCOMP(3400113),1)**2,-SHR*WDTP(0))
36213           CALL PYWIDT(3200113,SH,WDTP,WDTE)
36214           ZTC(5,5)=DCMPLX(SH-PMAS(PYCOMP(3200113),1)**2,-SHR*WDTP(0))
36215           CALL PYWIDT(3300113,SH,WDTP,WDTE)
36216           ZTC(6,6)=DCMPLX(SH-PMAS(PYCOMP(3300113),1)**2,-SHR*WDTP(0))
36217           ZTC(1,2)=(0D0,0D0)
36218           ZTC(1,3)=DCMPLX(SH*XIG,0D0)
36219           ZTC(1,4)=ZTC(1,3)
36220           ZTC(1,5)=ZTC(1,2)
36221           ZTC(1,6)=ZTC(1,2)
36222           ZTC(2,3)=DCMPLX(SH*XIG*X11,0D0)
36223           ZTC(2,4)=DCMPLX(SH*XIG*X22,0D0)
36224           ZTC(2,5)=DCMPLX(SH*XIG*X12,0D0)
36225           ZTC(2,6)=DCMPLX(SH*XIG*X21,0D0)
36226           ZTC(3,4)=-SM1122
36227           ZTC(3,5)=-SM1112
36228           ZTC(3,6)=-SM1121
36229           ZTC(4,5)=-SM2212
36230           ZTC(4,6)=-SM2221
36231           ZTC(5,6)=-SM1221
36232  
36233           DO 110 I=1,5
36234             DO 100 J=I+1,6
36235                ZTC(J,I)=ZTC(I,J)
36236   100       CONTINUE
36237   110     CONTINUE
36238           CALL PYLDCM(ZTC,6,6,INDX,D)
36239           DO 130 I=1,6
36240             DO 120 J=1,6
36241              YTC(I,J)=(0D0,0D0)
36242               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
36243   120       CONTINUE
36244   130     CONTINUE
36245  
36246           DO 140 I=1,6
36247             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
36248   140     CONTINUE
36249           DGGS=YTC(1,1)
36250           DVVS=YTC(2,2)
36251           DGVS=YTC(1,2)
36252  
36253           XIG=SQRT(PYALPS(-TH)/ALPRHT)
36254 C.........TH LOOP
36255           ZTC(1,1)=DCMPLX(TH)
36256           ZTC(2,2)=DCMPLX(TH-PMAS(PYCOMP(3100021),1)**2)
36257           ZTC(3,3)=DCMPLX(TH-PMAS(PYCOMP(3100113),1)**2)
36258           ZTC(4,4)=DCMPLX(TH-PMAS(PYCOMP(3400113),1)**2)
36259           ZTC(5,5)=DCMPLX(TH-PMAS(PYCOMP(3200113),1)**2)
36260           ZTC(6,6)=DCMPLX(TH-PMAS(PYCOMP(3300113),1)**2)
36261           ZTC(1,2)=(0D0,0D0)
36262           ZTC(1,3)=DCMPLX(TH*XIG,0D0)
36263           ZTC(1,4)=ZTC(1,3)
36264           ZTC(1,5)=ZTC(1,2)
36265           ZTC(1,6)=ZTC(1,2)
36266           ZTC(2,3)=DCMPLX(TH*XIG*X11,0D0)
36267           ZTC(2,4)=DCMPLX(TH*XIG*X22,0D0)
36268           ZTC(2,5)=DCMPLX(TH*XIG*X12,0D0)
36269           ZTC(2,6)=DCMPLX(TH*XIG*X21,0D0)
36270           ZTC(3,4)=-SM1122
36271           ZTC(3,5)=-SM1112
36272           ZTC(3,6)=-SM1121
36273           ZTC(4,5)=-SM2212
36274           ZTC(4,6)=-SM2221
36275           ZTC(5,6)=-SM1221
36276           DO 160 I=1,5
36277             DO 150 J=I+1,6
36278                ZTC(J,I)=ZTC(I,J)
36279   150       CONTINUE
36280   160     CONTINUE
36281           CALL PYLDCM(ZTC,6,6,INDX,D)
36282           DO 180 I=1,6
36283             DO 170 J=1,6
36284               YTC(I,J)=(0D0,0D0)
36285               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
36286   170       CONTINUE
36287   180     CONTINUE
36288           DO 190 I=1,6
36289             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
36290   190     CONTINUE
36291           DGGT=YTC(1,1)
36292           DVVT=YTC(2,2)
36293           DGVT=YTC(1,2)
36294  
36295           XIG=SQRT(PYALPS(-UH)/ALPRHT)
36296 C.........UH LOOP
36297           ZTC(1,1)=DCMPLX(UH,0D0)
36298           ZTC(2,2)=DCMPLX(UH-PMAS(PYCOMP(3100021),1)**2)
36299           ZTC(3,3)=DCMPLX(UH-PMAS(PYCOMP(3100113),1)**2)
36300           ZTC(4,4)=DCMPLX(UH-PMAS(PYCOMP(3400113),1)**2)
36301           ZTC(5,5)=DCMPLX(UH-PMAS(PYCOMP(3200113),1)**2)
36302           ZTC(6,6)=DCMPLX(UH-PMAS(PYCOMP(3300113),1)**2)
36303           ZTC(1,2)=(0D0,0D0)
36304           ZTC(1,3)=DCMPLX(UH*XIG,0D0)
36305           ZTC(1,4)=ZTC(1,3)
36306           ZTC(1,5)=ZTC(1,2)
36307           ZTC(1,6)=ZTC(1,2)
36308           ZTC(2,3)=DCMPLX(UH*XIG*X11,0D0)
36309           ZTC(2,4)=DCMPLX(UH*XIG*X22,0D0)
36310           ZTC(2,5)=DCMPLX(UH*XIG*X12,0D0)
36311           ZTC(2,6)=DCMPLX(UH*XIG*X21,0D0)
36312           ZTC(3,4)=-SM1122
36313           ZTC(3,5)=-SM1112
36314           ZTC(3,6)=-SM1121
36315           ZTC(4,5)=-SM2212
36316           ZTC(4,6)=-SM2221
36317           ZTC(5,6)=-SM1221
36318           DO 210 I=1,5
36319             DO 200 J=I+1,6
36320                ZTC(J,I)=ZTC(I,J)
36321   200       CONTINUE
36322   210     CONTINUE
36323           CALL PYLDCM(ZTC,6,6,INDX,D)
36324           DO 230 I=1,6
36325             DO 220 J=1,6
36326               YTC(I,J)=(0D0,0D0)
36327               IF(I.EQ.J) YTC(I,J)=(1D0,0D0)
36328   220       CONTINUE
36329   230     CONTINUE
36330           DO 240 I=1,6
36331             CALL PYBKSB(ZTC,6,6,INDX,YTC(1,I))
36332   240     CONTINUE
36333           DGGU=YTC(1,1)
36334           DVVU=YTC(2,2)
36335           DGVU=YTC(1,2)
36336  
36337           IF(IMDL.EQ.1) THEN
36338             DQQS=DGGS+DVVS*DCMPLX(TANT3**2)-DGVS*DCMPLX(2D0*TANT3)
36339             DQQT=DGGT+DVVT*DCMPLX(TANT3**2)-DGVT*DCMPLX(2D0*TANT3)
36340             DQQU=DGGU+DVVU*DCMPLX(TANT3**2)-DGVU*DCMPLX(2D0*TANT3)
36341             DQTS=DGGS-DVVS-DGVS*DCMPLX(TANT3-1D0/TANT3)
36342             DQGS=DGGS-DGVS*DCMPLX(TANT3)
36343             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
36344           ELSE
36345             DQQS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
36346             DQQT=DGGT+DVVT*DCMPLX(1D0/TANT3**2)+DGVT*DCMPLX(2D0/TANT3)
36347             DQQU=DGGU+DVVU*DCMPLX(1D0/TANT3**2)+DGVU*DCMPLX(2D0/TANT3)
36348             DQTS=DGGS+DVVS*DCMPLX(1D0/TANT3**2)+DGVS*DCMPLX(2D0/TANT3)
36349             DQGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
36350             DTGS=DGGS+DGVS*DCMPLX(1D0/TANT3)
36351           ENDIF
36352  
36353           SQDQTS=ABS(DQTS)**2
36354           SQDQQS=ABS(DQQS)**2
36355           SQDQQT=ABS(DQQT)**2
36356           SQDQQU=ABS(DQQU)**2
36357           SQDLGS=ABS(DCMPLX(SH)*DQGS-DCMPLX(1D0))**2
36358           REDLGS=DBLE(DQGS)
36359           SQDHGS=ABS(DCMPLX(SH)*DTGS-DCMPLX(1D0))**2
36360           REDHGS=DBLE(DTGS)
36361           SQDLGT=ABS(DCMPLX(TH)*DGGT-DCMPLX(1D0))**2
36362  
36363           SQDGGS=ABS(DGGS)**2
36364           SQDGGT=ABS(DGGT)**2
36365           SQDGGU=ABS(DGGU)**2
36366           REDGGS=DBLE(DGGS)
36367           REDGGT=DBLE(DGGT)
36368           REDGGU=DBLE(DGGU)
36369           REDGTU=DBLE(DGGU*DCONJG(DGGT))
36370           REDGSU=DBLE(DGGU*DCONJG(DGGS))
36371           REDGST=DBLE(DGGS*DCONJG(DGGT))
36372           REDQST=DBLE(DQQS*DCONJG(DQQT))
36373           REDQTU=DBLE(DQQT*DCONJG(DQQU))
36374         ENDIF
36375       ENDIF
36376  
36377  
36378 C...Differential cross section expressions.
36379  
36380       IF(ISUB.LE.190) THEN
36381         IF(ISUB.EQ.149) THEN
36382 C...g + g -> eta_tc
36383           KCTC=PYCOMP(KTECHN+331)
36384           CALL PYWIDT(KTECHN+331,SH,WDTP,WDTE)
36385           HS=SHR*WDTP(0)
36386           FACBW=COMFAC*0.5D0/((SH-PMAS(KCTC,1)**2)**2+HS**2)
36387           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
36388           HP=SH
36389           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 250
36390           HI=HP*WDTP(3)
36391           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36392           NCHN=NCHN+1
36393           ISIG(NCHN,1)=21
36394           ISIG(NCHN,2)=21
36395           ISIG(NCHN,3)=1
36396           SIGH(NCHN)=HI*FACBW*HF
36397   250     CONTINUE
36398  
36399         ELSEIF(ISUB.EQ.165) THEN
36400 C...q + qbar -> l+ + l- (including contact term for compositeness)
36401           ZRATR=XWC*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
36402           ZRATI=XWC*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
36403           KFF=IABS(KFPR(ISUB,1))
36404           EF=KCHG(KFF,1)/3D0
36405           AF=SIGN(1D0,EF+0.1D0)
36406           VF=AF-4D0*EF*XWV
36407           VALF=VF+AF
36408           VARF=VF-AF
36409           FCOF=1D0
36410           IF(KFF.LE.10) FCOF=3D0
36411           WID2=1D0
36412           IF(KFF.EQ.6) WID2=WIDS(6,1)
36413           IF(KFF.EQ.7.OR.KFF.EQ.8) WID2=WIDS(KFF,1)
36414           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
36415           DO 260 I=MMINA,MMAXA
36416             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 260
36417             EI=KCHG(IABS(I),1)/3D0
36418             AI=SIGN(1D0,EI+0.1D0)
36419             VI=AI-4D0*EI*XWV
36420             VALI=VI+AI
36421             VARI=VI-AI
36422             FCOI=1D0
36423             IF(IABS(I).LE.10) FCOI=FACA/3D0
36424             IF((ITCM(5).EQ.1.AND.IABS(I).LE.2).OR.ITCM(5).EQ.2) THEN
36425               FGZA=(EI*EF+VALI*VALF*ZRATR+RTCM(42)*SH/
36426      &        (AEM*RTCM(41)**2))**2+(VALI*VALF*ZRATI)**2+
36427      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
36428             ELSE
36429               FGZA=(EI*EF+VALI*VALF*ZRATR)**2+(VALI*VALF*ZRATI)**2+
36430      &        (EI*EF+VARI*VARF*ZRATR)**2+(VARI*VARF*ZRATI)**2
36431             ENDIF
36432             FGZB=(EI*EF+VALI*VARF*ZRATR)**2+(VALI*VARF*ZRATI)**2+
36433      &      (EI*EF+VARI*VALF*ZRATR)**2+(VARI*VALF*ZRATI)**2
36434             FGZAB=AEM**2*(FGZA*UH2/SH2+FGZB*TH2/SH2)
36435             IF((ITCM(5).EQ.3.AND.IABS(I).EQ.2).OR.(ITCM(5).EQ.4.AND.
36436      &      MOD(IABS(I),2).EQ.0)) FGZAB=FGZAB+SH2/(2D0*RTCM(41)**4)
36437             NCHN=NCHN+1
36438             ISIG(NCHN,1)=I
36439             ISIG(NCHN,2)=-I
36440             ISIG(NCHN,3)=1
36441             SIGH(NCHN)=COMFAC*FCOI*FCOF*FGZAB*WID2
36442   260     CONTINUE
36443  
36444         ELSEIF(ISUB.EQ.166) THEN
36445 C...q + q'bar -> l + nu_l (including contact term for compositeness)
36446           WFAC=(1D0/4D0)*(AEM/XW)**2*UH2/((SH-SQMW)**2+GMMW**2)
36447           WCIFAC=WFAC+SH2/(4D0*RTCM(41)**4)
36448           KFF=IABS(KFPR(ISUB,1))
36449           FCOF=1D0
36450           IF(KFF.LE.10) FCOF=3D0
36451           DO 280 I=MMIN1,MMAX1
36452             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 280
36453             IA=IABS(I)
36454             DO 270 J=MMIN2,MMAX2
36455               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 270
36456               JA=IABS(J)
36457               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 270
36458               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
36459      &        GOTO 270
36460               FCOI=1D0
36461               IF(IA.LE.10) FCOI=VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
36462               WID2=1D0
36463               IF((I.GT.0.AND.MOD(I,2).EQ.0).OR.(J.GT.0.AND.
36464      &        MOD(J,2).EQ.0)) THEN
36465                 IF(KFF.EQ.5) WID2=WIDS(6,2)
36466                 IF(KFF.EQ.7) WID2=WIDS(8,2)*WIDS(7,3)
36467                 IF(KFF.EQ.17) WID2=WIDS(18,2)*WIDS(17,3)
36468               ELSE
36469                 IF(KFF.EQ.5) WID2=WIDS(6,3)
36470                 IF(KFF.EQ.7) WID2=WIDS(8,3)*WIDS(7,2)
36471                 IF(KFF.EQ.17) WID2=WIDS(18,3)*WIDS(17,2)
36472               ENDIF
36473               NCHN=NCHN+1
36474               ISIG(NCHN,1)=I
36475               ISIG(NCHN,2)=J
36476               ISIG(NCHN,3)=1
36477               SIGH(NCHN)=COMFAC*FCOI*FCOF*WFAC*WID2
36478               IF((ITCM(5).EQ.3.AND.IA.LE.2.AND.JA.LE.2).OR.ITCM(5).EQ.4)
36479      &        SIGH(NCHN)=COMFAC*FCOI*FCOF*WCIFAC*WID2
36480   270       CONTINUE
36481   280     CONTINUE
36482         ENDIF
36483  
36484       ELSEIF(ISUB.LE.200) THEN
36485         IF(ISUB.EQ.191) THEN
36486 C...q + qbar -> rho_tc0.
36487           KCTC=PYCOMP(KTECHN+113)
36488           SQMRHT=PMAS(KCTC,1)**2
36489           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
36490           HS=SHR*WDTP(0)
36491           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
36492           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
36493           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36494           ALPRHT=2.16D0*(3D0/ITCM(1))
36495           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)
36496           XWRHT=(1D0-2D0*XW)/(4D0*XW*(1D0-XW))
36497           BWZR=XWRHT*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
36498           BWZI=XWRHT*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
36499           DO 290 I=MMINA,MMAXA
36500             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 290
36501             IA=IABS(I)
36502             EI=KCHG(IABS(I),1)/3D0
36503             AI=SIGN(1D0,EI+0.1D0)
36504             VI=AI-4D0*EI*XWV
36505             VALI=0.5D0*(VI+AI)
36506             VARI=0.5D0*(VI-AI)
36507             HI=HP*((EI+VALI*BWZR)**2+(VALI*BWZI)**2+
36508      &      (EI+VARI*BWZR)**2+(VARI*BWZI)**2)
36509             IF(IA.LE.10) HI=HI*FACA/3D0
36510             NCHN=NCHN+1
36511             ISIG(NCHN,1)=I
36512             ISIG(NCHN,2)=-I
36513             ISIG(NCHN,3)=1
36514             SIGH(NCHN)=HI*FACBW*HF
36515   290     CONTINUE
36516  
36517         ELSEIF(ISUB.EQ.192) THEN
36518 C...q + qbar' -> rho_tc+/-.
36519           KCTC=PYCOMP(KTECHN+213)
36520           SQMRHT=PMAS(KCTC,1)**2
36521           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
36522           HS=SHR*WDTP(0)
36523           FACBW=12D0*COMFAC/((SH-SQMRHT)**2+HS**2)
36524           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
36525           ALPRHT=2.16D0*(3D0/ITCM(1))
36526           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMRHT**2/SH)*
36527      &    (0.25D0/XW**2)*SH**2/((SH-SQMW)**2+GMMW**2)
36528           DO 310 I=MMIN1,MMAX1
36529             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 310
36530             IA=IABS(I)
36531             DO 300 J=MMIN2,MMAX2
36532               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 300
36533               JA=IABS(J)
36534               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 300
36535               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
36536      &        GOTO 300
36537               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36538               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHR)/2)+WDTE(0,4))
36539               HI=HP
36540               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
36541               NCHN=NCHN+1
36542               ISIG(NCHN,1)=I
36543               ISIG(NCHN,2)=J
36544               ISIG(NCHN,3)=1
36545               SIGH(NCHN)=HI*FACBW*HF
36546   300       CONTINUE
36547   310     CONTINUE
36548  
36549         ELSEIF(ISUB.EQ.193) THEN
36550 C...q + qbar -> omega_tc0.
36551           KCTC=PYCOMP(KTECHN+223)
36552           SQMOMT=PMAS(KCTC,1)**2
36553           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
36554           HS=SHR*WDTP(0)
36555           FACBW=12D0*COMFAC/((SH-SQMOMT)**2+HS**2)
36556           IF(ABS(SHR-PMAS(KCTC,1)).GT.PARP(48)*PMAS(KCTC,2)) FACBW=0D0
36557           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36558           ALPRHT=2.16D0*(3D0/ITCM(1))
36559           HP=(1D0/6D0)*(AEM**2/ALPRHT)*(SQMOMT**2/SH)*
36560      &    (2D0*RTCM(2)-1D0)**2
36561           BWZR=(0.5D0/(1D0-XW))*SH*(SH-SQMZ)/((SH-SQMZ)**2+GMMZ**2)
36562           BWZI=(0.5D0/(1D0-XW))*SH*GMMZ/((SH-SQMZ)**2+GMMZ**2)
36563           DO 320 I=MMINA,MMAXA
36564             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
36565             IA=IABS(I)
36566             EI=KCHG(IABS(I),1)/3D0
36567             AI=SIGN(1D0,EI+0.1D0)
36568             VI=AI-4D0*EI*XWV
36569             VALI=0.5D0*(VI+AI)
36570             VARI=0.5D0*(VI-AI)
36571             HI=HP*((EI-VALI*BWZR)**2+(VALI*BWZI)**2+
36572      &      (EI-VARI*BWZR)**2+(VARI*BWZI)**2)
36573             IF(IA.LE.10) HI=HI*FACA/3D0
36574             NCHN=NCHN+1
36575             ISIG(NCHN,1)=I
36576             ISIG(NCHN,2)=-I
36577             ISIG(NCHN,3)=1
36578             SIGH(NCHN)=HI*FACBW*HF
36579   320     CONTINUE
36580  
36581         ELSEIF(ISUB.EQ.194) THEN
36582 C...f + fbar -> f' + fbar' via s-channel rho_tc, omega_tc a_T0.
36583 C...Default final state is e+e-
36584           KFA=KFPR(ISUBSV,1)
36585           ALPRHT=2.16D0*(3D0/ITCM(1))
36586           HP=AEM**2*COMFAC
36587 
36588           SN2W=2D0*SQRT(XW*XW1)
36589 C          TANW=SQRT(PARU(102)/(1D0-PARU(102)))
36590 C          CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
36591  
36592           QUPD=2D0*RTCM(2)-1D0
36593           FAR=SQRT(AEM/ALPRHT)
36594           FAO=FAR*QUPD
36595           FZR=FAR*CT2W
36596           FZO=-FAO*TANW
36597 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
36598           FZX=-FAR/SN2W*RTCM(47)
36599           SFAR=FAR**2
36600           SFAO=FAO**2
36601           SFZR=FZR**2
36602           SFZO=FZO**2
36603           SFZX=FZX**2
36604           CALL PYWIDT(23,SH,WDTP,WDTE)
36605           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
36606           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
36607           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
36608           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
36609           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
36610           CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
36611           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+115),1)**2/SH,WDTP(0)/SHR)
36612 C...Propagator including a_T^0
36613           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
36614      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
36615 C...Add in techni-a contribution
36616           DETD=SSMX*DETD-SFZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)
36617           DAA=(-SSMX*(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)-
36618      $     SFZX*SSMR*SSMO)/DETD/SH
36619           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH*SSMX
36620           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH*SSMX
36621  
36622           XWRHT=1D0/(4D0*XW*(1D0-XW))
36623           KFF=IABS(KFPR(ISUB,1))
36624           EF=KCHG(KFF,1)/3D0
36625           AF=SIGN(1D0,EF+0.1D0)
36626           VF=AF-4D0*EF*XWV
36627           VALF=0.5D0*(VF+AF)
36628           VARF=0.5D0*(VF-AF)
36629           FCOF=1D0
36630           IF(KFF.LE.10) FCOF=3D0
36631  
36632           WID2=1D0
36633           IF(KFF.GE.6.AND.KFF.LE.8) WID2=WIDS(KFF,1)
36634           IF(KFF.EQ.17.OR.KFF.EQ.18) WID2=WIDS(KFF,1)
36635           DZZ=DZZ*DCMPLX(XWRHT,0D0)
36636           DAZ=DAZ*DCMPLX(SQRT(XWRHT),0D0)
36637  
36638           DO 330 I=MMINA,MMAXA
36639             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 330
36640             EI=KCHG(IABS(I),1)/3D0
36641             AI=SIGN(1D0,EI+0.1D0)
36642             VI=AI-4D0*EI*XWV
36643             VALI=0.5D0*(VI+AI)
36644             VARI=0.5D0*(VI-AI)
36645             FCOI=FCOF
36646             IF(IABS(I).LE.10) FCOI=FCOI/3D0
36647             DIFLL=ABS(EI*EF*DAA+VALI*VALF*DZZ+DAZ*(EI*VALF+EF*VALI))**2
36648             DIFRR=ABS(EI*EF*DAA+VARI*VARF*DZZ+DAZ*(EI*VARF+EF*VARI))**2
36649             DIFLR=ABS(EI*EF*DAA+VALI*VARF*DZZ+DAZ*(EI*VARF+EF*VALI))**2
36650             DIFRL=ABS(EI*EF*DAA+VARI*VALF*DZZ+DAZ*(EI*VALF+EF*VARI))**2
36651             FACSIG=(DIFLL+DIFRR)*((UH-SQM4)**2+SH*SQM4)+
36652      &      (DIFLR+DIFRL)*((TH-SQM3)**2+SH*SQM3)
36653             NCHN=NCHN+1
36654             ISIG(NCHN,1)=I
36655             ISIG(NCHN,2)=-I
36656             ISIG(NCHN,3)=1
36657             SIGH(NCHN)=HP*FCOI*FACSIG*WID2
36658   330     CONTINUE
36659  
36660         ELSEIF(ISUB.EQ.195) THEN
36661 C...f + fbar' -> f'' + fbar''' via s-channel rho_tc+, a_T+
36662           KFA=KFPR(ISUBSV,1)
36663           KFB=KFA+1
36664           ALPRHT=2.16D0*(3D0/ITCM(1))
36665           FACTC=COMFAC*(AEM**2/12D0/XW**2)*(UH-SQM3)*(UH-SQM4)*3D0
36666  
36667           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
36668 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
36669 C
36670 C...Propagator including a_T^+
36671           FWX=-FWR*RTCM(47)
36672           CALL PYWIDT(24,SH,WDTP,WDTE)
36673           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
36674           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
36675           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
36676           CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
36677           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+215),1)**2/SH,WDTP(0)/SHR)
36678           DETD=SSMX*(SSMZ*SSMR-DCMPLX(FWR**2,0D0))-
36679      &     DCMPLX(FWX**2,0D0)*SSMR
36680           DWW=SSMR*SSMX/DETD/SH
36681           FCOF=1D0
36682           IF(KFA.LE.8) FCOF=3D0
36683           HP=FACTC*ABS(DWW)**2*FCOF
36684  
36685           DO 350 I=MMIN1,MMAX1
36686             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 350
36687             IA=IABS(I)
36688             DO 340 J=MMIN2,MMAX2
36689               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 340
36690               JA=IABS(J)
36691               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 340
36692               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
36693      &        GOTO 340
36694               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36695               HI=HP
36696               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
36697               NCHN=NCHN+1
36698               ISIG(NCHN,1)=I
36699               ISIG(NCHN,2)=J
36700               ISIG(NCHN,3)=1
36701               SIGH(NCHN)=HI*WIDS(KFA,(5-KCHR)/2)*WIDS(KFB,(5+KCHR)/2)
36702   340       CONTINUE
36703   350     CONTINUE
36704         ENDIF
36705  
36706       ELSEIF(ISUB.LE.380) THEN
36707         ALPRHT=2.16D0*(3D0/ITCM(1))
36708         IF(ISUB.EQ.361) THEN
36709           FAR=SQRT(AEM/ALPRHT)
36710           FAO=FAR*QUPD
36711           FZR=FAR*CT2W
36712           FZO=-FAO*TANW
36713 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
36714           FZX=-FAR/SN2W*RTCM(47)
36715           SFAR=FAR**2
36716           SFAO=FAO**2
36717           SFZR=FZR**2
36718           SFZO=FZO**2
36719           SFZX=FZX**2
36720           CALL PYWIDT(23,SH,WDTP,WDTE)
36721           SSMZ=DCMPLX(1D0-PMAS(23,1)**2/SH,WDTP(0)/SHR)
36722           CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
36723           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+113),1)**2/SH,WDTP(0)/SHR)
36724           CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
36725           SSMO=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+223),1)**2/SH,WDTP(0)/SHR)
36726           CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
36727           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+115),1)**2/SH,WDTP(0)/SHR)
36728           DETD=(FAR*FZO-FAO*FZR)**2+SSMZ*SSMR*SSMO-SFZR*SSMO-
36729      $    SFZO*SSMR-SFAR*SSMO*SSMZ-SFAO*SSMR*SSMZ
36730 C...Add in techni-a contribution
36731           DETD=SSMX*DETD-SFZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)
36732           DARHO=-(SSMX*(-FAR*SFZO+FAO*FZO*FZR+FAR*SSMO*SSMZ)-
36733      $     SFZX*FAR*SSMO)/DETD/SH
36734           DZRHO=-(-FZR*SFAO+FAO*FZO*FAR+FZR*SSMO)/DETD/SH*SSMX
36735           DAOME=-(SSMX*(-FAO*SFZR+FAR*FZO*FZR+FAO*SSMR*SSMZ)-
36736      $     SFZX*FAO*SSMR)/DETD/SH
36737           DZOME=-(-FZO*SFAR+FAR*FAO*FZR+FZO*SSMR)/DETD/SH*SSMX
36738           DAAST=-FZX*(FAO*FZO*SSMR+FAR*FZR*SSMO)/DETD/SH
36739           DZAST=-FZX*(SSMR*SSMO-SFAO*SSMR-SFAR*SSMO)/DETD/SH
36740           DAA=(-SSMX*(SFZO*SSMR+SFZR*SSMO-SSMO*SSMR*SSMZ)-
36741      $     SFZX*SSMR*SSMO)/DETD/SH
36742           DZZ=-(SFAO*SSMR+SFAR*SSMO-SSMO*SSMR)/DETD/SH*SSMX
36743           DAZ=(FAR*FZR*SSMO+FAO*FZO*SSMR)/DETD/SH*SSMX
36744  
36745 C...f + fbar -> gamma pi_tc, gamma pi_tc', Z pi_tc, Z pi_tc',
36746 C...W+W-, W pi_tc, pi_T pi_T, etc.
36747           FACA=(SH**2*BE34**2-(TH-UH)**2)
36748           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
36749           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
36750           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
36751           HP=(1D0/24D0)*AEM**2*COMFAC*3D0*SH 
36752           DO 370 I=MMINA,MMAXA
36753             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 370
36754             IA=IABS(I)
36755             EI=KCHG(IABS(I),1)/3D0
36756             AI=SIGN(1D0,EI+0.1D0)
36757             VI=AI-4D0*EI*XWV
36758             VALI=0.25D0*(VI+AI) ! = \zeta_{iL} in PRD67-115011
36759             VARI=0.25D0*(VI-AI) ! = \zeta_{iR} in PRD67-115011
36760 C...........Eqs. (5) and (6) in LSTC-rates.pdf
36761             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*VRGP
36762             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*VOGP
36763             F2L=F2L+(EI*DAAST+VALI*DZAST/SQRT(XW*XW1))*VXGP
36764             F2L=F2L+FANOM*(VAGP*(EI*DAA+VALI*DAZ/SQRT(XW*XW1))+
36765      $                    VZGP*(EI*DAZ+VALI*DZZ/SQRT(XW*XW1)))
36766             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*VRGP
36767             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*VOGP
36768             F2R=F2R+(EI*DAAST+VARI*DZAST/SQRT(XW*XW1))*VXGP
36769             F2R=F2R+FANOM*(VAGP*(EI*DAA+VARI*DAZ/SQRT(XW*XW1))+
36770      $                    VZGP*(EI*DAZ+VARI*DZZ/SQRT(XW*XW1)))
36771             HI=(ABS(F2L)**2+ABS(F2R)**2)*VFAC
36772 C...........Eqs. (5) and (7) in LSTC-rates.pdf
36773             F2L=(EI*DARHO+VALI*DZRHO/SQRT(XW*XW1))*ARGP
36774             F2L=F2L+(EI*DAOME+VALI*DZOME/SQRT(XW*XW1))*AOGP
36775             F2L=F2L+(EI*DAAST+VALI*DZAST/SQRT(XW*XW1))*AXGP
36776             F2R=(EI*DARHO+VARI*DZRHO/SQRT(XW*XW1))*ARGP
36777             F2R=F2R+(EI*DAOME+VARI*DZOME/SQRT(XW*XW1))*AOGP
36778             F2R=F2R+(EI*DAAST+VARI*DZAST/SQRT(XW*XW1))*AXGP
36779             HJ=(ABS(F2L)**2+ABS(F2R)**2)*AFAC
36780 C
36781 C...........Eqs. (24) in PRD67-115011 with DAA, etc.terms dropped.
36782 C
36783 c$$$            F2L=EI*(DARHO/FAR+(DAA+CT2W*DAZ))+
36784 c$$$     $      VALI*(CT2W*DZRHO/FZR+(CT2W*DZZ+DAZ))/SQRT(XW*XW1)
36785 c$$$            F2R=EI*(DARHO/FAR+(DAA+CT2W*DAZ))+
36786 c$$$     $      VARI*(CT2W*DZRHO/FZR+(CT2W*DZZ+DAZ))/SQRT(XW*XW1)
36787             F2L=EI*DARHO/FAR + VALI*CT2W*DZRHO/FZR/SQRT(XW*XW1)
36788             F2R=EI*DARHO/FAR + VARI*CT2W*DZRHO/FZR/SQRT(XW*XW1)
36789             HK=(ABS(F2L)**2+ABS(F2R)**2)*2D0*FACA*CAB2/SH
36790             HI=HI+HJ+HK
36791             IF(IA.LE.10) HI=HI/3D0
36792             NCHN=NCHN+1
36793             ISIG(NCHN,1)=I
36794             ISIG(NCHN,2)=-I
36795             ISIG(NCHN,3)=1
36796             IF(KFA.EQ.KFB) THEN
36797                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),1)
36798             ELSEIF(ISUBSV.EQ.362.OR.ISUBSV.EQ.368) THEN
36799                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),3)
36800                NCHN=NCHN+1
36801                ISIG(NCHN,1)=I
36802                ISIG(NCHN,2)=-I
36803                ISIG(NCHN,3)=2
36804                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),3)*WIDS(PYCOMP(KFB),2)
36805             ELSE 
36806                SIGH(NCHN)=HI*HP*WIDS(PYCOMP(KFA),2)*WIDS(PYCOMP(KFB),2)
36807             ENDIF
36808   370     CONTINUE
36809  
36810         ELSEIF(ISUB.EQ.370) THEN
36811 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
36812 C...f + fbar' -> gamma pi_tc, etc.
36813           FACA=(SH**2*BE34**2-(TH-UH)**2)
36814           FANOM=SQRT(PARU(1)*AEM)*ITCM(1)/PARU(2)**2/RTCM(1)
36815           VFAC=(TH**2+UH**2-2D0*SQM3*SQM4)
36816           AFAC=(TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM3)
36817           ALPRHT=2.16D0*(3D0/ITCM(1))
36818           FACHP=(1D0/48D0)*AEM**2/XW*COMFAC*3D0*SH
36819           FWR=SQRT(AEM/ALPRHT)/(2D0*SQRT(XW))
36820 C...RTCM(47) is the ratio g_{rho_T}/g_{a_T}
36821           FWX=-FWR*RTCM(47)
36822           CALL PYWIDT(24,SH,WDTP,WDTE)
36823           SSMZ=DCMPLX(1D0-PMAS(24,1)**2/SH,WDTP(0)/SHR)
36824           CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
36825           SSMR=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+213),1)**2/SH,WDTP(0)/SHR)
36826           CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
36827           SSMX=DCMPLX(1D0-PMAS(PYCOMP(KTECHN+215),1)**2/SH,WDTP(0)/SHR)
36828           DETD=SSMX*(SSMZ*SSMR-DCMPLX(FWR**2,0D0))-
36829      &     DCMPLX(FWX**2,0D0)*SSMR
36830           DWW=SSMR*SSMX/DETD/SH
36831           DWRHO=-DCMPLX(FWR,0D0)*SSMX/DETD/SH
36832           DWAST=-DCMPLX(FWX,0D0)*SSMR/DETD/SH
36833           HP=FACHP*(AFAC*ABS(DWRHO*ARGP+DWAST*AXGP)**2+
36834      $    VFAC*ABS(FANOM*DWW*VWGP+DWRHO*VRGP+DWAST*VXGP)**2)
36835 C
36836 C...........Eq. (25) in PRD67-115011 with DWW term dropped.
36837 C
36838 c$$$          HP=HP+.5D0*FACHP*CAB2*FACA/XW/SH*ABS(DWW + DWRHO/FWR)**2
36839           HP=HP+.5D0*FACHP*CAB2*FACA/XW/SH*ABS(DWRHO/FWR)**2
36840 C...Add in W_L Z_T axial and vector contributions.
36841           IF(ISUBSV.EQ.370) HP=HP+FACHP*RTCM(3)**2*(
36842      $    (TH**2+UH**2-2D0*SQM3*SQM4+4D0*SH*SQM4)*     !AFAC w/ switched masses.
36843      $    ABS(DWRHO/RTCM(13)-DWAST/RTCM(49)*CS2W)**2/SN2W**2+
36844      $    VFAC*QUPD**2*XW/XW1*ABS(DWRHO)**2/RTCM(12)**2)
36845           DO 410 I=MMIN1,MMAX1
36846             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 410
36847             IA=IABS(I)
36848             DO 400 J=MMIN2,MMAX2
36849               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 400
36850               JA=IABS(J)
36851               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 400
36852               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
36853      &        GOTO 400
36854               KCHR=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
36855               HI=HP
36856               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)/3D0
36857               NCHN=NCHN+1
36858               ISIG(NCHN,1)=I
36859               ISIG(NCHN,2)=J
36860               ISIG(NCHN,3)=1
36861               IF(ISUBSV.EQ.374.OR.ISUBSV.EQ.378) THEN
36862                 SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)
36863               ELSE
36864                 SIGH(NCHN)=HI*WIDS(PYCOMP(KFA),(5-KCHR)/2)*
36865      &          WIDS(PYCOMP(KFB),2)
36866               ENDIF
36867   400       CONTINUE
36868   410     CONTINUE
36869         ENDIF
36870  
36871       ELSEIF(ISUB.LE.390) THEN
36872         IF(ISUB.EQ.381) THEN
36873 C...f + f' -> f + f' (g exchange)
36874           FACQQ1=COMFAC*AS**2*4D0/9D0*(SH2+UH2)*SQDQQT
36875           FACQQB=COMFAC*AS**2*4D0/9D0*((SH2+UH2)*SQDQQT*FACA-
36876      &    MSTP(34)*2D0/3D0*UH2*REDQST)
36877           FACQQ2=COMFAC*AS**2*4D0/9D0*(SH2+TH2)*SQDQQU
36878           FACQQI=-COMFAC*AS**2*4D0/9D0*MSTP(34)*2D0/3D0*SH2/(TH*UH)
36879           RATQQI=(FACQQ1+FACQQ2+FACQQI)/(FACQQ1+FACQQ2)
36880           IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN
36881 C...Modifications from contact interactions (compositeness)
36882             FACCI1=FACQQ1+COMFAC*(SH2/RTCM(41)**4)
36883             FACCIB=FACQQB+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
36884      &      (UH2/TH+UH2/SH)+COMFAC*(5D0/3D0)*(UH2/RTCM(41)**4)
36885             FACCI2=FACQQ2+COMFAC*(8D0/9D0)*(AS*RTCM(42)/RTCM(41)**2)*
36886      &      (SH2/TH+SH2/UH)+COMFAC*(5D0/3D0)*(SH2/RTCM(41)**4)
36887             FACCI3=FACQQ1+COMFAC*(UH2/RTCM(41)**4)
36888             RATCII=(FACCI1+FACCI2+FACQQI)/(FACCI1+FACCI2)
36889           ELSEIF(ITCM(5).EQ.5) THEN
36890             FACCI1=FACQQ1
36891             FACCIB=FACQQB
36892             FACCI2=FACQQ2
36893             FACCI3=FACQQ1
36894 CSM.......Check this change from
36895 CSM            RATCII=1D0
36896             RATCII=RATQQI
36897           ENDIF
36898           DO 430 I=MMIN1,MMAX1
36899             IA=IABS(I)
36900             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 430
36901             DO 420 J=MMIN2,MMAX2
36902               JA=IABS(J)
36903               IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 420
36904               NCHN=NCHN+1
36905               ISIG(NCHN,1)=I
36906               ISIG(NCHN,2)=J
36907               ISIG(NCHN,3)=1
36908               IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.(IA.GE.3.OR.
36909      &        JA.GE.3))) THEN
36910                 SIGH(NCHN)=FACQQ1
36911                 IF(I.EQ.-J) SIGH(NCHN)=FACQQB
36912               ELSE
36913                 SIGH(NCHN)=FACCI1
36914                 IF(I*J.LT.0) SIGH(NCHN)=FACCI3
36915                 IF(I.EQ.-J) SIGH(NCHN)=FACCIB
36916               ENDIF
36917               IF(I.EQ.J) THEN
36918                 NCHN=NCHN+1
36919                 ISIG(NCHN,1)=I
36920                 ISIG(NCHN,2)=J
36921                 ISIG(NCHN,3)=2
36922                 IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IA.GE.3)) THEN
36923                   SIGH(NCHN-1)=0.5D0*FACQQ1*RATQQI
36924                   SIGH(NCHN)=0.5D0*FACQQ2*RATQQI
36925                 ELSE
36926                   SIGH(NCHN-1)=0.5D0*FACCI1*RATCII
36927                   SIGH(NCHN)=0.5D0*FACCI2*RATCII
36928                 ENDIF
36929               ENDIF
36930   420       CONTINUE
36931   430     CONTINUE
36932  
36933         ELSEIF(ISUB.EQ.382) THEN
36934 C...f + fbar -> f' + fbar' (q + qbar -> q' + qbar' only)
36935           CALL PYWIDT(21,SH,WDTP,WDTE)
36936           FACQQF=COMFAC*AS**2*4D0/9D0*(TH2+UH2)
36937           FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36938           IF(ITCM(5).EQ.1) THEN
36939 C...Modifications from contact interactions (compositeness)
36940             FACCIB=FACQQB
36941             DO 440 I=1,2
36942               FACCIB=FACCIB+COMFAC*(UH2/RTCM(41)**4)*(WDTE(I,1)+
36943      &        WDTE(I,2)+WDTE(I,4))
36944   440       CONTINUE
36945           ELSEIF(ITCM(5).GE.2.AND.ITCM(5).LE.4) THEN
36946             FACCIB=FACQQB+COMFAC*(UH2/RTCM(41)**4)*
36947      &      (WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
36948           ELSEIF(ITCM(5).EQ.5) THEN
36949             FACQQB=FACQQF*SQDQQS*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)-
36950      &      WDTE(5,1)-WDTE(5,2)-WDTE(5,4))
36951             FACCIB=FACQQF*SQDQTS*(WDTE(5,1)+WDTE(5,2)+WDTE(5,4))
36952           ENDIF
36953           DO 450 I=MMINA,MMAXA
36954             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36955      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 450
36956             NCHN=NCHN+1
36957             ISIG(NCHN,1)=I
36958             ISIG(NCHN,2)=-I
36959             ISIG(NCHN,3)=1
36960             IF(ITCM(5).LE.0.OR.(ITCM(5).EQ.1.AND.IABS(I).GE.3)) THEN
36961               SIGH(NCHN)=FACQQB
36962             ELSEIF(ITCM(5).EQ.5) THEN
36963               SIGH(NCHN)=FACQQB
36964               NCHN=NCHN+1
36965               ISIG(NCHN,1)=I
36966               ISIG(NCHN,2)=-I
36967               ISIG(NCHN,3)=2
36968               SIGH(NCHN)=FACCIB
36969             ELSE
36970               SIGH(NCHN)=FACCIB
36971             ENDIF
36972   450     CONTINUE
36973  
36974         ELSEIF(ISUB.EQ.383) THEN
36975 C...f + fbar -> g + g (q + qbar -> g + g only)
36976           FACGG1=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
36977      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
36978           FACGG2=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
36979      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)
36980           IF(ITCM(5).EQ.5) THEN
36981             FACGG3=COMFAC*AS**2*32D0/27D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
36982      &      UH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
36983             FACGG4=COMFAC*AS**2*32D0/27D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
36984      &      TH2/SH2+9D0/4D0*TH*UH/SH2*SQDHGS)
36985           ENDIF
36986           DO 460 I=MMINA,MMAXA
36987             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
36988      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 460
36989             NCHN=NCHN+1
36990             ISIG(NCHN,1)=I
36991             ISIG(NCHN,2)=-I
36992             ISIG(NCHN,3)=1
36993             SIGH(NCHN)=0.5D0*FACGG1
36994             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG3
36995             NCHN=NCHN+1
36996             ISIG(NCHN,1)=I
36997             ISIG(NCHN,2)=-I
36998             ISIG(NCHN,3)=2
36999             SIGH(NCHN)=0.5D0*FACGG2
37000             IF(ITCM(5).EQ.5.AND.IABS(I).EQ.5) SIGH(NCHN)=0.5D0*FACGG4
37001   460     CONTINUE
37002  
37003         ELSEIF(ISUB.EQ.384) THEN
37004 C...f + g -> f + g (q + g -> q + g only)
37005           FACQG1=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*UH2/TH2-
37006      &    UH/SH-9D0/4D0*SH*UH/TH2*SQDLGT)*FACA
37007           FACQG2=COMFAC*AS**2*4D0/9D0*((2D0+MSTP(34)*1D0/4D0)*SH2/TH2-
37008      &    SH/UH-9D0/4D0*SH*UH/TH2*SQDLGT)
37009           DO 480 I=MMINA,MMAXA
37010             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 480
37011             DO 470 ISDE=1,2
37012               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 470
37013               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 470
37014               NCHN=NCHN+1
37015               ISIG(NCHN,ISDE)=I
37016               ISIG(NCHN,3-ISDE)=21
37017               ISIG(NCHN,3)=1
37018               SIGH(NCHN)=FACQG1
37019               NCHN=NCHN+1
37020               ISIG(NCHN,ISDE)=I
37021               ISIG(NCHN,3-ISDE)=21
37022               ISIG(NCHN,3)=2
37023               SIGH(NCHN)=FACQG2
37024   470       CONTINUE
37025   480     CONTINUE
37026  
37027         ELSEIF(ISUB.EQ.385) THEN
37028 C...g + g -> f + fbar (g + g -> q + qbar only)
37029           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 500
37030           IDC0=MDCY(21,2)-1
37031 C...Begin by d, u, s flavours.
37032           FLAVWT=0D0
37033           IF(MDME(IDC0+1,1).GE.1) FLAVWT=FLAVWT+
37034      &    SQRT(MAX(0D0,1D0-4D0*PMAS(1,1)**2/SH))
37035           IF(MDME(IDC0+2,1).GE.1) FLAVWT=FLAVWT+
37036      &    SQRT(MAX(0D0,1D0-4D0*PMAS(2,1)**2/SH))
37037           IF(MDME(IDC0+3,1).GE.1) FLAVWT=FLAVWT+
37038      &    SQRT(MAX(0D0,1D0-4D0*PMAS(3,1)**2/SH))
37039           FACQQ1=COMFAC*AS**2*1D0/6D0*(UH/TH-(2D0+MSTP(34)*1D0/4D0)*
37040      &    UH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
37041           FACQQ2=COMFAC*AS**2*1D0/6D0*(TH/UH-(2D0+MSTP(34)*1D0/4D0)*
37042      &    TH2/SH2+9D0/4D0*TH*UH/SH2*SQDLGS)*FLAVWT*FACA
37043           NCHN=NCHN+1
37044           ISIG(NCHN,1)=21
37045           ISIG(NCHN,2)=21
37046           ISIG(NCHN,3)=1
37047           SIGH(NCHN)=FACQQ1
37048           NCHN=NCHN+1
37049           ISIG(NCHN,1)=21
37050           ISIG(NCHN,2)=21
37051           ISIG(NCHN,3)=2
37052           SIGH(NCHN)=FACQQ2
37053 C...Next c and b flavours: modified that and uhat for fixed
37054 C...cos(theta-hat).
37055           DO 490 IFL=4,5
37056           SQMAVG=PMAS(IFL,1)**2
37057           IF(MDME(IDC0+IFL,1).GE.1.AND.SH.GT.4.04D0*SQMAVG) THEN
37058             BE34=SQRT(1D0-4D0*SQMAVG/SH)
37059             THQ=-0.5D0*SH*(1D0-BE34*CTH)
37060             UHQ=-0.5D0*SH*(1D0+BE34*CTH)
37061             THUHQ=THQ*UHQ-SQMAVG*SH
37062             IF(MSTP(34).EQ.0) THEN
37063               FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
37064               FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
37065             ELSE
37066               FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
37067      &        THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
37068               FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
37069      &        UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
37070             ENDIF
37071             IF(ITCM(5).GE.5) THEN
37072               IF(IFL.EQ.4) THEN
37073                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
37074      &          2.25D0*THQ*UHQ/SH2*SQDLGS
37075                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
37076      &          2.25D0*THQ*UHQ/SH2*SQDLGS
37077               ELSE
37078                 FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
37079      &          2.25D0*THQ*UHQ/SH2*SQDHGS
37080                 FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
37081      &          2.25D0*THQ*UHQ/SH2*SQDHGS
37082               ENDIF
37083             ENDIF
37084             FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1*BE34
37085             FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2*BE34
37086             NCHN=NCHN+1
37087             ISIG(NCHN,1)=21
37088             ISIG(NCHN,2)=21
37089             ISIG(NCHN,3)=1+2*(IFL-3)
37090             SIGH(NCHN)=FACQQ1
37091             NCHN=NCHN+1
37092             ISIG(NCHN,1)=21
37093             ISIG(NCHN,2)=21
37094             ISIG(NCHN,3)=2+2*(IFL-3)
37095             SIGH(NCHN)=FACQQ2
37096           ENDIF
37097   490     CONTINUE
37098   500     CONTINUE
37099  
37100         ELSEIF(ISUB.EQ.386) THEN
37101 C...g + g -> g + g
37102           IF(ITCM(5).LE.4) THEN
37103             FACGG1=COMFAC*AS**2*9D0/4D0*(SH2/TH2+2D0*SH/TH+3D0+
37104      &      2D0*TH/SH+TH2/SH2)*FACA
37105             FACGG2=COMFAC*AS**2*9D0/4D0*(UH2/SH2+2D0*UH/SH+3D0+
37106      &      2D0*SH/UH+SH2/UH2)*FACA
37107             FACGG3=COMFAC*AS**2*9D0/4D0*(TH2/UH2+2D0*TH/UH+3D0+
37108      &      2D0*UH/TH+UH2/TH2)
37109           ELSE
37110             GST=  (12D0 + 40D0*TH/SH + 56D0*TH2/SH2 + 32D0*TH**3/SH**3 +
37111      &      16D0*TH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*TH + 16D0*TH2)+
37112      &      4D0*REDGST*(SH + 2D0*TH)*
37113      &      (2D0*SH**3 - 3D0*SH2*TH - 2D0*SH*TH2 + 2D0*TH**3)/SH2 +
37114      &      2D0*REDGGS*(2D0*SH - 12D0*TH2/SH - 8D0*TH**3/SH2) +
37115      &      2D0*REDGGT*(4D0*SH - 22D0*TH - 68D0*TH2/SH - 60D0*TH**3/SH2-
37116      &      32D0*TH**4/SH**3 - 16D0*TH**5/SH**4) +
37117      &      SQDGGT*(16D0*SH2 + 16D0*SH*TH + 68D0*TH2 + 144D0*TH**3/SH +
37118      &      96D0*TH**4/SH2 + 32D0*TH**5/SH**3 + 16D0*TH**6/SH**4))/16D0
37119             GSU=  (12D0 + 40D0*UH/SH + 56D0*UH2/SH2 + 32D0*UH**3/SH**3 +
37120      &      16D0*UH**4/SH**4 + SQDGGS*(4D0*SH2 + 16D0*SH*UH + 16D0*UH2)+
37121      &      4D0*REDGSU*(SH + 2D0*UH)*
37122      &      (2D0*SH**3 - 3D0*SH2*UH - 2D0*SH*UH2 + 2D0*UH**3)/SH2 +
37123      &      2D0*REDGGS*(2D0*SH - 12D0*UH2/SH - 8D0*UH**3/SH2) +
37124      &      2D0*REDGGU*(4D0*SH - 22D0*UH - 68D0*UH2/SH - 60D0*UH**3/SH2-
37125      &      32D0*UH**4/SH**3 - 16D0*UH**5/SH**4) +
37126      &      SQDGGU*(16D0*SH2 + 16D0*SH*UH + 68D0*UH2 + 144D0*UH**3/SH +
37127      &      96D0*UH**4/SH2 + 32D0*UH**5/SH**3 + 16D0*UH**6/SH**4))/16D0
37128             GUT=  (12D0 - 16D0*TH*(TH - UH)**2*UH/SH**4 +
37129      &      4D0*REDGGU*(2D0*TH**5 - 15D0*TH**4*UH - 48D0*TH**3*UH2 -
37130      &      58D0*TH2*UH**3 - 10D0*TH*UH**4 + UH**5)/SH**4 +
37131      &      4D0*REDGGT*(TH**5 - 10D0*TH**4*UH - 58D0*TH**3*UH2 -
37132      &      48D0*TH2*UH**3 - 15D0*TH*UH**4 + 2D0*UH**5)/SH**4 +
37133      &      4D0*SQDGGU*(4D0*TH**6 + 20D0*TH**5*UH + 57D0*TH**4*UH2 +
37134      &      72D0*TH**3*UH**3+ 38D0*TH2*UH**4+4D0*TH*UH**5 +UH**6)/SH**4+
37135      &      4D0*SQDGGT*(4D0*UH**6 + 4D0*TH**5*UH + 38D0*TH**4*UH2 +
37136      &      72D0*TH**3*UH**3 +57D0*TH2*UH**4+20D0*TH*UH**5+TH**6)/SH**4+
37137      &      2D0*REDGTU*((TH - UH)**2* (TH**4 + 20D0*TH**3*UH +
37138      &      30D0*TH2*UH2 + 20D0*TH*UH**3 + UH**4) +
37139      &      SH2*(7D0*TH**4 + 52D0*TH**3*UH + 274D0*TH2*UH2 +
37140      &      52D0*TH*UH**3 + 7D0*UH**4))/(2D0*SH**4))/16D0
37141             FACGG1=COMFAC*AS**2*9D0/4D0*GST*FACA
37142             FACGG2=COMFAC*AS**2*9D0/4D0*GSU*FACA
37143             FACGG3=COMFAC*AS**2*9D0/4D0*GUT
37144           ENDIF
37145           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 510
37146           NCHN=NCHN+1
37147           ISIG(NCHN,1)=21
37148           ISIG(NCHN,2)=21
37149           ISIG(NCHN,3)=1
37150           SIGH(NCHN)=0.5D0*FACGG1
37151           NCHN=NCHN+1
37152           ISIG(NCHN,1)=21
37153           ISIG(NCHN,2)=21
37154           ISIG(NCHN,3)=2
37155           SIGH(NCHN)=0.5D0*FACGG2
37156           NCHN=NCHN+1
37157           ISIG(NCHN,1)=21
37158           ISIG(NCHN,2)=21
37159           ISIG(NCHN,3)=3
37160           SIGH(NCHN)=0.5D0*FACGG3
37161   510     CONTINUE
37162  
37163         ELSEIF(ISUB.EQ.387) THEN
37164 C...q + qbar -> Q + Qbar
37165           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
37166           THQ=-0.5D0*SH*(1D0-BE34*CTH)
37167           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
37168           FACQQB=COMFAC*AS**2*4D0/9D0*((THQ**2+UHQ**2)/SH2+
37169      &    2D0*SQMAVG/SH)
37170           IF(ITCM(5).GE.5) THEN
37171             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
37172               FACQQB=FACQQB*SH2*SQDQTS
37173             ELSE
37174               FACQQB=FACQQB*SH2*SQDQQS
37175             ENDIF
37176           ENDIF
37177           IF(MSTP(35).GE.1) FACQQB=FACQQB*PYHFTH(SH,SQMAVG,0D0)
37178           WID2=1D0
37179           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
37180           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
37181           FACQQB=FACQQB*WID2
37182           DO 520 I=MMINA,MMAXA
37183             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
37184      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 520
37185             NCHN=NCHN+1
37186             ISIG(NCHN,1)=I
37187             ISIG(NCHN,2)=-I
37188             ISIG(NCHN,3)=1
37189             SIGH(NCHN)=FACQQB
37190   520     CONTINUE
37191  
37192         ELSEIF(ISUB.EQ.388) THEN
37193 C...g + g -> Q + Qbar
37194           SQMAVG=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH
37195           THQ=-0.5D0*SH*(1D0-BE34*CTH)
37196           UHQ=-0.5D0*SH*(1D0+BE34*CTH)
37197           THUHQ=THQ*UHQ-SQMAVG*SH
37198           IF(MSTP(34).EQ.0) THEN
37199             FACQQ1=UHQ/THQ-2D0*UHQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/THQ**2
37200             FACQQ2=THQ/UHQ-2D0*THQ**2/SH2+4D0*(SQMAVG/SH)*THUHQ/UHQ**2
37201           ELSE
37202             FACQQ1=UHQ/THQ-2.25D0*UHQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
37203      &      THQ**2+0.5D0*SQMAVG*(THQ+SQMAVG)/THQ**2-SQMAVG**2/(SH*THQ)
37204             FACQQ2=THQ/UHQ-2.25D0*THQ**2/SH2+4.5D0*(SQMAVG/SH)*THUHQ/
37205      &      UHQ**2+0.5D0*SQMAVG*(UHQ+SQMAVG)/UHQ**2-SQMAVG**2/(SH*UHQ)
37206           ENDIF
37207           IF(ITCM(5).GE.5) THEN
37208             IF(MINT(55).EQ.5.OR.MINT(55).EQ.6) THEN
37209               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDHGS+
37210      &        2.25D0*THQ*UHQ/SH2*SQDHGS
37211               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDHGS+
37212      &        2.25D0*THQ*UHQ/SH2*SQDHGS
37213             ELSE
37214               FACQQ1=FACQQ1+2.25D0*SQMAVG*(THQ-UHQ)/(SH*THQ)*REDLGS+
37215      &        2.25D0*THQ*UHQ/SH2*SQDLGS
37216               FACQQ2=FACQQ2+2.25D0*SQMAVG*(UHQ-THQ)/(SH*UHQ)*REDLGS+
37217      &        2.25D0*THQ*UHQ/SH2*SQDLGS
37218             ENDIF
37219           ENDIF
37220           FACQQ1=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ1
37221           FACQQ2=COMFAC*FACA*AS**2*(1D0/6D0)*FACQQ2
37222           IF(MSTP(35).GE.1) THEN
37223             FATRE=PYHFTH(SH,SQMAVG,2D0/7D0)
37224             FACQQ1=FACQQ1*FATRE
37225             FACQQ2=FACQQ2*FATRE
37226           ENDIF
37227           WID2=1D0
37228           IF(MINT(55).EQ.6) WID2=WIDS(6,1)
37229           IF(MINT(55).EQ.7.OR.MINT(55).EQ.8) WID2=WIDS(MINT(55),1)
37230           FACQQ1=FACQQ1*WID2
37231           FACQQ2=FACQQ2*WID2
37232           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 530
37233           NCHN=NCHN+1
37234           ISIG(NCHN,1)=21
37235           ISIG(NCHN,2)=21
37236           ISIG(NCHN,3)=1
37237           SIGH(NCHN)=FACQQ1
37238           NCHN=NCHN+1
37239           ISIG(NCHN,1)=21
37240           ISIG(NCHN,2)=21
37241           ISIG(NCHN,3)=2
37242           SIGH(NCHN)=FACQQ2
37243   530     CONTINUE
37244         ENDIF
37245       ENDIF
37246  
37247 CMRENNA--
37248  
37249       RETURN
37250       END
37251  
37252 C*********************************************************************
37253  
37254 C...PYSGEX
37255 C...Subprocess cross sections for assorted exotic processes,
37256 C...including Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*.
37257 C...Auxiliary to PYSIGH.
37258  
37259       SUBROUTINE PYSGEX(NCHN,SIGS)
37260  
37261 C...Double precision and integer declarations
37262       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
37263       IMPLICIT INTEGER(I-N)
37264       INTEGER PYK,PYCHGE,PYCOMP
37265 C...Parameter statement to help give large particle numbers.
37266       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
37267      &KEXCIT=4000000,KDIMEN=5000000)
37268 C...Commonblocks
37269       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
37270       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
37271       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
37272       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
37273       COMMON/PYINT1/MINT(400),VINT(400)
37274       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
37275       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
37276       COMMON/PYINT4/MWID(500),WIDS(500,5)
37277       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
37278       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
37279      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
37280      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
37281      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
37282       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/,
37283      &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/
37284 C...Local arrays
37285       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
37286  
37287 C...Differential cross section expressions.
37288  
37289       IF(ISUB.LE.160) THEN
37290         IF(ISUB.EQ.141) THEN
37291 C...f + fbar -> gamma*/Z0/Z'0
37292           SQMZP=PMAS(32,1)**2
37293           MINT(61)=2
37294           CALL PYWIDT(32,SH,WDTP,WDTE)
37295           HP0=AEM/3D0*SH
37296           HP1=AEM/3D0*XWC*SH
37297           HP2=HP1
37298           HS=SHR*VINT(117)
37299           HSP=SHR*WDTP(0)
37300           FACZP=4D0*COMFAC*3D0
37301           DO 100 I=MMINA,MMAXA
37302             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100
37303             EI=KCHG(IABS(I),1)/3D0
37304             AI=SIGN(1D0,EI)
37305             VI=AI-4D0*EI*XWV
37306             IA=IABS(I)
37307             IF(IA.LT.10) THEN
37308               IF(IA.LE.2) THEN
37309                 VPI=PARU(123-2*MOD(IABS(I),2))
37310                 API=PARU(124-2*MOD(IABS(I),2))
37311               ELSEIF(IA.LE.4) THEN
37312                 VPI=PARJ(182-2*MOD(IABS(I),2))
37313                 API=PARJ(183-2*MOD(IABS(I),2))
37314               ELSE
37315                 VPI=PARJ(190-2*MOD(IABS(I),2))
37316                 API=PARJ(191-2*MOD(IABS(I),2))
37317               ENDIF
37318             ELSE
37319               IF(IA.LE.12) THEN
37320                 VPI=PARU(127-2*MOD(IABS(I),2))
37321                 API=PARU(128-2*MOD(IABS(I),2))
37322               ELSEIF(IA.LE.14) THEN
37323                 VPI=PARJ(186-2*MOD(IABS(I),2))
37324                 API=PARJ(187-2*MOD(IABS(I),2))
37325               ELSE
37326                 VPI=PARJ(194-2*MOD(IABS(I),2))
37327                 API=PARJ(195-2*MOD(IABS(I),2))
37328               ENDIF
37329             ENDIF
37330             HI0=HP0
37331             IF(IABS(I).LE.10) HI0=HI0*FACA/3D0
37332             HI1=HP1
37333             IF(IABS(I).LE.10) HI1=HI1*FACA/3D0
37334             HI2=HP2
37335             IF(IABS(I).LE.10) HI2=HI2*FACA/3D0
37336             NCHN=NCHN+1
37337             ISIG(NCHN,1)=I
37338             ISIG(NCHN,2)=-I
37339             ISIG(NCHN,3)=1
37340 C...Special case: if only branching ratios known then use them.
37341             IF(MWID(32).EQ.2.AND.MSTP(44).EQ.3) THEN
37342               HI=0D0
37343               IF(IA.LT.10) THEN
37344                 HI=SHR*WDTP(IA)*FACA/9D0
37345               ELSEIF(IA.LT.20) THEN
37346                 HI=SHR*WDTP(IA-2)
37347               ENDIF
37348               HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37349               SIGH(NCHN)=HI*FACZP*HF/((SH-SQMZP)**2+HSP**2)
37350             ELSE
37351 C...Normal cross section.
37352               SIGH(NCHN)=FACZP*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI*
37353      &        (1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)*
37354      &        VINT(112)+EI*VPI*(1D0-SQMZP/SH)/((SH-SQMZP)**2+HSP**2)*
37355      &        (HI0*HP2+HI2*HP0)*VINT(113)+(VI**2+AI**2)/
37356      &        ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)+(VI*VPI+AI*API)*
37357      &        ((SH-SQMZ)*(SH-SQMZP)+HS*HSP)/(((SH-SQMZ)**2+HS**2)*
37358      &        ((SH-SQMZP)**2+HSP**2))*(HI1*HP2+HI2*HP1)*VINT(115)+
37359      &        (VPI**2+API**2)/((SH-SQMZP)**2+HSP**2)*HI2*HP2*VINT(116))
37360             ENDIF
37361   100     CONTINUE
37362  
37363         ELSEIF(ISUB.EQ.142) THEN
37364 C...f + fbar' -> W'+/-
37365           SQMWP=PMAS(34,1)**2
37366           CALL PYWIDT(34,SH,WDTP,WDTE)
37367           HS=SHR*WDTP(0)
37368           FACBW=4D0*COMFAC/((SH-SQMWP)**2+HS**2)*3D0
37369           HP=AEM/(24D0*XW)*SH
37370           DO 120 I=MMIN1,MMAX1
37371             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120
37372             IA=IABS(I)
37373             DO 110 J=MMIN2,MMAX2
37374               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110
37375               JA=IABS(J)
37376               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110
37377               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
37378      &        GOTO 110
37379               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
37380 C...Special case: if only branching ratios known then use them.
37381               IF(MWID(34).EQ.2) THEN
37382                 HI=0D0
37383                 DO 105 IDC=MDCY(34,2),MDCY(34,2)+MDCY(34,3)-1
37384                   IF((IA.EQ.IABS(KFDP(IDC,1)).AND.JA.EQ.
37385      &            IABS(KFDP(IDC,2))).OR.(IA.EQ.IABS(KFDP(IDC,2))
37386      &            .AND.JA.EQ.IABS(KFDP(IDC,1))))
37387      &             HI=SHR*WDTP(IDC+1-MDCY(34,2))
37388   105           CONTINUE
37389                 IF(IA.LT.10) HI=HI*FACA/9D0
37390               ELSE
37391 C...Normal cross section.
37392                 HI=HP*(PARU(133)**2+PARU(134)**2)
37393                 IF(IA.LE.10) HI=HP*(PARU(131)**2+PARU(132)**2)*
37394      &          VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
37395               ENDIF 
37396               NCHN=NCHN+1
37397               ISIG(NCHN,1)=I
37398               ISIG(NCHN,2)=J
37399               ISIG(NCHN,3)=1
37400               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
37401               SIGH(NCHN)=HI*FACBW*HF
37402   110       CONTINUE
37403   120     CONTINUE
37404  
37405         ELSEIF(ISUB.EQ.144) THEN
37406 C...f + fbar' -> R
37407           SQMR=PMAS(41,1)**2
37408           CALL PYWIDT(41,SH,WDTP,WDTE)
37409           HS=SHR*WDTP(0)
37410           FACBW=4D0*COMFAC/((SH-SQMR)**2+HS**2)*3D0
37411           HP=AEM/(12D0*XW)*SH
37412           DO 140 I=MMIN1,MMAX1
37413             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140
37414             IA=IABS(I)
37415             DO 130 J=MMIN2,MMAX2
37416               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130
37417               JA=IABS(J)
37418               IF(I*J.GT.0.OR.IABS(IA-JA).NE.2) GOTO 130
37419               HI=HP
37420               IF(IA.LE.10) HI=HI*FACA/3D0
37421               HF=SHR*(WDTE(0,1)+WDTE(0,(10-(I+J))/4)+WDTE(0,4))
37422               NCHN=NCHN+1
37423               ISIG(NCHN,1)=I
37424               ISIG(NCHN,2)=J
37425               ISIG(NCHN,3)=1
37426               SIGH(NCHN)=HI*FACBW*HF
37427   130       CONTINUE
37428   140     CONTINUE
37429  
37430         ELSEIF(ISUB.EQ.145) THEN
37431 C...q + l -> LQ (leptoquark)
37432           SQMLQ=PMAS(42,1)**2
37433           CALL PYWIDT(42,SH,WDTP,WDTE)
37434           HS=SHR*WDTP(0)
37435           FACBW=4D0*COMFAC/((SH-SQMLQ)**2+HS**2)
37436           IF(ABS(SHR-PMAS(42,1)).GT.PARP(48)*PMAS(42,2)) FACBW=0D0
37437           HP=AEM/4D0*SH
37438           KFLQQ=KFDP(MDCY(42,2),1)
37439           KFLQL=KFDP(MDCY(42,2),2)
37440           DO 160 I=MMIN1,MMAX1
37441             IF(KFAC(1,I).EQ.0) GOTO 160
37442             IA=IABS(I)
37443             IF(IA.NE.KFLQQ.AND.IA.NE.IABS(KFLQL)) GOTO 160
37444             DO 150 J=MMIN2,MMAX2
37445               IF(KFAC(2,J).EQ.0) GOTO 150
37446               JA=IABS(J)
37447               IF(JA.NE.KFLQQ.AND.JA.NE.IABS(KFLQL)) GOTO 150
37448               IF(I*J.NE.KFLQQ*KFLQL) GOTO 150
37449               IF(JA.EQ.IA) GOTO 150
37450               IF(IA.EQ.KFLQQ) KCHLQ=ISIGN(1,I)
37451               IF(JA.EQ.KFLQQ) KCHLQ=ISIGN(1,J)
37452               HI=HP*PARU(151)
37453               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHLQ)/2)+WDTE(0,4))
37454               NCHN=NCHN+1
37455               ISIG(NCHN,1)=I
37456               ISIG(NCHN,2)=J
37457               ISIG(NCHN,3)=1
37458               SIGH(NCHN)=HI*FACBW*HF
37459   150       CONTINUE
37460   160     CONTINUE
37461  
37462         ELSEIF(ISUB.EQ.146) THEN
37463 C...e + gamma* -> e* (excited lepton)
37464           KFQSTR=KFPR(ISUB,1)
37465           KCQSTR=PYCOMP(KFQSTR)
37466           KFQEXC=MOD(KFQSTR,KEXCIT)
37467           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
37468           HS=SHR*WDTP(0)
37469           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
37470           QF=-RTCM(43)/2D0-RTCM(44)/2D0
37471           FACBW=FACBW*AEM*QF**2*SH/RTCM(41)**2
37472           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
37473      &    FACBW=0D0
37474           HP=SH
37475           DO 180 I=-KFQEXC,KFQEXC,2*KFQEXC
37476             DO 170 ISDE=1,2
37477               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 170
37478               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 170
37479               HI=HP
37480               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37481               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
37482               NCHN=NCHN+1
37483               ISIG(NCHN,ISDE)=I
37484               ISIG(NCHN,3-ISDE)=22
37485               ISIG(NCHN,3)=1
37486               SIGH(NCHN)=HI*FACBW*HF
37487   170       CONTINUE
37488   180     CONTINUE
37489  
37490         ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN
37491 C...d + g -> d* and u + g -> u* (excited quarks)
37492           KFQSTR=KFPR(ISUB,1)
37493           KCQSTR=PYCOMP(KFQSTR)
37494           KFQEXC=MOD(KFQSTR,KEXCIT)
37495           CALL PYWIDT(KFQSTR,SH,WDTP,WDTE)
37496           HS=SHR*WDTP(0)
37497           FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2)
37498           FACBW=FACBW*AS*RTCM(45)**2*SH/(3D0*RTCM(41)**2)
37499           IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2))
37500      &    FACBW=0D0
37501           HP=SH
37502           DO 200 I=-KFQEXC,KFQEXC,2*KFQEXC
37503             DO 190 ISDE=1,2
37504               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 190
37505               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 190
37506               HI=HP
37507               IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37508               IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))
37509               NCHN=NCHN+1
37510               ISIG(NCHN,ISDE)=I
37511               ISIG(NCHN,3-ISDE)=21
37512               ISIG(NCHN,3)=1
37513               SIGH(NCHN)=HI*FACBW*HF
37514   190       CONTINUE
37515   200     CONTINUE
37516         ENDIF
37517  
37518       ELSEIF(ISUB.LE.190) THEN
37519         IF(ISUB.EQ.162) THEN
37520 C...q + g -> LQ + lbar; LQ=leptoquark
37521           SQMLQ=PMAS(42,1)**2
37522           FACLQ=COMFAC*FACA*PARU(151)*(AS*AEM/6D0)*(-TH/SH)*
37523      &    (UH2+SQMLQ**2)/(UH-SQMLQ)**2
37524           KFLQQ=KFDP(MDCY(42,2),1)
37525           DO 220 I=MMINA,MMAXA
37526             IF(IABS(I).NE.KFLQQ) GOTO 220
37527             KCHLQ=ISIGN(1,I)
37528             DO 210 ISDE=1,2
37529               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 210
37530               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 210
37531               NCHN=NCHN+1
37532               ISIG(NCHN,ISDE)=I
37533               ISIG(NCHN,3-ISDE)=21
37534               ISIG(NCHN,3)=1
37535               SIGH(NCHN)=FACLQ*WIDS(42,(5-KCHLQ)/2)
37536   210       CONTINUE
37537   220     CONTINUE
37538  
37539         ELSEIF(ISUB.EQ.163) THEN
37540 C...g + g -> LQ + LQbar; LQ=leptoquark
37541           SQMLQ=PMAS(42,1)**2
37542           FACLQ=COMFAC*FACA*WIDS(42,1)*(AS**2/2D0)*
37543      &    (7D0/48D0+3D0*(UH-TH)**2/(16D0*SH2))*(1D0+2D0*SQMLQ*TH/
37544      &    (TH-SQMLQ)**2+2D0*SQMLQ*UH/(UH-SQMLQ)**2+4D0*SQMLQ**2/
37545      &    ((TH-SQMLQ)*(UH-SQMLQ)))
37546           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 230
37547           NCHN=NCHN+1
37548           ISIG(NCHN,1)=21
37549           ISIG(NCHN,2)=21
37550 C...Since don't know proper colour flow, randomize between alternatives
37551           ISIG(NCHN,3)=INT(1.5D0+PYR(0))
37552           SIGH(NCHN)=FACLQ
37553   230     CONTINUE
37554  
37555         ELSEIF(ISUB.EQ.164) THEN
37556 C...q + qbar -> LQ + LQbar; LQ=leptoquark
37557           DELTA=0.25D0*(SQM3-SQM4)**2/SH
37558           SQMLQ=0.5D0*(SQM3+SQM4)-DELTA
37559           TH=TH-DELTA
37560           UH=UH-DELTA
37561 C          SQMLQ=PMAS(42,1)**2
37562           FACLQA=COMFAC*WIDS(42,1)*(AS**2/9D0)*
37563      &    (SH*(SH-4D0*SQMLQ)-(UH-TH)**2)/SH2
37564           FACLQS=COMFAC*WIDS(42,1)*((PARU(151)**2*AEM**2/8D0)*
37565      &    (-SH*TH-(SQMLQ-TH)**2)/TH2+(PARU(151)*AEM*AS/18D0)*
37566      &    ((SQMLQ-TH)*(UH-TH)+SH*(SQMLQ+TH))/(SH*TH))
37567           KFLQQ=KFDP(MDCY(42,2),1)
37568           DO 240 I=MMINA,MMAXA
37569             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
37570      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 240
37571             NCHN=NCHN+1
37572             ISIG(NCHN,1)=I
37573             ISIG(NCHN,2)=-I
37574             ISIG(NCHN,3)=1
37575             SIGH(NCHN)=FACLQA
37576             IF(IABS(I).EQ.KFLQQ) SIGH(NCHN)=FACLQA+FACLQS
37577   240     CONTINUE
37578  
37579         ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN
37580 C...q + q' -> q" + d* and q + q' -> q" + u* (excited quarks)
37581           KFQSTR=KFPR(ISUB,2)
37582           KCQSTR=PYCOMP(KFQSTR)
37583           KFQEXC=MOD(KFQSTR,KEXCIT)
37584           FACQSA=COMFAC*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)
37585           FACQSB=COMFAC*0.25D0*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
37586      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
37587 C...Propagators: as simulated in PYOFSH and as desired
37588           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
37589           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
37590           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
37591           GMMQC=SQRT(SQM4)*WDTP(0)
37592           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
37593           FACQSA=FACQSA*HBW4C/HBW4
37594           FACQSB=FACQSB*HBW4C/HBW4
37595 C...Branching ratios.
37596           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
37597           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
37598           DO 260 I=MMIN1,MMAX1
37599             IA=IABS(I)
37600             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 260
37601             DO 250 J=MMIN2,MMAX2
37602               JA=IABS(J)
37603               IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 250
37604               IF(IA.EQ.KFQEXC.AND.I.EQ.J) THEN
37605                 NCHN=NCHN+1
37606                 ISIG(NCHN,1)=I
37607                 ISIG(NCHN,2)=J
37608                 ISIG(NCHN,3)=1
37609                 IF(I.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
37610                 IF(I.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
37611                 NCHN=NCHN+1
37612                 ISIG(NCHN,1)=I
37613                 ISIG(NCHN,2)=J
37614                 ISIG(NCHN,3)=2
37615                 IF(J.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS
37616                 IF(J.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG
37617               ELSEIF((IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC).AND.I*J.GT.0) THEN
37618                 NCHN=NCHN+1
37619                 ISIG(NCHN,1)=I
37620                 ISIG(NCHN,2)=J
37621                 ISIG(NCHN,3)=1
37622                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
37623                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSA*BRPOS
37624                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSA*BRNEG
37625               ELSEIF(IA.EQ.KFQEXC.AND.I.EQ.-J) THEN
37626                 NCHN=NCHN+1
37627                 ISIG(NCHN,1)=I
37628                 ISIG(NCHN,2)=J
37629                 ISIG(NCHN,3)=1
37630                 IF(I.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
37631                 IF(I.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
37632                 NCHN=NCHN+1
37633                 ISIG(NCHN,1)=I
37634                 ISIG(NCHN,2)=J
37635                 ISIG(NCHN,3)=2
37636                 IF(J.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS
37637                 IF(J.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG
37638               ELSEIF(I.EQ.-J) THEN
37639                 NCHN=NCHN+1
37640                 ISIG(NCHN,1)=I
37641                 ISIG(NCHN,2)=J
37642                 ISIG(NCHN,3)=1
37643                 IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
37644                 IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
37645                 NCHN=NCHN+1
37646                 ISIG(NCHN,1)=I
37647                 ISIG(NCHN,2)=J
37648                 ISIG(NCHN,3)=2
37649                 IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
37650                 IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
37651               ELSEIF(IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC) THEN
37652                 NCHN=NCHN+1
37653                 ISIG(NCHN,1)=I
37654                 ISIG(NCHN,2)=J
37655                 ISIG(NCHN,3)=1
37656                 IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2
37657                 IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSB*BRPOS
37658                 IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSB*BRNEG
37659               ENDIF
37660   250       CONTINUE
37661   260     CONTINUE
37662  
37663         ELSEIF(ISUB.EQ.169) THEN
37664 C...q + qbar -> e + e* (excited lepton)
37665           KFQSTR=KFPR(ISUB,2)
37666           KCQSTR=PYCOMP(KFQSTR)
37667           KFQEXC=MOD(KFQSTR,KEXCIT)
37668           FACQSB=(COMFAC/12D0)*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)*
37669      &    (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH)
37670 C...Propagators: as simulated in PYOFSH and as desired
37671           GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2)
37672           HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2)
37673           CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE)
37674           GMMQC=SQRT(SQM4)*WDTP(0)
37675           HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2)
37676           FACQSB=FACQSB*HBW4C/HBW4
37677 C...Branching ratios.
37678           BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0)
37679           BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0)
37680           DO 270 I=MMIN1,MMAX1
37681             IA=IABS(I)
37682             IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 270
37683             J=-I
37684             JA=IABS(J)
37685             IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 270
37686             NCHN=NCHN+1
37687             ISIG(NCHN,1)=I
37688             ISIG(NCHN,2)=J
37689             ISIG(NCHN,3)=1
37690             IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS
37691             IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG
37692             NCHN=NCHN+1
37693             ISIG(NCHN,1)=I
37694             ISIG(NCHN,2)=J
37695             ISIG(NCHN,3)=2
37696             IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS
37697             IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG
37698   270     CONTINUE
37699         ENDIF
37700  
37701       ELSEIF(ISUB.LE.360) THEN
37702         IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN
37703 C...l + l -> H_L++/-- or H_R++/--.
37704           KFRES=KFPR(ISUB,1)
37705           KFREC=PYCOMP(KFRES)
37706           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
37707           HS=SHR*WDTP(0)
37708           FACBW=8D0*COMFAC/((SH-PMAS(KFREC,1)**2)**2+HS**2)
37709           DO 290 I=MMIN1,MMAX1
37710             IA=IABS(I)
37711             IF((IA.NE.11.AND.IA.NE.13.AND.IA.NE.15).OR.KFAC(1,I).EQ.0)
37712      &      GOTO 290
37713             DO 280 J=MMIN2,MMAX2
37714               JA=IABS(J)
37715               IF((JA.NE.11.AND.JA.NE.13.AND.JA.NE.15).OR.KFAC(2,J).EQ.0)
37716      &        GOTO 280
37717               IF(I*J.LT.0) GOTO 280
37718               KCHH=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
37719               NCHN=NCHN+1
37720               ISIG(NCHN,1)=I
37721               ISIG(NCHN,2)=J
37722               ISIG(NCHN,3)=1
37723               HI=SH*PARP(181+3*((IA-11)/2)+(JA-11)/2)**2/(8D0*PARU(1))
37724               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
37725               SIGH(NCHN)=HI*FACBW*HF
37726   280       CONTINUE
37727   290     CONTINUE
37728  
37729         ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN
37730 C...l + gamma -> H_L++/-- l' or l + gamma -> H_R++/-- l'.
37731           KFRES=KFPR(ISUB,1)
37732           KFREC=PYCOMP(KFRES)
37733 C...Propagators: as simulated in PYOFSH and as desired
37734           HBW3=PMAS(KFREC,1)*PMAS(KFREC,2)/((SQM3-PMAS(KFREC,1)**2)**2+
37735      &    (PMAS(KFREC,1)*PMAS(KFREC,2))**2)
37736           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
37737           GMMC=SQRT(SQM3)*WDTP(0)
37738           HBW3C=GMMC/((SQM3-PMAS(KFREC,1)**2)**2+GMMC**2)
37739           FHCC=COMFAC*AEM*HBW3C/HBW3
37740           DO 310 I=MMINA,MMAXA
37741             IA=IABS(I)
37742             IF(IA.NE.11.AND.IA.NE.13.AND.IA.NE.15) GOTO 310
37743             SQML=PMAS(IA,1)**2
37744             J=ISIGN(KFPR(ISUB,2),-I)
37745             KCHH=ISIGN(2,KCHG(IA,1)*ISIGN(1,I))
37746             WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))/WDTP(0)
37747             SMM1=8D0*(SH+TH-SQM3)*(SH+TH-2D0*SQM3-SQML-SQM4)/
37748      &      (UH-SQM3)**2
37749             SMM2=2D0*((2D0*SQM3-3D0*SQML)*SQM4+(SQML-2D0*SQM4)*TH-
37750      &      (TH-SQM4)*SH)/(TH-SQM4)**2
37751             SMM3=2D0*((2D0*SQM3-3D0*SQM4+TH)*SQML-(2D0*SQML-SQM4+TH)*
37752      &      SH)/(SH-SQML)**2
37753             SMM12=4D0*((2D0*SQML-SQM4-2D0*SQM3+TH)*SH+(TH-3D0*SQM3-
37754      &      3D0*SQM4)*TH+(2D0*SQM3-2D0*SQML+3D0*SQM4)*SQM3)/
37755      &      ((UH-SQM3)*(TH-SQM4))
37756             SMM13=-4D0*((TH+SQML-2D0*SQM4)*TH-(SQM3+3D0*SQML-2D0*SQM4)*
37757      &      SQM3+(SQM3+3D0*SQML+TH)*SH-(TH-SQM3+SH)**2)/
37758      &      ((UH-SQM3)*(SH-SQML))
37759             SMM23=-4D0*((SQML-SQM4+SQM3)*TH-SQM3**2+SQM3*(SQML+SQM4)-
37760      &      3D0*SQML*SQM4-(SQML-SQM4-SQM3+TH)*SH)/
37761      &      ((SH-SQML)*(TH-SQM4))
37762             SMM=(SH/(SH-SQML))**2*(SMM1+SMM2+SMM3+SMM12+SMM13+SMM23)*
37763      &      PARP(181+3*((IA-11)/2)+(IABS(J)-11)/2)**2/(4D0*PARU(1))
37764             DO 300 ISDE=1,2
37765               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 300
37766               IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 300
37767               NCHN=NCHN+1
37768               ISIG(NCHN,ISDE)=I
37769               ISIG(NCHN,3-ISDE)=22
37770               ISIG(NCHN,3)=0
37771               SIGH(NCHN)=FHCC*SMM*WIDSC
37772   300       CONTINUE
37773   310     CONTINUE
37774  
37775         ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN
37776 C...f + fbar -> H_L++ + H_L-- or H_R++ + H_R--
37777           KFRES=KFPR(ISUB,1)
37778           KFREC=PYCOMP(KFRES)
37779           SQMH=PMAS(KFREC,1)**2
37780           GMMH=PMAS(KFREC,1)*PMAS(KFREC,2)
37781 C...Propagators: H++/-- as simulated in PYOFSH and as desired
37782           HBW3=GMMH/((SQM3-SQMH)**2+GMMH**2)
37783           CALL PYWIDT(KFRES,SQM3,WDTP,WDTE)
37784           GMMH3=SQRT(SQM3)*WDTP(0)
37785           HBW3C=GMMH3/((SQM3-SQMH)**2+GMMH3**2)
37786           HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2)
37787           CALL PYWIDT(KFRES,SQM4,WDTP,WDTE)
37788           GMMH4=SQRT(SQM4)*WDTP(0)
37789           HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2)
37790 C...Kinematical and coupling functions
37791           FACHH=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*(TH*UH-SQM3*SQM4)
37792           XWHH=(1D0-2D0*XWV)/(8D0*XWV*(1D0-XWV))
37793 C...Loop over allowed flavours
37794           DO 320 I=MMINA,MMAXA
37795             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320
37796             EI=KCHG(IABS(I),1)/3D0
37797             AI=SIGN(1D0,EI+0.1D0)
37798             VI=AI-4D0*EI*XWV
37799             FCOI=1D0
37800             IF(IABS(I).LE.10) FCOI=FACA/3D0
37801             IF(ISUB.EQ.349) THEN
37802               HBWZ=1D0/((SH-SQMZ)**2+GMMZ**2)
37803               IF(IABS(I).LT.10) THEN
37804                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
37805      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
37806      &          (VI**2+AI**2)*XWHH**2*HBWZ)
37807               ELSE
37808                 IAOFF=181+3*((IABS(I)-11)/2)
37809                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
37810      &          (4D0*PARU(1))
37811                 DSIGHH=8D0*AEM**2*(EI**2/SH2+
37812      &          2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+
37813      &          (VI**2+AI**2)*XWHH**2*HBWZ)+
37814      &          8D0*AEM*(EI*HSUM/(SH*TH)+
37815      &          (VI+AI)*XWHH*HSUM*(SH-SQMZ)*HBWZ/TH)+
37816      &          4D0*HSUM**2/TH2
37817               ENDIF
37818             ELSE
37819               IF(IABS(I).LT.10) THEN
37820                 DSIGHH=8D0*AEM**2*EI**2/SH2
37821               ELSE
37822                 IAOFF=181+3*((IABS(I)-11)/2)
37823                 HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/
37824      &          (4D0*PARU(1))
37825                 DSIGHH=8D0*AEM**2*EI**2/SH2+8D0*AEM*EI*HSUM/(SH*TH)+
37826      &          4D0*HSUM**2/TH2
37827               ENDIF
37828             ENDIF
37829             NCHN=NCHN+1
37830             ISIG(NCHN,1)=I
37831             ISIG(NCHN,2)=-I
37832             ISIG(NCHN,3)=1
37833             SIGH(NCHN)=FACHH*FCOI*DSIGHH
37834   320     CONTINUE
37835  
37836         ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN
37837 C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/-- as inner process)
37838           KFRES=KFPR(ISUB,1)
37839           KFREC=PYCOMP(KFRES)
37840           SQMH=PMAS(KFREC,1)**2
37841           IF(ISUB.EQ.351) FACNOR=PARP(190)**8*PARP(192)**2
37842           IF(ISUB.EQ.352) FACNOR=PARP(191)**6*2D0*
37843      &    PMAS(PYCOMP(9900024),1)**2
37844           FACWW=COMFAC*FACNOR*TAUP*VINT(2)*VINT(219)
37845           FACPRT=1D0/((VINT(204)**2-VINT(215))*
37846      &    (VINT(209)**2-VINT(216)))
37847           FACPRU=1D0/((VINT(204)**2+2D0*VINT(217))*
37848      &    (VINT(209)**2+2D0*VINT(218)))
37849           CALL PYWIDT(KFRES,SH,WDTP,WDTE)
37850           HS=SHR*WDTP(0)
37851           FACBW=(1D0/PARU(1))*VINT(2)/((SH-SQMH)**2+HS**2)
37852           IF(ABS(SHR-PMAS(KFREC,1)).GT.PARP(48)*PMAS(KFREC,2))
37853      &    FACBW=0D0
37854           DO 340 I=MMIN1,MMAX1
37855             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 340
37856             IF(ISUB.EQ.352.AND.IABS(I).GT.10) GOTO 340
37857             KCHWI=(1-2*MOD(IABS(I),2))*ISIGN(1,I)
37858             DO 330 J=MMIN2,MMAX2
37859               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 330
37860               IF(ISUB.EQ.352.AND.IABS(J).GT.10) GOTO 330
37861               KCHWJ=(1-2*MOD(IABS(J),2))*ISIGN(1,J)
37862               KCHH=KCHWI+KCHWJ
37863               IF(IABS(KCHH).NE.2) GOTO 330
37864               FACLR=VINT(180+I)*VINT(180+J)
37865               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))
37866               IF(I.EQ.J.AND.IABS(I).GT.10) THEN
37867                 FACPRP=0.5D0*(FACPRT+FACPRU)**2
37868               ELSE
37869                 FACPRP=FACPRT**2
37870               ENDIF
37871               NCHN=NCHN+1
37872               ISIG(NCHN,1)=I
37873               ISIG(NCHN,2)=J
37874               ISIG(NCHN,3)=1
37875               SIGH(NCHN)=FACLR*FACWW*FACPRP*FACBW*HF
37876   330       CONTINUE
37877   340     CONTINUE
37878  
37879         ELSEIF(ISUB.EQ.353) THEN
37880 C...f + fbar -> Z_R0
37881           SQMZR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
37882           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
37883           HS=SHR*WDTP(0)
37884           FACBW=4D0*COMFAC/((SH-SQMZR)**2+HS**2)*3D0
37885           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37886           HP=(AEM/(3D0*(1D0-2D0*XW)))*XWC*SH
37887           DO 350 I=MMINA,MMAXA
37888             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 350
37889             IF(IABS(I).LE.8) THEN
37890               EI=KCHG(IABS(I),1)/3D0
37891               AI=SIGN(1D0,EI+0.1D0)*(1D0-2D0*XW)
37892               VI=SIGN(1D0,EI+0.1D0)-4D0*EI*XW
37893             ELSE
37894               AI=-(1D0-2D0*XW)
37895               VI=-1D0+4D0*XW
37896             ENDIF
37897             HI=HP*(VI**2+AI**2)
37898             IF(IABS(I).LE.10) HI=HI*FACA/3D0
37899             NCHN=NCHN+1
37900             ISIG(NCHN,1)=I
37901             ISIG(NCHN,2)=-I
37902             ISIG(NCHN,3)=1
37903             SIGH(NCHN)=HI*FACBW*HF
37904   350     CONTINUE
37905  
37906         ELSEIF(ISUB.EQ.354) THEN
37907 C...f + fbar' -> W_R+/-
37908           SQMWR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2
37909           CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE)
37910           HS=SHR*WDTP(0)
37911           FACBW=4D0*COMFAC/((SH-SQMWR)**2+HS**2)*3D0
37912           HP=AEM/(24D0*XW)*SH
37913           DO 370 I=MMIN1,MMAX1
37914             IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 370
37915             IA=IABS(I)
37916             DO 360 J=MMIN2,MMAX2
37917               IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 360
37918               JA=IABS(J)
37919               IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 360
37920               IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10))
37921      &        GOTO 360
37922               KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3
37923               HI=HP*2D0
37924               IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0
37925               NCHN=NCHN+1
37926               ISIG(NCHN,1)=I
37927               ISIG(NCHN,2)=J
37928               ISIG(NCHN,3)=1
37929               HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))
37930               SIGH(NCHN)=HI*FACBW*HF
37931   360       CONTINUE
37932   370     CONTINUE
37933         ENDIF
37934  
37935       ELSEIF(ISUB.LE.400) THEN
37936         IF(ISUB.EQ.391) THEN
37937 C...f + fbar -> G*.
37938           KFGSTR=KFPR(ISUB,1)
37939           KCGSTR=PYCOMP(KFGSTR)
37940           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
37941           HS=SHR*WDTP(0)
37942           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37943           FACG=COMFAC*PARP(50)**2/(16D0*PARU(1))*SH*HF/
37944      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
37945 C...Modify cross section in wings of peak.
37946           FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4
37947           DO 380 I=MMINA,MMAXA
37948             IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380
37949             HI=1D0
37950             IF(IABS(I).LE.10) HI=HI*FACA/3D0
37951             NCHN=NCHN+1
37952             ISIG(NCHN,1)=I
37953             ISIG(NCHN,2)=-I
37954             ISIG(NCHN,3)=1
37955             SIGH(NCHN)=FACG*HI
37956   380     CONTINUE
37957  
37958         ELSEIF(ISUB.EQ.392) THEN
37959 C...g + g -> G*.
37960           KFGSTR=KFPR(ISUB,1)
37961           KCGSTR=PYCOMP(KFGSTR)
37962           CALL PYWIDT(KFGSTR,SH,WDTP,WDTE)
37963           HS=SHR*WDTP(0)
37964           HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37965           FACG=COMFAC*PARP(50)**2/(32D0*PARU(1))*SH*HF/
37966      &    ((SH-PMAS(KCGSTR,1)**2)**2+HS**2)
37967 C...Modify cross section in wings of peak.
37968           FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4
37969           IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 390
37970           NCHN=NCHN+1
37971           ISIG(NCHN,1)=21
37972           ISIG(NCHN,2)=21
37973           ISIG(NCHN,3)=1
37974           SIGH(NCHN)=FACG
37975   390     CONTINUE
37976  
37977         ELSEIF(ISUB.EQ.393) THEN
37978 C...q + qbar -> g + G*.
37979           KFGSTR=KFPR(ISUB,2)
37980           KCGSTR=PYCOMP(KFGSTR)
37981           FACG=COMFAC*PARP(50)**2*AS*SH/(72D0*PARU(1)*SQM4)*
37982      &    (4D0*(TH2+UH2)/SH2+9D0*(TH+UH)/SH+(TH2/UH+UH2/TH)/SH+
37983      &    3D0*(4D0+TH/UH+UH/TH)+4D0*(SH/UH+SH/TH)+
37984      &    2D0*SH2/(TH*UH))
37985 C...Propagators: as simulated in PYOFSH and as desired
37986           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
37987           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
37988           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
37989           HS=SQRT(SQM4)*WDTP(0)
37990           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
37991           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
37992           FACG=FACG*HBW4C/HBW4
37993           DO 400 I=MMINA,MMAXA
37994             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
37995      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400
37996             NCHN=NCHN+1
37997             ISIG(NCHN,1)=I
37998             ISIG(NCHN,2)=-I
37999             ISIG(NCHN,3)=1
38000             SIGH(NCHN)=FACG
38001   400     CONTINUE
38002  
38003         ELSEIF(ISUB.EQ.394) THEN
38004 C...q + g -> q + G*.
38005           KFGSTR=KFPR(ISUB,2)
38006           KCGSTR=PYCOMP(KFGSTR)
38007           FACG=-COMFAC*PARP(50)**2*AS*SH/(192D0*PARU(1)*SQM4)*
38008      &    (4D0*(SH2+UH2)/(TH*SH)+9D0*(SH+UH)/SH+SH/UH+UH2/SH2+
38009      &    3D0*TH*(4D0+SH/UH+UH/SH)/SH+4D0*TH2*(1D0/UH+1D0/SH)/SH+
38010      &    2D0*TH2*TH/(UH*SH2))
38011 C...Propagators: as simulated in PYOFSH and as desired
38012           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
38013           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
38014           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
38015           HS=SQRT(SQM4)*WDTP(0)
38016           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38017           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
38018           FACG=FACG*HBW4C/HBW4
38019           DO 420 I=MMINA,MMAXA
38020             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 420
38021             DO 410 ISDE=1,2
38022               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 410
38023               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 410
38024               NCHN=NCHN+1
38025               ISIG(NCHN,ISDE)=I
38026               ISIG(NCHN,3-ISDE)=21
38027               ISIG(NCHN,3)=1
38028               SIGH(NCHN)=FACG
38029   410       CONTINUE
38030   420     CONTINUE
38031  
38032         ELSEIF(ISUB.EQ.395) THEN
38033 C...g + g -> g + G*.
38034           KFGSTR=KFPR(ISUB,2)
38035           KCGSTR=PYCOMP(KFGSTR)
38036           FACG=COMFAC*3D0*PARP(50)**2*AS*SH/(32D0*PARU(1)*SQM4)*
38037      &    ((TH2+TH*UH+UH2)**2/(SH2*TH*UH)+2D0*(TH2/UH+UH2/TH)/SH+
38038      &    3D0*(TH/UH+UH/TH)+2D0*(SH/UH+SH/TH)+SH2/(TH*UH))
38039 C...Propagators: as simulated in PYOFSH and as desired
38040           GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2)
38041           HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2)
38042           CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE)
38043           HS=SQRT(SQM4)*WDTP(0)
38044           HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))
38045           HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2)
38046           FACG=FACG*HBW4C/HBW4
38047           IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN
38048             NCHN=NCHN+1
38049             ISIG(NCHN,1)=21
38050             ISIG(NCHN,2)=21
38051             ISIG(NCHN,3)=1
38052             SIGH(NCHN)=FACG
38053           ENDIF
38054         ENDIF
38055       ENDIF
38056  
38057       RETURN
38058       END
38059  
38060 C*********************************************************************
38061  
38062 C...PYPDFU
38063 C...Gives electron, muon, tau, photon, pi+, neutron, proton and hyperon
38064 C...parton distributions according to a few different parametrizations.
38065 C...Note that what is coded is x times the probability distribution,
38066 C...i.e. xq(x,Q2) etc.
38067  
38068       SUBROUTINE PYPDFU(KF,X,Q2,XPQ)
38069  
38070 C...Double precision and integer declarations.
38071       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38072       IMPLICIT INTEGER(I-N)
38073       INTEGER PYK,PYCHGE,PYCOMP
38074 C...Commonblocks.
38075       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
38076       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38077       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
38078       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38079       COMMON/PYINT1/MINT(400),VINT(400)
38080       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
38081      &XPDIR(-6:6)
38082       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
38083       COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6),
38084      &     XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1),
38085      &     XMI(2,240),PT2MI(240),IMISEP(0:240)
38086       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT8/,
38087      &/PYINT9/,/PYINTM/
38088 C...Local arrays.
38089       DIMENSION XPQ(-25:25),XPEL(-25:25),XPGA(-6:6),VXPGA(-6:6),
38090      &XPPI(-6:6),XPPR(-6:6),XPVAL(-6:6),PPAR(6,2)
38091       SAVE PPAR
38092  
38093 C...Interface to PDFLIB.
38094       COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
38095       SAVE /W50513/
38096       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
38097      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
38098       CHARACTER*20 PARM(20)
38099       DATA VALUE/20*0D0/,PARM/20*' '/
38100  
38101 C...Data related to Schuler-Sjostrand photon distributions.
38102       DATA ALAMGA/0.2D0/, PMCGA/1.3D0/, PMBGA/4.6D0/
38103  
38104 C...Valence PDF momentum integral parametrizations PER PARTON!
38105       DATA (PPAR(1,IPAR),IPAR=1,2) /0.385D0,1.60D0/
38106       DATA (PPAR(2,IPAR),IPAR=1,2) /0.480D0,1.56D0/
38107       PAVG(IFL,Q2)=PPAR(IFL,1)/(1D0+PPAR(IFL,2)*
38108      &LOG(LOG(MAX(Q2,1D0)/0.04D0)))
38109  
38110 C...Reset parton distributions.
38111       MINT(92)=0
38112       DO 100 KFL=-25,25
38113         XPQ(KFL)=0D0
38114   100 CONTINUE
38115       DO 110 KFL=-6,6
38116         XPVAL(KFL)=0D0
38117   110 CONTINUE
38118  
38119 C...Check x and particle species.
38120       IF(X.LE.0D0.OR.X.GE.1D0) THEN
38121         WRITE(MSTU(11),5000) X
38122         GOTO 9999
38123       ENDIF
38124       KFA=IABS(KF)
38125       IF(KFA.NE.11.AND.KFA.NE.13.AND.KFA.NE.15.AND.KFA.NE.22.AND.
38126      &KFA.NE.211.AND.KFA.NE.2112.AND.KFA.NE.2212.AND.KFA.NE.3122.AND.
38127      &KFA.NE.3112.AND.KFA.NE.3212.AND.KFA.NE.3222.AND.KFA.NE.3312.AND.
38128      &KFA.NE.3322.AND.KFA.NE.3334.AND.KFA.NE.111.AND.KFA.NE.321.AND.
38129      &KFA.NE.310.AND.KFA.NE.130) THEN
38130         WRITE(MSTU(11),5100) KF
38131         GOTO 9999
38132       ENDIF
38133  
38134 C...Electron (or muon or tau) parton distribution call.
38135       IF(KFA.EQ.11.OR.KFA.EQ.13.OR.KFA.EQ.15) THEN
38136         CALL PYPDEL(KFA,X,Q2,XPEL)
38137         DO 120 KFL=-25,25
38138           XPQ(KFL)=XPEL(KFL)
38139   120   CONTINUE
38140  
38141 C...Photon parton distribution call (VDM+anomalous).
38142       ELSEIF(KFA.EQ.22.AND.MINT(109).LE.1) THEN
38143         IF(MSTP(56).EQ.1.AND.MSTP(55).EQ.1) THEN
38144           CALL PYPDGA(X,Q2,XPGA)
38145           DO 130 KFL=-6,6
38146             XPQ(KFL)=XPGA(KFL)
38147   130     CONTINUE
38148           XPVU=4D0*(XPQ(2)-XPQ(1))/3D0
38149           XPVAL(1)=XPVU/4D0
38150           XPVAL(2)=XPVU
38151           XPVAL(3)=MIN(XPQ(3),XPVU/4D0)
38152           XPVAL(4)=MIN(XPQ(4),XPVU)
38153           XPVAL(5)=MIN(XPQ(5),XPVU/4D0)
38154           XPVAL(-1)=XPVAL(1)
38155           XPVAL(-2)=XPVAL(2)
38156           XPVAL(-3)=XPVAL(3)
38157           XPVAL(-4)=XPVAL(4)
38158           XPVAL(-5)=XPVAL(5)
38159         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
38160           Q2MX=Q2
38161           P2MX=0.36D0
38162           IF(MSTP(55).GE.7) P2MX=4.0D0
38163           IF(MSTP(57).EQ.0) Q2MX=P2MX
38164           P2=0D0
38165           IF(VINT(120).LT.0D0) P2=VINT(120)**2
38166           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38167           DO 140 KFL=-6,6
38168             XPQ(KFL)=XPGA(KFL)
38169             XPVAL(KFL)=VXPDGM(KFL)
38170   140     CONTINUE
38171           VINT(231)=P2MX
38172         ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
38173           Q2MX=Q2
38174           P2MX=0.36D0
38175           IF(MSTP(55).GE.11) P2MX=4.0D0
38176           IF(MSTP(57).EQ.0) Q2MX=P2MX
38177           P2=0D0
38178           IF(VINT(120).LT.0D0) P2=VINT(120)**2
38179           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38180           DO 150 KFL=-6,6
38181             XPQ(KFL)=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
38182             XPVAL(KFL)=VXPVMD(KFL)+VXPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
38183   150     CONTINUE
38184           VINT(231)=P2MX
38185         ELSEIF(MSTP(56).EQ.2) THEN
38186 C...Call PDFLIB parton distributions.
38187           PARM(1)='NPTYPE'
38188           VALUE(1)=3
38189           PARM(2)='NGROUP'
38190           VALUE(2)=MSTP(55)/1000
38191           PARM(3)='NSET'
38192           VALUE(3)=MOD(MSTP(55),1000)
38193           IF(MINT(93).NE.3000000+MSTP(55)) THEN
38194             CALL PDFSET(PARM,VALUE)
38195             MINT(93)=3000000+MSTP(55)
38196           ENDIF
38197           XX=X
38198           QQ2=MAX(0D0,Q2MIN,Q2)
38199           IF(MSTP(57).EQ.0) QQ2=Q2MIN
38200           P2=0D0
38201           IF(VINT(120).LT.0D0) P2=VINT(120)**2
38202           IP2=MSTP(60)
38203           IF(MSTP(55).EQ.5004) THEN
38204             IF(5D0*P2.LT.QQ2.AND.
38205      &      QQ2.GT.0.6D0.AND.QQ2.LT.5D4.AND.
38206      &      P2.GE.0D0.AND.P2.LT.10D0.AND.
38207      &      XX.GT.1D-4.AND.XX.LT.1D0) THEN
38208               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
38209      &        BOT,TOP,GLU)
38210             ELSE
38211               UPV=0D0
38212               DNV=0D0
38213               USEA=0D0
38214               DSEA=0D0
38215               STR=0D0
38216               CHM=0D0
38217               BOT=0D0
38218               TOP=0D0
38219               GLU=0D0
38220             ENDIF
38221           ELSE
38222             IF(P2.LT.QQ2) THEN
38223               CALL STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
38224      &        BOT,TOP,GLU)
38225             ELSE
38226               UPV=0D0
38227               DNV=0D0
38228               USEA=0D0
38229               DSEA=0D0
38230               STR=0D0
38231               CHM=0D0
38232               BOT=0D0
38233               TOP=0D0
38234               GLU=0D0
38235             ENDIF
38236           ENDIF
38237           VINT(231)=Q2MIN
38238           XPQ(0)=GLU
38239           XPQ(1)=DNV
38240           XPQ(-1)=DNV
38241           XPQ(2)=UPV
38242           XPQ(-2)=UPV
38243           XPQ(3)=STR
38244           XPQ(-3)=STR
38245           XPQ(4)=CHM
38246           XPQ(-4)=CHM
38247           XPQ(5)=BOT
38248           XPQ(-5)=BOT
38249           XPQ(6)=TOP
38250           XPQ(-6)=TOP
38251           XPVU=4D0*(XPQ(2)-XPQ(1))/3D0
38252           XPVAL(1)=XPVU/4D0
38253           XPVAL(2)=XPVU
38254           XPVAL(3)=MIN(XPQ(3),XPVU/4D0)
38255           XPVAL(4)=MIN(XPQ(4),XPVU)
38256           XPVAL(5)=MIN(XPQ(5),XPVU/4D0)
38257           XPVAL(-1)=XPVAL(1)
38258           XPVAL(-2)=XPVAL(2)
38259           XPVAL(-3)=XPVAL(3)
38260           XPVAL(-4)=XPVAL(4)
38261           XPVAL(-5)=XPVAL(5)
38262         ELSE
38263           WRITE(MSTU(11),5200) KF,MSTP(56),MSTP(55)
38264         ENDIF
38265  
38266 C...Pion/gammaVDM parton distribution call.
38267       ELSEIF(KFA.EQ.211.OR.KFA.EQ.111.OR.KFA.EQ.321.OR.KFA.EQ.130.OR.
38268      &KFA.EQ.310.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
38269         IF(KFA.EQ.22.AND.MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.
38270      &  MSTP(55).LE.12) THEN
38271           ISET=1+MOD(MSTP(55)-1,4)
38272           Q2MX=Q2
38273           P2MX=0.36D0
38274           IF(ISET.GE.3) P2MX=4.0D0
38275           IF(MSTP(57).EQ.0) Q2MX=P2MX
38276           P2=0D0
38277           IF(VINT(120).LT.0D0) P2=VINT(120)**2
38278           CALL PYGGAM(ISET,X,Q2MX,P2,MSTP(60),F2GAM,XPGA)
38279           DO 160 KFL=-6,6
38280             XPQ(KFL)=XPVMD(KFL)
38281             XPVAL(KFL)=VXPVMD(KFL)
38282   160     CONTINUE
38283           VINT(231)=P2MX
38284         ELSEIF(MSTP(54).EQ.1.AND.MSTP(53).GE.1.AND.MSTP(53).LE.3) THEN
38285           CALL PYPDPI(X,Q2,XPPI)
38286           DO 170 KFL=-6,6
38287             XPQ(KFL)=XPPI(KFL)
38288   170     CONTINUE
38289           XPVAL(2)=XPQ(2)-XPQ(-2)
38290           XPVAL(-1)=XPQ(-1)-XPQ(1)
38291         ELSEIF(MSTP(54).EQ.2) THEN
38292 C...Call PDFLIB parton distributions.
38293           PARM(1)='NPTYPE'
38294           VALUE(1)=2
38295           PARM(2)='NGROUP'
38296           VALUE(2)=MSTP(53)/1000
38297           PARM(3)='NSET'
38298           VALUE(3)=MOD(MSTP(53),1000)
38299           IF(MINT(93).NE.2000000+MSTP(53)) THEN
38300             CALL PDFSET(PARM,VALUE)
38301             MINT(93)=2000000+MSTP(53)
38302           ENDIF
38303           XX=X
38304           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
38305           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
38306           CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
38307           VINT(231)=Q2MIN
38308           XPQ(0)=GLU
38309           XPQ(1)=DSEA
38310           XPQ(-1)=UPV+DSEA
38311           XPQ(2)=UPV+USEA
38312           XPQ(-2)=USEA
38313           XPQ(3)=STR
38314           XPQ(-3)=STR
38315           XPQ(4)=CHM
38316           XPQ(-4)=CHM
38317           XPQ(5)=BOT
38318           XPQ(-5)=BOT
38319           XPQ(6)=TOP
38320           XPQ(-6)=TOP
38321           XPVAL(2)=UPV
38322           XPVAL(-1)=UPV
38323         ELSE
38324           WRITE(MSTU(11),5200) KF,MSTP(54),MSTP(53)
38325         ENDIF
38326  
38327 C...Anomalous photon parton distribution call.
38328       ELSEIF(KFA.EQ.22.AND.MINT(109).EQ.3) THEN
38329         Q2MX=Q2
38330         P2MX=PARP(15)**2
38331         IF(MSTP(56).EQ.1.AND.MSTP(55).LE.8) THEN
38332           IF(MSTP(55).EQ.5.OR.MSTP(55).EQ.6) P2MX=0.36D0
38333           IF(MSTP(55).EQ.7.OR.MSTP(55).EQ.8) P2MX=4.0D0
38334           IF(MSTP(57).EQ.0) Q2MX=P2MX
38335           P2=0D0
38336           IF(VINT(120).LT.0D0) P2=VINT(120)**2
38337           CALL PYGGAM(MSTP(55)-4,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
38338           DO 180 KFL=-6,6
38339             XPQ(KFL)=XPANL(KFL)+XPANH(KFL)
38340             XPVAL(KFL)=VXPANL(KFL)+VXPANH(KFL)
38341   180     CONTINUE
38342           VINT(231)=P2MX
38343         ELSEIF(MSTP(56).EQ.1) THEN
38344           IF(MSTP(55).EQ.9.OR.MSTP(55).EQ.10) P2MX=0.36D0
38345           IF(MSTP(55).EQ.11.OR.MSTP(55).EQ.12) P2MX=4.0D0
38346           IF(MSTP(57).EQ.0) Q2MX=P2MX
38347           P2=0D0
38348           IF(VINT(120).LT.0D0) P2=VINT(120)**2
38349           CALL PYGGAM(MSTP(55)-8,X,Q2MX,P2,MSTP(60),F2GM,XPGA)
38350           DO 190 KFL=-6,6
38351             XPQ(KFL)=MAX(0D0,XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
38352             XPVAL(KFL)=MAX(0D0,VXPANL(KFL)+XPBEH(KFL)+XPDIR(KFL))
38353   190     CONTINUE
38354           VINT(231)=P2MX
38355         ELSEIF(MSTP(56).EQ.2) THEN
38356           IF(MSTP(57).EQ.0) Q2MX=P2MX
38357           CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA,VXPGA)
38358           DO 200 KFL=-6,6
38359             XPQ(KFL)=XPGA(KFL)
38360             XPVAL(KFL)=VXPGA(KFL)
38361   200     CONTINUE
38362           VINT(231)=P2MX
38363         ELSEIF(MSTP(55).GE.1.AND.MSTP(55).LE.5) THEN
38364           IF(MSTP(57).EQ.0) Q2MX=P2MX
38365           CALL PYGVMD(0,MSTP(55),X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
38366           DO 210 KFL=-6,6
38367             XPQ(KFL)=XPGA(KFL)
38368             XPVAL(KFL)=VXPGA(KFL)
38369   210     CONTINUE
38370           VINT(231)=P2MX
38371         ELSE
38372   220     RKF=11D0*PYR(0)
38373           KFR=1
38374           IF(RKF.GT.1D0) KFR=2
38375           IF(RKF.GT.5D0) KFR=3
38376           IF(RKF.GT.6D0) KFR=4
38377           IF(RKF.GT.10D0) KFR=5
38378           IF(KFR.EQ.4.AND.Q2.LT.PMCGA**2) GOTO 220
38379           IF(KFR.EQ.5.AND.Q2.LT.PMBGA**2) GOTO 220
38380           IF(MSTP(57).EQ.0) Q2MX=P2MX
38381           CALL PYGVMD(0,KFR,X,Q2MX,P2MX,PARP(1),XPGA,VXPGA)
38382           DO 230 KFL=-6,6
38383             XPQ(KFL)=XPGA(KFL)
38384             XPVAL(KFL)=VXPGA(KFL)
38385   230     CONTINUE
38386           VINT(231)=P2MX
38387         ENDIF
38388  
38389 C...Proton parton distribution call.
38390       ELSE
38391         IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.20) THEN
38392           CALL PYPDPR(X,Q2,XPPR)
38393           DO 240 KFL=-6,6
38394             XPQ(KFL)=XPPR(KFL)
38395   240     CONTINUE
38396 C...Force VAL > 0 (can be < 0 at very small Q2 and small x apparently)
38397           XPVAL(1)=MAX(0D0,XPQ(1)-XPQ(-1))
38398           XPVAL(2)=MAX(0D0,XPQ(2)-XPQ(-2))
38399         ELSEIF(MSTP(52).EQ.2) THEN
38400 C...Call PDFLIB parton distributions.
38401           PARM(1)='NPTYPE'
38402           VALUE(1)=1
38403           PARM(2)='NGROUP'
38404           VALUE(2)=MSTP(51)/1000
38405           PARM(3)='NSET'
38406           VALUE(3)=MOD(MSTP(51),1000)
38407           IF(MINT(93).NE.1000000+MSTP(51)) THEN
38408             CALL PDFSET(PARM,VALUE)
38409             MINT(93)=1000000+MSTP(51)
38410           ENDIF
38411           XX=X
38412           QQ=SQRT(MAX(0D0,Q2MIN,Q2))
38413           IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
38414           CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
38415           VINT(231)=Q2MIN
38416           XPQ(0)=GLU
38417           XPQ(1)=DNV+DSEA
38418           XPQ(-1)=DSEA
38419           XPQ(2)=UPV+USEA
38420           XPQ(-2)=USEA
38421           XPQ(3)=STR
38422           XPQ(-3)=STR
38423           XPQ(4)=CHM
38424           XPQ(-4)=CHM
38425           XPQ(5)=BOT
38426           XPQ(-5)=BOT
38427           XPQ(6)=TOP
38428           XPQ(-6)=TOP
38429           XPVAL(1)=DNV
38430           XPVAL(2)=UPV
38431         ELSE
38432           WRITE(MSTU(11),5200) KF,MSTP(52),MSTP(51)
38433         ENDIF
38434       ENDIF
38435  
38436 C...Isospin average for pi0/gammaVDM.
38437       IF(KFA.EQ.111.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN
38438         IF(KFA.EQ.22.AND.MSTP(55).GE.5.AND.MSTP(55).LE.12) THEN
38439           XPV=XPQ(2)-XPQ(1)
38440           XPQ(2)=XPQ(1)
38441           XPQ(-2)=XPQ(-1)
38442         ELSE
38443           XPS=0.5D0*(XPQ(1)+XPQ(-2))
38444           XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
38445           XPQ(2)=XPS
38446           XPQ(-1)=XPS
38447         ENDIF
38448         XPVL=0.5D0*(XPVAL(1)+XPVAL(2)+XPVAL(-1)+XPVAL(-2))+
38449      &  XPVAL(3)+XPVAL(4)+XPVAL(5)
38450         DO 250 KFL=-6,6
38451           XPVAL(KFL)=0D0
38452   250   CONTINUE
38453         IF(KFA.EQ.22.AND.MINT(105).LE.223) THEN
38454           XPQ(1)=XPQ(1)+0.2D0*XPV
38455           XPQ(2)=XPQ(2)+0.8D0*XPV
38456           XPVAL(1)=0.2D0*XPVL
38457           XPVAL(2)=0.8D0*XPVL
38458         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.333) THEN
38459           XPQ(3)=XPQ(3)+XPV
38460           XPVAL(3)=XPVL
38461         ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.443) THEN
38462           XPQ(4)=XPQ(4)+XPV
38463           XPVAL(4)=XPVL
38464           IF(MSTP(55).GE.9) THEN
38465             DO 260 KFL=-6,6
38466               XPQ(KFL)=0D0
38467   260       CONTINUE
38468           ENDIF
38469         ELSE
38470           XPQ(1)=XPQ(1)+0.5D0*XPV
38471           XPQ(2)=XPQ(2)+0.5D0*XPV
38472           XPVAL(1)=0.5D0*XPVL
38473           XPVAL(2)=0.5D0*XPVL
38474         ENDIF
38475         DO 270 KFL=1,6
38476           XPQ(-KFL)=XPQ(KFL)
38477           XPVAL(-KFL)=XPVAL(KFL)
38478   270   CONTINUE
38479  
38480 C...Rescale for gammaVDM by effective gamma -> rho coupling.
38481 C+++Do not rescale?
38482         IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND..NOT.(MSTP(56).EQ.1
38483      &  .AND.MSTP(55).GE.5.AND.MSTP(55).LE.12)) THEN
38484           DO 280 KFL=-6,6
38485             XPQ(KFL)=VINT(281)*XPQ(KFL)
38486             XPVAL(KFL)=VINT(281)*XPVAL(KFL)
38487   280     CONTINUE
38488           VINT(232)=VINT(281)*XPV
38489         ENDIF
38490  
38491 C...Simple recipes for kaons.
38492       ELSEIF(KFA.EQ.321) THEN
38493         XPQ(-3)=XPQ(-3)+XPQ(-1)-XPQ(1)
38494         XPQ(-1)=XPQ(1)
38495         XPVAL(-3)=XPVAL(-1)
38496         XPVAL(-1)=0D0
38497       ELSEIF(KFA.EQ.130.OR.KFA.EQ.310) THEN
38498         XPS=0.5D0*(XPQ(1)+XPQ(-2))
38499         XPV=0.5D0*(XPQ(2)+XPQ(-1))-XPS
38500         XPQ(2)=XPS
38501         XPQ(-1)=XPS
38502         XPQ(1)=XPQ(1)+0.5D0*XPV
38503         XPQ(-1)=XPQ(-1)+0.5D0*XPV
38504         XPQ(3)=XPQ(3)+0.5D0*XPV
38505         XPQ(-3)=XPQ(-3)+0.5D0*XPV
38506         XPV=0.5D0*(XPVAL(2)+XPVAL(-1))
38507         XPVAL(2)=0D0
38508         XPVAL(-1)=0D0
38509         XPVAL(1)=0.5D0*XPV
38510         XPVAL(-1)=0.5D0*XPV
38511         XPVAL(3)=0.5D0*XPV
38512         XPVAL(-3)=0.5D0*XPV
38513  
38514 C...Isospin conjugation for neutron.
38515       ELSEIF(KFA.EQ.2112) THEN
38516         XPSV=XPQ(1)
38517         XPQ(1)=XPQ(2)
38518         XPQ(2)=XPSV
38519         XPSV=XPQ(-1)
38520         XPQ(-1)=XPQ(-2)
38521         XPQ(-2)=XPSV
38522         XPSV=XPVAL(1)
38523         XPVAL(1)=XPVAL(2)
38524         XPVAL(2)=XPSV
38525  
38526 C...Simple recipes for hyperon (average valence parton distribution).
38527       ELSEIF(KFA.EQ.3122.OR.KFA.EQ.3112.OR.KFA.EQ.3212.OR.KFA.EQ.3222
38528      &  .OR.KFA.EQ.3312.OR.KFA.EQ.3322.OR.KFA.EQ.3334) THEN
38529         XPV=(XPQ(1)+XPQ(2)-XPQ(-1)-XPQ(-2))/3D0
38530         XPS=0.5D0*(XPQ(-1)+XPQ(-2))
38531         XPQ(1)=XPS
38532         XPQ(2)=XPS
38533         XPQ(-1)=XPS
38534         XPQ(-2)=XPS
38535         XPQ(KFA/1000)=XPQ(KFA/1000)+XPV
38536         XPQ(MOD(KFA/100,10))=XPQ(MOD(KFA/100,10))+XPV
38537         XPQ(MOD(KFA/10,10))=XPQ(MOD(KFA/10,10))+XPV
38538         XPV=(XPVAL(1)+XPVAL(2))/3D0
38539         XPVAL(1)=0D0
38540         XPVAL(2)=0D0
38541         XPVAL(KFA/1000)=XPVAL(KFA/1000)+XPV
38542         XPVAL(MOD(KFA/100,10))=XPVAL(MOD(KFA/100,10))+XPV
38543         XPVAL(MOD(KFA/10,10))=XPVAL(MOD(KFA/10,10))+XPV
38544       ENDIF
38545  
38546 C...Charge conjugation for antiparticle.
38547       IF(KF.LT.0) THEN
38548         DO 290 KFL=1,25
38549           IF(KFL.EQ.21.OR.KFL.EQ.22.OR.KFL.EQ.23.OR.KFL.EQ.25) GOTO 290
38550           XPSV=XPQ(KFL)
38551           XPQ(KFL)=XPQ(-KFL)
38552           XPQ(-KFL)=XPSV
38553   290   CONTINUE
38554         DO 300 KFL=1,6
38555           XPSV=XPVAL(KFL)
38556           XPVAL(KFL)=XPVAL(-KFL)
38557           XPVAL(-KFL)=XPSV
38558   300  CONTINUE
38559       ENDIF
38560  
38561 C...MULTIPLE INTERACTIONS - PDF RESHAPING.
38562 C...Set side.
38563       JS=MINT(30)
38564 C...Only reshape PDFs for the non-first interactions;
38565 C...But need valence/sea separation already from first interaction.
38566       IF ((JS.EQ.1.OR.JS.EQ.2).AND.MINT(35).GE.2) THEN
38567         KFVSEL=KFIVAL(JS,1)
38568 C...If valence quark kicked out of pi0 or gamma then that decides
38569 C...whether we should consider state as d dbar, u ubar, s sbar, etc.
38570         IF(KFVSEL.NE.0.AND.(KFA.EQ.111.OR.KFA.EQ.22)) THEN
38571           XPVL=0D0
38572           DO 310 KFL=1,6
38573             XPVL=XPVL+XPVAL(KFL)
38574             XPQ(KFL)=MAX(0D0,XPQ(KFL)-XPVAL(KFL))
38575             XPVAL(KFL)=0D0
38576   310     CONTINUE
38577           XPQ(IABS(KFVSEL))=XPQ(IABS(KFVSEL))+XPVL
38578           XPVAL(IABS(KFVSEL))=XPVL
38579           DO 320 KFL=1,6
38580             XPQ(-KFL)=XPQ(KFL)
38581             XPVAL(-KFL)=XPVAL(KFL)
38582   320     CONTINUE
38583  
38584 C...If valence quark kicked out of K0S or K0S then that decides whether
38585 C...we should consider state as d sbar or s dbar.
38586         ELSEIF(KFVSEL.NE.0.AND.(KFA.EQ.130.OR.KFA.EQ.310)) THEN
38587           KFS=1
38588           IF(KFVSEL.EQ.-1.OR.KFVSEL.EQ.3) KFS=-1
38589           XPQ(KFS)=XPQ(KFS)+XPVAL(-KFS)
38590           XPVAL(KFS)=XPVAL(KFS)+XPVAL(-KFS)
38591           XPQ(-KFS)=MAX(0D0,XPQ(-KFS)-XPVAL(-KFS))
38592           XPVAL(-KFS)=0D0
38593           KFS=-3*KFS
38594           XPQ(KFS)=XPQ(KFS)+XPVAL(-KFS)
38595           XPVAL(KFS)=XPVAL(KFS)+XPVAL(-KFS)
38596           XPQ(-KFS)=MAX(0D0,XPQ(-KFS)-XPVAL(-KFS))
38597           XPVAL(-KFS)=0D0
38598         ENDIF
38599  
38600 C...XPQ distributions are nominal for a (signed) beam particle
38601 C...of KF type, with 1-Sum(x_prev) rescaled to 1.
38602         CMPFAC=1D0
38603         NRESC=0
38604  345    NRESC=NRESC+1
38605         PVCTOT(JS,-1)=0D0
38606         PVCTOT(JS, 0)=0D0
38607         PVCTOT(JS, 1)=0D0
38608         DO 350 IFL=-6,6
38609           IF(IFL.EQ.0) GOTO 350
38610  
38611 C...Count up number of original IFL valence quarks.
38612           IVORG=0
38613           IF(KFIVAL(JS,1).EQ.IFL) IVORG=IVORG+1
38614           IF(KFIVAL(JS,2).EQ.IFL) IVORG=IVORG+1
38615           IF(KFIVAL(JS,3).EQ.IFL) IVORG=IVORG+1
38616 C...For pi0/gamma/K0S/K0L without valence flavour decided yet, here
38617 C...bookkeep as if d dbar (for total momentum sum in valence sector).
38618           IF(KFIVAL(JS,1).EQ.0.AND.IABS(IFL).EQ.1) IVORG=1
38619 C...Count down number of remaining IFL valence quarks. Skip current
38620 C...interaction initiator.
38621           IVREM=IVORG
38622           DO 330 I1=1,NMI(JS)
38623             IF (I1.EQ.MINT(36)) GOTO 330
38624             IF (K(IMI(JS,I1,1),2).EQ.IFL.AND.IMI(JS,I1,2).EQ.0)
38625      &           IVREM=IVREM-1
38626   330     CONTINUE
38627  
38628 C...Separate out original VALENCE and SEA content.
38629           VAL=XPVAL(IFL)
38630           SEA=MAX(0D0,XPQ(IFL)-VAL)
38631           XPSVC(IFL,0)=VAL
38632           XPSVC(IFL,-1)=SEA
38633  
38634 C...Rescale valence content if changed.
38635           IF (IVORG.NE.0.AND.IVREM.NE.IVORG) XPSVC(IFL,0)=
38636      &    (VAL*IVREM)/IVORG
38637  
38638 C...Momentum integrals of original and removed valence quarks.
38639           IF(IVORG.NE.0) THEN
38640 C...For p/n/pbar/nbar beams can split into d_val and u_val.
38641 C...Isospin conjugation for neutrons
38642             IF(KFA.EQ.2212.OR.KFA.EQ.2112) THEN
38643               IAFLP=IABS(IFL)
38644               IF (KFA.EQ.2112) IAFLP=3-IAFLP
38645               VPAVG=PAVG(IAFLP,Q2)
38646 C...For other baryons average d_val and u_val, like for PDFs.
38647             ELSEIF(KFA.GT.1000) THEN
38648               VPAVG=(PAVG(1,Q2)+2D0*PAVG(2,Q2))/3D0
38649 C...For mesons and photon average d_val and u_val and scale by 3/2.
38650 C...Very crude, especially for photon.
38651             ELSE
38652               VPAVG=0.5D0*(PAVG(1,Q2)+2D0*PAVG(2,Q2))
38653             ENDIF
38654             PVCTOT(JS,-1)=PVCTOT(JS,-1)+IVORG*VPAVG
38655             PVCTOT(JS, 0)=PVCTOT(JS, 0)+(IVORG-IVREM)*VPAVG
38656           ENDIF
38657  
38658 C...Now add companions (at X with partner having been at Z=XASSOC).
38659 C...NOTE: due to the assumed simple x scaling, the partner was at what
38660 C...corresponds to a higher Z than XASSOC, if there were intermediate
38661 C...scatterings. Nothing done about that for the moment.
38662           DO 340 IVC=1,NVC(JS,IFL)
38663 C...Skip companions that have been kicked out
38664             IF (XASSOC(JS,IFL,IVC).LE.0D0) THEN
38665               XPSVC(IFL,IVC)=0D0
38666               GOTO 340
38667             ELSE
38668 C...Momentum fraction of the partner quark.
38669 C...Use rescaled YS = XS/(1-Sum_rest) where X and XS are not in "rest".
38670               XS=XASSOC(JS,IFL,IVC)
38671               XREM=VINT(142+JS)
38672               YS=XS/(XREM+XS)
38673 C...Momentum fraction of the companion quark.
38674 C...Rescale from X = x/XREM to Y = x/(1-Sum_rest) -> factor (1-YS).
38675               Y=X*(1D0-YS)
38676               XPSVC(IFL,IVC)=PYFCMP(Y/CMPFAC,YS/CMPFAC,MSTP(87))
38677 C...Add to momentum sum, with rescaling compensation factor.
38678               XCFAC=(XREM+XS)/XREM*CMPFAC
38679               PVCTOT(JS,1)=PVCTOT(JS,1)+XCFAC*PYPCMP(YS/CMPFAC,MSTP(87))
38680             ENDIF
38681   340     CONTINUE
38682   350   CONTINUE
38683  
38684 C...Wait until all flavours treated, then rescale seas and gluon.
38685         XPSVC(0,-1)=XPQ(0)
38686         XPSVC(0,0)=0D0
38687         RSFAC=1D0+(PVCTOT(JS,0)-PVCTOT(JS,1))/(1D0-PVCTOT(JS,-1))
38688         IF (RSFAC.LE.0D0) THEN
38689 C...First calculate factor needed to exactly restore pz cons.
38690           IF (NRESC.EQ.1) CMPFAC =
38691      &         (1D0-(PVCTOT(JS,-1)-PVCTOT(JS,0)))/PVCTOT(JS,1)
38692 C...Add a bit of headroom
38693           CMPFAC=0.99*CMPFAC
38694 C...Try a few times if more headroom is needed, then print error message.
38695           IF (NRESC.LE.10) GOTO 345
38696           CALL PYERRM(15,
38697      &         '(PYPDFU:) Negative reshaping factor persists!')
38698           WRITE(MSTU(11),5300) (PVCTOT(JS,ITMP),ITMP=-1,1), RSFAC
38699           RSFAC=0D0
38700         ENDIF
38701         DO 370 IFL=-6,6
38702           XPSVC(IFL,-1)=RSFAC*XPSVC(IFL,-1)
38703 C...Also store resulting distributions in XPQ
38704           XPQ(IFL)=0D0
38705           DO 360 ISVC=-1,NVC(JS,IFL)
38706             XPQ(IFL)=XPQ(IFL)+XPSVC(IFL,ISVC)
38707   360     CONTINUE
38708   370   CONTINUE
38709 C...Save companion reweighting factor for PYPTIS.
38710         VINT(140)=CMPFAC
38711       ENDIF
38712  
38713  
38714 C...Allow gluon also in position 21.
38715       XPQ(21)=XPQ(0)
38716  
38717 C...Check positivity and reset above maximum allowed flavour.
38718       DO 380 KFL=-25,25
38719         XPQ(KFL)=MAX(0D0,XPQ(KFL))
38720         IF(IABS(KFL).GT.MSTP(58).AND.IABS(KFL).LE.8) XPQ(KFL)=0D0
38721   380 CONTINUE
38722  
38723 C...Formats for error printouts.
38724  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
38725  5100 FORMAT(' Error: illegal particle code for parton distribution;',
38726      &' KF =',I5)
38727  5200 FORMAT(' Error: unknown parton distribution; KF, library, set =',
38728      &3I5)
38729  5300 FORMAT(' Original valence momentum fraction : ',F6.3/
38730      &       ' Removed valence momentum fraction  : ',F6.3/
38731      &       ' Added companion momentum fraction  : ',F6.3/
38732      &       ' Resulting rescale factor           : ',F6.3)
38733  
38734 C...Reset side pointer and return
38735  9999 MINT(30)=0
38736  
38737       RETURN
38738       END
38739  
38740 C*********************************************************************
38741  
38742 C...PYPDFL
38743 C...Gives proton parton distribution at small x and/or Q^2 according to
38744 C...correct limiting behaviour.
38745  
38746       SUBROUTINE PYPDFL(KF,X,Q2,XPQ)
38747  
38748 C...Double precision and integer declarations.
38749       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38750       IMPLICIT INTEGER(I-N)
38751       INTEGER PYK,PYCHGE,PYCOMP
38752 C...Commonblocks.
38753       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38754       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
38755       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38756       COMMON/PYINT1/MINT(400),VINT(400)
38757       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
38758 C...Local arrays.
38759       DIMENSION XPQ(-25:25),XPA(-25:25),XPB(-25:25),WTSB(-3:3)
38760       DATA RMR/0.92D0/,RMP/0.38D0/,WTSB/0.5D0,1D0,1D0,5D0,1D0,1D0,0.5D0/
38761  
38762 C...Send everything but protons/neutrons/VMD pions directly to PYPDFU.
38763       MINT(92)=0
38764       KFA=IABS(KF)
38765       IACC=0
38766       IF((KFA.EQ.2212.OR.KFA.EQ.2112).AND.MSTP(57).GE.2) IACC=1
38767       IF(KFA.EQ.211.AND.MSTP(57).GE.3) IACC=1
38768       IF(KFA.EQ.22.AND.MINT(109).EQ.2.AND.MSTP(57).GE.3) IACC=1
38769       IF(IACC.EQ.0) THEN
38770         CALL PYPDFU(KF,X,Q2,XPQ)
38771         RETURN
38772       ENDIF
38773  
38774 C...Reset. Check x.
38775       DO 100 KFL=-25,25
38776         XPQ(KFL)=0D0
38777   100 CONTINUE
38778       IF(X.LE.0D0.OR.X.GE.1D0) THEN
38779         WRITE(MSTU(11),5000) X
38780         RETURN
38781       ENDIF
38782  
38783 C...Define valence content.
38784       KFC=KF
38785       NV1=2
38786       NV2=1
38787       IF(KF.EQ.2212) THEN
38788         KFV1=2
38789         KFV2=1
38790       ELSEIF(KF.EQ.-2212) THEN
38791         KFV1=-2
38792         KFV2=-1
38793       ELSEIF(KF.EQ.2112) THEN
38794         KFV1=1
38795         KFV2=2
38796       ELSEIF(KF.EQ.-2112) THEN
38797         KFV1=-1
38798         KFV2=-2
38799       ELSEIF(KF.EQ.211) THEN
38800         NV1=1
38801         KFV1=2
38802         KFV2=-1
38803       ELSEIF(KF.EQ.-211) THEN
38804         NV1=1
38805         KFV1=-2
38806         KFV2=1
38807       ELSEIF(MINT(105).LE.223) THEN
38808         KFV1=1
38809         WTV1=0.2D0
38810         KFV2=2
38811         WTV2=0.8D0
38812       ELSEIF(MINT(105).EQ.333) THEN
38813         KFV1=3
38814         WTV1=1.0D0
38815         KFV2=1
38816         WTV2=0.0D0
38817       ELSEIF(MINT(105).EQ.443) THEN
38818         KFV1=4
38819         WTV1=1.0D0
38820         KFV2=1
38821         WTV2=0.0D0
38822       ENDIF
38823  
38824 C...Do naive evaluation and find min Q^2, boundary Q^2 and x_0.
38825       MINT30=MINT(30)
38826       CALL PYPDFU(KFC,X,Q2,XPA)
38827       Q2MN=MAX(3D0,VINT(231))
38828       Q2B=2D0+0.052D0**2*EXP(3.56D0*SQRT(MAX(0D0,-LOG(3D0*X))))
38829       XMN=EXP(-(LOG((Q2MN-2D0)/0.052D0**2)/3.56D0)**2)/3D0
38830  
38831 C...Large Q2 and large x: naive call is enough.
38832       IF(Q2.GT.Q2MN.AND.Q2.GT.Q2B) THEN
38833         DO 110 KFL=-25,25
38834           XPQ(KFL)=XPA(KFL)
38835   110   CONTINUE
38836         MINT(92)=1
38837  
38838 C...Small Q2 and large x: dampen boundary value.
38839       ELSEIF(X.GT.XMN) THEN
38840  
38841 C...Evaluate at boundary and define dampening factors.
38842         MINT(30)=MINT30
38843         CALL PYPDFU(KFC,X,Q2MN,XPA)
38844         FV=(Q2*(Q2MN+RMR)/(Q2MN*(Q2+RMR)))**(0.55D0*(1D0-X)/(1D0-XMN))
38845         FS=(Q2*(Q2MN+RMP)/(Q2MN*(Q2+RMP)))**1.08D0
38846  
38847 C...Separate valence and sea parts of parton distribution.
38848         IF(KFA.NE.22) THEN
38849           XFV1=XPA(KFV1)-XPA(-KFV1)
38850           XPA(KFV1)=XPA(-KFV1)
38851           XFV2=XPA(KFV2)-XPA(-KFV2)
38852           XPA(KFV2)=XPA(-KFV2)
38853         ELSE
38854           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
38855           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
38856           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
38857           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
38858         ENDIF
38859  
38860 C...Dampen valence and sea separately. Put back together.
38861         DO 120 KFL=-25,25
38862           XPQ(KFL)=FS*XPA(KFL)
38863   120   CONTINUE
38864         IF(KFA.NE.22) THEN
38865           XPQ(KFV1)=XPQ(KFV1)+FV*XFV1
38866           XPQ(KFV2)=XPQ(KFV2)+FV*XFV2
38867         ELSE
38868           XPQ(KFV1)=XPQ(KFV1)+FV*WTV1*VINT(232)
38869           XPQ(-KFV1)=XPQ(-KFV1)+FV*WTV1*VINT(232)
38870           XPQ(KFV2)=XPQ(KFV2)+FV*WTV2*VINT(232)
38871           XPQ(-KFV2)=XPQ(-KFV2)+FV*WTV2*VINT(232)
38872         ENDIF
38873         MINT(92)=2
38874  
38875 C...Large Q2 and small x: interpolate behaviour.
38876       ELSEIF(Q2.GT.Q2MN) THEN
38877  
38878 C...Evaluate at extremes and define coefficients for interpolation.
38879         MINT(30)=MINT30
38880         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
38881         VI232A=VINT(232)
38882         MINT(30)=MINT30
38883         CALL PYPDFU(KFC,X,Q2B,XPB)
38884         VI232B=VINT(232)
38885         FLA=LOG(Q2B/Q2)/LOG(Q2B/Q2MN)
38886         FVA=(X/XMN)**0.45D0*FLA
38887         FSA=(X/XMN)**(-0.08D0)*FLA
38888         FB=1D0-FLA
38889  
38890 C...Separate valence and sea parts of parton distribution.
38891         IF(KFA.NE.22) THEN
38892           XFVA1=XPA(KFV1)-XPA(-KFV1)
38893           XPA(KFV1)=XPA(-KFV1)
38894           XFVA2=XPA(KFV2)-XPA(-KFV2)
38895           XPA(KFV2)=XPA(-KFV2)
38896           XFVB1=XPB(KFV1)-XPB(-KFV1)
38897           XPB(KFV1)=XPB(-KFV1)
38898           XFVB2=XPB(KFV2)-XPB(-KFV2)
38899           XPB(KFV2)=XPB(-KFV2)
38900         ELSE
38901           XPA(KFV1)=XPA(KFV1)-WTV1*VI232A
38902           XPA(-KFV1)=XPA(-KFV1)-WTV1*VI232A
38903           XPA(KFV2)=XPA(KFV2)-WTV2*VI232A
38904           XPA(-KFV2)=XPA(-KFV2)-WTV2*VI232A
38905           XPB(KFV1)=XPB(KFV1)-WTV1*VI232B
38906           XPB(-KFV1)=XPB(-KFV1)-WTV1*VI232B
38907           XPB(KFV2)=XPB(KFV2)-WTV2*VI232B
38908           XPB(-KFV2)=XPB(-KFV2)-WTV2*VI232B
38909         ENDIF
38910  
38911 C...Interpolate for valence and sea. Put back together.
38912         DO 130 KFL=-25,25
38913           XPQ(KFL)=FSA*XPA(KFL)+FB*XPB(KFL)
38914   130   CONTINUE
38915         IF(KFA.NE.22) THEN
38916           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFVA1+FB*XFVB1)
38917           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFVA2+FB*XFVB2)
38918         ELSE
38919           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
38920           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VI232A+FB*VI232B)
38921           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
38922           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VI232A+FB*VI232B)
38923         ENDIF
38924         MINT(92)=3
38925  
38926 C...Small Q2 and small x: dampen boundary value and add term.
38927       ELSE
38928  
38929 C...Evaluate at boundary and define dampening factors.
38930         MINT(30)=MINT30
38931         CALL PYPDFU(KFC,XMN,Q2MN,XPA)
38932         FB=(XMN-X)*(Q2MN-Q2)/(XMN*Q2MN)
38933         FA=1D0-FB
38934         FVC=(X/XMN)**0.45D0*(Q2/(Q2+RMR))**0.55D0
38935         FVA=FVC*FA*((Q2MN+RMR)/Q2MN)**0.55D0
38936         FVB=FVC*FB*1.10D0*XMN**0.45D0*0.11D0
38937         FSC=(X/XMN)**(-0.08D0)*(Q2/(Q2+RMP))**1.08D0
38938         FSA=FSC*FA*((Q2MN+RMP)/Q2MN)**1.08D0
38939         FSB=FSC*FB*0.21D0*XMN**(-0.08D0)*0.21D0
38940  
38941 C...Separate valence and sea parts of parton distribution.
38942         IF(KFA.NE.22) THEN
38943           XFV1=XPA(KFV1)-XPA(-KFV1)
38944           XPA(KFV1)=XPA(-KFV1)
38945           XFV2=XPA(KFV2)-XPA(-KFV2)
38946           XPA(KFV2)=XPA(-KFV2)
38947         ELSE
38948           XPA(KFV1)=XPA(KFV1)-WTV1*VINT(232)
38949           XPA(-KFV1)=XPA(-KFV1)-WTV1*VINT(232)
38950           XPA(KFV2)=XPA(KFV2)-WTV2*VINT(232)
38951           XPA(-KFV2)=XPA(-KFV2)-WTV2*VINT(232)
38952         ENDIF
38953  
38954 C...Dampen valence and sea separately. Add constant terms.
38955 C...Put back together.
38956         DO 140 KFL=-25,25
38957           XPQ(KFL)=FSA*XPA(KFL)
38958   140   CONTINUE
38959         IF(KFA.NE.22) THEN
38960           DO 150 KFL=-3,3
38961             XPQ(KFL)=XPQ(KFL)+FSB*WTSB(KFL)
38962   150     CONTINUE
38963           XPQ(KFV1)=XPQ(KFV1)+(FVA*XFV1+FVB*NV1)
38964           XPQ(KFV2)=XPQ(KFV2)+(FVA*XFV2+FVB*NV2)
38965         ELSE
38966           DO 160 KFL=-3,3
38967             XPQ(KFL)=XPQ(KFL)+VINT(281)*FSB*WTSB(KFL)
38968   160     CONTINUE
38969           XPQ(KFV1)=XPQ(KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
38970           XPQ(-KFV1)=XPQ(-KFV1)+WTV1*(FVA*VINT(232)+FVB*VINT(281))
38971           XPQ(KFV2)=XPQ(KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
38972           XPQ(-KFV2)=XPQ(-KFV2)+WTV2*(FVA*VINT(232)+FVB*VINT(281))
38973         ENDIF
38974         XPQ(21)=XPQ(0)
38975         MINT(92)=4
38976       ENDIF
38977  
38978 C...Format for error printout.
38979  5000 FORMAT(' Error: x value outside physical range; x =',1P,D12.3)
38980  
38981       RETURN
38982       END
38983  
38984 C*********************************************************************
38985  
38986 C...PYPDEL
38987 C...Gives electron (or muon, or tau) parton distribution.
38988  
38989       SUBROUTINE PYPDEL(KFA,X,Q2,XPEL)
38990  
38991 C...Double precision and integer declarations.
38992       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
38993       IMPLICIT INTEGER(I-N)
38994       INTEGER PYK,PYCHGE,PYCOMP
38995 C...Commonblocks.
38996       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
38997       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
38998       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
38999       COMMON/PYINT1/MINT(400),VINT(400)
39000       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
39001 C...Local arrays.
39002       DIMENSION XPEL(-25:25),XPGA(-6:6),SXP(0:6)
39003  
39004 C...Interface to PDFLIB.
39005       COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
39006       SAVE /W50513/
39007       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU,
39008      &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX
39009       CHARACTER*20 PARM(20)
39010       DATA VALUE/20*0D0/,PARM/20*' '/
39011  
39012 C...Some common constants.
39013       DO 100 KFL=-25,25
39014         XPEL(KFL)=0D0
39015   100 CONTINUE
39016       AEM=PARU(101)
39017       PME=PMAS(11,1)
39018       IF(KFA.EQ.13) PME=PMAS(13,1)
39019       IF(KFA.EQ.15) PME=PMAS(15,1)
39020       XL=LOG(MAX(1D-10,X))
39021       X1L=LOG(MAX(1D-10,1D0-X))
39022       HLE=LOG(MAX(3D0,Q2/PME**2))
39023       HBE2=(AEM/PARU(1))*(HLE-1D0)
39024  
39025 C...Electron inside electron, see R. Kleiss et al., in Z physics at
39026 C...LEP 1, CERN 89-08, p. 34
39027       IF(MSTP(59).LE.1) THEN
39028         HDE=1D0+(AEM/PARU(1))*(1.5D0*HLE+1.289868D0)+(AEM/PARU(1))**2*
39029      &  (-2.164868D0*HLE**2+9.840808D0*HLE-10.130464D0)
39030         HEE=HBE2*(1D0-X)**(HBE2-1D0)*SQRT(MAX(0D0,HDE))-
39031      &  0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*(-4D0*X1L+3D0*XL)-
39032      &  4D0*XL/(1D0-X)-5D0-X)
39033       ELSE
39034         HEE=HBE2*(1D0-X)**(HBE2-1D0)*EXP(0.172784D0*HBE2)/
39035      &  PYGAMM(1D0+HBE2)-0.5D0*HBE2*(1D0+X)+HBE2**2/8D0*((1D0+X)*
39036      &  (-4D0*X1L+3D0*XL)-4D0*XL/(1D0-X)-5D0-X)
39037       ENDIF
39038 C...Zero distribution for very large x and rescale it for intermediate.
39039       IF(X.GT.1D0-1D-10) THEN
39040         HEE=0D0
39041       ELSEIF(X.GT.1D0-1D-7) THEN
39042         HEE=HEE*1000D0**HBE2/(1000D0**HBE2-1D0)
39043       ENDIF
39044       XPEL(KFA)=X*HEE
39045  
39046 C...Photon and (transverse) W- inside electron.
39047       AEMP=PYALEM(PME*SQRT(MAX(0D0,Q2)))/PARU(2)
39048       IF(MSTP(13).LE.1) THEN
39049         HLG=HLE
39050       ELSE
39051         HLG=LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-X)/X**2))
39052       ENDIF
39053       XPEL(22)=AEMP*HLG*(1D0+(1D0-X)**2)
39054       HLW=LOG(1D0+Q2/PMAS(24,1)**2)/(4D0*PARU(102))
39055       XPEL(-24)=AEMP*HLW*(1D0+(1D0-X)**2)
39056  
39057 C...Electron or positron inside photon inside electron.
39058       IF(KFA.EQ.11.AND.MSTP(12).EQ.1) THEN
39059         XFSEA=0.5D0*(AEMP*(HLE-1D0))**2*(4D0/3D0+X-X**2-4D0*X**3/3D0+
39060      &  2D0*X*(1D0+X)*XL)
39061         XPEL(11)=XPEL(11)+XFSEA
39062         XPEL(-11)=XFSEA
39063  
39064 C...Initialize PDFLIB photon parton distributions.
39065         IF(MSTP(56).EQ.2) THEN
39066           PARM(1)='NPTYPE'
39067           VALUE(1)=3
39068           PARM(2)='NGROUP'
39069           VALUE(2)=MSTP(55)/1000
39070           PARM(3)='NSET'
39071           VALUE(3)=MOD(MSTP(55),1000)
39072           IF(MINT(93).NE.3000000+MSTP(55)) THEN
39073             CALL PDFSET(PARM,VALUE)
39074             MINT(93)=3000000+MSTP(55)
39075           ENDIF
39076         ENDIF
39077  
39078 C...Quarks and gluons inside photon inside electron:
39079 C...numerical convolution required.
39080         DO 110 KFL=0,6
39081           SXP(KFL)=0D0
39082   110   CONTINUE
39083         SUMXPP=0D0
39084         ITER=-1
39085   120   ITER=ITER+1
39086         SUMXP=SUMXPP
39087         NSTP=2**(ITER-1)
39088         IF(ITER.EQ.0) NSTP=2
39089         DO 130 KFL=0,6
39090           SXP(KFL)=0.5D0*SXP(KFL)
39091   130   CONTINUE
39092         WTSTP=0.5D0/NSTP
39093         IF(ITER.EQ.0) WTSTP=0.5D0
39094 C...Pick grid of x_{gamma} values logarithmically even.
39095         DO 150 ISTP=1,NSTP
39096           IF(ITER.EQ.0) THEN
39097             XLE=XL*(ISTP-1)
39098           ELSE
39099             XLE=XL*(ISTP-0.5D0)/NSTP
39100           ENDIF
39101           XE=MIN(1D0-1D-10,EXP(XLE))
39102           XG=MIN(1D0-1D-10,X/XE)
39103 C...Evaluate photon inside electron parton distribution for convolution.
39104           XPGP=1D0+(1D0-XE)**2
39105           IF(MSTP(13).LE.1) THEN
39106             XPGP=XPGP*HLE
39107           ELSE
39108             XPGP=XPGP*LOG(MAX(1D0,(PARP(13)/PME**2)*(1D0-XE)/XE**2))
39109           ENDIF
39110 C...Evaluate photon parton distributions for convolution.
39111           IF(MSTP(56).EQ.1) THEN
39112             IF(MSTP(55).EQ.1) THEN
39113               CALL PYPDGA(XG,Q2,XPGA)
39114             ELSEIF(MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN
39115               Q2MX=Q2
39116               P2MX=0.36D0
39117               IF(MSTP(55).GE.7) P2MX=4.0D0
39118               IF(MSTP(57).EQ.0) Q2MX=P2MX
39119               P2=0D0
39120               IF(VINT(120).LT.0D0) P2=VINT(120)**2
39121               CALL PYGGAM(MSTP(55)-4,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
39122               VINT(231)=P2MX
39123             ELSEIF(MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN
39124               Q2MX=Q2
39125               P2MX=0.36D0
39126               IF(MSTP(55).GE.11) P2MX=4.0D0
39127               IF(MSTP(57).EQ.0) Q2MX=P2MX
39128               P2=0D0
39129               IF(VINT(120).LT.0D0) P2=VINT(120)**2
39130               CALL PYGGAM(MSTP(55)-8,XG,Q2MX,P2,MSTP(60),F2GAM,XPGA)
39131               VINT(231)=P2MX
39132             ENDIF
39133             DO 140 KFL=0,5
39134               SXP(KFL)=SXP(KFL)+WTSTP*XPGP*XPGA(KFL)
39135   140       CONTINUE
39136           ELSEIF(MSTP(56).EQ.2) THEN
39137 C...Call PDFLIB parton distributions.
39138             XX=XG
39139             QQ=SQRT(MAX(0D0,Q2MIN,Q2))
39140             IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN)
39141             CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
39142             SXP(0)=SXP(0)+WTSTP*XPGP*GLU
39143             SXP(1)=SXP(1)+WTSTP*XPGP*DNV
39144             SXP(2)=SXP(2)+WTSTP*XPGP*UPV
39145             SXP(3)=SXP(3)+WTSTP*XPGP*STR
39146             SXP(4)=SXP(4)+WTSTP*XPGP*CHM
39147             SXP(5)=SXP(5)+WTSTP*XPGP*BOT
39148             SXP(6)=SXP(6)+WTSTP*XPGP*TOP
39149           ENDIF
39150   150   CONTINUE
39151         SUMXPP=SXP(0)+2D0*SXP(1)+2D0*SXP(2)
39152         IF(ITER.LE.2.OR.(ITER.LE.7.AND.ABS(SUMXPP-SUMXP).GT.
39153      &  PARP(14)*(SUMXPP+SUMXP))) GOTO 120
39154  
39155 C...Put convolution into output arrays.
39156         FCONV=AEMP*(-XL)
39157         XPEL(0)=FCONV*SXP(0)
39158         DO 160 KFL=1,6
39159           XPEL(KFL)=FCONV*SXP(KFL)
39160           XPEL(-KFL)=XPEL(KFL)
39161   160   CONTINUE
39162       ENDIF
39163  
39164       RETURN
39165       END
39166  
39167 C*********************************************************************
39168  
39169 C...PYPDGA
39170 C...Gives photon parton distribution.
39171  
39172       SUBROUTINE PYPDGA(X,Q2,XPGA)
39173  
39174 C...Double precision and integer declarations.
39175       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39176       IMPLICIT INTEGER(I-N)
39177       INTEGER PYK,PYCHGE,PYCOMP
39178 C...Commonblocks.
39179       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39180       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39181       COMMON/PYINT1/MINT(400),VINT(400)
39182       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
39183 C...Local arrays.
39184       DIMENSION XPGA(-6:6),DGAG(4,3),DGBG(4,3),DGCG(4,3),DGAN(4,3),
39185      &DGBN(4,3),DGCN(4,3),DGDN(4,3),DGEN(4,3),DGAS(4,3),DGBS(4,3),
39186      &DGCS(4,3),DGDS(4,3),DGES(4,3)
39187  
39188 C...The following data lines are coefficients needed in the
39189 C...Drees and Grassie photon parton distribution parametrization.
39190       DATA DGAG/-.207D0,.6158D0,1.074D0,0.D0,.8926D-2,.6594D0,
39191      &.4766D0,.1975D-1,.03197D0,1.018D0,.2461D0,.2707D-1/
39192       DATA DGBG/-.1987D0,.6257D0,8.352D0,5.024D0,.5085D-1,.2774D0,
39193      &-.3906D0,-.3212D0,-.618D-2,.9476D0,-.6094D0,-.1067D-1/
39194       DATA DGCG/5.119D0,-.2752D0,-6.993D0,2.298D0,-.2313D0,.1382D0,
39195      &6.542D0,.5162D0,-.1216D0,.9047D0,2.653D0,.2003D-2/
39196       DATA DGAN/2.285D0,-.1526D-1,1330.D0,4.219D0,-.3711D0,1.061D0,
39197      &4.758D0,-.1503D-1,15.8D0,-.9464D0,-.5D0,-.2118D0/
39198       DATA DGBN/6.073D0,-.8132D0,-41.31D0,3.165D0,-.1717D0,.7815D0,
39199      &1.535D0,.7067D-2,2.742D0,-.7332D0,.7148D0,3.287D0/
39200       DATA DGCN/-.4202D0,.1778D-1,.9216D0,.18D0,.8766D-1,.2197D-1,
39201      &.1096D0,.204D0,.2917D-1,.4657D-1,.1785D0,.4811D-1/
39202       DATA DGDN/-.8083D-1,.6346D0,1.208D0,.203D0,-.8915D0,.2857D0,
39203      &2.973D0,.1185D0,-.342D-1,.7196D0,.7338D0,.8139D-1/
39204       DATA DGEN/.5526D-1,1.136D0,.9512D0,.1163D-1,-.1816D0,.5866D0,
39205      &2.421D0,.4059D0,-.2302D-1,.9229D0,.5873D0,-.79D-4/
39206       DATA DGAS/16.69D0,-.7916D0,1099.D0,4.428D0,-.1207D0,1.071D0,
39207      &1.977D0,-.8625D-2,6.734D0,-1.008D0,-.8594D-1,.7625D-1/
39208       DATA DGBS/.176D0,.4794D-1,1.047D0,.25D-1,25.D0,-1.648D0,
39209      &-.1563D-1,6.438D0,59.88D0,-2.983D0,4.48D0,.9686D0/
39210       DATA DGCS/-.208D-1,.3386D-2,4.853D0,.8404D0,-.123D-1,1.162D0,
39211      &.4824D0,-.11D-1,-.3226D-2,.8432D0,.3616D0,.1383D-2/
39212       DATA DGDS/-.1685D-1,1.353D0,1.426D0,1.239D0,-.9194D-1,.7912D0,
39213      &.6397D0,2.327D0,-.3321D-1,.9475D0,-.3198D0,.2132D-1/
39214       DATA DGES/-.1986D0,1.1D0,1.136D0,-.2779D0,.2015D-1,.9869D0,
39215      &-.7036D-1,.1694D-1,.1059D0,.6954D0,-.6663D0,.3683D0/
39216  
39217 C...Photon parton distribution from Drees and Grassie.
39218 C...Allowed variable range: 1 GeV^2 < Q^2 < 10000 GeV^2.
39219       DO 100 KFL=-6,6
39220         XPGA(KFL)=0D0
39221   100 CONTINUE
39222       VINT(231)=1D0
39223       IF(MSTP(57).LE.0) THEN
39224         T=LOG(1D0/0.16D0)
39225       ELSE
39226         T=LOG(MIN(1D4,MAX(1D0,Q2))/0.16D0)
39227       ENDIF
39228       X1=1D0-X
39229       NF=3
39230       IF(Q2.GT.25D0) NF=4
39231       IF(Q2.GT.300D0) NF=5
39232       NFE=NF-2
39233       AEM=PARU(101)
39234  
39235 C...Evaluate gluon content.
39236       DGA=DGAG(1,NFE)*T**DGAG(2,NFE)+DGAG(3,NFE)*T**(-DGAG(4,NFE))
39237       DGB=DGBG(1,NFE)*T**DGBG(2,NFE)+DGBG(3,NFE)*T**(-DGBG(4,NFE))
39238       DGC=DGCG(1,NFE)*T**DGCG(2,NFE)+DGCG(3,NFE)*T**(-DGCG(4,NFE))
39239       XPGL=DGA*X**DGB*X1**DGC
39240  
39241 C...Evaluate up- and down-type quark content.
39242       DGA=DGAN(1,NFE)*T**DGAN(2,NFE)+DGAN(3,NFE)*T**(-DGAN(4,NFE))
39243       DGB=DGBN(1,NFE)*T**DGBN(2,NFE)+DGBN(3,NFE)*T**(-DGBN(4,NFE))
39244       DGC=DGCN(1,NFE)*T**DGCN(2,NFE)+DGCN(3,NFE)*T**(-DGCN(4,NFE))
39245       DGD=DGDN(1,NFE)*T**DGDN(2,NFE)+DGDN(3,NFE)*T**(-DGDN(4,NFE))
39246       DGE=DGEN(1,NFE)*T**DGEN(2,NFE)+DGEN(3,NFE)*T**(-DGEN(4,NFE))
39247       XPQN=X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
39248       DGA=DGAS(1,NFE)*T**DGAS(2,NFE)+DGAS(3,NFE)*T**(-DGAS(4,NFE))
39249       DGB=DGBS(1,NFE)*T**DGBS(2,NFE)+DGBS(3,NFE)*T**(-DGBS(4,NFE))
39250       DGC=DGCS(1,NFE)*T**DGCS(2,NFE)+DGCS(3,NFE)*T**(-DGCS(4,NFE))
39251       DGD=DGDS(1,NFE)*T**DGDS(2,NFE)+DGDS(3,NFE)*T**(-DGDS(4,NFE))
39252       DGE=DGES(1,NFE)*T**DGES(2,NFE)+DGES(3,NFE)*T**(-DGES(4,NFE))
39253       DGF=9D0
39254       IF(NF.EQ.4) DGF=10D0
39255       IF(NF.EQ.5) DGF=55D0/6D0
39256       XPQS=DGF*X*(X**2+X1**2)/(DGA-DGB*LOG(X1))+DGC*X**DGD*X1**DGE
39257       IF(NF.LE.3) THEN
39258         XPQU=(XPQS+9D0*XPQN)/6D0
39259         XPQD=(XPQS-4.5D0*XPQN)/6D0
39260       ELSEIF(NF.EQ.4) THEN
39261         XPQU=(XPQS+6D0*XPQN)/8D0
39262         XPQD=(XPQS-6D0*XPQN)/8D0
39263       ELSE
39264         XPQU=(XPQS+7.5D0*XPQN)/10D0
39265         XPQD=(XPQS-5D0*XPQN)/10D0
39266       ENDIF
39267  
39268 C...Put into output arrays.
39269       XPGA(0)=AEM*XPGL
39270       XPGA(1)=AEM*XPQD
39271       XPGA(2)=AEM*XPQU
39272       XPGA(3)=AEM*XPQD
39273       IF(NF.GE.4) XPGA(4)=AEM*XPQU
39274       IF(NF.GE.5) XPGA(5)=AEM*XPQD
39275       DO 110 KFL=1,6
39276         XPGA(-KFL)=XPGA(KFL)
39277   110 CONTINUE
39278  
39279       RETURN
39280       END
39281  
39282 C*********************************************************************
39283  
39284 C...PYGGAM
39285 C...Constructs the F2 and parton distributions of the photon
39286 C...by summing homogeneous (VMD) and inhomogeneous (anomalous) terms.
39287 C...For F2, c and b are included by the Bethe-Heitler formula;
39288 C...in the 'MSbar' scheme additionally a Cgamma term is added.
39289 C...Contains the SaS sets 1D, 1M, 2D and 2M.
39290 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39291  
39292       SUBROUTINE PYGGAM(ISET,X,Q2,P2,IP2,F2GM,XPDFGM)
39293  
39294 C...Double precision and integer declarations.
39295       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39296       IMPLICIT INTEGER(I-N)
39297       INTEGER PYK,PYCHGE,PYCOMP
39298 C...Commonblocks.
39299       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
39300      &XPDIR(-6:6)
39301       COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6)
39302       SAVE /PYINT8/,/PYINT9/
39303 C...Local arrays.
39304       DIMENSION XPDFGM(-6:6),XPGA(-6:6), VXPGA(-6:6)
39305 C...Charm and bottom masses (low to compensate for J/psi etc.).
39306       DATA PMC/1.3D0/, PMB/4.6D0/
39307 C...alpha_em and alpha_em/(2*pi).
39308       DATA AEM/0.007297D0/, AEM2PI/0.0011614D0/
39309 C...Lambda value for 4 flavours.
39310       DATA ALAM/0.20D0/
39311 C...Mixture u/(u+d), = 0.5 for incoherent and = 0.8 for coherent sum.
39312       DATA FRACU/0.8D0/
39313 C...VMD couplings f_V**2/(4*pi).
39314       DATA FRHO/2.20D0/, FOMEGA/23.6D0/, FPHI/18.4D0/
39315 C...Masses for rho (=omega) and phi.
39316       DATA PMRHO/0.770D0/, PMPHI/1.020D0/
39317 C...Number of points in integration for IP2=1.
39318       DATA NSTEP/100/
39319  
39320 C...Reset output.
39321       F2GM=0D0
39322       DO 100 KFL=-6,6
39323         XPDFGM(KFL)=0D0
39324         XPVMD(KFL)=0D0
39325         XPANL(KFL)=0D0
39326         XPANH(KFL)=0D0
39327         XPBEH(KFL)=0D0
39328         XPDIR(KFL)=0D0
39329         VXPVMD(KFL)=0D0
39330         VXPANL(KFL)=0D0
39331         VXPANH(KFL)=0D0
39332         VXPDGM(KFL)=0D0
39333   100 CONTINUE
39334  
39335 C...Set Q0 cut-off parameter as function of set used.
39336       IF(ISET.LE.2) THEN
39337         Q0=0.6D0
39338       ELSE
39339         Q0=2D0
39340       ENDIF
39341       Q02=Q0**2
39342  
39343 C...Scale choice for off-shell photon; common factors.
39344       Q2A=Q2
39345       FACNOR=1D0
39346       IF(IP2.EQ.1) THEN
39347         P2MX=P2+Q02
39348         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
39349         FACNOR=LOG(Q2/Q02)/NSTEP
39350       ELSEIF(IP2.EQ.2) THEN
39351         P2MX=MAX(P2,Q02)
39352       ELSEIF(IP2.EQ.3) THEN
39353         P2MX=P2+Q02
39354         Q2A=Q2+P2*Q02/MAX(Q02,Q2)
39355       ELSEIF(IP2.EQ.4) THEN
39356         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
39357      &  ((Q2+P2)*(Q02+P2)))
39358       ELSEIF(IP2.EQ.5) THEN
39359         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
39360      &  ((Q2+P2)*(Q02+P2)))
39361         P2MX=Q0*SQRT(P2MXA)
39362         FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MX)
39363       ELSEIF(IP2.EQ.6) THEN
39364         P2MX=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
39365      &  ((Q2+P2)*(Q02+P2)))
39366         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
39367       ELSE
39368         P2MXA=Q2*(Q02+P2)/(Q2+P2)*EXP(P2*(Q2-Q02)/
39369      &  ((Q2+P2)*(Q02+P2)))
39370         P2MX=Q0*SQRT(P2MXA)
39371         P2MXB=P2MX
39372         P2MX=MAX(0D0,1D0-P2/Q2)*P2MX+MIN(1D0,P2/Q2)*MAX(P2,Q02)
39373         P2MXB=MAX(0D0,1D0-P2/Q2)*P2MXB+MIN(1D0,P2/Q2)*P2MXA
39374         IF(ABS(Q2-Q02).GT.1D-6) THEN
39375           FACNOR=LOG(Q2/P2MXA)/LOG(Q2/P2MXB)
39376         ELSEIF(P2.LT.Q02) THEN
39377           FACNOR=Q02**3/(Q02+P2)/(Q02**2-P2**2/2D0)
39378         ELSE
39379           FACNOR=1D0
39380         ENDIF
39381       ENDIF
39382  
39383 C...Call VMD parametrization for d quark and use to give rho, omega,
39384 C...phi. Note dipole dampening for off-shell photon.
39385       CALL PYGVMD(ISET,1,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
39386       XFVAL=VXPGA(1)
39387       XPGA(1)=XPGA(2)
39388       XPGA(-1)=XPGA(-2)
39389       FACUD=AEM*(1D0/FRHO+1D0/FOMEGA)*(PMRHO**2/(PMRHO**2+P2))**2
39390       FACS=AEM*(1D0/FPHI)*(PMPHI**2/(PMPHI**2+P2))**2
39391       DO 110 KFL=-5,5
39392         XPVMD(KFL)=(FACUD+FACS)*XPGA(KFL)
39393   110 CONTINUE
39394       XPVMD(1)=XPVMD(1)+(1D0-FRACU)*FACUD*XFVAL
39395       XPVMD(2)=XPVMD(2)+FRACU*FACUD*XFVAL
39396       XPVMD(3)=XPVMD(3)+FACS*XFVAL
39397       XPVMD(-1)=XPVMD(-1)+(1D0-FRACU)*FACUD*XFVAL
39398       XPVMD(-2)=XPVMD(-2)+FRACU*FACUD*XFVAL
39399       XPVMD(-3)=XPVMD(-3)+FACS*XFVAL
39400       VXPVMD(1)=(1D0-FRACU)*FACUD*XFVAL
39401       VXPVMD(2)=FRACU*FACUD*XFVAL
39402       VXPVMD(3)=FACS*XFVAL
39403       VXPVMD(-1)=(1D0-FRACU)*FACUD*XFVAL
39404       VXPVMD(-2)=FRACU*FACUD*XFVAL
39405       VXPVMD(-3)=FACS*XFVAL
39406  
39407       IF(IP2.NE.1) THEN
39408 C...Anomalous parametrizations for different strategies
39409 C...for off-shell photons; except full integration.
39410  
39411 C...Call anomalous parametrization for d + u + s.
39412         CALL PYGANO(-3,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
39413         DO 120 KFL=-5,5
39414           XPANL(KFL)=FACNOR*XPGA(KFL)
39415           VXPANL(KFL)=FACNOR*VXPGA(KFL)
39416   120   CONTINUE
39417  
39418 C...Call anomalous parametrization for c and b.
39419         CALL PYGANO(4,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
39420         DO 130 KFL=-5,5
39421           XPANH(KFL)=FACNOR*XPGA(KFL)
39422           VXPANH(KFL)=FACNOR*VXPGA(KFL)
39423   130   CONTINUE
39424         CALL PYGANO(5,X,Q2A,P2MX,ALAM,XPGA,VXPGA)
39425         DO 140 KFL=-5,5
39426           XPANH(KFL)=XPANH(KFL)+FACNOR*XPGA(KFL)
39427           VXPANH(KFL)=VXPANH(KFL)+FACNOR*VXPGA(KFL)
39428   140   CONTINUE
39429  
39430       ELSE
39431 C...Special option: loop over flavours and integrate over k2.
39432         DO 170 KF=1,5
39433           DO 160 ISTEP=1,NSTEP
39434             Q2STEP=Q02*(Q2/Q02)**((ISTEP-0.5D0)/NSTEP)
39435             IF((KF.EQ.4.AND.Q2STEP.LT.PMC**2).OR.
39436      &      (KF.EQ.5.AND.Q2STEP.LT.PMB**2)) GOTO 160
39437             CALL PYGVMD(0,KF,X,Q2,Q2STEP,ALAM,XPGA,VXPGA)
39438             FACQ=AEM2PI*(Q2STEP/(Q2STEP+P2))**2*FACNOR
39439             IF(MOD(KF,2).EQ.0) FACQ=FACQ*(8D0/9D0)
39440             IF(MOD(KF,2).EQ.1) FACQ=FACQ*(2D0/9D0)
39441             DO 150 KFL=-5,5
39442               IF(KF.LE.3) XPANL(KFL)=XPANL(KFL)+FACQ*XPGA(KFL)
39443               IF(KF.GE.4) XPANH(KFL)=XPANH(KFL)+FACQ*XPGA(KFL)
39444               IF(KF.LE.3) VXPANL(KFL)=VXPANL(KFL)+FACQ*VXPGA(KFL)
39445               IF(KF.GE.4) VXPANH(KFL)=VXPANH(KFL)+FACQ*VXPGA(KFL)
39446   150       CONTINUE
39447   160     CONTINUE
39448   170   CONTINUE
39449       ENDIF
39450  
39451 C...Call Bethe-Heitler term expression for charm and bottom.
39452       CALL PYGBEH(4,X,Q2,P2,PMC**2,XPBH)
39453       XPBEH(4)=XPBH
39454       XPBEH(-4)=XPBH
39455       CALL PYGBEH(5,X,Q2,P2,PMB**2,XPBH)
39456       XPBEH(5)=XPBH
39457       XPBEH(-5)=XPBH
39458  
39459 C...For MSbar subtraction call C^gamma term expression for d, u, s.
39460       IF(ISET.EQ.2.OR.ISET.EQ.4) THEN
39461         CALL PYGDIR(X,Q2,P2,Q02,XPGA)
39462         DO 180 KFL=-5,5
39463           XPDIR(KFL)=XPGA(KFL)
39464   180   CONTINUE
39465       ENDIF
39466  
39467 C...Store result in output array.
39468       DO 190 KFL=-5,5
39469         CHSQ=1D0/9D0
39470         IF(IABS(KFL).EQ.2.OR.IABS(KFL).EQ.4) CHSQ=4D0/9D0
39471         XPF2=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)
39472         IF(KFL.NE.0) F2GM=F2GM+CHSQ*XPF2
39473         XPDFGM(KFL)=XPVMD(KFL)+XPANL(KFL)+XPANH(KFL)
39474         VXPDGM(KFL)=VXPVMD(KFL)+VXPANL(KFL)+VXPANH(KFL)
39475   190 CONTINUE
39476  
39477       RETURN
39478       END
39479  
39480 C*********************************************************************
39481  
39482 C...PYGVMD
39483 C...Evaluates the VMD parton distributions of a photon,
39484 C...evolved homogeneously from an initial scale P2 to Q2.
39485 C...Does not include dipole suppression factor.
39486 C...ISET is parton distribution set, see above;
39487 C...additionally ISET=0 is used for the evolution of an anomalous photon
39488 C...which branched at a scale P2 and then evolved homogeneously to Q2.
39489 C...ALAM is the 4-flavour Lambda, which is automatically converted
39490 C...to 3- and 5-flavour equivalents as needed.
39491 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39492  
39493       SUBROUTINE PYGVMD(ISET,KF,X,Q2,P2,ALAM,XPGA,VXPGA)
39494  
39495 C...Double precision and integer declarations.
39496       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39497       IMPLICIT INTEGER(I-N)
39498       INTEGER PYK,PYCHGE,PYCOMP
39499 C...Local arrays and data.
39500       DIMENSION XPGA(-6:6), VXPGA(-6:6)
39501       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
39502  
39503 C...Reset output.
39504       DO 100 KFL=-6,6
39505         XPGA(KFL)=0D0
39506         VXPGA(KFL)=0D0
39507   100 CONTINUE
39508       KFA=IABS(KF)
39509  
39510 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
39511       ALAM3=ALAM*(PMC/ALAM)**(2D0/27D0)
39512       ALAM5=ALAM*(ALAM/PMB)**(2D0/23D0)
39513       P2EFF=MAX(P2,1.2D0*ALAM3**2)
39514       IF(KFA.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
39515       IF(KFA.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
39516       Q2EFF=MAX(Q2,P2EFF)
39517  
39518 C...Find number of flavours at lower and upper scale.
39519       NFP=4
39520       IF(P2EFF.LT.PMC**2) NFP=3
39521       IF(P2EFF.GT.PMB**2) NFP=5
39522       NFQ=4
39523       IF(Q2EFF.LT.PMC**2) NFQ=3
39524       IF(Q2EFF.GT.PMB**2) NFQ=5
39525  
39526 C...Find s as sum of 3-, 4- and 5-flavour parts.
39527       S=0D0
39528       IF(NFP.EQ.3) THEN
39529         Q2DIV=PMC**2
39530         IF(NFQ.EQ.3) Q2DIV=Q2EFF
39531         S=S+(6D0/27D0)*LOG(LOG(Q2DIV/ALAM3**2)/LOG(P2EFF/ALAM3**2))
39532       ENDIF
39533       IF(NFP.LE.4.AND.NFQ.GE.4) THEN
39534         P2DIV=P2EFF
39535         IF(NFP.EQ.3) P2DIV=PMC**2
39536         Q2DIV=Q2EFF
39537         IF(NFQ.EQ.5) Q2DIV=PMB**2
39538         S=S+(6D0/25D0)*LOG(LOG(Q2DIV/ALAM**2)/LOG(P2DIV/ALAM**2))
39539       ENDIF
39540       IF(NFQ.EQ.5) THEN
39541         P2DIV=PMB**2
39542         IF(NFP.EQ.5) P2DIV=P2EFF
39543         S=S+(6D0/23D0)*LOG(LOG(Q2EFF/ALAM5**2)/LOG(P2DIV/ALAM5**2))
39544       ENDIF
39545  
39546 C...Calculate frequent combinations of x and s.
39547       X1=1D0-X
39548       XL=-LOG(X)
39549       S2=S**2
39550       S3=S**3
39551       S4=S**4
39552  
39553 C...Evaluate homogeneous anomalous parton distributions below or
39554 C...above threshold.
39555       IF(ISET.EQ.0) THEN
39556         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
39557      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
39558           XVAL = X * 1.5D0 * (X**2+X1**2)
39559           XGLU = 0D0
39560           XSEA = 0D0
39561         ELSE
39562           XVAL = (1.5D0/(1D0-0.197D0*S+4.33D0*S2)*X**2 +
39563      &    (1.5D0+2.10D0*S)/(1D0+3.29D0*S)*X1**2 +
39564      &    5.23D0*S/(1D0+1.17D0*S+19.9D0*S3)*X*X1) *
39565      &    X**(1D0/(1D0+1.5D0*S)) * (1D0-X**2)**(2.667D0*S)
39566           XGLU = 4D0*S/(1D0+4.76D0*S+15.2D0*S2+29.3D0*S4) *
39567      &    X**(-2.03D0*S/(1D0+2.44D0*S)) * (X1*XL)**(1.333D0*S) *
39568      &    ((4D0*X**2+7D0*X+4D0)*X1/3D0 - 2D0*X*(1D0+X)*XL)
39569           XSEA = S2/(1D0+4.54D0*S+8.19D0*S2+8.05D0*S3) *
39570      &    X**(-1.54D0*S/(1D0+1.29D0*S)) * X1**(2.667D0*S) *
39571      &    ((8D0-73D0*X+62D0*X**2)*X1/9D0 + (3D0-8D0*X**2/3D0)*X*XL +
39572      &    (2D0*X-1D0)*X*XL**2)
39573         ENDIF
39574  
39575 C...Evaluate set 1D parton distributions below or above threshold.
39576       ELSEIF(ISET.EQ.1) THEN
39577         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
39578      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
39579           XVAL = 1.294D0 * X**0.80D0 * X1**0.76D0
39580           XGLU = 1.273D0 * X**0.40D0 * X1**1.76D0
39581           XSEA = 0.100D0 * X1**3.76D0
39582         ELSE
39583           XVAL = 1.294D0/(1D0+0.252D0*S+3.079D0*S2) *
39584      &    X**(0.80D0-0.13D0*S) * X1**(0.76D0+0.667D0*S) * XL**(2D0*S)
39585           XGLU = 7.90D0*S/(1D0+5.50D0*S) * EXP(-5.16D0*S) *
39586      &    X**(-1.90D0*S/(1D0+3.60D0*S)) * X1**1.30D0 *
39587      &    XL**(0.50D0+3D0*S) + 1.273D0 * EXP(-10D0*S) *
39588      &    X**0.40D0 * X1**(1.76D0+3D0*S)
39589           XSEA = (0.1D0-0.397D0*S2+1.121D0*S3)/
39590      &    (1D0+5.61D0*S2+5.26D0*S3) * X**(-7.32D0*S2/(1D0+10.3D0*S2)) *
39591      &    X1**((3.76D0+15D0*S+12D0*S2)/(1D0+4D0*S))
39592           XSEA0 = 0.100D0 * X1**3.76D0
39593         ENDIF
39594  
39595 C...Evaluate set 1M parton distributions below or above threshold.
39596       ELSEIF(ISET.EQ.2) THEN
39597         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
39598      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
39599           XVAL = 0.8477D0 * X**0.51D0 * X1**1.37D0
39600           XGLU = 3.42D0 * X**0.255D0 * X1**2.37D0
39601           XSEA = 0D0
39602         ELSE
39603           XVAL = 0.8477D0/(1D0+1.37D0*S+2.18D0*S2+3.73D0*S3) *
39604      &    X**(0.51D0+0.21D0*S) * X1**1.37D0 * XL**(2.667D0*S)
39605           XGLU = 24D0*S/(1D0+9.6D0*S+0.92D0*S2+14.34D0*S3) *
39606      &    EXP(-5.94D0*S) * X**((-0.013D0-1.80D0*S)/(1D0+3.14D0*S)) *
39607      &    X1**(2.37D0+0.4D0*S) * XL**(0.32D0+3.6D0*S) + 3.42D0 *
39608      &    EXP(-12D0*S) * X**0.255D0 * X1**(2.37D0+3D0*S)
39609           XSEA = 0.842D0*S/(1D0+21.3D0*S-33.2D0*S2+229D0*S3) *
39610      &    X**((0.13D0-2.90D0*S)/(1D0+5.44D0*S)) * X1**(3.45D0+0.5D0*S) *
39611      &    XL**(2.8D0*S)
39612           XSEA0 = 0D0
39613         ENDIF
39614  
39615 C...Evaluate set 2D parton distributions below or above threshold.
39616       ELSEIF(ISET.EQ.3) THEN
39617         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
39618      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
39619           XVAL = X**0.46D0 * X1**0.64D0 + 0.76D0 * X
39620           XGLU = 1.925D0 * X1**2
39621           XSEA = 0.242D0 * X1**4
39622         ELSE
39623           XVAL = (1D0+0.186D0*S)/(1D0-0.209D0*S+1.495D0*S2) *
39624      &    X**(0.46D0+0.25D0*S) *
39625      &    X1**((0.64D0+0.14D0*S+5D0*S2)/(1D0+S)) * XL**(1.9D0*S) +
39626      &    (0.76D0+0.4D0*S) * X * X1**(2.667D0*S)
39627           XGLU = (1.925D0+5.55D0*S+147D0*S2)/(1D0-3.59D0*S+3.32D0*S2) *
39628      &    EXP(-18.67D0*S) *
39629      &    X**((-5.81D0*S-5.34D0*S2)/(1D0+29D0*S-4.26D0*S2))
39630      &    * X1**((2D0-5.9D0*S)/(1D0+1.7D0*S)) *
39631      &    XL**(9.3D0*S/(1D0+1.7D0*S))
39632           XSEA = (0.242D0-0.252D0*S+1.19D0*S2)/
39633      &    (1D0-0.607D0*S+21.95D0*S2) *
39634      &    X**(-12.1D0*S2/(1D0+2.62D0*S+16.7D0*S2)) * X1**4 * XL**S
39635           XSEA0 = 0.242D0 * X1**4
39636         ENDIF
39637  
39638 C...Evaluate set 2M parton distributions below or above threshold.
39639       ELSEIF(ISET.EQ.4) THEN
39640         IF(Q2.LE.P2.OR.(KFA.EQ.4.AND.Q2.LT.PMC**2).OR.
39641      &  (KFA.EQ.5.AND.Q2.LT.PMB**2)) THEN
39642           XVAL = 1.168D0 * X**0.50D0 * X1**2.60D0 + 0.965D0 * X
39643           XGLU = 1.808D0 * X1**2
39644           XSEA = 0.209D0 * X1**4
39645         ELSE
39646           XVAL = (1.168D0+1.771D0*S+29.35D0*S2) * EXP(-5.776D0*S) *
39647      &    X**((0.5D0+0.208D0*S)/(1D0-0.794D0*S+1.516D0*S2)) *
39648      &    X1**((2.6D0+7.6D0*S)/(1D0+5D0*S)) *
39649      &    XL**(5.15D0*S/(1D0+2D0*S)) +
39650      &    (0.965D0+22.35D0*S)/(1D0+18.4D0*S) * X * X1**(2.667D0*S)
39651           XGLU = (1.808D0+29.9D0*S)/(1D0+26.4D0*S) * EXP(-5.28D0*S) *
39652      &    X**((-5.35D0*S-10.11D0*S2)/(1D0+31.71D0*S)) *
39653      &    X1**((2D0-7.3D0*S+4D0*S2)/(1D0+2.5D0*S)) *
39654      &    XL**(10.9D0*S/(1D0+2.5D0*S))
39655           XSEA = (0.209D0+0.644D0*S2)/(1D0+0.319D0*S+17.6D0*S2) *
39656      &    X**((-0.373D0*S-7.71D0*S2)/(1D0+0.815D0*S+11.0D0*S2)) *
39657      &    X1**(4D0+S) * XL**(0.45D0*S)
39658           XSEA0 = 0.209D0 * X1**4
39659         ENDIF
39660       ENDIF
39661  
39662 C...Threshold factors for c and b sea.
39663       SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
39664       XCHM=0D0
39665       IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
39666         SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
39667         IF(ISET.EQ.0) THEN
39668           XCHM=XSEA*(1D0-(SCH/SLL)**2)
39669         ELSE
39670           XCHM=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SCH/SLL)
39671         ENDIF
39672       ENDIF
39673       XBOT=0D0
39674       IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
39675         SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
39676         IF(ISET.EQ.0) THEN
39677           XBOT=XSEA*(1D0-(SBT/SLL)**2)
39678         ELSE
39679           XBOT=MAX(0D0,XSEA-XSEA0*X1**(2.667D0*S))*(1D0-SBT/SLL)
39680         ENDIF
39681       ENDIF
39682  
39683 C...Fill parton distributions.
39684       XPGA(0)=XGLU
39685       XPGA(1)=XSEA
39686       XPGA(2)=XSEA
39687       XPGA(3)=XSEA
39688       XPGA(4)=XCHM
39689       XPGA(5)=XBOT
39690       XPGA(KFA)=XPGA(KFA)+XVAL
39691       DO 110 KFL=1,5
39692         XPGA(-KFL)=XPGA(KFL)
39693   110 CONTINUE
39694       VXPGA(KFA)=XVAL
39695       VXPGA(-KFA)=XVAL
39696  
39697       RETURN
39698       END
39699  
39700 C*********************************************************************
39701  
39702 C...PYGANO
39703 C...Evaluates the parton distributions of the anomalous photon,
39704 C...inhomogeneously evolved from a scale P2 (where it vanishes) to Q2.
39705 C...KF=0 gives the sum over (up to) 5 flavours,
39706 C...KF<0 limits to flavours up to abs(KF),
39707 C...KF>0 is for flavour KF only.
39708 C...ALAM is the 4-flavour Lambda, which is automatically converted
39709 C...to 3- and 5-flavour equivalents as needed.
39710 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39711  
39712       SUBROUTINE PYGANO(KF,X,Q2,P2,ALAM,XPGA,VXPGA)
39713  
39714 C...Double precision and integer declarations.
39715       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39716       IMPLICIT INTEGER(I-N)
39717       INTEGER PYK,PYCHGE,PYCOMP
39718 C...Local arrays and data.
39719       DIMENSION XPGA(-6:6), VXPGA(-6:6), ALAMSQ(3:5)
39720       DATA PMC/1.3D0/, PMB/4.6D0/, AEM/0.007297D0/, AEM2PI/0.0011614D0/
39721  
39722 C...Reset output.
39723       DO 100 KFL=-6,6
39724         XPGA(KFL)=0D0
39725         VXPGA(KFL)=0D0
39726   100 CONTINUE
39727       IF(Q2.LE.P2) RETURN
39728       KFA=IABS(KF)
39729  
39730 C...Calculate Lambda; protect against unphysical Q2 and P2 input.
39731       ALAMSQ(3)=(ALAM*(PMC/ALAM)**(2D0/27D0))**2
39732       ALAMSQ(4)=ALAM**2
39733       ALAMSQ(5)=(ALAM*(ALAM/PMB)**(2D0/23D0))**2
39734       P2EFF=MAX(P2,1.2D0*ALAMSQ(3))
39735       IF(KF.EQ.4) P2EFF=MAX(P2EFF,PMC**2)
39736       IF(KF.EQ.5) P2EFF=MAX(P2EFF,PMB**2)
39737       Q2EFF=MAX(Q2,P2EFF)
39738       XL=-LOG(X)
39739  
39740 C...Find number of flavours at lower and upper scale.
39741       NFP=4
39742       IF(P2EFF.LT.PMC**2) NFP=3
39743       IF(P2EFF.GT.PMB**2) NFP=5
39744       NFQ=4
39745       IF(Q2EFF.LT.PMC**2) NFQ=3
39746       IF(Q2EFF.GT.PMB**2) NFQ=5
39747  
39748 C...Define range of flavour loop.
39749       IF(KF.EQ.0) THEN
39750         KFLMN=1
39751         KFLMX=5
39752       ELSEIF(KF.LT.0) THEN
39753         KFLMN=1
39754         KFLMX=KFA
39755       ELSE
39756         KFLMN=KFA
39757         KFLMX=KFA
39758       ENDIF
39759  
39760 C...Loop over flavours the photon can branch into.
39761       DO 110 KFL=KFLMN,KFLMX
39762  
39763 C...Light flavours: calculate t range and (approximate) s range.
39764         IF(KFL.LE.3.AND.(KFL.EQ.1.OR.KFL.EQ.KF)) THEN
39765           TDIFF=LOG(Q2EFF/P2EFF)
39766           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
39767      &    LOG(P2EFF/ALAMSQ(NFQ)))
39768           IF(NFQ.GT.NFP) THEN
39769             Q2DIV=PMB**2
39770             IF(NFQ.EQ.4) Q2DIV=PMC**2
39771             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
39772      &      LOG(P2EFF/ALAMSQ(NFQ)))
39773             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
39774      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
39775             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
39776           ENDIF
39777           IF(NFQ.EQ.5.AND.NFP.EQ.3) THEN
39778             Q2DIV=PMC**2
39779             SNF4=(6D0/(33D0-2D0*4))*LOG(LOG(Q2DIV/ALAMSQ(4))/
39780      &      LOG(P2EFF/ALAMSQ(4)))
39781             SNF3=(6D0/(33D0-2D0*3))*LOG(LOG(Q2DIV/ALAMSQ(3))/
39782      &      LOG(P2EFF/ALAMSQ(3)))
39783             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNF3-SNF4)
39784           ENDIF
39785  
39786 C...u and s quark do not need a separate treatment when d has been done.
39787         ELSEIF(KFL.EQ.2.OR.KFL.EQ.3) THEN
39788  
39789 C...Charm: as above, but only include range above c threshold.
39790         ELSEIF(KFL.EQ.4) THEN
39791           IF(Q2.LE.PMC**2) GOTO 110
39792           P2EFF=MAX(P2EFF,PMC**2)
39793           Q2EFF=MAX(Q2EFF,P2EFF)
39794           TDIFF=LOG(Q2EFF/P2EFF)
39795           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
39796      &    LOG(P2EFF/ALAMSQ(NFQ)))
39797           IF(NFQ.EQ.5.AND.NFP.EQ.4) THEN
39798             Q2DIV=PMB**2
39799             SNFQ=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2DIV/ALAMSQ(NFQ))/
39800      &      LOG(P2EFF/ALAMSQ(NFQ)))
39801             SNFP=(6D0/(33D0-2D0*(NFQ-1)))*LOG(LOG(Q2DIV/ALAMSQ(NFQ-1))/
39802      &      LOG(P2EFF/ALAMSQ(NFQ-1)))
39803             S=S+(LOG(Q2DIV/P2EFF)/LOG(Q2EFF/P2EFF))*(SNFP-SNFQ)
39804           ENDIF
39805  
39806 C...Bottom: as above, but only include range above b threshold.
39807         ELSEIF(KFL.EQ.5) THEN
39808           IF(Q2.LE.PMB**2) GOTO 110
39809           P2EFF=MAX(P2EFF,PMB**2)
39810           Q2EFF=MAX(Q2,P2EFF)
39811           TDIFF=LOG(Q2EFF/P2EFF)
39812           S=(6D0/(33D0-2D0*NFQ))*LOG(LOG(Q2EFF/ALAMSQ(NFQ))/
39813      &    LOG(P2EFF/ALAMSQ(NFQ)))
39814         ENDIF
39815  
39816 C...Evaluate flavour-dependent prefactor (charge^2 etc.).
39817         CHSQ=1D0/9D0
39818         IF(KFL.EQ.2.OR.KFL.EQ.4) CHSQ=4D0/9D0
39819         FAC=AEM2PI*2D0*CHSQ*TDIFF
39820  
39821 C...Evaluate parton distributions (normalized to unit momentum sum).
39822         IF(KFL.EQ.1.OR.KFL.EQ.4.OR.KFL.EQ.5.OR.KFL.EQ.KF) THEN
39823           XVAL= ((1.5D0+2.49D0*S+26.9D0*S**2)/(1D0+32.3D0*S**2)*X**2 +
39824      &    (1.5D0-0.49D0*S+7.83D0*S**2)/(1D0+7.68D0*S**2)*(1D0-X)**2 +
39825      &    1.5D0*S/(1D0-3.2D0*S+7D0*S**2)*X*(1D0-X)) *
39826      &    X**(1D0/(1D0+0.58D0*S)) * (1D0-X**2)**(2.5D0*S/(1D0+10D0*S))
39827           XGLU= 2D0*S/(1D0+4D0*S+7D0*S**2) *
39828      &    X**(-1.67D0*S/(1D0+2D0*S)) * (1D0-X**2)**(1.2D0*S) *
39829      &    ((4D0*X**2+7D0*X+4D0)*(1D0-X)/3D0 - 2D0*X*(1D0+X)*XL)
39830           XSEA= 0.333D0*S**2/(1D0+4.90D0*S+4.69D0*S**2+21.4D0*S**3) *
39831      &    X**(-1.18D0*S/(1D0+1.22D0*S)) * (1D0-X)**(1.2D0*S) *
39832      &    ((8D0-73D0*X+62D0*X**2)*(1D0-X)/9D0 +
39833      &    (3D0-8D0*X**2/3D0)*X*XL + (2D0*X-1D0)*X*XL**2)
39834  
39835 C...Threshold factors for c and b sea.
39836           SLL=LOG(LOG(Q2EFF/ALAM**2)/LOG(P2EFF/ALAM**2))
39837           XCHM=0D0
39838           IF(Q2.GT.PMC**2.AND.Q2.GT.1.001D0*P2EFF) THEN
39839             SCH=MAX(0D0,LOG(LOG(PMC**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
39840             XCHM=XSEA*(1D0-(SCH/SLL)**3)
39841           ENDIF
39842           XBOT=0D0
39843           IF(Q2.GT.PMB**2.AND.Q2.GT.1.001D0*P2EFF) THEN
39844             SBT=MAX(0D0,LOG(LOG(PMB**2/ALAM**2)/LOG(P2EFF/ALAM**2)))
39845             XBOT=XSEA*(1D0-(SBT/SLL)**3)
39846           ENDIF
39847         ENDIF
39848  
39849 C...Add contribution of each valence flavour.
39850         XPGA(0)=XPGA(0)+FAC*XGLU
39851         XPGA(1)=XPGA(1)+FAC*XSEA
39852         XPGA(2)=XPGA(2)+FAC*XSEA
39853         XPGA(3)=XPGA(3)+FAC*XSEA
39854         XPGA(4)=XPGA(4)+FAC*XCHM
39855         XPGA(5)=XPGA(5)+FAC*XBOT
39856         XPGA(KFL)=XPGA(KFL)+FAC*XVAL
39857         VXPGA(KFL)=VXPGA(KFL)+FAC*XVAL
39858   110 CONTINUE
39859       DO 120 KFL=1,5
39860         XPGA(-KFL)=XPGA(KFL)
39861         VXPGA(-KFL)=VXPGA(KFL)
39862   120 CONTINUE
39863  
39864       RETURN
39865       END
39866  
39867  
39868 C*********************************************************************
39869  
39870 C...PYGBEH
39871 C...Evaluates the Bethe-Heitler cross section for heavy flavour
39872 C...production.
39873 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39874  
39875       SUBROUTINE PYGBEH(KF,X,Q2,P2,PM2,XPBH)
39876  
39877 C...Double precision and integer declarations.
39878       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39879       IMPLICIT INTEGER(I-N)
39880       INTEGER PYK,PYCHGE,PYCOMP
39881  
39882 C...Local data.
39883       DATA AEM2PI/0.0011614D0/
39884  
39885 C...Reset output.
39886       XPBH=0D0
39887       SIGBH=0D0
39888  
39889 C...Check kinematics limits.
39890       IF(X.GE.Q2/(4D0*PM2+Q2+P2)) RETURN
39891       W2=Q2*(1D0-X)/X-P2
39892       BETA2=1D0-4D0*PM2/W2
39893       IF(BETA2.LT.1D-10) RETURN
39894       BETA=SQRT(BETA2)
39895       RMQ=4D0*PM2/Q2
39896  
39897 C...Simple case: P2 = 0.
39898       IF(P2.LT.1D-4) THEN
39899         IF(BETA.LT.0.99D0) THEN
39900           XBL=LOG((1D0+BETA)/(1D0-BETA))
39901         ELSE
39902           XBL=LOG((1D0+BETA)**2*W2/(4D0*PM2))
39903         ENDIF
39904         SIGBH=BETA*(8D0*X*(1D0-X)-1D0-RMQ*X*(1D0-X))+
39905      &  XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)
39906  
39907 C...Complicated case: P2 > 0, based on approximation of
39908 C...C.T. Hill and G.G. Ross, Nucl. Phys. B148 (1979) 373
39909       ELSE
39910         RPQ=1D0-4D0*X**2*P2/Q2
39911         IF(RPQ.GT.1D-10) THEN
39912           RPBE=SQRT(RPQ*BETA2)
39913           IF(RPBE.LT.0.99D0) THEN
39914             XBL=LOG((1D0+RPBE)/(1D0-RPBE))
39915             XBI=2D0*RPBE/(1D0-RPBE**2)
39916           ELSE
39917             RPBESN=4D0*PM2/W2+(4D0*X**2*P2/Q2)*BETA2
39918             XBL=LOG((1D0+RPBE)**2/RPBESN)
39919             XBI=2D0*RPBE/RPBESN
39920           ENDIF
39921           SIGBH=BETA*(6D0*X*(1D0-X)-1D0)+
39922      &    XBL*(X**2+(1D0-X)**2+RMQ*X*(1D0-3D0*X)-0.5D0*RMQ**2*X**2)+
39923      &    XBI*(2D0*X/Q2)*(PM2*X*(2D0-RMQ)-P2*X)
39924         ENDIF
39925       ENDIF
39926  
39927 C...Multiply by charge-squared etc. to get parton distribution.
39928       CHSQ=1D0/9D0
39929       IF(IABS(KF).EQ.2.OR.IABS(KF).EQ.4) CHSQ=4D0/9D0
39930       XPBH=3D0*CHSQ*AEM2PI*X*SIGBH
39931  
39932       RETURN
39933       END
39934  
39935 C*********************************************************************
39936  
39937 C...PYGDIR
39938 C...Evaluates the direct contribution, i.e. the C^gamma term,
39939 C...as needed in MSbar parametrizations.
39940 C...Adapted from SaSgam library, authors G.A. Schuler and T. Sjostrand.
39941  
39942       SUBROUTINE PYGDIR(X,Q2,P2,Q02,XPGA)
39943  
39944 C...Double precision and integer declarations.
39945       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39946       IMPLICIT INTEGER(I-N)
39947       INTEGER PYK,PYCHGE,PYCOMP
39948 C...Local array and data.
39949       DIMENSION XPGA(-6:6)
39950       DATA PMC/1.3D0/, PMB/4.6D0/, AEM2PI/0.0011614D0/
39951  
39952 C...Reset output.
39953       DO 100 KFL=-6,6
39954         XPGA(KFL)=0D0
39955   100 CONTINUE
39956  
39957 C...Evaluate common x-dependent expression.
39958       XTMP = (X**2+(1D0-X)**2) * (-LOG(X)) - 1D0
39959       CGAM = 3D0*AEM2PI*X * (XTMP*(1D0+P2/(P2+Q02)) + 6D0*X*(1D0-X))
39960  
39961 C...d, u, s part by simple charge factor.
39962       XPGA(1)=(1D0/9D0)*CGAM
39963       XPGA(2)=(4D0/9D0)*CGAM
39964       XPGA(3)=(1D0/9D0)*CGAM
39965  
39966 C...Also fill for antiquarks.
39967       DO 110 KF=1,5
39968         XPGA(-KF)=XPGA(KF)
39969   110 CONTINUE
39970  
39971       RETURN
39972       END
39973  
39974 C*********************************************************************
39975  
39976 C...PYPDPI
39977 C...Gives pi+ parton distribution according to two different
39978 C...parametrizations.
39979  
39980       SUBROUTINE PYPDPI(X,Q2,XPPI)
39981  
39982 C...Double precision and integer declarations.
39983       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
39984       IMPLICIT INTEGER(I-N)
39985       INTEGER PYK,PYCHGE,PYCOMP
39986 C...Commonblocks.
39987       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
39988       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
39989       COMMON/PYINT1/MINT(400),VINT(400)
39990       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
39991 C...Local arrays.
39992       DIMENSION XPPI(-6:6),COW(3,5,4,2),XQ(9),TS(6)
39993  
39994 C...The following data lines are coefficients needed in the
39995 C...Owens pion parton distribution parametrizations, see below.
39996 C...Expansion coefficients for up and down valence quark distributions.
39997       DATA ((COW(IP,IS,1,1),IS=1,5),IP=1,3)/
39998      &4.0000D-01,  7.0000D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
39999      &-6.2120D-02,  6.4780D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
40000      &-7.1090D-03,  1.3350D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
40001       DATA ((COW(IP,IS,1,2),IS=1,5),IP=1,3)/
40002      &4.0000D-01,  6.2800D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
40003      &-5.9090D-02,  6.4360D-01,  0.0000D+00,  0.0000D+00,  0.0000D+00,
40004      &-6.5240D-03,  1.4510D-02,  0.0000D+00,  0.0000D+00,  0.0000D+00/
40005 C...Expansion coefficients for gluon distribution.
40006       DATA ((COW(IP,IS,2,1),IS=1,5),IP=1,3)/
40007      &8.8800D-01,  0.0000D+00,  3.1100D+00,  6.0000D+00,  0.0000D+00,
40008      &-1.8020D+00, -1.5760D+00, -1.3170D-01,  2.8010D+00, -1.7280D+01,
40009      &1.8120D+00,  1.2000D+00,  5.0680D-01, -1.2160D+01,  2.0490D+01/
40010       DATA ((COW(IP,IS,2,2),IS=1,5),IP=1,3)/
40011      &7.9400D-01,  0.0000D+00,  2.8900D+00,  6.0000D+00,  0.0000D+00,
40012      &-9.1440D-01, -1.2370D+00,  5.9660D-01, -3.6710D+00, -8.1910D+00,
40013      &5.9660D-01,  6.5820D-01, -2.5500D-01, -2.3040D+00,  7.7580D+00/
40014 C...Expansion coefficients for (up+down+strange) quark sea distribution.
40015       DATA ((COW(IP,IS,3,1),IS=1,5),IP=1,3)/
40016      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
40017      &-2.4280D-01, -2.1200D-01,  8.6730D-01,  1.2660D+00,  2.3820D+00,
40018      &1.3860D-01,  3.6710D-03,  4.7470D-02, -2.2150D+00,  3.4820D-01/
40019       DATA ((COW(IP,IS,3,2),IS=1,5),IP=1,3)/
40020      &9.0000D-01,  0.0000D+00,  5.0000D+00,  0.0000D+00,  0.0000D+00,
40021      &-1.4170D-01, -1.6970D-01, -2.4740D+00, -2.5340D+00,  5.6210D-01,
40022      &-1.7400D-01, -9.6230D-02,  1.5750D+00,  1.3780D+00, -2.7010D-01/
40023 C...Expansion coefficients for charm quark sea distribution.
40024       DATA ((COW(IP,IS,4,1),IS=1,5),IP=1,3)/
40025      &0.0000D+00, -2.2120D-02,  2.8940D+00,  0.0000D+00,  0.0000D+00,
40026      &7.9280D-02, -3.7850D-01,  9.4330D+00,  5.2480D+00,  8.3880D+00,
40027      &-6.1340D-02, -1.0880D-01, -1.0852D+01, -7.1870D+00, -1.1610D+01/
40028       DATA ((COW(IP,IS,4,2),IS=1,5),IP=1,3)/
40029      &0.0000D+00, -8.8200D-02,  1.9240D+00,  0.0000D+00,  0.0000D+00,
40030      &6.2290D-02, -2.8920D-01,  2.4240D-01, -4.4630D+00, -8.3670D-01,
40031      &-4.0990D-02, -1.0820D-01,  2.0360D+00,  5.2090D+00, -4.8400D-02/
40032  
40033 C...Euler's beta function, requires ordinary Gamma function
40034       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
40035  
40036 C...Reset output array.
40037       DO 100 KFL=-6,6
40038         XPPI(KFL)=0D0
40039   100 CONTINUE
40040  
40041       IF(MSTP(53).LE.2) THEN
40042 C...Pion parton distributions from Owens.
40043 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 2000 GeV^2.
40044  
40045 C...Determine set, Lambda and s expansion variable.
40046         NSET=MSTP(53)
40047         IF(NSET.EQ.1) ALAM=0.2D0
40048         IF(NSET.EQ.2) ALAM=0.4D0
40049         VINT(231)=4D0
40050         IF(MSTP(57).LE.0) THEN
40051           SD=0D0
40052         ELSE
40053           Q2IN=MIN(2D3,MAX(4D0,Q2))
40054           SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
40055         ENDIF
40056  
40057 C...Calculate parton distributions.
40058         DO 120 KFL=1,4
40059           DO 110 IS=1,5
40060             TS(IS)=COW(1,IS,KFL,NSET)+COW(2,IS,KFL,NSET)*SD+
40061      &      COW(3,IS,KFL,NSET)*SD**2
40062   110     CONTINUE
40063           IF(KFL.EQ.1) THEN
40064             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)/EULBET(TS(1),TS(2)+1D0)
40065           ELSE
40066             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
40067      &      TS(5)*X**2)
40068           ENDIF
40069   120   CONTINUE
40070  
40071 C...Put into output array.
40072         XPPI(0)=XQ(2)
40073         XPPI(1)=XQ(3)/6D0
40074         XPPI(2)=XQ(1)+XQ(3)/6D0
40075         XPPI(3)=XQ(3)/6D0
40076         XPPI(4)=XQ(4)
40077         XPPI(-1)=XQ(1)+XQ(3)/6D0
40078         XPPI(-2)=XQ(3)/6D0
40079         XPPI(-3)=XQ(3)/6D0
40080         XPPI(-4)=XQ(4)
40081  
40082 C...Leading order pion parton distributions from Glueck, Reya and Vogt.
40083 C...Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
40084 C...10^-5 < x < 1.
40085       ELSE
40086  
40087 C...Determine s expansion variable and some x expressions.
40088         VINT(231)=0.25D0
40089         IF(MSTP(57).LE.0) THEN
40090           SD=0D0
40091         ELSE
40092           Q2IN=MIN(1D8,MAX(0.25D0,Q2))
40093           SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
40094         ENDIF
40095         SD2=SD**2
40096         XL=-LOG(X)
40097         XS=SQRT(X)
40098  
40099 C...Evaluate valence, gluon and sea distributions.
40100         XFVAL=(0.519D0+0.180D0*SD-0.011D0*SD2)*X**(0.499D0-0.027D0*SD)*
40101      &  (1D0+(0.381D0-0.419D0*SD)*XS)*(1D0-X)**(0.367D0+0.563D0*SD)
40102         XFGLU=(X**(0.482D0+0.341D0*SQRT(SD))*((0.678D0+0.877D0*
40103      &  SD-0.175D0*SD2)+
40104      &  (0.338D0-1.597D0*SD)*XS+(-0.233D0*SD+0.406D0*SD2)*X)+
40105      &  SD**0.599D0*EXP(-(0.618D0+2.070D0*SD)+SQRT(3.676D0*SD**1.263D0*
40106      &  XL)))*
40107      &  (1D0-X)**(0.390D0+1.053D0*SD)
40108         XFSEA=SD**0.55D0*(1D0-0.748D0*XS+(0.313D0+0.935D0*SD)*X)*(1D0-
40109      &  X)**3.359D0*
40110      &  EXP(-(4.433D0+1.301D0*SD)+SQRT((9.30D0-0.887D0*SD)*SD**0.56D0*
40111      &  XL))/
40112      &  XL**(2.538D0-0.763D0*SD)
40113         IF(SD.LE.0.888D0) THEN
40114           XFCHM=0D0
40115         ELSE
40116           XFCHM=(SD-0.888D0)**1.02D0*(1D0+1.008D0*X)*(1D0-X)**(1.208D0+
40117      &    0.771D0*SD)*
40118      &    EXP(-(4.40D0+1.493D0*SD)+SQRT((2.032D0+1.901D0*SD)*SD**0.39D0*
40119      &    XL))
40120         ENDIF
40121         IF(SD.LE.1.351D0) THEN
40122           XFBOT=0D0
40123         ELSE
40124           XFBOT=(SD-1.351D0)**1.03D0*(1D0-X)**(0.697D0+0.855D0*SD)*
40125      &    EXP(-(4.51D0+1.490D0*SD)+SQRT((3.056D0+1.694D0*SD)*SD**0.39D0*
40126      &    XL))
40127         ENDIF
40128  
40129 C...Put into output array.
40130         XPPI(0)=XFGLU
40131         XPPI(1)=XFSEA
40132         XPPI(2)=XFSEA
40133         XPPI(3)=XFSEA
40134         XPPI(4)=XFCHM
40135         XPPI(5)=XFBOT
40136         DO 130 KFL=1,5
40137           XPPI(-KFL)=XPPI(KFL)
40138   130   CONTINUE
40139         XPPI(2)=XPPI(2)+XFVAL
40140         XPPI(-1)=XPPI(-1)+XFVAL
40141       ENDIF
40142  
40143       RETURN
40144       END
40145  
40146 C*********************************************************************
40147  
40148 C...PYPDPR
40149 C...Gives proton parton distributions according to a few different
40150 C...parametrizations.
40151  
40152       SUBROUTINE PYPDPR(X,Q2,XPPR)
40153  
40154 C...Double precision and integer declarations.
40155       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40156       IMPLICIT INTEGER(I-N)
40157       INTEGER PYK,PYCHGE,PYCOMP
40158 C...Commonblocks.
40159       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
40160       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
40161       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
40162       COMMON/PYINT1/MINT(400),VINT(400)
40163       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
40164 C...Arrays and data.
40165       DIMENSION XPPR(-6:6),Q2MIN(16)
40166       DATA Q2MIN/ 2.56D0, 2.56D0, 2.56D0, 0.4D0, 0.4D0, 0.4D0,
40167      &1.0D0, 1.0D0, 2*0D0, 0.25D0, 5D0, 5D0, 4D0, 4D0, 0D0/
40168  
40169 C...Reset output array.
40170       DO 100 KFL=-6,6
40171         XPPR(KFL)=0D0
40172   100 CONTINUE
40173  
40174 C...Common preliminaries.
40175       NSET=MAX(1,MIN(16,MSTP(51)))
40176       IF(NSET.EQ.9.OR.NSET.EQ.10) NSET=6
40177       VINT(231)=Q2MIN(NSET)
40178       IF(MSTP(57).EQ.0) THEN
40179         Q2L=Q2MIN(NSET)
40180       ELSE
40181         Q2L=MAX(Q2MIN(NSET),Q2)
40182       ENDIF
40183  
40184       IF(NSET.GE.1.AND.NSET.LE.3) THEN
40185 C...Interface to the CTEQ 3 parton distributions.
40186         QRT=SQRT(MAX(1D0,Q2L))
40187  
40188 C...Loop over flavours.
40189         DO 110 I=-6,6
40190           IF(I.LE.0) THEN
40191             XPPR(I)=PYCTEQ(NSET,I,X,QRT)
40192           ELSEIF(I.LE.2) THEN
40193             XPPR(I)=PYCTEQ(NSET,I,X,QRT)+XPPR(-I)
40194           ELSE
40195             XPPR(I)=XPPR(-I)
40196           ENDIF
40197   110   CONTINUE
40198  
40199       ELSEIF(NSET.GE.4.AND.NSET.LE.6) THEN
40200 C...Interface to the GRV 94 distributions.
40201         IF(NSET.EQ.4) THEN
40202           CALL PYGRVL (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
40203         ELSEIF(NSET.EQ.5) THEN
40204           CALL PYGRVM (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
40205         ELSE
40206           CALL PYGRVD (X, Q2L, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
40207         ENDIF
40208  
40209 C...Put into output array.
40210         XPPR(0)=GL
40211         XPPR(-1)=0.5D0*(UDB+DEL)
40212         XPPR(-2)=0.5D0*(UDB-DEL)
40213         XPPR(-3)=SB
40214         XPPR(-4)=CHM
40215         XPPR(-5)=BOT
40216         XPPR(1)=DV+XPPR(-1)
40217         XPPR(2)=UV+XPPR(-2)
40218         XPPR(3)=SB
40219         XPPR(4)=CHM
40220         XPPR(5)=BOT
40221  
40222       ELSEIF(NSET.EQ.7) THEN
40223 C...Interface to the CTEQ 5L parton distributions.
40224 C...Range of validity 10^-6 < x < 1, 1 < Q < 10^4 extended by
40225 C...freezing x*f(x,Q2) at borders.
40226         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
40227         XIN=MAX(1D-6,MIN(1D0,X))
40228  
40229 C...Loop over flavours (with u <-> d notation mismatch).
40230         SUMUDB=PYCT5L(-1,XIN,QRT)
40231         RATUDB=PYCT5L(-2,XIN,QRT)
40232         DO 120 I=-5,2
40233           IF(I.EQ.1) THEN
40234             XPPR(I)=XIN*PYCT5L(2,XIN,QRT)
40235           ELSEIF(I.EQ.2) THEN
40236             XPPR(I)=XIN*PYCT5L(1,XIN,QRT)
40237           ELSEIF(I.EQ.-1) THEN
40238             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
40239           ELSEIF(I.EQ.-2) THEN
40240             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
40241           ELSE
40242             XPPR(I)=XIN*PYCT5L(I,XIN,QRT)
40243             IF(I.LT.0) XPPR(-I)=XPPR(I)
40244           ENDIF
40245   120   CONTINUE
40246  
40247       ELSEIF(NSET.EQ.8) THEN
40248 C...Interface to the CTEQ 5M1 parton distributions.
40249         QRT=SQRT(MAX(1D0,MIN(1D8,Q2L)))
40250         XIN=MAX(1D-6,MIN(1D0,X))
40251  
40252 C...Loop over flavours (with u <-> d notation mismatch).
40253         SUMUDB=PYCT5M(-1,XIN,QRT)
40254         RATUDB=PYCT5M(-2,XIN,QRT)
40255         DO 130 I=-5,2
40256           IF(I.EQ.1) THEN
40257             XPPR(I)=XIN*PYCT5M(2,XIN,QRT)
40258           ELSEIF(I.EQ.2) THEN
40259             XPPR(I)=XIN*PYCT5M(1,XIN,QRT)
40260           ELSEIF(I.EQ.-1) THEN
40261             XPPR(I)=XIN*SUMUDB*RATUDB/(1D0+RATUDB)
40262           ELSEIF(I.EQ.-2) THEN
40263             XPPR(I)=XIN*SUMUDB/(1D0+RATUDB)
40264           ELSE
40265             XPPR(I)=XIN*PYCT5M(I,XIN,QRT)
40266             IF(I.LT.0) XPPR(-I)=XPPR(I)
40267           ENDIF
40268   130   CONTINUE
40269  
40270       ELSEIF(NSET.GE.11.AND.NSET.LE.15) THEN
40271 C...GRV92LO, EHLQ1, EHLQ2, DO1 AND DO2 distributions:
40272 C...obsolete but offers backwards compatibility.
40273         CALL PYPDPO(X,Q2L,XPPR)
40274  
40275 C...Symmetric choice for debugging only
40276       ELSEIF(NSET.EQ.16) THEN
40277         XPPR(0)=.5D0/X
40278         XPPR(1)=.05D0/X
40279         XPPR(2)=.05D0/X
40280         XPPR(3)=.05D0/X
40281         XPPR(4)=.05D0/X
40282         XPPR(5)=.05D0/X
40283         XPPR(-1)=.05D0/X
40284         XPPR(-2)=.05D0/X
40285         XPPR(-3)=.05D0/X
40286         XPPR(-4)=.05D0/X
40287         XPPR(-5)=.05D0/X
40288  
40289       ENDIF
40290  
40291       RETURN
40292       END
40293  
40294 C*********************************************************************
40295  
40296 C...PYCTEQ
40297 C...Gives the CTEQ 3 parton distribution function sets in
40298 C...parametrized form, of October 24, 1994.
40299 C...Authors: H.L. Lai, J. Botts, J. Huston, J.G. Morfin, J.F. Owens,
40300 C...J. Qiu, W.K. Tung and H. Weerts.
40301  
40302       FUNCTION PYCTEQ (ISET, IPRT, X, Q)
40303  
40304 C...Double precision declaration.
40305       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
40306       IMPLICIT INTEGER(I-N)
40307  
40308 C...Data on Lambda values of fits, minimum Q and quark masses.
40309       DIMENSION ALM(3), QMS(4:6)
40310       DATA ALM / 0.177D0, 0.239D0, 0.247D0 /
40311       DATA QMN / 1.60D0 /, (QMS(I), I=4,6) / 1.60D0, 5.00D0, 180.0D0 /
40312  
40313 C....Check flavour thresholds. Set up QI for SB.
40314       IP = IABS(IPRT)
40315       IF(IP .GE. 4) THEN
40316         IF(Q .LE. QMS(IP)) THEN
40317           PYCTEQ = 0D0
40318           RETURN
40319         ENDIF
40320         QI = QMS(IP)
40321       ELSE
40322         QI = QMN
40323       ENDIF
40324  
40325 C...Use "standard lambda" of parametrization program for expansion.
40326       ALAM = ALM (ISET)
40327       SBL = LOG(Q/ALAM) / LOG(QI/ALAM)
40328       SB = LOG (SBL)
40329       SB2 = SB*SB
40330       SB3 = SB2*SB
40331  
40332 C...Expansion for CTEQ3L.
40333       IF(ISET .EQ. 1) THEN
40334         IF(IPRT .EQ. 2) THEN
40335           A0=Exp( 0.1907D+00+0.4205D-01*SB +0.2752D+00*SB2-
40336      &    0.3171D+00*SB3)
40337           A1= 0.4611D+00+0.2331D-01*SB -0.3403D-01*SB2+0.3174D-01*SB3
40338           A2= 0.3504D+01+0.5739D+00*SB +0.2676D+00*SB2-0.1553D+00*SB3
40339           A3= 0.7452D+01-0.6742D+01*SB +0.2849D+01*SB2-0.1964D+00*SB3
40340           A4= 0.1116D+01-0.3435D+00*SB +0.2865D+00*SB2-0.1288D+00*SB3
40341           A5= 0.6659D-01+0.2714D+00*SB -0.2688D+00*SB2+0.2763D+00*SB3
40342         ELSEIF(IPRT .EQ. 1) THEN
40343           A0=Exp( 0.1141D+00+0.4764D+00*SB -0.1745D+01*SB2+
40344      &    0.7728D+00*SB3)
40345           A1= 0.4275D+00-0.1290D+00*SB +0.3609D+00*SB2-0.1689D+00*SB3
40346           A2= 0.3000D+01+0.2946D+01*SB -0.4117D+01*SB2+0.1989D+01*SB3
40347           A3=-0.1302D+01+0.2322D+01*SB -0.4258D+01*SB2+0.2109D+01*SB3
40348           A4= 0.2586D+01-0.1920D+00*SB -0.3754D+00*SB2+0.2731D+00*SB3
40349           A5=-0.2251D+00-0.5374D+00*SB +0.2245D+01*SB2-0.1034D+01*SB3
40350         ELSEIF(IPRT .EQ. 0) THEN
40351           A0=Exp(-0.7631D+00-0.7241D+00*SB -0.1170D+01*SB2+
40352      &    0.5343D+00*SB3)
40353           A1=-0.3573D+00+0.3469D+00*SB -0.3396D+00*SB2+0.9188D-01*SB3
40354           A2= 0.5604D+01+0.7458D+00*SB -0.5082D+00*SB2+0.1844D+00*SB3
40355           A3= 0.1549D+02-0.1809D+02*SB +0.1162D+02*SB2-0.3483D+01*SB3
40356           A4= 0.9881D+00+0.1364D+00*SB -0.4421D+00*SB2+0.2051D+00*SB3
40357           A5=-0.9505D-01+0.3259D+01*SB -0.1547D+01*SB2+0.2918D+00*SB3
40358         ELSEIF(IPRT .EQ. -1) THEN
40359           A0=Exp(-0.2449D+01-0.3513D+01*SB +0.4529D+01*SB2-
40360      &    0.2031D+01*SB3)
40361           A1=-0.4050D+00+0.3411D+00*SB -0.3669D+00*SB2+0.1109D+00*SB3
40362           A2= 0.7470D+01-0.2982D+01*SB +0.5503D+01*SB2-0.2419D+01*SB3
40363           A3= 0.1503D+02+0.1638D+01*SB -0.8772D+01*SB2+0.3852D+01*SB3
40364           A4= 0.1137D+01-0.1006D+01*SB +0.1485D+01*SB2-0.6389D+00*SB3
40365           A5=-0.5299D+00+0.3160D+01*SB -0.3104D+01*SB2+0.1219D+01*SB3
40366         ELSEIF(IPRT .EQ. -2) THEN
40367           A0=Exp(-0.2740D+01-0.7987D-01*SB -0.9015D+00*SB2-
40368      &    0.9872D-01*SB3)
40369           A1=-0.3909D+00+0.1244D+00*SB -0.4487D-01*SB2+0.1277D-01*SB3
40370           A2= 0.9163D+01+0.2823D+00*SB -0.7720D+00*SB2-0.9360D-02*SB3
40371           A3= 0.1080D+02-0.3915D+01*SB -0.1153D+01*SB2+0.2649D+01*SB3
40372           A4= 0.9894D+00-0.1647D+00*SB -0.9426D-02*SB2+0.2945D-02*SB3
40373           A5=-0.3395D+00+0.6998D+00*SB +0.7000D+00*SB2-0.6730D-01*SB3
40374         ELSEIF(IPRT .EQ. -3) THEN
40375           A0=Exp(-0.3640D+01+0.1250D+01*SB -0.2914D+01*SB2+
40376      &    0.8390D+00*SB3)
40377           A1=-0.3595D+00-0.5259D-01*SB +0.3122D+00*SB2-0.1642D+00*SB3
40378           A2= 0.7305D+01+0.9727D+00*SB -0.9788D+00*SB2-0.5193D-01*SB3
40379           A3= 0.1198D+02-0.1799D+02*SB +0.2614D+02*SB2-0.1091D+02*SB3
40380           A4= 0.9882D+00-0.6101D+00*SB +0.9737D+00*SB2-0.4935D+00*SB3
40381           A5=-0.1186D+00-0.3231D+00*SB +0.3074D+01*SB2-0.1274D+01*SB3
40382         ELSEIF(IPRT .EQ. -4) THEN
40383           A0=SB** 0.1122D+01*Exp(-0.3718D+01-0.1335D+01*SB +
40384      &    0.1651D-01*SB2)
40385           A1=-0.4719D+00+0.7509D+00*SB -0.8420D+00*SB2+0.2901D+00*SB3
40386           A2= 0.6194D+01-0.1641D+01*SB +0.4907D+01*SB2-0.2523D+01*SB3
40387           A3= 0.4426D+01-0.4270D+01*SB +0.6581D+01*SB2-0.3474D+01*SB3
40388           A4= 0.2683D+00+0.9876D+00*SB -0.7612D+00*SB2+0.1780D+00*SB3
40389           A5=-0.4547D+00+0.4410D+01*SB -0.3712D+01*SB2+0.1245D+01*SB3
40390         ELSEIF(IPRT .EQ. -5) THEN
40391           A0=SB** 0.9838D+00*Exp(-0.2548D+01-0.7660D+01*SB +
40392      &    0.3702D+01*SB2)
40393           A1=-0.3122D+00-0.2120D+00*SB +0.5716D+00*SB2-0.3773D+00*SB3
40394           A2= 0.6257D+01-0.8214D-01*SB -0.2537D+01*SB2+0.2981D+01*SB3
40395           A3=-0.6723D+00+0.2131D+01*SB +0.9599D+01*SB2-0.7910D+01*SB3
40396           A4= 0.9169D-01+0.4295D-01*SB -0.5017D+00*SB2+0.3811D+00*SB3
40397           A5= 0.2402D+00+0.2656D+01*SB -0.1586D+01*SB2+0.2880D+00*SB3
40398         ELSEIF(IPRT .EQ. -6) THEN
40399           A0=SB** 0.1001D+01*Exp(-0.6934D+01+0.3050D+01*SB -
40400      &    0.6943D+00*SB2)
40401           A1=-0.1713D+00-0.5167D+00*SB +0.1241D+01*SB2-0.1703D+01*SB3
40402           A2= 0.6169D+01+0.3023D+01*SB -0.1972D+02*SB2+0.1069D+02*SB3
40403           A3= 0.4439D+01-0.1746D+02*SB +0.1225D+02*SB2+0.8350D+00*SB3
40404           A4= 0.5458D+00-0.4586D+00*SB +0.9089D+00*SB2-0.4049D+00*SB3
40405           A5= 0.3207D+01-0.3362D+01*SB +0.5877D+01*SB2-0.7659D+01*SB3
40406         ENDIF
40407  
40408 C...Expansion for CTEQ3M.
40409       ELSEIF(ISET .EQ. 2) THEN
40410         IF(IPRT .EQ. 2) THEN
40411           A0=Exp( 0.2259D+00+0.1237D+00*SB +0.3035D+00*SB2-
40412      &    0.2935D+00*SB3)
40413           A1= 0.5085D+00+0.1651D-01*SB -0.3592D-01*SB2+0.2782D-01*SB3
40414           A2= 0.3732D+01+0.4901D+00*SB +0.2218D+00*SB2-0.1116D+00*SB3
40415           A3= 0.7011D+01-0.6620D+01*SB +0.2557D+01*SB2-0.1360D+00*SB3
40416           A4= 0.8969D+00-0.2429D+00*SB +0.1811D+00*SB2-0.6888D-01*SB3
40417           A5= 0.8636D-01+0.2558D+00*SB -0.3082D+00*SB2+0.2535D+00*SB3
40418         ELSEIF(IPRT .EQ. 1) THEN
40419           A0=Exp(-0.7266D+00-0.1584D+01*SB +0.1259D+01*SB2-
40420      &    0.4305D-01*SB3)
40421           A1= 0.5285D+00-0.3721D+00*SB +0.5150D+00*SB2-0.1697D+00*SB3
40422           A2= 0.4075D+01+0.8282D+00*SB -0.4496D+00*SB2+0.2107D+00*SB3
40423           A3= 0.3279D+01+0.5066D+01*SB -0.9134D+01*SB2+0.2897D+01*SB3
40424           A4= 0.4399D+00-0.5888D+00*SB +0.4802D+00*SB2-0.1664D+00*SB3
40425           A5= 0.3678D+00-0.8929D+00*SB +0.1592D+01*SB2-0.5713D+00*SB3
40426         ELSEIF(IPRT .EQ. 0) THEN
40427           A0=Exp(-0.2318D+00-0.9779D+00*SB -0.3783D+00*SB2+
40428      &    0.1037D-01*SB3)
40429           A1=-0.2916D+00+0.1754D+00*SB -0.1884D+00*SB2+0.6116D-01*SB3
40430           A2= 0.5349D+01+0.7460D+00*SB +0.2319D+00*SB2-0.2622D+00*SB3
40431           A3= 0.6920D+01-0.3454D+01*SB +0.2027D+01*SB2-0.7626D+00*SB3
40432           A4= 0.1013D+01+0.1423D+00*SB -0.1798D+00*SB2+0.1872D-01*SB3
40433           A5=-0.5465D-01+0.2303D+01*SB -0.9584D+00*SB2+0.3098D+00*SB3
40434         ELSEIF(IPRT .EQ. -1) THEN
40435           A0=Exp(-0.2328D+01-0.3061D+01*SB +0.3620D+01*SB2-
40436      &    0.1602D+01*SB3)
40437           A1=-0.3358D+00+0.3198D+00*SB -0.4210D+00*SB2+0.1571D+00*SB3
40438           A2= 0.8478D+01-0.3112D+01*SB +0.5243D+01*SB2-0.2255D+01*SB3
40439           A3= 0.1971D+02+0.3389D+00*SB -0.5268D+01*SB2+0.2099D+01*SB3
40440           A4= 0.1128D+01-0.4701D+00*SB +0.7779D+00*SB2-0.3506D+00*SB3
40441           A5=-0.4708D+00+0.3341D+01*SB -0.3375D+01*SB2+0.1353D+01*SB3
40442         ELSEIF(IPRT .EQ. -2) THEN
40443           A0=Exp(-0.2906D+01-0.1069D+00*SB -0.1055D+01*SB2+
40444      &    0.2496D+00*SB3)
40445           A1=-0.2875D+00+0.6571D-01*SB -0.1987D-01*SB2-0.1800D-02*SB3
40446           A2= 0.9854D+01-0.2715D+00*SB -0.7407D+00*SB2+0.2888D+00*SB3
40447           A3= 0.1583D+02-0.7687D+01*SB +0.3428D+01*SB2-0.3327D+00*SB3
40448           A4= 0.9763D+00+0.7599D-01*SB -0.2128D+00*SB2+0.6852D-01*SB3
40449           A5=-0.8444D-02+0.9434D+00*SB +0.4152D+00*SB2-0.1481D+00*SB3
40450         ELSEIF(IPRT .EQ. -3) THEN
40451           A0=Exp(-0.3780D+01+0.2499D+01*SB -0.4962D+01*SB2+
40452      &    0.1936D+01*SB3)
40453           A1=-0.2639D+00-0.1575D+00*SB +0.3584D+00*SB2-0.1646D+00*SB3
40454           A2= 0.8082D+01+0.2794D+01*SB -0.5438D+01*SB2+0.2321D+01*SB3
40455           A3= 0.1811D+02-0.2000D+02*SB +0.1951D+02*SB2-0.6904D+01*SB3
40456           A4= 0.9822D+00+0.4972D+00*SB -0.8690D+00*SB2+0.3415D+00*SB3
40457           A5= 0.1772D+00-0.6078D+00*SB +0.3341D+01*SB2-0.1473D+01*SB3
40458         ELSEIF(IPRT .EQ. -4) THEN
40459           A0=SB** 0.1122D+01*Exp(-0.4232D+01-0.1808D+01*SB +
40460      &    0.5348D+00*SB2)
40461           A1=-0.2824D+00+0.5846D+00*SB -0.7230D+00*SB2+0.2419D+00*SB3
40462           A2= 0.5683D+01-0.2948D+01*SB +0.5916D+01*SB2-0.2560D+01*SB3
40463           A3= 0.2051D+01+0.4795D+01*SB -0.4271D+01*SB2+0.4174D+00*SB3
40464           A4= 0.1737D+00+0.1717D+01*SB -0.1978D+01*SB2+0.6643D+00*SB3
40465           A5= 0.8689D+00+0.3500D+01*SB -0.3283D+01*SB2+0.1026D+01*SB3
40466         ELSEIF(IPRT .EQ. -5) THEN
40467           A0=SB** 0.9906D+00*Exp(-0.1496D+01-0.6576D+01*SB +
40468      &    0.1569D+01*SB2)
40469           A1=-0.2140D+00-0.6419D-01*SB -0.2741D-02*SB2+0.3185D-02*SB3
40470           A2= 0.5781D+01+0.1049D+00*SB -0.3930D+00*SB2+0.5174D+00*SB3
40471           A3=-0.9420D+00+0.5511D+00*SB +0.8817D+00*SB2+0.1903D+01*SB3
40472           A4= 0.2418D-01+0.4232D-01*SB -0.1244D-01*SB2-0.2365D-01*SB3
40473           A5= 0.7664D+00+0.1794D+01*SB -0.4917D+00*SB2-0.1284D+00*SB3
40474         ELSEIF(IPRT .EQ. -6) THEN
40475           A0=SB** 0.1000D+01*Exp(-0.8460D+01+0.1154D+01*SB +
40476      &    0.8838D+01*SB2)
40477           A1=-0.4316D-01-0.2976D+00*SB +0.3174D+00*SB2-0.1429D+01*SB3
40478           A2= 0.4910D+01+0.2273D+01*SB +0.5631D+01*SB2-0.1994D+02*SB3
40479           A3= 0.1190D+02-0.2000D+02*SB -0.2000D+02*SB2+0.1292D+02*SB3
40480           A4= 0.5771D+00-0.2552D+00*SB +0.7510D+00*SB2+0.6923D+00*SB3
40481           A5= 0.4402D+01-0.1627D+01*SB -0.2085D+01*SB2-0.6737D+01*SB3
40482         ENDIF
40483  
40484 C...Expansion for CTEQ3D.
40485       ELSEIF(ISET .EQ. 3) THEN
40486         IF(IPRT .EQ. 2) THEN
40487           A0=Exp( 0.2148D+00+0.5814D-01*SB +0.2734D+00*SB2-
40488      &    0.2902D+00*SB3)
40489           A1= 0.4810D+00+0.1657D-01*SB -0.3800D-01*SB2+0.3125D-01*SB3
40490           A2= 0.3509D+01+0.3923D+00*SB +0.4010D+00*SB2-0.1932D+00*SB3
40491           A3= 0.7055D+01-0.6552D+01*SB +0.3466D+01*SB2-0.5657D+00*SB3
40492           A4= 0.1061D+01-0.3453D+00*SB +0.4089D+00*SB2-0.1817D+00*SB3
40493           A5= 0.8687D-01+0.2548D+00*SB -0.2967D+00*SB2+0.2647D+00*SB3
40494         ELSEIF(IPRT .EQ. 1) THEN
40495           A0=Exp( 0.3961D+00+0.4914D+00*SB -0.1728D+01*SB2+
40496      &    0.7257D+00*SB3)
40497           A1= 0.4162D+00-0.1419D+00*SB +0.3680D+00*SB2-0.1618D+00*SB3
40498           A2= 0.3248D+01+0.3028D+01*SB -0.4307D+01*SB2+0.1920D+01*SB3
40499           A3=-0.1100D+01+0.2184D+01*SB -0.3820D+01*SB2+0.1717D+01*SB3
40500           A4= 0.2082D+01-0.2756D+00*SB +0.3043D+00*SB2-0.1260D+00*SB3
40501           A5=-0.4822D+00-0.5706D+00*SB +0.2243D+01*SB2-0.9760D+00*SB3
40502         ELSEIF(IPRT .EQ. 0) THEN
40503           A0=Exp(-0.4665D+00-0.7554D+00*SB -0.3323D+00*SB2-
40504      &    0.2734D-04*SB3)
40505           A1=-0.3359D+00+0.2395D+00*SB -0.2377D+00*SB2+0.7059D-01*SB3
40506           A2= 0.5451D+01+0.6086D+00*SB +0.8606D-01*SB2-0.1425D+00*SB3
40507           A3= 0.1026D+02-0.9352D+01*SB +0.4879D+01*SB2-0.1150D+01*SB3
40508           A4= 0.9935D+00-0.5017D-01*SB -0.1707D-01*SB2-0.1464D-02*SB3
40509           A5=-0.4160D-01+0.2305D+01*SB -0.1063D+01*SB2+0.3211D+00*SB3
40510         ELSEIF(IPRT .EQ. -1) THEN
40511           A0=Exp(-0.2714D+01-0.2868D+01*SB +0.3700D+01*SB2-
40512      &    0.1671D+01*SB3)
40513           A1=-0.3893D+00+0.3341D+00*SB -0.3897D+00*SB2+0.1420D+00*SB3
40514           A2= 0.8359D+01-0.3267D+01*SB +0.5327D+01*SB2-0.2245D+01*SB3
40515           A3= 0.2359D+02-0.5669D+01*SB -0.4602D+01*SB2+0.3153D+01*SB3
40516           A4= 0.1106D+01-0.4745D+00*SB +0.7739D+00*SB2-0.3417D+00*SB3
40517           A5=-0.5557D+00+0.3433D+01*SB -0.3390D+01*SB2+0.1354D+01*SB3
40518         ELSEIF(IPRT .EQ. -2) THEN
40519           A0=Exp(-0.3323D+01+0.2296D+00*SB -0.1109D+01*SB2+
40520      &    0.2223D+00*SB3)
40521           A1=-0.3410D+00+0.8847D-01*SB -0.1111D-01*SB2-0.5927D-02*SB3
40522           A2= 0.9753D+01-0.5182D+00*SB -0.4670D+00*SB2+0.1921D+00*SB3
40523           A3= 0.1977D+02-0.1600D+02*SB +0.9481D+01*SB2-0.1864D+01*SB3
40524           A4= 0.9818D+00+0.2839D-02*SB -0.1188D+00*SB2+0.3584D-01*SB3
40525           A5=-0.7934D-01+0.1004D+01*SB +0.3704D+00*SB2-0.1220D+00*SB3
40526         ELSEIF(IPRT .EQ. -3) THEN
40527           A0=Exp(-0.3985D+01+0.2855D+01*SB -0.5208D+01*SB2+
40528      &    0.1937D+01*SB3)
40529           A1=-0.3337D+00-0.1150D+00*SB +0.3691D+00*SB2-0.1709D+00*SB3
40530           A2= 0.7968D+01+0.3641D+01*SB -0.6599D+01*SB2+0.2642D+01*SB3
40531           A3= 0.1873D+02-0.1999D+02*SB +0.1734D+02*SB2-0.5813D+01*SB3
40532           A4= 0.9731D+00+0.5082D+00*SB -0.8780D+00*SB2+0.3231D+00*SB3
40533           A5=-0.5542D-01-0.4189D+00*SB +0.3309D+01*SB2-0.1439D+01*SB3
40534         ELSEIF(IPRT .EQ. -4) THEN
40535           A0=SB** 0.1105D+01*Exp(-0.3952D+01-0.1901D+01*SB +
40536      &    0.5137D+00*SB2)
40537           A1=-0.3543D+00+0.6055D+00*SB -0.6941D+00*SB2+0.2278D+00*SB3
40538           A2= 0.5955D+01-0.2629D+01*SB +0.5337D+01*SB2-0.2300D+01*SB3
40539           A3= 0.1933D+01+0.4882D+01*SB -0.3810D+01*SB2+0.2290D+00*SB3
40540           A4= 0.1806D+00+0.1655D+01*SB -0.1893D+01*SB2+0.6395D+00*SB3
40541           A5= 0.4790D+00+0.3612D+01*SB -0.3152D+01*SB2+0.9684D+00*SB3
40542         ELSEIF(IPRT .EQ. -5) THEN
40543           A0=SB** 0.9818D+00*Exp(-0.1825D+01-0.7464D+01*SB +
40544      &    0.2143D+01*SB2)
40545           A1=-0.2604D+00-0.1400D+00*SB +0.1702D+00*SB2-0.8476D-01*SB3
40546           A2= 0.6005D+01+0.6275D+00*SB -0.2535D+01*SB2+0.2219D+01*SB3
40547           A3=-0.9067D+00+0.1149D+01*SB +0.1974D+01*SB2+0.4716D+01*SB3
40548           A4= 0.3915D-01+0.5945D-01*SB -0.9844D-01*SB2+0.2783D-01*SB3
40549           A5= 0.5500D+00+0.1994D+01*SB -0.6727D+00*SB2-0.1510D+00*SB3
40550         ELSEIF(IPRT .EQ. -6) THEN
40551           A0=SB** 0.1002D+01*Exp(-0.8553D+01+0.3793D+00*SB +
40552      &    0.9998D+01*SB2)
40553           A1=-0.5870D-01-0.2792D+00*SB +0.6526D+00*SB2-0.1984D+01*SB3
40554           A2= 0.4716D+01+0.4473D+00*SB +0.1128D+02*SB2-0.1937D+02*SB3
40555           A3= 0.1289D+02-0.1742D+02*SB -0.1983D+02*SB2-0.9274D+00*SB3
40556           A4= 0.5647D+00-0.2732D+00*SB +0.1074D+01*SB2+0.5981D+00*SB3
40557           A5= 0.4390D+01-0.1262D+01*SB -0.9026D+00*SB2-0.9394D+01*SB3
40558         ENDIF
40559       ENDIF
40560  
40561 C...Calculation of x * f(x, Q).
40562       PYCTEQ = MAX(0D0, A0 *(X**A1) *((1D0-X)**A2) *(1D0+A3*(X**A4))
40563      &   *(LOG(1D0+1D0/X))**A5 )
40564  
40565       RETURN
40566       END
40567  
40568 C*********************************************************************
40569  
40570 C...PYGRVL
40571 C...Gives the GRV 94 L (leading order) parton distribution function set
40572 C...in parametrized form.
40573 C...Authors: M. Glueck, E. Reya and A. Vogt.
40574  
40575       SUBROUTINE PYGRVL (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
40576  
40577 C...Double precision declaration.
40578       IMPLICIT DOUBLE PRECISION (A - Z)
40579  
40580 C...Common expressions.
40581       MU2  = 0.23D0
40582       LAM2 = 0.2322D0 * 0.2322D0
40583       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
40584       DS = SQRT (S)
40585       S2 = S * S
40586       S3 = S2 * S
40587  
40588 C...uv :
40589       NU  =  2.284D0 + 0.802D0 * S + 0.055D0 * S2
40590       AKU =  0.590D0 - 0.024D0 * S
40591       BKU =  0.131D0 + 0.063D0 * S
40592       AU  = -0.449D0 - 0.138D0 * S - 0.076D0 * S2
40593       BU  =  0.213D0 + 2.669D0 * S - 0.728D0 * S2
40594       CU  =  8.854D0 - 9.135D0 * S + 1.979D0 * S2
40595       DU  =  2.997D0 + 0.753D0 * S - 0.076D0 * S2
40596       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
40597  
40598 C...dv :
40599       ND  =  0.371D0 + 0.083D0 * S + 0.039D0 * S2
40600       AKD =  0.376D0
40601       BKD =  0.486D0 + 0.062D0 * S
40602       AD  = -0.509D0 + 3.310D0 * S - 1.248D0 * S2
40603       BD  =  12.41D0 - 10.52D0 * S + 2.267D0 * S2
40604       CD  =  6.373D0 - 6.208D0 * S + 1.418D0 * S2
40605       DD  =  3.691D0 + 0.799D0 * S - 0.071D0 * S2
40606       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
40607  
40608 C...del :
40609       NE  =  0.082D0 + 0.014D0 * S + 0.008D0 * S2
40610       AKE =  0.409D0 - 0.005D0 * S
40611       BKE =  0.799D0 + 0.071D0 * S
40612       AE  = -38.07D0 + 36.13D0 * S - 0.656D0 * S2
40613       BE  =  90.31D0 - 74.15D0 * S + 7.645D0 * S2
40614       CE  =  0.0D0
40615       DE  =  7.486D0 + 1.217D0 * S - 0.159D0 * S2
40616       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
40617  
40618 C...udb :
40619       ALX =  1.451D0
40620       BEX =  0.271D0
40621       AKX =  0.410D0 - 0.232D0 * S
40622       BKX =  0.534D0 - 0.457D0 * S
40623       AGX =  0.890D0 - 0.140D0 * S
40624       BGX = -0.981D0
40625       CX  =  0.320D0 + 0.683D0 * S
40626       DX  =  4.752D0 + 1.164D0 * S + 0.286D0 * S2
40627       EX  =  4.119D0 + 1.713D0 * S
40628       ESX =  0.682D0 + 2.978D0 * S
40629       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
40630      & DX, EX, ESX)
40631  
40632 C...sb :
40633       STS =  0D0
40634       ALS =  0.914D0
40635       BES =  0.577D0
40636       AKS =  1.798D0 - 0.596D0 * S
40637       AS  = -5.548D0 + 3.669D0 * DS - 0.616D0 * S
40638       BS  =  18.92D0 - 16.73D0 * DS + 5.168D0 * S
40639       DST =  6.379D0 - 0.350D0 * S  + 0.142D0 * S2
40640       EST =  3.981D0 + 1.638D0 * S
40641       ESS =  6.402D0
40642       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
40643  
40644 C...cb :
40645       STC =  0.888D0
40646       ALC =  1.01D0
40647       BEC =  0.37D0
40648       AKC =  0D0
40649       AC  =  0D0
40650       BC  =  4.24D0  - 0.804D0 * S
40651       DCT =  3.46D0  - 1.076D0 * S
40652       ECT =  4.61D0  + 1.49D0  * S
40653       ESC =  2.555D0 + 1.961D0 * S
40654       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
40655  
40656 C...bb :
40657       STB =  1.351D0
40658       ALB =  1.00D0
40659       BEB =  0.51D0
40660       AKB =  0D0
40661       AB  =  0D0
40662       BB  =  1.848D0
40663       DBT =  2.929D0 + 1.396D0 * S
40664       EBT =  4.71D0  + 1.514D0 * S
40665       ESB =  4.02D0  + 1.239D0 * S
40666       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
40667  
40668 C...gl :
40669       ALG =  0.524D0
40670       BEG =  1.088D0
40671       AKG =  1.742D0 - 0.930D0 * S
40672       BKG =                         - 0.399D0 * S2
40673       AG  =  7.486D0 - 2.185D0 * S
40674       BG  =  16.69D0 - 22.74D0 * S  + 5.779D0 * S2
40675       CG  = -25.59D0 + 29.71D0 * S  - 7.296D0 * S2
40676       DG  =  2.792D0 + 2.215D0 * S  + 0.422D0 * S2 - 0.104D0 * S3
40677       EG  =  0.807D0 + 2.005D0 * S
40678       ESG =  3.841D0 + 0.316D0 * S
40679       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG,
40680      & DG, EG, ESG)
40681  
40682       RETURN
40683       END
40684  
40685 C*********************************************************************
40686  
40687 C...PYGRVM
40688 C...Gives the GRV 94 M (MSbar) parton distribution function set
40689 C...in parametrized form.
40690 C...Authors: M. Glueck, E. Reya and A. Vogt.
40691  
40692       SUBROUTINE PYGRVM (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
40693  
40694 C...Double precision declaration.
40695       IMPLICIT DOUBLE PRECISION (A - Z)
40696  
40697 C...Common expressions.
40698       MU2  = 0.34D0
40699       LAM2 = 0.248D0 * 0.248D0
40700       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
40701       DS = SQRT (S)
40702       S2 = S * S
40703       S3 = S2 * S
40704  
40705 C...uv :
40706       NU  =  1.304D0 + 0.863D0 * S
40707       AKU =  0.558D0 - 0.020D0 * S
40708       BKU =          0.183D0 * S
40709       AU  = -0.113D0 + 0.283D0 * S - 0.321D0 * S2
40710       BU  =  6.843D0 - 5.089D0 * S + 2.647D0 * S2 - 0.527D0 * S3
40711       CU  =  7.771D0 - 10.09D0 * S + 2.630D0 * S2
40712       DU  =  3.315D0 + 1.145D0 * S - 0.583D0 * S2 + 0.154D0 * S3
40713       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
40714  
40715 C...dv :
40716       ND  =  0.102D0 - 0.017D0 * S + 0.005D0 * S2
40717       AKD =  0.270D0 - 0.019D0 * S
40718       BKD =  0.260D0
40719       AD  =  2.393D0 + 6.228D0 * S - 0.881D0 * S2
40720       BD  =  46.06D0 + 4.673D0 * S - 14.98D0 * S2 + 1.331D0 * S3
40721       CD  =  17.83D0 - 53.47D0 * S + 21.24D0 * S2
40722       DD  =  4.081D0 + 0.976D0 * S - 0.485D0 * S2 + 0.152D0 * S3
40723       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
40724  
40725 C...del :
40726       NE  =  0.070D0 + 0.042D0 * S - 0.011D0 * S2 + 0.004D0 * S3
40727       AKE =  0.409D0 - 0.007D0 * S
40728       BKE =  0.782D0 + 0.082D0 * S
40729       AE  = -29.65D0 + 26.49D0 * S + 5.429D0 * S2
40730       BE  =  90.20D0 - 74.97D0 * S + 4.526D0 * S2
40731       CE  =  0.0D0
40732       DE  =  8.122D0 + 2.120D0 * S - 1.088D0 * S2 + 0.231D0 * S3
40733       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
40734  
40735 C...udb :
40736       ALX =  0.877D0
40737       BEX =  0.561D0
40738       AKX =  0.275D0
40739       BKX =  0.0D0
40740       AGX =  0.997D0
40741       BGX =  3.210D0 - 1.866D0 * S
40742       CX  =  7.300D0
40743       DX  =  9.010D0 + 0.896D0 * DS + 0.222D0 * S2
40744       EX  =  3.077D0 + 1.446D0 * S
40745       ESX =  3.173D0 - 2.445D0 * DS + 2.207D0 * S
40746       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
40747      & DX, EX, ESX)
40748  
40749 C...sb :
40750       STS =  0D0
40751       ALS =  0.756D0
40752       BES =  0.216D0
40753       AKS =  1.690D0 + 0.650D0 * DS - 0.922D0 * S
40754       AS  = -4.329D0 + 1.131D0 * S
40755       BS  =  9.568D0 - 1.744D0 * S
40756       DST =  9.377D0 + 1.088D0 * DS - 1.320D0 * S + 0.130D0 * S2
40757       EST =  3.031D0 + 1.639D0 * S
40758       ESS =  5.837D0 + 0.815D0 * S
40759       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
40760  
40761 C...cb :
40762       STC =  0.820D0
40763       ALC =  0.98D0
40764       BEC =  0D0
40765       AKC = -0.625D0 - 0.523D0 * S
40766       AC  =  0D0
40767       BC  =  1.896D0 + 1.616D0 * S
40768       DCT =  4.12D0  + 0.683D0 * S
40769       ECT =  4.36D0  + 1.328D0 * S
40770       ESC =  0.677D0 + 0.679D0 * S
40771       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
40772  
40773 C...bb :
40774       STB =  1.297D0
40775       ALB =  0.99D0
40776       BEB =  0D0
40777       AKB =          - 0.193D0 * S
40778       AB  =  0D0
40779       BB  =  0D0
40780       DBT =  3.447D0 + 0.927D0 * S
40781       EBT =  4.68D0  + 1.259D0 * S
40782       ESB =  1.892D0 + 2.199D0 * S
40783       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
40784  
40785 C...gl :
40786        ALG =  1.014D0
40787        BEG =  1.738D0
40788        AKG =  1.724D0 + 0.157D0 * S
40789        BKG =  0.800D0 + 1.016D0 * S
40790        AG  =  7.517D0 - 2.547D0 * S
40791        BG  =  34.09D0 - 52.21D0 * DS + 17.47D0 * S
40792        CG  =  4.039D0 + 1.491D0 * S
40793        DG  =  3.404D0 + 0.830D0 * S
40794        EG  = -1.112D0 + 3.438D0 * S  - 0.302D0 * S2
40795        ESG =  3.256D0 - 0.436D0 * S
40796        GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
40797  
40798        RETURN
40799        END
40800  
40801 C*********************************************************************
40802  
40803 C...PYGRVD
40804 C...Gives the GRV 94 D (DIS) parton distribution function set
40805 C...in parametrized form.
40806 C...Authors: M. Glueck, E. Reya and A. Vogt.
40807  
40808       SUBROUTINE PYGRVD (X, Q2, UV, DV, DEL, UDB, SB, CHM, BOT, GL)
40809  
40810 C...Double precision declaration.
40811       IMPLICIT DOUBLE PRECISION (A - Z)
40812  
40813 C...Common expressions.
40814       MU2  = 0.34D0
40815       LAM2 = 0.248D0 * 0.248D0
40816       S  = LOG (LOG(Q2/LAM2) / LOG(MU2/LAM2))
40817       DS = SQRT (S)
40818       S2 = S * S
40819       S3 = S2 * S
40820  
40821 C...uv :
40822       NU  =  2.484D0 + 0.116D0 * S + 0.093D0 * S2
40823       AKU =  0.563D0 - 0.025D0 * S
40824       BKU =  0.054D0 + 0.154D0 * S
40825       AU  = -0.326D0 - 0.058D0 * S - 0.135D0 * S2
40826       BU  = -3.322D0 + 8.259D0 * S - 3.119D0 * S2 + 0.291D0 * S3
40827       CU  =  11.52D0 - 12.99D0 * S + 3.161D0 * S2
40828       DU  =  2.808D0 + 1.400D0 * S - 0.557D0 * S2 + 0.119D0 * S3
40829       UV  = PYGRVV (X, NU, AKU, BKU, AU, BU, CU, DU)
40830  
40831 C...dv :
40832       ND  =  0.156D0 - 0.017D0 * S
40833       AKD =  0.299D0 - 0.022D0 * S
40834       BKD =  0.259D0 - 0.015D0 * S
40835       AD  =  3.445D0 + 1.278D0 * S + 0.326D0 * S2
40836       BD  = -6.934D0 + 37.45D0 * S - 18.95D0 * S2 + 1.463D0 * S3
40837       CD  =  55.45D0 - 69.92D0 * S + 20.78D0 * S2
40838       DD  =  3.577D0 + 1.441D0 * S - 0.683D0 * S2 + 0.179D0 * S3
40839       DV  = PYGRVV (X, ND, AKD, BKD, AD, BD, CD, DD)
40840  
40841 C...del :
40842       NE  =  0.099D0 + 0.019D0 * S + 0.002D0 * S2
40843       AKE =  0.419D0 - 0.013D0 * S
40844       BKE =  1.064D0 - 0.038D0 * S
40845       AE  = -44.00D0 + 98.70D0 * S - 14.79D0 * S2
40846       BE  =  28.59D0 - 40.94D0 * S - 13.66D0 * S2 + 2.523D0 * S3
40847       CE  =  84.57D0 - 108.8D0 * S + 31.52D0 * S2
40848       DE  =  7.469D0 + 2.480D0 * S - 0.866D0 * S2
40849       DEL = PYGRVV (X, NE, AKE, BKE, AE, BE, CE, DE)
40850  
40851 C...udb :
40852       ALX =  1.215D0
40853       BEX =  0.466D0
40854       AKX =  0.326D0 + 0.150D0 * S
40855       BKX =  0.956D0 + 0.405D0 * S
40856       AGX =  0.272D0
40857       BGX =  3.794D0 - 2.359D0 * DS
40858       CX  =  2.014D0
40859       DX  =  7.941D0 + 0.534D0 * DS - 0.940D0 * S + 0.410D0 * S2
40860       EX  =  3.049D0 + 1.597D0 * S
40861       ESX =  4.396D0 - 4.594D0 * DS + 3.268D0 * S
40862       UDB = PYGRVW (X, S, ALX, BEX, AKX, BKX, AGX, BGX, CX,
40863      & DX, EX, ESX)
40864  
40865 C...sb :
40866       STS =  0D0
40867       ALS =  0.175D0
40868       BES =  0.344D0
40869       AKS =  1.415D0 - 0.641D0 * DS
40870       AS  =  0.580D0 - 9.763D0 * DS + 6.795D0 * S  - 0.558D0 * S2
40871       BS  =  5.617D0 + 5.709D0 * DS - 3.972D0 * S
40872       DST =  13.78D0 - 9.581D0 * S  + 5.370D0 * S2 - 0.996D0 * S3
40873       EST =  4.546D0 + 0.372D0 * S2
40874       ESS =  5.053D0 - 1.070D0 * S  + 0.805D0 * S2
40875       SB  = PYGRVS (X, S, STS, ALS, BES, AKS, AS, BS, DST, EST, ESS)
40876  
40877 C...cb :
40878       STC =  0.820D0
40879       ALC =  0.98D0
40880       BEC =  0D0
40881       AKC = -0.625D0 - 0.523D0 * S
40882       AC  =  0D0
40883       BC  =  1.896D0 + 1.616D0 * S
40884       DCT =  4.12D0  + 0.683D0 * S
40885       ECT =  4.36D0  + 1.328D0 * S
40886       ESC =  0.677D0 + 0.679D0 * S
40887       CHM = PYGRVS (X, S, STC, ALC, BEC, AKC, AC, BC, DCT, ECT, ESC)
40888  
40889 C...bb :
40890       STB =  1.297D0
40891       ALB =  0.99D0
40892       BEB =  0D0
40893       AKB =          - 0.193D0 * S
40894       AB  =  0D0
40895       BB  =  0D0
40896       DBT =  3.447D0 + 0.927D0 * S
40897       EBT =  4.68D0  + 1.259D0 * S
40898       ESB =  1.892D0 + 2.199D0 * S
40899       BOT = PYGRVS (X, S, STB, ALB, BEB, AKB, AB, BB, DBT, EBT, ESB)
40900  
40901 C...gl :
40902       ALG =  1.258D0
40903       BEG =  1.846D0
40904       AKG =  2.423D0
40905       BKG =  2.427D0 + 1.311D0 * S  - 0.153D0 * S2
40906       AG  =  25.09D0 - 7.935D0 * S
40907       BG  = -14.84D0 - 124.3D0 * DS + 72.18D0 * S
40908       CG  =  590.3D0 - 173.8D0 * S
40909       DG  =  5.196D0 + 1.857D0 * S
40910       EG  = -1.648D0 + 3.988D0 * S  - 0.432D0 * S2
40911       ESG =  3.232D0 - 0.542D0 * S
40912       GL  = PYGRVW (X, S, ALG, BEG, AKG, BKG, AG, BG, CG, DG, EG, ESG)
40913  
40914       RETURN
40915       END
40916  
40917 C*********************************************************************
40918  
40919 C...PYGRVV
40920 C...Auxiliary for the GRV 94 parton distribution functions
40921 C...for u and d valence and d-u sea.
40922 C...Authors: M. Glueck, E. Reya and A. Vogt.
40923  
40924       FUNCTION PYGRVV (X, N, AK, BK, A, B, C, D)
40925  
40926 C...Double precision declaration.
40927       IMPLICIT DOUBLE PRECISION (A - Z)
40928  
40929 C...Evaluation.
40930       DX = SQRT (X)
40931       PYGRVV = N * X**AK * (1D0+ A*X**BK + X * (B + C*DX)) *
40932      & (1D0- X)**D
40933  
40934       RETURN
40935       END
40936  
40937 C*********************************************************************
40938  
40939 C...PYGRVW
40940 C...Auxiliary for the GRV 94 parton distribution functions
40941 C...for d+u sea and gluon.
40942 C...Authors: M. Glueck, E. Reya and A. Vogt.
40943  
40944       FUNCTION PYGRVW (X, S, AL, BE, AK, BK, A, B, C, D, E, ES)
40945  
40946 C...Double precision declaration.
40947       IMPLICIT DOUBLE PRECISION (A - Z)
40948  
40949 C...Evaluation.
40950       LX = LOG (1D0/X)
40951       PYGRVW = (X**AK * (A + X * (B + X*C)) * LX**BK + S**AL
40952      &     * EXP (-E + SQRT (ES * S**BE * LX))) * (1D0- X)**D
40953  
40954       RETURN
40955       END
40956  
40957 C*********************************************************************
40958  
40959 C...PYGRVS
40960 C...Auxiliary for the GRV 94 parton distribution functions
40961 C...for s, c and b sea.
40962 C...Authors: M. Glueck, E. Reya and A. Vogt.
40963  
40964       FUNCTION PYGRVS (X, S, STH, AL, BE, AK, AG, B, D, E, ES)
40965  
40966 C...Double precision declaration.
40967       IMPLICIT DOUBLE PRECISION (A - Z)
40968  
40969 C...Evaluation.
40970       IF(S.LE.STH) THEN
40971         PYGRVS = 0D0
40972       ELSE
40973         DX = SQRT (X)
40974         LX = LOG (1D0/X)
40975         PYGRVS = (S - STH)**AL / LX**AK * (1D0+ AG*DX + B*X) *
40976      &     (1D0- X)**D * EXP (-E + SQRT (ES * S**BE * LX))
40977       ENDIF
40978  
40979       RETURN
40980       END
40981  
40982 C*********************************************************************
40983  
40984 C...PYCT5L
40985 C...Auxiliary function for parametrization of CTEQ5L.
40986 C...Author: J. Pumplin 9/99.
40987  
40988 C...CTEQ5M1 and CTEQ5L Parton Distribution Functions
40989 C...in Parametrized Form
40990 C...            September 15, 1999
40991 C
40992 C...Ref: "GLOBAL QCD ANALYSIS OF PARTON STRUCTURE OF THE NUCLEON:
40993 C...      CTEQ5 PPARTON DISTRIBUTIONS"
40994 C...hep-ph/9903282
40995  
40996 C...The CTEQ5M1 set given here is an updated version of the original
40997 C...CTEQ5M set posted, in the table version, on the Web page of CTEQ.
40998 C...The differences between CTEQ5M and CTEQ5M1 are insignificant for
40999 C...almost all applications.
41000 C...The improvement is in the QCD evolution which is now more
41001 C...accurate, and which agrees completely with the benchmark work
41002 C...of the HERA 96/97 Workshop.
41003 C...The differences between the parametrized and the corresponding
41004 C...table versions (on which it is based) are of similar order as
41005 C...between the two version.
41006  
41007 C...!! Because accurate parametrizations over a wide range of (x,Q)
41008 C...is hard to obtain, only the most widely used sets CTEQ5M and
41009 C...CTEQ5L are available in parametrized form for now.
41010  
41011 C...These parametrizations were obtained by Jon Pumplin.
41012  
41013 C  Iset   PDF        Description              Alpha_s(Mz)  Lam4  Lam5
41014 C -------------------------------------------------------------------
41015 C   1    CTEQ5M1  Standard NLO MSbar scheme      0.118     326   226
41016 C   3    CTEQ5L   Leading Order                  0.127     192   146
41017 C -------------------------------------------------------------------
41018 C...Note the Qcd-lambda values given for CTEQ5L is for the leading
41019 C...order form of Alpha_s!!  Alpha_s(Mz) gives the absolute
41020 C...calibration.
41021  
41022 C...The two Iset value are adopted to agree with the standard table
41023 C...versions.
41024  
41025 C...Range of validity:
41026 C...The range of (x, Q) covered by this parametrization of the QCD
41027 C...evolved parton distributions is 1E-6 < x < 1 ;
41028 C...1.1 GeV < Q < 10 TeV.  Of course, the PDFs are constrained by
41029 C...data only in a subset of that region; and the assumed DGLAP
41030 C...evolution is unlikely to be valid for all of it either.
41031  
41032 C...The range of (x, Q) used in the CTEQ5 round of global analysis is
41033 C...approximately 0.01 < x < 0.75 ; and 4 GeV^2 < Q^2 < 400 GeV^2 for
41034 C...fixed target experiments; 0.0001 < x < 0.3 from HERA data; and
41035 C...Q^2 up to 40,000 GeV^2 from Tevatron inclusive Jet data.
41036  
41037       FUNCTION PYCT5L(IFL,X,Q)
41038  
41039 C...Double precision declaration.
41040       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41041       IMPLICIT INTEGER(I-N)
41042  
41043       PARAMETER (NEX=8, NLF=2)
41044       DIMENSION AM(0:NEX,0:NLF,-5:2)
41045       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
41046       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
41047       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
41048       DIMENSION AF(0:NEX)
41049  
41050       DATA MEXVEC( 2) / 8 /
41051       DATA MLFVEC( 2) / 2 /
41052       DATA UT1VEC( 2) /  0.4971265E+01 /
41053       DATA UT2VEC( 2) / -0.1105128E+01 /
41054       DATA ALFVEC( 2) /  0.2987216E+00 /
41055       DATA QMAVEC( 2) /  0.0000000E+00 /
41056       DATA (AM( 0,K, 2),K=0, 2)
41057      & /  0.5292616E+01, -0.2751910E+01, -0.2488990E+01 /
41058       DATA (AM( 1,K, 2),K=0, 2)
41059      & /  0.9714424E+00,  0.1011827E-01, -0.1023660E-01 /
41060       DATA (AM( 2,K, 2),K=0, 2)
41061      & / -0.1651006E+02,  0.7959721E+01,  0.8810563E+01 /
41062       DATA (AM( 3,K, 2),K=0, 2)
41063      & / -0.1643394E+02,  0.5892854E+01,  0.9348874E+01 /
41064       DATA (AM( 4,K, 2),K=0, 2)
41065      & /  0.3067422E+02,  0.4235796E+01, -0.5112136E+00 /
41066       DATA (AM( 5,K, 2),K=0, 2)
41067      & /  0.2352526E+02, -0.5305168E+01, -0.1169174E+02 /
41068       DATA (AM( 6,K, 2),K=0, 2)
41069      & / -0.1095451E+02,  0.3006577E+01,  0.5638136E+01 /
41070       DATA (AM( 7,K, 2),K=0, 2)
41071      & / -0.1172251E+02, -0.2183624E+01,  0.4955794E+01 /
41072       DATA (AM( 8,K, 2),K=0, 2)
41073      & /  0.1662533E-01,  0.7622870E-02, -0.4895887E-03 /
41074  
41075       DATA MEXVEC( 1) / 8 /
41076       DATA MLFVEC( 1) / 2 /
41077       DATA UT1VEC( 1) /  0.2612618E+01 /
41078       DATA UT2VEC( 1) / -0.1258304E+06 /
41079       DATA ALFVEC( 1) /  0.3407552E+00 /
41080       DATA QMAVEC( 1) /  0.0000000E+00 /
41081       DATA (AM( 0,K, 1),K=0, 2)
41082      & /  0.9905300E+00, -0.4502235E+00,  0.1624441E+00 /
41083       DATA (AM( 1,K, 1),K=0, 2)
41084      & /  0.8867534E+00,  0.1630829E-01, -0.4049085E-01 /
41085       DATA (AM( 2,K, 1),K=0, 2)
41086      & /  0.8547974E+00,  0.3336301E+00,  0.1371388E+00 /
41087       DATA (AM( 3,K, 1),K=0, 2)
41088      & /  0.2941113E+00, -0.1527905E+01,  0.2331879E+00 /
41089       DATA (AM( 4,K, 1),K=0, 2)
41090      & /  0.3384235E+02,  0.3715315E+01,  0.8276930E+00 /
41091       DATA (AM( 5,K, 1),K=0, 2)
41092      & /  0.6230115E+01,  0.3134639E+01, -0.1729099E+01 /
41093       DATA (AM( 6,K, 1),K=0, 2)
41094      & / -0.1186928E+01, -0.3282460E+00,  0.1052020E+00 /
41095       DATA (AM( 7,K, 1),K=0, 2)
41096      & / -0.8545702E+01, -0.6247947E+01,  0.3692561E+01 /
41097       DATA (AM( 8,K, 1),K=0, 2)
41098      & /  0.1724598E-01,  0.7120465E-02,  0.4003646E-04 /
41099  
41100       DATA MEXVEC( 0) / 8 /
41101       DATA MLFVEC( 0) / 2 /
41102       DATA UT1VEC( 0) / -0.4656819E+00 /
41103       DATA UT2VEC( 0) / -0.2742390E+03 /
41104       DATA ALFVEC( 0) /  0.4491863E+00 /
41105       DATA QMAVEC( 0) /  0.0000000E+00 /
41106       DATA (AM( 0,K, 0),K=0, 2)
41107      & /  0.1193572E+03, -0.3886845E+01, -0.1133965E+01 /
41108       DATA (AM( 1,K, 0),K=0, 2)
41109      & / -0.9421449E+02,  0.3995885E+01,  0.1607363E+01 /
41110       DATA (AM( 2,K, 0),K=0, 2)
41111      & /  0.4206383E+01,  0.2485954E+00,  0.2497468E+00 /
41112       DATA (AM( 3,K, 0),K=0, 2)
41113      & /  0.1210557E+03, -0.3015765E+01, -0.1423651E+01 /
41114       DATA (AM( 4,K, 0),K=0, 2)
41115      & / -0.1013897E+03, -0.7113478E+00,  0.2621865E+00 /
41116       DATA (AM( 5,K, 0),K=0, 2)
41117      & / -0.1312404E+01, -0.9297691E+00, -0.1562531E+00 /
41118       DATA (AM( 6,K, 0),K=0, 2)
41119      & /  0.1627137E+01,  0.4954111E+00, -0.6387009E+00 /
41120       DATA (AM( 7,K, 0),K=0, 2)
41121      & /  0.1537698E+00, -0.2487878E+00,  0.8305947E+00 /
41122       DATA (AM( 8,K, 0),K=0, 2)
41123      & /  0.2496448E-01,  0.2457823E-02,  0.8234276E-03 /
41124  
41125       DATA MEXVEC(-1) / 8 /
41126       DATA MLFVEC(-1) / 2 /
41127       DATA UT1VEC(-1) /  0.3862583E+01 /
41128       DATA UT2VEC(-1) / -0.1265969E+01 /
41129       DATA ALFVEC(-1) /  0.2457668E+00 /
41130       DATA QMAVEC(-1) /  0.0000000E+00 /
41131       DATA (AM( 0,K,-1),K=0, 2)
41132      & /  0.2647441E+02,  0.1059277E+02, -0.9176654E+00 /
41133       DATA (AM( 1,K,-1),K=0, 2)
41134      & /  0.1990636E+01,  0.8558918E-01,  0.4248667E-01 /
41135       DATA (AM( 2,K,-1),K=0, 2)
41136      & / -0.1476095E+02, -0.3276255E+02,  0.1558110E+01 /
41137       DATA (AM( 3,K,-1),K=0, 2)
41138      & / -0.2966889E+01, -0.3649037E+02,  0.1195914E+01 /
41139       DATA (AM( 4,K,-1),K=0, 2)
41140      & / -0.1000519E+03, -0.2464635E+01,  0.1964849E+00 /
41141       DATA (AM( 5,K,-1),K=0, 2)
41142      & /  0.3718331E+02,  0.4700389E+02, -0.2772142E+01 /
41143       DATA (AM( 6,K,-1),K=0, 2)
41144      & / -0.1872722E+02, -0.2291189E+02,  0.1089052E+01 /
41145       DATA (AM( 7,K,-1),K=0, 2)
41146      & / -0.1628146E+02, -0.1823993E+02,  0.2537369E+01 /
41147       DATA (AM( 8,K,-1),K=0, 2)
41148      & / -0.1156300E+01, -0.1280495E+00,  0.5153245E-01 /
41149  
41150       DATA MEXVEC(-2) / 7 /
41151       DATA MLFVEC(-2) / 2 /
41152       DATA UT1VEC(-2) /  0.1895615E+00 /
41153       DATA UT2VEC(-2) / -0.3069097E+01 /
41154       DATA ALFVEC(-2) /  0.5293999E+00 /
41155       DATA QMAVEC(-2) /  0.0000000E+00 /
41156       DATA (AM( 0,K,-2),K=0, 2)
41157      & / -0.6556775E+00,  0.2490190E+00,  0.3966485E-01 /
41158       DATA (AM( 1,K,-2),K=0, 2)
41159      & /  0.1305102E+01, -0.1188925E+00, -0.4600870E-02 /
41160       DATA (AM( 2,K,-2),K=0, 2)
41161      & / -0.2371436E+01,  0.3566814E+00, -0.2834683E+00 /
41162       DATA (AM( 3,K,-2),K=0, 2)
41163      & / -0.6152826E+01,  0.8339877E+00, -0.7233230E+00 /
41164       DATA (AM( 4,K,-2),K=0, 2)
41165      & / -0.8346558E+01,  0.2892168E+01,  0.2137099E+00 /
41166       DATA (AM( 5,K,-2),K=0, 2)
41167      & /  0.1279530E+02,  0.1021114E+00,  0.5787439E+00 /
41168       DATA (AM( 6,K,-2),K=0, 2)
41169      & /  0.5858816E+00, -0.1940375E+01, -0.4029269E+00 /
41170       DATA (AM( 7,K,-2),K=0, 2)
41171      & / -0.2795725E+02, -0.5263392E+00,  0.1290229E+01 /
41172  
41173       DATA MEXVEC(-3) / 7 /
41174       DATA MLFVEC(-3) / 2 /
41175       DATA UT1VEC(-3) /  0.3753257E+01 /
41176       DATA UT2VEC(-3) / -0.1113085E+01 /
41177       DATA ALFVEC(-3) /  0.3713141E+00 /
41178       DATA QMAVEC(-3) /  0.0000000E+00 /
41179       DATA (AM( 0,K,-3),K=0, 2)
41180      & /  0.1580931E+01, -0.2273826E+01, -0.1822245E+01 /
41181       DATA (AM( 1,K,-3),K=0, 2)
41182      & /  0.2702644E+01,  0.6763243E+00,  0.7231586E-02 /
41183       DATA (AM( 2,K,-3),K=0, 2)
41184      & / -0.1857924E+02,  0.3907500E+01,  0.5850109E+01 /
41185       DATA (AM( 3,K,-3),K=0, 2)
41186      & / -0.3044793E+02,  0.2639332E+01,  0.5566644E+01 /
41187       DATA (AM( 4,K,-3),K=0, 2)
41188      & / -0.4258011E+01, -0.5429244E+01,  0.4418946E+00 /
41189       DATA (AM( 5,K,-3),K=0, 2)
41190      & /  0.3465259E+02, -0.5532604E+01, -0.4904153E+01 /
41191       DATA (AM( 6,K,-3),K=0, 2)
41192      & / -0.1658858E+02,  0.2923275E+01,  0.2266286E+01 /
41193       DATA (AM( 7,K,-3),K=0, 2)
41194      & / -0.1149263E+02,  0.2877475E+01, -0.7999105E+00 /
41195  
41196       DATA MEXVEC(-4) / 7 /
41197       DATA MLFVEC(-4) / 2 /
41198       DATA UT1VEC(-4) /  0.4400772E+01 /
41199       DATA UT2VEC(-4) / -0.1356116E+01 /
41200       DATA ALFVEC(-4) /  0.3712017E-01 /
41201       DATA QMAVEC(-4) /  0.1300000E+01 /
41202       DATA (AM( 0,K,-4),K=0, 2)
41203      & / -0.8293661E+00, -0.3982375E+01, -0.6494283E-01 /
41204       DATA (AM( 1,K,-4),K=0, 2)
41205      & /  0.2754618E+01,  0.8338636E+00, -0.6885160E-01 /
41206       DATA (AM( 2,K,-4),K=0, 2)
41207      & / -0.1657987E+02,  0.1439143E+02, -0.6887240E+00 /
41208       DATA (AM( 3,K,-4),K=0, 2)
41209      & / -0.2800703E+02,  0.1535966E+02, -0.7377693E+00 /
41210       DATA (AM( 4,K,-4),K=0, 2)
41211      & / -0.6460216E+01, -0.4783019E+01,  0.4913297E+00 /
41212       DATA (AM( 5,K,-4),K=0, 2)
41213      & /  0.3141830E+02, -0.3178031E+02,  0.7136013E+01 /
41214       DATA (AM( 6,K,-4),K=0, 2)
41215      & / -0.1802509E+02,  0.1862163E+02, -0.4632843E+01 /
41216       DATA (AM( 7,K,-4),K=0, 2)
41217      & / -0.1240412E+02,  0.2565386E+02, -0.1066570E+02 /
41218  
41219       DATA MEXVEC(-5) / 6 /
41220       DATA MLFVEC(-5) / 2 /
41221       DATA UT1VEC(-5) /  0.5562568E+01 /
41222       DATA UT2VEC(-5) / -0.1801317E+01 /
41223       DATA ALFVEC(-5) /  0.4952010E-02 /
41224       DATA QMAVEC(-5) /  0.4500000E+01 /
41225       DATA (AM( 0,K,-5),K=0, 2)
41226      & / -0.6031237E+01,  0.1992727E+01, -0.1076331E+01 /
41227       DATA (AM( 1,K,-5),K=0, 2)
41228      & /  0.2933912E+01,  0.5839674E+00,  0.7509435E-01 /
41229       DATA (AM( 2,K,-5),K=0, 2)
41230      & / -0.8284919E+01,  0.1488593E+01, -0.8251678E+00 /
41231       DATA (AM( 3,K,-5),K=0, 2)
41232      & / -0.1925986E+02,  0.2805753E+01, -0.3015446E+01 /
41233       DATA (AM( 4,K,-5),K=0, 2)
41234      & / -0.9480483E+01, -0.9767837E+00, -0.1165544E+01 /
41235       DATA (AM( 5,K,-5),K=0, 2)
41236      & /  0.2193195E+02, -0.1788518E+02,  0.9460908E+01 /
41237       DATA (AM( 6,K,-5),K=0, 2)
41238      & / -0.1327377E+02,  0.1201754E+02, -0.6277844E+01 /
41239  
41240       IF(Q .LE. QMAVEC(IFL)) THEN
41241          PYCT5L = 0.D0
41242          RETURN
41243       ENDIF
41244  
41245       IF(X .GE. 1.D0) THEN
41246          PYCT5L = 0.D0
41247          RETURN
41248       ENDIF
41249  
41250       TMP = LOG(Q/ALFVEC(IFL))
41251       IF(TMP .LE. 0.D0) THEN
41252          PYCT5L = 0.D0
41253          RETURN
41254       ENDIF
41255  
41256       SB = LOG(TMP)
41257       SB1 = SB - 1.2D0
41258       SB2 = SB1*SB1
41259  
41260       DO 110 I = 0, NEX
41261          AF(I) = 0.D0
41262          SBX = 1.D0
41263          DO 100 K = 0, MLFVEC(IFL)
41264             AF(I) = AF(I) + SBX*AM(I,K,IFL)
41265             SBX = SB1*SBX
41266   100    CONTINUE
41267   110 CONTINUE
41268  
41269       Y = -LOG(X)
41270       U = LOG(X/0.00001D0)
41271  
41272       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
41273       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
41274       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
41275       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
41276      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
41277  
41278       PYCT5L = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
41279  
41280 C...Include threshold factor.
41281       PYCT5L = PYCT5L * (1.D0 - QMAVEC(IFL)/Q)
41282  
41283       RETURN
41284       END
41285  
41286 C*********************************************************************
41287  
41288 C...PYCT5M
41289 C...Auxiliary function for parametrization of CTEQ5M1.
41290 C...Author: J. Pumplin 9/99.
41291  
41292       FUNCTION PYCT5M(IFL,X,Q)
41293  
41294 C...Double precision declaration.
41295       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41296       IMPLICIT INTEGER(I-N)
41297  
41298       PARAMETER (NEX=8, NLF=2)
41299       DIMENSION AM(0:NEX,0:NLF,-5:2)
41300       DIMENSION ALFVEC(-5:2), QMAVEC(-5:2)
41301       DIMENSION MEXVEC(-5:2), MLFVEC(-5:2)
41302       DIMENSION UT1VEC(-5:2), UT2VEC(-5:2)
41303       DIMENSION AF(0:NEX)
41304  
41305       DATA MEXVEC( 2) / 8 /
41306       DATA MLFVEC( 2) / 2 /
41307       DATA UT1VEC( 2) /  0.5141718E+01 /
41308       DATA UT2VEC( 2) / -0.1346944E+01 /
41309       DATA ALFVEC( 2) /  0.5260555E+00 /
41310       DATA QMAVEC( 2) /  0.0000000E+00 /
41311       DATA (AM( 0,K, 2),K=0, 2)
41312      & /  0.4289071E+01, -0.2536870E+01, -0.1259948E+01 /
41313       DATA (AM( 1,K, 2),K=0, 2)
41314      & /  0.9839410E+00,  0.4168426E-01, -0.5018952E-01 /
41315       DATA (AM( 2,K, 2),K=0, 2)
41316      & / -0.1651961E+02,  0.9246261E+01,  0.5996400E+01 /
41317       DATA (AM( 3,K, 2),K=0, 2)
41318      & / -0.2077936E+02,  0.9786469E+01,  0.7656465E+01 /
41319       DATA (AM( 4,K, 2),K=0, 2)
41320      & /  0.3054926E+02,  0.1889536E+01,  0.1380541E+01 /
41321       DATA (AM( 5,K, 2),K=0, 2)
41322      & /  0.3084695E+02, -0.1212303E+02, -0.1053551E+02 /
41323       DATA (AM( 6,K, 2),K=0, 2)
41324      & / -0.1426778E+02,  0.6239537E+01,  0.5254819E+01 /
41325       DATA (AM( 7,K, 2),K=0, 2)
41326      & / -0.1909811E+02,  0.3695678E+01,  0.5495729E+01 /
41327       DATA (AM( 8,K, 2),K=0, 2)
41328      & /  0.1889751E-01,  0.5027193E-02,  0.6624896E-03 /
41329  
41330       DATA MEXVEC( 1) / 8 /
41331       DATA MLFVEC( 1) / 2 /
41332       DATA UT1VEC( 1) /  0.4138426E+01 /
41333       DATA UT2VEC( 1) / -0.3221374E+01 /
41334       DATA ALFVEC( 1) /  0.4960962E+00 /
41335       DATA QMAVEC( 1) /  0.0000000E+00 /
41336       DATA (AM( 0,K, 1),K=0, 2)
41337      & /  0.1332497E+01, -0.3703718E+00,  0.1288638E+00 /
41338       DATA (AM( 1,K, 1),K=0, 2)
41339      & /  0.7544687E+00,  0.3255075E-01, -0.4706680E-01 /
41340       DATA (AM( 2,K, 1),K=0, 2)
41341      & / -0.7638814E+00,  0.5008313E+00, -0.9237374E-01 /
41342       DATA (AM( 3,K, 1),K=0, 2)
41343      & / -0.3689889E+00, -0.1055098E+01, -0.4645065E+00 /
41344       DATA (AM( 4,K, 1),K=0, 2)
41345      & /  0.3991610E+02,  0.1979881E+01,  0.1775814E+01 /
41346       DATA (AM( 5,K, 1),K=0, 2)
41347      & /  0.6201080E+01,  0.2046288E+01,  0.3804571E+00 /
41348       DATA (AM( 6,K, 1),K=0, 2)
41349      & / -0.8027900E+00, -0.7011688E+00, -0.8049612E+00 /
41350       DATA (AM( 7,K, 1),K=0, 2)
41351      & / -0.8631305E+01, -0.3981200E+01,  0.6970153E+00 /
41352       DATA (AM( 8,K, 1),K=0, 2)
41353      & /  0.2371230E-01,  0.5372683E-02,  0.1118701E-02 /
41354  
41355       DATA MEXVEC( 0) / 8 /
41356       DATA MLFVEC( 0) / 2 /
41357       DATA UT1VEC( 0) / -0.1026789E+01 /
41358       DATA UT2VEC( 0) / -0.9051707E+01 /
41359       DATA ALFVEC( 0) /  0.9462977E+00 /
41360       DATA QMAVEC( 0) /  0.0000000E+00 /
41361       DATA (AM( 0,K, 0),K=0, 2)
41362      & /  0.1191990E+03, -0.8548739E+00, -0.1963040E+01 /
41363       DATA (AM( 1,K, 0),K=0, 2)
41364      & / -0.9449972E+02,  0.1074771E+01,  0.2056055E+01 /
41365       DATA (AM( 2,K, 0),K=0, 2)
41366      & /  0.3701064E+01, -0.1167947E-02,  0.1933573E+00 /
41367       DATA (AM( 3,K, 0),K=0, 2)
41368      & /  0.1171345E+03, -0.1064540E+01, -0.1875312E+01 /
41369       DATA (AM( 4,K, 0),K=0, 2)
41370      & / -0.1014453E+03, -0.5707427E+00,  0.4511242E-01 /
41371       DATA (AM( 5,K, 0),K=0, 2)
41372      & /  0.6365168E+01,  0.1275354E+01, -0.4964081E+00 /
41373       DATA (AM( 6,K, 0),K=0, 2)
41374      & / -0.3370693E+01, -0.1122020E+01,  0.5947751E-01 /
41375       DATA (AM( 7,K, 0),K=0, 2)
41376      & / -0.5327270E+01, -0.9293556E+00,  0.6629940E+00 /
41377       DATA (AM( 8,K, 0),K=0, 2)
41378      & /  0.2437513E-01,  0.1600939E-02,  0.6855336E-03 /
41379  
41380       DATA MEXVEC(-1) / 8 /
41381       DATA MLFVEC(-1) / 2 /
41382       DATA UT1VEC(-1) /  0.5243571E+01 /
41383       DATA UT2VEC(-1) / -0.2870513E+01 /
41384       DATA ALFVEC(-1) /  0.6701448E+00 /
41385       DATA QMAVEC(-1) /  0.0000000E+00 /
41386       DATA (AM( 0,K,-1),K=0, 2)
41387      & /  0.2428863E+02,  0.1907035E+01, -0.4606457E+00 /
41388       DATA (AM( 1,K,-1),K=0, 2)
41389      & /  0.2006810E+01, -0.1265915E+00,  0.7153556E-02 /
41390       DATA (AM( 2,K,-1),K=0, 2)
41391      & / -0.1884546E+02, -0.2339471E+01,  0.5740679E+01 /
41392       DATA (AM( 3,K,-1),K=0, 2)
41393      & / -0.2527892E+02, -0.2044124E+01,  0.1280470E+02 /
41394       DATA (AM( 4,K,-1),K=0, 2)
41395      & / -0.1013824E+03, -0.1594199E+01,  0.2216401E+00 /
41396       DATA (AM( 5,K,-1),K=0, 2)
41397      & /  0.8070930E+02,  0.1792072E+01, -0.2164364E+02 /
41398       DATA (AM( 6,K,-1),K=0, 2)
41399      & / -0.4641050E+02,  0.1977338E+00,  0.1273014E+02 /
41400       DATA (AM( 7,K,-1),K=0, 2)
41401      & / -0.3910568E+02,  0.1719632E+01,  0.1086525E+02 /
41402       DATA (AM( 8,K,-1),K=0, 2)
41403      & / -0.1185496E+01, -0.1905847E+00, -0.8744118E-03 /
41404  
41405       DATA MEXVEC(-2) / 7 /
41406       DATA MLFVEC(-2) / 2 /
41407       DATA UT1VEC(-2) /  0.4782210E+01 /
41408       DATA UT2VEC(-2) / -0.1976856E+02 /
41409       DATA ALFVEC(-2) /  0.7558374E+00 /
41410       DATA QMAVEC(-2) /  0.0000000E+00 /
41411       DATA (AM( 0,K,-2),K=0, 2)
41412      & / -0.6216935E+00,  0.2369963E+00, -0.7909949E-02 /
41413       DATA (AM( 1,K,-2),K=0, 2)
41414      & /  0.1245440E+01, -0.1031510E+00,  0.4916523E-02 /
41415       DATA (AM( 2,K,-2),K=0, 2)
41416      & / -0.7060824E+01, -0.3875283E-01,  0.1784981E+00 /
41417       DATA (AM( 3,K,-2),K=0, 2)
41418      & / -0.7430595E+01,  0.1964572E+00, -0.1284999E+00 /
41419       DATA (AM( 4,K,-2),K=0, 2)
41420      & / -0.6897810E+01,  0.2620543E+01,  0.8012553E-02 /
41421       DATA (AM( 5,K,-2),K=0, 2)
41422      & /  0.1507713E+02,  0.2340307E-01,  0.2482535E+01 /
41423       DATA (AM( 6,K,-2),K=0, 2)
41424      & / -0.1815341E+01, -0.1538698E+01, -0.2014208E+01 /
41425       DATA (AM( 7,K,-2),K=0, 2)
41426      & / -0.2571932E+02,  0.2903941E+00, -0.2848206E+01 /
41427  
41428       DATA MEXVEC(-3) / 7 /
41429       DATA MLFVEC(-3) / 2 /
41430       DATA UT1VEC(-3) /  0.4518239E+01 /
41431       DATA UT2VEC(-3) / -0.2690590E+01 /
41432       DATA ALFVEC(-3) /  0.6124079E+00 /
41433       DATA QMAVEC(-3) /  0.0000000E+00 /
41434       DATA (AM( 0,K,-3),K=0, 2)
41435      & / -0.2734458E+01, -0.7245673E+00, -0.6351374E+00 /
41436       DATA (AM( 1,K,-3),K=0, 2)
41437      & /  0.2927174E+01,  0.4822709E+00, -0.1088787E-01 /
41438       DATA (AM( 2,K,-3),K=0, 2)
41439      & / -0.1771017E+02, -0.1416635E+01,  0.8467622E+01 /
41440       DATA (AM( 3,K,-3),K=0, 2)
41441      & / -0.4972782E+02, -0.3348547E+01,  0.1767061E+02 /
41442       DATA (AM( 4,K,-3),K=0, 2)
41443      & / -0.7102770E+01, -0.3205337E+01,  0.4101704E+00 /
41444       DATA (AM( 5,K,-3),K=0, 2)
41445      & /  0.7169698E+02, -0.2205985E+01, -0.2463931E+02 /
41446       DATA (AM( 6,K,-3),K=0, 2)
41447      & / -0.4090347E+02,  0.2103486E+01,  0.1416507E+02 /
41448       DATA (AM( 7,K,-3),K=0, 2)
41449      & / -0.2952639E+02,  0.5376136E+01,  0.7825585E+01 /
41450  
41451       DATA MEXVEC(-4) / 7 /
41452       DATA MLFVEC(-4) / 2 /
41453       DATA UT1VEC(-4) /  0.2783230E+01 /
41454       DATA UT2VEC(-4) / -0.1746328E+01 /
41455       DATA ALFVEC(-4) /  0.1115653E+01 /
41456       DATA QMAVEC(-4) /  0.1300000E+01 /
41457       DATA (AM( 0,K,-4),K=0, 2)
41458      & / -0.1743872E+01, -0.1128921E+01, -0.2841969E+00 /
41459       DATA (AM( 1,K,-4),K=0, 2)
41460      & /  0.3345755E+01,  0.3187765E+00,  0.1378124E+00 /
41461       DATA (AM( 2,K,-4),K=0, 2)
41462      & / -0.2037615E+02,  0.4121687E+01,  0.2236520E+00 /
41463       DATA (AM( 3,K,-4),K=0, 2)
41464      & / -0.4703104E+02,  0.5353087E+01, -0.1455347E+01 /
41465       DATA (AM( 4,K,-4),K=0, 2)
41466      & / -0.1060230E+02, -0.1551122E+01, -0.1078863E+01 /
41467       DATA (AM( 5,K,-4),K=0, 2)
41468      & /  0.5088892E+02, -0.8197304E+01,  0.8083451E+01 /
41469       DATA (AM( 6,K,-4),K=0, 2)
41470      & / -0.2819070E+02,  0.4554086E+01, -0.5890995E+01 /
41471       DATA (AM( 7,K,-4),K=0, 2)
41472      & / -0.1098238E+02,  0.2590096E+01, -0.8062879E+01 /
41473  
41474       DATA MEXVEC(-5) / 6 /
41475       DATA MLFVEC(-5) / 2 /
41476       DATA UT1VEC(-5) /  0.1619654E+02 /
41477       DATA UT2VEC(-5) / -0.3367346E+01 /
41478       DATA ALFVEC(-5) /  0.5109891E-02 /
41479       DATA QMAVEC(-5) /  0.4500000E+01 /
41480       DATA (AM( 0,K,-5),K=0, 2)
41481      & / -0.6800138E+01,  0.2493627E+01, -0.1075724E+01 /
41482       DATA (AM( 1,K,-5),K=0, 2)
41483      & /  0.3036555E+01,  0.3324733E+00,  0.2008298E+00 /
41484       DATA (AM( 2,K,-5),K=0, 2)
41485      & / -0.5203879E+01, -0.8493476E+01, -0.4523208E+01 /
41486       DATA (AM( 3,K,-5),K=0, 2)
41487      & / -0.1524239E+01, -0.3411912E+01, -0.1771867E+02 /
41488       DATA (AM( 4,K,-5),K=0, 2)
41489      & / -0.1099444E+02,  0.1320930E+01, -0.2353831E+01 /
41490       DATA (AM( 5,K,-5),K=0, 2)
41491      & /  0.1699299E+02, -0.3565802E+02,  0.3566872E+02 /
41492       DATA (AM( 6,K,-5),K=0, 2)
41493      & / -0.1465793E+02,  0.2703365E+02, -0.2176372E+02 /
41494  
41495       IF(Q .LE. QMAVEC(IFL)) THEN
41496          PYCT5M = 0.D0
41497          RETURN
41498       ENDIF
41499  
41500       IF(X .GE. 1.D0) THEN
41501          PYCT5M = 0.D0
41502          RETURN
41503       ENDIF
41504  
41505       TMP = LOG(Q/ALFVEC(IFL))
41506       IF(TMP .LE. 0.D0) THEN
41507          PYCT5M = 0.D0
41508          RETURN
41509       ENDIF
41510  
41511       SB = LOG(TMP)
41512       SB1 = SB - 1.2D0
41513       SB2 = SB1*SB1
41514  
41515       DO 110 I = 0, NEX
41516          AF(I) = 0.D0
41517          SBX = 1.D0
41518          DO 100 K = 0, MLFVEC(IFL)
41519             AF(I) = AF(I) + SBX*AM(I,K,IFL)
41520             SBX = SB1*SBX
41521   100    CONTINUE
41522   110 CONTINUE
41523  
41524       Y = -LOG(X)
41525       U = LOG(X/0.00001D0)
41526  
41527       PART1 = AF(1)*Y**(1.D0+0.01D0*AF(4))*(1.D0+ AF(8)*U)
41528       PART2 = AF(0)*(1.D0 - X) + AF(3)*X
41529       PART3 = X*(1.D0-X)*(AF(5)+AF(6)*(1.D0-X)+AF(7)*X*(1.D0-X))
41530       PART4 = UT1VEC(IFL)*LOG(1.D0-X) +
41531      &        AF(2)*LOG(1.D0+EXP(UT2VEC(IFL))-X)
41532  
41533       PYCT5M = EXP(LOG(X) + PART1 + PART2 + PART3 + PART4)
41534  
41535 C...Include threshold factor.
41536       PYCT5M = PYCT5M * (1.D0 - QMAVEC(IFL)/Q)
41537  
41538       RETURN
41539       END
41540  
41541 C*********************************************************************
41542  
41543 C...PYPDPO
41544 C...Auxiliary to PYPDPR. Gives proton parton distributions according to
41545 C...a few older parametrizations, now obsolete but convenient for
41546 C...backwards checks.
41547  
41548       SUBROUTINE PYPDPO(X,Q2,XPPR)
41549  
41550 C...Double precision and integer declarations.
41551       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
41552       IMPLICIT INTEGER(I-N)
41553       INTEGER PYK,PYCHGE,PYCOMP
41554 C...Commonblocks.
41555       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
41556       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
41557       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
41558       COMMON/PYINT1/MINT(400),VINT(400)
41559       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
41560       DIMENSION XPPR(-6:6),XQ(9),TX(6),TT(6),TS(6),NEHLQ(8,2),
41561      &CEHLQ(6,6,2,8,2),CDO(3,6,5,2)
41562  
41563  
41564 C...The following data lines are coefficients needed in the
41565 C...Eichten, Hinchliffe, Lane, Quigg proton structure function
41566 C...parametrizations, see below.
41567 C...Powers of 1-x in different cases.
41568       DATA NEHLQ/3,4,7,5,7,7,7,7,3,4,7,6,7,7,7,7/
41569 C...Expansion coefficients for up valence quark distribution.
41570       DATA (((CEHLQ(IX,IT,NX,1,1),IX=1,6),IT=1,6),NX=1,2)/
41571      1 7.677D-01,-2.087D-01,-3.303D-01,-2.517D-02,-1.570D-02,-1.000D-04,
41572      2-5.326D-01,-2.661D-01, 3.201D-01, 1.192D-01, 2.434D-02, 7.620D-03,
41573      3 2.162D-01, 1.881D-01,-8.375D-02,-6.515D-02,-1.743D-02,-5.040D-03,
41574      4-9.211D-02,-9.952D-02, 1.373D-02, 2.506D-02, 8.770D-03, 2.550D-03,
41575      5 3.670D-02, 4.409D-02, 9.600D-04,-7.960D-03,-3.420D-03,-1.050D-03,
41576      6-1.549D-02,-2.026D-02,-3.060D-03, 2.220D-03, 1.240D-03, 4.100D-04,
41577      1 2.395D-01, 2.905D-01, 9.778D-02, 2.149D-02, 3.440D-03, 5.000D-04,
41578      2 1.751D-02,-6.090D-03,-2.687D-02,-1.916D-02,-7.970D-03,-2.750D-03,
41579      3-5.760D-03,-5.040D-03, 1.080D-03, 2.490D-03, 1.530D-03, 7.500D-04,
41580      4 1.740D-03, 1.960D-03, 3.000D-04,-3.400D-04,-2.900D-04,-1.800D-04,
41581      5-5.300D-04,-6.400D-04,-1.700D-04, 4.000D-05, 6.000D-05, 4.000D-05,
41582      6 1.700D-04, 2.200D-04, 8.000D-05, 1.000D-05,-1.000D-05,-1.000D-05/
41583       DATA (((CEHLQ(IX,IT,NX,1,2),IX=1,6),IT=1,6),NX=1,2)/
41584      1 7.237D-01,-2.189D-01,-2.995D-01,-1.909D-02,-1.477D-02, 2.500D-04,
41585      2-5.314D-01,-2.425D-01, 3.283D-01, 1.119D-01, 2.223D-02, 7.070D-03,
41586      3 2.289D-01, 1.890D-01,-9.859D-02,-6.900D-02,-1.747D-02,-5.080D-03,
41587      4-1.041D-01,-1.084D-01, 2.108D-02, 2.975D-02, 9.830D-03, 2.830D-03,
41588      5 4.394D-02, 5.116D-02,-1.410D-03,-1.055D-02,-4.230D-03,-1.270D-03,
41589      6-1.991D-02,-2.539D-02,-2.780D-03, 3.430D-03, 1.720D-03, 5.500D-04,
41590      1 2.410D-01, 2.884D-01, 9.369D-02, 1.900D-02, 2.530D-03, 2.400D-04,
41591      2 1.765D-02,-9.220D-03,-3.037D-02,-2.085D-02,-8.440D-03,-2.810D-03,
41592      3-6.450D-03,-5.260D-03, 1.720D-03, 3.110D-03, 1.830D-03, 8.700D-04,
41593      4 2.120D-03, 2.320D-03, 2.600D-04,-4.900D-04,-3.900D-04,-2.300D-04,
41594      5-6.900D-04,-8.200D-04,-2.000D-04, 7.000D-05, 9.000D-05, 6.000D-05,
41595      6 2.400D-04, 3.100D-04, 1.100D-04, 0.000D+00,-2.000D-05,-2.000D-05/
41596 C...Expansion coefficients for down valence quark distribution.
41597       DATA (((CEHLQ(IX,IT,NX,2,1),IX=1,6),IT=1,6),NX=1,2)/
41598      1 3.813D-01,-8.090D-02,-1.634D-01,-2.185D-02,-8.430D-03,-6.200D-04,
41599      2-2.948D-01,-1.435D-01, 1.665D-01, 6.638D-02, 1.473D-02, 4.080D-03,
41600      3 1.252D-01, 1.042D-01,-4.722D-02,-3.683D-02,-1.038D-02,-2.860D-03,
41601      4-5.478D-02,-5.678D-02, 8.900D-03, 1.484D-02, 5.340D-03, 1.520D-03,
41602      5 2.220D-02, 2.567D-02,-3.000D-05,-4.970D-03,-2.160D-03,-6.500D-04,
41603      6-9.530D-03,-1.204D-02,-1.510D-03, 1.510D-03, 8.300D-04, 2.700D-04,
41604      1 1.261D-01, 1.354D-01, 3.958D-02, 8.240D-03, 1.660D-03, 4.500D-04,
41605      2 3.890D-03,-1.159D-02,-1.625D-02,-9.610D-03,-3.710D-03,-1.260D-03,
41606      3-1.910D-03,-5.600D-04, 1.590D-03, 1.590D-03, 8.400D-04, 3.900D-04,
41607      4 6.400D-04, 4.900D-04,-1.500D-04,-2.900D-04,-1.800D-04,-1.000D-04,
41608      5-2.000D-04,-1.900D-04, 0.000D+00, 6.000D-05, 4.000D-05, 3.000D-05,
41609      6 7.000D-05, 8.000D-05, 2.000D-05,-1.000D-05,-1.000D-05,-1.000D-05/
41610       DATA (((CEHLQ(IX,IT,NX,2,2),IX=1,6),IT=1,6),NX=1,2)/
41611      1 3.578D-01,-8.622D-02,-1.480D-01,-1.840D-02,-7.820D-03,-4.500D-04,
41612      2-2.925D-01,-1.304D-01, 1.696D-01, 6.243D-02, 1.353D-02, 3.750D-03,
41613      3 1.318D-01, 1.041D-01,-5.486D-02,-3.872D-02,-1.038D-02,-2.850D-03,
41614      4-6.162D-02,-6.143D-02, 1.303D-02, 1.740D-02, 5.940D-03, 1.670D-03,
41615      5 2.643D-02, 2.957D-02,-1.490D-03,-6.450D-03,-2.630D-03,-7.700D-04,
41616      6-1.218D-02,-1.497D-02,-1.260D-03, 2.240D-03, 1.120D-03, 3.500D-04,
41617      1 1.263D-01, 1.334D-01, 3.732D-02, 7.070D-03, 1.260D-03, 3.400D-04,
41618      2 3.660D-03,-1.357D-02,-1.795D-02,-1.031D-02,-3.880D-03,-1.280D-03,
41619      3-2.100D-03,-3.600D-04, 2.050D-03, 1.920D-03, 9.800D-04, 4.400D-04,
41620      4 7.700D-04, 5.400D-04,-2.400D-04,-3.900D-04,-2.400D-04,-1.300D-04,
41621      5-2.600D-04,-2.300D-04, 2.000D-05, 9.000D-05, 6.000D-05, 4.000D-05,
41622      6 9.000D-05, 1.000D-04, 2.000D-05,-2.000D-05,-2.000D-05,-1.000D-05/
41623 C...Expansion coefficients for up and down sea quark distributions.
41624       DATA (((CEHLQ(IX,IT,NX,3,1),IX=1,6),IT=1,6),NX=1,2)/
41625      1 6.870D-02,-6.861D-02, 2.973D-02,-5.400D-03, 3.780D-03,-9.700D-04,
41626      2-1.802D-02, 1.400D-04, 6.490D-03,-8.540D-03, 1.220D-03,-1.750D-03,
41627      3-4.650D-03, 1.480D-03,-5.930D-03, 6.000D-04,-1.030D-03,-8.000D-05,
41628      4 6.440D-03, 2.570D-03, 2.830D-03, 1.150D-03, 7.100D-04, 3.300D-04,
41629      5-3.930D-03,-2.540D-03,-1.160D-03,-7.700D-04,-3.600D-04,-1.900D-04,
41630      6 2.340D-03, 1.930D-03, 5.300D-04, 3.700D-04, 1.600D-04, 9.000D-05,
41631      1 1.014D+00,-1.106D+00, 3.374D-01,-7.444D-02, 8.850D-03,-8.700D-04,
41632      2 9.233D-01,-1.285D+00, 4.475D-01,-9.786D-02, 1.419D-02,-1.120D-03,
41633      3 4.888D-02,-1.271D-01, 8.606D-02,-2.608D-02, 4.780D-03,-6.000D-04,
41634      4-2.691D-02, 4.887D-02,-1.771D-02, 1.620D-03, 2.500D-04,-6.000D-05,
41635      5 7.040D-03,-1.113D-02, 1.590D-03, 7.000D-04,-2.000D-04, 0.000D+00,
41636      6-1.710D-03, 2.290D-03, 3.800D-04,-3.500D-04, 4.000D-05, 1.000D-05/
41637       DATA (((CEHLQ(IX,IT,NX,3,2),IX=1,6),IT=1,6),NX=1,2)/
41638      1 1.008D-01,-7.100D-02, 1.973D-02,-5.710D-03, 2.930D-03,-9.900D-04,
41639      2-5.271D-02,-1.823D-02, 1.792D-02,-6.580D-03, 1.750D-03,-1.550D-03,
41640      3 1.220D-02, 1.763D-02,-8.690D-03,-8.800D-04,-1.160D-03,-2.100D-04,
41641      4-1.190D-03,-7.180D-03, 2.360D-03, 1.890D-03, 7.700D-04, 4.100D-04,
41642      5-9.100D-04, 2.040D-03,-3.100D-04,-1.050D-03,-4.000D-04,-2.400D-04,
41643      6 1.190D-03,-1.700D-04,-2.000D-04, 4.200D-04, 1.700D-04, 1.000D-04,
41644      1 1.081D+00,-1.189D+00, 3.868D-01,-8.617D-02, 1.115D-02,-1.180D-03,
41645      2 9.917D-01,-1.396D+00, 4.998D-01,-1.159D-01, 1.674D-02,-1.720D-03,
41646      3 5.099D-02,-1.338D-01, 9.173D-02,-2.885D-02, 5.890D-03,-6.500D-04,
41647      4-3.178D-02, 5.703D-02,-2.070D-02, 2.440D-03, 1.100D-04,-9.000D-05,
41648      5 8.970D-03,-1.392D-02, 2.050D-03, 6.500D-04,-2.300D-04, 2.000D-05,
41649      6-2.340D-03, 3.010D-03, 5.000D-04,-3.900D-04, 6.000D-05, 1.000D-05/
41650 C...Expansion coefficients for gluon distribution.
41651       DATA (((CEHLQ(IX,IT,NX,4,1),IX=1,6),IT=1,6),NX=1,2)/
41652      1 9.482D-01,-9.578D-01, 1.009D-01,-1.051D-01, 3.456D-02,-3.054D-02,
41653      2-9.627D-01, 5.379D-01, 3.368D-01,-9.525D-02, 1.488D-02,-2.051D-02,
41654      3 4.300D-01,-8.306D-02,-3.372D-01, 4.902D-02,-9.160D-03, 1.041D-02,
41655      4-1.925D-01,-1.790D-02, 2.183D-01, 7.490D-03, 4.140D-03,-1.860D-03,
41656      5 8.183D-02, 1.926D-02,-1.072D-01,-1.944D-02,-2.770D-03,-5.200D-04,
41657      6-3.884D-02,-1.234D-02, 5.410D-02, 1.879D-02, 3.350D-03, 1.040D-03,
41658      1 2.948D+01,-3.902D+01, 1.464D+01,-3.335D+00, 5.054D-01,-5.915D-02,
41659      2 2.559D+01,-3.955D+01, 1.661D+01,-4.299D+00, 6.904D-01,-8.243D-02,
41660      3-1.663D+00, 1.176D+00, 1.118D+00,-7.099D-01, 1.948D-01,-2.404D-02,
41661      4-2.168D-01, 8.170D-01,-7.169D-01, 1.851D-01,-1.924D-02,-3.250D-03,
41662      5 2.088D-01,-4.355D-01, 2.239D-01,-2.446D-02,-3.620D-03, 1.910D-03,
41663      6-9.097D-02, 1.601D-01,-5.681D-02,-2.500D-03, 2.580D-03,-4.700D-04/
41664       DATA (((CEHLQ(IX,IT,NX,4,2),IX=1,6),IT=1,6),NX=1,2)/
41665      1 2.367D+00, 4.453D-01, 3.660D-01, 9.467D-02, 1.341D-01, 1.661D-02,
41666      2-3.170D+00,-1.795D+00, 3.313D-02,-2.874D-01,-9.827D-02,-7.119D-02,
41667      3 1.823D+00, 1.457D+00,-2.465D-01, 3.739D-02, 6.090D-03, 1.814D-02,
41668      4-1.033D+00,-9.827D-01, 2.136D-01, 1.169D-01, 5.001D-02, 1.684D-02,
41669      5 5.133D-01, 5.259D-01,-1.173D-01,-1.139D-01,-4.988D-02,-2.021D-02,
41670      6-2.881D-01,-3.145D-01, 5.667D-02, 9.161D-02, 4.568D-02, 1.951D-02,
41671      1 3.036D+01,-4.062D+01, 1.578D+01,-3.699D+00, 6.020D-01,-7.031D-02,
41672      2 2.700D+01,-4.167D+01, 1.770D+01,-4.804D+00, 7.862D-01,-1.060D-01,
41673      3-1.909D+00, 1.357D+00, 1.127D+00,-7.181D-01, 2.232D-01,-2.481D-02,
41674      4-2.488D-01, 9.781D-01,-8.127D-01, 2.094D-01,-2.997D-02,-4.710D-03,
41675      5 2.506D-01,-5.427D-01, 2.672D-01,-3.103D-02,-1.800D-03, 2.870D-03,
41676      6-1.128D-01, 2.087D-01,-6.972D-02,-2.480D-03, 2.630D-03,-8.400D-04/
41677 C...Expansion coefficients for strange sea quark distribution.
41678       DATA (((CEHLQ(IX,IT,NX,5,1),IX=1,6),IT=1,6),NX=1,2)/
41679      1 4.968D-02,-4.173D-02, 2.102D-02,-3.270D-03, 3.240D-03,-6.700D-04,
41680      2-6.150D-03,-1.294D-02, 6.740D-03,-6.890D-03, 9.000D-04,-1.510D-03,
41681      3-8.580D-03, 5.050D-03,-4.900D-03,-1.600D-04,-9.400D-04,-1.500D-04,
41682      4 7.840D-03, 1.510D-03, 2.220D-03, 1.400D-03, 7.000D-04, 3.500D-04,
41683      5-4.410D-03,-2.220D-03,-8.900D-04,-8.500D-04,-3.600D-04,-2.000D-04,
41684      6 2.520D-03, 1.840D-03, 4.100D-04, 3.900D-04, 1.600D-04, 9.000D-05,
41685      1 9.235D-01,-1.085D+00, 3.464D-01,-7.210D-02, 9.140D-03,-9.100D-04,
41686      2 9.315D-01,-1.274D+00, 4.512D-01,-9.775D-02, 1.380D-02,-1.310D-03,
41687      3 4.739D-02,-1.296D-01, 8.482D-02,-2.642D-02, 4.760D-03,-5.700D-04,
41688      4-2.653D-02, 4.953D-02,-1.735D-02, 1.750D-03, 2.800D-04,-6.000D-05,
41689      5 6.940D-03,-1.132D-02, 1.480D-03, 6.500D-04,-2.100D-04, 0.000D+00,
41690      6-1.680D-03, 2.340D-03, 4.200D-04,-3.400D-04, 5.000D-05, 1.000D-05/
41691       DATA (((CEHLQ(IX,IT,NX,5,2),IX=1,6),IT=1,6),NX=1,2)/
41692      1 6.478D-02,-4.537D-02, 1.643D-02,-3.490D-03, 2.710D-03,-6.700D-04,
41693      2-2.223D-02,-2.126D-02, 1.247D-02,-6.290D-03, 1.120D-03,-1.440D-03,
41694      3-1.340D-03, 1.362D-02,-6.130D-03,-7.900D-04,-9.000D-04,-2.000D-04,
41695      4 5.080D-03,-3.610D-03, 1.700D-03, 1.830D-03, 6.800D-04, 4.000D-04,
41696      5-3.580D-03, 6.000D-05,-2.600D-04,-1.050D-03,-3.800D-04,-2.300D-04,
41697      6 2.420D-03, 9.300D-04,-1.000D-04, 4.500D-04, 1.700D-04, 1.100D-04,
41698      1 9.868D-01,-1.171D+00, 3.940D-01,-8.459D-02, 1.124D-02,-1.250D-03,
41699      2 1.001D+00,-1.383D+00, 5.044D-01,-1.152D-01, 1.658D-02,-1.830D-03,
41700      3 4.928D-02,-1.368D-01, 9.021D-02,-2.935D-02, 5.800D-03,-6.600D-04,
41701      4-3.133D-02, 5.785D-02,-2.023D-02, 2.630D-03, 1.600D-04,-8.000D-05,
41702      5 8.840D-03,-1.416D-02, 1.900D-03, 5.800D-04,-2.500D-04, 1.000D-05,
41703      6-2.300D-03, 3.080D-03, 5.500D-04,-3.700D-04, 7.000D-05, 1.000D-05/
41704 C...Expansion coefficients for charm sea quark distribution.
41705       DATA (((CEHLQ(IX,IT,NX,6,1),IX=1,6),IT=1,6),NX=1,2)/
41706      1 9.270D-03,-1.817D-02, 9.590D-03,-6.390D-03, 1.690D-03,-1.540D-03,
41707      2 5.710D-03,-1.188D-02, 6.090D-03,-4.650D-03, 1.240D-03,-1.310D-03,
41708      3-3.960D-03, 7.100D-03,-3.590D-03, 1.840D-03,-3.900D-04, 3.400D-04,
41709      4 1.120D-03,-1.960D-03, 1.120D-03,-4.800D-04, 1.000D-04,-4.000D-05,
41710      5 4.000D-05,-3.000D-05,-1.800D-04, 9.000D-05,-5.000D-05,-2.000D-05,
41711      6-4.200D-04, 7.300D-04,-1.600D-04, 5.000D-05, 5.000D-05, 5.000D-05,
41712      1 8.098D-01,-1.042D+00, 3.398D-01,-6.824D-02, 8.760D-03,-9.000D-04,
41713      2 8.961D-01,-1.217D+00, 4.339D-01,-9.287D-02, 1.304D-02,-1.290D-03,
41714      3 3.058D-02,-1.040D-01, 7.604D-02,-2.415D-02, 4.600D-03,-5.000D-04,
41715      4-2.451D-02, 4.432D-02,-1.651D-02, 1.430D-03, 1.200D-04,-1.000D-04,
41716      5 1.122D-02,-1.457D-02, 2.680D-03, 5.800D-04,-1.200D-04, 3.000D-05,
41717      6-7.730D-03, 7.330D-03,-7.600D-04,-2.400D-04, 1.000D-05, 0.000D+00/
41718       DATA (((CEHLQ(IX,IT,NX,6,2),IX=1,6),IT=1,6),NX=1,2)/
41719      1 9.980D-03,-1.945D-02, 1.055D-02,-6.870D-03, 1.860D-03,-1.560D-03,
41720      2 5.700D-03,-1.203D-02, 6.250D-03,-4.860D-03, 1.310D-03,-1.370D-03,
41721      3-4.490D-03, 7.990D-03,-4.170D-03, 2.050D-03,-4.400D-04, 3.300D-04,
41722      4 1.470D-03,-2.480D-03, 1.460D-03,-5.700D-04, 1.200D-04,-1.000D-05,
41723      5-9.000D-05, 1.500D-04,-3.200D-04, 1.200D-04,-6.000D-05,-4.000D-05,
41724      6-4.200D-04, 7.600D-04,-1.400D-04, 4.000D-05, 7.000D-05, 5.000D-05,
41725      1 8.698D-01,-1.131D+00, 3.836D-01,-8.111D-02, 1.048D-02,-1.300D-03,
41726      2 9.626D-01,-1.321D+00, 4.854D-01,-1.091D-01, 1.583D-02,-1.700D-03,
41727      3 3.057D-02,-1.088D-01, 8.022D-02,-2.676D-02, 5.590D-03,-5.600D-04,
41728      4-2.845D-02, 5.164D-02,-1.918D-02, 2.210D-03,-4.000D-05,-1.500D-04,
41729      5 1.311D-02,-1.751D-02, 3.310D-03, 5.100D-04,-1.200D-04, 5.000D-05,
41730      6-8.590D-03, 8.380D-03,-9.200D-04,-2.600D-04, 1.000D-05,-1.000D-05/
41731 C...Expansion coefficients for bottom sea quark distribution.
41732       DATA (((CEHLQ(IX,IT,NX,7,1),IX=1,6),IT=1,6),NX=1,2)/
41733      1 9.010D-03,-1.401D-02, 7.150D-03,-4.130D-03, 1.260D-03,-1.040D-03,
41734      2 6.280D-03,-9.320D-03, 4.780D-03,-2.890D-03, 9.100D-04,-8.200D-04,
41735      3-2.930D-03, 4.090D-03,-1.890D-03, 7.600D-04,-2.300D-04, 1.400D-04,
41736      4 3.900D-04,-1.200D-03, 4.400D-04,-2.500D-04, 2.000D-05,-2.000D-05,
41737      5 2.600D-04, 1.400D-04,-8.000D-05, 1.000D-04, 1.000D-05, 1.000D-05,
41738      6-2.600D-04, 3.200D-04, 1.000D-05,-1.000D-05, 1.000D-05,-1.000D-05,
41739      1 8.029D-01,-1.075D+00, 3.792D-01,-7.843D-02, 1.007D-02,-1.090D-03,
41740      2 7.903D-01,-1.099D+00, 4.153D-01,-9.301D-02, 1.317D-02,-1.410D-03,
41741      3-1.704D-02,-1.130D-02, 2.882D-02,-1.341D-02, 3.040D-03,-3.600D-04,
41742      4-7.200D-04, 7.230D-03,-5.160D-03, 1.080D-03,-5.000D-05,-4.000D-05,
41743      5 3.050D-03,-4.610D-03, 1.660D-03,-1.300D-04,-1.000D-05, 1.000D-05,
41744      6-4.360D-03, 5.230D-03,-1.610D-03, 2.000D-04,-2.000D-05, 0.000D+00/
41745       DATA (((CEHLQ(IX,IT,NX,7,2),IX=1,6),IT=1,6),NX=1,2)/
41746      1 8.980D-03,-1.459D-02, 7.510D-03,-4.410D-03, 1.310D-03,-1.070D-03,
41747      2 5.970D-03,-9.440D-03, 4.800D-03,-3.020D-03, 9.100D-04,-8.500D-04,
41748      3-3.050D-03, 4.440D-03,-2.100D-03, 8.500D-04,-2.400D-04, 1.400D-04,
41749      4 5.300D-04,-1.300D-03, 5.600D-04,-2.700D-04, 3.000D-05,-2.000D-05,
41750      5 2.000D-04, 1.400D-04,-1.100D-04, 1.000D-04, 0.000D+00, 0.000D+00,
41751      6-2.600D-04, 3.200D-04, 0.000D+00,-3.000D-05, 1.000D-05,-1.000D-05,
41752      1 8.672D-01,-1.174D+00, 4.265D-01,-9.252D-02, 1.244D-02,-1.460D-03,
41753      2 8.500D-01,-1.194D+00, 4.630D-01,-1.083D-01, 1.614D-02,-1.830D-03,
41754      3-2.241D-02,-5.630D-03, 2.815D-02,-1.425D-02, 3.520D-03,-4.300D-04,
41755      4-7.300D-04, 8.030D-03,-5.780D-03, 1.380D-03,-1.300D-04,-4.000D-05,
41756      5 3.460D-03,-5.380D-03, 1.960D-03,-2.100D-04, 1.000D-05, 1.000D-05,
41757      6-4.850D-03, 5.950D-03,-1.890D-03, 2.600D-04,-3.000D-05, 0.000D+00/
41758 C...Expansion coefficients for top sea quark distribution.
41759       DATA (((CEHLQ(IX,IT,NX,8,1),IX=1,6),IT=1,6),NX=1,2)/
41760      1 4.410D-03,-7.480D-03, 3.770D-03,-2.580D-03, 7.300D-04,-7.100D-04,
41761      2 3.840D-03,-6.050D-03, 3.030D-03,-2.030D-03, 5.800D-04,-5.900D-04,
41762      3-8.800D-04, 1.660D-03,-7.500D-04, 4.700D-04,-1.000D-04, 1.000D-04,
41763      4-8.000D-05,-1.500D-04, 1.200D-04,-9.000D-05, 3.000D-05, 0.000D+00,
41764      5 1.300D-04,-2.200D-04,-2.000D-05,-2.000D-05,-2.000D-05,-2.000D-05,
41765      6-7.000D-05, 1.900D-04,-4.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
41766      1 6.623D-01,-9.248D-01, 3.519D-01,-7.930D-02, 1.110D-02,-1.180D-03,
41767      2 6.380D-01,-9.062D-01, 3.582D-01,-8.479D-02, 1.265D-02,-1.390D-03,
41768      3-2.581D-02, 2.125D-02, 4.190D-03,-4.980D-03, 1.490D-03,-2.100D-04,
41769      4 7.100D-04, 5.300D-04,-1.270D-03, 3.900D-04,-5.000D-05,-1.000D-05,
41770      5 3.850D-03,-5.060D-03, 1.860D-03,-3.500D-04, 4.000D-05, 0.000D+00,
41771      6-3.530D-03, 4.460D-03,-1.500D-03, 2.700D-04,-3.000D-05, 0.000D+00/
41772       DATA (((CEHLQ(IX,IT,NX,8,2),IX=1,6),IT=1,6),NX=1,2)/
41773      1 4.260D-03,-7.530D-03, 3.830D-03,-2.680D-03, 7.600D-04,-7.300D-04,
41774      2 3.640D-03,-6.050D-03, 3.030D-03,-2.090D-03, 5.900D-04,-6.000D-04,
41775      3-9.200D-04, 1.710D-03,-8.200D-04, 5.000D-04,-1.200D-04, 1.000D-04,
41776      4-5.000D-05,-1.600D-04, 1.300D-04,-9.000D-05, 3.000D-05, 0.000D+00,
41777      5 1.300D-04,-2.100D-04,-1.000D-05,-2.000D-05,-2.000D-05,-1.000D-05,
41778      6-8.000D-05, 1.800D-04,-5.000D-05, 2.000D-05, 0.000D+00, 0.000D+00,
41779      1 7.146D-01,-1.007D+00, 3.932D-01,-9.246D-02, 1.366D-02,-1.540D-03,
41780      2 6.856D-01,-9.828D-01, 3.977D-01,-9.795D-02, 1.540D-02,-1.790D-03,
41781      3-3.053D-02, 2.758D-02, 2.150D-03,-4.880D-03, 1.640D-03,-2.500D-04,
41782      4 9.200D-04, 4.200D-04,-1.340D-03, 4.600D-04,-8.000D-05,-1.000D-05,
41783      5 4.230D-03,-5.660D-03, 2.140D-03,-4.300D-04, 6.000D-05, 0.000D+00,
41784      6-3.890D-03, 5.000D-03,-1.740D-03, 3.300D-04,-4.000D-05, 0.000D+00/
41785  
41786 C...The following data lines are coefficients needed in the
41787 C...Duke, Owens proton structure function parametrizations, see below.
41788 C...Expansion coefficients for (up+down) valence quark distribution.
41789       DATA ((CDO(IP,IS,1,1),IS=1,6),IP=1,3)/
41790      1 4.190D-01, 3.460D+00, 4.400D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41791      2 4.000D-03, 7.240D-01,-4.860D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41792      3-7.000D-03,-6.600D-02, 1.330D+00, 0.000D+00, 0.000D+00, 0.000D+00/
41793       DATA ((CDO(IP,IS,1,2),IS=1,6),IP=1,3)/
41794      1 3.740D-01, 3.330D+00, 6.030D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41795      2 1.400D-02, 7.530D-01,-6.220D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41796      3 0.000D+00,-7.600D-02, 1.560D+00, 0.000D+00, 0.000D+00, 0.000D+00/
41797 C...Expansion coefficients for down valence quark distribution.
41798       DATA ((CDO(IP,IS,2,1),IS=1,6),IP=1,3)/
41799      1 7.630D-01, 4.000D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41800      2-2.370D-01, 6.270D-01,-4.210D-01, 0.000D+00, 0.000D+00, 0.000D+00,
41801      3 2.600D-02,-1.900D-02, 3.300D-02, 0.000D+00, 0.000D+00, 0.000D+00/
41802       DATA ((CDO(IP,IS,2,2),IS=1,6),IP=1,3)/
41803      1 7.610D-01, 3.830D+00, 0.000D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41804      2-2.320D-01, 6.270D-01,-4.180D-01, 0.000D+00, 0.000D+00, 0.000D+00,
41805      3 2.300D-02,-1.900D-02, 3.600D-02, 0.000D+00, 0.000D+00, 0.000D+00/
41806 C...Expansion coefficients for (up+down+strange) sea quark distribution.
41807       DATA ((CDO(IP,IS,3,1),IS=1,6),IP=1,3)/
41808      1 1.265D+00, 0.000D+00, 8.050D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41809      2-1.132D+00,-3.720D-01, 1.590D+00, 6.310D+00,-1.050D+01, 1.470D+01,
41810      3 2.930D-01,-2.900D-02,-1.530D-01,-2.730D-01,-3.170D+00, 9.800D+00/
41811       DATA ((CDO(IP,IS,3,2),IS=1,6),IP=1,3)/
41812      1 1.670D+00, 0.000D+00, 9.150D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41813      2-1.920D+00,-2.730D-01, 5.300D-01, 1.570D+01,-1.010D+02, 2.230D+02,
41814      3 5.820D-01,-1.640D-01,-7.630D-01,-2.830D+00, 4.470D+01,-1.170D+02/
41815 C...Expansion coefficients for charm sea quark distribution.
41816       DATA ((CDO(IP,IS,4,1),IS=1,6),IP=1,3)/
41817      1 0.000D+00,-3.600D-02, 6.350D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41818      2 1.350D-01,-2.220D-01, 3.260D+00,-3.030D+00, 1.740D+01,-1.790D+01,
41819      3-7.500D-02,-5.800D-02,-9.090D-01, 1.500D+00,-1.130D+01, 1.560D+01/
41820        DATA ((CDO(IP,IS,4,2),IS=1,6),IP=1,3)/
41821      1 0.000D+00,-1.200D-01, 3.510D+00, 0.000D+00, 0.000D+00, 0.000D+00,
41822      2 6.700D-02,-2.330D-01, 3.660D+00,-4.740D-01, 9.500D+00,-1.660D+01,
41823      3-3.100D-02,-2.300D-02,-4.530D-01, 3.580D-01,-5.430D+00, 1.550D+01/
41824 C...Expansion coefficients for gluon distribution.
41825       DATA ((CDO(IP,IS,5,1),IS=1,6),IP=1,3)/
41826      1 1.560D+00, 0.000D+00, 6.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
41827      2-1.710D+00,-9.490D-01, 1.440D+00,-7.190D+00,-1.650D+01, 1.530D+01,
41828      3 6.380D-01, 3.250D-01,-1.050D+00, 2.550D-01, 1.090D+01,-1.010D+01/
41829       DATA ((CDO(IP,IS,5,2),IS=1,6),IP=1,3)/
41830      1 8.790D-01, 0.000D+00, 4.000D+00, 9.000D+00, 0.000D+00, 0.000D+00,
41831      2-9.710D-01,-1.160D+00, 1.230D+00,-5.640D+00,-7.540D+00,-5.960D-01,
41832      3 4.340D-01, 4.760D-01,-2.540D-01,-8.170D-01, 5.500D+00, 1.260D-01/
41833  
41834 C...Euler's beta function, requires ordinary Gamma function
41835       EULBET(X,Y)=PYGAMM(X)*PYGAMM(Y)/PYGAMM(X+Y)
41836  
41837 C...Leading order proton parton distributions from Glueck, Reya and
41838 C...Vogt. Allowed variable range: 0.25 GeV^2 < Q^2 < 10^8 GeV^2 and
41839 C...10^-5 < x < 1.
41840       IF(MSTP(51).EQ.11) THEN
41841  
41842 C...Determine s expansion variable and some x expressions.
41843         Q2IN=MIN(1D8,MAX(0.25D0,Q2))
41844         SD=LOG(LOG(Q2IN/0.232D0**2)/LOG(0.25D0/0.232D0**2))
41845         SD2=SD**2
41846         XL=-LOG(X)
41847         XS=SQRT(X)
41848  
41849 C...Evaluate valence, gluon and sea distributions.
41850         XFVUD=(0.663D0+0.191D0*SD-0.041D0*SD2+0.031D0*SD**3)*
41851      &  X**0.326D0*(1D0+(-1.97D0+6.74D0*SD-1.96D0*SD2)*XS+
41852      &  (24.4D0-20.7D0*SD+4.08D0*SD2)*X)*
41853      &  (1D0-X)**(2.86D0+0.70D0*SD-0.02D0*SD2)
41854         XFVDD=(0.579D0+0.283D0*SD+0.047D0*SD2)*X**(0.523D0-0.015D0*SD)*
41855      &  (1D0+(2.22D0-0.59D0*SD-0.27D0*SD2)*XS+(5.95D0-6.19D0*SD+
41856      &  1.55D0*SD2)*X)*(1D0-X)**(3.57D0+0.94D0*SD-0.16D0*SD2)
41857         XFGLU=(X**(1.00D0-0.17D0*SD)*((4.879D0*SD-1.383D0*SD2)+
41858      &  (25.92D0-28.97D0*SD+5.596D0*SD2)*X+(-25.69D0+23.68D0*SD-
41859      &  1.975D0*SD2)*X**2)+SD**0.558D0*EXP(-(0.595D0+2.138D0*SD)+
41860      &  SQRT(4.066D0*SD**1.218D0*XL)))*
41861      &  (1D0-X)**(2.537D0+1.718D0*SD+0.353D0*SD2)
41862         XFSEA=(X**(0.412D0-0.171D0*SD)*(0.363D0-1.196D0*X+(1.029D0+
41863      &  1.785D0*SD-0.459D0*SD2)*X**2)*XL**(0.566D0-0.496D0*SD)+
41864      &  SD**1.396D0*EXP(-(3.838D0+1.944D0*SD)+SQRT(2.845D0*SD**1.331D0*
41865      &  XL)))*(1D0-X)**(4.696D0+2.109D0*SD)
41866         XFSTR=SD**0.803D0*(1D0+(-3.055D0+1.024D0*SD**0.67D0)*XS+
41867      &  (27.4D0-20.0D0*SD**0.154D0)*X)*(1D0-X)**6.22D0*
41868      &  EXP(-(4.33D0+1.408D0*SD)+SQRT((8.27D0-0.437D0*SD)*
41869      &  SD**0.563D0*XL))/XL**(2.082D0-0.577D0*SD)
41870         IF(SD.LE.0.888D0) THEN
41871           XFCHM=0D0
41872         ELSE
41873           XFCHM=(SD-0.888D0)**1.01D0*(1.+(4.24D0-0.804D0*SD)*X)*
41874      &    (1D0-X)**(3.46D0+1.076D0*SD)*EXP(-(4.61D0+1.49D0*SD)+
41875      &    SQRT((2.555D0+1.961D0*SD)*SD**0.37D0*XL))
41876         ENDIF
41877         IF(SD.LE.1.351D0) THEN
41878           XFBOT=0D0
41879         ELSE
41880           XFBOT=(SD-1.351D0)*(1D0+1.848D0*X)*(1D0-X)**(2.929D0+
41881      &    1.396D0*SD)*EXP(-(4.71D0+1.514D0*SD)+
41882      &    SQRT((4.02D0+1.239D0*SD)*SD**0.51D0*XL))
41883         ENDIF
41884  
41885 C...Put into output array.
41886         XPPR(0)=XFGLU
41887         XPPR(1)=XFVDD+XFSEA
41888         XPPR(2)=XFVUD-XFVDD+XFSEA
41889         XPPR(3)=XFSTR
41890         XPPR(4)=XFCHM
41891         XPPR(5)=XFBOT
41892         XPPR(-1)=XFSEA
41893         XPPR(-2)=XFSEA
41894         XPPR(-3)=XFSTR
41895         XPPR(-4)=XFCHM
41896         XPPR(-5)=XFBOT
41897  
41898 C...Proton parton distributions from Eichten, Hinchliffe, Lane, Quigg.
41899 C...Allowed variable range: 5 GeV^2 < Q^2 < 1E8 GeV^2; 1E-4 < x < 1
41900       ELSEIF(MSTP(51).EQ.12.OR.MSTP(51).EQ.13) THEN
41901  
41902 C...Determine set, Lambda and x and t expansion variables.
41903         NSET=MSTP(51)-11
41904         IF(NSET.EQ.1) ALAM=0.2D0
41905         IF(NSET.EQ.2) ALAM=0.29D0
41906         TMIN=LOG(5D0/ALAM**2)
41907         TMAX=LOG(1D8/ALAM**2)
41908         T=LOG(MAX(1D0,Q2/ALAM**2))
41909         VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41910         NX=1
41911         IF(X.LE.0.1D0) NX=2
41912         IF(NX.EQ.1) VX=(2D0*X-1.1D0)/0.9D0
41913         IF(NX.EQ.2) VX=MAX(-1D0,(2D0*LOG(X)+11.51293D0)/6.90776D0)
41914  
41915 C...Chebyshev polynomials for x and t expansion.
41916         TX(1)=1D0
41917         TX(2)=VX
41918         TX(3)=2D0*VX**2-1D0
41919         TX(4)=4D0*VX**3-3D0*VX
41920         TX(5)=8D0*VX**4-8D0*VX**2+1D0
41921         TX(6)=16D0*VX**5-20D0*VX**3+5D0*VX
41922         TT(1)=1D0
41923         TT(2)=VT
41924         TT(3)=2D0*VT**2-1D0
41925         TT(4)=4D0*VT**3-3D0*VT
41926         TT(5)=8D0*VT**4-8D0*VT**2+1D0
41927         TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41928  
41929 C...Calculate structure functions.
41930         DO 120 KFL=1,6
41931           XQSUM=0D0
41932           DO 110 IT=1,6
41933             DO 100 IX=1,6
41934               XQSUM=XQSUM+CEHLQ(IX,IT,NX,KFL,NSET)*TX(IX)*TT(IT)
41935   100       CONTINUE
41936   110     CONTINUE
41937           XQ(KFL)=XQSUM*(1D0-X)**NEHLQ(KFL,NSET)
41938   120   CONTINUE
41939  
41940 C...Put into output array.
41941         XPPR(0)=XQ(4)
41942         XPPR(1)=XQ(2)+XQ(3)
41943         XPPR(2)=XQ(1)+XQ(3)
41944         XPPR(3)=XQ(5)
41945         XPPR(4)=XQ(6)
41946         XPPR(-1)=XQ(3)
41947         XPPR(-2)=XQ(3)
41948         XPPR(-3)=XQ(5)
41949         XPPR(-4)=XQ(6)
41950  
41951 C...Special expansion for bottom (threshold effects).
41952         IF(MSTP(58).GE.5) THEN
41953           IF(NSET.EQ.1) TMIN=8.1905D0
41954           IF(NSET.EQ.2) TMIN=7.4474D0
41955           IF(T.GT.TMIN) THEN
41956             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41957             TT(1)=1D0
41958             TT(2)=VT
41959             TT(3)=2D0*VT**2-1D0
41960             TT(4)=4D0*VT**3-3D0*VT
41961             TT(5)=8D0*VT**4-8D0*VT**2+1D0
41962             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41963             XQSUM=0D0
41964             DO 140 IT=1,6
41965               DO 130 IX=1,6
41966                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,7,NSET)*TX(IX)*TT(IT)
41967   130         CONTINUE
41968   140       CONTINUE
41969             XPPR(5)=XQSUM*(1D0-X)**NEHLQ(7,NSET)
41970             XPPR(-5)=XPPR(5)
41971           ENDIF
41972         ENDIF
41973  
41974 C...Special expansion for top (threshold effects).
41975         IF(MSTP(58).GE.6) THEN
41976           IF(NSET.EQ.1) TMIN=11.5528D0
41977           IF(NSET.EQ.2) TMIN=10.8097D0
41978           TMIN=TMIN+2D0*LOG(PMAS(6,1)/30D0)
41979           TMAX=TMAX+2D0*LOG(PMAS(6,1)/30D0)
41980           IF(T.GT.TMIN) THEN
41981             VT=MAX(-1D0,MIN(1D0,(2D0*T-TMAX-TMIN)/(TMAX-TMIN)))
41982             TT(1)=1D0
41983             TT(2)=VT
41984             TT(3)=2D0*VT**2-1D0
41985             TT(4)=4D0*VT**3-3D0*VT
41986             TT(5)=8D0*VT**4-8D0*VT**2+1D0
41987             TT(6)=16D0*VT**5-20D0*VT**3+5D0*VT
41988             XQSUM=0D0
41989             DO 160 IT=1,6
41990               DO 150 IX=1,6
41991                 XQSUM=XQSUM+CEHLQ(IX,IT,NX,8,NSET)*TX(IX)*TT(IT)
41992   150         CONTINUE
41993   160       CONTINUE
41994             XPPR(6)=XQSUM*(1D0-X)**NEHLQ(8,NSET)
41995             XPPR(-6)=XPPR(6)
41996           ENDIF
41997         ENDIF
41998  
41999 C...Proton parton distributions from Duke, Owens.
42000 C...Allowed variable range: 4 GeV^2 < Q^2 < approx 1E6 GeV^2.
42001       ELSEIF(MSTP(51).EQ.14.OR.MSTP(51).EQ.15) THEN
42002  
42003 C...Determine set, Lambda and s expansion parameter.
42004         NSET=MSTP(51)-13
42005         IF(NSET.EQ.1) ALAM=0.2D0
42006         IF(NSET.EQ.2) ALAM=0.4D0
42007         Q2IN=MIN(1D6,MAX(4D0,Q2))
42008         SD=LOG(LOG(Q2IN/ALAM**2)/LOG(4D0/ALAM**2))
42009  
42010 C...Calculate structure functions.
42011         DO 180 KFL=1,5
42012           DO 170 IS=1,6
42013             TS(IS)=CDO(1,IS,KFL,NSET)+CDO(2,IS,KFL,NSET)*SD+
42014      &      CDO(3,IS,KFL,NSET)*SD**2
42015   170     CONTINUE
42016           IF(KFL.LE.2) THEN
42017             XQ(KFL)=X**TS(1)*(1D0-X)**TS(2)*(1D0+TS(3)*X)/(EULBET(TS(1),
42018      &      TS(2)+1D0)*(1D0+TS(3)*TS(1)/(TS(1)+TS(2)+1D0)))
42019           ELSE
42020             XQ(KFL)=TS(1)*X**TS(2)*(1D0-X)**TS(3)*(1D0+TS(4)*X+
42021      &      TS(5)*X**2+TS(6)*X**3)
42022           ENDIF
42023   180   CONTINUE
42024  
42025 C...Put into output arrays.
42026         XPPR(0)=XQ(5)
42027         XPPR(1)=XQ(2)+XQ(3)/6D0
42028         XPPR(2)=3D0*XQ(1)-XQ(2)+XQ(3)/6D0
42029         XPPR(3)=XQ(3)/6D0
42030         XPPR(4)=XQ(4)
42031         XPPR(-1)=XQ(3)/6D0
42032         XPPR(-2)=XQ(3)/6D0
42033         XPPR(-3)=XQ(3)/6D0
42034         XPPR(-4)=XQ(4)
42035  
42036       ENDIF
42037  
42038       RETURN
42039       END
42040  
42041 C*********************************************************************
42042  
42043 C...PYHFTH
42044 C...Gives threshold attractive/repulsive factor for heavy flavour
42045 C...production.
42046  
42047       FUNCTION PYHFTH(SH,SQM,FRATT)
42048  
42049 C...Double precision and integer declarations.
42050       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42051       IMPLICIT INTEGER(I-N)
42052       INTEGER PYK,PYCHGE,PYCOMP
42053 C...Commonblocks.
42054       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42055       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42056       COMMON/PYINT1/MINT(400),VINT(400)
42057       SAVE /PYDAT1/,/PYPARS/,/PYINT1/
42058  
42059 C...Value for alpha_strong.
42060       IF(MSTP(35).LE.1) THEN
42061         ALSSG=PARP(35)
42062       ELSE
42063         MST115=MSTU(115)
42064         MSTU(115)=MSTP(36)
42065         Q2BN=SQRT(MAX(1D0,SQM*((SQRT(SH)-2D0*SQRT(SQM))**2+
42066      &  PARP(36)**2)))
42067         ALSSG=PYALPS(Q2BN)
42068         MSTU(115)=MST115
42069       ENDIF
42070  
42071 C...Evaluate attractive and repulsive factors.
42072       XATTR=4D0*PARU(1)*ALSSG/(3D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
42073       FATTR=XATTR/(1D0-EXP(-MIN(50D0,XATTR)))
42074       XREPU=PARU(1)*ALSSG/(6D0*SQRT(MAX(1D-20,1D0-4D0*SQM/SH)))
42075       FREPU=XREPU/(EXP(MIN(50D0,XREPU))-1D0)
42076       PYHFTH=FRATT*FATTR+(1D0-FRATT)*FREPU
42077       VINT(138)=PYHFTH
42078  
42079       RETURN
42080       END
42081  
42082 C*********************************************************************
42083  
42084 C...PYSPLI
42085 C...Splits a hadron remnant into two (partons or hadron + parton)
42086 C...in case it is more complicated than just a quark or a diquark.
42087  
42088       SUBROUTINE PYSPLI(KF,KFLIN,KFLCH,KFLSP)
42089  
42090 C...Double precision and integer declarations.
42091       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42092       IMPLICIT INTEGER(I-N)
42093       INTEGER PYK,PYCHGE,PYCOMP
42094 C...Commonblocks. PYDAT1 temporary
42095       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42096       COMMON/PYINT1/MINT(400),VINT(400)
42097       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42098       SAVE /PYPARS/,/PYINT1/,/PYDAT1/
42099 C...Local array.
42100       DIMENSION KFL(3)
42101  
42102 C...Preliminaries. Parton composition.
42103       KFA=IABS(KF)
42104       KFS=ISIGN(1,KF)
42105       KFL(1)=MOD(KFA/1000,10)
42106       KFL(2)=MOD(KFA/100,10)
42107       KFL(3)=MOD(KFA/10,10)
42108       IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
42109         KFL(2)=INT(1.5D0+PYR(0))
42110         IF(MINT(105).EQ.333) KFL(2)=3
42111         IF(MINT(105).EQ.443) KFL(2)=4
42112         KFL(3)=KFL(2)
42113       ELSEIF((KFA.EQ.111.OR.KFA.EQ.113).AND.PYR(0).GT.0.5D0) THEN
42114         KFL(2)=2
42115         KFL(3)=2
42116       ELSEIF(KFA.EQ.223.AND.PYR(0).GT.0.5D0) THEN
42117         KFL(2)=1
42118         KFL(3)=1
42119       ELSEIF((KFA.EQ.130.OR.KFA.EQ.310).AND.PYR(0).GT.0.5D0) THEN
42120         KFL(2)=MOD(KFA/10,10)
42121         KFL(3)=MOD(KFA/100,10)
42122       ENDIF
42123       IF(KFLIN.NE.21.AND.KFLIN.NE.22.AND.KFLIN.NE.23) THEN
42124         KFLR=KFLIN*KFS
42125       ELSE
42126         KFLR=KFLIN
42127       ENDIF
42128       KFLCH=0
42129  
42130 C...Subdivide lepton.
42131       IF(KFA.GE.11.AND.KFA.LE.18) THEN
42132         IF(KFLR.EQ.KFA) THEN
42133           KFLSP=KFS*22
42134         ELSEIF(KFLR.EQ.22) THEN
42135           KFLSP=KFA
42136         ELSEIF(KFLR.EQ.-24.AND.MOD(KFA,2).EQ.1) THEN
42137           KFLSP=KFA+1
42138         ELSEIF(KFLR.EQ.24.AND.MOD(KFA,2).EQ.0) THEN
42139           KFLSP=KFA-1
42140         ELSEIF(KFLR.EQ.21) THEN
42141           KFLSP=KFA
42142           KFLCH=KFS*21
42143         ELSE
42144           KFLSP=KFA
42145           KFLCH=-KFLR
42146         ENDIF
42147  
42148 C...Subdivide photon.
42149       ELSEIF(KFA.EQ.22.AND.MINT(109).NE.2) THEN
42150         IF(KFLR.NE.21) THEN
42151           KFLSP=-KFLR
42152         ELSE
42153           RAGR=0.75D0*PYR(0)
42154           KFLSP=1
42155           IF(RAGR.GT.0.125D0) KFLSP=2
42156           IF(RAGR.GT.0.625D0) KFLSP=3
42157           IF(PYR(0).GT.0.5D0) KFLSP=-KFLSP
42158           KFLCH=-KFLSP
42159         ENDIF
42160  
42161 C...Subdivide Reggeon or Pomeron.
42162       ELSEIF(KFA.EQ.110.OR.KFA.EQ.990) THEN
42163         IF(KFLIN.EQ.21) THEN
42164           KFLSP=KFS*21
42165         ELSE
42166           KFLSP=-KFLIN
42167         ENDIF
42168  
42169 C...Subdivide meson.
42170       ELSEIF(KFL(1).EQ.0) THEN
42171         KFL(2)=KFL(2)*(-1)**KFL(2)
42172         KFL(3)=-KFL(3)*(-1)**IABS(KFL(2))
42173         IF(KFLR.EQ.KFL(2)) THEN
42174           KFLSP=KFL(3)
42175         ELSEIF(KFLR.EQ.KFL(3)) THEN
42176           KFLSP=KFL(2)
42177         ELSEIF(KFLR.EQ.21.AND.PYR(0).GT.0.5D0) THEN
42178           KFLSP=KFL(2)
42179           KFLCH=KFL(3)
42180         ELSEIF(KFLR.EQ.21) THEN
42181           KFLSP=KFL(3)
42182           KFLCH=KFL(2)
42183         ELSEIF(KFLR*KFL(2).GT.0) THEN
42184           NTRY=0
42185   100     NTRY=NTRY+1
42186           CALL PYKFDI(-KFLR,KFL(2),KFDUMP,KFLCH)
42187           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
42188             GOTO 100
42189           ELSEIF(KFLCH.EQ.0) THEN
42190             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
42191             MINT(51)=1
42192             RETURN
42193           ENDIF
42194           KFLSP=KFL(3)
42195         ELSE
42196           NTRY=0
42197   110     NTRY=NTRY+1
42198           CALL PYKFDI(-KFLR,KFL(3),KFDUMP,KFLCH)
42199           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
42200             GOTO 110
42201           ELSEIF(KFLCH.EQ.0) THEN
42202             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
42203             MINT(51)=1
42204             RETURN
42205           ENDIF
42206           KFLSP=KFL(2)
42207         ENDIF
42208 
42209 C...Special case for extracting photon from baryon without splitting
42210 C...the latter. (Currently only used by external programs.)
42211       ELSEIF(KFLIN.EQ.22.AND.MSTP(98).EQ.1) then
42212         KFLSP=KFA
42213         KFLCH=0
42214  
42215 C...Subdivide baryon.
42216       ELSE
42217         NAGR=0
42218         DO 120 J=1,3
42219           IF(KFLR.EQ.KFL(J)) NAGR=NAGR+1
42220   120   CONTINUE
42221         IF(NAGR.GE.1) THEN
42222           RAGR=0.00001D0+(NAGR-0.00002D0)*PYR(0)
42223           IAGR=0
42224           DO 130 J=1,3
42225             IF(KFLR.EQ.KFL(J)) RAGR=RAGR-1D0
42226             IF(IAGR.EQ.0.AND.RAGR.LE.0D0) IAGR=J
42227   130     CONTINUE
42228         ELSE
42229           IAGR=1.00001D0+2.99998D0*PYR(0)
42230         ENDIF
42231         ID1=1
42232         IF(IAGR.EQ.1) ID1=2
42233         IF(IAGR.EQ.1.AND.KFL(3).GT.KFL(2)) ID1=3
42234         ID2=6-IAGR-ID1
42235         KSP=3
42236         IF(MOD(KFA,10).EQ.2.AND.KFL(1).EQ.KFL(2)) THEN
42237           IF(IAGR.NE.3.AND.PYR(0).GT.0.25D0) KSP=1
42238         ELSEIF(MOD(KFA,10).EQ.2.AND.KFL(2).GE.KFL(3)) THEN
42239           IF(IAGR.NE.1.AND.PYR(0).GT.0.25D0) KSP=1
42240         ELSEIF(MOD(KFA,10).EQ.2) THEN
42241           IF(IAGR.EQ.1) KSP=1
42242           IF(IAGR.NE.1.AND.PYR(0).GT.0.75D0) KSP=1
42243         ENDIF
42244         KFLSP=1000*KFL(ID1)+100*KFL(ID2)+KSP
42245         IF(KFLR.EQ.21) THEN
42246           KFLCH=KFL(IAGR)
42247         ELSEIF(NAGR.EQ.0.AND.KFLR.GT.0) THEN
42248           NTRY=0
42249   140     NTRY=NTRY+1
42250           CALL PYKFDI(-KFLR,KFL(IAGR),KFDUMP,KFLCH)
42251           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
42252             GOTO 140
42253           ELSEIF(KFLCH.EQ.0) THEN
42254             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
42255             MINT(51)=1
42256             RETURN
42257           ENDIF
42258         ELSEIF(NAGR.EQ.0) THEN
42259           NTRY=0
42260   150     NTRY=NTRY+1
42261           CALL PYKFDI(10000*KFL(ID1)+KFLSP,-KFLR,KFDUMP,KFLCH)
42262           IF(KFLCH.EQ.0.AND.NTRY.LT.100) THEN
42263             GOTO 150
42264           ELSEIF(KFLCH.EQ.0) THEN
42265             CALL PYERRM(14,'(PYSPLI:) caught in infinite loop')
42266             MINT(51)=1
42267             RETURN
42268           ENDIF
42269           KFLSP=KFL(IAGR)
42270         ENDIF
42271       ENDIF
42272  
42273 C...Add on correct sign for result.
42274       KFLCH=KFLCH*KFS
42275       KFLSP=KFLSP*KFS
42276  
42277       RETURN
42278       END
42279  
42280 C*********************************************************************
42281  
42282 C...PYGAMM
42283 C...Gives ordinary Gamma function Gamma(x) for positive, real arguments;
42284 C...see M. Abramowitz, I. A. Stegun: Handbook of Mathematical Functions
42285 C...(Dover, 1965) 6.1.36.
42286  
42287       FUNCTION PYGAMM(X)
42288  
42289 C...Double precision and integer declarations.
42290       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42291       IMPLICIT INTEGER(I-N)
42292       INTEGER PYK,PYCHGE,PYCOMP
42293 C...Local array and data.
42294       DIMENSION B(8)
42295       DATA B/-0.577191652D0,0.988205891D0,-0.897056937D0,0.918206857D0,
42296      &-0.756704078D0,0.482199394D0,-0.193527818D0,0.035868343D0/
42297  
42298       NX=INT(X)
42299       DX=X-NX
42300  
42301       PYGAMM=1D0
42302       DXP=1D0
42303       DO 100 I=1,8
42304         DXP=DXP*DX
42305         PYGAMM=PYGAMM+B(I)*DXP
42306   100 CONTINUE
42307       IF(X.LT.1D0) THEN
42308         PYGAMM=PYGAMM/X
42309       ELSE
42310         DO 110 IX=1,NX-1
42311           PYGAMM=(X-IX)*PYGAMM
42312   110   CONTINUE
42313       ENDIF
42314  
42315       RETURN
42316       END
42317  
42318 C***********************************************************************
42319  
42320 C...PYWAUX
42321 C...Calculates real and imaginary parts of the auxiliary functions W1
42322 C...and W2; see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van
42323 C...der Bij, Nucl. Phys. B297 (1988) 221.
42324  
42325       SUBROUTINE PYWAUX(IAUX,EPS,WRE,WIM)
42326  
42327 C...Double precision and integer declarations.
42328       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42329       IMPLICIT INTEGER(I-N)
42330       INTEGER PYK,PYCHGE,PYCOMP
42331 C...Commonblocks.
42332       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42333       SAVE /PYDAT1/
42334  
42335       ASINH(X)=LOG(X+SQRT(X**2+1D0))
42336       ACOSH(X)=LOG(X+SQRT(X**2-1D0))
42337  
42338       IF(EPS.LT.0D0) THEN
42339         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ASINH(SQRT(-1D0/EPS))
42340         IF(IAUX.EQ.2) WRE=4D0*(ASINH(SQRT(-1D0/EPS)))**2
42341         WIM=0D0
42342       ELSEIF(EPS.LT.1D0) THEN
42343         IF(IAUX.EQ.1) WRE=2D0*SQRT(1D0-EPS)*ACOSH(SQRT(1D0/EPS))
42344         IF(IAUX.EQ.2) WRE=4D0*(ACOSH(SQRT(1D0/EPS)))**2-PARU(1)**2
42345         IF(IAUX.EQ.1) WIM=-PARU(1)*SQRT(1D0-EPS)
42346         IF(IAUX.EQ.2) WIM=-4D0*PARU(1)*ACOSH(SQRT(1D0/EPS))
42347       ELSE
42348         IF(IAUX.EQ.1) WRE=2D0*SQRT(EPS-1D0)*ASIN(SQRT(1D0/EPS))
42349         IF(IAUX.EQ.2) WRE=-4D0*(ASIN(SQRT(1D0/EPS)))**2
42350         WIM=0D0
42351       ENDIF
42352  
42353       RETURN
42354       END
42355  
42356 C***********************************************************************
42357  
42358 C...PYI3AU
42359 C...Calculates real and imaginary parts of the auxiliary function I3;
42360 C...see R. K. Ellis, I. Hinchliffe, M. Soldate and J. J. van der Bij,
42361 C...Nucl. Phys. B297 (1988) 221.
42362  
42363       SUBROUTINE PYI3AU(EPS,RAT,Y3RE,Y3IM)
42364  
42365 C...Double precision and integer declarations.
42366       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42367       IMPLICIT INTEGER(I-N)
42368       INTEGER PYK,PYCHGE,PYCOMP
42369 C...Commonblocks.
42370       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42371       SAVE /PYDAT1/
42372  
42373       BE=0.5D0*(1D0+SQRT(1D0+RAT*EPS))
42374       IF(EPS.LT.1D0) GA=0.5D0*(1D0+SQRT(1D0-EPS))
42375  
42376       IF(EPS.LT.0D0) THEN
42377         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
42378           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
42379      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
42380      &    PYSPEN(0.25D0*(RAT+1D0)*EPS/(1D0+0.25D0*RAT*EPS),0D0,1)-
42381      &    PYSPEN((RAT+1D0)/RAT,0D0,1)+0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-
42382      &    LOG(0.25D0*RAT*EPS)**2)+LOG(1D0-0.25D0*EPS)*
42383      &    LOG((1D0+0.25D0*(RAT-1D0)*EPS)/(1D0+0.25D0*RAT*EPS))+
42384      &    LOG(-0.25D0*EPS)*LOG(0.25D0*RAT*EPS/(1D0+0.25D0*(RAT-1D0)*
42385      &    EPS))
42386         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
42387           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
42388      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
42389      &    PYSPEN((BE-1D0+0.25D0*EPS)/BE,0D0,1)-
42390      &    PYSPEN((BE-1D0+0.25D0*EPS)/(BE-1D0),0D0,1)+
42391      &    0.5D0*(LOG(BE)**2-LOG(BE-1D0)**2)+
42392      &    LOG(1D0-0.25D0*EPS)*LOG((BE-0.25D0*EPS)/BE)+
42393      &    LOG(-0.25D0*EPS)*LOG((BE-1D0)/(BE-0.25D0*EPS))
42394         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
42395           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
42396      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
42397      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(1D0+0.25D0*RAT*EPS),0D0,1)-
42398      &    PYSPEN((1D0+0.25D0*RAT*EPS-GA)/(0.25D0*RAT*EPS),0D0,1)+
42399      &    0.5D0*(LOG(1D0+0.25D0*RAT*EPS)**2-LOG(0.25D0*RAT*EPS)**2)+
42400      &    LOG(GA)*LOG((GA+0.25D0*RAT*EPS)/(1D0+0.25D0*RAT*EPS))+
42401      &    LOG(GA-1D0)*LOG(0.25D0*RAT*EPS/(GA+0.25D0*RAT*EPS))
42402         ELSE
42403           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
42404      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN((BE-GA)/BE,0D0,1)-
42405      &    PYSPEN((BE-GA)/(BE-1D0),0D0,1)+0.5D0*(LOG(BE)**2-
42406      &    LOG(BE-1D0)**2)+LOG(GA)*LOG((GA+BE-1D0)/BE)+
42407      &    LOG(GA-1D0)*LOG((BE-1D0)/(GA+BE-1D0))
42408         ENDIF
42409         F3IM=0D0
42410       ELSEIF(EPS.LT.1D0) THEN
42411         IF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
42412           F3RE=PYSPEN(-0.25D0*EPS/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)-
42413      &    PYSPEN((1D0-0.25D0*EPS)/(1D0+0.25D0*(RAT-1D0)*EPS),0D0,1)+
42414      &    PYSPEN((1D0-0.25D0*EPS)/(-0.25D0*(RAT+1D0)*EPS),0D0,1)-
42415      &    PYSPEN(1D0/(RAT+1D0),0D0,1)+LOG((1D0-0.25D0*EPS)/
42416      &    (0.25D0*EPS))*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
42417      &    (0.25D0*(RAT+1D0)*EPS))
42418           F3IM=-PARU(1)*LOG((1D0+0.25D0*(RAT-1D0)*EPS)/
42419      &    (0.25D0*(RAT+1D0)*EPS))
42420         ELSEIF(ABS(EPS).LT.1D-4.AND.ABS(RAT*EPS).GE.1D-4) THEN
42421           F3RE=PYSPEN(-0.25D0*EPS/(BE-0.25D0*EPS),0D0,1)-
42422      &    PYSPEN((1D0-0.25D0*EPS)/(BE-0.25D0*EPS),0D0,1)+
42423      &    PYSPEN((1D0-0.25D0*EPS)/(1D0-0.25D0*EPS-BE),0D0,1)-
42424      &    PYSPEN(-0.25D0*EPS/(1D0-0.25D0*EPS-BE),0D0,1)+
42425      &    LOG((1D0-0.25D0*EPS)/(0.25D0*EPS))*
42426      &    LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
42427           F3IM=-PARU(1)*LOG((BE-0.25D0*EPS)/(BE-1D0+0.25D0*EPS))
42428         ELSEIF(ABS(EPS).GE.1D-4.AND.ABS(RAT*EPS).LT.1D-4) THEN
42429           F3RE=PYSPEN((GA-1D0)/(GA+0.25D0*RAT*EPS),0D0,1)-
42430      &    PYSPEN(GA/(GA+0.25D0*RAT*EPS),0D0,1)+
42431      &    PYSPEN(GA/(GA-1D0-0.25D0*RAT*EPS),0D0,1)-
42432      &    PYSPEN((GA-1D0)/(GA-1D0-0.25D0*RAT*EPS),0D0,1)+
42433      &    LOG(GA/(1D0-GA))*LOG((GA+0.25D0*RAT*EPS)/
42434      &    (1D0+0.25D0*RAT*EPS-GA))
42435           F3IM=-PARU(1)*LOG((GA+0.25D0*RAT*EPS)/
42436      &    (1D0+0.25D0*RAT*EPS-GA))
42437         ELSE
42438           F3RE=PYSPEN((GA-1D0)/(GA+BE-1D0),0D0,1)-
42439      &    PYSPEN(GA/(GA+BE-1D0),0D0,1)+PYSPEN(GA/(GA-BE),0D0,1)-
42440      &    PYSPEN((GA-1D0)/(GA-BE),0D0,1)+LOG(GA/(1D0-GA))*
42441      &    LOG((GA+BE-1D0)/(BE-GA))
42442           F3IM=-PARU(1)*LOG((GA+BE-1D0)/(BE-GA))
42443         ENDIF
42444       ELSE
42445         RSQ=EPS/(EPS-1D0+(2D0*BE-1D0)**2)
42446         RCTHE=RSQ*(1D0-2D0*BE/EPS)
42447         RSTHE=SQRT(MAX(0D0,RSQ-RCTHE**2))
42448         RCPHI=RSQ*(1D0+2D0*(BE-1D0)/EPS)
42449         RSPHI=SQRT(MAX(0D0,RSQ-RCPHI**2))
42450         R=SQRT(RSQ)
42451         THE=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCTHE/R)))
42452         PHI=ACOS(MAX(-0.999999D0,MIN(0.999999D0,RCPHI/R)))
42453         F3RE=PYSPEN(RCTHE,RSTHE,1)+PYSPEN(RCTHE,-RSTHE,1)-
42454      &  PYSPEN(RCPHI,RSPHI,1)-PYSPEN(RCPHI,-RSPHI,1)+
42455      &  (PHI-THE)*(PHI+THE-PARU(1))
42456         F3IM=PYSPEN(RCTHE,RSTHE,2)+PYSPEN(RCTHE,-RSTHE,2)-
42457      &  PYSPEN(RCPHI,RSPHI,2)-PYSPEN(RCPHI,-RSPHI,2)
42458       ENDIF
42459  
42460       Y3RE=2D0/(2D0*BE-1D0)*F3RE
42461       Y3IM=2D0/(2D0*BE-1D0)*F3IM
42462  
42463       RETURN
42464       END
42465  
42466 C***********************************************************************
42467  
42468 C...PYSPEN
42469 C...Calculates real and imaginary part of Spence function; see
42470 C...G. 't Hooft and M. Veltman, Nucl. Phys. B153 (1979) 365.
42471  
42472       FUNCTION PYSPEN(XREIN,XIMIN,IREIM)
42473  
42474 C...Double precision and integer declarations.
42475       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42476       IMPLICIT INTEGER(I-N)
42477       INTEGER PYK,PYCHGE,PYCOMP
42478 C...Commonblocks.
42479       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42480       SAVE /PYDAT1/
42481 C...Local array and data.
42482       DIMENSION B(0:14)
42483       DATA B/
42484      &1.000000D+00,        -5.000000D-01,         1.666667D-01,
42485      &0.000000D+00,        -3.333333D-02,         0.000000D+00,
42486      &2.380952D-02,         0.000000D+00,        -3.333333D-02,
42487      &0.000000D+00,         7.575757D-02,         0.000000D+00,
42488      &-2.531135D-01,         0.000000D+00,         1.166667D+00/
42489  
42490       XRE=XREIN
42491       XIM=XIMIN
42492       IF(ABS(1D0-XRE).LT.1D-6.AND.ABS(XIM).LT.1D-6) THEN
42493         IF(IREIM.EQ.1) PYSPEN=PARU(1)**2/6D0
42494         IF(IREIM.EQ.2) PYSPEN=0D0
42495         RETURN
42496       ENDIF
42497  
42498       XMOD=SQRT(XRE**2+XIM**2)
42499       IF(XMOD.LT.1D-6) THEN
42500         IF(IREIM.EQ.1) PYSPEN=0D0
42501         IF(IREIM.EQ.2) PYSPEN=0D0
42502         RETURN
42503       ENDIF
42504  
42505       XARG=SIGN(ACOS(XRE/XMOD),XIM)
42506       SP0RE=0D0
42507       SP0IM=0D0
42508       SGN=1D0
42509       IF(XMOD.GT.1D0) THEN
42510         ALGXRE=LOG(XMOD)
42511         ALGXIM=XARG-SIGN(PARU(1),XARG)
42512         SP0RE=-PARU(1)**2/6D0-(ALGXRE**2-ALGXIM**2)/2D0
42513         SP0IM=-ALGXRE*ALGXIM
42514         SGN=-1D0
42515         XMOD=1D0/XMOD
42516         XARG=-XARG
42517         XRE=XMOD*COS(XARG)
42518         XIM=XMOD*SIN(XARG)
42519       ENDIF
42520       IF(XRE.GT.0.5D0) THEN
42521         ALGXRE=LOG(XMOD)
42522         ALGXIM=XARG
42523         XRE=1D0-XRE
42524         XIM=-XIM
42525         XMOD=SQRT(XRE**2+XIM**2)
42526         XARG=SIGN(ACOS(XRE/XMOD),XIM)
42527         ALGYRE=LOG(XMOD)
42528         ALGYIM=XARG
42529         SP0RE=SP0RE+SGN*(PARU(1)**2/6D0-(ALGXRE*ALGYRE-ALGXIM*ALGYIM))
42530         SP0IM=SP0IM-SGN*(ALGXRE*ALGYIM+ALGXIM*ALGYRE)
42531         SGN=-SGN
42532       ENDIF
42533  
42534       XRE=1D0-XRE
42535       XIM=-XIM
42536       XMOD=SQRT(XRE**2+XIM**2)
42537       XARG=SIGN(ACOS(XRE/XMOD),XIM)
42538       ZRE=-LOG(XMOD)
42539       ZIM=-XARG
42540  
42541       SPRE=0D0
42542       SPIM=0D0
42543       SAVERE=1D0
42544       SAVEIM=0D0
42545       DO 100 I=0,14
42546         IF(MAX(ABS(SAVERE),ABS(SAVEIM)).LT.1D-30) GOTO 110
42547         TERMRE=(SAVERE*ZRE-SAVEIM*ZIM)/DBLE(I+1)
42548         TERMIM=(SAVERE*ZIM+SAVEIM*ZRE)/DBLE(I+1)
42549         SAVERE=TERMRE
42550         SAVEIM=TERMIM
42551         SPRE=SPRE+B(I)*TERMRE
42552         SPIM=SPIM+B(I)*TERMIM
42553   100 CONTINUE
42554  
42555   110 IF(IREIM.EQ.1) PYSPEN=SP0RE+SGN*SPRE
42556       IF(IREIM.EQ.2) PYSPEN=SP0IM+SGN*SPIM
42557  
42558       RETURN
42559       END
42560  
42561 C***********************************************************************
42562  
42563 C...PYQQBH
42564 C...Calculates the matrix element for the processes
42565 C...g + g or q + qbar -> Q + Qbar + H (normally with Q = t).
42566 C...REDUCE output and part of the rest courtesy Z. Kunszt, see
42567 C...Z. Kunszt, Nucl. Phys. B247 (1984) 339.
42568  
42569       SUBROUTINE PYQQBH(WTQQBH)
42570  
42571 C...Double precision and integer declarations.
42572       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42573       IMPLICIT INTEGER(I-N)
42574       INTEGER PYK,PYCHGE,PYCOMP
42575 C...Commonblocks.
42576       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42577       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42578       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42579       COMMON/PYINT1/MINT(400),VINT(400)
42580       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
42581       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/
42582 C...Local arrays and function.
42583       DIMENSION PP(15,4),CLR(8,8),FM(10,10),RM(8,8),DX(8)
42584       DOT(I,J)=PP(I,4)*PP(J,4)-PP(I,1)*PP(J,1)-PP(I,2)*PP(J,2)-
42585      &PP(I,3)*PP(J,3)
42586  
42587 C...Mass parameters.
42588       WTQQBH=0D0
42589       ISUB=MINT(1)
42590       SHPR=SQRT(VINT(26))*VINT(1)
42591       PQ=PMAS(PYCOMP(KFPR(ISUB,2)),1)
42592       PH=SQRT(VINT(21))*VINT(1)
42593       SPQ=PQ**2
42594       SPH=PH**2
42595  
42596 C...Set up outgoing kinematics: 1=t, 2=tbar, 3=H.
42597       DO 100 I=1,2
42598         PT=SQRT(MAX(0D0,VINT(197+5*I)))
42599         PP(I,1)=PT*COS(VINT(198+5*I))
42600         PP(I,2)=PT*SIN(VINT(198+5*I))
42601   100 CONTINUE
42602       PP(3,1)=-PP(1,1)-PP(2,1)
42603       PP(3,2)=-PP(1,2)-PP(2,2)
42604       PMS1=SPQ+PP(1,1)**2+PP(1,2)**2
42605       PMS2=SPQ+PP(2,1)**2+PP(2,2)**2
42606       PMS3=SPH+PP(3,1)**2+PP(3,2)**2
42607       PMT3=SQRT(PMS3)
42608       PP(3,3)=PMT3*SINH(VINT(211))
42609       PP(3,4)=PMT3*COSH(VINT(211))
42610       PMS12=(SHPR-PP(3,4))**2-PP(3,3)**2
42611       PP(1,3)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
42612      &VINT(213)*(SHPR-PP(3,4))*VINT(220))/(2D0*PMS12)
42613       PP(2,3)=-PP(1,3)-PP(3,3)
42614       PP(1,4)=SQRT(PMS1+PP(1,3)**2)
42615       PP(2,4)=SQRT(PMS2+PP(2,3)**2)
42616  
42617 C...Set up incoming kinematics and derived momentum combinations.
42618       DO 110 I=4,5
42619         PP(I,1)=0D0
42620         PP(I,2)=0D0
42621         PP(I,3)=-0.5D0*SHPR*(-1)**I
42622         PP(I,4)=-0.5D0*SHPR
42623   110 CONTINUE
42624       DO 120 J=1,4
42625         PP(6,J)=PP(1,J)+PP(2,J)
42626         PP(7,J)=PP(1,J)+PP(3,J)
42627         PP(8,J)=PP(1,J)+PP(4,J)
42628         PP(9,J)=PP(1,J)+PP(5,J)
42629         PP(10,J)=-PP(2,J)-PP(3,J)
42630         PP(11,J)=-PP(2,J)-PP(4,J)
42631         PP(12,J)=-PP(2,J)-PP(5,J)
42632         PP(13,J)=-PP(4,J)-PP(5,J)
42633   120 CONTINUE
42634  
42635 C...Derived kinematics invariants.
42636       X1=DOT(1,2)
42637       X2=DOT(1,3)
42638       X3=DOT(1,4)
42639       X4=DOT(1,5)
42640       X5=DOT(2,3)
42641       X6=DOT(2,4)
42642       X7=DOT(2,5)
42643       X8=DOT(3,4)
42644       X9=DOT(3,5)
42645       X10=DOT(4,5)
42646  
42647 C...Propagators.
42648       SS1=DOT(7,7)-SPQ
42649       SS2=DOT(8,8)-SPQ
42650       SS3=DOT(9,9)-SPQ
42651       SS4=DOT(10,10)-SPQ
42652       SS5=DOT(11,11)-SPQ
42653       SS6=DOT(12,12)-SPQ
42654       SS7=DOT(13,13)
42655       DX(1)=SS1*SS6
42656       DX(2)=SS2*SS6
42657       DX(3)=SS2*SS4
42658       DX(4)=SS1*SS5
42659       DX(5)=SS3*SS5
42660       DX(6)=SS3*SS4
42661       DX(7)=SS7*SS1
42662       DX(8)=SS7*SS4
42663  
42664 C...Define colour coefficients for g + g -> Q + Qbar + H.
42665       IF(ISUB.EQ.121.OR.ISUB.EQ.181.OR.ISUB.EQ.186) THEN
42666         DO 140 I=1,3
42667           DO 130 J=1,3
42668             CLR(I,J)=16D0/3D0
42669             CLR(I+3,J+3)=16D0/3D0
42670             CLR(I,J+3)=-2D0/3D0
42671             CLR(I+3,J)=-2D0/3D0
42672   130     CONTINUE
42673   140   CONTINUE
42674         DO 160 L=1,2
42675           DO 150 I=1,3
42676             CLR(I,6+L)=-6D0
42677             CLR(I+3,6+L)=6D0
42678             CLR(6+L,I)=-6D0
42679             CLR(6+L,I+3)=6D0
42680   150     CONTINUE
42681   160   CONTINUE
42682         DO 180 K1=1,2
42683           DO 170 K2=1,2
42684             CLR(6+K1,6+K2)=12D0
42685   170     CONTINUE
42686   180   CONTINUE
42687  
42688 C...Evaluate matrix elements for g + g -> Q + Qbar + H.
42689         FM(1,1)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X4+X9+2*
42690      &  X7+X5)+8*PQ**2*PH**2*(-X1-X4+2*X7)+16*PQ**2*(X2*X9+4*X2*
42691      &  X7+X2*X5-2*X4*X7-2*X9*X7)+8*PH**2*X4*X7-16*X2*X9*X7
42692         FM(1,2)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10+X9-X8+2
42693      &  *X7-4*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X4-2*X2*X10+X2*X7-2*
42694      &  X2*X6-2*X3*X7+2*X4*X7+4*X10*X7-X9*X7-X8*X7)+16*X2*X7*(X4+
42695      &  X10)
42696         FM(1,3)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-2*X3-4*
42697      &  X4-8*X10+X9+X8-2*X7-4*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X4+X10
42698      &  +X6)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
42699      &  -4*X2*X4-5*X2*X10+X2*X8-X2*X7-3*X2*X6+X2*X5+X3*X9+2*X3*X7
42700      &  -X3*X5+X4*X8+2*X4*X6-3*X4*X5-5*X10*X5+X9*X8+X9*X6+X9*X5+
42701      &  X8*X7-4*X6*X5+X5**2)-(16*X2*X5)*(X1+X4+X10+X6)
42702         FM(1,4)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1+X2-X3-X4+X10-
42703      &  X9-X8+2*X7+2*X6-X5)+4*PQ**2*PH**2*(X1+X3+X4+X10+2*X7+2*X6
42704      &  )+8*PQ**2*(4*X1*X10+4*X1*X7+4*X1*X6+2*X2*X10-X2*X9-X2*X8+
42705      &  4*X2*X7+4*X2*X6-X2*X5+4*X10*X5+4*X7*X5+4*X6*X5)-(8*PH**2*
42706      &  X1)*(X10+X7+X6)+16*X2*X5*(X10+X7+X6)
42707         FM(1,5)=8*PQ**4*(-2*X1-2*X4+X10-X9)+4*PQ**2*(4*X1**2-2*X1*
42708      &  X2+8*X1*X3+6*X1*X10-2*X1*X9+4*X1*X8+4*X1*X7+4*X1*X6+2*X1*
42709      &  X5+X2*X10+4*X3*X4-X3*X9+2*X3*X7+3*X4*X8-2*X4*X6+2*X4*X5-4
42710      &  *X10*X7+3*X10*X5-3*X9*X6+3*X8*X7-4*X7**2+4*X7*X5)+8*(X1**
42711      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5-X1*X4*
42712      &  X8-X1*X4*X5+X1*X10*X9+X1*X9*X7+X1*X9*X6-X1*X8*X7-X2*X3*X7
42713      &  +X2*X4*X6-X2*X10*X7-X2*X7**2+X3*X7*X5-X4*X10*X5-X4*X7*X5-
42714      &  X4*X6*X5)
42715         FM(1,6)=16*PQ**4*(-4*X1-X4+X9-X7)+4*PQ**2*PH**2*(-2*X1-X4-
42716      &  X7)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X4-3*X1*X9-2*X1*X7-3*
42717      &  X1*X5-2*X2*X4-2*X7*X5)-8*PH**2*X4*X7+8*(-X1*X2*X9-2*X1*X2
42718      &  *X5-X1*X9**2-X1*X9*X5+X2**2*X7-X2*X4*X5+X2*X9*X7-X2*X7*X5
42719      &  +X4*X9*X5+X4*X5**2)
42720         FM(1,7)=8*PQ**4*(2*X3+X4+3*X10+X9+2*X8+3*X7+6*X6)+2*PQ**2*
42721      &  PH**2*(-2*X3-X4+3*X10+3*X7+6*X6)+4*PQ**2*(4*X1*X10+4*X1*
42722      &  X7+8*X1*X6+6*X2*X10+X2*X9+2*X2*X8+6*X2*X7+12*X2*X6-8*X3*
42723      &  X7+4*X4*X7+4*X4*X6+4*X10*X5+4*X9*X7+4*X9*X6-8*X8*X7+4*X7*
42724      &  X5+8*X6*X5)+4*PH**2*(-X1*X10-X1*X7-2*X1*X6+2*X3*X7-X4*X7-
42725      &  X4*X6)+8*X2*(X10*X5+X9*X7+X9*X6-2*X8*X7+X7*X5+2*X6*X5)
42726         FM(1,8)=8*PQ**4*(2*X3+X4+3*X10+2*X9+X8+3*X7+6*X6)+2*PQ**2*
42727      &  PH**2*(-2*X3-X4+2*X10+X7+2*X6)+4*PQ**2*(4*X1*X10-2*X1*X9+
42728      &  2*X1*X8+4*X1*X7+8*X1*X6+5*X2*X10+2*X2*X9+X2*X8+4*X2*X7+8*
42729      &  X2*X6-X3*X9-8*X3*X7+2*X3*X5+2*X4*X9-X4*X8+4*X4*X7+4*X4*X6
42730      &  +4*X4*X5+5*X10*X5+X9**2-X9*X8+2*X9*X7+5*X9*X6+X9*X5-7*X8*
42731      &  X7+2*X8*X5+2*X7*X5+10*X6*X5)+2*PH**2*(-X1*X10+X3*X7-2*X4*
42732      &  X7+X4*X6)+4*(-X1*X9**2+X1*X9*X8-2*X1*X9*X5-X1*X8*X5+2*X2*
42733      &  X10*X5+X2*X9*X7+X2*X9*X6-2*X2*X8*X7+3*X2*X6*X5+X3*X9*X5+
42734      &  X3*X5**2+X4*X9*X5-2*X4*X8*X5+2*X4*X5**2)
42735         FM(2,2)=16*PQ**6+16*PQ**4*(-X1+X3-X4-X10+X7-X6)+16*PQ**2*(
42736      &  X3*X10+X3*X7+X3*X6+X4*X7+X10*X7)-16*X3*X10*X7
42737         FM(2,3)=16*PQ**6+8*PQ**4*(-2*X1+X2+2*X3-4*X4-4*X10-X9+X8-2
42738      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5+4*X3*X10-X3*X9-X3*X8-2*X3*
42739      &  X7+2*X3*X6+X3*X5-2*X4*X5-2*X10*X5-2*X6*X5)+16*X3*X5*(X10+
42740      &  X6)
42741         FM(2,4)=8*PQ**4*(-2*X1-2*X3+X10-X8)+4*PQ**2*(4*X1**2-2*X1*
42742      &  X2+8*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+4*X1*X7+4*X1*X6+2*X1*
42743      &  X5+X2*X10+4*X3*X4+3*X3*X9-2*X3*X7+2*X3*X5-X4*X8+2*X4*X6-4
42744      &  *X10*X6+3*X10*X5+3*X9*X6-3*X8*X7-4*X6**2+4*X6*X5)+8*(-X1
42745      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9-X1*X3*X5+X1*X4
42746      &  *X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X1*X8*X6+X2*X3*
42747      &  X7-X2*X4*X6-X2*X10*X6-X2*X6**2-X3*X10*X5-X3*X7*X5-X3*X6*
42748      &  X5+X4*X6*X5)
42749         FM(2,5)=16*PQ**4*X10+8*PQ**2*(2*X1**2+2*X1*X3+2*X1*X4+2*X1
42750      &  *X10+2*X1*X7+2*X1*X6+X3*X7+X4*X6)+8*(-2*X1**3-2*X1**2*X3-
42751      &  2*X1**2*X4-2*X1**2*X10-2*X1**2*X7-2*X1**2*X6-2*X1*X3*X4-
42752      &  X1*X3*X10-2*X1*X3*X6-X1*X4*X10-2*X1*X4*X7-X1*X10**2-X1*
42753      &  X10*X7-X1*X10*X6-2*X1*X7*X6+X3**2*X7-X3*X4*X7-X3*X4*X6+X3
42754      &  *X10*X7+X3*X7**2-X3*X7*X6+X4**2*X6+X4*X10*X6-X4*X7*X6+X4*
42755      &  X6**2)
42756         FM(2,6)=8*PQ**4*(-2*X1+X10-X9-2*X7)+4*PQ**2*(4*X1**2+2*X1*
42757      &  X2+4*X1*X3+4*X1*X4+6*X1*X10-2*X1*X9+4*X1*X8+8*X1*X6-2*X1*
42758      &  X5+4*X2*X4+3*X2*X10+2*X2*X7-3*X3*X9-2*X3*X7-4*X4**2-4*X4*
42759      &  X10+3*X4*X8+2*X4*X6+X10*X5-X9*X6+3*X8*X7+4*X7*X6)+8*(X1**
42760      &  2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9+X1*X3*X5+X1*X4*
42761      &  X9-X1*X4*X8-X1*X4*X5+X1*X10*X9+X1*X9*X6-X1*X8*X7-X2*X3*X7
42762      &  -X2*X4*X7+X2*X4*X6-X2*X10*X7+X3*X7*X5-X4**2*X5-X4*X10*X5-
42763      &  X4*X6*X5)
42764         FM(2,7)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
42765      &  2*X1*X4-2*X1*X10+X1*X9-X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
42766      &  X4+3*X2*X10+X2*X7+2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9-2*X3*
42767      &  X7-4*X3*X6-X3*X5-6*X4**2-6*X4*X10-3*X4*X9-X4*X8-4*X4*X7-2
42768      &  *X4*X6-2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+X10*X5
42769      &  +X9*X7-2*X8*X7-2*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
42770      &  -X1**2*X9+X1**2*X8-2*X1*X2*X10-3*X1*X2*X7-3*X1*X2*X6+X1*
42771      &  X3*X9-X1*X3*X5+X1*X4*X9+X1*X4*X8+X1*X4*X5+X1*X10*X9+X1*
42772      &  X10*X8-X1*X9*X6+X1*X8*X6+X2*X3*X7-3*X2*X4*X7-X2*X4*X6-3*
42773      &  X2*X10*X7-3*X2*X10*X6-3*X2*X7*X6-3*X2*X6**2-2*X3*X4*X5-X3
42774      &  *X10*X5-X3*X6*X5-X4**2*X5-X4*X10*X5+X4*X6*X5)
42775         FM(2,8)=8*PQ**4*(X3+2*X4+3*X10+X7+2*X6)+4*PQ**2*(-4*X1*X3-
42776      &  2*X1*X4-2*X1*X10-X1*X9+X1*X8-4*X1*X7-2*X1*X6+X2*X3+2*X2*
42777      &  X4+X2*X10-X2*X7-2*X2*X6-6*X3*X4-6*X3*X10-2*X3*X9+X3*X8-2*
42778      &  X3*X7-4*X3*X6+X3*X5-6*X4**2-6*X4*X10-2*X4*X9-4*X4*X7-2*X4
42779      &  *X6+2*X4*X5-3*X10*X9-3*X10*X8-6*X10*X7-6*X10*X6+3*X10*X5-
42780      &  X9*X6-2*X8*X7-3*X8*X6-6*X7*X6+X7*X5-6*X6**2+2*X6*X5)+4*(
42781      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6-3*X1*X3*X5+X1*X4*X9-
42782      &  X1*X4*X8-3*X1*X4*X5+X1*X10*X9+X1*X10*X8-2*X1*X10*X5+X1*X9
42783      &  *X6+X1*X8*X7+X1*X8*X6-X2*X4*X7+X2*X4*X6-X2*X10*X7-X2*X10*
42784      &  X6-2*X2*X7*X6-X2*X6**2-3*X3*X4*X5-3*X3*X10*X5+X3*X7*X5-3*
42785      &  X3*X6*X5-3*X4**2*X5-3*X4*X10*X5-X4*X6*X5)
42786         FM(3,3)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X3+X8+X6
42787      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X3-X6)+16*PQ**2*(X2*X5-2*X3*
42788      &  X8-2*X3*X6+4*X3*X5+X8*X5)+8*PH**2*X3*X6-16*X3*X8*X5
42789         FM(3,4)=16*PQ**4*(-4*X1-X3+X8-X6)+4*PQ**2*PH**2*(-2*X1-X3-
42790      &  X6)+16*PQ**2*(-2*X1**2-3*X1*X2-2*X1*X3-3*X1*X8-2*X1*X6-3*
42791      &  X1*X5-2*X2*X3-2*X6*X5)-8*PH**2*X3*X6+8*(-X1*X2*X8-2*X1*X2
42792      &  *X5-X1*X8**2-X1*X8*X5+X2**2*X6-X2*X3*X5+X2*X8*X6-X2*X6*X5
42793      &  +X3*X8*X5+X3*X5**2)
42794         FM(3,5)=8*PQ**4*(-2*X1+X10-X8-2*X6)+4*PQ**2*(4*X1**2+2*X1*
42795      &  X2+4*X1*X3+4*X1*X4+6*X1*X10+4*X1*X9-2*X1*X8+8*X1*X7-2*X1*
42796      &  X5+4*X2*X3+3*X2*X10+2*X2*X6-4*X3**2-4*X3*X10+3*X3*X9+2*X3
42797      &  *X7-3*X4*X8-2*X4*X6+X10*X5+3*X9*X6-X8*X7+4*X7*X6)+8*(-X1
42798      &  **2*X9+X1**2*X8+X1*X2*X7-X1*X2*X6-X1*X3*X9+X1*X3*X8-X1*X3
42799      &  *X5+X1*X4*X8+X1*X4*X5+X1*X10*X8-X1*X9*X6+X1*X8*X7+X2*X3*
42800      &  X7-X2*X3*X6-X2*X4*X6-X2*X10*X6-X3**2*X5-X3*X10*X5-X3*X7*
42801      &  X5+X4*X6*X5)
42802         FM(3,6)=16*PQ**6+4*PQ**4*PH**2+16*PQ**4*(-X1-X2+2*X3+2*X4+
42803      &  X10-X9-X8-X7-X6+X5)+4*PQ**2*PH**2*(X1+2*X3+2*X4+X10+X7+X6
42804      &  )+8*PQ**2*(4*X1*X3+4*X1*X4+4*X1*X10+4*X2*X3+4*X2*X4+4*X2*
42805      &  X10-X2*X5+4*X3*X5+4*X4*X5+2*X10*X5-X9*X5-X8*X5)-(8*PH**2*
42806      &  X1)*(X3+X4+X10)+16*X2*X5*(X3+X4+X10)
42807         FM(3,7)=8*PQ**4*(3*X3+6*X4+3*X10+X9+2*X8+2*X7+X6)+2*PQ**2*
42808      &  PH**2*(X3+2*X4+2*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+4*
42809      &  X1*X10+2*X1*X9-2*X1*X8+2*X2*X3+10*X2*X4+5*X2*X10+2*X2*X9+
42810      &  X2*X8+2*X2*X7+4*X2*X6-7*X3*X9+2*X3*X8-8*X3*X7+4*X3*X6+4*
42811      &  X3*X5+5*X4*X8+4*X4*X6+8*X4*X5+5*X10*X5-X9*X8-X9*X6+X9*X5+
42812      &  X8**2-X8*X7+2*X8*X6+2*X8*X5)+2*PH**2*(-X1*X10+X3*X7-2*X3*
42813      &  X6+X4*X6)+4*(-X1*X2*X9-2*X1*X2*X8+X1*X9*X8-X1*X8**2+X2**2
42814      &  *X7+2*X2**2*X6+3*X2*X4*X5+2*X2*X10*X5-2*X2*X9*X6+X2*X8*X7
42815      &  +X2*X8*X6-2*X3*X9*X5+X3*X8*X5+X4*X8*X5)
42816         FM(3,8)=8*PQ**4*(3*X3+6*X4+3*X10+2*X9+X8+2*X7+X6)+2*PQ**2*
42817      &  PH**2*(3*X3+6*X4+3*X10-2*X7-X6)+4*PQ**2*(4*X1*X3+8*X1*X4+
42818      &  4*X1*X10+4*X2*X3+8*X2*X4+4*X2*X10-8*X3*X9+4*X3*X8-8*X3*X7
42819      &  +4*X3*X6+6*X3*X5+4*X4*X8+4*X4*X6+12*X4*X5+6*X10*X5+2*X9*
42820      &  X5+X8*X5)+4*PH**2*(-X1*X3-2*X1*X4-X1*X10+2*X3*X7-X3*X6-X4
42821      &  *X6)+8*X5*(X2*X3+2*X2*X4+X2*X10-2*X3*X9+X3*X8+X4*X8)
42822         FM(4,4)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+2*X2+X3+X8+2*
42823      &  X6+X5)+8*PQ**2*PH**2*(-X1-X3+2*X6)+16*PQ**2*(X2*X8+4*X2*
42824      &  X6+X2*X5-2*X3*X6-2*X8*X6)+8*PH**2*X3*X6-16*X2*X8*X6
42825         FM(4,5)=16*PQ**6+8*PQ**4*(-2*X1+X2-2*X3-2*X4-4*X10-X9+X8-4
42826      &  *X7+2*X6+X5)+8*PQ**2*(-2*X1*X2-2*X2*X3-2*X2*X10-2*X2*X7+
42827      &  X2*X6+2*X3*X6-2*X4*X6+4*X10*X6-X9*X6-X8*X6)+16*X2*X6*(X3+
42828      &  X10)
42829         FM(4,6)=16*PQ**6-4*PQ**4*PH**2+8*PQ**4*(-2*X1+2*X2-4*X3-2*
42830      &  X4-8*X10+X9+X8-4*X7-2*X6+2*X5)-(4*PQ**2*PH**2)*(X1+X3+X10
42831      &  +X7)+8*PQ**2*(-2*X1*X2-2*X1*X10+X1*X9+X1*X8-2*X1*X5+X2**2
42832      &  -4*X2*X3-5*X2*X10+X2*X9-3*X2*X7-X2*X6+X2*X5+X3*X9+2*X3*X7
42833      &  -3*X3*X5+X4*X8+2*X4*X6-X4*X5-5*X10*X5+X9*X8+X9*X6+X8*X7+
42834      &  X8*X5-4*X7*X5+X5**2)-(16*X2*X5)*(X1+X3+X10+X7)
42835         FM(4,7)=8*PQ**4*(-X3-2*X4-3*X10-2*X9-X8-6*X7-3*X6)+2*PQ**2
42836      &  *PH**2*(X3+2*X4-3*X10-6*X7-3*X6)+4*PQ**2*(-4*X1*X10-8*X1*
42837      &  X7-4*X1*X6-6*X2*X10-2*X2*X9-X2*X8-12*X2*X7-6*X2*X6-4*X3*
42838      &  X7-4*X3*X6+8*X4*X6-4*X10*X5+8*X9*X6-4*X8*X7-4*X8*X6-8*X7*
42839      &  X5-4*X6*X5)+4*PH**2*(X1*X10+2*X1*X7+X1*X6+X3*X7+X3*X6-2*
42840      &  X4*X6)+8*X2*(-X10*X5+2*X9*X6-X8*X7-X8*X6-2*X7*X5-X6*X5)
42841         FM(4,8)=8*PQ**4*(-X3-2*X4-3*X10-X9-2*X8-6*X7-3*X6)+2*PQ**2
42842      &  *PH**2*(X3+2*X4-2*X10-2*X7-X6)+4*PQ**2*(-4*X1*X10-2*X1*X9
42843      &  +2*X1*X8-8*X1*X7-4*X1*X6-5*X2*X10-X2*X9-2*X2*X8-8*X2*X7-4
42844      &  *X2*X6+X3*X9-2*X3*X8-4*X3*X7-4*X3*X6-4*X3*X5+X4*X8+8*X4*
42845      &  X6-2*X4*X5-5*X10*X5+X9*X8+7*X9*X6-2*X9*X5-X8**2-5*X8*X7-2
42846      &  *X8*X6-X8*X5-10*X7*X5-2*X6*X5)+2*PH**2*(X1*X10-X3*X7+2*X3
42847      &  *X6-X4*X6)+4*(-X1*X9*X8+X1*X9*X5+X1*X8**2+2*X1*X8*X5-2*X2
42848      &  *X10*X5+2*X2*X9*X6-X2*X8*X7-X2*X8*X6-3*X2*X7*X5+2*X3*X9*
42849      &  X5-X3*X8*X5-2*X3*X5**2-X4*X8*X5-X4*X5**2)
42850         FM(5,5)=16*PQ**6+16*PQ**4*(-X1-X3+X4-X10-X7+X6)+16*PQ**2*(
42851      &  X3*X6+X4*X10+X4*X7+X4*X6+X10*X6)-16*X4*X10*X6
42852         FM(5,6)=16*PQ**6+8*PQ**4*(-2*X1+X2-4*X3+2*X4-4*X10+X9-X8-2
42853      &  *X7-2*X6+X5)+8*PQ**2*(-2*X1*X5-2*X3*X5+4*X4*X10-X4*X9-X4*
42854      &  X8+2*X4*X7-2*X4*X6+X4*X5-2*X10*X5-2*X7*X5)+16*X4*X5*(X10+
42855      &  X7)
42856         FM(5,7)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
42857      &  4*X1*X4+2*X1*X10+X1*X9-X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
42858      &  X4-3*X2*X10-2*X2*X7-X2*X6+6*X3**2+6*X3*X4+6*X3*X10+X3*X9+
42859      &  3*X3*X8+2*X3*X7+4*X3*X6+2*X3*X5+6*X4*X10+2*X4*X8+4*X4*X7+
42860      &  2*X4*X6+X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-X10*X5+
42861      &  2*X9*X7+2*X9*X6-X8*X6+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(-
42862      &  X1**2*X9+X1**2*X8+2*X1*X2*X10+3*X1*X2*X7+3*X1*X2*X6-X1*X3
42863      &  *X9-X1*X3*X8-X1*X3*X5-X1*X4*X8+X1*X4*X5-X1*X10*X9-X1*X10*
42864      &  X8-X1*X9*X7+X1*X8*X7+X2*X3*X7+3*X2*X3*X6-X2*X4*X6+3*X2*
42865      &  X10*X7+3*X2*X10*X6+3*X2*X7**2+3*X2*X7*X6+X3**2*X5+2*X3*X4
42866      &  *X5+X3*X10*X5-X3*X7*X5+X4*X10*X5+X4*X7*X5)
42867         FM(5,8)=8*PQ**4*(-2*X3-X4-3*X10-2*X7-X6)+4*PQ**2*(2*X1*X3+
42868      &  4*X1*X4+2*X1*X10-X1*X9+X1*X8+2*X1*X7+4*X1*X6-2*X2*X3-X2*
42869      &  X4-X2*X10+2*X2*X7+X2*X6+6*X3**2+6*X3*X4+6*X3*X10+2*X3*X8+
42870      &  2*X3*X7+4*X3*X6-2*X3*X5+6*X4*X10-X4*X9+2*X4*X8+4*X4*X7+2*
42871      &  X4*X6-X4*X5+3*X10*X9+3*X10*X8+6*X10*X7+6*X10*X6-3*X10*X5+
42872      &  3*X9*X7+2*X9*X6+X8*X7+6*X7**2+6*X7*X6-2*X7*X5-X6*X5)+4*(
42873      &  X1**2*X9-X1**2*X8-X1*X2*X7+X1*X2*X6+X1*X3*X9-X1*X3*X8+3*
42874      &  X1*X3*X5+3*X1*X4*X5-X1*X10*X9-X1*X10*X8+2*X1*X10*X5-X1*X9
42875      &  *X7-X1*X9*X6-X1*X8*X7-X2*X3*X7+X2*X3*X6+X2*X10*X7+X2*X10*
42876      &  X6+X2*X7**2+2*X2*X7*X6+3*X3**2*X5+3*X3*X4*X5+3*X3*X10*X5+
42877      &  X3*X7*X5+3*X4*X10*X5+3*X4*X7*X5-X4*X6*X5)
42878         FM(6,6)=64*PQ**6+16*PQ**4*PH**2+32*PQ**4*(X1+X2+2*X4+X9+X7
42879      &  +2*X5)+8*PQ**2*PH**2*(-X1+2*X4-X7)+16*PQ**2*(X2*X5-2*X4*
42880      &  X9-2*X4*X7+4*X4*X5+X9*X5)+8*PH**2*X4*X7-16*X4*X9*X5
42881         FM(6,7)=8*PQ**4*(-6*X3-3*X4-3*X10-2*X9-X8-X7-2*X6)+2*PQ**2
42882      &  *PH**2*(-2*X3-X4-2*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*X4
42883      &  -4*X1*X10+2*X1*X9-2*X1*X8-10*X2*X3-2*X2*X4-5*X2*X10-X2*X9
42884      &  -2*X2*X8-4*X2*X7-2*X2*X6-5*X3*X9-4*X3*X7-8*X3*X5-2*X4*X9+
42885      &  7*X4*X8-4*X4*X7+8*X4*X6-4*X4*X5-5*X10*X5-X9**2+X9*X8-2*X9
42886      &  *X7+X9*X6-2*X9*X5+X8*X7-X8*X5)+2*PH**2*(X1*X10-X3*X7+2*X4
42887      &  *X7-X4*X6)+4*(2*X1*X2*X9+X1*X2*X8+X1*X9**2-X1*X9*X8-2*X2
42888      &  **2*X7-X2**2*X6-3*X2*X3*X5-2*X2*X10*X5-X2*X9*X7-X2*X9*X6+
42889      &  2*X2*X8*X7-X3*X9*X5-X4*X9*X5+2*X4*X8*X5)
42890         FM(6,8)=8*PQ**4*(-6*X3-3*X4-3*X10-X9-2*X8-X7-2*X6)+2*PQ**2
42891      &  *PH**2*(-6*X3-3*X4-3*X10+X7+2*X6)+4*PQ**2*(-8*X1*X3-4*X1*
42892      &  X4-4*X1*X10-8*X2*X3-4*X2*X4-4*X2*X10-4*X3*X9-4*X3*X7-12*
42893      &  X3*X5-4*X4*X9+8*X4*X8-4*X4*X7+8*X4*X6-6*X4*X5-6*X10*X5-X9
42894      &  *X5-2*X8*X5)+4*PH**2*(2*X1*X3+X1*X4+X1*X10+X3*X7+X4*X7-2*
42895      &  X4*X6)+8*X5*(-2*X2*X3-X2*X4-X2*X10-X3*X9-X4*X9+2*X4*X8)
42896         FM(7,7)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+9*
42897      &  X2*X10+7*X3*X7+2*X3*X6+2*X4*X7+7*X4*X6+X10*X5+2*X9*X7+7*
42898      &  X9*X6+7*X8*X7+2*X8*X6)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2
42899      &  *X4*X7-7*X4*X6)+4*X2*(X10*X5+2*X9*X7+7*X9*X6+7*X8*X7+2*X8
42900      &  *X6)
42901         FM(7,8)=72*PQ**4*X10+2*PQ**2*PH**2*X10+4*PQ**2*(2*X1*X10+
42902      &  10*X2*X10+7*X3*X9+2*X3*X8+14*X3*X7+4*X3*X6+2*X4*X9+7*X4*
42903      &  X8+4*X4*X7+14*X4*X6+10*X10*X5+X9**2+7*X9*X8+2*X9*X7+7*X9*
42904      &  X6+X8**2+7*X8*X7+2*X8*X6)+2*PH**2*(7*X1*X10-7*X3*X7-2*X3*
42905      &  X6-2*X4*X7-7*X4*X6)+2*(-2*X1*X9**2-14*X1*X9*X8-2*X1*X8**2
42906      &  +2*X2*X10*X5+2*X2*X9*X7+7*X2*X9*X6+7*X2*X8*X7+2*X2*X8*X6+
42907      &  7*X3*X9*X5+2*X3*X8*X5+2*X4*X9*X5+7*X4*X8*X5)
42908         FM(8,8)=72*PQ**4*X10+18*PQ**2*PH**2*X10+8*PQ**2*(X1*X10+X2
42909      &  *X10+7*X3*X9+2*X3*X8+7*X3*X7+2*X3*X6+2*X4*X9+7*X4*X8+2*X4
42910      &  *X7+7*X4*X6+9*X10*X5)+2*PH**2*(-X1*X10-7*X3*X7-2*X3*X6-2*
42911      &  X4*X7-7*X4*X6)+4*X5*(X2*X10+7*X3*X9+2*X3*X8+2*X4*X9+7*X4*
42912      &  X8)
42913         FM(9,9)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
42914      &  X3*X7+X4*X6-X10*X5+X9*X6+X8*X7)+PH**2*(X1*X10-X3*X7-X4*X6
42915      &  )+2*X2*(-X10*X5+X9*X6+X8*X7)
42916         FM(9,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
42917      &  X10+2*X3*X9+2*X3*X7+2*X4*X6-2*X10*X5+X9*X8+2*X8*X7)+PH**2
42918      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X8*X7+X3*
42919      &  X9*X5)
42920         FMXX=-4*PQ**4*X10-PQ**2*PH**2*X10+2*PQ**2*(-2*X1*X10-2*X2*
42921      &  X10+2*X4*X8+2*X4*X6+2*X3*X7-2*X10*X5+X9*X8+2*X9*X6)+PH**2
42922      &  *(X1*X10-X3*X7-X4*X6)+2*(-X1*X9*X8-X2*X10*X5+X2*X9*X6+X4*
42923      &  X8*X5)
42924         FM(9,10)=0.5D0*(FMXX+FM(9,10))
42925         FM(10,10)=-4*PQ**4*X10-PQ**2*PH**2*X10+4*PQ**2*(-X1*X10-X2*X10+
42926      &  X3*X7+X4*X6-X10*X5+X9*X3+X8*X4)+PH**2*(X1*X10-X3*X7-X4*X6
42927      &  )+2*X5*(-X10*X2+X9*X3+X8*X4)
42928  
42929 C...Repackage matrix elements.
42930         DO 200 I=1,8
42931           DO 190 J=I,8
42932             RM(I,J)=FM(I,J)
42933   190     CONTINUE
42934   200   CONTINUE
42935         RM(7,7)=FM(7,7)-2D0*FM(9,9)
42936         RM(7,8)=FM(7,8)-2D0*FM(9,10)
42937         RM(8,8)=FM(8,8)-2D0*FM(10,10)
42938  
42939 C...Produce final result: matrix elements * colours * propagators.
42940         DO 220 I=1,8
42941           DO 210 J=I,8
42942             FAC=8D0
42943             IF(I.EQ.J)FAC=4D0
42944             WTQQBH=WTQQBH+RM(I,J)*FAC*CLR(I,J)/(DX(I)*DX(J))
42945   210     CONTINUE
42946   220   CONTINUE
42947         WTQQBH=-WTQQBH/256D0
42948  
42949       ELSE
42950 C...Evaluate matrix elements for q + qbar -> Q + Qbar + H.
42951         A11=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X2*X10+X3
42952      &  *X7+X4*X6+X9*X6+X8*X7)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X2)*(X9
42953      &  *X6+X8*X7)
42954         A12=-8D0*PQ**4*X10+4D0*PQ**2*(-X2*X10-X3*X9-2D0*X3*X7-X4*X8-
42955      &  2D0*X4*X6-X10*X5-X9*X8-X9*X6-X8*X7)+2D0*PH**2*(-X1*X10+X3*X7
42956      &  +X4*X6)+2D0*(2D0*X1*X9*X8-X2*X9*X6-X2*X8*X7-X3*X9*X5-X4*X8*
42957      &  X5)
42958         A22=-8D0*PQ**4*X10-2D0*PQ**2*PH**2*X10-(8D0*PQ**2)*(X3*X9+X3*
42959      &  X7+X4*X8+X4*X6+X10*X5)+2D0*PH**2*(X3*X7+X4*X6)-(4D0*X5)*(X3
42960      &  *X9+X4*X8)
42961  
42962 C...Produce final result: matrix elements * propagators.
42963         A11=A11/DX(7)**2
42964         A12=A12/(DX(7)*DX(8))
42965         A22=A22/DX(8)**2
42966         WTQQBH=-(A11+A22+2D0*A12)*8D0/9D0
42967       ENDIF
42968  
42969       RETURN
42970       END
42971  
42972 C*********************************************************************
42973  
42974 C...PYSTBH (and auxiliaries)
42975 C.. Evaluates the matrix elements for t + b + H production.
42976  
42977       SUBROUTINE PYSTBH(WTTBH)
42978  
42979 C...DOUBLE PRECISION AND INTEGER DECLARATIONS
42980       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
42981       IMPLICIT INTEGER(I-N)
42982       INTEGER PYK,PYCHGE,PYCOMP
42983  
42984 C...COMMONBLOCKS
42985       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
42986       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
42987       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
42988       COMMON/PYINT1/MINT(400),VINT(400)
42989       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
42990       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
42991       COMMON/PYINT4/MWID(500),WIDS(500,5)
42992       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
42993       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
42994       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
42995      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
42996      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
42997      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
42998       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
42999       DOUBLE PRECISION MW2
43000       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,
43001      &/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/,/PYCTBH/
43002  
43003 C...LOCAL ARRAYS AND COMPLEX VARIABLES
43004       DIMENSION QQ(4,2),PP(4,3)
43005       DATA QQ/8*0D0/
43006  
43007       WTTBH=0D0
43008  
43009 C...KINEMATIC PARAMETERS.
43010       SHPR=SQRT(VINT(26))*VINT(1)
43011       PH=SQRT(VINT(21))*VINT(1)
43012       SPH=PH**2
43013  
43014 C...SET UP OUTGOING KINEMATICS: 1=T, 2=TBAR, 3=H.
43015       DO 100 I=1,2
43016         PT=SQRT(MAX(0D0,VINT(197+5*I)))
43017         PP(1,I)=PT*COS(VINT(198+5*I))
43018         PP(2,I)=PT*SIN(VINT(198+5*I))
43019   100 CONTINUE
43020       PP(1,3)=-PP(1,1)-PP(1,2)
43021       PP(2,3)=-PP(2,1)-PP(2,2)
43022       PMS1=VINT(201)**2+PP(1,1)**2+PP(2,1)**2
43023       PMS2=VINT(206)**2+PP(1,2)**2+PP(2,2)**2
43024       PMS3=SPH+PP(1,3)**2+PP(2,3)**2
43025       PMT3=SQRT(PMS3)
43026       PP(3,3)=PMT3*SINH(VINT(211))
43027       PP(4,3)=PMT3*COSH(VINT(211))
43028       PMS12=(SHPR-PP(4,3))**2-PP(3,3)**2
43029       PP(3,1)=(-PP(3,3)*(PMS12+PMS1-PMS2)+
43030      &VINT(213)*(SHPR-PP(4,3))*VINT(220))/(2D0*PMS12)
43031       PP(3,2)=-PP(3,1)-PP(3,3)
43032       PP(4,1)=SQRT(PMS1+PP(3,1)**2)
43033       PP(4,2)=SQRT(PMS2+PP(3,2)**2)
43034  
43035 C...CM SYSTEM, INGOING QUARKS/GLUONS
43036       QQ(3,1) = SHPR/2.D0
43037       QQ(4,1) = QQ(3,1)
43038       QQ(3,2) = -QQ(3,1)
43039       QQ(4,2) = QQ(4,1)
43040  
43041 C...PARAMETERS FOR AMPLITUDE METHOD
43042       ALPHA = AEM
43043       ALPHAS = AS
43044       SW2 = PARU(102)
43045       MW2 = PMAS(24,1)**2
43046       TANB = PARU(141)
43047       VTB = VCKM(3,3)
43048       RMB=PYMRUN(5,VINT(52))
43049  
43050       ISUB=MINT(1)
43051  
43052       IF (ISUB.EQ.401) THEN
43053         CALL PYTBHG(QQ(1,1),QQ(1,2),PP(1,1),PP(1,2),PP(1,3),
43054      &  VINT(201),VINT(206),RMB,VINT(43),WTTBH)
43055       ELSE IF (ISUB.EQ.402) THEN
43056         CALL PYTBHQ(QQ(1,1),QQ(1,2),PP(1,1),PP(1,2),PP(1,3),
43057      &  VINT(201),VINT(206),RMB,VINT(43),WTTBH)
43058       END IF
43059  
43060       RETURN
43061       END
43062 C------------------------------------------------------------------
43063       SUBROUTINE PYTBHB(MT,MB,MHP,BR,GAMT)
43064 C  WIDTH AND BRANCHING RATIO FOR (ON-SHELL) T-> B W+, T->B H+
43065       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43066       IMPLICIT INTEGER(I-N)
43067       DOUBLE PRECISION MW2,MT,MB,MHP,MW,KFUN
43068       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
43069       SAVE /PYCTBH/
43070  
43071 C   TOP WIDTH CALCULATION
43072 C       VTB  = 0.99
43073       MW=DSQRT(MW2)
43074       XB=(MB/MT)**2
43075       XW=(MW/MT)**2
43076       XH =(MHP/MT)**2
43077       GAMTBH = 0D0
43078       IF (MT .LT. (MHP+MB)) THEN
43079 C  T ->B W ONLY
43080          BETW = DSQRT(1.D0-2*(XB+XW)+(XW-XB)**2)
43081          GAMTBW = VTB**2*ALPHA/(16*SW2)*MT/XW*BETW*
43082      &        (2*(1.D0-XB-XW)-(1.D0+XB-XW)*(1.D0-XB -2*XW) )
43083          GAMT  = GAMTBW
43084       ELSE
43085 C T ->BW +T ->B H^+
43086          BETW = DSQRT(1.D0-2*(XB+XW)+(XW-XB)**2)
43087          GAMTBW = VTB**2*ALPHA/(16*SW2)*MT/XW*BETW*
43088      &        (2*(1.D0-XB-XW)-(1.D0+XB-XW)*(1.D0-XB -2*XW) )
43089 C
43090          KFUN = DSQRT( (1.D0-(MHP/MT)**2-(MB/MT)**2)**2
43091      &        -4.D0*(MHP*MB/MT**2)**2 )
43092          GAMTBH= ALPHA/SW2/8.D0*VTB**2*KFUN/MT *
43093      &        (V**2*((MT+MB)**2-MHP**2)+A**2*((MT-MB)**2-MHP**2))
43094          GAMT  = GAMTBW+GAMTBH
43095       ENDIF
43096 C THUS BR IS
43097       BR=GAMTBH/GAMT
43098       RETURN
43099       END
43100  
43101 C AMPLITUDE SQUARED (MATRIX ELEMENTS) FOR THE PROCESSES:
43102 C GG->TBH^+, QQBAR->TBH^+
43103 C AS A FUNCTION OF 4-MOMENTA FOR SUITABLE INTERFACE
43104 C (FOR INSTANCE WITH PYTHIA)
43105 C------------------------------------------------------------
43106 C BASED ON F. BORZUMATI, J.-L. KNEUR, N. POLONSKY  HEP-PH/9905443,
43107 C PHYS REV. D 60 (1999) 115011
43108 C (THESE FILES PREPARED BY J.-L. KNEUR)
43109 C------------------------------------------------------------
43110 C 1)  GG->TBH^+
43111        SUBROUTINE PYTBHG(Q1,Q2,P1,P2,P3,MT,MB,RMB,MHP,AMP2)
43112 C
43113 C CONVENTIONS AND INPUT/OUTPUT DEFINITIONS:
43114 C
43115 C INPUT: Q1,Q2 ARE ENTERING 4-MOMENTA OF INITIAL GLUONS OR QUARKS;
43116 C        P1, P2 ARE THE TOP AND BOTTOM OUTGOING 4-MOMENTA;
43117 C        P3 IS OUTGOING CHARGED HIGGS 4-MOMENTA.
43118 C  (NB FOR ALL 4-MOMENTA P(4) IS TIME-COMPONENT)
43119 C "PHYSICAL PARAMETERS" INPUT:
43120 C        MT,MB TOP AND BOTTOM MASSES;
43121 C        MHP CHARGED HIGGS MASS
43122 C   FURTHER PARAMETERS INPUT IS NEEDED FROM COMMON/PARAM/ (SEE BELOW)
43123 C
43124 C OUTPUT: AMP2  IS MATRIX ELEMENT (AMPLITUDE**2) FOR GG->TB H^+
43125 C (NB AMP2 IS TRULY AMPLITUDE SQUARRED, I.E. WITHOUT ANY
43126 C PHASE SPACE FACTORS INCLUDED. IT INCLUDES COLOUR AND COUPLING
43127 C FACTORS, AS EXPLICIT BELOW. ACCORDINGLY, FOR EXAMPLE THE TOTAL
43128 C CROSS-SECTION SHOULD BE (SYMBOLICALLY):
43129 C   SIGMA = INTEGRATE [PARTON DENSITY FUNCTIONS * 3-PARTICLE FINAL
43130 C           STATE PHASE-SPACE (STANDARDLY NORMALIZED) * AMP2 ]
43131 C
43132       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
43133       IMPLICIT INTEGER(I-N)
43134       DOUBLE PRECISION MW2,MT,MB,MHP,MW
43135       DIMENSION Q1(4),Q2(4),P1(4),P2(4),P3(4)
43136       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
43137       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
43138       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
43139  
43140       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
43141       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYCTBH/
43142 C !THE RELEVANT INPUT PARAMETERS ABOVE ARE NEEDED FOR CALCULATION
43143 C BUT ARE NOT DEFINED HERE SO THAT ONE MAY CHOOSE/VARY THEIR VALUES:
43144 C ACCORDINGLY, WHEN CALLING THESE SUBROUTINES, PLEASE SUPPLY VIA
43145 C THIS COMMON/PARAM/ YOUR PREFERRED ALPHA, ALPHAS,..AND TANB
43146 C (TAN BETA) VALUES
43147 C
43148 C THE NORMALIZED V,A COUPLINGS ARE DEFINED BELOW AND USED BOTH
43149 C IN THIS ROUTINE AND IN THE TOP WIDTH CALCULATION PYTBHB(..).
43150  
43151       PI = 4*DATAN(1.D0)
43152       MW = DSQRT(MW2)
43153 C
43154 C COLLECTING THE RELEVANT OVERALL FACTORS:
43155 C 8X8 INITIAL GLUON COLOR AVERAGE, 2X2 GLUON SPIN AVERAGE
43156       PS=1.D0/(8.D0*8.D0 *2.D0*2.D0)
43157 C COUPLING CONSTANT (OVERALL NORMALIZATION)
43158       FACT=(4.D0*PI*ALPHA)*(4.D0*PI*ALPHAS)**2/SW2/2.D0
43159 C NB ALPHA IS E^2/4/PI, BUT BETTER DEFINED IN TERMS OF G_FERMI:
43160 C ALPHA= DSQRT(2.D0)*GF*SW2*MW**2/PI
43161 C ALPHAS IS ALPHA_STRONG;
43162 C SW2 IS SIN(THETA_W)**2.
43163 C
43164 C      VTB=.998D0
43165 C VTB IS TOP-BOTTOM CKM MATRIX ELEMENT (APPROXIMATE VALUE HERE)
43166 C
43167       V = ( MT/MW/TANB +RMB/MW*TANB)/2.D0
43168       A = (-MT/MW/TANB +RMB/MW*TANB)/2.D0
43169 C V AND A ARE (NORMALIZED) VECTOR AND AXIAL TBH^+ COUPLINGS
43170 C
43171 C REDEFINING P2 INGOING FROM OVERALL MOMENTUM CONSERVATION
43172 C (BECAUSE P2 INGOING WAS USED IN OUR GRAPH CALCULATION CONVENTIONS)
43173       DO 100 KK=1,4
43174       P2(KK)=P3(KK)-Q1(KK)-Q2(KK)+P1(KK)
43175   100 CONTINUE
43176 C DEFINING VARIOUS RELEVANT 4-SCALAR PRODUCTS:
43177       S = 2*PYTBHS(Q1,Q2)
43178       P1Q1=PYTBHS(Q1,P1)
43179       P1Q2=PYTBHS(P1,Q2)
43180       P2Q1=PYTBHS(P2,Q1)
43181       P2Q2=PYTBHS(P2,Q2)
43182       P1P2=PYTBHS(P1,P2)
43183 C
43184 C   TOP WIDTH CALCULATION
43185       CALL PYTBHB(MT,MB,MHP,BR,GAMT)
43186 C   GAMT IS THE TOP WIDTH: T->BH^+ AND/OR T->B W^+
43187 C THEN DEFINE TOP (RESONANT) PROPAGATOR:
43188       A1INV= S -2*P1Q1 -2*P1Q2
43189       A1 =A1INV/(A1INV**2+ (GAMT*MT)**2)
43190 C (I.E. INTRODUCE THE TOP WIDTH IN A1 TO REGULARISE THE POLE)
43191 C  NB:    A12 = A1*A1 BUT CORRECT EXPRESSION BELOW BECAUSE OF
43192 C  THE TOP WIDTH
43193       A12 = 1.D0/(A1INV**2+ (GAMT*MT)**2)
43194       A2 =1.D0/(S +2*P2Q1 +2*P2Q2)
43195 C NOTE A2 IS B PROPAGATOR, DOES NOT NEED A WIDTH
43196 C  NOW COMES THE AMP**2:
43197 C NB COLOR FACTOR (COMING FROM GRAPHS) ALREADY INCLUDED IN
43198 C THE EXPRESSIONS BELOW
43199       V18=0.D0
43200       A18=0.D0
43201       V18= 640*A1/3+640*A2/3+32*A1*A2*MB**2-368*A12*MB*MT-
43202      &512*A1*A2*MB*MT/3-
43203      &368*A2**2*MB*MT+32*A1*A2*MT**2+496*A12*P1P2/3+
43204      &320*A1*A2*P1P2+496*A2**2*P1P2/3+128*A1*MB*MT**3/(3*P1Q1**2)+
43205      &128*A1*MT**4/(3*P1Q1**2)-256*A12*MB*MT**5/(3*P1Q1**2)+
43206      &256*A1*MT**2*P1P2/(3*P1Q1**2)-256*A12*MT**4*P1P2/(3*P1Q1**2)+
43207      &8/(3*P1Q1)-32*A1*MB*MT/P1Q1-56*A2*MB*MT/(3*P1Q1)+
43208      &88*A1*MT**2/(3*P1Q1)+72*A2*MT**2/P1Q1+
43209      &704*A12*MB*MT**3/(3*P1Q1)-224*A1*A2*MB*MT**3/(3*P1Q1)+
43210      &104*A1*P1P2/(3*P1Q1)+48*A2*P1P2/P1Q1+
43211      &128*A1*A2*MB*MT*P1P2/(3*P1Q1)+512*A12*MT**2*P1P2/(3*P1Q1)-
43212      &448*A1*A2*MT**2*P1P2/(3*P1Q1)-32*A1*A2*P1P2**2/P1Q1-
43213      &656*A1*A2*P1Q1/3-224*A2**2*P1Q1+128*A1*MB*MT**3/(3*P1Q2**2)+
43214      &128*A1*MT**4/(3*P1Q2**2)-256*A12*MB*MT**5/(3*P1Q2**2)+
43215      &256*A1*MT**2*P1P2/(3*P1Q2**2)-256*A12*MT**4*P1P2/(3*P1Q2**2)+
43216      &256*A1*MT**2*P1Q1/(3*P1Q2**2)+256*A12*MB*MT**3*P1Q1/(3*P1Q2**2)+
43217      &8/(3*P1Q2)-32*A1*MB*MT/P1Q2-56*A2*MB*MT/(3*P1Q2)
43218       V18=V18+88*A1*MT**2/(3*P1Q2)+72*A2*MT**2/P1Q2+
43219      &704*A12*MB*MT**3/(3*P1Q2)-224*A1*A2*MB*MT**3/(3*P1Q2)+
43220      &104*A1*P1P2/(3*P1Q2)+48*A2*P1P2/P1Q2+
43221      &128*A1*A2*MB*MT*P1P2/(3*P1Q2)+512*A12*MT**2*P1P2/(3*P1Q2)-
43222      &448*A1*A2*MT**2*P1P2/(3*P1Q2)-32*A1*A2*P1P2**2/P1Q2-
43223      &32*A1*MB*MT**3/(3*P1Q1*P1Q2)-32*A1*MT**4/(3*P1Q1*P1Q2)+
43224      &64*A12*MB*MT**5/(3*P1Q1*P1Q2)+16*P1P2/(3*P1Q1*P1Q2)-
43225      &64*A1*MT**2*P1P2/(3*P1Q1*P1Q2)+64*A12*MT**4*P1P2/(3*P1Q1*P1Q2)+
43226      &112*A1*P1Q1/P1Q2+272*A2*P1Q1/(3*P1Q2)-
43227      &272*A1*A2*MB**2*P1Q1/(3*P1Q2)+208*A12*MB*MT*P1Q1/(3*P1Q2)-
43228      &400*A1*A2*MB*MT*P1Q1/(3*P1Q2)-80*A1*A2*MT**2*P1Q1/P1Q2+
43229      &96*A12*P1P2*P1Q1/P1Q2-320*A1*A2*P1P2*P1Q1/P1Q2-
43230      &544*A1*A2*P1Q1**2/(3*P1Q2)-656*A1*A2*P1Q2/3-224*A2**2*P1Q2+
43231      &256*A1*MT**2*P1Q2/(3*P1Q1**2)+256*A12*MB*MT**3*P1Q2/(3*P1Q1**2)+
43232      &112*A1*P1Q2/P1Q1+272*A2*P1Q2/(3*P1Q1)-
43233      &272*A1*A2*MB**2*P1Q2/(3*P1Q1)+208*A12*MB*MT*P1Q2/(3*P1Q1)-
43234      &400*A1*A2*MB*MT*P1Q2/(3*P1Q1)-80*A1*A2*MT**2*P1Q2/P1Q1
43235       V18=V18+96*A12*P1P2*P1Q2/P1Q1-320*A1*A2*P1P2*P1Q2/P1Q1-
43236      &544*A1*A2*P1Q2**2/(3*P1Q1)+128*A2*MB**4/(3*P2Q1**2)+
43237      &128*A2*MB**3*MT/(3*P2Q1**2)-256*A2**2*MB**5*MT/(3*P2Q1**2)+
43238      &256*A2*MB**2*P1P2/(3*P2Q1**2)-256*A2**2*MB**4*P1P2/(3*P2Q1**2)+
43239      &256*A2*MB**2*P1Q1/(3*P2Q1**2)-256*A2**2*MB**4*P1Q1/(3*P2Q1**2)-
43240      &64*MB**3*MT**3/(3*P1Q2**2*P2Q1**2)-
43241      &64*MB**2*MT**2*P1P2/(3*P1Q2**2*P2Q1**2)-
43242      &64*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1**2)+
43243      &64*MB**3*MT/(3*P1Q2*P2Q1**2)+
43244      &256*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1**2)+
43245      &256*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1**2)+
43246      &256*A2*MB**3*MT*P1Q1/(3*P1Q2*P2Q1**2)+
43247      &512*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1**2)+
43248      &256*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1**2)-
43249      &256*A2**2*MB**4*P1Q2/(3*P2Q1**2)-8/(3*P2Q1)-72*A1*MB**2/P2Q1-
43250      &88*A2*MB**2/(3*P2Q1)+56*A1*MB*MT/(3*P2Q1)+32*A2*MB*MT/P2Q1+
43251      &224*A1*A2*MB**3*MT/(3*P2Q1)-704*A2**2*MB**3*MT/(3*P2Q1)
43252       V18=V18-48*A1*P1P2/P2Q1-104*A2*P1P2/(3*P2Q1)+
43253      &448*A1*A2*MB**2*P1P2/(3*P2Q1)-512*A2**2*MB**2*P1P2/(3*P2Q1)-
43254      &128*A1*A2*MB*MT*P1P2/(3*P2Q1)+32*A1*A2*P1P2**2/P2Q1-
43255      &16*P1P2/(3*P1Q1*P2Q1)-32*A1*MB*MT*P1P2/(3*P1Q1*P2Q1)-
43256      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q1)-
43257      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q1)-
43258      &64*A1*A2*P1P2**3/(3*P1Q1*P2Q1)-256*A2*P1Q1/(3*P2Q1)+
43259      &448*A1*A2*MB**2*P1Q1/(3*P2Q1)-368*A2**2*MB**2*P1Q1/(3*P2Q1)+
43260      &224*A1*A2*MB*MT*P1Q1/(3*P2Q1)+304*A1*A2*P1P2*P1Q1/(3*P2Q1)-
43261      &64*MB*MT**3/(3*P1Q2**2*P2Q1)-
43262      &256*A1*MB*MT**3*P1P2/(3*P1Q2**2*P2Q1)-
43263      &256*A1*MT**2*P1P2**2/(3*P1Q2**2*P2Q1)+
43264      &64*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
43265      &128*A1*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
43266      &128*A1*MB*MT**3*P1Q1/(3*P1Q2**2*P2Q1)-
43267      &256*A1*MT**2*P1P2*P1Q1/(3*P1Q2**2*P2Q1)-4*MB**2/(3*P1Q2*P2Q1)+
43268      &64*MB*MT/(3*P1Q2*P2Q1)-128*A2*MB**3*MT/(3*P1Q2*P2Q1)
43269       V18=V18-4*MT**2/(3*P1Q2*P2Q1)-128*A1*MB**2*MT**2/(3*P1Q2*P2Q1)-
43270      &128*A2*MB**2*MT**2/(3*P1Q2*P2Q1)-128*A1*MB*MT**3/(3*P1Q2*P2Q1)-
43271      &112*A2*MB**2*P1P2/(3*P1Q2*P2Q1)-32*A1*MB*MT*P1P2/(3*P1Q2*P2Q1)-
43272      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q1)-112*A1*MT**2*P1P2/(3*P1Q2*P2Q1)-
43273      &48*A1*P1P2**2/(P1Q2*P2Q1)-48*A2*P1P2**2/(P1Q2*P2Q1)+
43274      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q1)+
43275      &512*A1*A2*P1P2**3/(3*P1Q2*P2Q1)-8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43276      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q1)+
43277      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43278      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+
43279      &32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+8*P1Q1/(3*P1Q2*P2Q1)-
43280      &160*A1*MB**2*P1Q1/(3*P1Q2*P2Q1)-272*A2*MB**2*P1Q1/(3*P1Q2*P2Q1)+
43281      &56*A1*MB*MT*P1Q1/(3*P1Q2*P2Q1)+200*A2*MB*MT*P1Q1/(3*P1Q2*P2Q1)-
43282      &48*A1*P1P2*P1Q1/(P1Q2*P2Q1)-256*A2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
43283      &256*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
43284      &256*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1)+
43285      &1024*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q1)
43286       V18=V18-272*A2*P1Q1**2/(3*P1Q2*P2Q1)+
43287      &256*A1*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1)+
43288      &256*A1*A2*MB*MT*P1Q1**2/(3*P1Q2*P2Q1)+
43289      &512*A1*A2*P1P2*P1Q1**2/(3*P1Q2*P2Q1)+16*A2*P1Q2/(3*P2Q1)+
43290      &64*A1*A2*MB**2*P1Q2/P2Q1+32*A2**2*MB**2*P1Q2/(3*P2Q1)+
43291      &112*A1*A2*MB*MT*P1Q2/(3*P2Q1)+368*A1*A2*P1P2*P1Q2/(3*P2Q1)+
43292      &32*A2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43293      &32*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43294      &32*A1*A2*MB*MT*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43295      &64*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q1)+224*A12*P2Q1+
43296      &656*A1*A2*P2Q1/3-256*A1*MT**2*P2Q1/(3*P1Q1**2)+
43297      &256*A12*MT**4*P2Q1/(3*P1Q1**2)-256*A1*P2Q1/(3*P1Q1)+
43298      &224*A1*A2*MB*MT*P2Q1/(3*P1Q1)-368*A12*MT**2*P2Q1/(3*P1Q1)+
43299      &448*A1*A2*MT**2*P2Q1/(3*P1Q1)+304*A1*A2*P1P2*P2Q1/(3*P1Q1)+
43300      &256*A12*MT**4*P2Q1/(3*P1Q2**2)+
43301      &256*A12*MT**2*P1Q1*P2Q1/(3*P1Q2**2)+16*A1*P2Q1/(3*P1Q2)+
43302      &112*A1*A2*MB*MT*P2Q1/(3*P1Q2)+32*A12*MT**2*P2Q1/(3*P1Q2)
43303       V18=V18+64*A1*A2*MT**2*P2Q1/P1Q2+368*A1*A2*P1P2*P2Q1/(3*P1Q2)+
43304      &16*A1*MT**2*P2Q1/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q1/(3*P1Q1*P1Q2)+
43305      &640*A12*P1Q1*P2Q1/(3*P1Q2)+544*A1*A2*P1Q1*P2Q1/(3*P1Q2)+
43306      &32*A12*P1Q2*P2Q1/P1Q1+944*A1*A2*P1Q2*P2Q1/(3*P1Q1)+
43307      &128*A2*MB**4/(3*P2Q2**2)+128*A2*MB**3*MT/(3*P2Q2**2)-
43308      &256*A2**2*MB**5*MT/(3*P2Q2**2)+256*A2*MB**2*P1P2/(3*P2Q2**2)-
43309      &256*A2**2*MB**4*P1P2/(3*P2Q2**2)-
43310      &64*MB**3*MT**3/(3*P1Q1**2*P2Q2**2)-
43311      &64*MB**2*MT**2*P1P2/(3*P1Q1**2*P2Q2**2)+
43312      &64*MB**3*MT/(3*P1Q1*P2Q2**2)+
43313      &256*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q2**2)+
43314      &256*A2*MB**2*P1P2**2/(3*P1Q1*P2Q2**2)-
43315      &256*A2**2*MB**4*P1Q1/(3*P2Q2**2)+256*A2*MB**2*P1Q2/(3*P2Q2**2)-
43316      &256*A2**2*MB**4*P1Q2/(3*P2Q2**2)-
43317      &64*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2**2)+
43318      &256*A2*MB**3*MT*P1Q2/(3*P1Q1*P2Q2**2)+
43319      &512*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2**2)
43320       V18=V18+256*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2**2)-
43321      &256*A2*MB**2*P2Q1/(3*P2Q2**2)-256*A2**2*MB**3*MT*P2Q1/(3*P2Q2**2)+
43322      &64*MB**2*MT**2*P2Q1/(3*P1Q1**2*P2Q2**2)+
43323      &64*MB**2*P2Q1/(3*P1Q1*P2Q2**2)-
43324      &128*A2*MB**3*MT*P2Q1/(3*P1Q1*P2Q2**2)-
43325      &128*A2*MB**2*MT**2*P2Q1/(3*P1Q1*P2Q2**2)-
43326      &256*A2*MB**2*P1P2*P2Q1/(3*P1Q1*P2Q2**2)+
43327      &256*A2**2*MB**2*P1Q1*P2Q1/(3*P2Q2**2)-
43328      &256*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2**2)-8/(3*P2Q2)-
43329      &72*A1*MB**2/P2Q2-88*A2*MB**2/(3*P2Q2)+56*A1*MB*MT/(3*P2Q2)+
43330      &32*A2*MB*MT/P2Q2+224*A1*A2*MB**3*MT/(3*P2Q2)-
43331      &704*A2**2*MB**3*MT/(3*P2Q2)-48*A1*P1P2/P2Q2-
43332      &104*A2*P1P2/(3*P2Q2)+448*A1*A2*MB**2*P1P2/(3*P2Q2)-
43333      &512*A2**2*MB**2*P1P2/(3*P2Q2)-128*A1*A2*MB*MT*P1P2/(3*P2Q2)+
43334      &32*A1*A2*P1P2**2/P2Q2-64*MB*MT**3/(3*P1Q1**2*P2Q2)-
43335      &256*A1*MB*MT**3*P1P2/(3*P1Q1**2*P2Q2)-
43336      &256*A1*MT**2*P1P2**2/(3*P1Q1**2*P2Q2)-4*MB**2/(3*P1Q1*P2Q2)
43337       V18=V18+64*MB*MT/(3*P1Q1*P2Q2)-128*A2*MB**3*MT/(3*P1Q1*P2Q2)-
43338      &4*MT**2/(3*P1Q1*P2Q2)-128*A1*MB**2*MT**2/(3*P1Q1*P2Q2)-
43339      &128*A2*MB**2*MT**2/(3*P1Q1*P2Q2)-128*A1*MB*MT**3/(3*P1Q1*P2Q2)-
43340      &112*A2*MB**2*P1P2/(3*P1Q1*P2Q2)-32*A1*MB*MT*P1P2/(3*P1Q1*P2Q2)-
43341      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q2)-112*A1*MT**2*P1P2/(3*P1Q1*P2Q2)-
43342      &48*A1*P1P2**2/(P1Q1*P2Q2)-48*A2*P1P2**2/(P1Q1*P2Q2)+
43343      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q2)+
43344      &512*A1*A2*P1P2**3/(3*P1Q1*P2Q2)+16*A2*P1Q1/(3*P2Q2)+
43345      &64*A1*A2*MB**2*P1Q1/P2Q2+32*A2**2*MB**2*P1Q1/(3*P2Q2)+
43346      &112*A1*A2*MB*MT*P1Q1/(3*P2Q2)+368*A1*A2*P1P2*P1Q1/(3*P2Q2)-
43347      &16*P1P2/(3*P1Q2*P2Q2)-32*A1*MB*MT*P1P2/(3*P1Q2*P2Q2)-
43348      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q2)-
43349      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q2)-
43350      &64*A1*A2*P1P2**3/(3*P1Q2*P2Q2)-8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43351      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q2)+
43352      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43353      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q2)
43354       V18=V18+32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q2)+
43355      &32*A2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43356      &32*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43357      &32*A1*A2*MB*MT*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43358      &64*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q2)-256*A2*P1Q2/(3*P2Q2)+
43359      &448*A1*A2*MB**2*P1Q2/(3*P2Q2)-368*A2**2*MB**2*P1Q2/(3*P2Q2)+
43360      &224*A1*A2*MB*MT*P1Q2/(3*P2Q2)+304*A1*A2*P1P2*P1Q2/(3*P2Q2)+
43361      &64*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
43362      &128*A1*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
43363      &128*A1*MB*MT**3*P1Q2/(3*P1Q1**2*P2Q2)-
43364      &256*A1*MT**2*P1P2*P1Q2/(3*P1Q1**2*P2Q2)+8*P1Q2/(3*P1Q1*P2Q2)-
43365      &160*A1*MB**2*P1Q2/(3*P1Q1*P2Q2)-272*A2*MB**2*P1Q2/(3*P1Q1*P2Q2)+
43366      &56*A1*MB*MT*P1Q2/(3*P1Q1*P2Q2)+200*A2*MB*MT*P1Q2/(3*P1Q1*P2Q2)-
43367      &48*A1*P1P2*P1Q2/(P1Q1*P2Q2)-256*A2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
43368      &256*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
43369      &256*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2)+
43370      &1024*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q2)
43371       V18=V18-272*A2*P1Q2**2/(3*P1Q1*P2Q2)+
43372      &256*A1*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2)+
43373      &256*A1*A2*MB*MT*P1Q2**2/(3*P1Q1*P2Q2)+
43374      &512*A1*A2*P1P2*P1Q2**2/(3*P1Q1*P2Q2)-32*A2*MB**4/(3*P2Q1*P2Q2)-
43375      &32*A2*MB**3*MT/(3*P2Q1*P2Q2)+64*A2**2*MB**5*MT/(3*P2Q1*P2Q2)+
43376      &16*P1P2/(3*P2Q1*P2Q2)-64*A2*MB**2*P1P2/(3*P2Q1*P2Q2)+
43377      &64*A2**2*MB**4*P1P2/(3*P2Q1*P2Q2)+8*MB**2*P1P2/(3*P1Q1*P2Q1*P2Q2)+
43378      &8*MB*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)-
43379      &32*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
43380      &16*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
43381      &32*A2*MB**2*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
43382      &16*A2*MB**2*P1Q1/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q1/(3*P2Q1*P2Q2)+
43383      &8*MB**2*P1P2/(3*P1Q2*P2Q1*P2Q2)+8*MB*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)-
43384      &32*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
43385      &16*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
43386      &32*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1*P2Q2)+
43387      &16*MB*MT*P1P2**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
43388       V18=V18+16*P1P2**3/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43389      &32*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1*P2Q2)-
43390      &16*A2*MB**2*P1Q2/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q2/(3*P2Q1*P2Q2)-
43391      &32*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1*P2Q2)+272*A1*P2Q1/(3*P2Q2)+
43392      &112*A2*P2Q1/P2Q2-80*A1*A2*MB**2*P2Q1/P2Q2-
43393      &400*A1*A2*MB*MT*P2Q1/(3*P2Q2)+208*A2**2*MB*MT*P2Q1/(3*P2Q2)-
43394      &272*A1*A2*MT**2*P2Q1/(3*P2Q2)-320*A1*A2*P1P2*P2Q1/P2Q2+
43395      &96*A2**2*P1P2*P2Q1/P2Q2+256*A1*MB*MT**3*P2Q1/(3*P1Q1**2*P2Q2)+
43396      &512*A1*MT**2*P1P2*P2Q1/(3*P1Q1**2*P2Q2)-8*P2Q1/(3*P1Q1*P2Q2)-
43397      &200*A1*MB*MT*P2Q1/(3*P1Q1*P2Q2)-56*A2*MB*MT*P2Q1/(3*P1Q1*P2Q2)+
43398      &272*A1*MT**2*P2Q1/(3*P1Q1*P2Q2)+160*A2*MT**2*P2Q1/(3*P1Q1*P2Q2)+
43399      &256*A1*P1P2*P2Q1/(3*P1Q1*P2Q2)+48*A2*P1P2*P2Q1/(P1Q1*P2Q2)-
43400      &256*A1*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2)-
43401      &256*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q1*P2Q2)-
43402      &1024*A1*A2*P1P2**2*P2Q1/(3*P1Q1*P2Q2)-
43403      &544*A1*A2*P1Q1*P2Q1/(3*P2Q2)-640*A2**2*P1Q1*P2Q1/(3*P2Q2)-
43404      &32*A1*P1P2*P2Q1/(3*P1Q2*P2Q2)
43405       V18=V18+32*A1*A2*MB*MT*P1P2*P2Q1/(3*P1Q2*P2Q2)+
43406      &32*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q2*P2Q2)+
43407      &64*A1*A2*P1P2**2*P2Q1/(3*P1Q2*P2Q2)-
43408      &32*A1*MT**2*P1P2*P2Q1/(3*P1Q1*P1Q2*P2Q2)+
43409      &64*A1*A2*P1P2*P1Q1*P2Q1/(3*P1Q2*P2Q2)-
43410      &944*A1*A2*P1Q2*P2Q1/(3*P2Q2)-32*A2**2*P1Q2*P2Q1/P2Q2+
43411      &256*A1*MT**2*P1Q2*P2Q1/(3*P1Q1**2*P2Q2)+
43412      &96*A1*P1Q2*P2Q1/(P1Q1*P2Q2)+96*A2*P1Q2*P2Q1/(P1Q1*P2Q2)-
43413      &128*A1*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
43414      &256*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2)-
43415      &128*A1*A2*MT**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
43416      &512*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2)-
43417      &512*A1*A2*P1Q2**2*P2Q1/(3*P1Q1*P2Q2)+544*A1*A2*P2Q1**2/(3*P2Q2)-
43418      &256*A1*MT**2*P2Q1**2/(3*P1Q1**2*P2Q2)-
43419      &272*A1*P2Q1**2/(3*P1Q1*P2Q2)+
43420      &256*A1*A2*MB*MT*P2Q1**2/(3*P1Q1*P2Q2)+
43421      &256*A1*A2*MT**2*P2Q1**2/(3*P1Q1*P2Q2)
43422       V18=V18+512*A1*A2*P1P2*P2Q1**2/(3*P1Q1*P2Q2)+
43423      &512*A1*A2*P1Q2*P2Q1**2/(3*P1Q1*P2Q2)+224*A12*P2Q2+
43424      &656*A1*A2*P2Q2/3+256*A12*MT**4*P2Q2/(3*P1Q1**2)+
43425      &16*A1*P2Q2/(3*P1Q1)+112*A1*A2*MB*MT*P2Q2/(3*P1Q1)+
43426      &32*A12*MT**2*P2Q2/(3*P1Q1)+64*A1*A2*MT**2*P2Q2/P1Q1+
43427      &368*A1*A2*P1P2*P2Q2/(3*P1Q1)-256*A1*MT**2*P2Q2/(3*P1Q2**2)+
43428      &256*A12*MT**4*P2Q2/(3*P1Q2**2)-256*A1*P2Q2/(3*P1Q2)+
43429      &224*A1*A2*MB*MT*P2Q2/(3*P1Q2)-368*A12*MT**2*P2Q2/(3*P1Q2)+
43430      &448*A1*A2*MT**2*P2Q2/(3*P1Q2)+304*A1*A2*P1P2*P2Q2/(3*P1Q2)+
43431      &16*A1*MT**2*P2Q2/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q2/(3*P1Q1*P1Q2)+
43432      &32*A12*P1Q1*P2Q2/P1Q2+944*A1*A2*P1Q1*P2Q2/(3*P1Q2)+
43433      &256*A12*MT**2*P1Q2*P2Q2/(3*P1Q1**2)+
43434      &640*A12*P1Q2*P2Q2/(3*P1Q1)+544*A1*A2*P1Q2*P2Q2/(3*P1Q1)-
43435      &256*A2*MB**2*P2Q2/(3*P2Q1**2)-256*A2**2*MB**3*MT*P2Q2/(3*P2Q1**2)+
43436      &64*MB**2*MT**2*P2Q2/(3*P1Q2**2*P2Q1**2)+
43437      &64*MB**2*P2Q2/(3*P1Q2*P2Q1**2)-
43438      &128*A2*MB**3*MT*P2Q2/(3*P1Q2*P2Q1**2)
43439       V18=V18-128*A2*MB**2*MT**2*P2Q2/(3*P1Q2*P2Q1**2)-
43440      &256*A2*MB**2*P1P2*P2Q2/(3*P1Q2*P2Q1**2)-
43441      &256*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1**2)+
43442      &256*A2**2*MB**2*P1Q2*P2Q2/(3*P2Q1**2)+272*A1*P2Q2/(3*P2Q1)+
43443      &112*A2*P2Q2/P2Q1-80*A1*A2*MB**2*P2Q2/P2Q1-
43444      &400*A1*A2*MB*MT*P2Q2/(3*P2Q1)+208*A2**2*MB*MT*P2Q2/(3*P2Q1)-
43445      &272*A1*A2*MT**2*P2Q2/(3*P2Q1)-320*A1*A2*P1P2*P2Q2/P2Q1+
43446      &96*A2**2*P1P2*P2Q2/P2Q1-32*A1*P1P2*P2Q2/(3*P1Q1*P2Q1)+
43447      &32*A1*A2*MB*MT*P1P2*P2Q2/(3*P1Q1*P2Q1)+
43448      &32*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q1*P2Q1)+
43449      &64*A1*A2*P1P2**2*P2Q2/(3*P1Q1*P2Q1)-944*A1*A2*P1Q1*P2Q2/(3*P2Q1)-
43450      &32*A2**2*P1Q1*P2Q2/P2Q1+256*A1*MB*MT**3*P2Q2/(3*P1Q2**2*P2Q1)+
43451      &512*A1*MT**2*P1P2*P2Q2/(3*P1Q2**2*P2Q1)+
43452      &256*A1*MT**2*P1Q1*P2Q2/(3*P1Q2**2*P2Q1)-8*P2Q2/(3*P1Q2*P2Q1)-
43453      &200*A1*MB*MT*P2Q2/(3*P1Q2*P2Q1)-56*A2*MB*MT*P2Q2/(3*P1Q2*P2Q1)+
43454      &272*A1*MT**2*P2Q2/(3*P1Q2*P2Q1)+160*A2*MT**2*P2Q2/(3*P1Q2*P2Q1)+
43455      &256*A1*P1P2*P2Q2/(3*P1Q2*P2Q1)+48*A2*P1P2*P2Q2/(P1Q2*P2Q1)
43456       V18=V18-256*A1*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1)-
43457      &256*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q2*P2Q1)-
43458      &1024*A1*A2*P1P2**2*P2Q2/(3*P1Q2*P2Q1)-
43459      &32*A1*MT**2*P1P2*P2Q2/(3*P1Q1*P1Q2*P2Q1)+
43460      &96*A1*P1Q1*P2Q2/(P1Q2*P2Q1)+96*A2*P1Q1*P2Q2/(P1Q2*P2Q1)-
43461      &128*A1*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
43462      &256*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1)-
43463      &128*A1*A2*MT**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
43464      &512*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1)-
43465      &512*A1*A2*P1Q1**2*P2Q2/(3*P1Q2*P2Q1)-544*A1*A2*P1Q2*P2Q2/(3*P2Q1)-
43466      &640*A2**2*P1Q2*P2Q2/(3*P2Q1)+
43467      &64*A1*A2*P1P2*P1Q2*P2Q2/(3*P1Q1*P2Q1)+544*A1*A2*P2Q2**2/(3*P2Q1)-
43468      &256*A1*MT**2*P2Q2**2/(3*P1Q2**2*P2Q1)-
43469      &272*A1*P2Q2**2/(3*P1Q2*P2Q1)+
43470      &256*A1*A2*MB*MT*P2Q2**2/(3*P1Q2*P2Q1)+
43471      &256*A1*A2*MT**2*P2Q2**2/(3*P1Q2*P2Q1)+
43472      &512*A1*A2*P1P2*P2Q2**2/(3*P1Q2*P2Q1)
43473       V18=V18+512*A1*A2*P1Q1*P2Q2**2/(3*P1Q2*P2Q1)+
43474      &384*A12*MB*MT*P1Q1**2/S**2+
43475      &384*A12*P1P2*P1Q1**2/S**2+2688*A12*MB*MT*P1Q1*P1Q2/S**2+
43476      &2688*A12*P1P2*P1Q1*P1Q2/S**2+384*A12*MB*MT*P1Q2**2/S**2+
43477      &384*A12*P1P2*P1Q2**2/S**2+768*A1*A2*MB*MT*P1Q1*P2Q1/S**2+
43478      &768*A1*A2*P1P2*P1Q1*P2Q1/S**2+2688*A1*A2*MB*MT*P1Q2*P2Q1/S**2+
43479      &2688*A1*A2*P1P2*P1Q2*P2Q1/S**2-960*A12*P1Q1*P1Q2*P2Q1/S**2-
43480      &960*A1*A2*P1Q1*P1Q2*P2Q1/S**2+960*A12*P1Q2**2*P2Q1/S**2+
43481      &960*A1*A2*P1Q2**2*P2Q1/S**2+384*A2**2*MB*MT*P2Q1**2/S**2+
43482      &384*A2**2*P1P2*P2Q1**2/S**2-960*A1*A2*P1Q2*P2Q1**2/S**2-
43483      &960*A2**2*P1Q2*P2Q1**2/S**2+2688*A1*A2*MB*MT*P1Q1*P2Q2/S**2+
43484      &2688*A1*A2*P1P2*P1Q1*P2Q2/S**2+960*A12*P1Q1**2*P2Q2/S**2+
43485      &960*A1*A2*P1Q1**2*P2Q2/S**2+768*A1*A2*MB*MT*P1Q2*P2Q2/S**2+
43486      &768*A1*A2*P1P2*P1Q2*P2Q2/S**2-960*A12*P1Q1*P1Q2*P2Q2/S**2-
43487      &960*A1*A2*P1Q1*P1Q2*P2Q2/S**2+2688*A2**2*MB*MT*P2Q1*P2Q2/S**2+
43488      &2688*A2**2*P1P2*P2Q1*P2Q2/S**2+960*A1*A2*P1Q1*P2Q1*P2Q2/S**2+
43489      &960*A2**2*P1Q1*P2Q1*P2Q2/S**2+960*A1*A2*P1Q2*P2Q1*P2Q2/S**2+
43490      &960*A2**2*P1Q2*P2Q1*P2Q2/S**2+384*A2**2*MB*MT*P2Q2**2/S**2
43491       V18=V18+384*A2**2*P1P2*P2Q2**2/S**2-960*A1*A2*P1Q1*P2Q2**2/S**2-
43492      &960*A2**2*P1Q1*P2Q2**2/S**2+96*A1*MB*MT/S+96*A2*MB*MT/S-
43493      &768*A2**2*MB**3*MT/S-768*A12*MB*MT**3/S-192*A1*P1P2/S-
43494      &192*A2*P1P2/S-768*A2**2*MB**2*P1P2/S-2304*A1*A2*MB*MT*P1P2/S-
43495      &768*A12*MT**2*P1P2/S-2304*A1*A2*P1P2**2/S-
43496      &96*A1*MB*MT**3/(P1Q1*S)-192*A2*MB*MT*P1P2/(P1Q1*S)-
43497      &96*A1*MT**2*P1P2/(P1Q1*S)-192*A2*P1P2**2/(P1Q1*S)-192*A1*P1Q1/S-
43498      &144*A2*P1Q1/S-384*A1*A2*MB**2*P1Q1/S-480*A2**2*MB**2*P1Q1/S-
43499      &480*A12*MB*MT*P1Q1/S+96*A1*A2*MB*MT*P1Q1/S-
43500      &864*A12*P1P2*P1Q1/S-672*A1*A2*P1P2*P1Q1/S-96*A1*A2*P1Q1**2/S-
43501      &96*A1*MB*MT**3/(P1Q2*S)-192*A2*MB*MT*P1P2/(P1Q2*S)-
43502      &96*A1*MT**2*P1P2/(P1Q2*S)-192*A2*P1P2**2/(P1Q2*S)-
43503      &48*A1*MB*MT*P1Q1/(P1Q2*S)+96*A2*MB*MT*P1Q1/(P1Q2*S)-
43504      &48*A1*MT**2*P1Q1/(P1Q2*S)-192*A1*P1P2*P1Q1/(P1Q2*S)-
43505      &192*A2*P1P2*P1Q1/(P1Q2*S)+192*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*S)+
43506      &192*A1*A2*P1P2**2*P1Q1/(P1Q2*S)-192*A1*P1Q1**2/(P1Q2*S)-
43507      &192*A2*P1Q1**2/(P1Q2*S)+192*A1*A2*MB**2*P1Q1**2/(P1Q2*S)
43508       V18=V18-192*A12*MB*MT*P1Q1**2/(P1Q2*S)+
43509      &96*A1*A2*MB*MT*P1Q1**2/(P1Q2*S)+
43510      &192*A1*A2*P1P2*P1Q1**2/(P1Q2*S)-192*A1*P1Q2/S-144*A2*P1Q2/S-
43511      &384*A1*A2*MB**2*P1Q2/S-480*A2**2*MB**2*P1Q2/S-
43512      &480*A12*MB*MT*P1Q2/S+96*A1*A2*MB*MT*P1Q2/S-
43513      &864*A12*P1P2*P1Q2/S-672*A1*A2*P1P2*P1Q2/S-
43514      &48*A1*MB*MT*P1Q2/(P1Q1*S)+96*A2*MB*MT*P1Q2/(P1Q1*S)-
43515      &48*A1*MT**2*P1Q2/(P1Q1*S)-192*A1*P1P2*P1Q2/(P1Q1*S)-
43516      &192*A2*P1P2*P1Q2/(P1Q1*S)+192*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*S)+
43517      &192*A1*A2*P1P2**2*P1Q2/(P1Q1*S)-576*A1*A2*P1Q1*P1Q2/S-
43518      &96*A1*A2*P1Q2**2/S-192*A1*P1Q2**2/(P1Q1*S)-
43519      &192*A2*P1Q2**2/(P1Q1*S)+192*A1*A2*MB**2*P1Q2**2/(P1Q1*S)-
43520      &192*A12*MB*MT*P1Q2**2/(P1Q1*S)+96*A1*A2*MB*MT*P1Q2**2/(P1Q1*S)+
43521      &192*A1*A2*P1P2*P1Q2**2/(P1Q1*S)+96*A2*MB**3*MT/(P2Q1*S)+
43522      &96*A2*MB**2*P1P2/(P2Q1*S)+192*A1*MB*MT*P1P2/(P2Q1*S)+
43523      &192*A1*P1P2**2/(P2Q1*S)+96*A1*MB**2*P1Q1/(P2Q1*S)+
43524      &192*A2*MB**2*P1Q1/(P2Q1*S)+96*A1*MB*MT*P1Q1/(P2Q1*S)+
43525      &192*A1*A2*MB**3*MT*P1Q1/(P2Q1*S)+192*A1*P1P2*P1Q1/(P2Q1*S)
43526       V18=V18+192*A1*A2*MB**2*P1P2*P1Q1/(P2Q1*S)+
43527      &96*A1*A2*MB**2*P1Q1**2/(P2Q1*S)+
43528      &192*A2*MB**3*MT*P1Q1/(P1Q2*P2Q1*S)+
43529      &192*A2*MB**2*P1P2*P1Q1/(P1Q2*P2Q1*S)+
43530      &96*A1*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1*S)+
43531      &96*A1*P1P2**2*P1Q1/(P1Q2*P2Q1*S)+
43532      &96*A1*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
43533      &192*A2*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
43534      &48*A1*MB*MT*P1Q1**2/(P1Q2*P2Q1*S)+
43535      &96*A1*P1P2*P1Q1**2/(P1Q2*P2Q1*S)+96*A1*MB**2*P1Q2/(P2Q1*S)+
43536      &48*A2*MB**2*P1Q2/(P2Q1*S)-192*A1*A2*MB**3*MT*P1Q2/(P2Q1*S)-
43537      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q1*S)-
43538      &96*A1*A2*MB**2*P1Q2**2/(P2Q1*S)+144*A1*P2Q1/S+192*A2*P2Q1/S-
43539      &96*A1*A2*MB*MT*P2Q1/S+480*A2**2*MB*MT*P2Q1/S+
43540      &480*A12*MT**2*P2Q1/S+384*A1*A2*MT**2*P2Q1/S+
43541      &672*A1*A2*P1P2*P2Q1/S+864*A2**2*P1P2*P2Q1/S+
43542      &96*A2*MB*MT*P2Q1/(P1Q1*S)+192*A1*MT**2*P2Q1/(P1Q1*S)
43543       V18=V18+96*A2*MT**2*P2Q1/(P1Q1*S)+
43544      &192*A1*A2*MB*MT**3*P2Q1/(P1Q1*S)+
43545      &192*A2*P1P2*P2Q1/(P1Q1*S)+192*A1*A2*MT**2*P1P2*P2Q1/(P1Q1*S)-
43546      &192*A12*P1Q1*P2Q1/S-192*A2**2*P1Q1*P2Q1/S+
43547      &48*A1*MT**2*P2Q1/(P1Q2*S)+96*A2*MT**2*P2Q1/(P1Q2*S)-
43548      &192*A1*A2*MB*MT**3*P2Q1/(P1Q2*S)-
43549      &192*A1*A2*MT**2*P1P2*P2Q1/(P1Q2*S)-
43550      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P1Q2*S)-
43551      &192*A12*MT**2*P1Q1*P2Q1/(P1Q2*S)-
43552      &96*A1*A2*MT**2*P1Q1*P2Q1/(P1Q2*S)-
43553      &384*A1*A2*P1P2*P1Q1*P2Q1/(P1Q2*S)-384*A12*P1Q1**2*P2Q1/(P1Q2*S)-
43554      &384*A1*A2*P1Q1**2*P2Q1/(P1Q2*S)-480*A12*P1Q2*P2Q1/S-
43555      &960*A1*A2*P1Q2*P2Q1/S-480*A2**2*P1Q2*P2Q1/S+
43556      &144*A1*P1Q2*P2Q1/(P1Q1*S)+96*A2*P1Q2*P2Q1/(P1Q1*S)-
43557      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*S)-
43558      &96*A12*MT**2*P1Q2*P2Q1/(P1Q1*S)+
43559      &96*A1*A2*MT**2*P1Q2*P2Q1/(P1Q1*S)-
43560      &576*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*S)-192*A12*P1Q2**2*P2Q1/(P1Q1*S)
43561       V18=V18-384*A1*A2*P1Q2**2*P2Q1/(P1Q1*S)-96*A1*A2*P2Q1**2/S-
43562      &96*A1*A2*MT**2*P2Q1**2/(P1Q1*S)+96*A1*A2*MT**2*P2Q1**2/(P1Q2*S)+
43563      &288*A1*A2*P1Q2*P2Q1**2/(P1Q1*S)+96*A2*MB**3*MT/(P2Q2*S)+
43564      &96*A2*MB**2*P1P2/(P2Q2*S)+192*A1*MB*MT*P1P2/(P2Q2*S)+
43565      &192*A1*P1P2**2/(P2Q2*S)+96*A1*MB**2*P1Q1/(P2Q2*S)+
43566      &48*A2*MB**2*P1Q1/(P2Q2*S)-192*A1*A2*MB**3*MT*P1Q1/(P2Q2*S)-
43567      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q2*S)-
43568      &96*A1*A2*MB**2*P1Q1**2/(P2Q2*S)+96*A1*MB**2*P1Q2/(P2Q2*S)+
43569      &192*A2*MB**2*P1Q2/(P2Q2*S)+96*A1*MB*MT*P1Q2/(P2Q2*S)+
43570      &192*A1*A2*MB**3*MT*P1Q2/(P2Q2*S)+192*A1*P1P2*P1Q2/(P2Q2*S)+
43571      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q2*S)+
43572      &192*A2*MB**3*MT*P1Q2/(P1Q1*P2Q2*S)+
43573      &192*A2*MB**2*P1P2*P1Q2/(P1Q1*P2Q2*S)+
43574      &96*A1*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2*S)+
43575      &96*A1*P1P2**2*P1Q2/(P1Q1*P2Q2*S)+96*A1*A2*MB**2*P1Q2**2/(P2Q2*S)+
43576      &96*A1*MB**2*P1Q2**2/(P1Q1*P2Q2*S)+
43577      &192*A2*MB**2*P1Q2**2/(P1Q1*P2Q2*S)
43578       V18=V18+48*A1*MB*MT*P1Q2**2/(P1Q1*P2Q2*S)+
43579      &96*A1*P1P2*P1Q2**2/(P1Q1*P2Q2*S)-48*A2*MB**2*P2Q1/(P2Q2*S)+
43580      &96*A1*MB*MT*P2Q1/(P2Q2*S)-48*A2*MB*MT*P2Q1/(P2Q2*S)-
43581      &192*A1*P1P2*P2Q1/(P2Q2*S)-192*A2*P1P2*P2Q1/(P2Q2*S)+
43582      &192*A1*A2*MB*MT*P1P2*P2Q1/(P2Q2*S)+
43583      &192*A1*A2*P1P2**2*P2Q1/(P2Q2*S)-
43584      &192*A1*MB*MT**3*P2Q1/(P1Q1*P2Q2*S)-
43585      &96*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2*S)-
43586      &192*A1*MT**2*P1P2*P2Q1/(P1Q1*P2Q2*S)-
43587      &96*A2*P1P2**2*P2Q1/(P1Q1*P2Q2*S)+
43588      &96*A1*A2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
43589      &192*A2**2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
43590      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P2Q2*S)+
43591      &384*A1*A2*P1P2*P1Q1*P2Q1/(P2Q2*S)-96*A1*P1Q2*P2Q1/(P2Q2*S)-
43592      &144*A2*P1Q2*P2Q1/(P2Q2*S)-96*A1*A2*MB**2*P1Q2*P2Q1/(P2Q2*S)+
43593      &96*A2**2*MB**2*P1Q2*P2Q1/(P2Q2*S)+
43594      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P2Q2*S)
43595       V18=V18+576*A1*A2*P1P2*P1Q2*P2Q1/(P2Q2*S)-
43596      &96*A2*MB**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
43597      &48*A1*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
43598      &48*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43599      &96*A1*MT**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43600      &96*A1*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
43601      &96*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
43602      &96*A1*A2*P1Q1*P1Q2*P2Q1/(P2Q2*S)+288*A1*A2*P1Q2**2*P2Q1/(P2Q2*S)-
43603      &96*A1*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)-96*A2*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)+
43604      &192*A1*P2Q1**2/(P2Q2*S)+192*A2*P2Q1**2/(P2Q2*S)-
43605      &96*A1*A2*MB*MT*P2Q1**2/(P2Q2*S)+192*A2**2*MB*MT*P2Q1**2/(P2Q2*S)-
43606      &192*A1*A2*MT**2*P2Q1**2/(P2Q2*S)-192*A1*A2*P1P2*P2Q1**2/(P2Q2*S)+
43607      &48*A2*MB*MT*P2Q1**2/(P1Q1*P2Q2*S)+
43608      &192*A1*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
43609      &96*A2*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
43610      &96*A2*P1P2*P2Q1**2/(P1Q1*P2Q2*S)-384*A1*A2*P1Q1*P2Q1**2/(P2Q2*S)-
43611      &384*A2**2*P1Q1*P2Q1**2/(P2Q2*S)-384*A1*A2*P1Q2*P2Q1**2/(P2Q2*S)
43612       V18=V18-192*A2**2*P1Q2*P2Q1**2/(P2Q2*S)+
43613      &96*A1*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+
43614      &96*A2*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+144*A1*P2Q2/S+192*A2*P2Q2/S-
43615      &96*A1*A2*MB*MT*P2Q2/S+480*A2**2*MB*MT*P2Q2/S+
43616      &480*A12*MT**2*P2Q2/S+384*A1*A2*MT**2*P2Q2/S+
43617      &672*A1*A2*P1P2*P2Q2/S+864*A2**2*P1P2*P2Q2/S+
43618      &48*A1*MT**2*P2Q2/(P1Q1*S)+96*A2*MT**2*P2Q2/(P1Q1*S)-
43619      &192*A1*A2*MB*MT**3*P2Q2/(P1Q1*S)-
43620      &192*A1*A2*MT**2*P1P2*P2Q2/(P1Q1*S)-480*A12*P1Q1*P2Q2/S-
43621      &960*A1*A2*P1Q1*P2Q2/S-480*A2**2*P1Q1*P2Q2/S+
43622      &96*A2*MB*MT*P2Q2/(P1Q2*S)+192*A1*MT**2*P2Q2/(P1Q2*S)+
43623      &96*A2*MT**2*P2Q2/(P1Q2*S)+192*A1*A2*MB*MT**3*P2Q2/(P1Q2*S)+
43624      &192*A2*P1P2*P2Q2/(P1Q2*S)+192*A1*A2*MT**2*P1P2*P2Q2/(P1Q2*S)+
43625      &144*A1*P1Q1*P2Q2/(P1Q2*S)+96*A2*P1Q1*P2Q2/(P1Q2*S)-
43626      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*S)-
43627      &96*A12*MT**2*P1Q1*P2Q2/(P1Q2*S)+
43628      &96*A1*A2*MT**2*P1Q1*P2Q2/(P1Q2*S)
43629       V18=V18-576*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*S)-
43630      &192*A12*P1Q1**2*P2Q2/(P1Q2*S)-
43631      &384*A1*A2*P1Q1**2*P2Q2/(P1Q2*S)-192*A12*P1Q2*P2Q2/S-
43632      &192*A2**2*P1Q2*P2Q2/S-96*A1*A2*MB*MT*P1Q2*P2Q2/(P1Q1*S)-
43633      &192*A12*MT**2*P1Q2*P2Q2/(P1Q1*S)-
43634      &96*A1*A2*MT**2*P1Q2*P2Q2/(P1Q1*S)-
43635      &384*A1*A2*P1P2*P1Q2*P2Q2/(P1Q1*S)-384*A12*P1Q2**2*P2Q2/(P1Q1*S)-
43636      &384*A1*A2*P1Q2**2*P2Q2/(P1Q1*S)-48*A2*MB**2*P2Q2/(P2Q1*S)+
43637      &96*A1*MB*MT*P2Q2/(P2Q1*S)-48*A2*MB*MT*P2Q2/(P2Q1*S)-
43638      &192*A1*P1P2*P2Q2/(P2Q1*S)-192*A2*P1P2*P2Q2/(P2Q1*S)+
43639      &192*A1*A2*MB*MT*P1P2*P2Q2/(P2Q1*S)+
43640      &192*A1*A2*P1P2**2*P2Q2/(P2Q1*S)-96*A1*P1Q1*P2Q2/(P2Q1*S)-
43641      &144*A2*P1Q1*P2Q2/(P2Q1*S)-96*A1*A2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
43642      &96*A2**2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
43643      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P2Q1*S)+
43644      &576*A1*A2*P1P2*P1Q1*P2Q2/(P2Q1*S)+288*A1*A2*P1Q1**2*P2Q2/(P2Q1*S)-
43645      &192*A1*MB*MT**3*P2Q2/(P1Q2*P2Q1*S)
43646       V18=V18-96*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1*S)-
43647      &192*A1*MT**2*P1P2*P2Q2/(P1Q2*P2Q1*S)-
43648      &96*A2*P1P2**2*P2Q2/(P1Q2*P2Q1*S)-
43649      &96*A2*MB**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)+
43650      &48*A1*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)
43651  
43652       V18BIS=
43653      &48*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43654      &96*A1*MT**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43655      &96*A1*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43656      &96*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
43657      &96*A1*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)-96*A2*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)+
43658      &96*A1*A2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
43659      &192*A2**2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
43660      &96*A1*A2*MB*MT*P1Q2*P2Q2/(P2Q1*S)+
43661      &384*A1*A2*P1P2*P1Q2*P2Q2/(P2Q1*S)+
43662      &96*A1*A2*P1Q1*P1Q2*P2Q2/(P2Q1*S)-576*A1*A2*P2Q1*P2Q2/S+
43663      &96*A1*A2*P1Q1*P2Q1*P2Q2/(P1Q2*S)+96*A1*A2*P1Q2*P2Q1*P2Q2/(P1Q1*S)-
43664      &96*A1*A2*P2Q2**2/S+96*A1*A2*MT**2*P2Q2**2/(P1Q1*S)-
43665      &96*A1*A2*MT**2*P2Q2**2/(P1Q2*S)+288*A1*A2*P1Q1*P2Q2**2/(P1Q2*S)+
43666      &192*A1*P2Q2**2/(P2Q1*S)+192*A2*P2Q2**2/(P2Q1*S)-
43667      &96*A1*A2*MB*MT*P2Q2**2/(P2Q1*S)+192*A2**2*MB*MT*P2Q2**2/(P2Q1*S)-
43668      &192*A1*A2*MT**2*P2Q2**2/(P2Q1*S)-192*A1*A2*P1P2*P2Q2**2/(P2Q1*S)
43669       V18BIS=V18BIS-384*A1*A2*P1Q1*P2Q2**2/(P2Q1*S)-
43670      &192*A2**2*P1Q1*P2Q2**2/(P2Q1*S)+
43671      &48*A2*MB*MT*P2Q2**2/(P1Q2*P2Q1*S)+
43672      &192*A1*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
43673      &96*A2*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
43674      &96*A2*P1P2*P2Q2**2/(P1Q2*P2Q1*S)+96*A1*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)+
43675      &96*A2*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)-384*A1*A2*P1Q2*P2Q2**2/(P2Q1*S)-
43676      &384*A2**2*P1Q2*P2Q2**2/(P2Q1*S)+512*A1*A2*S/3-
43677      &128*A1*MT**2*S/(3*P1Q1**2)-128*A12*MB*MT**3*S/(3*P1Q1**2)-
43678      &152*A1*S/(3*P1Q1)+152*A12*MB*MT*S/(3*P1Q1)+
43679      &128*A1*A2*MB*MT*S/(3*P1Q1)+112*A1*A2*MT**2*S/(3*P1Q1)-
43680      &16*A12*P1P2*S/P1Q1+152*A1*A2*P1P2*S/(3*P1Q1)-
43681      &128*A1*MT**2*S/(3*P1Q2**2)-128*A12*MB*MT**3*S/(3*P1Q2**2)-
43682      &152*A1*S/(3*P1Q2)+152*A12*MB*MT*S/(3*P1Q2)+
43683      &128*A1*A2*MB*MT*S/(3*P1Q2)+112*A1*A2*MT**2*S/(3*P1Q2)-
43684      &16*A12*P1P2*S/P1Q2+152*A1*A2*P1P2*S/(3*P1Q2)-
43685      &16*A1*MB*MT*S/(3*P1Q1*P1Q2)+32*A12*MB*MT**3*S/(3*P1Q1*P1Q2)
43686       V18BIS=V18BIS-16*A1*P1P2*S/(3*P1Q1*P1Q2)+
43687      &272*A1*A2*P1Q1*S/(3*P1Q2)+
43688      &272*A1*A2*P1Q2*S/(3*P1Q1)-128*A2*MB**2*S/(3*P2Q1**2)-
43689      &128*A2**2*MB**3*MT*S/(3*P2Q1**2)+
43690      &32*MB**2*MT**2*S/(3*P1Q2**2*P2Q1**2)+32*MB**2*S/(3*P1Q2*P2Q1**2)-
43691      &64*A2*MB**3*MT*S/(3*P1Q2*P2Q1**2)-
43692      &64*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1**2)-
43693      &128*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1**2)-
43694      &128*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1**2)+
43695      &128*A2**2*MB**2*P1Q2*S/(3*P2Q1**2)+152*A2*S/(3*P2Q1)-
43696      &112*A1*A2*MB**2*S/(3*P2Q1)-128*A1*A2*MB*MT*S/(3*P2Q1)-
43697      &152*A2**2*MB*MT*S/(3*P2Q1)-152*A1*A2*P1P2*S/(3*P2Q1)+
43698      &16*A2**2*P1P2*S/P2Q1+8*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q1)+
43699      &16*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q1)+
43700      &8*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q1)-8*A1*P1P2*S/(3*P1Q1*P2Q1)-
43701      &8*A2*P1P2*S/(3*P1Q1*P2Q1)+8*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1)+
43702      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1)
43703       V18BIS=V18BIS+8*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q1)+
43704      &32*A1*A2*P1P2**2*S/(3*P1Q1*P2Q1)-32*A2**2*P1Q1*S/(3*P2Q1)-
43705      &32*MT**2*S/(3*P1Q2**2*P2Q1)+64*A1*MB**2*MT**2*S/(3*P1Q2**2*P2Q1)+
43706      &64*A1*MB*MT**3*S/(3*P1Q2**2*P2Q1)+
43707      &128*A1*MT**2*P1P2*S/(3*P1Q2**2*P2Q1)-12*S/(P1Q2*P2Q1)+
43708      &24*A1*MB**2*S/(P1Q2*P2Q1)-64*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q1)+
43709      &24*A2*MT**2*S/(P1Q2*P2Q1)-128*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1)-
43710      &64*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q1)+56*A1*P1P2*S/(3*P1Q2*P2Q1)+
43711      &56*A2*P1P2*S/(3*P1Q2*P2Q1)-64*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1)-
43712      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1)-
43713      &64*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q1)-
43714      &256*A1*A2*P1P2**2*S/(3*P1Q2*P2Q1)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+
43715      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
43716      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+136*A2*P1Q1*S/(3*P1Q2*P2Q1)-
43717      &128*A1*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1)-
43718      &128*A1*A2*MB*MT*P1Q1*S/(3*P1Q2*P2Q1)-
43719      &256*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1)-160*A2**2*P1Q2*S/(3*P2Q1)
43720       V18BIS=V18BIS+16*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1)-
43721      &32*A12*P2Q1*S/(3*P1Q1)-
43722      &128*A12*MT**2*P2Q1*S/(3*P1Q2**2)-160*A12*P2Q1*S/(3*P1Q2)-
43723      &128*A2*MB**2*S/(3*P2Q2**2)-128*A2**2*MB**3*MT*S/(3*P2Q2**2)+
43724      &32*MB**2*MT**2*S/(3*P1Q1**2*P2Q2**2)+32*MB**2*S/(3*P1Q1*P2Q2**2)-
43725      &64*A2*MB**3*MT*S/(3*P1Q1*P2Q2**2)-
43726      &64*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2**2)-
43727      &128*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2**2)+
43728      &128*A2**2*MB**2*P1Q1*S/(3*P2Q2**2)-
43729      &128*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2**2)+152*A2*S/(3*P2Q2)-
43730      &112*A1*A2*MB**2*S/(3*P2Q2)-128*A1*A2*MB*MT*S/(3*P2Q2)-
43731      &152*A2**2*MB*MT*S/(3*P2Q2)-152*A1*A2*P1P2*S/(3*P2Q2)+
43732      &16*A2**2*P1P2*S/P2Q2-32*MT**2*S/(3*P1Q1**2*P2Q2)+
43733      &64*A1*MB**2*MT**2*S/(3*P1Q1**2*P2Q2)+
43734      &64*A1*MB*MT**3*S/(3*P1Q1**2*P2Q2)+
43735      &128*A1*MT**2*P1P2*S/(3*P1Q1**2*P2Q2)-12*S/(P1Q1*P2Q2)+
43736      &24*A1*MB**2*S/(P1Q1*P2Q2)-64*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q2)
43737       V18BIS=V18BIS+24*A2*MT**2*S/(P1Q1*P2Q2)-
43738      &128*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2)-
43739      &64*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q2)+56*A1*P1P2*S/(3*P1Q1*P2Q2)+
43740      &56*A2*P1P2*S/(3*P1Q1*P2Q2)-64*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2)-
43741      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q2)-
43742      &64*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q2)-
43743      &256*A1*A2*P1P2**2*S/(3*P1Q1*P2Q2)-160*A2**2*P1Q1*S/(3*P2Q2)+
43744      &8*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q2)+
43745      &16*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q2)+
43746      &8*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q2)-8*A1*P1P2*S/(3*P1Q2*P2Q2)-
43747      &8*A2*P1P2*S/(3*P1Q2*P2Q2)+8*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q2)+
43748      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q2)+
43749      &8*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q2)+
43750      &32*A1*A2*P1P2**2*S/(3*P1Q2*P2Q2)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
43751      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
43752      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
43753      &16*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q2)-32*A2**2*P1Q2*S/(3*P2Q2)
43754       V18BIS=V18BIS+136*A2*P1Q2*S/(3*P1Q1*P2Q2)-
43755      &128*A1*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2)-
43756      &128*A1*A2*MB*MT*P1Q2*S/(3*P1Q1*P2Q2)-
43757      &256*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q2)-16*A2*MB*MT*S/(3*P2Q1*P2Q2)+
43758      &32*A2**2*MB**3*MT*S/(3*P2Q1*P2Q2)-16*A2*P1P2*S/(3*P2Q1*P2Q2)-
43759      &4*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+8*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-
43760      &8*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-4*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
43761      &8*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1*P2Q2)-
43762      &8*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
43763      &2*MB**3*MT*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43764      &4*MB**2*MT**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43765      &2*MB*MT**3*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43766      &2*MB**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43767      &4*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43768      &2*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43769      &8*P1P2**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
43770      &8*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1*P2Q2)
43771       V18BIS=V18BIS+8*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1*P2Q2)+
43772      &272*A1*A2*P2Q1*S/(3*P2Q2)-
43773      &128*A1*MT**2*P2Q1*S/(3*P1Q1**2*P2Q2)-136*A1*P2Q1*S/(3*P1Q1*P2Q2)+
43774      &128*A1*A2*MB*MT*P2Q1*S/(3*P1Q1*P2Q2)+
43775      &128*A1*A2*MT**2*P2Q1*S/(3*P1Q1*P2Q2)+
43776      &256*A1*A2*P1P2*P2Q1*S/(3*P1Q1*P2Q2)-
43777      &16*A1*A2*P1P2*P2Q1*S/(3*P1Q2*P2Q2)+
43778      &8*A1*P1P2*P2Q1*S/(3*P1Q1*P1Q2*P2Q2)+
43779      &256*A1*A2*P1Q2*P2Q1*S/(3*P1Q1*P2Q2)-
43780      &128*A12*MT**2*P2Q2*S/(3*P1Q1**2)-160*A12*P2Q2*S/(3*P1Q1)-
43781      &32*A12*P2Q2*S/(3*P1Q2)+272*A1*A2*P2Q2*S/(3*P2Q1)-
43782      &16*A1*A2*P1P2*P2Q2*S/(3*P1Q1*P2Q1)-
43783      &128*A1*MT**2*P2Q2*S/(3*P1Q2**2*P2Q1)-136*A1*P2Q2*S/(3*P1Q2*P2Q1)+
43784      &128*A1*A2*MB*MT*P2Q2*S/(3*P1Q2*P2Q1)+
43785      &128*A1*A2*MT**2*P2Q2*S/(3*P1Q2*P2Q1)+
43786      &256*A1*A2*P1P2*P2Q2*S/(3*P1Q2*P2Q1)+
43787      &8*A1*P1P2*P2Q2*S/(3*P1Q1*P1Q2*P2Q1)
43788       V18BIS=V18BIS+256*A1*A2*P1Q1*P2Q2*S/(3*P1Q2*P2Q1)+
43789      &8*A12*MB*MT*S**2/(3*P1Q1*P1Q2)+16*A12*P1P2*S**2/(3*P1Q1*P1Q2)-
43790      &8*A1*A2*P1P2*S**2/(3*P1Q1*P2Q1)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1)-
43791      &8*A1*A2*P1P2*S**2/(3*P1Q2*P2Q2)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q2)+
43792      &8*A2**2*MB*MT*S**2/(3*P2Q1*P2Q2)+16*A2**2*P1P2*S**2/(3*P2Q1*P2Q2)-
43793      &4*A2*P1P2*S**2/(3*P1Q1*P2Q1*P2Q2)-
43794      &4*A2*P1P2*S**2/(3*P1Q2*P2Q1*P2Q2)+
43795      &2*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
43796 C
43797  
43798       A18 = 640*A1/3+640*A2/3+32*A1*A2*MB**2+368*A12*MB*MT+
43799      &512*A1*A2*MB*MT/3+
43800      &368*A2**2*MB*MT+32*A1*A2*MT**2+496*A12*P1P2/3+
43801      &320*A1*A2*P1P2+496*A2**2*P1P2/3-128*A1*MB*MT**3/(3*P1Q1**2)+
43802      &128*A1*MT**4/(3*P1Q1**2)+256*A12*MB*MT**5/(3*P1Q1**2)+
43803      &256*A1*MT**2*P1P2/(3*P1Q1**2)-256*A12*MT**4*P1P2/(3*P1Q1**2)+
43804      &8/(3*P1Q1)+32*A1*MB*MT/P1Q1+56*A2*MB*MT/(3*P1Q1)+
43805      &88*A1*MT**2/(3*P1Q1)+72*A2*MT**2/P1Q1-
43806      &704*A12*MB*MT**3/(3*P1Q1)+224*A1*A2*MB*MT**3/(3*P1Q1)+
43807      &104*A1*P1P2/(3*P1Q1)+48*A2*P1P2/P1Q1-
43808      &128*A1*A2*MB*MT*P1P2/(3*P1Q1)+512*A12*MT**2*P1P2/(3*P1Q1)-
43809      &448*A1*A2*MT**2*P1P2/(3*P1Q1)-32*A1*A2*P1P2**2/P1Q1-
43810      &656*A1*A2*P1Q1/3-224*A2**2*P1Q1-128*A1*MB*MT**3/(3*P1Q2**2)+
43811      &128*A1*MT**4/(3*P1Q2**2)+256*A12*MB*MT**5/(3*P1Q2**2)+
43812      &256*A1*MT**2*P1P2/(3*P1Q2**2)-256*A12*MT**4*P1P2/(3*P1Q2**2)+
43813      &256*A1*MT**2*P1Q1/(3*P1Q2**2)-256*A12*MB*MT**3*P1Q1/(3*P1Q2**2)+
43814      &8/(3*P1Q2)+32*A1*MB*MT/P1Q2+56*A2*MB*MT/(3*P1Q2)
43815       A18=A18+88*A1*MT**2/(3*P1Q2)+72*A2*MT**2/P1Q2-
43816      &704*A12*MB*MT**3/(3*P1Q2)+224*A1*A2*MB*MT**3/(3*P1Q2)+
43817      &104*A1*P1P2/(3*P1Q2)+48*A2*P1P2/P1Q2-
43818      &128*A1*A2*MB*MT*P1P2/(3*P1Q2)+512*A12*MT**2*P1P2/(3*P1Q2)-
43819      &448*A1*A2*MT**2*P1P2/(3*P1Q2)-32*A1*A2*P1P2**2/P1Q2+
43820      &32*A1*MB*MT**3/(3*P1Q1*P1Q2)-32*A1*MT**4/(3*P1Q1*P1Q2)-
43821      &64*A12*MB*MT**5/(3*P1Q1*P1Q2)+16*P1P2/(3*P1Q1*P1Q2)-
43822      &64*A1*MT**2*P1P2/(3*P1Q1*P1Q2)+64*A12*MT**4*P1P2/(3*P1Q1*P1Q2)+
43823      &112*A1*P1Q1/P1Q2+272*A2*P1Q1/(3*P1Q2)-
43824      &272*A1*A2*MB**2*P1Q1/(3*P1Q2)-208*A12*MB*MT*P1Q1/(3*P1Q2)+
43825      &400*A1*A2*MB*MT*P1Q1/(3*P1Q2)-80*A1*A2*MT**2*P1Q1/P1Q2+
43826      &96*A12*P1P2*P1Q1/P1Q2-320*A1*A2*P1P2*P1Q1/P1Q2-
43827      &544*A1*A2*P1Q1**2/(3*P1Q2)-656*A1*A2*P1Q2/3-224*A2**2*P1Q2+
43828      &256*A1*MT**2*P1Q2/(3*P1Q1**2)-256*A12*MB*MT**3*P1Q2/(3*P1Q1**2)+
43829      &112*A1*P1Q2/P1Q1+272*A2*P1Q2/(3*P1Q1)-
43830      &272*A1*A2*MB**2*P1Q2/(3*P1Q1)-208*A12*MB*MT*P1Q2/(3*P1Q1)+
43831      &400*A1*A2*MB*MT*P1Q2/(3*P1Q1)-80*A1*A2*MT**2*P1Q2/P1Q1
43832       A18=A18+96*A12*P1P2*P1Q2/P1Q1-320*A1*A2*P1P2*P1Q2/P1Q1-
43833      &544*A1*A2*P1Q2**2/(3*P1Q1)+128*A2*MB**4/(3*P2Q1**2)-
43834      &128*A2*MB**3*MT/(3*P2Q1**2)+256*A2**2*MB**5*MT/(3*P2Q1**2)+
43835      &256*A2*MB**2*P1P2/(3*P2Q1**2)-256*A2**2*MB**4*P1P2/(3*P2Q1**2)+
43836      &256*A2*MB**2*P1Q1/(3*P2Q1**2)-256*A2**2*MB**4*P1Q1/(3*P2Q1**2)+
43837      &64*MB**3*MT**3/(3*P1Q2**2*P2Q1**2)-
43838      &64*MB**2*MT**2*P1P2/(3*P1Q2**2*P2Q1**2)-
43839      &64*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1**2)-
43840      &64*MB**3*MT/(3*P1Q2*P2Q1**2)-
43841      &256*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1**2)+
43842      &256*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1**2)-
43843      &256*A2*MB**3*MT*P1Q1/(3*P1Q2*P2Q1**2)+
43844      &512*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1**2)+
43845      &256*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1**2)-
43846      &256*A2**2*MB**4*P1Q2/(3*P2Q1**2)-8/(3*P2Q1)-72*A1*MB**2/P2Q1-
43847      &88*A2*MB**2/(3*P2Q1)-56*A1*MB*MT/(3*P2Q1)-32*A2*MB*MT/P2Q1-
43848      &224*A1*A2*MB**3*MT/(3*P2Q1)+704*A2**2*MB**3*MT/(3*P2Q1)
43849       A18=A18-48*A1*P1P2/P2Q1-104*A2*P1P2/(3*P2Q1)+
43850      &448*A1*A2*MB**2*P1P2/(3*P2Q1)-512*A2**2*MB**2*P1P2/(3*P2Q1)+
43851      &128*A1*A2*MB*MT*P1P2/(3*P2Q1)+32*A1*A2*P1P2**2/P2Q1-
43852      &16*P1P2/(3*P1Q1*P2Q1)+32*A1*MB*MT*P1P2/(3*P1Q1*P2Q1)+
43853      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q1)+
43854      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q1)-
43855      &64*A1*A2*P1P2**3/(3*P1Q1*P2Q1)-256*A2*P1Q1/(3*P2Q1)+
43856      &448*A1*A2*MB**2*P1Q1/(3*P2Q1)-368*A2**2*MB**2*P1Q1/(3*P2Q1)-
43857      &224*A1*A2*MB*MT*P1Q1/(3*P2Q1)+304*A1*A2*P1P2*P1Q1/(3*P2Q1)+
43858      &64*MB*MT**3/(3*P1Q2**2*P2Q1)+
43859      &256*A1*MB*MT**3*P1P2/(3*P1Q2**2*P2Q1)-
43860      &256*A1*MT**2*P1P2**2/(3*P1Q2**2*P2Q1)+
43861      &64*MT**2*P1Q1/(3*P1Q2**2*P2Q1)-
43862      &128*A1*MB**2*MT**2*P1Q1/(3*P1Q2**2*P2Q1)+
43863      &128*A1*MB*MT**3*P1Q1/(3*P1Q2**2*P2Q1)-
43864      &256*A1*MT**2*P1P2*P1Q1/(3*P1Q2**2*P2Q1)-4*MB**2/(3*P1Q2*P2Q1)-
43865      &64*MB*MT/(3*P1Q2*P2Q1)+128*A2*MB**3*MT/(3*P1Q2*P2Q1)
43866       A18=A18-4*MT**2/(3*P1Q2*P2Q1)-128*A1*MB**2*MT**2/(3*P1Q2*P2Q1)-
43867      &128*A2*MB**2*MT**2/(3*P1Q2*P2Q1)+128*A1*MB*MT**3/(3*P1Q2*P2Q1)-
43868      &112*A2*MB**2*P1P2/(3*P1Q2*P2Q1)+32*A1*MB*MT*P1P2/(3*P1Q2*P2Q1)+
43869      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q1)-112*A1*MT**2*P1P2/(3*P1Q2*P2Q1)-
43870      &48*A1*P1P2**2/(P1Q2*P2Q1)-48*A2*P1P2**2/(P1Q2*P2Q1)-
43871      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q1)+
43872      &512*A1*A2*P1P2**3/(3*P1Q2*P2Q1)+8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43873      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43874      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q1)-
43875      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+
43876      &32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q1)+8*P1Q1/(3*P1Q2*P2Q1)-
43877      &160*A1*MB**2*P1Q1/(3*P1Q2*P2Q1)-272*A2*MB**2*P1Q1/(3*P1Q2*P2Q1)-
43878      &56*A1*MB*MT*P1Q1/(3*P1Q2*P2Q1)-200*A2*MB*MT*P1Q1/(3*P1Q2*P2Q1)-
43879      &48*A1*P1P2*P1Q1/(P1Q2*P2Q1)-256*A2*P1P2*P1Q1/(3*P1Q2*P2Q1)+
43880      &256*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1)-
43881      &256*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1)+
43882      &1024*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q1)
43883       A18=A18-272*A2*P1Q1**2/(3*P1Q2*P2Q1)+
43884      &256*A1*A2*MB**2*P1Q1**2/(3*P1Q2*P2Q1)-
43885      &256*A1*A2*MB*MT*P1Q1**2/(3*P1Q2*P2Q1)+
43886      &512*A1*A2*P1P2*P1Q1**2/(3*P1Q2*P2Q1)+16*A2*P1Q2/(3*P2Q1)+
43887      &64*A1*A2*MB**2*P1Q2/P2Q1+32*A2**2*MB**2*P1Q2/(3*P2Q1)-
43888      &112*A1*A2*MB*MT*P1Q2/(3*P2Q1)+368*A1*A2*P1P2*P1Q2/(3*P2Q1)+
43889      &32*A2*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43890      &32*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1)+
43891      &32*A1*A2*MB*MT*P1P2*P1Q2/(3*P1Q1*P2Q1)-
43892      &64*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q1)+224*A12*P2Q1+
43893      &656*A1*A2*P2Q1/3-256*A1*MT**2*P2Q1/(3*P1Q1**2)+
43894      &256*A12*MT**4*P2Q1/(3*P1Q1**2)-256*A1*P2Q1/(3*P1Q1)-
43895      &224*A1*A2*MB*MT*P2Q1/(3*P1Q1)-368*A12*MT**2*P2Q1/(3*P1Q1)+
43896      &448*A1*A2*MT**2*P2Q1/(3*P1Q1)+304*A1*A2*P1P2*P2Q1/(3*P1Q1)+
43897      &256*A12*MT**4*P2Q1/(3*P1Q2**2)+
43898      &256*A12*MT**2*P1Q1*P2Q1/(3*P1Q2**2)+16*A1*P2Q1/(3*P1Q2)-
43899      &112*A1*A2*MB*MT*P2Q1/(3*P1Q2)+32*A12*MT**2*P2Q1/(3*P1Q2)
43900       A18=A18+64*A1*A2*MT**2*P2Q1/P1Q2+368*A1*A2*P1P2*P2Q1/(3*P1Q2)+
43901      &16*A1*MT**2*P2Q1/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q1/(3*P1Q1*P1Q2)+
43902      &640*A12*P1Q1*P2Q1/(3*P1Q2)+544*A1*A2*P1Q1*P2Q1/(3*P1Q2)+
43903      &32*A12*P1Q2*P2Q1/P1Q1+944*A1*A2*P1Q2*P2Q1/(3*P1Q1)+
43904      &128*A2*MB**4/(3*P2Q2**2)-128*A2*MB**3*MT/(3*P2Q2**2)+
43905      &256*A2**2*MB**5*MT/(3*P2Q2**2)+256*A2*MB**2*P1P2/(3*P2Q2**2)-
43906      &256*A2**2*MB**4*P1P2/(3*P2Q2**2)+
43907      &64*MB**3*MT**3/(3*P1Q1**2*P2Q2**2)-
43908      &64*MB**2*MT**2*P1P2/(3*P1Q1**2*P2Q2**2)-
43909      &64*MB**3*MT/(3*P1Q1*P2Q2**2)-
43910      &256*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q2**2)+
43911      &256*A2*MB**2*P1P2**2/(3*P1Q1*P2Q2**2)-
43912      &256*A2**2*MB**4*P1Q1/(3*P2Q2**2)+256*A2*MB**2*P1Q2/(3*P2Q2**2)-
43913      &256*A2**2*MB**4*P1Q2/(3*P2Q2**2)-
43914      &64*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2**2)-
43915      &256*A2*MB**3*MT*P1Q2/(3*P1Q1*P2Q2**2)+
43916      &512*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2**2)
43917       A18=A18+256*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2**2)-
43918      &256*A2*MB**2*P2Q1/(3*P2Q2**2)+256*A2**2*MB**3*MT*P2Q1/(3*P2Q2**2)+
43919      &64*MB**2*MT**2*P2Q1/(3*P1Q1**2*P2Q2**2)+
43920      &64*MB**2*P2Q1/(3*P1Q1*P2Q2**2)+
43921      &128*A2*MB**3*MT*P2Q1/(3*P1Q1*P2Q2**2)-
43922      &128*A2*MB**2*MT**2*P2Q1/(3*P1Q1*P2Q2**2)-
43923      &256*A2*MB**2*P1P2*P2Q1/(3*P1Q1*P2Q2**2)+
43924      &256*A2**2*MB**2*P1Q1*P2Q1/(3*P2Q2**2)-
43925      &256*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2**2)-8/(3*P2Q2)-
43926      &72*A1*MB**2/P2Q2-88*A2*MB**2/(3*P2Q2)-56*A1*MB*MT/(3*P2Q2)-
43927      &32*A2*MB*MT/P2Q2-224*A1*A2*MB**3*MT/(3*P2Q2)+
43928      &704*A2**2*MB**3*MT/(3*P2Q2)-48*A1*P1P2/P2Q2-
43929      &104*A2*P1P2/(3*P2Q2)+448*A1*A2*MB**2*P1P2/(3*P2Q2)-
43930      &512*A2**2*MB**2*P1P2/(3*P2Q2)+128*A1*A2*MB*MT*P1P2/(3*P2Q2)+
43931      &32*A1*A2*P1P2**2/P2Q2+64*MB*MT**3/(3*P1Q1**2*P2Q2)+
43932      &256*A1*MB*MT**3*P1P2/(3*P1Q1**2*P2Q2)-
43933      &256*A1*MT**2*P1P2**2/(3*P1Q1**2*P2Q2)-4*MB**2/(3*P1Q1*P2Q2)
43934       A18=A18-64*MB*MT/(3*P1Q1*P2Q2)+128*A2*MB**3*MT/(3*P1Q1*P2Q2)-
43935      &4*MT**2/(3*P1Q1*P2Q2)-128*A1*MB**2*MT**2/(3*P1Q1*P2Q2)-
43936      &128*A2*MB**2*MT**2/(3*P1Q1*P2Q2)+128*A1*MB*MT**3/(3*P1Q1*P2Q2)-
43937      &112*A2*MB**2*P1P2/(3*P1Q1*P2Q2)+32*A1*MB*MT*P1P2/(3*P1Q1*P2Q2)+
43938      &32*A2*MB*MT*P1P2/(3*P1Q1*P2Q2)-112*A1*MT**2*P1P2/(3*P1Q1*P2Q2)-
43939      &48*A1*P1P2**2/(P1Q1*P2Q2)-48*A2*P1P2**2/(P1Q1*P2Q2)-
43940      &512*A1*A2*MB*MT*P1P2**2/(3*P1Q1*P2Q2)+
43941      &512*A1*A2*P1P2**3/(3*P1Q1*P2Q2)+16*A2*P1Q1/(3*P2Q2)+
43942      &64*A1*A2*MB**2*P1Q1/P2Q2+32*A2**2*MB**2*P1Q1/(3*P2Q2)-
43943      &112*A1*A2*MB*MT*P1Q1/(3*P2Q2)+368*A1*A2*P1P2*P1Q1/(3*P2Q2)-
43944      &16*P1P2/(3*P1Q2*P2Q2)+32*A1*MB*MT*P1P2/(3*P1Q2*P2Q2)+
43945      &32*A2*MB*MT*P1P2/(3*P1Q2*P2Q2)+
43946      &64*A1*A2*MB*MT*P1P2**2/(3*P1Q2*P2Q2)-
43947      &64*A1*A2*P1P2**3/(3*P1Q2*P2Q2)+8*MB*MT*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43948      &8*MT**2*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43949      &32*A1*MB*MT**3*P1P2/(3*P1Q1*P1Q2*P2Q2)-
43950      &16*P1P2**2/(3*P1Q1*P1Q2*P2Q2)
43951       A18=A18+32*A1*MT**2*P1P2**2/(3*P1Q1*P1Q2*P2Q2)+
43952      &32*A2*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43953      &32*A1*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q2)+
43954      &32*A1*A2*MB*MT*P1P2*P1Q1/(3*P1Q2*P2Q2)-
43955      &64*A1*A2*P1P2**2*P1Q1/(3*P1Q2*P2Q2)-256*A2*P1Q2/(3*P2Q2)+
43956      &448*A1*A2*MB**2*P1Q2/(3*P2Q2)-368*A2**2*MB**2*P1Q2/(3*P2Q2)-
43957      &224*A1*A2*MB*MT*P1Q2/(3*P2Q2)+304*A1*A2*P1P2*P1Q2/(3*P2Q2)+
43958      &64*MT**2*P1Q2/(3*P1Q1**2*P2Q2)-
43959      &128*A1*MB**2*MT**2*P1Q2/(3*P1Q1**2*P2Q2)+
43960      &128*A1*MB*MT**3*P1Q2/(3*P1Q1**2*P2Q2)-
43961      &256*A1*MT**2*P1P2*P1Q2/(3*P1Q1**2*P2Q2)+8*P1Q2/(3*P1Q1*P2Q2)-
43962      &160*A1*MB**2*P1Q2/(3*P1Q1*P2Q2)-272*A2*MB**2*P1Q2/(3*P1Q1*P2Q2)-
43963      &56*A1*MB*MT*P1Q2/(3*P1Q1*P2Q2)-200*A2*MB*MT*P1Q2/(3*P1Q1*P2Q2)-
43964      &48*A1*P1P2*P1Q2/(P1Q1*P2Q2)-256*A2*P1P2*P1Q2/(3*P1Q1*P2Q2)+
43965      &256*A1*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q2)-
43966      &256*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2)+
43967      &1024*A1*A2*P1P2**2*P1Q2/(3*P1Q1*P2Q2)
43968       A18=A18-272*A2*P1Q2**2/(3*P1Q1*P2Q2)+
43969      &256*A1*A2*MB**2*P1Q2**2/(3*P1Q1*P2Q2)-
43970      &256*A1*A2*MB*MT*P1Q2**2/(3*P1Q1*P2Q2)+
43971      &512*A1*A2*P1P2*P1Q2**2/(3*P1Q1*P2Q2)-32*A2*MB**4/(3*P2Q1*P2Q2)+
43972      &32*A2*MB**3*MT/(3*P2Q1*P2Q2)-64*A2**2*MB**5*MT/(3*P2Q1*P2Q2)+
43973      &16*P1P2/(3*P2Q1*P2Q2)-64*A2*MB**2*P1P2/(3*P2Q1*P2Q2)+
43974      &64*A2**2*MB**4*P1P2/(3*P2Q1*P2Q2)+8*MB**2*P1P2/(3*P1Q1*P2Q1*P2Q2)-
43975      &8*MB*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
43976      &32*A2*MB**3*MT*P1P2/(3*P1Q1*P2Q1*P2Q2)+
43977      &16*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
43978      &32*A2*MB**2*P1P2**2/(3*P1Q1*P2Q1*P2Q2)-
43979      &16*A2*MB**2*P1Q1/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q1/(3*P2Q1*P2Q2)+
43980      &8*MB**2*P1P2/(3*P1Q2*P2Q1*P2Q2)-8*MB*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
43981      &32*A2*MB**3*MT*P1P2/(3*P1Q2*P2Q1*P2Q2)+
43982      &16*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
43983      &32*A2*MB**2*P1P2**2/(3*P1Q2*P2Q1*P2Q2)-
43984      &16*MB*MT*P1P2**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
43985       A18=A18+16*P1P2**3/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
43986      &32*A2*MB**2*P1P2*P1Q1/(3*P1Q2*P2Q1*P2Q2)-
43987      &16*A2*MB**2*P1Q2/(3*P2Q1*P2Q2)+64*A2**2*MB**4*P1Q2/(3*P2Q1*P2Q2)-
43988      &32*A2*MB**2*P1P2*P1Q2/(3*P1Q1*P2Q1*P2Q2)+272*A1*P2Q1/(3*P2Q2)+
43989      &112*A2*P2Q1/P2Q2-80*A1*A2*MB**2*P2Q1/P2Q2+
43990      &400*A1*A2*MB*MT*P2Q1/(3*P2Q2)-208*A2**2*MB*MT*P2Q1/(3*P2Q2)-
43991      &272*A1*A2*MT**2*P2Q1/(3*P2Q2)-320*A1*A2*P1P2*P2Q1/P2Q2+
43992      &96*A2**2*P1P2*P2Q1/P2Q2-256*A1*MB*MT**3*P2Q1/(3*P1Q1**2*P2Q2)+
43993      &512*A1*MT**2*P1P2*P2Q1/(3*P1Q1**2*P2Q2)-8*P2Q1/(3*P1Q1*P2Q2)+
43994      &200*A1*MB*MT*P2Q1/(3*P1Q1*P2Q2)+56*A2*MB*MT*P2Q1/(3*P1Q1*P2Q2)+
43995      &272*A1*MT**2*P2Q1/(3*P1Q1*P2Q2)+160*A2*MT**2*P2Q1/(3*P1Q1*P2Q2)+
43996      &256*A1*P1P2*P2Q1/(3*P1Q1*P2Q2)+48*A2*P1P2*P2Q1/(P1Q1*P2Q2)+
43997      &256*A1*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2)-
43998      &256*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q1*P2Q2)-
43999      &1024*A1*A2*P1P2**2*P2Q1/(3*P1Q1*P2Q2)-
44000      &544*A1*A2*P1Q1*P2Q1/(3*P2Q2)-640*A2**2*P1Q1*P2Q1/(3*P2Q2)-
44001      &32*A1*P1P2*P2Q1/(3*P1Q2*P2Q2)
44002       A18=A18-32*A1*A2*MB*MT*P1P2*P2Q1/(3*P1Q2*P2Q2)+
44003      &32*A1*A2*MT**2*P1P2*P2Q1/(3*P1Q2*P2Q2)+
44004      &64*A1*A2*P1P2**2*P2Q1/(3*P1Q2*P2Q2)-
44005      &32*A1*MT**2*P1P2*P2Q1/(3*P1Q1*P1Q2*P2Q2)+
44006      &64*A1*A2*P1P2*P1Q1*P2Q1/(3*P1Q2*P2Q2)-
44007      &944*A1*A2*P1Q2*P2Q1/(3*P2Q2)-32*A2**2*P1Q2*P2Q1/P2Q2+
44008      &256*A1*MT**2*P1Q2*P2Q1/(3*P1Q1**2*P2Q2)+
44009      &96*A1*P1Q2*P2Q1/(P1Q1*P2Q2)+96*A2*P1Q2*P2Q1/(P1Q1*P2Q2)-
44010      &128*A1*A2*MB**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)+
44011      &256*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2)-
44012      &128*A1*A2*MT**2*P1Q2*P2Q1/(3*P1Q1*P2Q2)-
44013      &512*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2)-
44014      &512*A1*A2*P1Q2**2*P2Q1/(3*P1Q1*P2Q2)+544*A1*A2*P2Q1**2/(3*P2Q2)-
44015      &256*A1*MT**2*P2Q1**2/(3*P1Q1**2*P2Q2)-
44016      &272*A1*P2Q1**2/(3*P1Q1*P2Q2)-
44017      &256*A1*A2*MB*MT*P2Q1**2/(3*P1Q1*P2Q2)+
44018      &256*A1*A2*MT**2*P2Q1**2/(3*P1Q1*P2Q2)
44019       A18=A18+512*A1*A2*P1P2*P2Q1**2/(3*P1Q1*P2Q2)+
44020      &512*A1*A2*P1Q2*P2Q1**2/(3*P1Q1*P2Q2)+224*A12*P2Q2+
44021      &656*A1*A2*P2Q2/3+256*A12*MT**4*P2Q2/(3*P1Q1**2)+
44022      &16*A1*P2Q2/(3*P1Q1)-112*A1*A2*MB*MT*P2Q2/(3*P1Q1)+
44023      &32*A12*MT**2*P2Q2/(3*P1Q1)+64*A1*A2*MT**2*P2Q2/P1Q1+
44024      &368*A1*A2*P1P2*P2Q2/(3*P1Q1)-256*A1*MT**2*P2Q2/(3*P1Q2**2)+
44025      &256*A12*MT**4*P2Q2/(3*P1Q2**2)-256*A1*P2Q2/(3*P1Q2)-
44026      &224*A1*A2*MB*MT*P2Q2/(3*P1Q2)-368*A12*MT**2*P2Q2/(3*P1Q2)+
44027      &448*A1*A2*MT**2*P2Q2/(3*P1Q2)+304*A1*A2*P1P2*P2Q2/(3*P1Q2)+
44028      &16*A1*MT**2*P2Q2/(3*P1Q1*P1Q2)-64*A12*MT**4*P2Q2/(3*P1Q1*P1Q2)+
44029      &32*A12*P1Q1*P2Q2/P1Q2+944*A1*A2*P1Q1*P2Q2/(3*P1Q2)+
44030      &256*A12*MT**2*P1Q2*P2Q2/(3*P1Q1**2)+
44031      &640*A12*P1Q2*P2Q2/(3*P1Q1)+544*A1*A2*P1Q2*P2Q2/(3*P1Q1)-
44032      &256*A2*MB**2*P2Q2/(3*P2Q1**2)+256*A2**2*MB**3*MT*P2Q2/(3*P2Q1**2)+
44033      &64*MB**2*MT**2*P2Q2/(3*P1Q2**2*P2Q1**2)+
44034      &64*MB**2*P2Q2/(3*P1Q2*P2Q1**2)+
44035      &128*A2*MB**3*MT*P2Q2/(3*P1Q2*P2Q1**2)
44036       A18=A18-128*A2*MB**2*MT**2*P2Q2/(3*P1Q2*P2Q1**2)-
44037      &256*A2*MB**2*P1P2*P2Q2/(3*P1Q2*P2Q1**2)-
44038      &256*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1**2)+
44039      &256*A2**2*MB**2*P1Q2*P2Q2/(3*P2Q1**2)+272*A1*P2Q2/(3*P2Q1)+
44040      &112*A2*P2Q2/P2Q1-80*A1*A2*MB**2*P2Q2/P2Q1+
44041      &400*A1*A2*MB*MT*P2Q2/(3*P2Q1)-208*A2**2*MB*MT*P2Q2/(3*P2Q1)-
44042      &272*A1*A2*MT**2*P2Q2/(3*P2Q1)-320*A1*A2*P1P2*P2Q2/P2Q1+
44043      &96*A2**2*P1P2*P2Q2/P2Q1-32*A1*P1P2*P2Q2/(3*P1Q1*P2Q1)-
44044      &32*A1*A2*MB*MT*P1P2*P2Q2/(3*P1Q1*P2Q1)+
44045      &32*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q1*P2Q1)+
44046      &64*A1*A2*P1P2**2*P2Q2/(3*P1Q1*P2Q1)-944*A1*A2*P1Q1*P2Q2/(3*P2Q1)-
44047      &32*A2**2*P1Q1*P2Q2/P2Q1-256*A1*MB*MT**3*P2Q2/(3*P1Q2**2*P2Q1)+
44048      &512*A1*MT**2*P1P2*P2Q2/(3*P1Q2**2*P2Q1)+
44049      &256*A1*MT**2*P1Q1*P2Q2/(3*P1Q2**2*P2Q1)-8*P2Q2/(3*P1Q2*P2Q1)+
44050      &200*A1*MB*MT*P2Q2/(3*P1Q2*P2Q1)+56*A2*MB*MT*P2Q2/(3*P1Q2*P2Q1)+
44051      &272*A1*MT**2*P2Q2/(3*P1Q2*P2Q1)+160*A2*MT**2*P2Q2/(3*P1Q2*P2Q1)+
44052      &256*A1*P1P2*P2Q2/(3*P1Q2*P2Q1)+48*A2*P1P2*P2Q2/(P1Q2*P2Q1)
44053       A18=A18+256*A1*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1)-
44054      &256*A1*A2*MT**2*P1P2*P2Q2/(3*P1Q2*P2Q1)-
44055      &1024*A1*A2*P1P2**2*P2Q2/(3*P1Q2*P2Q1)-
44056      &32*A1*MT**2*P1P2*P2Q2/(3*P1Q1*P1Q2*P2Q1)+
44057      &96*A1*P1Q1*P2Q2/(P1Q2*P2Q1)+96*A2*P1Q1*P2Q2/(P1Q2*P2Q1)-
44058      &128*A1*A2*MB**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)+
44059      &256*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1)-
44060      &128*A1*A2*MT**2*P1Q1*P2Q2/(3*P1Q2*P2Q1)-
44061      &512*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1)-
44062      &512*A1*A2*P1Q1**2*P2Q2/(3*P1Q2*P2Q1)-544*A1*A2*P1Q2*P2Q2/(3*P2Q1)-
44063      &640*A2**2*P1Q2*P2Q2/(3*P2Q1)+
44064      &64*A1*A2*P1P2*P1Q2*P2Q2/(3*P1Q1*P2Q1)+544*A1*A2*P2Q2**2/(3*P2Q1)-
44065      &256*A1*MT**2*P2Q2**2/(3*P1Q2**2*P2Q1)-
44066      &272*A1*P2Q2**2/(3*P1Q2*P2Q1)-
44067      &256*A1*A2*MB*MT*P2Q2**2/(3*P1Q2*P2Q1)+
44068      &256*A1*A2*MT**2*P2Q2**2/(3*P1Q2*P2Q1)+
44069      &512*A1*A2*P1P2*P2Q2**2/(3*P1Q2*P2Q1)
44070       A18=A18+512*A1*A2*P1Q1*P2Q2**2/(3*P1Q2*P2Q1)-
44071      &384*A12*MB*MT*P1Q1**2/S**2+
44072      &384*A12*P1P2*P1Q1**2/S**2-2688*A12*MB*MT*P1Q1*P1Q2/S**2+
44073      &2688*A12*P1P2*P1Q1*P1Q2/S**2-384*A12*MB*MT*P1Q2**2/S**2+
44074      &384*A12*P1P2*P1Q2**2/S**2-768*A1*A2*MB*MT*P1Q1*P2Q1/S**2+
44075      &768*A1*A2*P1P2*P1Q1*P2Q1/S**2-2688*A1*A2*MB*MT*P1Q2*P2Q1/S**2+
44076      &2688*A1*A2*P1P2*P1Q2*P2Q1/S**2-960*A12*P1Q1*P1Q2*P2Q1/S**2-
44077      &960*A1*A2*P1Q1*P1Q2*P2Q1/S**2+960*A12*P1Q2**2*P2Q1/S**2+
44078      &960*A1*A2*P1Q2**2*P2Q1/S**2-384*A2**2*MB*MT*P2Q1**2/S**2+
44079      &384*A2**2*P1P2*P2Q1**2/S**2-960*A1*A2*P1Q2*P2Q1**2/S**2-
44080      &960*A2**2*P1Q2*P2Q1**2/S**2-2688*A1*A2*MB*MT*P1Q1*P2Q2/S**2+
44081      &2688*A1*A2*P1P2*P1Q1*P2Q2/S**2+960*A12*P1Q1**2*P2Q2/S**2+
44082      &960*A1*A2*P1Q1**2*P2Q2/S**2-768*A1*A2*MB*MT*P1Q2*P2Q2/S**2+
44083      &768*A1*A2*P1P2*P1Q2*P2Q2/S**2-960*A12*P1Q1*P1Q2*P2Q2/S**2-
44084      &960*A1*A2*P1Q1*P1Q2*P2Q2/S**2-2688*A2**2*MB*MT*P2Q1*P2Q2/S**2+
44085      &2688*A2**2*P1P2*P2Q1*P2Q2/S**2+960*A1*A2*P1Q1*P2Q1*P2Q2/S**2+
44086      &960*A2**2*P1Q1*P2Q1*P2Q2/S**2+960*A1*A2*P1Q2*P2Q1*P2Q2/S**2
44087       A18=A18+960*A2**2*P1Q2*P2Q1*P2Q2/S**2-
44088      &384*A2**2*MB*MT*P2Q2**2/S**2+
44089      &384*A2**2*P1P2*P2Q2**2/S**2-960*A1*A2*P1Q1*P2Q2**2/S**2-
44090      &960*A2**2*P1Q1*P2Q2**2/S**2-96*A1*MB*MT/S-96*A2*MB*MT/S+
44091      &768*A2**2*MB**3*MT/S+768*A12*MB*MT**3/S-192*A1*P1P2/S-
44092      &192*A2*P1P2/S-768*A2**2*MB**2*P1P2/S+2304*A1*A2*MB*MT*P1P2/S-
44093      &768*A12*MT**2*P1P2/S-2304*A1*A2*P1P2**2/S+
44094      &96*A1*MB*MT**3/(P1Q1*S)+192*A2*MB*MT*P1P2/(P1Q1*S)-
44095      &96*A1*MT**2*P1P2/(P1Q1*S)-192*A2*P1P2**2/(P1Q1*S)-192*A1*P1Q1/S-
44096      &144*A2*P1Q1/S-384*A1*A2*MB**2*P1Q1/S-480*A2**2*MB**2*P1Q1/S+
44097      &480*A12*MB*MT*P1Q1/S-96*A1*A2*MB*MT*P1Q1/S-
44098      &864*A12*P1P2*P1Q1/S-672*A1*A2*P1P2*P1Q1/S-96*A1*A2*P1Q1**2/S+
44099      &96*A1*MB*MT**3/(P1Q2*S)+192*A2*MB*MT*P1P2/(P1Q2*S)-
44100      &96*A1*MT**2*P1P2/(P1Q2*S)-192*A2*P1P2**2/(P1Q2*S)+
44101      &48*A1*MB*MT*P1Q1/(P1Q2*S)-96*A2*MB*MT*P1Q1/(P1Q2*S)-
44102      &48*A1*MT**2*P1Q1/(P1Q2*S)-192*A1*P1P2*P1Q1/(P1Q2*S)-
44103      &192*A2*P1P2*P1Q1/(P1Q2*S)-192*A1*A2*MB*MT*P1P2*P1Q1/(P1Q2*S)
44104       A18=A18+192*A1*A2*P1P2**2*P1Q1/(P1Q2*S)-192*A1*P1Q1**2/(P1Q2*S)-
44105      &192*A2*P1Q1**2/(P1Q2*S)+192*A1*A2*MB**2*P1Q1**2/(P1Q2*S)+
44106      &192*A12*MB*MT*P1Q1**2/(P1Q2*S)-96*A1*A2*MB*MT*P1Q1**2/(P1Q2*S)+
44107      &192*A1*A2*P1P2*P1Q1**2/(P1Q2*S)-192*A1*P1Q2/S-144*A2*P1Q2/S-
44108      &384*A1*A2*MB**2*P1Q2/S-480*A2**2*MB**2*P1Q2/S+
44109      &480*A12*MB*MT*P1Q2/S-96*A1*A2*MB*MT*P1Q2/S-
44110      &864*A12*P1P2*P1Q2/S-672*A1*A2*P1P2*P1Q2/S+
44111      &48*A1*MB*MT*P1Q2/(P1Q1*S)-96*A2*MB*MT*P1Q2/(P1Q1*S)-
44112      &48*A1*MT**2*P1Q2/(P1Q1*S)-192*A1*P1P2*P1Q2/(P1Q1*S)-
44113      &192*A2*P1P2*P1Q2/(P1Q1*S)-192*A1*A2*MB*MT*P1P2*P1Q2/(P1Q1*S)+
44114      &192*A1*A2*P1P2**2*P1Q2/(P1Q1*S)-576*A1*A2*P1Q1*P1Q2/S-
44115      &96*A1*A2*P1Q2**2/S-192*A1*P1Q2**2/(P1Q1*S)-
44116      &192*A2*P1Q2**2/(P1Q1*S)+192*A1*A2*MB**2*P1Q2**2/(P1Q1*S)+
44117      &192*A12*MB*MT*P1Q2**2/(P1Q1*S)-96*A1*A2*MB*MT*P1Q2**2/(P1Q1*S)+
44118      &192*A1*A2*P1P2*P1Q2**2/(P1Q1*S)-96*A2*MB**3*MT/(P2Q1*S)+
44119      &96*A2*MB**2*P1P2/(P2Q1*S)-192*A1*MB*MT*P1P2/(P2Q1*S)+
44120      &192*A1*P1P2**2/(P2Q1*S)+96*A1*MB**2*P1Q1/(P2Q1*S)
44121       A18=A18+192*A2*MB**2*P1Q1/(P2Q1*S)-96*A1*MB*MT*P1Q1/(P2Q1*S)-
44122      &192*A1*A2*MB**3*MT*P1Q1/(P2Q1*S)+192*A1*P1P2*P1Q1/(P2Q1*S)+
44123      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q1*S)+
44124      &96*A1*A2*MB**2*P1Q1**2/(P2Q1*S)-
44125      &192*A2*MB**3*MT*P1Q1/(P1Q2*P2Q1*S)+
44126      &192*A2*MB**2*P1P2*P1Q1/(P1Q2*P2Q1*S)-
44127      &96*A1*MB*MT*P1P2*P1Q1/(P1Q2*P2Q1*S)+
44128      &96*A1*P1P2**2*P1Q1/(P1Q2*P2Q1*S)+
44129      &96*A1*MB**2*P1Q1**2/(P1Q2*P2Q1*S)+
44130      &192*A2*MB**2*P1Q1**2/(P1Q2*P2Q1*S)-
44131      &48*A1*MB*MT*P1Q1**2/(P1Q2*P2Q1*S)+
44132      &96*A1*P1P2*P1Q1**2/(P1Q2*P2Q1*S)+96*A1*MB**2*P1Q2/(P2Q1*S)+
44133      &48*A2*MB**2*P1Q2/(P2Q1*S)+192*A1*A2*MB**3*MT*P1Q2/(P2Q1*S)-
44134      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q1*S)-
44135      &96*A1*A2*MB**2*P1Q2**2/(P2Q1*S)+144*A1*P2Q1/S+192*A2*P2Q1/S+
44136      &96*A1*A2*MB*MT*P2Q1/S-480*A2**2*MB*MT*P2Q1/S+
44137      &480*A12*MT**2*P2Q1/S+384*A1*A2*MT**2*P2Q1/S
44138       A18=A18+672*A1*A2*P1P2*P2Q1/S+864*A2**2*P1P2*P2Q1/S-
44139      &96*A2*MB*MT*P2Q1/(P1Q1*S)+192*A1*MT**2*P2Q1/(P1Q1*S)+
44140      &96*A2*MT**2*P2Q1/(P1Q1*S)-192*A1*A2*MB*MT**3*P2Q1/(P1Q1*S)+
44141      &192*A2*P1P2*P2Q1/(P1Q1*S)+192*A1*A2*MT**2*P1P2*P2Q1/(P1Q1*S)-
44142      &192*A12*P1Q1*P2Q1/S-192*A2**2*P1Q1*P2Q1/S+
44143      &48*A1*MT**2*P2Q1/(P1Q2*S)+96*A2*MT**2*P2Q1/(P1Q2*S)+
44144      &192*A1*A2*MB*MT**3*P2Q1/(P1Q2*S)-
44145      &192*A1*A2*MT**2*P1P2*P2Q1/(P1Q2*S)+
44146      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P1Q2*S)-
44147      &192*A12*MT**2*P1Q1*P2Q1/(P1Q2*S)-
44148      &96*A1*A2*MT**2*P1Q1*P2Q1/(P1Q2*S)-
44149      &384*A1*A2*P1P2*P1Q1*P2Q1/(P1Q2*S)-384*A12*P1Q1**2*P2Q1/(P1Q2*S)-
44150      &384*A1*A2*P1Q1**2*P2Q1/(P1Q2*S)-480*A12*P1Q2*P2Q1/S-
44151      &960*A1*A2*P1Q2*P2Q1/S-480*A2**2*P1Q2*P2Q1/S+
44152      &144*A1*P1Q2*P2Q1/(P1Q1*S)+96*A2*P1Q2*P2Q1/(P1Q1*S)+
44153      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P1Q1*S)-
44154      &96*A12*MT**2*P1Q2*P2Q1/(P1Q1*S)
44155       A18=A18+96*A1*A2*MT**2*P1Q2*P2Q1/(P1Q1*S)-
44156      &576*A1*A2*P1P2*P1Q2*P2Q1/(P1Q1*S)-192*A12*P1Q2**2*P2Q1/(P1Q1*S)-
44157      &384*A1*A2*P1Q2**2*P2Q1/(P1Q1*S)-96*A1*A2*P2Q1**2/S-
44158      &96*A1*A2*MT**2*P2Q1**2/(P1Q1*S)+96*A1*A2*MT**2*P2Q1**2/(P1Q2*S)+
44159      &288*A1*A2*P1Q2*P2Q1**2/(P1Q1*S)-96*A2*MB**3*MT/(P2Q2*S)+
44160      &96*A2*MB**2*P1P2/(P2Q2*S)-192*A1*MB*MT*P1P2/(P2Q2*S)+
44161      &192*A1*P1P2**2/(P2Q2*S)+96*A1*MB**2*P1Q1/(P2Q2*S)+
44162      &48*A2*MB**2*P1Q1/(P2Q2*S)+192*A1*A2*MB**3*MT*P1Q1/(P2Q2*S)-
44163      &192*A1*A2*MB**2*P1P2*P1Q1/(P2Q2*S)-
44164      &96*A1*A2*MB**2*P1Q1**2/(P2Q2*S)+96*A1*MB**2*P1Q2/(P2Q2*S)+
44165      &192*A2*MB**2*P1Q2/(P2Q2*S)-96*A1*MB*MT*P1Q2/(P2Q2*S)-
44166      &192*A1*A2*MB**3*MT*P1Q2/(P2Q2*S)+192*A1*P1P2*P1Q2/(P2Q2*S)+
44167      &192*A1*A2*MB**2*P1P2*P1Q2/(P2Q2*S)-
44168      &192*A2*MB**3*MT*P1Q2/(P1Q1*P2Q2*S)+
44169      &192*A2*MB**2*P1P2*P1Q2/(P1Q1*P2Q2*S)-
44170      &96*A1*MB*MT*P1P2*P1Q2/(P1Q1*P2Q2*S)+
44171      &96*A1*P1P2**2*P1Q2/(P1Q1*P2Q2*S)+96*A1*A2*MB**2*P1Q2**2/(P2Q2*S)
44172       A18=A18+96*A1*MB**2*P1Q2**2/(P1Q1*P2Q2*S)+
44173      &192*A2*MB**2*P1Q2**2/(P1Q1*P2Q2*S)-
44174      &48*A1*MB*MT*P1Q2**2/(P1Q1*P2Q2*S)+
44175      &96*A1*P1P2*P1Q2**2/(P1Q1*P2Q2*S)-48*A2*MB**2*P2Q1/(P2Q2*S)-
44176      &96*A1*MB*MT*P2Q1/(P2Q2*S)+48*A2*MB*MT*P2Q1/(P2Q2*S)-
44177      &192*A1*P1P2*P2Q1/(P2Q2*S)-192*A2*P1P2*P2Q1/(P2Q2*S)-
44178      &192*A1*A2*MB*MT*P1P2*P2Q1/(P2Q2*S)+
44179      &192*A1*A2*P1P2**2*P2Q1/(P2Q2*S)+
44180      &192*A1*MB*MT**3*P2Q1/(P1Q1*P2Q2*S)+
44181      &96*A2*MB*MT*P1P2*P2Q1/(P1Q1*P2Q2*S)-
44182      &192*A1*MT**2*P1P2*P2Q1/(P1Q1*P2Q2*S)-
44183      &96*A2*P1P2**2*P2Q1/(P1Q1*P2Q2*S)+
44184      &96*A1*A2*MB**2*P1Q1*P2Q1/(P2Q2*S)+
44185      &192*A2**2*MB**2*P1Q1*P2Q1/(P2Q2*S)-
44186      &96*A1*A2*MB*MT*P1Q1*P2Q1/(P2Q2*S)+
44187      &384*A1*A2*P1P2*P1Q1*P2Q1/(P2Q2*S)-96*A1*P1Q2*P2Q1/(P2Q2*S)-
44188      &144*A2*P1Q2*P2Q1/(P2Q2*S)-96*A1*A2*MB**2*P1Q2*P2Q1/(P2Q2*S)
44189       A18=A18+96*A2**2*MB**2*P1Q2*P2Q1/(P2Q2*S)-
44190      &384*A1*A2*MB*MT*P1Q2*P2Q1/(P2Q2*S)+
44191      &576*A1*A2*P1P2*P1Q2*P2Q1/(P2Q2*S)-
44192      &96*A2*MB**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
44193      &48*A1*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
44194      &48*A2*MB*MT*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
44195      &96*A1*MT**2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
44196      &96*A1*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)-
44197      &96*A2*P1P2*P1Q2*P2Q1/(P1Q1*P2Q2*S)+
44198      &96*A1*A2*P1Q1*P1Q2*P2Q1/(P2Q2*S)+288*A1*A2*P1Q2**2*P2Q1/(P2Q2*S)-
44199      &96*A1*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)-96*A2*P1Q2**2*P2Q1/(P1Q1*P2Q2*S)+
44200      &192*A1*P2Q1**2/(P2Q2*S)+192*A2*P2Q1**2/(P2Q2*S)+
44201      &96*A1*A2*MB*MT*P2Q1**2/(P2Q2*S)-192*A2**2*MB*MT*P2Q1**2/(P2Q2*S)-
44202      &192*A1*A2*MT**2*P2Q1**2/(P2Q2*S)-192*A1*A2*P1P2*P2Q1**2/(P2Q2*S)-
44203      &48*A2*MB*MT*P2Q1**2/(P1Q1*P2Q2*S)+
44204      &192*A1*MT**2*P2Q1**2/(P1Q1*P2Q2*S)+
44205      &96*A2*MT**2*P2Q1**2/(P1Q1*P2Q2*S)
44206       A18=A18+96*A2*P1P2*P2Q1**2/(P1Q1*P2Q2*S)-
44207      &384*A1*A2*P1Q1*P2Q1**2/(P2Q2*S)-
44208      &384*A2**2*P1Q1*P2Q1**2/(P2Q2*S)-384*A1*A2*P1Q2*P2Q1**2/(P2Q2*S)-
44209      &192*A2**2*P1Q2*P2Q1**2/(P2Q2*S)+96*A1*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+
44210      &96*A2*P1Q2*P2Q1**2/(P1Q1*P2Q2*S)+144*A1*P2Q2/S+192*A2*P2Q2/S+
44211      &96*A1*A2*MB*MT*P2Q2/S-480*A2**2*MB*MT*P2Q2/S+
44212      &480*A12*MT**2*P2Q2/S+384*A1*A2*MT**2*P2Q2/S+
44213      &672*A1*A2*P1P2*P2Q2/S+864*A2**2*P1P2*P2Q2/S+
44214      &48*A1*MT**2*P2Q2/(P1Q1*S)+96*A2*MT**2*P2Q2/(P1Q1*S)+
44215      &192*A1*A2*MB*MT**3*P2Q2/(P1Q1*S)-
44216      &192*A1*A2*MT**2*P1P2*P2Q2/(P1Q1*S)-480*A12*P1Q1*P2Q2/S-
44217      &960*A1*A2*P1Q1*P2Q2/S-480*A2**2*P1Q1*P2Q2/S-
44218      &96*A2*MB*MT*P2Q2/(P1Q2*S)+192*A1*MT**2*P2Q2/(P1Q2*S)+
44219      &96*A2*MT**2*P2Q2/(P1Q2*S)-192*A1*A2*MB*MT**3*P2Q2/(P1Q2*S)+
44220      &192*A2*P1P2*P2Q2/(P1Q2*S)+192*A1*A2*MT**2*P1P2*P2Q2/(P1Q2*S)+
44221      &144*A1*P1Q1*P2Q2/(P1Q2*S)+96*A2*P1Q1*P2Q2/(P1Q2*S)+
44222      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P1Q2*S)
44223       A18=A18-96*A12*MT**2*P1Q1*P2Q2/(P1Q2*S)+
44224      &96*A1*A2*MT**2*P1Q1*P2Q2/(P1Q2*S)-
44225      &576*A1*A2*P1P2*P1Q1*P2Q2/(P1Q2*S)-192*A12*P1Q1**2*P2Q2/(P1Q2*S)-
44226      &384*A1*A2*P1Q1**2*P2Q2/(P1Q2*S)-192*A12*P1Q2*P2Q2/S-
44227      &192*A2**2*P1Q2*P2Q2/S+96*A1*A2*MB*MT*P1Q2*P2Q2/(P1Q1*S)-
44228      &192*A12*MT**2*P1Q2*P2Q2/(P1Q1*S)-
44229      &96*A1*A2*MT**2*P1Q2*P2Q2/(P1Q1*S)-
44230      &384*A1*A2*P1P2*P1Q2*P2Q2/(P1Q1*S)-384*A12*P1Q2**2*P2Q2/(P1Q1*S)-
44231      &384*A1*A2*P1Q2**2*P2Q2/(P1Q1*S)-48*A2*MB**2*P2Q2/(P2Q1*S)-
44232      &96*A1*MB*MT*P2Q2/(P2Q1*S)+48*A2*MB*MT*P2Q2/(P2Q1*S)-
44233      &192*A1*P1P2*P2Q2/(P2Q1*S)-192*A2*P1P2*P2Q2/(P2Q1*S)-
44234      &192*A1*A2*MB*MT*P1P2*P2Q2/(P2Q1*S)+
44235      &192*A1*A2*P1P2**2*P2Q2/(P2Q1*S)-96*A1*P1Q1*P2Q2/(P2Q1*S)-
44236      &144*A2*P1Q1*P2Q2/(P2Q1*S)-96*A1*A2*MB**2*P1Q1*P2Q2/(P2Q1*S)+
44237      &96*A2**2*MB**2*P1Q1*P2Q2/(P2Q1*S)-
44238      &384*A1*A2*MB*MT*P1Q1*P2Q2/(P2Q1*S)+
44239      &576*A1*A2*P1P2*P1Q1*P2Q2/(P2Q1*S)+288*A1*A2*P1Q1**2*P2Q2/(P2Q1*S)
44240       A18=A18+192*A1*MB*MT**3*P2Q2/(P1Q2*P2Q1*S)+
44241      &96*A2*MB*MT*P1P2*P2Q2/(P1Q2*P2Q1*S)-
44242      &192*A1*MT**2*P1P2*P2Q2/(P1Q2*P2Q1*S)-
44243      &96*A2*P1P2**2*P2Q2/(P1Q2*P2Q1*S)-
44244      &96*A2*MB**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44245      &48*A1*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44246      &48*A2*MB*MT*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44247      &96*A1*MT**2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44248      &96*A1*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44249      &96*A2*P1P2*P1Q1*P2Q2/(P1Q2*P2Q1*S)-
44250      &96*A1*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)-96*A2*P1Q1**2*P2Q2/(P1Q2*P2Q1*S)+
44251      &96*A1*A2*MB**2*P1Q2*P2Q2/(P2Q1*S)+
44252      &192*A2**2*MB**2*P1Q2*P2Q2/(P2Q1*S)-
44253      &96*A1*A2*MB*MT*P1Q2*P2Q2/(P2Q1*S)+
44254      &384*A1*A2*P1P2*P1Q2*P2Q2/(P2Q1*S)+
44255      &96*A1*A2*P1Q1*P1Q2*P2Q2/(P2Q1*S)-576*A1*A2*P2Q1*P2Q2/S+
44256      &96*A1*A2*P1Q1*P2Q1*P2Q2/(P1Q2*S)+96*A1*A2*P1Q2*P2Q1*P2Q2/(P1Q1*S)
44257       A18=A18-96*A1*A2*P2Q2**2/S+96*A1*A2*MT**2*P2Q2**2/(P1Q1*S)-
44258      &96*A1*A2*MT**2*P2Q2**2/(P1Q2*S)+288*A1*A2*P1Q1*P2Q2**2/(P1Q2*S)+
44259      &192*A1*P2Q2**2/(P2Q1*S)+192*A2*P2Q2**2/(P2Q1*S)+
44260      &96*A1*A2*MB*MT*P2Q2**2/(P2Q1*S)-192*A2**2*MB*MT*P2Q2**2/(P2Q1*S)-
44261      &192*A1*A2*MT**2*P2Q2**2/(P2Q1*S)-192*A1*A2*P1P2*P2Q2**2/(P2Q1*S)-
44262      &384*A1*A2*P1Q1*P2Q2**2/(P2Q1*S)-192*A2**2*P1Q1*P2Q2**2/(P2Q1*S)-
44263      &48*A2*MB*MT*P2Q2**2/(P1Q2*P2Q1*S)+
44264      &192*A1*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
44265      &96*A2*MT**2*P2Q2**2/(P1Q2*P2Q1*S)+
44266      &96*A2*P1P2*P2Q2**2/(P1Q2*P2Q1*S)+96*A1*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)+
44267      &96*A2*P1Q1*P2Q2**2/(P1Q2*P2Q1*S)-384*A1*A2*P1Q2*P2Q2**2/(P2Q1*S)-
44268      &384*A2**2*P1Q2*P2Q2**2/(P2Q1*S)+512*A1*A2*S/3-
44269      &128*A1*MT**2*S/(3*P1Q1**2)+128*A12*MB*MT**3*S/(3*P1Q1**2)-
44270      &152*A1*S/(3*P1Q1)-152*A12*MB*MT*S/(3*P1Q1)-
44271      &128*A1*A2*MB*MT*S/(3*P1Q1)+112*A1*A2*MT**2*S/(3*P1Q1)-
44272      &16*A12*P1P2*S/P1Q1+152*A1*A2*P1P2*S/(3*P1Q1)-
44273      &128*A1*MT**2*S/(3*P1Q2**2)+128*A12*MB*MT**3*S/(3*P1Q2**2)
44274       A18=A18-152*A1*S/(3*P1Q2)-152*A12*MB*MT*S/(3*P1Q2)-
44275      &128*A1*A2*MB*MT*S/(3*P1Q2)+112*A1*A2*MT**2*S/(3*P1Q2)-
44276      &16*A12*P1P2*S/P1Q2+152*A1*A2*P1P2*S/(3*P1Q2)+
44277      &16*A1*MB*MT*S/(3*P1Q1*P1Q2)-32*A12*MB*MT**3*S/(3*P1Q1*P1Q2)-
44278      &16*A1*P1P2*S/(3*P1Q1*P1Q2)+272*A1*A2*P1Q1*S/(3*P1Q2)+
44279      &272*A1*A2*P1Q2*S/(3*P1Q1)-128*A2*MB**2*S/(3*P2Q1**2)+
44280      &128*A2**2*MB**3*MT*S/(3*P2Q1**2)+
44281      &32*MB**2*MT**2*S/(3*P1Q2**2*P2Q1**2)+32*MB**2*S/(3*P1Q2*P2Q1**2)
44282  
44283       A18BIS=
44284      &64*A2*MB**3*MT*S/(3*P1Q2*P2Q1**2)-
44285      &64*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1**2)-
44286      &128*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1**2)-
44287      &128*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1**2)+
44288      &128*A2**2*MB**2*P1Q2*S/(3*P2Q1**2)+152*A2*S/(3*P2Q1)-
44289      &112*A1*A2*MB**2*S/(3*P2Q1)+128*A1*A2*MB*MT*S/(3*P2Q1)+
44290      &152*A2**2*MB*MT*S/(3*P2Q1)-152*A1*A2*P1P2*S/(3*P2Q1)+
44291      &16*A2**2*P1P2*S/P2Q1-8*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q1)+
44292      &16*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q1)-
44293      &8*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q1)-8*A1*P1P2*S/(3*P1Q1*P2Q1)-
44294      &8*A2*P1P2*S/(3*P1Q1*P2Q1)+8*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1)-
44295      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1)+
44296      &8*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q1)+
44297      &32*A1*A2*P1P2**2*S/(3*P1Q1*P2Q1)-32*A2**2*P1Q1*S/(3*P2Q1)-
44298      &32*MT**2*S/(3*P1Q2**2*P2Q1)+64*A1*MB**2*MT**2*S/(3*P1Q2**2*P2Q1)-
44299      &64*A1*MB*MT**3*S/(3*P1Q2**2*P2Q1)
44300       A18BIS=A18BIS+128*A1*MT**2*P1P2*S/(3*P1Q2**2*P2Q1)-
44301      &12*S/(P1Q2*P2Q1)+
44302      &24*A1*MB**2*S/(P1Q2*P2Q1)+64*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q1)+
44303      &24*A2*MT**2*S/(P1Q2*P2Q1)-128*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q1)+
44304      &64*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q1)+56*A1*P1P2*S/(3*P1Q2*P2Q1)+
44305      &56*A2*P1P2*S/(3*P1Q2*P2Q1)-64*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1)+
44306      &128*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1)-
44307      &64*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q1)-
44308      &256*A1*A2*P1P2**2*S/(3*P1Q2*P2Q1)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
44309      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1)-
44310      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1)+136*A2*P1Q1*S/(3*P1Q2*P2Q1)-
44311      &128*A1*A2*MB**2*P1Q1*S/(3*P1Q2*P2Q1)+
44312      &128*A1*A2*MB*MT*P1Q1*S/(3*P1Q2*P2Q1)-
44313      &256*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1)-160*A2**2*P1Q2*S/(3*P2Q1)+
44314      &16*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1)-32*A12*P2Q1*S/(3*P1Q1)-
44315      &128*A12*MT**2*P2Q1*S/(3*P1Q2**2)-160*A12*P2Q1*S/(3*P1Q2)-
44316      &128*A2*MB**2*S/(3*P2Q2**2)+128*A2**2*MB**3*MT*S/(3*P2Q2**2)
44317       A18BIS=A18BIS+32*MB**2*MT**2*S/(3*P1Q1**2*P2Q2**2)+
44318      &32*MB**2*S/(3*P1Q1*P2Q2**2)+
44319      &64*A2*MB**3*MT*S/(3*P1Q1*P2Q2**2)-
44320      &64*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2**2)-
44321      &128*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2**2)+
44322      &128*A2**2*MB**2*P1Q1*S/(3*P2Q2**2)-
44323      &128*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2**2)+152*A2*S/(3*P2Q2)-
44324      &112*A1*A2*MB**2*S/(3*P2Q2)+128*A1*A2*MB*MT*S/(3*P2Q2)+
44325      &152*A2**2*MB*MT*S/(3*P2Q2)-152*A1*A2*P1P2*S/(3*P2Q2)+
44326      &16*A2**2*P1P2*S/P2Q2-32*MT**2*S/(3*P1Q1**2*P2Q2)+
44327      &64*A1*MB**2*MT**2*S/(3*P1Q1**2*P2Q2)-
44328      &64*A1*MB*MT**3*S/(3*P1Q1**2*P2Q2)+
44329      &128*A1*MT**2*P1P2*S/(3*P1Q1**2*P2Q2)-12*S/(P1Q1*P2Q2)+
44330      &24*A1*MB**2*S/(P1Q1*P2Q2)+64*A1*A2*MB**3*MT*S/(3*P1Q1*P2Q2)+
44331      &24*A2*MT**2*S/(P1Q1*P2Q2)-128*A1*A2*MB**2*MT**2*S/(3*P1Q1*P2Q2)+
44332      &64*A1*A2*MB*MT**3*S/(3*P1Q1*P2Q2)+56*A1*P1P2*S/(3*P1Q1*P2Q2)+
44333      &56*A2*P1P2*S/(3*P1Q1*P2Q2)-64*A1*A2*MB**2*P1P2*S/(3*P1Q1*P2Q2)
44334       A18BIS=A18BIS+128*A1*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q2)-
44335      &64*A1*A2*MT**2*P1P2*S/(3*P1Q1*P2Q2)-
44336      &256*A1*A2*P1P2**2*S/(3*P1Q1*P2Q2)-160*A2**2*P1Q1*S/(3*P2Q2)-
44337      &8*A1*A2*MB**3*MT*S/(3*P1Q2*P2Q2)+
44338      &16*A1*A2*MB**2*MT**2*S/(3*P1Q2*P2Q2)-
44339      &8*A1*A2*MB*MT**3*S/(3*P1Q2*P2Q2)-8*A1*P1P2*S/(3*P1Q2*P2Q2)-
44340      &8*A2*P1P2*S/(3*P1Q2*P2Q2)+8*A1*A2*MB**2*P1P2*S/(3*P1Q2*P2Q2)-
44341      &16*A1*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q2)+
44342      &8*A1*A2*MT**2*P1P2*S/(3*P1Q2*P2Q2)+
44343      &32*A1*A2*P1P2**2*S/(3*P1Q2*P2Q2)+4*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
44344      &8*A1*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q2)-
44345      &8*A1*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q2)+
44346      &16*A1*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q2)-32*A2**2*P1Q2*S/(3*P2Q2)+
44347      &136*A2*P1Q2*S/(3*P1Q1*P2Q2)-128*A1*A2*MB**2*P1Q2*S/(3*P1Q1*P2Q2)+
44348      &128*A1*A2*MB*MT*P1Q2*S/(3*P1Q1*P2Q2)-
44349      &256*A1*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q2)+16*A2*MB*MT*S/(3*P2Q1*P2Q2)-
44350      &32*A2**2*MB**3*MT*S/(3*P2Q1*P2Q2)-16*A2*P1P2*S/(3*P2Q1*P2Q2)
44351       A18BIS=A18BIS-4*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+
44352      &8*A2*MB**2*P1P2*S/(3*P1Q1*P2Q1*P2Q2)+
44353      &8*A2*MB*MT*P1P2*S/(3*P1Q1*P2Q1*P2Q2)-4*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
44354      &8*A2*MB**2*P1P2*S/(3*P1Q2*P2Q1*P2Q2)+
44355      &8*A2*MB*MT*P1P2*S/(3*P1Q2*P2Q1*P2Q2)-
44356      &2*MB**3*MT*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
44357      &4*MB**2*MT**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44358      &2*MB*MT**3*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44359      &2*MB**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
44360      &4*MB*MT*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44361      &2*MT**2*P1P2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)-
44362      &8*P1P2**2*S/(3*P1Q1*P1Q2*P2Q1*P2Q2)+
44363      &8*A2*P1P2*P1Q1*S/(3*P1Q2*P2Q1*P2Q2)+
44364      &8*A2*P1P2*P1Q2*S/(3*P1Q1*P2Q1*P2Q2)+272*A1*A2*P2Q1*S/(3*P2Q2)-
44365      &128*A1*MT**2*P2Q1*S/(3*P1Q1**2*P2Q2)-136*A1*P2Q1*S/(3*P1Q1*P2Q2)-
44366      &128*A1*A2*MB*MT*P2Q1*S/(3*P1Q1*P2Q2)+
44367      &128*A1*A2*MT**2*P2Q1*S/(3*P1Q1*P2Q2)
44368       A18BIS=A18BIS+256*A1*A2*P1P2*P2Q1*S/(3*P1Q1*P2Q2)-
44369      &16*A1*A2*P1P2*P2Q1*S/(3*P1Q2*P2Q2)+
44370      &8*A1*P1P2*P2Q1*S/(3*P1Q1*P1Q2*P2Q2)+
44371      &256*A1*A2*P1Q2*P2Q1*S/(3*P1Q1*P2Q2)-
44372      &128*A12*MT**2*P2Q2*S/(3*P1Q1**2)-160*A12*P2Q2*S/(3*P1Q1)-
44373      &32*A12*P2Q2*S/(3*P1Q2)+272*A1*A2*P2Q2*S/(3*P2Q1)-
44374      &16*A1*A2*P1P2*P2Q2*S/(3*P1Q1*P2Q1)-
44375      &128*A1*MT**2*P2Q2*S/(3*P1Q2**2*P2Q1)-136*A1*P2Q2*S/(3*P1Q2*P2Q1)-
44376      &128*A1*A2*MB*MT*P2Q2*S/(3*P1Q2*P2Q1)+
44377      &128*A1*A2*MT**2*P2Q2*S/(3*P1Q2*P2Q1)+
44378      &256*A1*A2*P1P2*P2Q2*S/(3*P1Q2*P2Q1)+
44379      &8*A1*P1P2*P2Q2*S/(3*P1Q1*P1Q2*P2Q1)+
44380      &256*A1*A2*P1Q1*P2Q2*S/(3*P1Q2*P2Q1)-
44381      &8*A12*MB*MT*S**2/(3*P1Q1*P1Q2)+16*A12*P1P2*S**2/(3*P1Q1*P1Q2)-
44382      &8*A1*A2*P1P2*S**2/(3*P1Q1*P2Q1)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1)-
44383      &8*A1*A2*P1P2*S**2/(3*P1Q2*P2Q2)+4*A1*P1P2*S**2/(3*P1Q1*P1Q2*P2Q2)-
44384      &8*A2**2*MB*MT*S**2/(3*P2Q1*P2Q2)+16*A2**2*P1P2*S**2/(3*P2Q1*P2Q2)
44385       A18BIS=A18BIS-4*A2*P1P2*S**2/(3*P1Q1*P2Q1*P2Q2)-
44386      &4*A2*P1P2*S**2/(3*P1Q2*P2Q1*P2Q2)+
44387      &2*P1P2*S**2/(3*P1Q1*P1Q2*P2Q1*P2Q2)
44388 C
44389       V18=V18+V18BIS
44390       A18=A18+A18BIS
44391       V910 =-48*A12*MB*MT-48*A2**2*MB*MT-48*A12*P1P2-48*A2**2*P1P2-
44392      &384*A12*MB*MT*P1Q1*P1Q2/S**2-384*A12*P1P2*P1Q1*P1Q2/S**2-
44393      &384*A1*A2*MB*MT*P1Q2*P2Q1/S**2-384*A1*A2*P1P2*P1Q2*P2Q1/S**2+
44394      &192*A12*P1Q1*P1Q2*P2Q1/S**2+192*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
44395      &192*A12*P1Q2**2*P2Q1/S**2-192*A1*A2*P1Q2**2*P2Q1/S**2+
44396      &192*A1*A2*P1Q2*P2Q1**2/S**2+192*A2**2*P1Q2*P2Q1**2/S**2-
44397      &384*A1*A2*MB*MT*P1Q1*P2Q2/S**2-384*A1*A2*P1P2*P1Q1*P2Q2/S**2-
44398      &192*A12*P1Q1**2*P2Q2/S**2-192*A1*A2*P1Q1**2*P2Q2/S**2+
44399      &192*A12*P1Q1*P1Q2*P2Q2/S**2+192*A1*A2*P1Q1*P1Q2*P2Q2/S**2-
44400      &384*A2**2*MB*MT*P2Q1*P2Q2/S**2-384*A2**2*P1P2*P2Q1*P2Q2/S**2-
44401      &192*A1*A2*P1Q1*P2Q1*P2Q2/S**2-192*A2**2*P1Q1*P2Q1*P2Q2/S**2-
44402      &192*A1*A2*P1Q2*P2Q1*P2Q2/S**2-192*A2**2*P1Q2*P2Q1*P2Q2/S**2+
44403      &192*A1*A2*P1Q1*P2Q2**2/S**2+192*A2**2*P1Q1*P2Q2**2/S**2+
44404      &96*A12*MB*MT*P1Q1/S-96*A1*A2*MB*MT*P1Q1/S+
44405      &96*A12*P1P2*P1Q1/S-96*A1*A2*P1P2*P1Q1/S+96*A12*MB*MT*P1Q2/S-
44406      &96*A1*A2*MB*MT*P1Q2/S+96*A12*P1P2*P1Q2/S-96*A1*A2*P1P2*P1Q2/S+
44407      &96*A1*A2*MB*MT*P2Q1/S-96*A2**2*MB*MT*P2Q1/S
44408       V910=V910+96*A1*A2*P1P2*P2Q1/S-
44409      &96*A2**2*P1P2*P2Q1/S+96*A12*P1Q2*P2Q1/S+
44410      &192*A1*A2*P1Q2*P2Q1/S+96*A2**2*P1Q2*P2Q1/S+
44411      &96*A1*A2*MB*MT*P2Q2/S-96*A2**2*MB*MT*P2Q2/S+
44412      &96*A1*A2*P1P2*P2Q2/S-96*A2**2*P1P2*P2Q2/S+96*A12*P1Q1*P2Q2/S+
44413      &192*A1*A2*P1Q1*P2Q2/S+96*A2**2*P1Q1*P2Q2/S
44414 C
44415       A910 = 48*A12*MB*MT+48*A2**2*MB*MT-48*A12*P1P2-48*A2**2*P1P2+
44416      &384*A12*MB*MT*P1Q1*P1Q2/S**2-384*A12*P1P2*P1Q1*P1Q2/S**2+
44417      &384*A1*A2*MB*MT*P1Q2*P2Q1/S**2-384*A1*A2*P1P2*P1Q2*P2Q1/S**2+
44418      &192*A12*P1Q1*P1Q2*P2Q1/S**2+192*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
44419      &192*A12*P1Q2**2*P2Q1/S**2-192*A1*A2*P1Q2**2*P2Q1/S**2+
44420      &192*A1*A2*P1Q2*P2Q1**2/S**2+192*A2**2*P1Q2*P2Q1**2/S**2+
44421      &384*A1*A2*MB*MT*P1Q1*P2Q2/S**2-384*A1*A2*P1P2*P1Q1*P2Q2/S**2-
44422      &192*A12*P1Q1**2*P2Q2/S**2-192*A1*A2*P1Q1**2*P2Q2/S**2+
44423      &192*A12*P1Q1*P1Q2*P2Q2/S**2+192*A1*A2*P1Q1*P1Q2*P2Q2/S**2+
44424      &384*A2**2*MB*MT*P2Q1*P2Q2/S**2-384*A2**2*P1P2*P2Q1*P2Q2/S**2-
44425      &192*A1*A2*P1Q1*P2Q1*P2Q2/S**2-192*A2**2*P1Q1*P2Q1*P2Q2/S**2-
44426      &192*A1*A2*P1Q2*P2Q1*P2Q2/S**2-192*A2**2*P1Q2*P2Q1*P2Q2/S**2+
44427      &192*A1*A2*P1Q1*P2Q2**2/S**2+192*A2**2*P1Q1*P2Q2**2/S**2-
44428      &96*A12*MB*MT*P1Q1/S+96*A1*A2*MB*MT*P1Q1/S+
44429      &96*A12*P1P2*P1Q1/S-96*A1*A2*P1P2*P1Q1/S-96*A12*MB*MT*P1Q2/S+
44430      &96*A1*A2*MB*MT*P1Q2/S+96*A12*P1P2*P1Q2/S-96*A1*A2*P1P2*P1Q2/S-
44431      &96*A1*A2*MB*MT*P2Q1/S+96*A2**2*MB*MT*P2Q1/S
44432       A910=A910+96*A1*A2*P1P2*P2Q1/S-
44433      &96*A2**2*P1P2*P2Q1/S+96*A12*P1Q2*P2Q1/S+
44434      &192*A1*A2*P1Q2*P2Q1/S+96*A2**2*P1Q2*P2Q1/S-
44435      &96*A1*A2*MB*MT*P2Q2/S+96*A2**2*MB*MT*P2Q2/S+
44436      &96*A1*A2*P1P2*P2Q2/S-96*A2**2*P1P2*P2Q2/S+96*A12*P1Q1*P2Q2/S+
44437      &192*A1*A2*P1Q1*P2Q2/S+96*A2**2*P1Q1*P2Q2/S
44438 C
44439 C FINAL RESULT;
44440 C
44441       AMP2= FACT*PS*VTB**2*(V**2 *(V18 +V910)+A**2 *(A18+A910) )
44442  
44443       END
44444 C---------------------------------------------------------
44445 C 2)  Q QBAR ->TBH^+
44446        SUBROUTINE PYTBHQ(Q1,Q2,P1,P2,P3,MT,MB,RMB,MHP,AMP2)
44447 C
44448 C AMP2(OUTPUT) =MATRIX ELEMENT (AMPLITUDE**2) FOR Q QBAR->TB H^+
44449 C (NB SAME STRUCTURE AS FOR PYTBHG ROUTINE ABOVE)
44450       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44451       IMPLICIT INTEGER(I-N)
44452       DOUBLE PRECISION MW2,MT,MB,MHP,MW
44453       DIMENSION Q1(4),Q2(4),P1(4),P2(4),P3(4)
44454       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44455       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
44456       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
44457       COMMON/PYCTBH/ ALPHA,ALPHAS,SW2,MW2,TANB,VTB,V,A
44458       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYCTBH/
44459 C !THE RELEVANT INPUT PARAMETERS ABOVE ARE NEEDED FOR CALCULATION
44460 C BUT ARE NOT DEFINED HERE SO THAT ONE MAY CHOOSE/VARY THEIR VALUES:
44461 C ACCORDINGLY, WHEN CALLING THESE SUBROUTINES, PLEASE SUPPLY VIA
44462 C THIS COMMON/PARAM/ YOUR PREFERRED ALPHA, ALPHAS,..AND TANB VALUES
44463 C
44464 C THE NORMALIZED V,A COUPLINGS ARE DEFINED BELOW AND USED BOTH
44465 C IN THIS ROUTINE AND IN THE TOP WIDTH CALCULATION PYTBHB(..).
44466 C
44467       DIMENSION YY(2,2)
44468  
44469       PI = 4*DATAN(1.D0)
44470       MW = DSQRT(MW2)
44471  
44472 C COLLECTING THE RELEVANT OVERALL FACTORS:
44473 C 3X3 INITIAL QUARK COLOR AVERAGE, 2X2 QUARK SPIN AVERAGE
44474       PS=1.D0/(3.D0*3.D0 *2.D0*2.D0)
44475 C COUPLING CONSTANT (OVERALL NORMALIZATION)
44476       FACT=(4.D0*PI*ALPHA)*(4.D0*PI*ALPHAS)**2/SW2/2.D0
44477 C NB ALPHA IS E^2/4/PI, BUT BETTER DEFINED IN TERMS OF G_FERMI:
44478 C ALPHA= DSQRT(2.D0)*GF*SW2*MW**2/PI
44479 C ALPHAS IS ALPHA_STRONG;
44480 C SW2 IS SIN(THETA_W)**2.
44481 C
44482 C      VTB=.998D0
44483 C VTB IS TOP-BOTTOM CKM MATRIX ELEMENT (APPROXIMATE VALUE HERE)
44484 C
44485       V = ( MT/MW/TANB +RMB/MW*TANB)/2.D0
44486       A = (-MT/MW/TANB +RMB/MW*TANB)/2.D0
44487 C V AND A ARE (NORMALIZED) VECTOR AND AXIAL TBH^+ COUPLINGS
44488 C
44489 C REDEFINING P2 INGOING FROM OVERALL MOMENTUM CONSERVATION
44490 C (BECAUSE P2 INGOING WAS USED IN OUR GRAPH CALCULATION CONVENTIONS)
44491       DO 100 KK=1,4
44492         P2(KK)=P3(KK)-Q1(KK)-Q2(KK)+P1(KK)
44493   100 CONTINUE
44494 C DEFINING VARIOUS RELEVANT 4-SCALAR PRODUCTS:
44495       S = 2*PYTBHS(Q1,Q2)
44496       P1Q1=PYTBHS(Q1,P1)
44497       P1Q2=PYTBHS(P1,Q2)
44498       P2Q1=PYTBHS(P2,Q1)
44499       P2Q2=PYTBHS(P2,Q2)
44500       P1P2=PYTBHS(P1,P2)
44501 C
44502 C   TOP WIDTH CALCULATION
44503       CALL PYTBHB(MT,MB,MHP,BR,GAMT)
44504 C   GAMT IS THE TOP WIDTH: T->BH^+ AND/OR T->B W^+
44505 C THEN DEFINE TOP (RESONANT) PROPAGATOR:
44506       A1INV= S -2*P1Q1 -2*P1Q2
44507       A1 =A1INV/(A1INV**2+ (GAMT*MT)**2)
44508 C (I.E. INTRODUCE THE TOP WIDTH IN A1 TO REGULARISE THE POLE)
44509 C  NB  A12 = A1*A1 BUT WITH CORRECT WIDTH TREATMENT
44510       A12 = 1.D0/(A1INV**2+ (GAMT*MT)**2)
44511       A2 =1.D0/(S +2*P2Q1 +2*P2Q2)
44512 C NOTE A2 IS B PROPAGATOR, DOES NOT NEED A WIDTH
44513 C  NOW COMES THE AMP**2:
44514 C NB COLOR FACTOR (COMING FORM GRAPHS) ALREADY INCLUDED IN
44515 C THE EXPRESSIONS BELOW
44516       YY(1, 1) = -16*A**2*A2**2*MB*MT+
44517      &64*A**2*A2**2*P1Q2*P2Q1**2/S**2+
44518      &128*A**2*A2**2*MB*MT*P2Q1*P2Q2/S**2-
44519      &128*A**2*A2**2*P1P2*P2Q1*P2Q2/S**2-
44520      &64*A**2*A2**2*P1Q1*P2Q1*P2Q2/S**2-
44521      &64*A**2*A2**2*P1Q2*P2Q1*P2Q2/S**2+
44522      &64*A**2*A2**2*P1Q1*P2Q2**2/S**2-
44523      &32*A**2*A2**2*MB**3*MT/S+32*A**2*A2**2*MB**2*P1P2/S+
44524      &32*A**2*A2**2*MB**2*P1Q1/S+32*A**2*A2**2*MB**2*P1Q2/S-
44525      &32*A**2*A2**2*P1P2*P2Q1/S-32*A**2*A2**2*P1Q1*P2Q1/S-
44526      &32*A**2*A2**2*P1P2*P2Q2/S-32*A**2*A2**2*P1Q2*P2Q2/S+
44527      &16*A2**2*MB*MT*V**2+64*A2**2*P1Q2*P2Q1**2*V**2/S**2-
44528      &128*A2**2*MB*MT*P2Q1*P2Q2*V**2/S**2-
44529      &128*A2**2*P1P2*P2Q1*P2Q2*V**2/S**2-
44530      &64*A2**2*P1Q1*P2Q1*P2Q2*V**2/S**2-
44531      &64*A2**2*P1Q2*P2Q1*P2Q2*V**2/S**2+
44532      &64*A2**2*P1Q1*P2Q2**2*V**2/S**2
44533       YY(1, 1)=YY(1, 1)+32*A2**2*MB**3*MT*V**2/S+
44534      &32*A2**2*MB**2*P1P2*V**2/S+
44535      &32*A2**2*MB**2*P1Q1*V**2/S+32*A2**2*MB**2*P1Q2*V**2/S-
44536      &32*A2**2*P1P2*P2Q1*V**2/S-32*A2**2*P1Q1*P2Q1*V**2/S-
44537      &32*A2**2*P1P2*P2Q2*V**2/S-32*A2**2*P1Q2*P2Q2*V**2/S
44538       YY(1, 1)=2*YY(1, 1)
44539  
44540       YY(1, 2) = -32*A**2*A1*A2*MB*MT+
44541      &128*A**2*A1*A2*MB*MT*P1Q2*P2Q1/S**2-
44542      &128*A**2*A1*A2*P1P2*P1Q2*P2Q1/S**2+
44543      &64*A**2*A1*A2*P1Q1*P1Q2*P2Q1/S**2-
44544      &64*A**2*A1*A2*P1Q2**2*P2Q1/S**2+
44545      &64*A**2*A1*A2*P1Q2*P2Q1**2/S**2+
44546      &128*A**2*A1*A2*MB*MT*P1Q1*P2Q2/S**2-
44547      &128*A**2*A1*A2*P1P2*P1Q1*P2Q2/S**2-
44548      &64*A**2*A1*A2*P1Q1**2*P2Q2/S**2+
44549      &64*A**2*A1*A2*P1Q1*P1Q2*P2Q2/S**2-
44550      &64*A**2*A1*A2*P1Q1*P2Q1*P2Q2/S**2-
44551      &64*A**2*A1*A2*P1Q2*P2Q1*P2Q2/S**2+
44552      &64*A**2*A1*A2*P1Q1*P2Q2**2/S**2-
44553      &64*A**2*A1*A2*MB*MT*P1P2/S+
44554      &64*A**2*A1*A2*P1P2**2/S+32*A**2*A1*A2*MB**2*P1Q1/S+
44555      &32*A**2*A1*A2*P1P2*P1Q1/S+32*A**2*A1*A2*MB**2*P1Q2/S+
44556      &32*A**2*A1*A2*P1P2*P1Q2/S-32*A**2*A1*A2*MT**2*P2Q1/S
44557       YY(1, 2)=YY(1, 2)-32*A**2*A1*A2*P1P2*P2Q1/S-
44558      &64*A**2*A1*A2*P1Q1*P2Q1/S-
44559      &32*A**2*A1*A2*MT**2*P2Q2/S-32*A**2*A1*A2*P1P2*P2Q2/S-
44560      &64*A**2*A1*A2*P1Q2*P2Q2/S+32*A1*A2*MB*MT*V**2-
44561      &128*A1*A2*MB*MT*P1Q2*P2Q1*V**2/S**2 -
44562      &128*A1*A2*P1P2*P1Q2*P2Q1*V**2/S**2+
44563      &64*A1*A2*P1Q1*P1Q2*P2Q1*V**2/S**2-
44564      &64*A1*A2*P1Q2**2*P2Q1*V**2/S**2+
44565      &64*A1*A2*P1Q2*P2Q1**2*V**2/S**2-
44566      &128*A1*A2*MB*MT*P1Q1*P2Q2*V**2/S**2-
44567      &128*A1*A2*P1P2*P1Q1*P2Q2*V**2/S**2-
44568      &64*A1*A2*P1Q1**2*P2Q2*V**2/S**2+
44569      &64*A1*A2*P1Q1*P1Q2*P2Q2*V**2/S**2-
44570      &64*A1*A2*P1Q1*P2Q1*P2Q2*V**2/S**2-
44571      &64*A1*A2*P1Q2*P2Q1*P2Q2*V**2/S**2+
44572      &64*A1*A2*P1Q1*P2Q2**2*V**2/S**2+
44573      &64*A1*A2*MB*MT*P1P2*V**2/S+64*A1*A2*P1P2**2*V**2/S
44574       YY(1, 2)=YY(1, 2)+32*A1*A2*MB**2*P1Q1*V**2/S+
44575      &32*A1*A2*P1P2*P1Q1*V**2/S+
44576      &32*A1*A2*MB**2*P1Q2*V**2/S+32*A1*A2*P1P2*P1Q2*V**2/S-
44577      &32*A1*A2*MT**2*P2Q1*V**2/S-32*A1*A2*P1P2*P2Q1*V**2/S-
44578      &64*A1*A2*P1Q1*P2Q1*V**2/S-32*A1*A2*MT**2*P2Q2*V**2/S-
44579      &32*A1*A2*P1P2*P2Q2*V**2/S-64*A1*A2*P1Q2*P2Q2*V**2/S
44580  
44581  
44582       YY(2, 2) =-16*A**2*A12*MB*MT+
44583      &128*A**2*A12*MB*MT*P1Q1*P1Q2/S**2-
44584      &128*A**2*A12*P1P2*P1Q1*P1Q2/S**2+
44585      &64*A**2*A12*P1Q1*P1Q2*P2Q1/S**2-
44586      &64*A**2*A12*P1Q2**2*P2Q1/S**2-64*A**2*A12*P1Q1**2*P2Q2/S**2+
44587      &64*A**2*A12*P1Q1*P1Q2*P2Q2/S**2-32*A**2*A12*MB*MT**3/S+
44588      &32*A**2*A12*MT**2*P1P2/S+32*A**2*A12*P1P2*P1Q1/S+
44589      &32*A**2*A12*P1P2*P1Q2/S-32*A**2*A12*MT**2*P2Q1/S-
44590      &32*A**2*A12*P1Q1*P2Q1/S-32*A**2*A12*MT**2*P2Q2/S-
44591      &32*A**2*A12*P1Q2*P2Q2/S+16*A12*MB*MT*V**2-
44592      &128*A12*MB*MT*P1Q1*P1Q2*V**2/S**2-
44593      &128*A12*P1P2*P1Q1*P1Q2*V**2/S**2+
44594      &64*A12*P1Q1*P1Q2*P2Q1*V**2/S**2-
44595      &64*A12*P1Q2**2*P2Q1*V**2/S**2-64*A12*P1Q1**2*P2Q2*V**2/S**2+
44596      &64*A12*P1Q1*P1Q2*P2Q2*V**2/S**2+32*A12*MB*MT**3*V**2/S+
44597      &32*A12*MT**2*P1P2*V**2/S+32*A12*P1P2*P1Q1*V**2/S+
44598      &32*A12*P1P2*P1Q2*V**2/S-32*A12*MT**2*P2Q1*V**2/S
44599       YY(2, 2)=YY(2, 2)-32*A12*P1Q1*P2Q1*V**2/S-
44600      &32*A12*MT**2*P2Q2*V**2/S-
44601      &32*A12*P1Q2*P2Q2*V**2/S
44602       YY(2, 2)=2*YY(2, 2)
44603  
44604       RES=YY(1,1)+2*YY(1,2)+YY(2,2)
44605       AMP2=  FACT*PS*VTB**2*RES
44606  
44607       END
44608 C=====================================================================
44609 C     ************* FUNCTION SCALAR PRODUCTS *************************
44610       DOUBLE PRECISION FUNCTION PYTBHS(A,B)
44611       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44612       IMPLICIT INTEGER(I-N)
44613       DIMENSION A(4),B(4)
44614       DUM=A(4)*B(4)
44615       DO 100 ID=1,3
44616          DUM=DUM-A(ID)*B(ID)
44617   100 CONTINUE
44618       PYTBHS=DUM
44619       RETURN
44620       END
44621  
44622 C*********************************************************************
44623  
44624 C...PYMSIN
44625 C...Initializes supersymmetry: finds sparticle masses and
44626 C...branching ratios and stores this information.
44627 C...AUTHOR: STEPHEN MRENNA
44628 C...Author: P. Skands (SLHA + RPV + ISASUSY Interface, NMSSM)
44629  
44630       SUBROUTINE PYMSIN
44631  
44632 C...Double precision and integer declarations.
44633       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
44634       IMPLICIT INTEGER(I-N)
44635       INTEGER PYK,PYCHGE,PYCOMP
44636 C...Parameter statement to help give large particle numbers.
44637       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
44638      &KEXCIT=4000000,KDIMEN=5000000)
44639 C...Commonblocks.
44640       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
44641       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
44642       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
44643       COMMON/PYDAT4/CHAF(500,2)
44644       CHARACTER CHAF*16
44645       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
44646       COMMON/PYINT4/MWID(500),WIDS(500,5)
44647       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
44648       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
44649       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
44650      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
44651       COMMON/PYHTRI/HHH(7)
44652       COMMON/PYQNUM/NQNUM,NQDUM,KQNUM(500,0:9)
44653       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYPARS/,/PYINT4/,
44654      &/PYMSSM/,/PYMSRV/,/PYSSMT/
44655  
44656 C...Local variables.
44657       DOUBLE PRECISION ALFA,BETA
44658       DOUBLE PRECISION TANB,AL,BE,COSA,COSB,SINA,SINB,XW
44659       INTEGER I,J,J1,I1,K1
44660       INTEGER KC,LKNT,IDLAM(400,3)
44661       DOUBLE PRECISION XLAM(0:400)
44662       DOUBLE PRECISION WDTP(0:400),WDTE(0:400,0:5)
44663       DOUBLE PRECISION XARG,COS2B,XMW2,XMZ2
44664       DOUBLE PRECISION DELM,XMDIF
44665       DOUBLE PRECISION DX,DY,DS,DMU2,DMA2,DQ2,DU2,DD2,DL2,DE2,DHU2,DHD2
44666       DOUBLE PRECISION ARG,SGNMU,R
44667       INTEGER IMSSM
44668       INTEGER IRPRTY
44669       INTEGER KFSUSY(50),MWIDSU(36),MDCYSU(36)
44670       SAVE MWIDSU,MDCYSU
44671       DATA KFSUSY/
44672      &1000001,2000001,1000002,2000002,1000003,2000003,
44673      &1000004,2000004,1000005,2000005,1000006,2000006,
44674      &1000011,2000011,1000012,2000012,1000013,2000013,
44675      &1000014,2000014,1000015,2000015,1000016,2000016,
44676      &1000021,1000022,1000023,1000025,1000035,1000024,
44677      &1000037,1000039,     25,     35,     36,     37,
44678      &      6,     24,     45,     46,1000045, 9*0/
44679       DATA INIT/0/
44680  
44681 C...Automatically read QNUMBERS, MASS, and DECAY tables      
44682       IF (IMSS(21).NE.0.OR.MSTP(161).NE.0) THEN
44683         NQNUM=0
44684         CALL PYSLHA(0,0,IFAIL)
44685         CALL PYSLHA(5,0,IFAIL)
44686       ENDIF
44687       IF (IMSS(22).NE.0.OR.MSTP(161).NE.0) CALL PYSLHA(2,0,IFAIL)
44688 
44689 C...Do nothing further if SUSY not requested
44690       IMSSM=IMSS(1)
44691       IF(IMSSM.EQ.0) RETURN
44692       
44693 C...Save copy of MWID(KC) and MDCY(KC,1) values before
44694 C...they are set to zero for the LSP.
44695       IF(INIT.EQ.0) THEN
44696         INIT=1
44697         DO 100 I=1,36
44698           KF=KFSUSY(I)
44699           KC=PYCOMP(KF)
44700           MWIDSU(I)=MWID(KC)
44701           MDCYSU(I)=MDCY(KC,1)
44702   100   CONTINUE
44703       ENDIF
44704  
44705 C...Restore MWID(KC) and MDCY(KC,1) values previously zeroed for LSP.
44706       DO 110 I=1,36
44707         KF=KFSUSY(I)
44708         KC=PYCOMP(KF)
44709         IF(MDCY(KC,1).EQ.0.AND.MDCYSU(I).NE.0) THEN
44710           MWID(KC)=MWIDSU(I)
44711           MDCY(KC,1)=MDCYSU(I)
44712         ENDIF
44713   110 CONTINUE
44714  
44715 C...First part of routine: set masses and couplings.
44716  
44717 C...Reset mixing values in sfermion sector to pure left/right.
44718       DO 120 I=1,16
44719         SFMIX(I,1)=1D0
44720         SFMIX(I,4)=1D0
44721         SFMIX(I,2)=0D0
44722         SFMIX(I,3)=0D0
44723   120 CONTINUE
44724  
44725 C...Add NMSSM states if NMSSM switched on, and change old names.
44726       IF (IMSS(13).NE.0.AND.PYCOMP(1000045).EQ.0) THEN
44727 C...  Switch on NMSSM
44728         WRITE(MSTU(11),*) '(PYMSIN:) switching on NMSSM'
44729  
44730         KFN=25
44731         KCN=KFN
44732         CHAF(KCN,1)='h_10'
44733         CHAF(KCN,2)=' '
44734  
44735         KFN=35
44736         KCN=KFN
44737         CHAF(KCN,1)='h_20'
44738         CHAF(KCN,2)=' '
44739  
44740         KFN=45
44741         KCN=KFN
44742         CHAF(KCN,1)='h_30'
44743         CHAF(KCN,2)=' '
44744  
44745         KFN=36
44746         KCN=KFN
44747         CHAF(KCN,1)='A_10'
44748         CHAF(KCN,2)=' '
44749  
44750         KFN=46
44751         KCN=KFN
44752         CHAF(KCN,1)='A_20'
44753         CHAF(KCN,2)=' '
44754  
44755         KFN=1000045
44756         KCN=PYCOMP(KFN)
44757         IF (KCN.EQ.0) THEN
44758           DO 123 KCT=100,MSTU(6)
44759             IF(KCHG(KCT,4).GT.100) KCN=KCT
44760  123      CONTINUE
44761           KCN=KCN+1
44762           KCHG(KCN,4)=KFN
44763           MSTU(20)=0
44764         ENDIF
44765 C...  Set stable for now
44766         PMAS(KCN,2)=1D-6
44767         MWID(KCN)=0
44768         MDCY(KCN,1)=0
44769         MDCY(KCN,2)=0
44770         MDCY(KCN,3)=0
44771         CHAF(KCN,1)='~chi_50'
44772         CHAF(KCN,2)=' '
44773       ENDIF
44774  
44775 C...Read spectrum from SLHA file.
44776       IF (IMSSM.EQ.11) THEN
44777         CALL PYSLHA(1,0,IFAIL)
44778       ENDIF
44779  
44780 C...Common couplings.
44781       TANB=RMSS(5)
44782       BETA=ATAN(TANB)
44783       COSB=COS(BETA)
44784       SINB=TANB*COSB
44785       COS2B=COS(2D0*BETA)
44786       ALFA=RMSS(18)
44787       XMW2=PMAS(24,1)**2
44788       XMZ2=PMAS(23,1)**2
44789       XW=PARU(102)
44790  
44791 C...Define sparticle masses for a general MSSM simulation.
44792       IF(IMSSM.EQ.1) THEN
44793         IF(IMSS(9).EQ.0) RMSS(22)=RMSS(9)
44794         DO 130 I=1,5,2
44795           KC=PYCOMP(KSUSY1+I)
44796           PMAS(KC,1)=SQRT(RMSS(8)**2-(2D0*XMW2+XMZ2)*COS2B/6D0)
44797           KC=PYCOMP(KSUSY2+I)
44798           PMAS(KC,1)=SQRT(RMSS(9)**2+(XMW2-XMZ2)*COS2B/3D0)
44799           KC=PYCOMP(KSUSY1+I+1)
44800           PMAS(KC,1)=SQRT(RMSS(8)**2+(4D0*XMW2-XMZ2)*COS2B/6D0)
44801           KC=PYCOMP(KSUSY2+I+1)
44802           PMAS(KC,1)=SQRT(RMSS(22)**2-(XMW2-XMZ2)*COS2B*2D0/3D0)
44803   130   CONTINUE
44804         XARG=RMSS(6)**2-PMAS(24,1)**2*ABS(COS(2D0*BETA))
44805         IF(XARG.LT.0D0) THEN
44806           WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
44807      &    ' FROM THE SUM RULE. '
44808           WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
44809           RETURN
44810         ELSE
44811           XARG=SQRT(XARG)
44812         ENDIF
44813         DO 140 I=11,15,2
44814           PMAS(PYCOMP(KSUSY1+I),1)=RMSS(6)
44815           PMAS(PYCOMP(KSUSY2+I),1)=RMSS(7)
44816           PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
44817           PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
44818   140   CONTINUE
44819         IF(IMSS(8).EQ.1) THEN
44820           RMSS(13)=RMSS(6)
44821           RMSS(14)=RMSS(7)
44822         ENDIF
44823  
44824 C...Alternatively derive masses from SUGRA relations.
44825       ELSEIF(IMSSM.EQ.2) THEN
44826         RMSS(36)=RMSS(16)
44827         CALL PYAPPS
44828 C...Or use ISASUSY
44829       ELSEIF(IMSSM.EQ.12.OR.IMSSM.EQ.13) THEN
44830         RMSS(36)=RMSS(16)
44831         CALL PYSUGI
44832         ALFA=RMSS(18)
44833         GOTO 170
44834       ELSE
44835         GOTO 170
44836       ENDIF
44837  
44838 C...Add in extra D-term contributions.
44839       IF(IMSS(7).EQ.1) THEN
44840         R=0.43D0
44841         DX=RMSS(23)
44842         DY=RMSS(24)
44843         DS=RMSS(25)
44844         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44845         WRITE(MSTU(11),*) 'C  NEW DTERMS ADDED TO SCALAR MASSES   '
44846         WRITE(MSTU(11),*) 'C   IN A U(B-L) THEORY                 '
44847         WRITE(MSTU(11),*) 'C   DX = ',DX
44848         WRITE(MSTU(11),*) 'C   DY = ',DY
44849         WRITE(MSTU(11),*) 'C   DS = ',DS
44850         WRITE(MSTU(11),*) 'C                                      '
44851         DY=R*DY-4D0/33D0*(1D0-R)*DX+(1D0-R)/33D0*DS
44852         WRITE(MSTU(11),*) 'C   DY AT THE WEAK SCALE = ',DY
44853         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44854         DQ2=DY/6D0-DX/3D0-DS/3D0
44855         DU2=-2D0*DY/3D0-DX/3D0-DS/3D0
44856         DD2=DY/3D0+DX-2D0*DS/3D0
44857         DL2=-DY/2D0+DX-2D0*DS/3D0
44858         DE2=DY-DX/3D0-DS/3D0
44859         DHU2=DY/2D0+2D0*DX/3D0+2D0*DS/3D0
44860         DHD2=-DY/2D0-2D0*DX/3D0+DS
44861         DMU2=(-DY/2D0-2D0/3D0*DX+(COSB**2-2D0*SINB**2/3D0)*DS)
44862      &  /ABS(COS2B)
44863         DMA2 = 2D0*DMU2+DHU2+DHD2
44864         DO 150 I=1,5,2
44865           KC=PYCOMP(KSUSY1+I)
44866           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
44867           KC=PYCOMP(KSUSY2+I)
44868           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DD2)
44869           KC=PYCOMP(KSUSY1+I+1)
44870           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DQ2)
44871           KC=PYCOMP(KSUSY2+I+1)
44872           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DU2)
44873   150   CONTINUE
44874         DO 160 I=11,15,2
44875           KC=PYCOMP(KSUSY1+I)
44876           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
44877           KC=PYCOMP(KSUSY2+I)
44878           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DE2)
44879           KC=PYCOMP(KSUSY1+I+1)
44880           PMAS(KC,1)=SQRT(PMAS(KC,1)**2+DL2)
44881   160   CONTINUE
44882         IF(RMSS(4)**2+DMU2.LT.0D0) THEN
44883           WRITE(MSTU(11),*) ' MU2 DRIVEN NEGATIVE '
44884           CALL PYSTOP(104)
44885         ENDIF
44886         SGNMU=SIGN(1D0,RMSS(4))
44887         RMSS(4)=SGNMU*SQRT(RMSS(4)**2+DMU2)
44888         ARG=RMSS(10)**2*SIGN(1D0,RMSS(10))+DQ2
44889         RMSS(10)=SIGN(SQRT(ABS(ARG)),ARG)
44890         ARG=RMSS(11)**2*SIGN(1D0,RMSS(11))+DD2
44891         RMSS(11)=SIGN(SQRT(ABS(ARG)),ARG)
44892         ARG=RMSS(12)**2*SIGN(1D0,RMSS(12))+DU2
44893         RMSS(12)=SIGN(SQRT(ABS(ARG)),ARG)
44894         ARG=RMSS(13)**2*SIGN(1D0,RMSS(13))+DL2
44895         RMSS(13)=SIGN(SQRT(ABS(ARG)),ARG)
44896         ARG=RMSS(14)**2*SIGN(1D0,RMSS(14))+DE2
44897         RMSS(14)=SIGN(SQRT(ABS(ARG)),ARG)
44898         IF( RMSS(19)**2 + DMA2 .LE. 50D0 ) THEN
44899           WRITE(MSTU(11),*) ' MA DRIVEN TOO LOW '
44900           CALL PYSTOP(104)
44901         ENDIF
44902         RMSS(19)=SQRT(RMSS(19)**2+DMA2)
44903         RMSS(6)=SQRT(RMSS(6)**2+DL2)
44904         RMSS(7)=SQRT(RMSS(7)**2+DE2)
44905         WRITE(MSTU(11),*) ' MTL = ',RMSS(10)
44906         WRITE(MSTU(11),*) ' MBR = ',RMSS(11)
44907         WRITE(MSTU(11),*) ' MTR = ',RMSS(12)
44908         WRITE(MSTU(11),*) ' SEL = ',RMSS(6),RMSS(13)
44909         WRITE(MSTU(11),*) ' SER = ',RMSS(7),RMSS(14)
44910       ENDIF
44911  
44912 C...Fix the third generation sfermions.
44913       CALL PYTHRG
44914  
44915 C...Fix the neutralino--chargino--gluino sector.
44916       CALL PYINOM
44917  
44918 C...Fix the Higgs sector.
44919       CALL PYHGGM(ALFA)
44920  
44921 C...Choose the Gunion-Haber convention.
44922       ALFA=-ALFA
44923       RMSS(18)=ALFA
44924  
44925 C...Print information on mass parameters.
44926       IF(IMSSM.EQ.2.AND.MSTP(122).GT.0) THEN
44927         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44928         WRITE(MSTU(11),*) ' USING APPROXIMATE SUGRA RELATIONS '
44929         WRITE(MSTU(11),*) ' M0 = ',RMSS(8)
44930         WRITE(MSTU(11),*) ' M1/2=',RMSS(1)
44931         WRITE(MSTU(11),*) ' TANB=',RMSS(5)
44932         WRITE(MSTU(11),*) ' MU = ',RMSS(4)
44933         WRITE(MSTU(11),*) ' AT = ',RMSS(16)
44934         WRITE(MSTU(11),*) ' MA = ',RMSS(19)
44935         WRITE(MSTU(11),*) ' MTOP=',PMAS(6,1)
44936         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44937       ENDIF
44938       IF(IMSS(20).EQ.1) THEN
44939         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44940         WRITE(MSTU(11),*) ' DEBUG MODE '
44941         WRITE(MSTU(11),*) ' UMIX = ',UMIX(1,1),UMIX(1,2),
44942      &  UMIX(2,1),UMIX(2,2)
44943         WRITE(MSTU(11),*) ' UMIXI = ',UMIXI(1,1),UMIXI(1,2),
44944      &  UMIXI(2,1),UMIXI(2,2)
44945         WRITE(MSTU(11),*) ' VMIX = ',VMIX(1,1),VMIX(1,2),
44946      &  VMIX(2,1),VMIX(2,2)
44947         WRITE(MSTU(11),*) ' VMIXI = ',VMIXI(1,1),VMIXI(1,2),
44948      &  VMIXI(2,1),VMIXI(2,2)
44949         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(1,I),I=1,4)
44950         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(1,I),I=1,4)
44951         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(2,I),I=1,4)
44952         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(2,I),I=1,4)
44953         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(3,I),I=1,4)
44954         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(3,I),I=1,4)
44955         WRITE(MSTU(11),*) ' ZMIX = ',(ZMIX(4,I),I=1,4)
44956         WRITE(MSTU(11),*) ' ZMIXI = ',(ZMIXI(4,I),I=1,4)
44957         WRITE(MSTU(11),*) ' ALFA = ',ALFA
44958         WRITE(MSTU(11),*) ' BETA = ',BETA
44959         WRITE(MSTU(11),*) ' STOP = ',(SFMIX(6,I),I=1,4)
44960         WRITE(MSTU(11),*) ' SBOT = ',(SFMIX(5,I),I=1,4)
44961         WRITE(MSTU(11),*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
44962       ENDIF
44963  
44964 C...Set up the Higgs couplings - needed here since initialization
44965 C...in PYINRE did not yet occur when PYWIDT is called below.
44966   170 AL=ALFA
44967       BE=BETA
44968       SINA=SIN(AL)
44969       COSA=COS(AL)
44970       COSB=COS(BE)
44971       SINB=TANB*COSB
44972       SBMA=SIN(BE-AL)
44973       SAPB=SIN(AL+BE)
44974       CAPB=COS(AL+BE)
44975       CBMA=COS(BE-AL)
44976       C2A=COS(2D0*AL)
44977       C2B=COSB**2-SINB**2
44978 C...tanb (used for H+)
44979       PARU(141)=TANB
44980  
44981 C...Firstly: h
44982 C...Coupling to d-type quarks
44983       PARU(161)=SINA/COSB
44984 C...Coupling to u-type quarks
44985       PARU(162)=-COSA/SINB
44986 C...Coupling to leptons
44987       PARU(163)=PARU(161)
44988 C...Coupling to Z
44989       PARU(164)=SBMA
44990 C...Coupling to W
44991       PARU(165)=PARU(164)
44992  
44993 C...Secondly: H
44994 C...Coupling to d-type quarks
44995       PARU(171)=-COSA/COSB
44996 C...Coupling to u-type quarks
44997       PARU(172)=-SINA/SINB
44998 C...Coupling to leptons
44999       PARU(173)=PARU(171)
45000 C...Coupling to Z
45001       PARU(174)=CBMA
45002 C...Coupling to W
45003       PARU(175)=PARU(174)
45004 C...Coupling to h
45005       IF(IMSS(4).GE.2) THEN
45006         PARU(176)=COS(2D0*AL)*COS(BE+AL)-2D0*SIN(2D0*AL)*SIN(BE+AL)
45007       ELSE
45008         HHH(3)=HHH(3)+HHH(4)+HHH(5)
45009         PARU(176)=-3D0/HHH(1)*(HHH(1)*SINA**2*COSB*COSA+
45010      1  HHH(2)*COSA**2*SINB*SINA+HHH(3)*(SINA**3*SINB+COSA**3*COSB-
45011      2  2D0/3D0*CBMA)-HHH(6)*SINA*(COSB*C2A+COSA*CAPB)+
45012      3  HHH(7)*COSA*(SINB*C2A+SINA*CAPB))
45013       ENDIF
45014 C...Coupling to H+
45015 C...Define later
45016       IF(IMSS(4).GE.2) THEN
45017         PARU(168)=-SBMA-COS(2D0*BE)*SAPB/2D0/(1D0-XW)
45018       ELSE
45019         PARU(168)=1D0/HHH(1)*(HHH(1)*SINB**2*COSB*SINA-
45020      1 HHH(2)*COSB**2*SINB*COSA-HHH(3)*(SINB**3*COSA-COSB**3*SINA)+
45021      2 2D0*HHH(5)*SBMA-HHH(6)*SINB*(COSB*SAPB+SINA*C2B)-
45022      3 HHH(7)*COSB*(COSA*C2B-SINB*SAPB)-(HHH(5)-HHH(4))*SBMA)
45023       ENDIF
45024 C...Coupling to A
45025       IF(IMSS(4).GE.2) THEN
45026         PARU(177)=COS(2D0*BE)*COS(BE+AL)
45027       ELSE
45028         PARU(177)=-1D0/HHH(1)*(HHH(1)*SINB**2*COSB*COSA+
45029      1 HHH(2)*COSB**2*SINB*SINA+HHH(3)*(SINB**3*SINA+COSB**3*COSA)-
45030      2 2D0*HHH(5)*CBMA-HHH(6)*SINB*(COSB*CAPB+COSA*C2B)+
45031      3 HHH(7)*COSB*(SINB*CAPB+SINA*C2B))
45032       ENDIF
45033 C...Coupling to H+
45034       IF(IMSS(4).GE.2) THEN
45035         PARU(178)=PARU(177)
45036       ELSE
45037         PARU(178)=PARU(177)-(HHH(5)-HHH(4))/HHH(1)*CBMA
45038       ENDIF
45039 C...Thirdly, A
45040 C...Coupling to d-type quarks
45041       PARU(181)=TANB
45042 C...Coupling to u-type quarks
45043       PARU(182)=1D0/PARU(181)
45044 C...Coupling to leptons
45045       PARU(183)=PARU(181)
45046       PARU(184)=0D0
45047       PARU(185)=0D0
45048 C...Coupling to Z h
45049       PARU(186)=COS(BE-AL)
45050 C...Coupling to Z H
45051       PARU(187)=SIN(BE-AL)
45052       PARU(188)=0D0
45053       PARU(189)=0D0
45054       PARU(190)=0D0
45055  
45056 C...Finally: H+
45057 C...Coupling to W h
45058       PARU(195)=COS(BE-AL)
45059  
45060 C...Tell that all Higgs couplings have been set.
45061       MSTP(4)=1
45062  
45063 C...Set R-Violating couplings.
45064 C...Set lambda couplings to common value or "natural values".
45065       IF ((IMSS(51).NE.3).AND.(IMSS(51).NE.0)) THEN
45066         VIR3=1D0/(126D0)**3
45067         DO 200 IRK=1,3
45068           DO 190 IRI=1,3
45069             DO 180 IRJ=1,3
45070               IF (IRI.NE.IRJ) THEN
45071                 IF (IRI.LT.IRJ) THEN
45072                   RVLAM(IRI,IRJ,IRK)=RMSS(51)
45073                   IF (IMSS(51).EQ.2) RVLAM(IRI,IRJ,IRK)=RMSS(51)*
45074      &              SQRT(PMAS(9+2*IRI,1)*PMAS(9+2*IRJ,1)*
45075      &              PMAS(9+2*IRK,1)*VIR3)
45076                 ELSE
45077                   RVLAM(IRI,IRJ,IRK)=-RVLAM(IRJ,IRI,IRK)
45078                 ENDIF
45079               ELSE
45080                 RVLAM(IRI,IRJ,IRK)=0D0
45081               ENDIF
45082   180       CONTINUE
45083   190     CONTINUE
45084   200   CONTINUE
45085       ENDIF
45086 C...Set lambda' couplings to common value or "natural values".
45087       IF ((IMSS(52).NE.3).AND.(IMSS(52).NE.0)) THEN
45088         VIR3=1D0/(126D0)**3
45089         DO 230 IRI=1,3
45090           DO 220 IRJ=1,3
45091             DO 210 IRK=1,3
45092               RVLAMP(IRI,IRJ,IRK)=RMSS(52)
45093               IF (IMSS(52).EQ.2) RVLAMP(IRI,IRJ,IRK)=RMSS(52)*
45094      &          SQRT(PMAS(9+2*IRI,1)*0.5D0*(PMAS(2*IRJ,1)+
45095      &          PMAS(2*IRJ-1,1))*PMAS(2*IRK-1,1)*VIR3)
45096   210       CONTINUE
45097   220     CONTINUE
45098   230   CONTINUE
45099       ENDIF
45100 C...Set lambda'' couplings to common value or "natural values".
45101       IF ((IMSS(53).NE.3).AND.(IMSS(53).NE.0)) THEN
45102         VIR3=1D0/(126D0)**3
45103         DO 260 IRI=1,3
45104           DO 250 IRJ=1,3
45105             DO 240 IRK=1,3
45106               IF (IRJ.NE.IRK) THEN
45107                 IF (IRJ.LT.IRK) THEN
45108                   RVLAMB(IRI,IRJ,IRK)=RMSS(53)
45109                   IF (IMSS(53).EQ.2) RVLAMB(IRI,IRJ,IRK)=
45110      &              RMSS(53)*SQRT(PMAS(2*IRI,1)*PMAS(2*IRJ-1,1)*
45111      &              PMAS(2*IRK-1,1)*VIR3)
45112                 ELSE
45113                   RVLAMB(IRI,IRJ,IRK)=-RVLAMB(IRI,IRK,IRJ)
45114                 ENDIF
45115               ELSE
45116                 RVLAMB(IRI,IRJ,IRK) = 0D0
45117               ENDIF
45118   240       CONTINUE
45119   250     CONTINUE
45120   260   CONTINUE
45121       ENDIF
45122  
45123 C...Antisymmetrize couplings set by user
45124       IF (IMSS(51).EQ.3.OR.IMSS(53).EQ.3) THEN
45125         DO 290 IRI=1,3
45126           DO 280 IRJ=1,3
45127             DO 270 IRK=1,3
45128               IF (RVLAM(IRI,IRJ,IRK).NE.-RVLAM(IRJ,IRI,IRK)) THEN
45129                 RVLAM(IRJ,IRI,IRK)=-RVLAM(IRI,IRJ,IRK)
45130                 IF (IRI.EQ.IRJ) RVLAM(IRI,IRJ,IRK)=0D0
45131               ENDIF
45132               IF (RVLAMB(IRI,IRJ,IRK).NE.-RVLAMB(IRI,IRK,IRJ)) THEN
45133                 RVLAMB(IRI,IRK,IRJ)=-RVLAMB(IRI,IRJ,IRK)
45134                 IF (IRJ.EQ.IRK) RVLAMB(IRI,IRJ,IRK)=0D0
45135               ENDIF
45136   270       CONTINUE
45137   280     CONTINUE
45138   290   CONTINUE
45139       ENDIF
45140  
45141 C...Write spectrum to SLHA file
45142       IF (IMSS(23).NE.0) THEN
45143         IFAIL=0
45144         CALL PYSLHA(3,0,IFAIL)
45145       ENDIF
45146  
45147 C...Second part of routine: set decay modes and branching ratios.
45148  
45149 C...Allow chi10 -> gravitino + gamma or not.
45150       KC=PYCOMP(KSUSY1+39)
45151       IF( IMSS(11) .NE. 0 ) THEN
45152         PMAS(KC,1)=RMSS(21)/1D9
45153         PMAS(KC,2)=0D0
45154         IRPRTY=0
45155         WRITE(MSTU(11),*) ' ALLOWING DECAYS TO GRAVITINOS '
45156       ELSE IF (IMSS(51).GE.1.OR.IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
45157         IRPRTY=0
45158         IF (IMSS(51).GE.1) WRITE(MSTU(11),*)
45159      &       ' ALLOWING SUSY LLE DECAYS'
45160         IF (IMSS(52).GE.1) WRITE(MSTU(11),*)
45161      &       ' ALLOWING SUSY LQD DECAYS'
45162         IF (IMSS(53).GE.1) WRITE(MSTU(11),*)
45163      &       ' ALLOWING SUSY UDD DECAYS'
45164         IF (IMSS(53).GE.1.AND.IMSS(52).GE.1) WRITE(MSTU(11),*)
45165      &   ' --- Warning: R-Violating couplings possibly',
45166      &       ' incompatible with proton decay'
45167       ELSE
45168         PMAS(KC,1)=9999D0
45169         IRPRTY=1
45170       ENDIF
45171  
45172 C...Loop over sparticle and Higgs species.
45173       PMCHI1=PMAS(PYCOMP(KSUSY1+22),1)
45174 C...Find the LSP or NLSP for a gravitino LSP
45175       ILSP=0
45176       PMLSP=1D20
45177       DO 300 I=1,36
45178         KF=KFSUSY(I)
45179         IF(KF.EQ.1000039) GOTO 300
45180         KC=PYCOMP(KF)
45181         IF(PMAS(KC,1).LT.PMLSP) THEN
45182           ILSP=I
45183           PMLSP=PMAS(KC,1)
45184         ENDIF
45185   300 CONTINUE
45186       DO 370 I=1,50
45187         IF (I.GT.39.AND.IMSS(13).NE.1) GOTO 370
45188         KF=KFSUSY(I)
45189         IF (KF.EQ.0) GOTO 370
45190         KC=PYCOMP(KF)
45191         LKNT=0
45192  
45193 C...Check if there are any decays listed for this sparticle
45194 C...in a file
45195         IF (IMSS(22).NE.0.OR.MSTP(161).NE.0) THEN
45196           IFAIL=0
45197           CALL PYSLHA(2,KF,IFAIL)
45198           IF (IFAIL.EQ.0.OR.KF.EQ.6.OR.KF.EQ.24) GOTO 370
45199         ELSEIF (I.GE.37) THEN
45200           GOTO 370
45201         ENDIF
45202  
45203 C...Sfermion decays.
45204         IF(I.LE.24) THEN
45205 C...First check to see if sneutrino is lighter than chi10.
45206           IF((I.EQ.15.OR.I.EQ.19.OR.I.EQ.23).AND.
45207      &    PMAS(KC,1).LT.PMCHI1) THEN
45208           ELSE
45209             CALL PYSFDC(KF,XLAM,IDLAM,LKNT)
45210           ENDIF
45211  
45212 C...Gluino decays.
45213         ELSEIF(I.EQ.25) THEN
45214           CALL PYGLUI(KF,XLAM,IDLAM,LKNT)
45215           IF(I.EQ.ILSP.AND.IRPRTY.EQ.1) LKNT=0
45216  
45217 C...Neutralino decays.
45218         ELSEIF(I.GE.26.AND.I.LE.29) THEN
45219           CALL PYNJDC(KF,XLAM,IDLAM,LKNT)
45220 C...chi10 stable or chi10 -> gravitino + gamma.
45221           IF(I.EQ.26.AND.IRPRTY.EQ.1) THEN
45222             PMAS(KC,2)=1D-6
45223             MDCY(KC,1)=0
45224             MWID(KC)=0
45225           ENDIF
45226  
45227 C...Chargino decays.
45228         ELSEIF(I.GE.30.AND.I.LE.31) THEN
45229           CALL PYCJDC(KF,XLAM,IDLAM,LKNT)
45230  
45231 C...Gravitino is stable.
45232         ELSEIF(I.EQ.32) THEN
45233           MDCY(KC,1)=0
45234           MWID(KC)=0
45235  
45236 C...Higgs decays.
45237         ELSEIF(I.GE.33.AND.I.LE.36) THEN
45238 C...Calculate decays to non-SUSY particles.
45239           CALL PYWIDT(KF,PMAS(KC,1)**2,WDTP,WDTE)
45240           LKNT=0
45241           DO 310 I1=0,100
45242             XLAM(I1)=0D0
45243   310     CONTINUE
45244           DO 330 I1=1,MDCY(KC,3)
45245             K1=MDCY(KC,2)+I1-1
45246             IF(IABS(KFDP(K1,1)).GT.KSUSY1.OR.
45247      &      IABS(KFDP(K1,2)).GT.KSUSY1) GOTO 330
45248             XLAM(I1)=WDTP(I1)
45249             XLAM(0)=XLAM(0)+XLAM(I1)
45250             DO 320 J1=1,3
45251               IDLAM(I1,J1)=KFDP(K1,J1)
45252   320       CONTINUE
45253             LKNT=LKNT+1
45254   330     CONTINUE
45255 C...Add the decays to SUSY particles.
45256           CALL PYHEXT(KF,XLAM,IDLAM,LKNT)
45257         ENDIF
45258 C...Zero the branching ratios for use in loop mode
45259 C...thanks to K. Matchev (FNAL)
45260         DO 340 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
45261           BRAT(IDC)=0D0
45262   340   CONTINUE
45263  
45264 C...Set stable particles.
45265         IF(LKNT.EQ.0) THEN
45266           MDCY(KC,1)=0
45267           MWID(KC)=0
45268           PMAS(KC,2)=1D-6
45269           PMAS(KC,3)=1D-5
45270           PMAS(KC,4)=0D0
45271  
45272 C...Store branching ratios in the standard tables.
45273         ELSE
45274           IDC=MDCY(KC,2)+MDCY(KC,3)-1
45275           DELM=1D6
45276           DO 360 IL=1,LKNT
45277             IDCSV=IDC
45278   350       IDC=IDC+1
45279             BRAT(IDC)=0D0
45280             IF(IDC.EQ.MDCY(KC,2)+MDCY(KC,3)) IDC=MDCY(KC,2)
45281             IF(IDLAM(IL,1).EQ.KFDP(IDC,1).AND.IDLAM(IL,2).EQ.
45282      &      KFDP(IDC,2).AND.IDLAM(IL,3).EQ.KFDP(IDC,3)) THEN
45283               BRAT(IDC)=XLAM(IL)/XLAM(0)
45284               XMDIF=PMAS(KC,1)
45285               IF(MDME(IDC,1).GE.1) THEN
45286                 XMDIF=XMDIF-PMAS(PYCOMP(KFDP(IDC,1)),1)-
45287      &          PMAS(PYCOMP(KFDP(IDC,2)),1)
45288                 IF(KFDP(IDC,3).NE.0) XMDIF=XMDIF-
45289      &          PMAS(PYCOMP(KFDP(IDC,3)),1)
45290               ENDIF
45291               IF(I.LE.32) THEN
45292                 IF(XMDIF.GE.0D0) THEN
45293                   DELM=MIN(DELM,XMDIF)
45294                 ELSE
45295                   WRITE(MSTU(11),*) ' ERROR WITH DELM ',DELM,XMDIF
45296                   WRITE(MSTU(11),*) ' KF = ',KF
45297                   WRITE(MSTU(11),*) ' KF(decay) = ',(KFDP(IDC,J),J=1,3)
45298                 ENDIF
45299               ENDIF
45300               GOTO 360
45301             ELSEIF(IDC.EQ.IDCSV) THEN
45302               WRITE(MSTU(11),*) ' Error in PYMSIN: SUSY decay ',
45303      &        'channel not recognized:'
45304               WRITE(MSTU(11),*) KF,' -> ',(IDLAM(IL,J),J=1,3)
45305               GOTO 360
45306             ELSE
45307               GOTO 350
45308             ENDIF
45309   360     CONTINUE
45310  
45311 C...Store width, cutoff and lifetime.
45312           PMAS(KC,2)=XLAM(0)
45313           IF(PMAS(KC,2).LT.0.1D0*DELM) THEN
45314             PMAS(KC,3)=PMAS(KC,2)*10D0
45315           ELSE
45316             PMAS(KC,3)=0.95D0*DELM
45317           ENDIF
45318           IF(PMAS(KC,2).NE.0D0) THEN
45319             PMAS(KC,4)=PARU(3)/PMAS(KC,2)*1D-12
45320           ENDIF
45321 C...Write decays to SLHA file
45322           IF (IMSS(24).NE.0) THEN
45323             IFAIL=0
45324             CALL PYSLHA(4,KF,IFAIL)
45325           ENDIF
45326  
45327         ENDIF
45328   370 CONTINUE
45329  
45330       RETURN
45331       END
45332 C*********************************************************************
45333  
45334 C...PYSLHA
45335 C...Read/write spectrum or decay data from SLHA standard file(s).
45336 C...P. Skands
45337  
45338 C...MUPDA=0 : READ QNUMBERS/PARTICLE ON LUN=IMSS(21)
45339 C...MUPDA=1 : READ SLHA SPECTRUM ON LUN=IMSS(21)
45340 C...MUPDA=2 : LOOK FOR DECAY TABLE FOR KF=KFORIG ON LUN=IMSS(22)
45341 C...          (KFORIG=0 : read all decay tables)
45342 C...MUPDA=3 : WRITE SPECTRUM ON LUN=IMSS(23)
45343 C...(MUPDA=4 : WRITE DECAY TABLE FOR KF=KFORIG ON LUN=IMSS(24))
45344 C...MUPDA=5 : READ MASS FOR KF=KFORIG ONLY
45345 C...          (KFORIG=0 : read all MASS entries)
45346  
45347       SUBROUTINE PYSLHA(MUPDA,KFORIG,IRETRN)
45348  
45349 C...Double precision and integer declarations.
45350       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
45351       IMPLICIT INTEGER(I-N)
45352       INTEGER PYK,PYCHGE,PYCOMP
45353       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
45354      &KEXCIT=4000000,KDIMEN=5000000)
45355 C...Commonblocks.
45356       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
45357       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
45358       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
45359       COMMON/PYDAT4/CHAF(500,2)
45360       CHARACTER CHAF*16
45361       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
45362       CHARACTER*40 ISAVER,VISAJE
45363       COMMON/PYINT4/MWID(500),WIDS(500,5)
45364       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYPARS/,/PYINT4/
45365 C...SUSY blocks
45366       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
45367       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
45368      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
45369       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
45370       SAVE /PYMSSM/,/PYSSMT/,/PYMSRV/
45371  
45372 C...Local arrays, character variables and data.
45373       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
45374      &     AU(3,3),AD(3,3),AE(3,3)
45375       COMMON/PYLH3C/CPRO(2),CVER(2)
45376 C...The common block of new states (QNUMBERS / PARTICLE)
45377       COMMON/PYQNUM/NQNUM,NQDUM,KQNUM(500,0:9)
45378 C...- NQNUM : Number of QNUMBERS blocks that have been read in
45379 C...- KQNUM(I,0) : KF of new state
45380 C...- KQNUM(I,1) : 3 times electric charge
45381 C...- KQNUM(I,2) : Number of spin states: (2S + 1)
45382 C...- KQNUM(I,3) : Colour rep  (1: singlet, 3: triplet, 8: octet)
45383 C...- KQNUM(I,4) : Particle/Antiparticle distinction (0=own anti)
45384 C...- KQNUM(I,5:9) : space available for further quantum numbers
45385       DIMENSION MMOD(100),MSPC(100),KFDEC(100)
45386       SAVE /PYLH3P/,/PYLH3C/,/PYQNUM/,MMOD,MSPC,KFDEC
45387 C...MMOD: flags to set for each block read in.
45388 C... 1: MODSEL     2: MINPAR     3: EXTPAR     4: SMINPUTS
45389 C...MSPC: Flags to set for each block read in.
45390 C... 1: MASS       2: NMIX       3: UMIX       4: VMIX       5: SBOTMIX
45391 C... 6: STOPMIX    7: STAUMIX    8: HMIX       9: GAUGE     10: AU
45392 C...11: AD        12: AE        13: YU        14: YD        15: YE
45393 C...16: SPINFO    17: ALPHA     18: MSOFT     19: QNUMBERS
45394       CHARACTER CPRO*12,CVER*12,CHNLIN*6
45395       CHARACTER DOC*11, CHDUM*120, CHBLCK*60
45396       CHARACTER CHINL*120,CHKF*9,CHTMP*16
45397       INTEGER VERBOS
45398       SAVE VERBOS
45399 C...Date of last Change
45400       PARAMETER (DOC='23 Jan 2009')
45401 C...Local arrays and initial values
45402       DIMENSION IDC(5),KFSUSY(50)
45403       SAVE KFSUSY
45404       DATA NQNUM /0/
45405       DATA NDECAY /0/
45406       DATA VERBOS /1/
45407       DATA NHELLO /0/
45408       DATA MLHEF /0/
45409       DATA MLHEFD /0/
45410       DATA KFSUSY/
45411      &1000001,1000002,1000003,1000004,1000005,1000006,
45412      &2000001,2000002,2000003,2000004,2000005,2000006,
45413      &1000011,1000012,1000013,1000014,1000015,1000016,
45414      &2000011,2000012,2000013,2000014,2000015,2000016,
45415      &1000021,1000022,1000023,1000025,1000035,1000024,
45416      &1000037,1000039,     25,     35,     36,     37,
45417      &      6,     24,     45,     46,1000045, 9*0/
45418       DATA KFDEC/100*0/
45419       RMFUN(IP)=PMAS(PYCOMP(IP),1)
45420       
45421 C...Shorthand for spectrum and decay table unit numbers
45422       IMSS21=IMSS(21)
45423       IMSS22=IMSS(22)
45424  
45425 C...Default for LHEF input: read header information
45426       IF (IMSS21.EQ.0.AND.MSTP(161).NE.0) IMSS21=MSTP(161)
45427       IF (IMSS22.EQ.0.AND.MSTP(161).NE.0) IMSS22=MSTP(161)
45428       IF (IMSS21.EQ.MSTP(161)) MLHEF=1
45429       IF (IMSS22.EQ.MSTP(161)) MLHEFD=1
45430  
45431 C...Hello World
45432       IF (NHELLO.EQ.0) THEN
45433         IF ((MLHEF.NE.1.AND.MLHEFD.NE.1).OR.(IMSS(1).NE.0)) THEN
45434           WRITE(MSTU(11),5000) DOC
45435           NHELLO=1
45436         ENDIF
45437       ENDIF
45438  
45439 C...SLHA file assumed opened by user on unit LFN, stored in IMSS(20
45440 C...+MUPDA).
45441       LFN=IMSS21
45442       IF (MUPDA.EQ.2) LFN=IMSS22
45443       IF (MUPDA.EQ.3) LFN=IMSS(23)
45444       IF (MUPDA.EQ.4) LFN=IMSS(24)
45445 C...Flag that we have not yet found whatever we were asked to find.
45446       IRETRN=1
45447  
45448 C...STOP IF LFN IS ZERO (i.e. if no LFN was given).
45449       IF (LFN.EQ.0) THEN
45450         WRITE(MSTU(11),*) '* (PYSLHA:) No valid unit given in IMSS'
45451         GOTO 9999
45452       ENDIF
45453  
45454 C...If reading LHEF header, start by rewinding file
45455       IF (MLHEF.EQ.1.OR.MLHEFD.EQ.1) REWIND(LFN)
45456  
45457 C...If told to read spectrum, first zero all previous information.
45458       IF (MUPDA.EQ.1) THEN
45459 C...Zero all block read flags
45460         DO 100 M=1,100
45461           MMOD(M)=0
45462           MSPC(M)=0
45463   100   CONTINUE
45464 C...Zero all (MSSM) masses, widths, and lifetimes in PYTHIA
45465         DO 110 ISUSY=1,36
45466           KC=PYCOMP(KFSUSY(ISUSY))
45467           PMAS(KC,1)=0D0
45468   110   CONTINUE
45469 C...Zero all (3rd gen sfermion + gaugino/higgsino) mixing matrices.
45470         DO 130 J=1,4
45471           SFMIX(5,J) =0D0
45472           SFMIX(6,J) =0D0
45473           SFMIX(15,J)=0D0
45474           DO 120 L=1,4
45475             ZMIX(L,J) =0D0
45476             ZMIXI(L,J)=0D0
45477             IF (J.LE.2.AND.L.LE.2) THEN
45478               UMIX(L,J) =0D0
45479               UMIXI(L,J)=0D0
45480               VMIX(L,J) =0D0
45481               VMIXI(L,J)=0D0
45482             ENDIF
45483   120     CONTINUE
45484 C...Zero signed masses.
45485           SMZ(J)=0D0
45486           IF (J.LE.2) SMW(J)=0D0
45487   130   CONTINUE
45488  
45489 C...If reading decays, reset PYTHIA decay counters.
45490       ELSEIF (MUPDA.EQ.2) THEN
45491 C...Check if DECAY for this KF already read
45492         IF (KFORIG.NE.0) THEN
45493           DO 140 IDEC=1,NDECAY
45494             IF (KFORIG.EQ.KFDEC(IDEC)) THEN
45495               IRETRN=0
45496               RETURN
45497             ENDIF
45498   140     CONTINUE
45499         ENDIF
45500         KCC=100
45501         NDC=0
45502         BRSUM=0D0
45503         DO 150 KC=1,MSTU(6)
45504           IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
45505           NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
45506   150   CONTINUE
45507       ELSEIF (MUPDA.EQ.5) THEN
45508 C...Zero block read flags
45509         DO 160 M=1,100
45510           MSPC(M)=0
45511   160   CONTINUE
45512       ENDIF
45513  
45514 C............READ
45515 C...(QNUMBERS, spectrum, or decays of KF=KFORIG or MASS of KF=KFORIG)
45516       IF(MUPDA.EQ.0.OR.MUPDA.EQ.1.OR.MUPDA.EQ.2.OR.MUPDA.EQ.5) THEN
45517 C...Initialize program and version strings
45518         IF(MUPDA.EQ.1.OR.MUPDA.EQ.2) THEN
45519         CPRO(MUPDA)=' '
45520         CVER(MUPDA)=' '
45521         ENDIF
45522  
45523 C...Initialize read loop
45524         MERR=0
45525         NLINE=0
45526         CHBLCK=' '
45527 C...READ NEW LINE INTO CHINL. GOTO 300 AT END-OF-FILE.
45528   170   CHINL=' '
45529         READ(LFN,'(A120)',END=400) CHINL
45530 C...Count which line number we're at.
45531         NLINE=NLINE+1
45532         WRITE(CHNLIN,'(I6)') NLINE
45533  
45534 C...Skip comment and empty lines without processing.
45535         IF (CHINL(1:1).EQ.'#'.OR.CHINL.EQ.' ') GOTO 170
45536  
45537 C...We assume all upper case below. Rewrite CHINL to all upper case.
45538         INL=0
45539         IGOOD=0
45540   180   INL=INL+1
45541         IF (CHINL(INL:INL).NE.'#') THEN
45542           DO 190 ICH=97,122
45543             IF (CHAR(ICH).EQ.CHINL(INL:INL)) CHINL(INL:INL)=CHAR(ICH-32)
45544   190     CONTINUE
45545 C...Extra safety. Chek for sensible input on line
45546           IF (IGOOD.EQ.0) THEN
45547             DO 200 ICH=48,90
45548               IF (CHAR(ICH).EQ.CHINL(INL:INL)) IGOOD=1
45549   200       CONTINUE
45550           ENDIF
45551           IF (INL.LT.120) GOTO 180
45552         ENDIF
45553         IF (IGOOD.EQ.0) GOTO 170
45554  
45555 C...Exit when </slha>, <init>, or first <event> tag reached in LHEF file
45556         DO 210 I1=1,10          
45557           IF (CHINL(I1:I1+5).EQ.'</SLHA'
45558      &        .OR.CHINL(I1:I1+5).EQ.'<EVENT' 
45559      &        .OR.CHINL(I1:I1+4).EQ.'<INIT') THEN
45560             REWIND(LFN)
45561             GOTO 400
45562           ENDIF
45563   210   CONTINUE
45564  
45565 C...Check for BLOCK begin statement (spectrum).
45566         IF (CHINL(1:5).EQ.'BLOCK') THEN
45567           MERR=0
45568           READ(CHINL,'(A6,A)',ERR=580) CHDUM,CHBLCK
45569 C...Check if another of this type of block was already read.
45570 C...(logarithmic interpolation not yet implemented, so duplicates always
45571 C...give errors)
45572           IF (CHBLCK(1:6).EQ.'MODSEL'.AND.MMOD(1).NE.0) MERR=7
45573           IF (CHBLCK(1:6).EQ.'MINPAR'.AND.MMOD(2).NE.0) MERR=7
45574           IF (CHBLCK(1:6).EQ.'EXTPAR'.AND.MMOD(3).NE.0) MERR=7
45575           IF (CHBLCK(1:8).EQ.'SMINPUTS'.AND.MMOD(4).NE.0) MERR=7
45576           IF (CHBLCK(1:4).EQ.'MASS'.AND.MSPC(1).NE.0) MERR=7
45577           IF (CHBLCK(1:4).EQ.'NMIX'.AND.MSPC(2).NE.0) MERR=7
45578           IF (CHBLCK(1:4).EQ.'UMIX'.AND.MSPC(3).NE.0) MERR=7
45579           IF (CHBLCK(1:4).EQ.'VMIX'.AND.MSPC(4).NE.0) MERR=7
45580           IF (CHBLCK(1:7).EQ.'SBOTMIX'.AND.MSPC(5).NE.0) MERR=7
45581           IF (CHBLCK(1:7).EQ.'STOPMIX'.AND.MSPC(6).NE.0) MERR=7
45582           IF (CHBLCK(1:7).EQ.'STAUMIX'.AND.MSPC(7).NE.0) MERR=7
45583           IF (CHBLCK(1:4).EQ.'HMIX'.AND.MSPC(8).NE.0) MERR=7
45584           IF (CHBLCK(1:5).EQ.'ALPHA'.AND.MSPC(17).NE.0) MERR=7
45585           IF (CHBLCK(1:5).EQ.'AU'.AND.MSPC(10).NE.0) MERR=7
45586           IF (CHBLCK(1:5).EQ.'AD'.AND.MSPC(11).NE.0) MERR=7
45587           IF (CHBLCK(1:5).EQ.'AE'.AND.MSPC(12).NE.0) MERR=7
45588           IF (CHBLCK(1:5).EQ.'MSOFT'.AND.MSPC(18).NE.0) MERR=7
45589 C...Check for new particles
45590           IF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.CHBLCK(1:8).EQ.'PARTICLE')
45591      &        THEN
45592             MSPC(19)=MSPC(19)+1
45593 C...Read PDG code
45594             READ(CHBLCK(9:60),*) KFQ
45595  
45596             DO 220 MQ=1,NQNUM
45597               IF (KQNUM(MQ,0).EQ.KFQ) THEN
45598                 MERR=17
45599                 GOTO 380
45600               ENDIF
45601   220       CONTINUE
45602             IF (NHELLO.EQ.0) THEN
45603               WRITE(MSTU(11),5000) DOC
45604               NHELLO=1
45605             ENDIF
45606             WRITE(MSTU(11),'(A,I9,A,F12.3)')
45607      &           ' * (PYSLHA:) Reading  '//CHBLCK(1:8)//
45608      &           '    for KF =',KFQ
45609             NQNUM=NQNUM+1
45610             KQNUM(NQNUM,0)=KFQ
45611             MSPC(19)=MSPC(19)+1
45612             KCQ=PYCOMP(KFQ)
45613 C...Only read in new codes (also OK to overwrite if KF > 3000000)
45614             IF (KCQ.EQ.0.OR.IABS(KFQ).GE.3000000) THEN
45615               IF (KCQ.EQ.0) THEN
45616                 DO 230 KCT=100,MSTU(6)
45617                   IF(KCHG(KCT,4).GT.100) KCQ=KCT
45618   230           CONTINUE
45619                 KCQ=KCQ+1
45620               ENDIF
45621               KCC=KCQ
45622               KCHG(KCQ,4)=KFQ
45623 C...First write PDG code as name
45624               WRITE(CHTMP,*) KFQ
45625               WRITE(CHTMP,'(A)') CHTMP(2:10)
45626 C...Then look for real name
45627               IBEG=9
45628   240         IBEG=IBEG+1
45629               IF (CHBLCK(IBEG:IBEG).NE.'#'.AND.IBEG.LT.59) GOTO 240
45630   250         IBEG=IBEG+1
45631               IF (CHBLCK(IBEG:IBEG).EQ.' '.AND.IBEG.LT.59) GOTO 250
45632               IEND=IBEG-1
45633   260         IEND=IEND+1
45634               IF (CHBLCK(IEND+1:IEND+1).NE.' '.AND.IEND.LT.59) GOTO 260
45635               IF (IEND.LT.59) THEN
45636                 READ(CHBLCK(IBEG:IEND),'(A)',ERR=270) CHDUM
45637                 IF (CHDUM.NE.' ') CHTMP=CHDUM
45638               ENDIF
45639   270         READ(CHTMP,'(A)') CHAF(KCQ,1)
45640               MSTU(20)=0
45641 C...Set stable for now
45642               PMAS(KCQ,2)=1D-6
45643               MWID(KCQ)=0
45644               MDCY(KCQ,1)=0
45645               MDCY(KCQ,2)=0
45646               MDCY(KCQ,3)=0
45647             ELSE
45648               WRITE(MSTU(11),*)
45649      &           '* (PYSLHA:) KF =',KFQ,' already exists: ',
45650      &             CHAF(KCQ,1), '. Entry ignored.'
45651               MERR=7
45652             ENDIF
45653           ENDIF
45654 C...Finalize this line and read next.
45655           GOTO 380
45656 C...Check for DECAY begin statement (decays).
45657         ELSEIF (CHINL(1:3).EQ.'DEC') THEN
45658           MERR=0
45659           BRSUM=0D0
45660           CHBLCK='DECAY'
45661 C...Read KF code and WIDTH
45662           MPSIGN=1
45663           READ(CHINL(7:INL),*,ERR=590) KF, WIDTH
45664           IF (KF.LE.0) THEN
45665             KF=-KF
45666             MPSIGN=-1
45667           ENDIF
45668 C...If this is not the KF we're looking for...
45669           IF ((KFORIG.NE.0.AND.KF.NE.KFORIG).OR.MUPDA.NE.2) THEN
45670 C...Set block skip flag and read next line.
45671             MERR=16
45672             GOTO 380
45673           ELSE
45674 C...Check whether decay table for this particle already read in
45675             DO 280 IDECAY=1,NDECAY
45676               IF (KFDEC(IDECAY).EQ.KF) THEN
45677                 WRITE(MSTU(11),'(A,A,I9,A,A6,A)')
45678      &               ' * (PYSLHA:) Ignoring DECAY table ',
45679      &               'for KF =',KF,' on line ',CHNLIN,
45680      &               ' (duplicate)'
45681                 MERR=16
45682                 GOTO 380
45683               ENDIF
45684   280       CONTINUE
45685           ENDIF
45686  
45687 C...Determine PYTHIA KC code of particle
45688           KCREP=0
45689           IF(KF.LE.100) THEN
45690             KCREP=KF
45691           ELSE
45692             DO 290 KCR=101,KCC
45693               IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
45694   290       CONTINUE
45695           ENDIF
45696           KC=KCREP
45697           IF (KCREP.NE.0) THEN
45698 C...Particle is already known. Do not overwrite low-mass SM particles, 
45699 C...since this could give problems at hadronization / hadron decay stage.
45700             IF (IABS(KF).LT.1000000.AND.PMAS(KC,1).LT.20D0) THEN
45701 C...Set block skip flag and read next line
45702               WRITE(MSTU(11),'(A,I9,A,F12.3)')
45703      &             ' * (PYSLHA:) Ignoring DECAY table for KF =',
45704      &             KF, ' (SLHA read-in not allowed)'
45705               MERR=16
45706               GOTO 380
45707             ENDIF
45708           ELSE
45709 C...  Add new particle. Actually, this should not happen.
45710 C...  New particles should be added already when reading the spectrum
45711 C...  information, so go under previously stable category.
45712             KCC=KCC+1
45713             KC=KCC
45714           ENDIF
45715  
45716           IF (WIDTH.LE.0D0) THEN
45717 C...Stable (i.e. LSP)
45718             WRITE(MSTU(11),'(A,I9,A,A)')
45719      &           '* (PYSLHA:) Reading  SLHA stable particle KF =',
45720      &              KF,', ',CHAF(KCREP,1)(1:16)
45721             IF (WIDTH.LT.0D0) THEN
45722               CALL PYERRM(19,'(PYSLHA:) Negative width forced to'//
45723      &             ' zero !')
45724               WIDTH=0D0
45725             ENDIF
45726             PMAS(KC,2)=1D-6
45727             MWID(KC)=0
45728             MDCY(KC,1)=0
45729 C...Ignore any decay lines that may be present for this KF
45730             MERR=16
45731             MDCY(KC,2)=0
45732             MDCY(KC,3)=0
45733 C...Return ok
45734             IRETRN=0
45735           ENDIF
45736 C...Finalize and start reading in decay modes.
45737           GOTO 380
45738         ELSEIF (MOD(MERR,10).GE.6) THEN
45739 C...If ignore block flag set, skip directly to next line.
45740           GOTO 170
45741         ENDIF
45742  
45743 C...READ SPECTRUM
45744         IF (MUPDA.EQ.0.AND.MERR.EQ.0) THEN
45745           IF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.CHBLCK(1:8).EQ.'PARTICLE')
45746      &        THEN
45747             READ(CHINL,*) INDX, IVAL
45748             IF (INDX.GE.1.AND.INDX.LE.9) KQNUM(NQNUM,INDX)=IVAL
45749             IF (INDX.EQ.1) KCHG(KCQ,1)=IVAL
45750             IF (INDX.EQ.3) KCHG(KCQ,2)=0
45751             IF (INDX.EQ.3.AND.IVAL.EQ.3) KCHG(KCQ,2)=1
45752             IF (INDX.EQ.3.AND.IVAL.EQ.-3) KCHG(KCQ,2)=-1
45753             IF (INDX.EQ.3.AND.IVAL.EQ.8) KCHG(KCQ,2)=2
45754             IF (INDX.EQ.4) THEN
45755               KCHG(KCQ,3)=IVAL
45756               IF (IVAL.EQ.1) THEN
45757                 CHTMP=CHAF(KCQ,1)
45758                 IF (CHTMP.EQ.' ') THEN
45759                   WRITE(CHAF(KCQ,1),*) KCHG(KCQ,4)
45760                   WRITE(CHAF(KCQ,2),*) -KCHG(KCQ,4)
45761                 ELSE
45762                   ILAST=17
45763   300             ILAST=ILAST-1
45764                   IF (CHTMP(ILAST:ILAST).EQ.' ') GOTO 300
45765                   IF (CHTMP(ILAST:ILAST).EQ.'+') THEN
45766                     CHTMP(ILAST:ILAST)='-'
45767                   ELSE
45768                     CHTMP(ILAST+1:MIN(16,ILAST+4))='bar'
45769                   ENDIF
45770                   CHAF(KCQ,2)=CHTMP
45771                 ENDIF
45772               ENDIF
45773             ENDIF
45774           ELSE
45775             MERR=8
45776           ENDIF
45777         ELSEIF ((MUPDA.EQ.1.OR.MUPDA.EQ.5).AND.MERR.EQ.0) THEN
45778 C...MASS: Mass spectrum
45779           IF (CHBLCK(1:4).EQ.'MASS') THEN
45780             READ(CHINL,*) KF, VAL
45781             MERR=1
45782             KC=0
45783             IF (MUPDA.EQ.1.OR.KF.EQ.KFORIG.OR.KFORIG.EQ.0) THEN
45784 C...Read in masses for almost anything
45785               MERR=0
45786               KC=PYCOMP(KF)
45787               IF (KC.NE.0) THEN
45788 C...Don't read in masses for special code particles
45789                 IF (IABS(KF).GE.80.AND.IABS(KF).LT.100) THEN
45790                   WRITE(MSTU(11),'(A,I9,A,F12.3)')
45791      &                 ' * (PYSLHA:) Ignoring MASS  entry for KF =',
45792      &                 KF, ' (KF reserved by PYTHIA)' 
45793                   GOTO 170
45794                 ENDIF
45795 C...Be careful with light SM particles / hadrons
45796                 IF (PMAS(KC,1).LE.20D0) THEN
45797                   IF (IABS(KF).LE.22) THEN
45798                     WRITE(MSTU(11),'(A,I9,A,F12.3)')
45799      &                   ' * (PYSLHA:) Ignoring MASS  entry for KF =',
45800      &                   KF, ' (SLHA read-in not allowed)'
45801 
45802                     GOTO 170
45803                   ELSEIF (IABS(KF).GE.100.AND.IABS(KF).LT.1000000) THEN
45804                     WRITE(MSTU(11),'(A,I9,A,F12.3)')
45805      &                   ' * (PYSLHA:) Ignoring MASS  entry for KF =',
45806      &                   KF, ' (SLHA read-in not allowed)'
45807                     GOTO 170
45808                   ENDIF
45809                 ENDIF
45810                 MSPC(1)=MSPC(1)+1
45811                 PMAS(KC,1) = ABS(VAL)
45812                 IF (MUPDA.EQ.5.AND.IMSS(1).EQ.0) THEN
45813                   WRITE(MSTU(11),'(A,I9,A,F12.3)')
45814      &                 ' * (PYSLHA:) Reading  MASS  entry for KF =',
45815      &                 KF, ', pole mass =', VAL
45816                   IRETRN=0
45817                 ENDIF
45818 C...Check Z, W and top masses
45819                 IF (KF.EQ.23.AND.ABS(PMAS(PYCOMP(23),1)-91.2D0).GT.1D0)
45820      &               THEN
45821                   WRITE(CHTMP,*) PMAS(PYCOMP(23),1)
45822                   CALL PYERRM(9,'(PYSLHA:) Note Z boson mass, M ='
45823      &                 //CHTMP)
45824                 ENDIF
45825                 IF (KF.EQ.24.AND.ABS(PMAS(PYCOMP(24),1)-80.4D0).GT.1D0)
45826      &               THEN
45827                   WRITE(CHTMP,*) PMAS(PYCOMP(23),1)
45828                   CALL PYERRM(9,'(PYSLHA:) Note W boson mass, M ='
45829      &                 //CHTMP)
45830                 ENDIF
45831                 IF (KF.EQ.6.AND.ABS(PMAS(PYCOMP(6),1)-175D0).GT.25D0)
45832      &               THEN
45833                   WRITE(CHTMP,*) PMAS(PYCOMP(6),1)
45834                   CALL PYERRM(9,'(PYSLHA:) Note top quark mass, M ='
45835      &                 //CHTMP//'GeV')
45836                 ENDIF
45837 C...  Signed masses
45838                 IF (KF.EQ.1000021.AND.MSPC(18).EQ.0) RMSS(3)=VAL
45839                 IF (KF.EQ.1000022) SMZ(1)=VAL
45840                 IF (KF.EQ.1000023) SMZ(2)=VAL
45841                 IF (KF.EQ.1000025) SMZ(3)=VAL
45842                 IF (KF.EQ.1000035) SMZ(4)=VAL
45843                 IF (KF.EQ.1000024) SMW(1)=VAL
45844                 IF (KF.EQ.1000037) SMW(2)=VAL
45845               ENDIF
45846             ELSEIF (MUPDA.EQ.5) THEN
45847               MERR=0
45848             ENDIF
45849 C...  MODSEL: Model selection and global switches
45850           ELSEIF (CHBLCK(1:6).EQ.'MODSEL') THEN
45851             READ(CHINL,*) INDX, IVAL
45852             IF (INDX.LE.200.AND.INDX.GT.0) THEN
45853               IF (IMSS(1).EQ.0) IMSS(1)=11
45854               MODSEL(INDX)=IVAL
45855               MMOD(1)=MMOD(1)+1
45856               IF (INDX.EQ.3.AND.IVAL.EQ.1.AND.PYCOMP(1000045).EQ.0) THEN
45857 C...  Switch on NMSSM
45858                 WRITE(MSTU(11),*) '* (PYSLHA:) switching on NMSSM'
45859                 IMSS(13)=MAX(1,IMSS(13))
45860 C...  Add NMSSM states if not already done
45861  
45862                 KFN=25
45863                 KCN=KFN
45864                 CHAF(KCN,1)='h_10'
45865                 CHAF(KCN,2)=' '
45866  
45867                 KFN=35
45868                 KCN=KFN
45869                 CHAF(KCN,1)='h_20'
45870                 CHAF(KCN,2)=' '
45871  
45872                 KFN=45
45873                 KCN=KFN
45874                 CHAF(KCN,1)='h_30'
45875                 CHAF(KCN,2)=' '
45876  
45877                 KFN=36
45878                 KCN=KFN
45879                 CHAF(KCN,1)='A_10'
45880                 CHAF(KCN,2)=' '
45881  
45882                 KFN=46
45883                 KCN=KFN
45884                 CHAF(KCN,1)='A_20'
45885                 CHAF(KCN,2)=' '
45886  
45887                 KFN=1000045
45888                 KCN=PYCOMP(KFN)
45889                 IF (KCN.EQ.0) THEN
45890                   DO 310 KCT=100,MSTU(6)
45891                     IF(KCHG(KCT,4).GT.100) KCN=KCT
45892   310             CONTINUE
45893                   KCN=KCN+1
45894                   KCHG(KCN,4)=KFN
45895                   MSTU(20)=0
45896                 ENDIF
45897 C...  Set stable for now
45898                 PMAS(KCN,2)=1D-6
45899                 MWID(KCN)=0
45900                 MDCY(KCN,1)=0
45901                 MDCY(KCN,2)=0
45902                 MDCY(KCN,3)=0
45903                 CHAF(KCN,1)='~chi_50'
45904                 CHAF(KCN,2)=' '
45905               ENDIF
45906             ELSE
45907               MERR=1
45908             ENDIF
45909           ELSEIF (MUPDA.EQ.5) THEN
45910 C...If MUPDA = 5, skip all except MASS, return if MODSEL
45911             MERR=8
45912           ELSEIF (CHBLCK(1:8).EQ.'QNUMBERS'.OR.
45913      &          CHBLCK(1:8).EQ.'PARTICLE') THEN
45914 C...Don't print a warning for QNUMBERS when reading spectrum
45915             MERR=8
45916 C...MINPAR: Minimal model parameters
45917           ELSEIF (CHBLCK(1:6).EQ.'MINPAR') THEN
45918             READ(CHINL,*) INDX, VAL
45919             IF (INDX.LE.100.AND.INDX.GT.0) THEN
45920               PARMIN(INDX)=VAL
45921               MMOD(2)=MMOD(2)+1
45922             ELSE
45923               MERR=1
45924             ENDIF
45925             IF (MMOD(3).NE.0) THEN
45926               WRITE(MSTU(11),*)
45927      &             '* (PYSLHA:) MINPAR should come before EXTPAR !'
45928               MERR=1
45929             ENDIF
45930 C...tan(beta)
45931             IF (INDX.EQ.3) RMSS(5)=VAL
45932 C...EXTPAR: non-minimal model parameters.
45933           ELSEIF (CHBLCK(1:6).EQ.'EXTPAR') THEN
45934             IF (MMOD(1).NE.0) THEN
45935               READ(CHINL,*) INDX, VAL
45936               IF (INDX.LE.200.AND.INDX.GT.0) THEN
45937                 PAREXT(INDX)=VAL
45938                 MMOD(3)=MMOD(3)+1
45939               ELSE
45940                 MERR=1
45941               ENDIF
45942             ELSE
45943               WRITE(MSTU(11),*)
45944      &             '* (PYSLHA:) Reading EXTPAR, but no MODSEL !'
45945               MERR=1
45946             ENDIF
45947 C...tan(beta)
45948             IF (INDX.EQ.25) RMSS(5)=VAL
45949           ELSEIF (CHBLCK(1:8).EQ.'SMINPUTS') THEN
45950             READ(CHINL,*) INDX, VAL
45951             IF (INDX.LE.3.OR.INDX.EQ.5.OR.INDX.GE.7) THEN
45952               MERR=1
45953             ELSEIF (INDX.EQ.4) THEN
45954               PMAS(PYCOMP(23),1)=VAL
45955             ELSEIF (INDX.EQ.6) THEN
45956               PMAS(PYCOMP(6),1)=VAL
45957             ENDIF
45958           ELSEIF (CHBLCK(1:4).EQ.'NMIX'.OR.CHBLCK(1:4).EQ.'VMIX'.OR
45959      $           .CHBLCK(1:4).EQ.'UMIX'.OR.CHBLCK(1:7).EQ.'STOPMIX'.OR
45960      $           .CHBLCK(1:7).EQ.'SBOTMIX'.OR.CHBLCK(1:7).EQ.'STAUMIX')
45961      $           THEN
45962 C...NMIX,UMIX,VMIX,STOPMIX,SBOTMIX, and STAUMIX. Mixing.
45963             IM=0
45964             IF (CHBLCK(5:6).EQ.'IM') IM=1
45965   320       READ(CHINL,*) INDX1, INDX2, VAL
45966             IF (CHBLCK(1:1).EQ.'N'.AND.INDX1.LE.4.AND.INDX2.LE.4) THEN
45967               IF (IM.EQ.0) ZMIX(INDX1,INDX2) = VAL
45968               IF (IM.EQ.1) ZMIXI(INDX1,INDX2)= VAL
45969               MSPC(2)=MSPC(2)+1
45970             ELSEIF (CHBLCK(1:1).EQ.'U') THEN
45971               IF (IM.EQ.0) UMIX(INDX1,INDX2) = VAL
45972               IF (IM.EQ.1) UMIXI(INDX1,INDX2)= VAL
45973               MSPC(3)=MSPC(3)+1
45974             ELSEIF (CHBLCK(1:1).EQ.'V') THEN
45975               IF (IM.EQ.0) VMIX(INDX1,INDX2) = VAL
45976               IF (IM.EQ.1) VMIXI(INDX1,INDX2)= VAL
45977               MSPC(4)=MSPC(4)+1
45978             ELSEIF (CHBLCK(1:4).EQ.'STOP'.OR.CHBLCK(1:4).EQ.'SBOT'.OR
45979      $             .CHBLCK(1:4).EQ.'STAU') THEN
45980               IF (CHBLCK(1:4).EQ.'STOP') THEN
45981                 KFSM=6
45982                 ISPC=6
45983               ELSEIF (CHBLCK(1:4).EQ.'SBOT') THEN
45984                 KFSM=5
45985                 ISPC=5
45986               ELSEIF (CHBLCK(1:4).EQ.'STAU') THEN
45987                 KFSM=15
45988                 ISPC=7
45989               ENDIF
45990 C...Set SFMIX element
45991               SFMIX(KFSM,2*(INDX1-1)+INDX2)=VAL
45992               MSPC(ISPC)=MSPC(ISPC)+1
45993             ENDIF
45994 C...Running parameters
45995           ELSEIF (CHBLCK(1:4).EQ.'HMIX') THEN
45996             READ(CHBLCK(8:25),*,ERR=620) Q
45997             READ(CHINL,*) INDX, VAL
45998             MSPC(8)=MSPC(8)+1
45999             IF (INDX.EQ.1) THEN
46000               RMSS(4) = VAL
46001             ELSE
46002               MERR=1
46003               MSPC(8)=MSPC(8)-1
46004             ENDIF
46005           ELSEIF (CHBLCK(1:5).EQ.'ALPHA') THEN
46006             READ(CHINL,*,ERR=630) VAL
46007             RMSS(18)= VAL
46008             MSPC(17)=MSPC(17)+1
46009 C...Higgs parameters set manually or with FeynHiggs.
46010             IMSS(4)=MAX(2,IMSS(4))
46011           ELSEIF (CHBLCK(1:2).EQ.'AU'.OR.CHBLCK(1:2).EQ.'AD'.OR
46012      &           .CHBLCK(1:2).EQ.'AE') THEN
46013             READ(CHBLCK(9:26),*,ERR=620) Q
46014             READ(CHINL,*) INDX1, INDX2, VAL
46015             IF (CHBLCK(2:2).EQ.'U') THEN
46016               AU(INDX1,INDX2)=VAL
46017               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(16)=VAL
46018               MSPC(11)=MSPC(11)+1
46019             ELSEIF (CHBLCK(2:2).EQ.'D') THEN
46020               AD(INDX1,INDX2)=VAL
46021               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(15)=VAL
46022               MSPC(10)=MSPC(10)+1
46023             ELSEIF (CHBLCK(2:2).EQ.'E') THEN
46024               AE(INDX1,INDX2)=VAL
46025               IF (INDX1.EQ.3.AND.INDX2.EQ.3) RMSS(17)=VAL
46026               MSPC(12)=MSPC(12)+1
46027             ELSE
46028               MERR=1
46029             ENDIF
46030           ELSEIF (CHBLCK(1:5).EQ.'MSOFT') THEN
46031             IF (MSPC(18).EQ.0) THEN
46032               READ(CHBLCK(9:25),*,ERR=620) Q
46033               RMSOFT(0)=Q
46034             ENDIF
46035             READ(CHINL,*) INDX, VAL
46036             RMSOFT(INDX)=VAL
46037             MSPC(18)=MSPC(18)+1
46038           ELSEIF (CHBLCK(1:5).EQ.'GAUGE') THEN
46039             MERR=8
46040           ELSEIF (CHBLCK(1:2).EQ.'YU'.OR.CHBLCK(1:2).EQ.'YD'.OR
46041      &           .CHBLCK(1:2).EQ.'YE') THEN
46042             MERR=8
46043           ELSEIF (CHBLCK(1:6).EQ.'SPINFO') THEN
46044             READ(CHINL(1:6),*) INDX
46045             IT=0
46046             MIRD=0
46047   330       IT=IT+1
46048             IF (CHINL(IT:IT).EQ.' ') GOTO 330
46049 C...Don't read index
46050             IF (CHINL(IT:IT).EQ.CHAR(INDX+48).AND.MIRD.EQ.0) THEN
46051               MIRD=1
46052               GOTO 330
46053             ENDIF
46054             IF (INDX.EQ.1) CPRO(1)=CHINL(IT:IT+12)
46055             IF (INDX.EQ.2) CVER(1)=CHINL(IT:IT+12)
46056           ELSE
46057 C...  Set unrecognized block flag.
46058             MERR=6
46059           ENDIF
46060  
46061 C...DECAY TABLES
46062 C...Read in decay information
46063         ELSEIF (MUPDA.EQ.2.AND.MERR.EQ.0) THEN
46064 C...Read new decay chanel
46065           IF(CHINL(1:1).EQ.' '.AND.CHBLCK(1:5).EQ.'DECAY') THEN
46066             NDC=NDC+1
46067 C...Read in branching ratio and number of daughters for this mode.
46068             READ(CHINL(4:50),*,ERR=390) BRAT(NDC)
46069             READ(CHINL(4:50),*,ERR=600) DUM, NDA
46070             IF (NDA.LE.5) THEN
46071               IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
46072      &             '(PYSLHA:) Decay data arrays full by KF = '
46073      $             //CHAF(KC,1))
46074 C...If first decay channel, set decays start point in decay table
46075               IF(BRSUM.LE.0D0.AND.BRAT(NDC).NE.0D0) THEN
46076                 IF (KFORIG.EQ.0) WRITE(MSTU(11),'(1x,A,I9,A,A16)')
46077      &               '* (PYSLHA:) Reading  DECAY table for '//
46078      &               'KF =',KF,', ',CHAF(KCREP,1)(1:16)
46079 C...Set particle parameters (mass set when reading BLOCK MASS above)
46080                 PMAS(KC,2)=WIDTH
46081                 IF (KF.EQ.25.OR.KF.EQ.35.OR.KF.EQ.36) THEN
46082                   WRITE(MSTU(11),'(1x,A)')
46083      &                '*  Note: the Pythia gg->h/H/A cross section'//
46084      &                ' is proportional to the h/H/A->gg width'
46085                 ELSEIF (KF.EQ.23.OR.KF.EQ.24.OR.KF.EQ.6.OR.KF.EQ.32
46086      &                 .OR.KF.EQ.33.OR.KF.EQ.34) THEN
46087                   WRITE(MSTU(11),'(1x,A,A16)')
46088      &                 '* Warning: will use DECAY table (fixed-width,'//
46089      &                 ' flat PS) for ',CHAF(KC,1)(1:16)
46090                 ENDIF
46091                 PMAS(KC,3)=0D0
46092                 PMAS(KC,4)=PARU(3)*1D-12/WIDTH
46093                 MWID(KC)=2
46094                 MDCY(KC,1)=1
46095                 MDCY(KC,2)=NDC
46096                 MDCY(KC,3)=0
46097 C...Add to list of DECAY blocks currently read
46098                 NDECAY=NDECAY+1
46099                 KFDEC(NDECAY)=KF
46100 C...Return ok
46101                 IRETRN=0
46102               ENDIF
46103 C...  Count up number of decay modes for this particle
46104               MDCY(KC,3)=MDCY(KC,3)+1
46105 C...  Read in decay daughters.
46106               READ(CHINL(4:120),*,ERR=610) DUM,IDM, (IDC(IDA),IDA=1,NDA)
46107 C...  Flip sign if reading antiparticle decays (if antipartner exists)
46108               DO 340 IDA=1,NDA
46109                 IF (KCHG(PYCOMP(IDC(IDA)),3).NE.0)
46110      &               IDC(IDA)=MPSIGN*IDC(IDA)
46111   340         CONTINUE
46112 C...Switch on decay channel, with products ordered in decreasing ABS(KF)
46113               MDME(NDC,1)=1
46114               IF (BRAT(NDC).LE.0D0) MDME(NDC,1)=0
46115               BRSUM=BRSUM+ABS(BRAT(NDC))
46116               BRAT(NDC)=ABS(BRAT(NDC))
46117   350         IFLIP=0
46118               DO 360 IDA=1,NDA-1
46119                 IF (IABS(IDC(IDA+1)).GT.IABS(IDC(IDA))) THEN
46120                   ITMP=IDC(IDA)
46121                   IDC(IDA)=IDC(IDA+1)
46122                   IDC(IDA+1)=ITMP
46123                   IFLIP=IFLIP+1
46124                 ENDIF
46125   360         CONTINUE
46126               IF (IFLIP.GT.0) GOTO 350
46127 C...Treat as ordinary decay, no fancy stuff.
46128               MDME(NDC,2)=0
46129               DO 370 IDA=1,5
46130                 IF (IDA.LE.NDA) THEN
46131                   KFDP(NDC,IDA)=IDC(IDA)
46132                 ELSE
46133                   KFDP(NDC,IDA)=0
46134                 ENDIF
46135   370         CONTINUE
46136 C              WRITE(MSTU(11),7510) NDC, BRAT(NDC), NDA,
46137 C     &            (KFDP(NDC,J),J=1,NDA)
46138             ELSE
46139               CALL PYERRM(7,'(PYSLHA:) Too many daughters on line '//
46140      &             CHNLIN)
46141               MERR=11
46142               NDC=NDC-1
46143             ENDIF
46144           ELSEIF(CHINL(1:1).EQ.'+') THEN
46145             MERR=11
46146           ELSEIF(CHBLCK(1:6).EQ.'DCINFO') THEN
46147             MERR=16
46148           ELSE
46149             MERR=16
46150           ENDIF
46151         ENDIF
46152 C...  Error check.
46153   380   IF (MOD(MERR,10).EQ.1.AND.(MUPDA.EQ.1.OR.MUPDA.EQ.2)) THEN
46154           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring line '//CHNLIN//': '
46155      &         //CHINL(1:40)
46156           MERR=0
46157         ELSEIF (MERR.EQ.6.AND.MUPDA.EQ.1) THEN
46158           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring BLOCK '//
46159      &         CHBLCK(1:MIN(INL,40))//'... on line '//CHNLIN
46160         ELSEIF (MERR.EQ.8.AND.MUPDA.EQ.1) THEN
46161           WRITE(MSTU(11),*) '* (PYSLHA:) PYTHIA will not use BLOCK '
46162      &         //CHBLCK(1:INL)//'... on line'//CHNLIN
46163         ELSEIF (MERR.EQ.16.AND.MUPDA.EQ.2.AND.IMSS21.EQ.0.AND.
46164      &         CHBLCK(1:1).NE.'D'.AND.VERBOS.EQ.1) THEN
46165           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring BLOCK '//CHBLCK(1:INL)
46166      &         //'... on line'//CHNLIN
46167         ELSEIF (MERR.EQ.7.AND.MUPDA.EQ.1) THEN
46168           WRITE(MSTU(11),*) '* (PYSLHA:) Ignoring extra BLOCK '/
46169      &         /CHBLCK(1:INL)//'... on line'//CHNLIN
46170         ELSEIF (MERR.EQ.2.AND.MUPDA.EQ.1) THEN
46171           WRITE (CHTMP,*) KF
46172           WRITE(MSTU(11),*)
46173      &         '* (PYSLHA:) Ignoring extra MASS entry for KF='//
46174      &         CHTMP(1:9)//' on line'//CHNLIN
46175         ENDIF
46176 C...Iterate read loop
46177         GOTO 170
46178 C...Error catching
46179   390   WRITE(*,*) '* (PYSLHA:) read BR error on line',NLINE,
46180      &      ', ignoring subsequent lines.'
46181         WRITE(*,*) '* (PYSLHA:) Offending line:',CHINL(1:46)
46182         CHBLCK=' '
46183         GOTO 170
46184 C...End of read loop
46185   400   CONTINUE
46186 C...Set flag that KC codes have been rearranged.
46187         MSTU(20)=0
46188         VERBOS=0
46189  
46190 C...Perform possible tests that new information is consistent.
46191         IF (MUPDA.EQ.1) THEN
46192           MSTU23=MSTU(23)
46193           MSTU27=MSTU(27)
46194 C...Check masses
46195           DO 410 ISUSY=1,37
46196             KF=KFSUSY(ISUSY)
46197 C...Don't complain about right-handed neutrinos
46198             IF (KF.EQ.KSUSY2+12.OR.KF.EQ.KSUSY2+14.OR.KF.EQ.KSUSY2
46199      &           +16) GOTO 410
46200 C...Only check gravitino in GMSB scenarios
46201             IF (MODSEL(1).NE.2.AND.KF.EQ.KSUSY1+39) GOTO 410
46202             KC=PYCOMP(KF)
46203             IF (PMAS(KC,1).EQ.0D0) THEN
46204               WRITE(CHTMP,*) KF
46205               CALL PYERRM(9
46206      &             ,'(PYSLHA:) No mass information found for KF ='
46207      &             //CHTMP)
46208             ENDIF
46209   410     CONTINUE
46210 C...Check mixing matrices (MSSM only)
46211           IF (IMSS(13).EQ.0) THEN
46212             IF (MSPC(2).NE.16.AND.MSPC(2).NE.32) CALL PYERRM(9
46213      &           ,'(PYSLHA:) Inconsistent # of elements in NMIX')
46214             IF (MSPC(3).NE.4.AND.MSPC(3).NE.8) CALL PYERRM(9
46215      &           ,'(PYSLHA:) Inconsistent # of elements in UMIX')
46216             IF (MSPC(4).NE.4.AND.MSPC(4).NE.8) CALL PYERRM(9
46217      &           ,'(PYSLHA:) Inconsistent # of elements in VMIX')
46218             IF (MSPC(5).NE.4) CALL PYERRM(9
46219      &           ,'(PYSLHA:) Inconsistent # of elements in SBOTMIX')
46220             IF (MSPC(6).NE.4) CALL PYERRM(9
46221      &           ,'(PYSLHA:) Inconsistent # of elements in STOPMIX')
46222             IF (MSPC(7).NE.4) CALL PYERRM(9
46223      &           ,'(PYSLHA:) Inconsistent # of elements in STAUMIX')
46224             IF (MSPC(8).LT.1) CALL PYERRM(9
46225      &           ,'(PYSLHA:) Too few elements in HMIX')
46226             IF (MSPC(10).EQ.0) CALL PYERRM(9
46227      &           ,'(PYSLHA:) Missing A_b trilinear coupling')
46228             IF (MSPC(11).EQ.0) CALL PYERRM(9
46229      &           ,'(PYSLHA:) Missing A_t trilinear coupling')
46230             IF (MSPC(12).EQ.0) CALL PYERRM(9
46231      &           ,'(PYSLHA:) Missing A_tau trilinear coupling')
46232             IF (MSPC(17).LT.1) CALL PYERRM(9
46233      &           ,'(PYSLHA:) Missing Higgs mixing angle alpha')
46234           ENDIF
46235 C...Check wavefunction normalizations.
46236 C...Sfermions
46237           DO 420 ISPC=5,7
46238             IF (MSPC(ISPC).EQ.4) THEN
46239               KFSM=ISPC
46240               IF (ISPC.EQ.7) KFSM=15
46241               CHECK=ABS(SFMIX(KFSM,1)*SFMIX(KFSM,4)-SFMIX(KFSM,2)
46242      &             *SFMIX(KFSM,3))
46243               IF (ABS(1D0-CHECK).GT.1D-3) THEN
46244                 KCSM=PYCOMP(KFSM)
46245                 CALL PYERRM(17
46246      &               ,'(PYSLHA:) Non-orthonormal mixing matrix for ~'
46247      &               //CHAF(KCSM,1))
46248               ENDIF
46249 C...Bug fix 30/09 2008: PS
46250 C...Translate to Pythia's internal convention: (1,1) same sign as (2,2)
46251               IF (SFMIX(KFSM,1)*SFMIX(KFSM,4).LT.0D0) THEN
46252                 SFMIX(KFSM,3) = -SFMIX(KFSM,3)
46253                 SFMIX(KFSM,4) = -SFMIX(KFSM,4)
46254               ENDIF
46255             ENDIF
46256   420     CONTINUE
46257 C...Neutralinos + charginos
46258           DO 440 J=1,4
46259             CN1=0D0
46260             CN2=0D0
46261             CU1=0D0
46262             CU2=0D0
46263             CV1=0D0
46264             CV2=0D0
46265             DO 430 L=1,4
46266               CN1=CN1+ZMIX(J,L)**2
46267               CN2=CN2+ZMIX(L,J)**2
46268               IF (J.LE.2.AND.L.LE.2) THEN
46269                 CU1=CU1+UMIX(J,L)**2
46270                 CU2=CU2+UMIX(L,J)**2
46271                 CV1=CV1+VMIX(J,L)**2
46272                 CV2=CV2+VMIX(L,J)**2
46273               ENDIF
46274   430       CONTINUE
46275 C...NMIX normalization
46276             IF (MSPC(2).EQ.16.AND.(ABS(1D0-CN1).GT.1D-3.OR.ABS(1D0-CN2)
46277      &           .GT.1D-3).AND.IMSS(13).EQ.0) THEN
46278               CALL PYERRM(19,
46279      &             '(PYSLHA:) NMIX: Inconsistent normalization.')
46280               WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F7.4))') J, CN1, CN2
46281             ENDIF
46282 C...UMIX, VMIX normalizations
46283             IF (MSPC(3).EQ.4.OR.MSPC(4).EQ.4.AND.IMSS(13).EQ.0) THEN
46284               IF (J.LE.2) THEN
46285                 IF (ABS(1D0-CU1).GT.1D-3.OR.ABS(1D0-CU2).GT.1D-3) THEN
46286                   CALL PYERRM(19
46287      &                ,'(PYSLHA:) UMIX: Inconsistent normalization.')
46288                   WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F6.2))') J, CU1,
46289      &                 CU2
46290                 ENDIF
46291                 IF (ABS(1D0-CV1).GT.1D-3.OR.ABS(1D0-CV2).GT.1D-3) THEN
46292                   CALL PYERRM(19,
46293      &                '(PYSLHA:) VMIX: Inconsistent normalization.')
46294                   WRITE(MSTU(11),'(7x,I2,1x,":",2(1x,F6.2))') J, CV1,
46295      &                 CV2
46296                 ENDIF
46297               ENDIF
46298             ENDIF
46299   440     CONTINUE
46300           IF (MSTU(27).EQ.MSTU27.AND.MSTU(23).EQ.MSTU23) THEN
46301             WRITE(MSTU(11),'(1x,"*"/1x,A/1x,"*")')
46302      &           '* (PYSLHA:) No spectrum inconsistencies were found.'
46303           ELSE
46304             WRITE(MSTU(11),'(1x,"*"/1x,A/1x,"*",A/1x,"*",A/)')
46305      &           '* (PYSLHA:) INCONSISTENT SPECTRUM WARNING.'
46306      &           ,' Warning: one or more (serious)'//
46307      &           ' inconsistencies were found in the spectrum !'
46308      &           ,' Read the error messages above and check your'//
46309      &           ' input file.'
46310           ENDIF
46311 C...Increase precision in Higgs sector using FeynHiggs
46312           IF (IMSS(4).EQ.3) THEN
46313 C...FeynHiggs needs MSOFT.
46314             IERR=0
46315             IF (MSPC(18).EQ.0) THEN
46316               WRITE(MSTU(11),'(1x,"*"/1x,A/)')
46317      &             '* (PYSLHA:) BLOCK MSOFT not found in SLHA file.'//
46318      &              ' Cannot call FeynHiggs.'
46319               IERR=-1
46320             ELSE
46321               WRITE(MSTU(11),'(1x,/1x,A/)')
46322      &             '* (PYSLHA:) Now calling FeynHiggs.'
46323               CALL PYFEYN(IERR)
46324               IF (IERR.NE.0) IMSS(4)=2
46325             ENDIF
46326           ENDIF
46327         ELSEIF (MUPDA.EQ.2.AND.IRETRN.EQ.0.AND.MERR.NE.16) THEN
46328           IBEG=1
46329           IF (KFORIG.NE.0) IBEG=NDECAY
46330           DO 490 IDECAY=IBEG,NDECAY
46331             KF = KFDEC(IDECAY)
46332             KC = PYCOMP(KF)
46333             WRITE(CHKF,8300) KF
46334             IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3
46335      $          ),PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0.OR.(MDCY(KC,3)
46336      $          .EQ.0.AND.MDCY(KC,1).GE.1)) CALL PYERRM(17
46337      $          ,'(PYSLHA:) Mass/width/life/(# channels) wrong for KF='
46338      $          //CHKF)
46339             BRSUM=0D0
46340             BROPN=0D0
46341             DO 460 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
46342               IF(MDME(IDA,2).GT.80) GOTO 460
46343               KQ=KCHG(KC,1)
46344               PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
46345               MERR=0
46346               DO 450 J=1,5
46347                 KP=KFDP(IDA,J)
46348                 IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
46349                   IF(KP.EQ.81) KQ=0
46350                 ELSEIF(PYCOMP(KP).EQ.0) THEN
46351                   MERR=3
46352                 ELSE
46353                   KQ=KQ-PYCHGE(KP)
46354                   KPC=PYCOMP(KP)
46355                   PMS=PMS-PMAS(KPC,1)
46356                   IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
46357      &                PMAS(KPC,3))
46358                 ENDIF
46359   450         CONTINUE
46360               IF(KQ.NE.0) MERR=MAX(2,MERR)
46361               IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
46362      &            MERR=MAX(1,MERR)
46363               IF(MERR.EQ.3) CALL PYERRM(17,
46364      &            '(PYSLHA:) Unknown particle code in decay of KF ='
46365      $            //CHKF)
46366               IF(MERR.EQ.2) CALL PYERRM(17,
46367      &            '(PYSLHA:) Charge not conserved in decay of KF ='
46368      $            //CHKF)
46369               IF(MERR.EQ.1) CALL PYERRM(7,
46370      &            '(PYSLHA:) Kinematically unallowed decay of KF ='
46371      $            //CHKF)
46372               BRSUM=BRSUM+BRAT(IDA)
46373               IF (MDME(IDA,1).GT.0) BROPN=BROPN+BRAT(IDA)
46374   460       CONTINUE
46375 C...Check branching ratio sum.
46376             IF (BROPN.LE.0D0) THEN
46377 C...If zero, set stable.
46378               WRITE(CHTMP,8500) BROPN
46379               CALL PYERRM(7
46380      &            ,"(PYSLHA:) Effective BR sum for KF="//CHKF//' is '//
46381      &            CHTMP(9:16)//'. Changed to stable.')
46382               PMAS(KC,2)=1D-6
46383               MWID(KC)=0
46384 C...If BR's > 1, rescale.
46385             ELSEIF (BRSUM.GT.(1D0+1D-6)) THEN
46386               WRITE(CHTMP,8500) BRSUM
46387               IF (BRSUM.GT.(1D0+1D-3)) CALL PYERRM(7
46388      &            ,"(PYSLHA:) Forced rescaling of BR's for KF="//CHKF//
46389      &            ' ; sum was'//CHTMP(9:16)//'.')
46390               FAC=1D0/BRSUM
46391               DO 470 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
46392                 IF(MDME(IDA,2).GT.80) GOTO 470
46393                 BRAT(IDA)=FAC*BRAT(IDA)
46394   470         CONTINUE
46395             ELSEIF (BRSUM.LT.(1D0-1D-6)) THEN
46396 C...If BR's < 1, insert dummy mode for proper cross section rescaling.
46397               WRITE(CHTMP,8500) BRSUM
46398               IF (BRSUM.LT.(1D0-1D-3)) CALL PYERRM(7
46399      &            ,"(PYSLHA:) Sum of BR's for KF="//CHKF//' is '//
46400      &            CHTMP(9:16)//'. Dummy mode will be inserted.')
46401 C...Move table and insert dummy mode
46402               DO 480 IDA=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
46403                 NDC=NDC+1
46404                 BRAT(NDC)=BRAT(IDA)
46405                 KFDP(NDC,1)=KFDP(IDA,1)
46406                 KFDP(NDC,2)=KFDP(IDA,2)
46407                 KFDP(NDC,3)=KFDP(IDA,3)
46408                 KFDP(NDC,4)=KFDP(IDA,4)
46409                 KFDP(NDC,5)=KFDP(IDA,5)
46410                 MDME(NDC,1)=MDME(IDA,1)
46411   480         CONTINUE
46412               NDC=NDC+1
46413               BRAT(NDC)=1D0-BRSUM
46414               KFDP(NDC,1)=0
46415               KFDP(NDC,2)=0
46416               KFDP(NDC,3)=0
46417               KFDP(NDC,4)=0
46418               KFDP(NDC,5)=0
46419               MDME(NDC,1)=0
46420               BRSUM=1D0
46421 C...Update MDCY
46422               MDCY(KC,3)=MDCY(KC,3)+1
46423               MDCY(KC,2)=NDC-MDCY(KC,3)+1
46424             ENDIF
46425   490     CONTINUE
46426         ENDIF
46427  
46428  
46429 C...WRITE SPECTRUM ON SLHA FILE
46430       ELSEIF(MUPDA.EQ.3) THEN
46431 C...If SPYTHIA or ISASUSY runtime was called for SUGRA, update PARMIN.
46432         IF (IMSS(1).EQ.2.OR.IMSS(1).EQ.12) THEN
46433           MODSEL(1)=1
46434           PARMIN(1)=RMSS(8)
46435           PARMIN(2)=RMSS(1)
46436           PARMIN(3)=RMSS(5)
46437           PARMIN(4)=SIGN(1D0,RMSS(4))
46438           PARMIN(5)=RMSS(36)
46439         ENDIF
46440 C...Write spectrum
46441         WRITE(LFN,7000) 'SLHA MSSM spectrum'
46442         WRITE(LFN,7000) 'Pythia 6.4: T. Sjostrand, S. Mrenna,'
46443      &    // ' P. Skands.'
46444         WRITE(LFN,7010) 'MODSEL',  'Model selection'
46445         WRITE(LFN,7110) 1, MODSEL(1)
46446         WRITE(LFN,7010) 'MINPAR', 'Parameters for minimal model.'
46447         IF (MODSEL(1).EQ.1) THEN
46448           WRITE(LFN,7210) 1, PARMIN(1), 'm0'
46449           WRITE(LFN,7210) 2, PARMIN(2), 'm12'
46450           WRITE(LFN,7210) 3, PARMIN(3), 'tan(beta)'
46451           WRITE(LFN,7210) 4, PARMIN(4), 'sign(mu)'
46452           WRITE(LFN,7210) 5, PARMIN(5), 'a0'
46453         ELSEIF(MODSEL(2).EQ.2) THEN
46454           WRITE(LFN,7210) 1, PARMIN(1), 'Lambda'
46455           WRITE(LFN,7210) 2, PARMIN(2), 'M'
46456           WRITE(LFN,7210) 3, PARMIN(3), 'tan(beta)'
46457           WRITE(LFN,7210) 4, PARMIN(4), 'sign(mu)'
46458           WRITE(LFN,7210) 5, PARMIN(5), 'N5'
46459           WRITE(LFN,7210) 6, PARMIN(6), 'c_grav'
46460         ENDIF
46461         WRITE(LFN,7000) ' '
46462         WRITE(LFN,7010) 'MASS', 'Mass spectrum'
46463         DO 500 I=1,36
46464           KF=KFSUSY(I)
46465           KC=PYCOMP(KF)
46466           IF (KF.EQ.1000039.AND.MODSEL(1).NE.2) GOTO 500
46467           KFSM=KF-KSUSY1
46468           IF (KFSM.GE.22.AND.KFSM.LE.37) THEN
46469             IF (KFSM.EQ.22)  WRITE(LFN,7220) KF, SMZ(1), CHAF(KC,1)
46470             IF (KFSM.EQ.23)  WRITE(LFN,7220) KF, SMZ(2), CHAF(KC,1)
46471             IF (KFSM.EQ.25)  WRITE(LFN,7220) KF, SMZ(3), CHAF(KC,1)
46472             IF (KFSM.EQ.35)  WRITE(LFN,7220) KF, SMZ(4), CHAF(KC,1)
46473             IF (KFSM.EQ.24)  WRITE(LFN,7220) KF, SMW(1), CHAF(KC,1)
46474             IF (KFSM.EQ.37)  WRITE(LFN,7220) KF, SMW(2), CHAF(KC,1)
46475           ELSE
46476             WRITE(LFN,7220) KF, PMAS(KC,1), CHAF(KC,1)
46477           ENDIF
46478   500   CONTINUE
46479 C...SUSY scale
46480         RMSUSY=SQRT(PMAS(PYCOMP(KSUSY1+6),1)*PMAS(PYCOMP(KSUSY2+6),1))
46481         WRITE(LFN,7020) 'HMIX',RMSUSY,'Higgs parameters'
46482         WRITE(LFN,7210) 1, RMSS(4),'mu'
46483         WRITE(LFN,7010) 'ALPHA',' '
46484         WRITE(LFN,7210) 1, RMSS(18), 'alpha'
46485         WRITE(LFN,7020) 'AU',RMSUSY
46486         WRITE(LFN,7410) 3, 3, RMSS(16), 'A_t'
46487         WRITE(LFN,7020) 'AD',RMSUSY
46488         WRITE(LFN,7410) 3, 3, RMSS(15), 'A_b'
46489         WRITE(LFN,7020) 'AE',RMSUSY
46490         WRITE(LFN,7410) 3, 3, RMSS(17), 'A_tau'
46491         WRITE(LFN,7010) 'STOPMIX','~t mixing matrix'
46492         WRITE(LFN,7410) 1, 1, SFMIX(6,1)
46493         WRITE(LFN,7410) 1, 2, SFMIX(6,2)
46494         WRITE(LFN,7410) 2, 1, SFMIX(6,3)
46495         WRITE(LFN,7410) 2, 2, SFMIX(6,4)
46496         WRITE(LFN,7010) 'SBOTMIX','~b mixing matrix'
46497         WRITE(LFN,7410) 1, 1, SFMIX(5,1)
46498         WRITE(LFN,7410) 1, 2, SFMIX(5,2)
46499         WRITE(LFN,7410) 2, 1, SFMIX(5,3)
46500         WRITE(LFN,7410) 2, 2, SFMIX(5,4)
46501         WRITE(LFN,7010) 'STAUMIX','~tau mixing matrix'
46502         WRITE(LFN,7410) 1, 1, SFMIX(15,1)
46503         WRITE(LFN,7410) 1, 2, SFMIX(15,2)
46504         WRITE(LFN,7410) 2, 1, SFMIX(15,3)
46505         WRITE(LFN,7410) 2, 2, SFMIX(15,4)
46506         WRITE(LFN,7010) 'NMIX','~chi0 mixing matrix'
46507         DO 520 I1=1,4
46508           DO 510 I2=1,4
46509             WRITE(LFN,7410) I1, I2, ZMIX(I1,I2)
46510   510     CONTINUE
46511   520   CONTINUE
46512         WRITE(LFN,7010) 'UMIX','~chi^+ U mixing matrix'
46513         DO 540 I1=1,2
46514           DO 530 I2=1,2
46515             WRITE(LFN,7410) I1, I2, UMIX(I1,I2)
46516   530     CONTINUE
46517   540   CONTINUE
46518         WRITE(LFN,7010) 'VMIX','~chi^+ V mixing matrix'
46519         DO 560 I1=1,2
46520           DO 550 I2=1,2
46521             WRITE(LFN,7410) I1, I2, VMIX(I1,I2)
46522   550     CONTINUE
46523   560   CONTINUE
46524         WRITE(LFN,7010) 'SPINFO'
46525         IF (IMSS(1).EQ.2) THEN
46526           CPRO(1)='PYTHIA'
46527           CVER(1)='6.4'
46528         ELSEIF (IMSS(1).EQ.12) THEN
46529           ISAVER=VISAJE()
46530           CPRO(1)='ISASUSY'
46531           CVER(1)=ISAVER(1:12)
46532         ENDIF
46533         WRITE(LFN,7310) 1, CPRO(1), 'Spectrum Calculator'
46534         WRITE(LFN,7310) 2, CVER(1), 'Version number'
46535       ENDIF
46536  
46537 C...Print user information about spectrum
46538       IF (MUPDA.EQ.1.OR.MUPDA.EQ.3) THEN
46539         IF (CPRO(MOD(MUPDA,2)).NE.' '.AND.CVER(MOD(MUPDA,2)).NE.' ')
46540      &       WRITE(MSTU(11),5030) CPRO(1), CVER(1)
46541         IF (IMSS(4).EQ.3) WRITE(MSTU(11),5040)
46542         IF (MUPDA.EQ.1) THEN
46543           WRITE(MSTU(11),5020) LFN
46544         ELSE
46545           WRITE(MSTU(11),5010) LFN
46546         ENDIF
46547  
46548         WRITE(MSTU(11),5400)
46549         WRITE(MSTU(11),5500) 'Pole masses'
46550         WRITE(MSTU(11),5700) (RMFUN(KSUSY1+IP),IP=1,6)
46551      $       ,(RMFUN(KSUSY2+IP),IP=1,6)
46552         WRITE(MSTU(11),5800) (RMFUN(KSUSY1+IP),IP=11,16)
46553      $       ,(RMFUN(KSUSY2+IP),IP=11,16)
46554         IF (IMSS(13).EQ.0) THEN
46555           WRITE(MSTU(11),5900) RMFUN(KSUSY1+21),RMFUN(KSUSY1+22)
46556      $         ,RMFUN(KSUSY1+23),RMFUN(KSUSY1+25),RMFUN(KSUSY1+35),
46557      $         RMFUN(KSUSY1+24),RMFUN(KSUSY1+37)
46558           WRITE(MSTU(11),6000) CHAF(25,1),CHAF(35,1),CHAF(36,1),
46559      &         CHAF(37,1), ' ', ' ',' ',' ',
46560      &         RMFUN(25), RMFUN(35), RMFUN(36), RMFUN(37)
46561         ELSEIF (IMSS(13).EQ.1) THEN
46562           KF1=KSUSY1+21
46563           KF2=KSUSY1+22
46564           KF3=KSUSY1+23
46565           KF4=KSUSY1+25
46566           KF5=KSUSY1+35
46567           KF6=KSUSY1+45
46568           KF7=KSUSY1+24
46569           KF8=KSUSY1+37
46570           WRITE(MSTU(11),6000) CHAF(PYCOMP(KF1),1),CHAF(PYCOMP(KF2),1),
46571      &         CHAF(PYCOMP(KF3),1),CHAF(PYCOMP(KF4),1),
46572      &         CHAF(PYCOMP(KF5),1),CHAF(PYCOMP(KF6),1),
46573      &         CHAF(PYCOMP(KF7),1),CHAF(PYCOMP(KF8),1),
46574      &         RMFUN(KF1),RMFUN(KF2),RMFUN(KF3),RMFUN(KF4),
46575      &         RMFUN(KF5),RMFUN(KF6),RMFUN(KF7),RMFUN(KF8)
46576           WRITE(MSTU(11),6000) CHAF(25,1), CHAF(35,1), CHAF(45,1),
46577      &         CHAF(36,1), CHAF(46,1), CHAF(37,1),' ',' ',
46578      &         RMFUN(25), RMFUN(35), RMFUN(45), RMFUN(36), RMFUN(46),
46579      &         RMFUN(37)
46580         ENDIF
46581         WRITE(MSTU(11),5400)
46582         WRITE(MSTU(11),5500) 'Mixing structure'
46583         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
46584         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
46585      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
46586         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
46587      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
46588      &       ),(SFMIX(15,J),J=3,4)
46589         WRITE(MSTU(11),5400)
46590         WRITE(MSTU(11),5500) 'Couplings'
46591         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17)
46592         WRITE(MSTU(11),6450) RMSS(18), RMSS(5), RMSS(4)
46593         WRITE(MSTU(11),5400)
46594         WRITE(MSTU(11),6500)
46595  
46596       ENDIF
46597  
46598 C...Only rewind when reading
46599       IF (MUPDA.LE.2.OR.MUPDA.EQ.5) REWIND(LFN)
46600  
46601  9999 RETURN
46602  
46603 C...Serious error catching
46604   580 write(*,*) '* (PYSLHA:) read BLOCK error on line',NLINE
46605       write(*,*) CHINL(1:80)
46606       CALL PYSTOP(106)
46607   590 WRITE(*,*) '* (PYSLHA:) read DECAY error on line',NLINE
46608       WRITE(*,*) CHINL(1:72)
46609       CALL PYSTOP(106)
46610   600 WRITE(*,*) '* (PYSLHA:) read NDA error on line',NLINE
46611       WRITE(*,*) CHINL(1:80)
46612       CALL PYSTOP(106)
46613   610 WRITE(*,*) '* (PYSLHA:) decay daughter read error on line',NLINE
46614       WRITE(*,*) CHINL(1:80)
46615   620 WRITE(*,*) '* (PYSLHA:) read Q error in BLOCK ',CHBLCK
46616       CALL PYSTOP(106)
46617   630 WRITE(*,*) '* (PYSLHA:) read error in line ',NLINE,':'
46618       WRITE(*,*) CHINL(1:80)
46619       CALL PYSTOP(106)
46620  
46621  8300 FORMAT(I9)
46622  8500 FORMAT(F16.5)
46623  
46624 C...Formats for user information printout.
46625  5000 FORMAT(1x,18('*'),1x,'PYSLHA v1.12: SUSY/BSM SPECTRUM '
46626      &     ,'INTERFACE',1x,17('*')/1x,'*',1x
46627      &     ,'(PYSLHA:) Last Change',1x,A,1x,'-',1x,'P.Z. Skands')
46628  5010 FORMAT(1x,'*',3x,'Wrote spectrum file on unit: ',I3)
46629  5020 FORMAT(1x,'*',3x,'Read spectrum file on unit: ',I3)
46630  5030 FORMAT(1x,'*',3x,'Spectrum Calculator was: ',A,' version ',A)
46631  5040 FORMAT(1x,'*',3x,'Higgs sector corrected with FeynHiggs')
46632  5100 FORMAT(1x,'*',1x,'Model parameters:'/1x,'*',1x,'----------------')
46633  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
46634      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
46635  5300 FORMAT(1x,'*'/1x,'*',1x,'Model spectrum :'/1x,'*',1x
46636      &     ,'----------------')
46637  5400 FORMAT(1x,'*',1x,A)
46638  5500 FORMAT(1x,'*',1x,A,':')
46639  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
46640      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
46641  5700 FORMAT(1x,'*',4x,1x,'~d',2x,1x,4x,'~u',2x,1x,4x,'~s',2x,1x,
46642      &     4x,'~c',2x,1x,4x,'~b(12)',1x,1x,1x,'~t(12)'/1x,'*',2x,'L',1x
46643      &     ,6(F8.2,1x)/1x,'*',2x,'R',1x,6(F8.2,1x))
46644  5800 FORMAT(1x,'*'/1x,'*',4x,1x,'~e',2x,1x,4x,'~nu_e',2x,1x,1x,'~mu',2x
46645      &     ,1x,3x,'~nu_mu',2x,1x,'~tau(12)',1x,'~nu_tau'/1x,'*',2x
46646      &     ,'L',1x,6(F8.2,1x)/1x,'*',2x,'R',1x,6(F8.2,1x))
46647  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
46648      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
46649      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
46650  6000 FORMAT(1x,'*'/1x,'*',3x,1x,8(1x,A7,1x)/1x,'*',3x,1x,8(F8.2,1x))
46651  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
46652      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
46653      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
46654      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
46655      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
46656      &     ,1x,F6.3,1x),'|')
46657  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
46658      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
46659      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
46660      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
46661      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
46662  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
46663      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
46664      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
46665      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
46666      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
46667      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
46668      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
46669  6400 FORMAT(1x,'*',3x,'  A_b = ',F8.2,4x,'      A_t = ',F8.2,4x
46670      &     ,'A_tau = ',F8.2)
46671  6450 FORMAT(1x,'*',3x,'alpha = ',F8.2,4x,'tan(beta) = ',F8.2,4x
46672      &     ,'   mu = ',F8.2)
46673  6500 FORMAT(1x,32('*'),1x,'END OF PYSLHA',1x,31('*'))
46674  
46675 C...Format to use for comments
46676  7000 FORMAT('# ',A)
46677 C...Format to use for block statements
46678  7010 FORMAT('Block',1x,A,3x,'#',1x,A)
46679  7020 FORMAT('Block',1x,A,1x,'Q=',1P,E16.8,0P,3x,'#',1x,A)
46680 C...Indexed Int
46681  7110 FORMAT(1x,I4,1x,I4,3x,'#')
46682 C...Non-Indexed Double
46683  7200 FORMAT(9x,1P,E16.8,0P,3x,'#',1x,A)
46684 C...Indexed Double
46685  7210 FORMAT(1x,I4,3x,1P,E16.8,0P,3x,'#',1x,A)
46686 C...Long Indexed Double (PDG + double)
46687  7220 FORMAT(1x,I9,3x,1P,E16.8,0P,3x,'#',1x,A)
46688 C...Indexed Char(12)
46689  7310 FORMAT(1x,I4,3x,A12,3x,'#',1x,A)
46690 C...Single matrix
46691  7410 FORMAT(1x,I2,1x,I2,3x,1P,E16.8,0P,3x,'#',1x,A)
46692 C...Double Matrix
46693  7420 FORMAT(1x,I2,1x,I2,3x,1P,E16.8,3x,E16.8,0P,3x,'#',1x,A)
46694 C...Write Decay Table
46695  7500 FORMAT('Decay',1x,I9,1x,'WIDTH=',1P,E16.8,0P,3x,'#',1x,A)
46696  7510 FORMAT(4x,I5,1x,1P,E16.8,0P,3x,I2,3x,'IDA=',1x,5(1x,I9),
46697      &    3x,'#',1x,A)
46698  
46699       END
46700 
46701  
46702 C*********************************************************************
46703  
46704 C...PYAPPS
46705 C...Uses approximate analytical formulae to determine the full set of
46706 C...MSSM parameters from SUGRA input.
46707 C...See M. Drees and S.P. Martin, hep-ph/9504124
46708  
46709       SUBROUTINE PYAPPS
46710  
46711 C...Double precision and integer declarations.
46712       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46713       IMPLICIT INTEGER(I-N)
46714       INTEGER PYK,PYCHGE,PYCOMP
46715 C...Parameter statement to help give large particle numbers.
46716       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
46717      &KEXCIT=4000000,KDIMEN=5000000)
46718 C...Commonblocks.
46719       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46720       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46721       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46722       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/
46723 
46724       WRITE(MSTU(11),*) '(PYAPPS:) approximate mSUGRA relations'//
46725      &' not intended for serious physics studies'
46726       IMSS(5)=0
46727       IMSS(8)=0
46728       XMT=PMAS(6,1)
46729       XMZ2=PMAS(23,1)**2
46730       XMW2=PMAS(24,1)**2
46731       TANB=RMSS(5)
46732       BETA=ATAN(TANB)
46733       XW=PARU(102)
46734       XMG=RMSS(1)
46735       XMG2=XMG*XMG
46736       XM0=RMSS(8)
46737       XM02=XM0*XM0
46738 C...Temporary sign change for AT. Others unchanged.
46739       AT=-RMSS(16)
46740       RMSS(15)=RMSS(16)
46741       RMSS(17)=RMSS(16)
46742       SINB=TANB/SQRT(TANB**2+1D0)
46743       COSB=SINB/TANB
46744  
46745       DTERM=XMZ2*COS(2D0*BETA)
46746       XMER=SQRT(XM02+0.15D0*XMG2-XW*DTERM)
46747       XMEL=SQRT(XM02+0.52D0*XMG2-(0.5D0-XW)*DTERM)
46748       RMSS(6)=XMEL
46749       RMSS(7)=XMER
46750       XMUR=SQRT(PYRNMQ(2,2D0/3D0*XW*DTERM))
46751       XMDR=SQRT(PYRNMQ(3,-1D0/3D0*XW*DTERM))
46752       XMUL=SQRT(PYRNMQ(1,(0.5D0-2D0/3D0*XW)*DTERM))
46753       XMDL=SQRT(PYRNMQ(1,-(0.5D0-1D0/3D0*XW)*DTERM))
46754       DO 100 I=1,5,2
46755         PMAS(PYCOMP(KSUSY1+I),1)=XMDL
46756         PMAS(PYCOMP(KSUSY2+I),1)=XMDR
46757         PMAS(PYCOMP(KSUSY1+I+1),1)=XMUL
46758         PMAS(PYCOMP(KSUSY2+I+1),1)=XMUR
46759   100 CONTINUE
46760       XARG=XMEL**2-XMW2*ABS(COS(2D0*BETA))
46761       IF(XARG.LT.0D0) THEN
46762         WRITE(MSTU(11),*) ' SNEUTRINO MASS IS NEGATIVE'//
46763      &  ' FROM THE SUM RULE. '
46764         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
46765         RETURN
46766       ELSE
46767         XARG=SQRT(XARG)
46768       ENDIF
46769       DO 110 I=11,15,2
46770         PMAS(PYCOMP(KSUSY1+I),1)=XMEL
46771         PMAS(PYCOMP(KSUSY2+I),1)=XMER
46772         PMAS(PYCOMP(KSUSY1+I+1),1)=XARG
46773         PMAS(PYCOMP(KSUSY2+I+1),1)=9999D0
46774   110 CONTINUE
46775       RMT=PYMRUN(6,PMAS(6,1)**2)
46776       XTOP=(RMT/150D0/SINB)**2*(.9D0*XM02+2.1D0*XMG2+
46777      &(1D0-(RMT/190D0/SINB)**3)*(.24D0*AT**2+AT*XMG))
46778       RMB=PYMRUN(5,PMAS(6,1)**2)
46779       XBOT=(RMB/150D0/COSB)**2*(.9D0*XM02+2.1D0*XMG2+
46780      &(1D0-(RMB/190D0/COSB)**3)*(.24D0*AT**2+AT*XMG))
46781       XTAU=1D-4/COSB**2*(XM02+0.15D0*XMG2+AT**2/3D0)
46782       ATP=AT*(1D0-(RMT/190D0/SINB)**2)+XMG*(3.47D0-1.9D0*(RMT/190D0/
46783      &SINB)**2)
46784       RMSS(16)=-ATP
46785       XMU2=-.5D0*XMZ2+(SINB**2*(XM02+.52D0*XMG2-XTOP)-
46786      &COSB**2*(XM02+.52D0*XMG2-XBOT-XTAU/3D0))/(COSB**2-SINB**2)
46787       XMA2=2D0*(XM02+.52D0*XMG2+XMU2)-XTOP-XBOT-XTAU/3D0
46788       XMU=SIGN(SQRT(XMU2),RMSS(4))
46789       RMSS(4)=XMU
46790       IF(XMA2.GT.0D0) THEN
46791         RMSS(19)=SQRT(XMA2)
46792       ELSE
46793         WRITE(MSTU(11),*) ' PYAPPS:: PSEUDOSCALAR MASS**2 < 0 '
46794         CALL PYSTOP(102)
46795       ENDIF
46796       ARG=XM02+0.15D0*XMG2-2D0*XTAU/3D0-XW*DTERM
46797       IF(ARG.GT.0D0) THEN
46798         RMSS(14)=SQRT(ARG)
46799       ELSE
46800         WRITE(MSTU(11),*) ' PYAPPS:: RIGHT STAU MASS**2 < 0 '
46801         CALL PYSTOP(102)
46802       ENDIF
46803       ARG=XM02+0.52D0*XMG2-XTAU/3D0-(0.5D0-XW)*DTERM
46804       IF(ARG.GT.0D0) THEN
46805         RMSS(13)=SQRT(ARG)
46806       ELSE
46807         WRITE(MSTU(11),*) ' PYAPPS::  LEFT STAU MASS**2 < 0 '
46808         CALL PYSTOP(102)
46809       ENDIF
46810       ARG=PYRNMQ(1,-(XBOT+XTOP)/3D0)
46811       IF(ARG.GT.0D0) THEN
46812         RMSS(10)=SQRT(ARG)
46813       ELSE
46814         RMSS(10)=-SQRT(-ARG)
46815       ENDIF
46816       ARG=PYRNMQ(2,-2D0*XTOP/3D0)
46817       IF(ARG.GT.0D0) THEN
46818         RMSS(12)=SQRT(ARG)
46819       ELSE
46820         RMSS(12)=-SQRT(-ARG)
46821       ENDIF
46822       ARG=PYRNMQ(3,-2D0*XBOT/3D0)
46823       IF(ARG.GT.0D0) THEN
46824         RMSS(11)=SQRT(ARG)
46825       ELSE
46826         RMSS(11)=-SQRT(-ARG)
46827       ENDIF
46828  
46829       RETURN
46830       END
46831  
46832 C*********************************************************************
46833  
46834 C...PYSUGI
46835 C...Interface to ISASUSY version 7.71.
46836 C...Warning: this interface should not be used with earlier versions
46837 C...of ISASUSY, since common block incompatibilities may then arise.
46838 C...Calls SUGRA (in ISAJET) to perform RGE evolution.
46839 C...Then converts to Gunion-Haber conventions.
46840  
46841       SUBROUTINE PYSUGI
46842       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
46843  
46844       INTEGER PYK,PYCHGE,PYCOMP
46845       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
46846      &KEXCIT=4000000,KDIMEN=5000000)
46847  
46848 C...Date of Change
46849       CHARACTER DOC*11
46850       PARAMETER (DOC='01 May 2006')
46851  
46852 C...ISASUGRA Input:
46853       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
46854 C...XISAIN contains the MSSMi inputs in natural order.
46855       COMMON /SUGXIN/ XISAIN(24),XSUGIN(7),XGMIN(14),XNRIN(4),
46856      $XAMIN(7)
46857       REAL XISAIN,XSUGIN,XGMIN,XNRIN,XAMIN
46858       SAVE /SUGXIN/
46859 C...ISASUGRA Output
46860       CHARACTER*40 ISAVER,VISAJE
46861       REAL SUPER
46862       COMMON /SSPAR/ SUPER(72)
46863       COMMON /SUGMG/ MSS(32),GSS(31),MGUTSS,GGUTSS,AGUTSS,FTGUT,
46864      $FBGUT,FTAGUT,FNGUT
46865       REAL MSS,GSS,MGUTSS,GGUTSS,AGUTSS,FTGUT,FBGUT,FTAGUT,FNGUT
46866       COMMON /SUGPAS/ XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
46867      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
46868      $FNMZ,AMNRMJ,NOGOOD,IAL3UN,ITACHY,MHPNEG,ASM3,
46869      $VUMT,VDMT,ASMTP,ASMSS,M3Q
46870       REAL XTANB,MSUSY,AMT,MGUT,MU,G2,GP,V,VP,XW,
46871      $A1MZ,A2MZ,ASMZ,FTAMZ,FBMZ,B,SIN2B,FTMT,G3MT,VEV,HIGFRZ,
46872      $FNMZ,AMNRMJ,ASM3,VUMT,VDMT,ASMTP,ASMSS,M3Q
46873       INTEGER NOGOOD,IAL3UN,ITACHY,MHPNEG
46874       INTEGER IALLOW
46875       SAVE /SUGMG/,/SSPAR/
46876 C SUPER: Filled by ISASUGRA.
46877 C SUPER(1)        = mass of ~g
46878 C SUPER(2:17)     = mass of ~u_L,~u_R,~d_L,~d_R,~s_L,~s_R,~c_L,~c_R,~b_L
46879 C                          ,~b_R,~b_1,~b_2,~t_L,~t_R,~t_1,~t_2
46880 C SUPER(18:25)    = mass of ~e_L,~e_R,~mu_L,~mu_R,~tau_L,~tau_R,~tau_1
46881 C                          ,~tau_2
46882 C SUPER(26:28)    = mass of ~nu_e,~nu_mu,~nu_tau
46883 C SUPER(29)       = Higgsino mass = - mu
46884 C SUPER(30)       = ratio v2/v1 of vev's
46885 C SUPER(31:34)    = Signed neutralino masses
46886 C SUPER(35:50)    = Neutralino mixing matrix
46887 C SUPER(51:52)    = Signed chargino masses
46888 C SUPER(53:54)    = Chargino left, right mixing angles
46889 C SUPER(55:58)    = mass of h0, H0, A0, H+
46890 C SUPER(59)       = Higgs mixing angle alpha
46891 C SUPER(60:65)    = A_t, theta_t, A_b, theta_b, A_tau, theta_tau
46892 C SUPER(66)       = Gravitino mass
46893 C SUPER(67:69)    = Top,Bottom, and Tau masses at MSUSY (not used)
46894 C SUPER(70)       = b-Yukawa at mA scale (not used)
46895 C SUPER(71:72)    = H_u, H_d vev's at MSUSY (not used)
46896 C GSS: Filled by ISASUGRA
46897 C     GSS( 1) = g_1        GSS( 2) = g_2        GSS( 3) = g_3
46898 C     GSS( 4) = y_tau      GSS( 5) = y_b        GSS( 6) = y_t
46899 C     GSS( 7) = M_1        GSS( 8) = M_2        GSS( 9) = M_3
46900 C     GSS(10) = A_tau      GSS(11) = A_b        GSS(12) = A_t
46901 C     GSS(13) = M_h12     GSS(14) = M_h22     GSS(15) = M_er2
46902 C     GSS(16) = M_el2     GSS(17) = M_dnr2    GSS(18) = M_upr2
46903 C     GSS(19) = M_upl2    GSS(20) = M_taur2   GSS(21) = M_taul2
46904 C     GSS(22) = M_btr2    GSS(23) = M_tpr2    GSS(24) = M_tpl2
46905 C     GSS(25) = mu         GSS(26) = B          GSS(27) = Y_N
46906 C     GSS(28) = M_nr       GSS(29) = A_n        GSS(30) = log(vdq)
46907 C     GSS(31) = log(vuq)
46908 C MSS: Filled by ISASUGRA
46909 C     MSS( 1) = glss     MSS( 2) = upl      MSS( 3) = upr
46910 C     MSS( 4) = dnl      MSS( 5) = dnr      MSS( 6) = stl
46911 C     MSS( 7) = str      MSS( 8) = chl      MSS( 9) = chr
46912 C     MSS(10) = b1       MSS(11) = b2       MSS(12) = t1
46913 C     MSS(13) = t2       MSS(14) = nuel     MSS(15) = numl
46914 C     MSS(16) = nutl     MSS(17) = el-      MSS(18) = er-
46915 C     MSS(19) = mul-     MSS(20) = mur-     MSS(21) = tau1
46916 C     MSS(22) = tau2     MSS(23) = z1ss     MSS(24) = z2ss
46917 C     MSS(25) = z3ss     MSS(26) = z4ss     MSS(27) = w1ss
46918 C     MSS(28) = w2ss     MSS(29) = hl0      MSS(30) = hh0
46919 C     MSS(31) = ha0      MSS(32) = h+
46920 C Unification, filled by ISASUGRA if applicable.
46921 C     MGUTSS  = M_GUT    GGUTSS  = g_GUT    AGUTSS  = alpha_GUTC
46922  
46923 C...SPYTHIA Input/Output
46924       INTEGER IMSS
46925       DOUBLE PRECISION RMSS
46926       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
46927       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
46928      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
46929 C...SLHA Input/Output
46930       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
46931      &     AU(3,3),AD(3,3),AE(3,3)
46932 C...PYTHIA common blocks
46933       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
46934       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
46935       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
46936  
46937       SAVE  /PYMSSM/,/PYSSMT/,/PYLH3P/,/PYDAT1/,/PYPARS/,/PYDAT2/
46938 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
46939       INTEGER IMODEL
46940       REAL M0,MHF,A0,MT
46941       CHARACTER*20 CHMOD(5)
46942       CHARACTER*32 FNAME
46943  
46944       COMMON /SUGNU/ XNUSUG(18)
46945       REAL XNUSUG
46946       SAVE /SUGNU/
46947  
46948       DATA CHMOD/'mSUGRA','mGMSB','non-universal SUGRA',
46949      &     'truly unified SUGRA', 'non-minimal GMSB'/
46950  
46951 C...Start by checking for incompatibilities/inconsistencies:
46952       DO 100 ICHK=2,9
46953         IF (ICHK.NE.8.AND.ICHK.NE.4.AND.IMSS(ICHK).NE.0) THEN
46954           WRITE (MSTU(11),*) '(PYSUGI:) IMSS(',ICHK,')=',IMSS(ICHK)
46955      &         ,' option not used by PYSUGI'
46956         ENDIF
46957   100 CONTINUE
46958 C...ISAJET works with REAL numbers.
46959       MZERO=REAL(RMSS(8))
46960       MHLF=REAL(RMSS(1))
46961       AZERO=REAL(RMSS(16))
46962       TANB=REAL(RMSS(5))
46963       SGNMU=REAL(RMSS(4))
46964       MTOP=REAL(PMAS(6,1))
46965       IMODEL=0
46966       IF (IMSS(1).EQ.12) THEN
46967         IMODEL=1
46968         GOTO 130
46969       ELSEIF(IMSS(1).EQ.13) THEN
46970 C...Read from isajet par file in IMSS(20)
46971         LFN=IMSS(20)
46972 C...STOP IF LFN IS ZERO (i.e. if no LFN was given).
46973         IF (LFN.EQ.0) THEN
46974           WRITE(MSTU(11),*) '(PYSUGI:) No valid unit given in IMSS(20)'
46975           GOTO 9999
46976         ENDIF
46977         WRITE(MSTU(11),*) 'READING SUSY MODEL FROM FILE...'
46978 CMrenna change to allow any susy model
46979         WRITE(MSTU(11),*) 'ENTER 1 for mSUGRA:'
46980         WRITE(MSTU(11),*) 'ENTER 2 for mGMSB:'
46981         WRITE(MSTU(11),*) 'ENTER 3 for non-universal SUGRA:'
46982         WRITE(MSTU(11),*) 'ENTER 4 for SUGRA with truly unified'//
46983      &       ' gauge couplings:'
46984         WRITE(MSTU(11),*) 'ENTER 5 for non-minimal GMSB:'
46985         READ(LFN,*) IMODEL
46986         IF (IMODEL.EQ.4) THEN
46987           IAL3UN=1
46988           IMODEL=1
46989         ENDIF
46990         IF (IMODEL.EQ.1.OR.IMODEL.EQ.3) THEN
46991           WRITE(MSTU(11),*) 'ENTER M_0, M_(1/2), A_0, tan(beta),'
46992      &         //' sgn(mu), M_t:'
46993           READ(LFN,*) M0,MHF,A0,TANB,SGNMU,MT
46994           IF (IMODEL.EQ.3) THEN
46995             IMODEL=1
46996  110        WRITE(MSTU(11),*) ' ENTER 1,...,5 for NUSUGx keyword;'
46997      &           //' 0 to continue:'
46998             WRITE(MSTU(11),*) ' NUSUG1 = GUT scale gaugino masses'
46999             WRITE(MSTU(11),*) ' NUSUG2 = GUT scale A terms'
47000             WRITE(MSTU(11),*) ' NUSUG3 = GUT scale Higgs masses'
47001             WRITE(MSTU(11),*) ' NUSUG4 = GUT scale 1st/2nd'
47002      &           //' generation masses'
47003             WRITE(MSTU(11),*)
47004      &           ' NUSUG5 = GUT scale 3rd generation masses'
47005             READ(LFN,*) INUSUG
47006             IF (INUSUG.EQ.0) THEN
47007               GOTO 120
47008             ELSEIF (INUSUG.EQ.1) THEN
47009               WRITE(MSTU(11),*) 'Enter GUT scale M_1, M_2, M_3:'
47010               READ(LFN,*) XNUSUG(1),XNUSUG(2),XNUSUG(3)
47011               IF (XNUSUG(3).LE.0.) THEN
47012                 WRITE(MSTU(11),*) ' NEGATIVE M_3 IS NOT ALLOWED'
47013                 CALL PYSTOP(109)
47014               END IF
47015             ELSEIF (INUSUG.EQ.2) THEN
47016               WRITE(MSTU(11),*) 'Enter GUT scale A_t, A_b, A_tau:'
47017               READ(LFN,*) XNUSUG(6),XNUSUG(5),XNUSUG(4)
47018             ELSEIF (INUSUG.EQ.3) THEN
47019               WRITE(MSTU(11),*) 'Enter GUT scale m_Hd, m_Hu:'
47020               READ(LFN,*) XNUSUG(7),XNUSUG(8)
47021             ELSEIF (INUSUG.EQ.4) THEN
47022               WRITE(MSTU(11),*) 'Enter GUT scale M(ul), M(dr),'
47023      &             //' M(ur), M(el), M(er):'
47024               READ(LFN,*) XNUSUG(13),XNUSUG(11),XNUSUG(12),
47025      &             XNUSUG(10),XNUSUG(9)
47026             ELSEIF (INUSUG.EQ.5) THEN
47027               WRITE(MSTU(11),*) 'Enter GUT scale M(tl), M(br), M(tr),'
47028      &              //' M(Ll), M(Lr):'
47029               READ(LFN,*) XNUSUG(18),XNUSUG(16),XNUSUG(17),
47030      &             XNUSUG(15),XNUSUG(14)
47031             ENDIF
47032             GOTO 110
47033           ENDIF
47034         ELSEIF (IMODEL.EQ.2.OR.IMODEL.EQ.5) THEN
47035           IMSS(11)=1
47036           WRITE(MSTU(11),*) 'ENTER Lambda, M_mes, N_5, tan(beta),'
47037      &         ,' sgn(mu), M_t, C_gv:'
47038           READ(LFN,*) M0,MHF,A0,TANB,SGNMU,MT,XCMGV
47039           XGMIN(7)=XCMGV
47040           XGMIN(8)=1.
47041 C...Planck scale: AMPL = 2.4 E18 GeV = {8 pi G_newton}^{1/2}
47042           AMPL=2.4D18
47043           AMGVSS=M0*MHF*XCMGV/SQRT(3D0)/AMPL
47044           IF (IMODEL.EQ.5) THEN
47045             IMODEL=2
47046             WRITE(MSTU(11),*) 'Rsl = factor multiplying gaugino'
47047      &           ,' masses at M_mes'
47048             WRITE(MSTU(11),*) 'dmH_d2, dmH_u2 = Higgs mass**2'
47049      &           ,' shifts at M_mes'
47050             WRITE(MSTU(11),*) 'd_Y = mass**2 shifts proportional to',
47051      &           ' Y at M_mes'
47052             WRITE(MSTU(11),*) 'n5_1,n5_2,n5_3 = n5 values for U(1),'
47053      &           ,'SU(2),SU(3)'
47054             WRITE(MSTU(11),*) 'ENTER Rsl, dmH_d2, dmH_u2, d_Y, n5_1,'
47055      &           ,' n5_2, n5_3'
47056             READ(LFN,*) XGMIN(8),XGMIN(9),XGMIN(10),XGMIN(11),XGMIN(12),
47057      $           XGMIN(13),XGMIN(14)
47058           ENDIF
47059         ELSE
47060           WRITE(MSTU(11),*) 'Invalid model choice.'
47061           GOTO 9999
47062         ENDIF
47063       ENDIF
47064  
47065  120  MZERO=M0
47066       MHLF=MHF
47067       AZERO=A0
47068 C     TANB=REAL(RMSS(5))
47069 C     SGNMU=REAL(RMSS(4))
47070       MTOP=MT
47071  
47072 C...Initialize MSSM parameter array
47073  130  DO 140 IPAR=1,72
47074         SUPER(IPAR)=0.0
47075  140  CONTINUE
47076 C...Call ISASUGRA
47077       CALL SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODEL)
47078 C...Check whether ISASUSY thought the model was OK.
47079       IF (NOGOOD.NE.0) THEN
47080         IF (NOGOOD.EQ.1) CALL PYERRM(26
47081      &       ,'(PYSUGI:) SUSY parameters give tachyonic particles.')
47082         IF (NOGOOD.EQ.2) CALL PYERRM(26
47083      &       ,'(PYSUGI:) SUSY parameters give no EWSB.')
47084         IF (NOGOOD.EQ.3) CALL PYERRM(26
47085      &       ,'(PYSUGI:) SUSY parameters give m(A0) < 0.')
47086         IF (NOGOOD.EQ.4) CALL PYERRM(26
47087      &       ,'(PYSUGI:) SUSY parameters give Yukawa > 100.')
47088         IF (NOGOOD.EQ.7) CALL PYERRM(26
47089      &       ,'(PYSUGI:) SUSY parameters give x_T EWSB bad.')
47090         IF (NOGOOD.EQ.8) CALL PYERRM(26
47091      &       ,'(PYSUGI:) SUSY parameters give m(h0)2 < 0.')
47092 C...Give warning, but don't stop, if LSP not ~chi_10.
47093         IF (NOGOOD.EQ.5) CALL PYERRM(16
47094      &       ,'(PYSUGI:) SUSY parameters give ~chi_10 not LSP.')
47095       ENDIF
47096 C...Warn about possible GUT scale tachyons.
47097       IF (ITACHY.NE.0) CALL PYERRM(16,
47098      &       '(PYSUGI:) Tachyonic sleptons at GUT scale.')
47099 C...Finalize spectrum (last iteration)
47100 C...(Thanks to A. Raklev for pointing this out.)
47101 C...NB: SSMSSM also calculates decays, but these are not used by Pythia.
47102       CALL SSMSSM(XISAIN(1),XISAIN(2),XISAIN(3),
47103      $ XISAIN(4),XISAIN(5),XISAIN(6),XISAIN(7),XISAIN(8),XISAIN(9),
47104      $ XISAIN(10),XISAIN(11),XISAIN(12),XISAIN(13),XISAIN(14),
47105      $ XISAIN(15),XISAIN(16),XISAIN(17),XISAIN(18),XISAIN(19),
47106      $ XISAIN(20),XISAIN(21),XISAIN(22),XISAIN(23),XISAIN(24),
47107      $ MTOP,IALLOW,1)
47108  
47109 C...M1, M2, M3.
47110       RMSS(1)=dble(GSS(7))
47111       RMSS(2)=dble(GSS(8))
47112       RMSS(3)=dble(GSS(9))
47113       RMSOFT(1)=dble(GSS(7))
47114       RMSOFT(2)=dble(GSS(8))
47115       RMSOFT(3)=dble(GSS(9))
47116 C...Mu = - Higgsino mass.
47117       RMSS(4)=-SUPER(29)
47118       RMSS(5)=TANB
47119 C...Slepton and squark masses. 2 first generations.
47120       RMSS(6)=0.5*(SUPER(18)+SUPER(20))
47121       RMSS(7)=0.5*(SUPER(19)+SUPER(21))
47122       RMSS(8)=0.25*(SUPER(2)+SUPER(4)+SUPER(6)+SUPER(8))
47123       RMSS(9)=0.25*(SUPER(3)+SUPER(5)+SUPER(7)+SUPER(9))
47124 C...Third generation.
47125       RMSS(10)=0.5*(SUPER(14)+SUPER(10))
47126       RMSS(11)=SUPER(11)
47127       RMSS(12)=SUPER(15)
47128       RMSS(13)=SUPER(22)
47129       RMSS(14)=SUPER(23)
47130 C...SLHA: store exact soft spectrum in RMSOFT
47131       RMSOFT(31)=SUPER(18)
47132       RMSOFT(32)=SUPER(20)
47133       RMSOFT(33)=SUPER(22)
47134       RMSOFT(34)=SUPER(19)
47135       RMSOFT(35)=SUPER(21)
47136       RMSOFT(36)=SUPER(23)
47137       RMSOFT(41)=0.5D0*(SUPER(2)+SUPER(4))
47138       RMSOFT(42)=0.5D0*(SUPER(6)+SUPER(8))
47139       RMSOFT(43)=0.5D0*(SUPER(10)+SUPER(14))
47140       RMSOFT(44)=SUPER(3)
47141       RMSOFT(45)=SUPER(9)
47142       RMSOFT(46)=SUPER(15)
47143       RMSOFT(47)=SUPER(5)
47144       RMSOFT(48)=SUPER(7)
47145       RMSOFT(49)=SUPER(11)
47146  
47147 C...~b, ~t, and ~tau trilinear couplings and mixing angles.
47148       RMSS(15)=SUPER(62)
47149       RMSS(16)=SUPER(60)
47150       RMSS(17)=SUPER(64)
47151       RMSS(26)=SUPER(63)
47152       RMSS(27)=SUPER(61)
47153       RMSS(28)=SUPER(65)
47154 C...SLHA trilinears
47155       DO 142 K1=1,3
47156         DO 141 K2=1,3
47157           AE(K1,K2)=0D0
47158           AU(K1,K2)=0D0
47159           AD(K1,K2)=0D0
47160  141    CONTINUE
47161  142  CONTINUE
47162       AE(3,3)=SUPER(64)
47163       AU(3,3)=SUPER(60)
47164       AD(3,3)=SUPER(62)
47165 C...Higgs mixing angle alpha (Gunion-Haber convention).
47166       RMSS(18)=-SUPER(59)
47167 C...A0 mass.
47168       RMSS(19)=SUPER(57)
47169 C...GUT scale coupling
47170       RMSS(20)=AGUTSS
47171 C...Gravitino mass (for future compatibility)
47172       RMSS(21)=MAX(RMSS(21),DBLE(SUPER(66)))
47173  
47174 C...Now we're done with RMSS. Time to fill PMAS (m > 0 required).
47175 C...Higgs sector.
47176       PMAS(PYCOMP(25),1)=ABS(SUPER(55))
47177       PMAS(PYCOMP(35),1)=ABS(SUPER(56))
47178       PMAS(PYCOMP(36),1)=ABS(SUPER(57))
47179       PMAS(PYCOMP(37),1)=ABS(SUPER(58))
47180 C...Gluino.
47181       PMAS(PYCOMP(KSUSY1+21),1)=ABS(SUPER(1))
47182 C...Squarks and Sleptons.
47183       DO 150 ILR=1,2
47184         ILRM=ILR-1
47185         PMAS(PYCOMP(ILR*KSUSY1+1),1)=ABS(SUPER(4+ILRM))
47186         PMAS(PYCOMP(ILR*KSUSY1+2),1)=ABS(SUPER(2+ILRM))
47187         PMAS(PYCOMP(ILR*KSUSY1+3),1)=ABS(SUPER(6+ILRM))
47188         PMAS(PYCOMP(ILR*KSUSY1+4),1)=ABS(SUPER(8+ILRM))
47189         PMAS(PYCOMP(ILR*KSUSY1+5),1)=ABS(SUPER(12+ILRM))
47190         PMAS(PYCOMP(ILR*KSUSY1+6),1)=ABS(SUPER(16+ILRM))
47191         PMAS(PYCOMP(ILR*KSUSY1+11),1)=ABS(SUPER(18+ILRM))
47192         PMAS(PYCOMP(ILR*KSUSY1+13),1)=ABS(SUPER(20+ILRM))
47193         PMAS(PYCOMP(ILR*KSUSY1+15),1)=ABS(SUPER(24+ILRM))
47194   150 CONTINUE
47195       PMAS(PYCOMP(KSUSY1+12),1)=ABS(SUPER(26))
47196       PMAS(PYCOMP(KSUSY1+14),1)=ABS(SUPER(27))
47197       PMAS(PYCOMP(KSUSY1+16),1)=ABS(SUPER(28))
47198 C...Neutralinos.
47199       PMAS(PYCOMP(KSUSY1+22),1)=ABS(SUPER(31))
47200       PMAS(PYCOMP(KSUSY1+23),1)=ABS(SUPER(32))
47201       PMAS(PYCOMP(KSUSY1+25),1)=ABS(SUPER(33))
47202       PMAS(PYCOMP(KSUSY1+35),1)=ABS(SUPER(34))
47203 C...Signed masses (extra minus from going to G-H convention).
47204       SMZ(1)=-SUPER(31)
47205       SMZ(2)=-SUPER(32)
47206       SMZ(3)=-SUPER(33)
47207       SMZ(4)=-SUPER(34)
47208 C...Charginos
47209       PMAS(PYCOMP(KSUSY1+24),1)=ABS(SUPER(51))
47210       PMAS(PYCOMP(KSUSY1+37),1)=ABS(SUPER(52))
47211 C...Signed masses (extra minus from going to G-H convention).
47212       SMW(1)=-SUPER(51)
47213       SMW(2)=-SUPER(52)
47214  
47215 C... Neutralino Mixing.
47216       DO 160 IN=1,4
47217         ZMIX(IN,1)= SUPER(38+4*(IN-1))
47218         ZMIX(IN,2)= SUPER(37+4*(IN-1))
47219         ZMIX(IN,3)=-SUPER(36+4*(IN-1))
47220         ZMIX(IN,4)=-SUPER(35+4*(IN-1))
47221   160 CONTINUE
47222 C...Chargino Mixing (PYTHIA same angle as HERWIG).
47223       THX=1D0
47224       THY=1D0
47225       IF (SUPER(53).GT.0) THX=-1D0
47226       IF (SUPER(54).GT.0) THY=-1D0
47227       UMIX(1,1) = -SIN(SUPER(53))
47228       UMIX(1,2) = -COS(SUPER(53))
47229       UMIX(2,1) = -THX*COS(SUPER(53))
47230       UMIX(2,2) = THX*SIN(SUPER(53))
47231       VMIX(1,1) = -SIN(SUPER(54))
47232       VMIX(1,2) = -COS(SUPER(54))
47233       VMIX(2,1) = -THY*COS(SUPER(54))
47234       VMIX(2,2) = THY*SIN(SUPER(54))
47235 C...Sfermion mixing (PYTHIA same angle as ISAJET)
47236       SFMIX(5,1)=COS(SUPER(63))
47237       SFMIX(5,2)=SIN(SUPER(63))
47238       SFMIX(5,3)=-SIN(SUPER(63))
47239       SFMIX(5,4)=COS(SUPER(63))
47240       SFMIX(6,1)=COS(SUPER(61))
47241       SFMIX(6,2)=SIN(SUPER(61))
47242       SFMIX(6,3)=-SIN(SUPER(61))
47243       SFMIX(6,4)=COS(SUPER(61))
47244       SFMIX(15,1)=COS(SUPER(65))
47245       SFMIX(15,2)=SIN(SUPER(65))
47246       SFMIX(15,3)=-SIN(SUPER(65))
47247       SFMIX(15,4)=COS(SUPER(65))
47248  
47249       IF (MSTP(122).NE.0) THEN
47250 C...Print a few lines to make the user know what's happening
47251         ISAVER=VISAJE()
47252         WRITE(MSTU(11),5000) DOC, ISAVER
47253         WRITE(MSTU(11),5100)
47254         IF (IMODEL.EQ.1) THEN
47255           WRITE(MSTU(11),5200) MZERO, MHLF, AZERO, TANB, NINT(SGNMU),
47256      &         MTOP
47257           WRITE(MSTU(11),5300)
47258         ENDIF
47259         WRITE(MSTU(11),5500) 'Pole masses'
47260         WRITE(MSTU(11),5700) (SUPER(IP),IP=2,16,2),(SUPER(IP),IP=3,17,2)
47261         WRITE(MSTU(11),5800) (SUPER(IP),IP=18,24,2),(SUPER(IP),IP=26,28)
47262      &       ,(SUPER(IP),IP=19,25,2)
47263         WRITE(MSTU(11),5900) SUPER(1),(SMZ(IP),IP=1,4), (SMW(IP)
47264      &       ,IP=1,2)
47265         WRITE(MSTU(11),5400)
47266         WRITE(MSTU(11),6000) (SUPER(IP),IP=55,58)
47267         WRITE(MSTU(11),5400)
47268         WRITE(MSTU(11),5500) 'EW scale mixing structure'
47269         WRITE(MSTU(11),6100) ((ZMIX(I,J), J=1,4),I=1,4)
47270         WRITE(MSTU(11),6200) (UMIX(1,J), J=1,2),(VMIX(1,J),J=1,2)
47271      &       ,(UMIX(2,J), J=1,2),(VMIX(2,J),J=1,2)
47272         WRITE(MSTU(11),6300) (SFMIX(5,J), J=1,2),(SFMIX(6,J),J=1,2)
47273      &       ,(SFMIX(15,J), J=1,2),(SFMIX(5,J),J=3,4),(SFMIX(6,J), J=3,4
47274      &       ),(SFMIX(15,J),J=3,4)
47275         WRITE(MSTU(11),5400)
47276         WRITE(MSTU(11),6450) RMSS(18)
47277         WRITE(MSTU(11),5400)
47278         WRITE(MSTU(11),5500) 'Couplings'
47279         WRITE(MSTU(11),6400) RMSS(15),RMSS(16),RMSS(17),RMSS(20)
47280         WRITE(MSTU(11),5400)
47281       ENDIF
47282  
47283 C...Call FeynHiggs to improve Higgs sector if requested
47284       IF (IMSS(4).EQ.3) THEN
47285         IF (MSTP(122).NE.0) WRITE(MSTU(11),'(1x,"*"/1x,"*",A)')
47286      &       ' (PYSUGI:) Now calling FeynHiggs.'
47287         CALL PYFEYN(IERR)
47288         IF (IERR.EQ.0) THEN
47289           IMSS(4)=2
47290           IF (MSTP(122).NE.0) THEN
47291             WRITE(MSTU(11),5400)
47292             WRITE(MSTU(11),5500)
47293      &           'Corrected Higgs masses and mixing'
47294             WRITE(MSTU(11),6000) PMAS(25,1),PMAS(35,1),PMAS(36,1),
47295      &           PMAS(37,1)
47296             WRITE(MSTU(11),6450) RMSS(18)
47297             WRITE(MSTU(11),5400)
47298           ENDIF
47299         ENDIF
47300       ENDIF
47301  
47302       IF (MSTP(122).NE.0) WRITE(MSTU(11),6500)
47303  
47304 C...Fix the higgs sector (in PYMSIN) using the masses and mixing angle
47305 C...output by ISASUSY.
47306       IMSS(4)=MAX(2,IMSS(4))
47307  
47308  5000 FORMAT(1x,19('*'),1x,'PYSUGI v1.52: PYTHIA/ISASUSY '
47309      &     ,'INTERFACE',1x,19('*')/1x,'*',3x,'PYSUGI: Last Change',1x,A
47310      &     ,1x,'-',1x,'P. Skands / S. Mrenna'/1x,'*',2x,A/1x,'*')
47311  5100 FORMAT(1x,'*',1x,'ISASUSY Input:'/1x,'*',1x,'----------------')
47312  5200 FORMAT(1x,'*',1x,3x,'M_0',6x,'M_1/2',5x,'A_0',3x,'Tan(beta)',
47313      &     3x,'Sgn(mu)',3x,'M_t'/1x,'*',1x,4(F8.2,1x),I8,2x,F8.2)
47314  5300 FORMAT(1x,'*'/1x,'*',1x,'ISASUSY Output:'/1x,'*',1x
47315      &     ,'----------------')
47316  5400 FORMAT(1x,'*',1x,A)
47317  5500 FORMAT(1x,'*',1x,A,':')
47318  5600 FORMAT(1x,'*',2x,2x,'M_GUT',2x,2x,'g_GUT',2x,1x,'alpha_GUT'/
47319      &       1x,'*',2x,1P,2(1x,E8.2),2x,E8.2)
47320  5700 FORMAT(1x,'*',4x,4x,'~u',2x,1x,4x,'~d',2x,1x,4x,'~s',2x,1x,
47321      &     4x,'~c',2x,1x,4x,'~b',2x,1x,2x,'~b(12)',1x,4x,'~t',2x,1x, 2x,
47322      &     '~t(12)'/1x,'*',2x,'L',1x,8(F8.2,1x)/1x,'*',2x,'R',1x,8(F8.2
47323      &     ,1x))
47324  5800 FORMAT(1x,'*'/1x,'*',4x,4x,'~e',2x,1x,3x,'~mu',2x,1x,3x,'~tau',1x
47325      &     ,1x,'~tau(12)',1x,2x,'~nu_e',1x,1x,1x,'~nu_mu',1x,1x,1x
47326      &     ,'~nu_tau'/1x,'*',2x,'L',1x,7(F8.2,1x)/1x,'*',2x,'R',1x,4(F8
47327      &     .2,1x))
47328  5900 FORMAT(1x,'*'/1x,'*',4x,4x,'~g',2x,1x,1x,'~chi_10',1x,1x,'~chi_20'
47329      &     ,1x,1x,'~chi_30',1x,1x,'~chi_40',1x,1x,'~chi_1+',1x
47330      &     ,1x,'~chi_2+'/1x,'*',3x,1x,7(F8.2,1x))
47331  6000 FORMAT(1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
47332      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x))
47333  6050 FORMAT(1x,'*'/1x,'*',4x,4x,'h0',2x,1x,4x,'H0',2x,1x,4x,'A0',2x
47334      &     ,1x,4x,'H+'/1x,'*',3x,1x,5(F8.2,1x),3x,'(Before FeynHiggs)')
47335  6100 FORMAT(1x,'*',11x,'|',3x,'~B',3x,'|',2x,'~W_3',2x,'|',2x
47336      &     ,'~H_1',2x,'|',2x,'~H_2',2x,'|'/1x,'*',3x,'~chi_10',1x,4('|'
47337      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_20',1x,4('|'
47338      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_30',1x,4('|'
47339      &     ,1x,F6.3,1x),'|'/1x,'*',3x,'~chi_40',1x,4('|'
47340      &     ,1x,F6.3,1x),'|')
47341  6200 FORMAT(1x,'*'/1x,'*',6x,'L',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'
47342      &     ,12x,'R',4x,'|',3x,'~W',3x,'|',3x,'~H',3x,'|'/1x,'*',3x
47343      &     ,'~chi_1+',1x,2('|',1x,F6.3,1x),'|',9x,'~chi_1+',1x,2('|',1x
47344      &     ,F6.3,1x),'|'/1x,'*',3x,'~chi_2+',1x,2('|',1x,F6.3,1x),'|',9x
47345      &     ,'~chi_2+',1x,2('|',1x,F6.3,1x),'|')
47346  6300 FORMAT(1x,'*'/1x,'*',8x,'|',2x,'~b_L',2x,'|',2x,'~b_R',2x,'|',8x
47347      &     ,'|',2x,'~t_L',2x,'|',2x,'~t_R',2x,'|',10x
47348      &     ,'|',1x,'~tau_L',1x,'|',1x,'~tau_R',1x,'|'/
47349      &     1x,'*',3x,'~b_1',1x,2('|',1x,F6.3,1x),'|',3x,'~t_1',1x,2('|'
47350      &     ,1x,F6.3,1x),'|',3x,'~tau_1',1x,2('|',1x,F6.3,1x),'|'/
47351      &     1x,'*',3x,'~b_2',1x,2('|',1x,F6.3,1x),'|',3x,'~t_2',1x,2('|'
47352      &     ,1x,F6.3,1x),'|',3x,'~tau_2',1x,2('|',1x,F6.3,1x),'|')
47353  6400 FORMAT(1x,'*',3x,'A_b = ',F8.2,4x,'A_t = ',F8.2,4x,'A_tau = ',F8.2
47354      &     ,4x,'Alpha_GUT = ',F8.2)
47355  6450 FORMAT(1x,'*',3x,'Alpha_Higgs = ',F8.4)
47356  6500 FORMAT(1x,32('*'),1x,'END OF PYSUGI',1x,31('*'))
47357  
47358  9999 RETURN
47359       END
47360  
47361 C*********************************************************************
47362  
47363 C...PYFEYN
47364 C...Interface to FeynHiggs for MSSM Higgs sector.
47365 C...Pythia6.402: Updated to FeynHiggs v.2.3.0+ w/ DOUBLE COMPLEX
47366 C...P. Skands
47367  
47368       SUBROUTINE PYFEYN(IERR)
47369  
47370 C...Double precision and integer declarations.
47371       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47372       IMPLICIT INTEGER(I-N)
47373       INTEGER PYK,PYCHGE,PYCOMP
47374 C...Commonblocks.
47375       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47376       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47377 C...SUSY blocks
47378       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
47379 C...FeynHiggs variables
47380       DOUBLE PRECISION RMHIGG(4)
47381       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
47382       DOUBLE COMPLEX DMU,
47383      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
47384      &     DM1, DM2, DM3
47385 C...SLHA Common Block
47386       COMMON/PYLH3P/MODSEL(200),PARMIN(100),PAREXT(200),RMSOFT(0:100),
47387      &     AU(3,3),AD(3,3),AE(3,3)
47388       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYLH3P/
47389  
47390       IERR=0
47391       CALL FHSETFLAGS(IERR,4,0,0,2,0,2,1,1)
47392       IF (IERR.NE.0) THEN
47393         CALL PYERRM(11,'(PYHGGM:) Caught error from FHSETFLAGS.'
47394      &       //'Will not use FeynHiggs for this run.')
47395         RETURN
47396       ENDIF
47397       Q=RMSOFT(0)
47398       DMB=PMAS(5,1)
47399       DMT=PMAS(6,1)
47400       DMZ=PMAS(23,1)
47401       DMW=PMAS(24,1)
47402       DMA=PMAS(36,1)
47403       DM1=RMSOFT(1)
47404       DM2=RMSOFT(2)
47405       DM3=RMSOFT(3)
47406       DTANB=RMSS(5)
47407       DMU=RMSS(4)
47408       DM3SL=RMSOFT(33)
47409       DM3SE=RMSOFT(36)
47410       DM3SQ=RMSOFT(43)
47411       DM3SU=RMSOFT(46)
47412       DM3SD=RMSOFT(49)
47413       DM2SL=RMSOFT(32)
47414       DM2SE=RMSOFT(35)
47415       DM2SQ=RMSOFT(42)
47416       DM2SU=RMSOFT(45)
47417       DM2SD=RMSOFT(48)
47418       DM1SL=RMSOFT(31)
47419       DM1SE=RMSOFT(34)
47420       DM1SQ=RMSOFT(41)
47421       DM1SU=RMSOFT(44)
47422       DM1SD=RMSOFT(47)
47423       AE33=AE(3,3)
47424       AE22=AE(2,2)
47425       AE11=AE(1,1)
47426       AU33=AU(3,3)
47427       AU22=AU(2,2)
47428       AU11=AU(1,1)
47429       AD33=AD(3,3)
47430       AD22=AD(2,2)
47431       AD11=AD(1,1)
47432       CALL FHSETPARA(IERR, 1D0, DMT, DMB, DMW, DMZ, DTANB,
47433      &     DMA,0D0, DM3SL, DM3SE, DM3SQ, DM3SU, DM3SD,
47434      &     DM2SL, DM2SE, DM2SQ, DM2SU, DM2SD,
47435      &     DM1SL, DM1SE, DM1SQ, DM1SU, DM1SD,DMU,
47436      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
47437      &     DM1, DM2, DM3, 0D0, 0D0,Q,Q,Q)
47438       IF (IERR.NE.0) THEN
47439         CALL PYERRM(11,'(PYHGGM:) Caught error from FHSETPARA.'
47440      &       //' Will not use FeynHiggs for this run.')
47441         RETURN
47442       ENDIF
47443 C...  Get Higgs masses & alpha_eff. (UHIGGS redundant here, only for CPV)
47444       SAEFF=0D0
47445       CALL FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS)
47446       IF (IERR.NE.0) THEN
47447         CALL PYERRM(11,'(PYFEYN:) Caught error from FHHIG'//
47448      &       'GSCORR. Will not use FeynHiggs for this run.')
47449         RETURN
47450       ENDIF
47451       ALPHA = ASIN(DBLE(SAEFF))
47452       R=RMSS(18)/ALPHA
47453       IF (R.LT.0D0.OR.ABS(R).GT.1.2D0.OR.ABS(R).LT.0.8D0) THEN
47454         CALL PYERRM(1,'(PYFEYN:) Large corrections in Higgs sector.')
47455         WRITE(MSTU(11),*) '   Old Alpha:', RMSS(18)
47456         WRITE(MSTU(11),*) '   New Alpha:', ALPHA
47457       ENDIF
47458       IF (RMHIGG(1).LT.0.85D0*PMAS(25,1).OR.RMHIGG(1).GT.
47459      &       1.15D0*PMAS(25,1)) THEN
47460         CALL PYERRM(1,'(PYFEYN:) Large corrections in Higgs sector.')
47461         WRITE(MSTU(11),*) '   Old m(h0):', PMAS(25,1)
47462         WRITE(MSTU(11),*) '   New m(h0):', RMHIGG(1)
47463       ENDIF
47464       RMSS(18)=ALPHA
47465       PMAS(25,1)=RMHIGG(1)
47466       PMAS(35,1)=RMHIGG(2)
47467       PMAS(36,1)=RMHIGG(3)
47468       PMAS(37,1)=RMHIGG(4)
47469  
47470       RETURN
47471       END
47472  
47473 C*********************************************************************
47474  
47475 C...PYRNMQ
47476 C...Determines the running mass of Squarks.
47477  
47478       FUNCTION PYRNMQ(ID,DTERM)
47479  
47480 C...Double precision and integer declarations.
47481       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47482       IMPLICIT INTEGER(I-N)
47483       INTEGER PYK,PYCHGE,PYCOMP
47484 C...Commonblock.
47485       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
47486       SAVE /PYMSSM/
47487  
47488 C...Local variables.
47489       DOUBLE PRECISION PI,R
47490       DOUBLE PRECISION TOL
47491       DOUBLE PRECISION CI(3)
47492       EXTERNAL PYALPS
47493       DOUBLE PRECISION PYALPS
47494       DATA TOL/0.001D0/
47495       DATA PI,R/3.141592654D0,.61803399D0/
47496       DATA CI/0.47D0,0.07D0,0.02D0/
47497  
47498       C=1D0-R
47499       CA=CI(ID)
47500       AG=(0.71D0)**2/4D0/PI
47501       AG=RMSS(20)
47502       XM0=RMSS(8)
47503       XMG=RMSS(1)
47504       XM02=XM0*XM0
47505       XMG2=XMG*XMG
47506  
47507       AS=PYALPS(XM02+6D0*XMG2)
47508       CG=8D0/9D0*((AS/AG)**2-1D0)
47509       BX=XM02+(CA+CG)*XMG2+DTERM
47510       AX=MIN(50D0**2,0.5D0*BX)
47511       CX=MAX(2000D0**2,2D0*BX)
47512  
47513       X0=AX
47514       X3=CX
47515       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
47516         X1=BX
47517         X2=BX+C*(CX-BX)
47518       ELSE
47519         X2=BX
47520         X1=BX-C*(BX-AX)
47521       ENDIF
47522       AS1=PYALPS(X1)
47523       CG=8D0/9D0*((AS1/AG)**2-1D0)
47524       F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
47525       AS2=PYALPS(X2)
47526       CG=8D0/9D0*((AS2/AG)**2-1D0)
47527       F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
47528   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
47529         IF(F2.LT.F1) THEN
47530           X0=X1
47531           X1=X2
47532           X2=R*X1+C*X3
47533           F1=F2
47534           AS2=PYALPS(X2)
47535           CG=8D0/9D0*((AS2/AG)**2-1D0)
47536           F2=ABS(XM02+(CA+CG)*XMG2+DTERM-X2)
47537         ELSE
47538           X3=X2
47539           X2=X1
47540           X1=R*X2+C*X0
47541           F2=F1
47542           AS1=PYALPS(X1)
47543           CG=8D0/9D0*((AS1/AG)**2-1D0)
47544           F1=ABS(XM02+(CA+CG)*XMG2+DTERM-X1)
47545         ENDIF
47546         GOTO 100
47547       ENDIF
47548       IF(F1.LT.F2) THEN
47549         PYRNMQ=X1
47550         XMIN=X1
47551       ELSE
47552         PYRNMQ=X2
47553         XMIN=X2
47554       ENDIF
47555  
47556       RETURN
47557       END
47558  
47559 C*********************************************************************
47560  
47561 C...PYTHRG
47562 C...Calculates the mass eigenstates of the third generation sfermions.
47563 C...Created:  5-31-96
47564  
47565       SUBROUTINE PYTHRG
47566  
47567 C...Double precision and integer declarations.
47568       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47569       IMPLICIT INTEGER(I-N)
47570       INTEGER PYK,PYCHGE,PYCOMP
47571 C...Parameter statement to help give large particle numbers.
47572       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
47573      &KEXCIT=4000000,KDIMEN=5000000)
47574 C...Commonblocks.
47575       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47576       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47577       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
47578       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
47579      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
47580       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
47581  
47582 C...Local variables.
47583       DOUBLE PRECISION BETA
47584       DOUBLE PRECISION AM2(2,2),RT(2,2),DI(2,2)
47585       DOUBLE PRECISION XMZ2,XMW2,TANB,XMU,COS2B,XMQL2,XMQR2
47586       DOUBLE PRECISION XMF,XMF2,DIFF,SAME,XMF12,XMF22,SMALL
47587       DOUBLE PRECISION ATR,AMQR,AMQL
47588       INTEGER ID1(3),ID2(3),ID3(3),ID4(3)
47589       INTEGER IF,I,J,II,JJ,IT,L
47590       LOGICAL DTERM
47591       DATA SMALL/1D-3/
47592       DATA ID1/10,10,13/
47593       DATA ID2/5,6,15/
47594       DATA ID3/15,16,17/
47595       DATA ID4/11,12,14/
47596       DATA DTERM/.TRUE./
47597  
47598       XMZ2=PMAS(23,1)**2
47599       XMW2=PMAS(24,1)**2
47600       TANB=RMSS(5)
47601       XMU=-RMSS(4)
47602       BETA=ATAN(TANB)
47603       COS2B=COS(2D0*BETA)
47604  
47605 C...OPTION TO FIX T1, T2, B1 MASSES AND MIXINGS
47606  
47607       IOPT=IMSS(5)
47608       IF(IOPT.EQ.1) THEN
47609         CTT=DCOS(RMSS(27))
47610         CTT2=CTT**2
47611         STT=DSIN(RMSS(27))
47612         STT2=STT**2
47613         XM12=RMSS(10)**2
47614         XM22=RMSS(12)**2
47615         XMQL2=CTT2*XM12+STT2*XM22
47616         XMQR2=STT2*XM12+CTT2*XM22
47617         XMF2=PYMRUN(6,PMAS(6,1)**2)**2
47618         ATOP=-XMU/TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
47619         RMSS(16)=ATOP
47620 C......SUBTRACT OUT D-TERM AND FERMION MASS
47621         XMQL2=XMQL2-XMF2-(4D0*XMW2-XMZ2)*COS2B/6D0
47622         XMQR2=XMQR2-XMF2+(XMW2-XMZ2)*COS2B*2D0/3D0
47623         IF(XMQL2.GE.0D0) THEN
47624           RMSS(10)=SQRT(XMQL2)
47625         ELSE
47626           RMSS(10)=-SQRT(-XMQL2)
47627         ENDIF
47628         IF(XMQR2.GE.0D0) THEN
47629           RMSS(12)=SQRT(XMQR2)
47630         ELSE
47631           RMSS(12)=-SQRT(-XMQR2)
47632         ENDIF
47633  
47634 C SAME FOR BOTTOM SQUARK
47635         CTT=DCOS(RMSS(26))
47636         CTT2=CTT**2
47637         STT=DSIN(RMSS(26))
47638         STT2=STT**2
47639         XM22=RMSS(11)**2
47640         XMF2=PYMRUN(5,PMAS(6,1)**2)**2
47641         XMQL2=SIGN(RMSS(10)**2,RMSS(10))-(2D0*XMW2+XMZ2)*COS2B/6D0+XMF2
47642         IF(ABS(CTT).GE..9999D0) THEN
47643           ABOT=-XMU*TANB
47644           XMQR2=RMSS(11)**2
47645         ELSEIF(ABS(CTT).LE.1D-4) THEN
47646           ABOT=-XMU*TANB
47647           XMQR2=RMSS(11)**2
47648         ELSE
47649           XM12=(XMQL2-STT2*XM22)/CTT2
47650           XMQR2=STT2*XM12+CTT2*XM22
47651           ABOT=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
47652         ENDIF
47653         RMSS(15)=ABOT
47654 C......SUBTRACT OUT D-TERM AND FERMION MASS
47655         XMQR2=XMQR2-(XMW2-XMZ2)*COS2B/3D0-XMF2
47656         IF(XMQR2.GE.0D0) THEN
47657           RMSS(11)=SQRT(XMQR2)
47658         ELSE
47659           RMSS(11)=-SQRT(-XMQR2)
47660         ENDIF
47661 C SAME FOR TAU SLEPTON
47662         CTT=DCOS(RMSS(28))
47663         CTT2=CTT**2
47664         STT=DSIN(RMSS(28))
47665         STT2=STT**2
47666         XM12=RMSS(13)**2
47667         XM22=RMSS(14)**2
47668         XMQL2=CTT2*XM12+STT2*XM22
47669         XMQR2=STT2*XM12+CTT2*XM22
47670         XMFR=PMAS(15,1)
47671         XMF2=XMFR**2
47672         ATAU=-XMU*TANB+CTT*STT*(XM12-XM22)/SQRT(XMF2)
47673         RMSS(17)=ATAU
47674 C......SUBTRACT OUT D-TERM AND FERMION MASS
47675         XMQL2=XMQL2-XMF2+(-.5D0*XMZ2+XMW2)*COS2B
47676         XMQR2=XMQR2-XMF2+(XMZ2-XMW2)*COS2B
47677         IF(XMQL2.GE.0D0) THEN
47678           RMSS(13)=SQRT(XMQL2)
47679         ELSE
47680           RMSS(13)=-SQRT(-XMQL2)
47681         ENDIF
47682         IF(XMQR2.GE.0D0) THEN
47683           RMSS(14)=SQRT(XMQR2)
47684         ELSE
47685           RMSS(14)=-SQRT(-XMQR2)
47686         ENDIF
47687       ENDIF
47688       DO 170 L=1,3
47689         AMQL=RMSS(ID1(L))
47690         IF(AMQL.LT.0D0) THEN
47691           XMQL2=-AMQL**2
47692         ELSE
47693           XMQL2=AMQL**2
47694         ENDIF
47695         ATR=RMSS(ID3(L))
47696         AMQR=RMSS(ID4(L))
47697         IF(AMQR.LT.0D0) THEN
47698           XMQR2=-AMQR**2
47699         ELSE
47700           XMQR2=AMQR**2
47701         ENDIF
47702         IF=ID2(L)
47703         XMF=PYMRUN(IF,PMAS(6,1)**2)
47704         XMF2=XMF**2
47705         AM2(1,1)=XMQL2+XMF2
47706         AM2(2,2)=XMQR2+XMF2
47707         IF(AM2(1,1).EQ.AM2(2,2)) AM2(2,2)=AM2(2,2)*1.00001D0
47708         IF(DTERM) THEN
47709           IF(L.EQ.1) THEN
47710             AM2(1,1)=AM2(1,1)-(2D0*XMW2+XMZ2)*COS2B/6D0
47711             AM2(2,2)=AM2(2,2)+(XMW2-XMZ2)*COS2B/3D0
47712             AM2(1,2)=XMF*(ATR+XMU*TANB)
47713           ELSEIF(L.EQ.2) THEN
47714             AM2(1,1)=AM2(1,1)+(4D0*XMW2-XMZ2)*COS2B/6D0
47715             AM2(2,2)=AM2(2,2)-(XMW2-XMZ2)*COS2B*2D0/3D0
47716             AM2(1,2)=XMF*(ATR+XMU/TANB)
47717           ELSEIF(L.EQ.3) THEN
47718             IF(IMSS(8).EQ.1) THEN
47719               AM2(1,1)=RMSS(6)**2
47720               AM2(2,2)=RMSS(7)**2
47721               AM2(1,2)=0D0
47722               RMSS(13)=RMSS(6)
47723               RMSS(14)=RMSS(7)
47724             ELSE
47725               AM2(1,1)=AM2(1,1)-(-.5D0*XMZ2+XMW2)*COS2B
47726               AM2(2,2)=AM2(2,2)-(XMZ2-XMW2)*COS2B
47727               AM2(1,2)=XMF*(ATR+XMU*TANB)
47728             ENDIF
47729           ENDIF
47730         ENDIF
47731         AM2(2,1)=AM2(1,2)
47732         DETM=AM2(1,1)*AM2(2,2)-AM2(2,1)**2
47733         IF(DETM.LT.0D0) THEN
47734           WRITE(MSTU(11),*) ID2(L),DETM,AM2
47735           CALL PYERRM(30,' NEGATIVE**2 MASS FOR SFERMION IN PYTHRG ')
47736         ENDIF
47737         SAME=0.5D0*(AM2(1,1)+AM2(2,2))
47738         DIFF=0.5D0*SQRT((AM2(1,1)-AM2(2,2))**2+4D0*AM2(1,2)*AM2(2,1))
47739         XMF12=SAME-DIFF
47740         XMF22=SAME+DIFF
47741         IT=0
47742         IF(XMF22-XMF12.GT.0D0) THEN
47743           RT(1,1) = SQRT(MAX(0D0,(XMF22-AM2(1,1))/(XMF22-XMF12)))
47744           RT(2,2) = RT(1,1)
47745           RT(1,2) = -SIGN(SQRT(MAX(0D0,1D0-RT(1,1)**2)),
47746      &    AM2(1,2)/(XMF22-XMF12))
47747           RT(2,1) = -RT(1,2)
47748         ELSE
47749           RT(1,1) = 1D0
47750           RT(2,2) = RT(1,1)
47751           RT(1,2) = 0D0
47752           RT(2,1) = -RT(1,2)
47753         ENDIF
47754   100   CONTINUE
47755         IT=IT+1
47756  
47757         DO 140 I=1,2
47758           DO 130 JJ=1,2
47759             DI(I,JJ)=0D0
47760             DO 120 II=1,2
47761               DO 110 J=1,2
47762                 DI(I,JJ)=DI(I,JJ)+RT(I,J)*AM2(J,II)*RT(JJ,II)
47763   110         CONTINUE
47764   120       CONTINUE
47765   130     CONTINUE
47766   140   CONTINUE
47767  
47768         IF(DI(1,1).GT.DI(2,2)) THEN
47769           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION '
47770           WRITE(MSTU(11),*) L,SQRT(XMF12),SQRT(XMF22)
47771           WRITE(MSTU(11),*) AM2
47772           WRITE(MSTU(11),*) DI
47773           WRITE(MSTU(11),*) RT
47774           DI(1,1)=-RT(2,1)
47775           DI(2,2)=RT(1,2)
47776           DI(1,2)=-RT(2,2)
47777           DI(2,1)=RT(1,1)
47778           DO 160 I=1,2
47779             DO 150 J=1,2
47780               RT(I,J)=DI(I,J)
47781   150       CONTINUE
47782   160     CONTINUE
47783           GOTO 100
47784         ELSEIF(ABS(DI(1,2)*DI(2,1)/DI(1,1)/DI(2,2)).GT.SMALL) THEN
47785           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
47786      &    ' OFF DIAGONAL ELEMENTS '
47787           WRITE(MSTU(11),*) 'MASSES = ',L,SQRT(XMF12),SQRT(XMF22)
47788           WRITE(MSTU(11),*) DI
47789           WRITE(MSTU(11),*) ' ROTATION = ',RT
47790 C...STOP
47791         ELSEIF(DI(1,1).LT.0D0.OR.DI(2,2).LT.0D0) THEN
47792           WRITE(MSTU(11),*) ' ERROR IN DIAGONALIZATION,'//
47793      &    ' NEGATIVE MASSES '
47794           CALL PYSTOP(111)
47795         ENDIF
47796         PMAS(PYCOMP(KSUSY1+IF),1)=SQRT(XMF12)
47797         PMAS(PYCOMP(KSUSY2+IF),1)=SQRT(XMF22)
47798         SFMIX(IF,1)=RT(1,1)
47799         SFMIX(IF,2)=RT(1,2)
47800         SFMIX(IF,3)=RT(2,1)
47801         SFMIX(IF,4)=RT(2,2)
47802   170 CONTINUE
47803  
47804 C.....TAU SNEUTRINO MASS...L=3
47805  
47806       XARG=AM2(1,1)+XMW2*COS2B
47807       IF(XARG.LT.0D0) THEN
47808         WRITE(MSTU(11),*) ' PYTHRG:: TAU SNEUTRINO MASS IS NEGATIVE'//
47809      &  ' FROM THE SUM RULE. '
47810         WRITE(MSTU(11),*) '  TRY A SMALLER VALUE OF TAN(BETA). '
47811         RETURN
47812       ELSE
47813         PMAS(PYCOMP(KSUSY1+16),1)=SQRT(XARG)
47814       ENDIF
47815  
47816       RETURN
47817       END
47818 C*********************************************************************
47819  
47820 C...PYINOM
47821 C...Finds the mass eigenstates and mixing matrices for neutralinos
47822 C...and charginos.
47823  
47824       SUBROUTINE PYINOM
47825  
47826 C...Double precision and integer declarations.
47827       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
47828       IMPLICIT INTEGER(I-N)
47829       INTEGER PYCOMP
47830 C...Parameter statement to help give large particle numbers.
47831       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
47832      &KEXCIT=4000000,KDIMEN=5000000)
47833 C...Commonblocks.
47834       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
47835       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
47836       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
47837       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
47838      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
47839       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
47840  
47841 C...Local variables.
47842       DOUBLE PRECISION XMW,XMZ,XM(4)
47843       DOUBLE PRECISION AR(5,5),WR(5),ZR(5,5),ZI(5,5),AI(5,5)
47844       DOUBLE PRECISION WI(5),FV1(5),FV2(5),FV3(5)
47845       DOUBLE PRECISION COSW,SINW
47846       DOUBLE PRECISION XMU
47847       DOUBLE PRECISION TANB,COSB,SINB
47848       DOUBLE PRECISION XM1,XM2,XM3,BETA
47849       DOUBLE PRECISION Q2,AEM,A1,A2,AQ,RM1,RM2
47850       DOUBLE PRECISION ARG,X0,X1,AX0,AX1,AT,BT
47851       DOUBLE PRECISION Y0,Y1,AMGX0,AM1X0,AMGX1,AM1X1
47852       DOUBLE PRECISION ARGX0,AR1X0,ARGX1,AR1X1
47853       DOUBLE PRECISION PYALPS,PYALEM
47854       DOUBLE PRECISION PYRNM3
47855       COMPLEX*16 CAR(4,4),CAI(4,4),CA1,CA2
47856       INTEGER IERR,INDEX(4),I,J,K,IOPT,ILR,KFNCHI(4)
47857       DATA KFNCHI/1000022,1000023,1000025,1000035/
47858  
47859       IOPT=IMSS(2)
47860       IF(IMSS(1).EQ.2) THEN
47861         IOPT=1
47862       ENDIF
47863 C...M1, M2, AND M3 ARE INDEPENDENT
47864       IF(IOPT.EQ.0) THEN
47865         XM1=RMSS(1)
47866         XM2=RMSS(2)
47867         XM3=RMSS(3)
47868       ELSEIF(IOPT.GE.1) THEN
47869         Q2=PMAS(23,1)**2
47870         AEM=PYALEM(Q2)
47871         A2=AEM/PARU(102)
47872         A1=AEM/(1D0-PARU(102))
47873         XM1=RMSS(1)
47874         XM2=RMSS(2)
47875         IF(IMSS(1).EQ.2) XM1=RMSS(1)/RMSS(20)*A1*5D0/3D0
47876         IF(IOPT.EQ.1) THEN
47877           XM2=XM1*A2/A1*3D0/5D0
47878           RMSS(2)=XM2
47879         ELSEIF(IOPT.EQ.3) THEN
47880           XM1=XM2*5D0/3D0*A1/A2
47881           RMSS(1)=XM1
47882         ENDIF
47883         XM3=PYRNM3(XM2/A2)
47884         RMSS(3)=XM3
47885         IF(XM3.LE.0D0) THEN
47886           WRITE(MSTU(11),*) ' ERROR WITH M3 = ',XM3
47887           CALL PYSTOP(105)
47888         ENDIF
47889       ENDIF
47890  
47891 C...GLUINO MASS
47892       IF(IMSS(3).EQ.1) THEN
47893         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)
47894       ELSE
47895         AQ=0D0
47896         DO 110 I=1,4
47897           DO 100 ILR=1,2
47898             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
47899             AQ=AQ+0.5D0*((2D0-RM1)*(RM1*LOG(RM1)-1D0)
47900      &      +(1D0-RM1)**2*LOG(ABS(1D0-RM1)))
47901   100     CONTINUE
47902   110   CONTINUE
47903  
47904         DO 130 I=5,6
47905           DO 120 ILR=1,2
47906             RM1=PMAS(PYCOMP(ILR*KSUSY1+I),1)**2/XM3**2
47907             RM2=PMAS(I,1)**2/XM3**2
47908             ARG=(RM1-RM2-1D0)**2-4D0*RM2**2
47909             IF(ARG.GE.0D0) THEN
47910               X0=0.5D0*(1D0+RM2-RM1-SQRT(ARG))
47911               AX0=ABS(X0)
47912               X1=0.5D0*(1D0+RM2-RM1+SQRT(ARG))
47913               AX1=ABS(X1)
47914               IF(X0.EQ.1D0) THEN
47915                 AT=-1D0
47916                 BT=0.25D0
47917               ELSEIF(X0.EQ.0D0) THEN
47918                 AT=0D0
47919                 BT=-0.25D0
47920               ELSE
47921                 AT=0.5D0*LOG(ABS(1D0-X0))*(1D0-X0**2)+
47922      &          0.5D0*X0**2*LOG(AX0)
47923                 BT=(-1D0-2D0*X0)/4D0
47924               ENDIF
47925               IF(X1.EQ.1D0) THEN
47926                 AT=-1D0+AT
47927                 BT=0.25D0+BT
47928               ELSEIF(X1.EQ.0D0) THEN
47929                 AT=0D0+AT
47930                 BT=-0.25D0+BT
47931               ELSE
47932                 AT=0.5D0*LOG(ABS(1D0-X1))*(1D0-X1**2)+0.5D0*
47933      &          X1**2*LOG(AX1)+AT
47934                 BT=(-1D0-2D0*X1)/4D0+BT
47935               ENDIF
47936               AQ=AQ+AT+BT
47937             ELSE
47938               X0=0.5D0*(1D0+RM2-RM1)
47939               Y0=-0.5D0*SQRT(-ARG)
47940               AMGX0=SQRT(X0**2+Y0**2)
47941               AM1X0=SQRT((1D0-X0)**2+Y0**2)
47942               ARGX0=ATAN2(-X0,-Y0)
47943               AR1X0=ATAN2(1D0-X0,Y0)
47944               X1=X0
47945               Y1=-Y0
47946               AMGX1=AMGX0
47947               AM1X1=AM1X0
47948               ARGX1=ATAN2(-X1,-Y1)
47949               AR1X1=ATAN2(1D0-X1,Y1)
47950               AT=0.5D0*LOG(AM1X0)*(1D0-X0**2+3D0*Y0**2)
47951      &        +0.5D0*(X0**2-Y0**2)*LOG(AMGX0)
47952               BT=(-1D0-2D0*X0)/4D0+X0*Y0*( AR1X0-ARGX0 )
47953               AT=AT+0.5D0*LOG(AM1X1)*(1D0-X1**2+3D0*Y1**2)
47954      &        +0.5D0*(X1**2-Y1**2)*LOG(AMGX1)
47955               BT=BT+(-1D0-2D0*X1)/4D0+X1*Y1*( AR1X1-ARGX1 )
47956               AQ=AQ+AT+BT
47957             ENDIF
47958   120     CONTINUE
47959   130   CONTINUE
47960         PMAS(PYCOMP(KSUSY1+21),1)=ABS(XM3)*(1D0+PYALPS(XM3**2)
47961      &  /(2D0*PARU(2))*(15D0+AQ))
47962       ENDIF
47963  
47964 C...NEUTRALINO MASSES
47965       DO 150 I=1,4
47966         DO 140 J=1,4
47967           AI(I,J)=0D0
47968   140   CONTINUE
47969   150 CONTINUE
47970       XMZ=PMAS(23,1)/100D0
47971       XMW=PMAS(24,1)/100D0
47972       XMU=RMSS(4)/100D0
47973       SINW=SQRT(PARU(102))
47974       COSW=SQRT(1D0-PARU(102))
47975       TANB=RMSS(5)
47976       BETA=ATAN(TANB)
47977       COSB=COS(BETA)
47978       SINB=TANB*COSB
47979 
47980       XM2=XM2/100D0
47981       XM1=XM1/100D0
47982       
47983  
47984 C... Definitions:
47985 C...    psi^0 =(-i bino^0, -i wino^0, h_d^0(=H_1^0), h_u^0(=H_2^0))
47986 C... => L_neutralino = -1/2*(psi^0)^T * [AR] * psi^0 + h.c.
47987       AR(1,1) = XM1*COS(RMSS(30))
47988       AI(1,1) = XM1*SIN(RMSS(30))
47989       AR(2,2) = XM2*COS(RMSS(31))
47990       AI(2,2) = XM2*SIN(RMSS(31))
47991       AR(3,3) = 0D0
47992       AR(4,4) = 0D0
47993       AR(1,2) = 0D0
47994       AR(2,1) = 0D0
47995       AR(1,3) = -XMZ*SINW*COSB
47996       AR(3,1) = AR(1,3)
47997       AR(1,4) = XMZ*SINW*SINB
47998       AR(4,1) = AR(1,4)
47999       AR(2,3) = XMZ*COSW*COSB
48000       AR(3,2) = AR(2,3)
48001       AR(2,4) = -XMZ*COSW*SINB
48002       AR(4,2) = AR(2,4)
48003       AR(3,4) = -XMU*COS(RMSS(33))
48004       AI(3,4) = -XMU*SIN(RMSS(33))
48005       AR(4,3) = -XMU*COS(RMSS(33))
48006       AI(4,3) = -XMU*SIN(RMSS(33))
48007 C      CALL PYEIG4(AR,WR,ZR)
48008       CALL PYEICG(5,4,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
48009       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
48010      & 'PROBLEM WITH PYEICG IN PYINOM ')
48011       DO 160 I=1,4
48012         INDEX(I)=I
48013         XM(I)=ABS(WR(I))
48014   160 CONTINUE
48015       DO 180 I=2,4
48016         K=I
48017         DO 170 J=I-1,1,-1
48018           IF(XM(K).LT.XM(J)) THEN
48019             ITMP=INDEX(J)
48020             XTMP=XM(J)
48021             INDEX(J)=INDEX(K)
48022             XM(J)=XM(K)
48023             INDEX(K)=ITMP
48024             XM(K)=XTMP
48025             K=K-1
48026           ELSE
48027             GOTO 180
48028           ENDIF
48029   170   CONTINUE
48030   180 CONTINUE
48031  
48032  
48033       DO 210 I=1,4
48034         K=INDEX(I)
48035         SMZ(I)=WR(K)*100D0
48036         PMAS(PYCOMP(KFNCHI(I)),1)=ABS(SMZ(I))
48037         S=0D0
48038         DO 190 J=1,4
48039           S=S+ZR(J,K)**2+ZI(J,K)**2
48040   190   CONTINUE
48041         DO 200 J=1,4
48042           ZMIX(I,J)=ZR(J,K)/SQRT(S)
48043           ZMIXI(I,J)=ZI(J,K)/SQRT(S)
48044           IF(ABS(ZMIX(I,J)).LT.1D-6) ZMIX(I,J)=0D0
48045           IF(ABS(ZMIXI(I,J)).LT.1D-6) ZMIXI(I,J)=0D0
48046   200   CONTINUE
48047   210 CONTINUE
48048  
48049 C...CHARGINO MASSES
48050 C.....Find eigenvectors of X X^*
48051       DO I=1,4
48052         DO J=1,4
48053           AR(I,J)=0D0
48054           AI(I,J)=0D0
48055         ENDDO
48056       ENDDO
48057       AI(1,1) = 0D0
48058       AI(2,2) = 0D0
48059       AR(1,1) = XM2**2+2D0*XMW**2*SINB**2
48060       AR(2,2) = XMU**2+2D0*XMW**2*COSB**2
48061       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
48062      &XMU*COS(RMSS(33))*SINB)
48063       AI(1,2) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*COSB-
48064      &XMU*SIN(RMSS(33))*SINB)
48065       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*COSB+
48066      &XMU*COS(RMSS(33))*SINB)
48067       AI(2,1) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*COSB+
48068      &XMU*SIN(RMSS(33))*SINB)
48069       CALL PYEICG(5,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
48070       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
48071      & 'PROBLEM WITH PYEICG IN PYINOM ')
48072       INDEX(1)=1
48073       INDEX(2)=2
48074       IF(WR(2).LT.WR(1)) THEN
48075         INDEX(1)=2
48076         INDEX(2)=1
48077       ENDIF
48078 
48079  
48080       DO 240 I=1,2
48081         K=INDEX(I)
48082         SMW(I)=SQRT(WR(K))*100D0
48083         S=0D0
48084         DO 220 J=1,2
48085           S=S+ZR(J,K)**2+ZI(J,K)**2
48086   220   CONTINUE
48087         DO 230 J=1,2
48088           UMIX(I,J)=ZR(J,K)/SQRT(S)
48089           UMIXI(I,J)=-ZI(J,K)/SQRT(S)
48090           IF(ABS(UMIX(I,J)).LT.1D-6) UMIX(I,J)=0D0
48091           IF(ABS(UMIXI(I,J)).LT.1D-6) UMIXI(I,J)=0D0
48092   230   CONTINUE
48093   240 CONTINUE
48094 C...Force chargino mass > neutralino mass
48095       IFRC=0
48096       IF(ABS(SMW(1)).LT.ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1)) THEN
48097         CALL PYERRM(8,'(PYINOM:) '//
48098      &      'forcing m(~chi+_1) > m(~chi0_1) + 2m(pi0)')
48099         SMW(1)=SIGN(ABS(SMZ(1))+2D0*PMAS(PYCOMP(111),1),SMW(1))
48100         IFRC=1
48101       ENDIF
48102       PMAS(PYCOMP(KSUSY1+24),1)=SMW(1)
48103       PMAS(PYCOMP(KSUSY1+37),1)=SMW(2)
48104  
48105 C.....Find eigenvectors of X^* X
48106       DO I=1,4
48107         DO J=1,4
48108           AR(I,J)=0D0
48109           AI(I,J)=0D0
48110           ZR(I,J)=0D0
48111           ZI(I,J)=0D0
48112         ENDDO
48113       ENDDO
48114       AI(1,1) = 0D0
48115       AI(2,2) = 0D0
48116       AR(1,1) = XM2**2+2D0*XMW**2*COSB**2
48117       AR(2,2) = XMU**2+2D0*XMW**2*SINB**2
48118       AR(1,2) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
48119      &XMU*COS(RMSS(33))*COSB)
48120       AI(1,2) = SQRT(2D0)*XMW*(-XM2*SIN(RMSS(31))*SINB+
48121      &XMU*SIN(RMSS(33))*COSB)
48122       AR(2,1) = SQRT(2D0)*XMW*(XM2*COS(RMSS(31))*SINB+
48123      &XMU*COS(RMSS(33))*COSB)
48124       AI(2,1) = SQRT(2D0)*XMW*(XM2*SIN(RMSS(31))*SINB-
48125      &XMU*SIN(RMSS(33))*COSB)
48126       CALL PYEICG(5,2,AR,AI,WR,WI,1,ZR,ZI,FV1,FV2,FV3,IERR)
48127       IF(IERR.NE.0) CALL PYERRM(18,'(PYINOM:) '//
48128      & 'PROBLEM WITH PYEICG IN PYINOM ')
48129       INDEX(1)=1
48130       INDEX(2)=2
48131       IF(WR(2).LT.WR(1)) THEN
48132         INDEX(1)=2
48133         INDEX(2)=1
48134       ENDIF
48135  
48136       SIMAG=0D0
48137       DO 270 I=1,2
48138         K=INDEX(I)
48139         S=0D0
48140         DO 250 J=1,2
48141           S=S+ZR(J,K)**2+ZI(J,K)**2
48142           SIMAG=SIMAG+ZI(J,K)**2
48143   250   CONTINUE
48144         DO 260 J=1,2
48145           VMIX(I,J)=ZR(J,K)/SQRT(S)
48146           VMIXI(I,J)=-ZI(J,K)/SQRT(S)
48147           IF(ABS(VMIX(I,J)).LT.1D-6) VMIX(I,J)=0D0
48148           IF(ABS(VMIXI(I,J)).LT.1D-6) VMIXI(I,J)=0D0
48149   260   CONTINUE
48150   270 CONTINUE
48151 
48152 C.....Simplify if no phases
48153       IF(SIMAG.LT.1D-6) THEN
48154         AR(1,1) = XM2*COS(RMSS(31))
48155         AR(2,2) = XMU*COS(RMSS(33))
48156         AR(1,2) = SQRT(2D0)*XMW*SINB
48157         AR(2,1) = SQRT(2D0)*XMW*COSB
48158         IKNT=0
48159  300    CONTINUE
48160         DO I=1,2
48161           DO J=1,2
48162             ZR(I,J)=0D0
48163           ENDDO
48164         ENDDO
48165 
48166         DO I=1,2
48167           DO J=1,2
48168             DO K=1,2
48169               DO L=1,2
48170                 ZR(I,J)=ZR(I,J)+UMIX(I,K)*AR(K,L)*VMIX(J,L)
48171               ENDDO
48172             ENDDO
48173           ENDDO
48174         ENDDO
48175         VMIX(1,1)=VMIX(1,1)*SMW(1)/ZR(1,1)/100D0
48176         VMIX(1,2)=VMIX(1,2)*SMW(1)/ZR(1,1)/100D0
48177         VMIX(2,1)=VMIX(2,1)*SMW(2)/ZR(2,2)/100D0
48178         VMIX(2,2)=VMIX(2,2)*SMW(2)/ZR(2,2)/100D0
48179         IF(IKNT.EQ.2.AND.IFRC.EQ.0) THEN
48180           CALL PYERRM(18,'(PYINOM:) Problem with Charginos')
48181         ELSEIF(ZR(1,1).LT.0D0.OR.ZR(2,2).LT.0D0) THEN
48182           IKNT=IKNT+1
48183           GOTO 300
48184         ENDIF
48185 C.....Must deal with phases
48186       ELSE
48187         CAR(1,1) = XM2*CMPLX(COS(RMSS(31)),SIN(RMSS(31)))
48188         CAR(2,2) = XMU*CMPLX(COS(RMSS(33)),SIN(RMSS(33)))
48189         CAR(1,2) = SQRT(2D0)*XMW*SINB*CMPLX(1D0,0D0)
48190         CAR(2,1) = SQRT(2D0)*XMW*COSB*CMPLX(1D0,0D0)
48191 
48192         IKNT=0
48193  310    CONTINUE
48194         DO I=1,2
48195           DO J=1,2
48196             CAI(I,J)=CMPLX(0D0,0D0)
48197           ENDDO
48198         ENDDO
48199 
48200         DO I=1,2
48201           DO J=1,2
48202             DO K=1,2
48203               DO L=1,2
48204                 CAI(I,J)=CAI(I,J)+CMPLX(UMIX(I,K),-UMIXI(I,K))*CAR(K,L)*
48205      &           CMPLX(VMIX(J,L),VMIXI(J,L))
48206               ENDDO
48207             ENDDO
48208           ENDDO
48209         ENDDO
48210 
48211         CA1=SMW(1)*CAI(1,1)/ABS(CAI(1,1))**2/100D0
48212         CA2=SMW(2)*CAI(2,2)/ABS(CAI(2,2))**2/100D0
48213         TEMPR=VMIX(1,1)
48214         TEMPI=VMIXI(1,1)
48215         VMIX(1,1)=TEMPR*DBLE(CA1)-TEMPI*DIMAG(CA1)
48216         VMIXI(1,1)=TEMPI*DBLE(CA1)+TEMPR*DIMAG(CA1)
48217         TEMPR=VMIX(1,2)
48218         TEMPI=VMIXI(1,2)
48219         VMIX(1,2)=TEMPR*DBLE(CA1)-TEMPI*DIMAG(CA1)
48220         VMIXI(1,2)=TEMPI*DBLE(CA1)+TEMPR*DIMAG(CA1)
48221         TEMPR=VMIX(2,1)
48222         TEMPI=VMIXI(2,1)
48223         VMIX(2,1)=TEMPR*DBLE(CA2)-TEMPI*DIMAG(CA2)
48224         VMIXI(2,1)=TEMPI*DBLE(CA2)+TEMPR*DIMAG(CA2)
48225         TEMPR=VMIX(2,2)
48226         TEMPI=VMIXI(2,2)
48227         VMIX(2,2)=TEMPR*DBLE(CA2)-TEMPI*DIMAG(CA2)
48228         VMIXI(2,2)=TEMPI*DBLE(CA2)+TEMPR*DIMAG(CA2)
48229         IF(IKNT.EQ.2.AND.IFRC.EQ.0) THEN
48230           CALL PYERRM(18,'(PYINOM:) Problem with Charginos')
48231         ELSEIF(DBLE(CA1).LT.0D0.OR.DBLE(CA2).LT.0D0.OR.
48232      &   ABS(IMAG(CA1)).GT.1D-3.OR.ABS(IMAG(CA2)).GT.1D-3) THEN
48233           IKNT=IKNT+1
48234           GOTO 310
48235         ENDIF
48236       ENDIF 
48237       RETURN
48238       END
48239  
48240 C*********************************************************************
48241  
48242 C...PYRNM3
48243 C...Calculates the running of M3, the SU(3) gluino mass parameter.
48244  
48245       FUNCTION PYRNM3(RGUT)
48246  
48247 C...Double precision and integer declarations.
48248       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48249       IMPLICIT INTEGER(I-N)
48250       INTEGER PYK,PYCHGE,PYCOMP
48251  
48252 C...Local variables.
48253       DOUBLE PRECISION R
48254       DOUBLE PRECISION TOL
48255       EXTERNAL PYALPS
48256       DOUBLE PRECISION PYALPS
48257       DATA TOL/0.001D0/
48258       DATA R/0.61803399D0/
48259  
48260       C=1D0-R
48261  
48262       BX=RGUT*PYALPS(RGUT**2)
48263       AX=MIN(50D0,BX*0.5D0)
48264       CX=MAX(2000D0,2D0*BX)
48265  
48266       X0=AX
48267       X3=CX
48268       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
48269         X1=BX
48270         X2=BX+C*(CX-BX)
48271       ELSE
48272         X2=BX
48273         X1=BX-C*(BX-AX)
48274       ENDIF
48275       AS1=PYALPS(X1**2)
48276       F1=ABS(X1-RGUT*AS1)
48277       AS2=PYALPS(X2**2)
48278       F2=ABS(X2-RGUT*AS2)
48279   100 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2))) THEN
48280         IF(F2.LT.F1) THEN
48281           X0=X1
48282           X1=X2
48283           X2=R*X1+C*X3
48284           F1=F2
48285           AS2=PYALPS(X2**2)
48286           F2=ABS(X2-RGUT*AS2)
48287         ELSE
48288           X3=X2
48289           X2=X1
48290           X1=R*X2+C*X0
48291           F2=F1
48292           AS1=PYALPS(X1**2)
48293           F1=ABS(X1-RGUT*AS1)
48294         ENDIF
48295         GOTO 100
48296       ENDIF
48297       IF(F1.LT.F2) THEN
48298         PYRNM3=X1
48299         XMIN=X1
48300       ELSE
48301         PYRNM3=X2
48302         XMIN=X2
48303       ENDIF
48304  
48305       RETURN
48306       END
48307  
48308 C*********************************************************************
48309  
48310 C...PYEIG4
48311 C...Finds eigenvalues and eigenvectors to a 4 * 4 matrix.
48312 C...Specific application: mixing in neutralino sector.
48313  
48314       SUBROUTINE PYEIG4(A,W,Z)
48315  
48316 C...Double precision and integer declarations.
48317       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48318       IMPLICIT INTEGER(I-N)
48319       INTEGER PYK,PYCHGE,PYCOMP
48320  
48321 C...Arrays: in call and local.
48322       DIMENSION A(4,4),W(4),Z(4,4),X(4),D(4,4),E(4)
48323  
48324 C...Coefficients of fourth-degree equation from matrix.
48325 C...x**4 + b3 * x**3 + b2 * x**2 + b1 * x + b0 = 0.
48326       B3=-(A(1,1)+A(2,2)+A(3,3)+A(4,4))
48327       B2=0D0
48328       DO 110 I=1,3
48329         DO 100 J=I+1,4
48330           B2=B2+A(I,I)*A(J,J)-A(I,J)*A(J,I)
48331   100   CONTINUE
48332   110 CONTINUE
48333       B1=0D0
48334       B0=0D0
48335       DO 120 I=1,4
48336         I1=MOD(I,4)+1
48337         I2=MOD(I+1,4)+1
48338         I3=MOD(I+2,4)+1
48339         B1=B1+A(I,I)*(-A(I1,I1)*A(I2,I2)+A(I1,I2)*A(I2,I1)+
48340      &  A(I1,I3)*A(I3,I1)+A(I2,I3)*A(I3,I2))-
48341      &  A(I,I1)*A(I1,I2)*A(I2,I)-A(I,I2)*A(I2,I1)*A(I1,I)
48342         B0=B0+(-1D0)**(I+1)*A(1,I)*(
48343      &  A(2,I1)*(A(3,I2)*A(4,I3)-A(3,I3)*A(4,I2))+
48344      &  A(2,I2)*(A(3,I3)*A(4,I1)-A(3,I1)*A(4,I3))+
48345      &  A(2,I3)*(A(3,I1)*A(4,I2)-A(3,I2)*A(4,I1)))
48346   120 CONTINUE
48347  
48348 C...Coefficients of third-degree equation needed for
48349 C...separation into two second-degree equations.
48350 C...u**3 + c2 * u**2 + c1 * u + c0 = 0.
48351       C2=-B2
48352       C1=B1*B3-4D0*B0
48353       C0=-B1**2-B0*B3**2+4D0*B0*B2
48354       CQ=C1/3D0-C2**2/9D0
48355       CR=C1*C2/6D0-C0/2D0-C2**3/27D0
48356       CQR=CQ**3+CR**2
48357  
48358 C...Cases with one or three real roots.
48359       IF(CQR.GE.0D0) THEN
48360         S1=(CR+SQRT(CQR))**(1D0/3D0)
48361         S2=(CR-SQRT(CQR))**(1D0/3D0)
48362         U=S1+S2-C2/3D0
48363       ELSE
48364         SABS=SQRT(-CQ)
48365         THE=ACOS(CR/SABS**3)/3D0
48366         SRE=SABS*COS(THE)
48367         U=2D0*SRE-C2/3D0
48368       ENDIF
48369  
48370 C...Find and solve two second-degree equations.
48371       P1=B3/2D0-SQRT(B3**2/4D0+U-B2)
48372       P2=B3/2D0+SQRT(B3**2/4D0+U-B2)
48373       Q1=U/2D0+SQRT(U**2/4D0-B0)
48374       Q2=U/2D0-SQRT(U**2/4D0-B0)
48375       IF(ABS(P1*Q1+P2*Q2-B1).LT.ABS(P1*Q2+P2*Q1-B1)) THEN
48376         QSAV=Q1
48377         Q1=Q2
48378         Q2=QSAV
48379       ENDIF
48380       X(1)=-P1/2D0+SQRT(P1**2/4D0-Q1)
48381       X(2)=-P1/2D0-SQRT(P1**2/4D0-Q1)
48382       X(3)=-P2/2D0+SQRT(P2**2/4D0-Q2)
48383       X(4)=-P2/2D0-SQRT(P2**2/4D0-Q2)
48384  
48385 C...Order eigenvalues in asceding mass.
48386       W(1)=X(1)
48387       DO 150 I1=2,4
48388         DO 130 I2=I1-1,1,-1
48389           IF(ABS(X(I1)).GE.ABS(W(I2))) GOTO 140
48390           W(I2+1)=W(I2)
48391   130   CONTINUE
48392   140   W(I2+1)=X(I1)
48393   150 CONTINUE
48394  
48395 C...Find equation system for eigenvectors.
48396       DO 250 I=1,4
48397         DO 170 J1=1,4
48398           D(J1,J1)=A(J1,J1)-W(I)
48399           DO 160 J2=J1+1,4
48400             D(J1,J2)=A(J1,J2)
48401             D(J2,J1)=A(J2,J1)
48402   160     CONTINUE
48403   170   CONTINUE
48404  
48405 C...Find largest element in matrix.
48406         DAMAX=0D0
48407         DO 190 J1=1,4
48408           DO 180 J2=1,4
48409             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 180
48410             JA=J1
48411             JB=J2
48412             DAMAX=ABS(D(J1,J2))
48413   180     CONTINUE
48414   190   CONTINUE
48415  
48416 C...Subtract others by multiple of row selected above.
48417         DAMAX=0D0
48418         DO 210 J3=JA+1,JA+3
48419           J1=J3-4*((J3-1)/4)
48420           RL=D(J1,JB)/D(JA,JB)
48421           DO 200 J2=1,4
48422             D(J1,J2)=D(J1,J2)-RL*D(JA,J2)
48423             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 200
48424             JC=J1
48425             JD=J2
48426             DAMAX=ABS(D(J1,J2))
48427   200     CONTINUE
48428   210   CONTINUE
48429  
48430 C...Do one more subtraction of a row.
48431         DAMAX=0D0
48432         DO 230 J3=JC+1,JC+3
48433           J1=J3-4*((J3-1)/4)
48434           IF(J1.EQ.JA) GOTO 230
48435           RL=D(J1,JD)/D(JC,JD)
48436           DO 220 J2=1,4
48437             IF(J2.EQ.JB) GOTO 220
48438             D(J1,J2)=D(J1,J2)-RL*D(JC,J2)
48439             IF(ABS(D(J1,J2)).LE.DAMAX) GOTO 220
48440             JE=J1
48441             DAMAX=ABS(D(J1,J2))
48442   220     CONTINUE
48443   230   CONTINUE
48444  
48445 C...Construct unnormalized eigenvector.
48446         JF1=JD+1-4*(JD/4)
48447         JF2=JD+2-4*((JD+1)/4)
48448         IF(JF1.EQ.JB) JF1=JD+3-4*((JD+2)/4)
48449         IF(JF2.EQ.JB) JF2=JD+3-4*((JD+2)/4)
48450         E(JF1)=-D(JE,JF2)
48451         E(JF2)=D(JE,JF1)
48452         E(JD)=-(D(JC,JF1)*E(JF1)+D(JC,JF2)*E(JF2))/D(JC,JD)
48453         E(JB)=-(D(JA,JF1)*E(JF1)+D(JA,JF2)*E(JF2)+D(JA,JD)*E(JD))/
48454      &  D(JA,JB)
48455  
48456 C...Normalize and fill in final array.
48457         EA=SQRT(E(1)**2+E(2)**2+E(3)**2+E(4)**2)
48458         SGN=(-1D0)**INT(PYR(0)+0.5D0)
48459         DO 240 J=1,4
48460           Z(I,J)=SGN*E(J)/EA
48461   240   CONTINUE
48462   250 CONTINUE
48463  
48464       RETURN
48465       END
48466  
48467 C*********************************************************************
48468  
48469 C...PYHGGM
48470 C...Determines the Higgs boson mass spectrum using several inputs.
48471  
48472       SUBROUTINE PYHGGM(ALPHA)
48473  
48474 C...Double precision and integer declarations.
48475       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48476       IMPLICIT INTEGER(I-N)
48477       INTEGER PYK,PYCHGE,PYCOMP
48478 C...Parameter statement to help give large particle numbers.
48479       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
48480      &KEXCIT=4000000,KDIMEN=5000000)
48481 C...Commonblocks.
48482       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48483       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48484       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
48485       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
48486       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/
48487  
48488 C...Local variables.
48489       DOUBLE PRECISION AT,AB,XMU,TANB
48490       DOUBLE PRECISION ALPHA
48491       INTEGER IHOPT
48492       DOUBLE PRECISION DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD
48493       DOUBLE PRECISION DMU,DMH,DHM,DMHCH,DSA,DCA,DTANBA
48494       DOUBLE PRECISION DMC,DMDR,DMHP,DHMP,DAMP
48495       DOUBLE PRECISION DSTOP1,DSTOP2,DSBOT1,DSBOT2
48496  
48497       IHOPT=IMSS(4)
48498       IF(IHOPT.EQ.2) THEN
48499         ALPHA=RMSS(18)
48500         RETURN
48501       ENDIF
48502       AT=RMSS(16)
48503       AB=RMSS(15)
48504       DMGL=RMSS(3)
48505       XMU=RMSS(4)
48506       TANB=RMSS(5)
48507  
48508       DMA=RMSS(19)
48509       DTANB=TANB
48510       DMQ=RMSS(10)
48511       DMUR=RMSS(12)
48512       DMDR=RMSS(11)
48513       DMTOP=PMAS(6,1)
48514       DMC=PMAS(PYCOMP(KSUSY1+37),1)
48515       DAU=AT
48516       DAD=AB
48517       DMU=XMU
48518       RMSS(40)=0D0
48519       RMSS(41)=0D0
48520  
48521       IF(IHOPT.EQ.0) THEN
48522         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
48523      &  DMHCH,DSA,DCA,DTANBA)
48524       ELSEIF(IHOPT.EQ.1) THEN
48525         CALL PYSUBH (DMA,DTANB,DMQ,DMUR,DMTOP,DAU,DAD,DMU,DMH,DHM,
48526      &  DMHCH,DSA,DCA,DTANBA)
48527         CALL PYPOLE(3,DMC,DMA,DTANB,DMQ,DMUR,DMDR,DMTOP,DAU,DAD,DMU,
48528      &  DMH,DMHP,DHM,DHMP,DAMP,DSA,DCA,
48529      &  DSTOP1,DSTOP2,DSBOT1,DSBOT2,DTANBA,DMGL,DDT,DDB)
48530         RMSS(40)=DDT
48531         RMSS(41)=DDB
48532         DMH=DMHP
48533         DHM=DHMP
48534         DMA=DAMP
48535         IF(ABS(PMAS(PYCOMP(1000006),1)-DSTOP2).GT.5D-1) THEN
48536          WRITE(MSTU(11),*) ' STOP1 MASS DOES NOT MATCH IN PYHGGM '
48537          WRITE(MSTU(11),*) ' STOP1 MASSES = ',
48538      & PMAS(PYCOMP(1000006),1),DSTOP2
48539         ENDIF
48540         IF(ABS(PMAS(PYCOMP(2000006),1)-DSTOP1).GT.5D-1) THEN
48541          WRITE(MSTU(11),*) ' STOP2 MASS DOES NOT MATCH IN PYHGGM '
48542          WRITE(MSTU(11),*) ' STOP2 MASSES = ',
48543      & PMAS(PYCOMP(2000006),1),DSTOP1
48544         ENDIF
48545         IF(ABS(PMAS(PYCOMP(1000005),1)-DSBOT2).GT.5D-1) THEN
48546          WRITE(MSTU(11),*) ' SBOT1 MASS DOES NOT MATCH IN PYHGGM '
48547          WRITE(MSTU(11),*) ' SBOT1 MASSES = ',
48548      & PMAS(PYCOMP(1000005),1),DSBOT2
48549         ENDIF
48550         IF(ABS(PMAS(PYCOMP(2000005),1)-DSBOT1).GT.5D-1) THEN
48551          WRITE(MSTU(11),*) ' SBOT2 MASS DOES NOT MATCH IN PYHGGM '
48552          WRITE(MSTU(11),*) ' SBOT2 MASSES = ',
48553      & PMAS(PYCOMP(2000005),1),DSBOT1
48554         ENDIF
48555  
48556       ELSEIF (IHOPT.EQ.3) THEN
48557 c...Use FeynHiggs to fix Higgs sector (cf feynhiggs.de)
48558 C...Currently only available for SLHA spectrum read-in.
48559         IF (IMSS(1).NE.11.AND.IMSS(1).NE.12.AND.IMSS(1).NE.13) THEN
48560           CALL PYERRM(11,'(PYHGGM:) FeynHiggs needs SLHA or ISASUSY'
48561      &         //' spectrum, change IMSS(1) or IMSS(4) option.')
48562         ENDIF
48563         ALPHA=RMSS(18)
48564         RETURN
48565       ENDIF
48566  
48567       ALPHA=ACOS(DCA)
48568  
48569       PMAS(25,1)=DMH
48570       PMAS(35,1)=DHM
48571       PMAS(36,1)=DMA
48572       PMAS(37,1)=DMHCH
48573  
48574       RETURN
48575       END
48576  
48577 C*********************************************************************
48578  
48579 C...PYSUBH
48580 C...This routine computes the renormalization group improved
48581 C...values of Higgs masses and couplings in the MSSM.
48582  
48583 C...Program based on the work by M. Carena, J.R. Espinosa,
48584 c...M. Quiros and C.E.M. Wagner, CERN-preprint CERN-TH/95-45
48585  
48586 C...Input: MA,TANB = TAN(BETA),MQ,MUR,MTOP,AU,AD,MU
48587 C...All masses in GeV units. MA is the CP-odd Higgs mass,
48588 C...MTOP is the physical top mass, MQ and MUR are the soft
48589 C...supersymmetry breaking mass parameters of left handed
48590 C...and right handed stops respectively, AU and AD are the
48591 C...stop and sbottom trilinear soft breaking terms,
48592 C...respectively,  and MU is the supersymmetric
48593 C...Higgs mass parameter. We use the  conventions from
48594 C...the physics report of Haber and Kane: left right
48595 C...stop mixing term proportional to (AU - MU/TANB)
48596 C...We use as input TANB defined at the scale MTOP
48597  
48598 C...Output: MH,HM,MHCH, SA = SIN(ALPHA), CA= COS(ALPHA), TANBA
48599 C...where MH and HM are the lightest and heaviest CP-even
48600 C...Higgs masses, MHCH is the charged Higgs mass and
48601 C...ALPHA is the Higgs mixing angle
48602 C...TANBA is the angle TANB at the CP-odd Higgs mass scale
48603  
48604 C...Range of validity:
48605 C...(STOP1**2 - STOP2**2)/(STOP2**2 + STOP1**2) < 0.5
48606 C...(SBOT1**2 - SBOT2**2)/(SBOT2**2 + SBOT2**2) < 0.5
48607 C...where STOP1, STOP2, SBOT1 and SBOT2 are the stop and
48608 C...are the sbottom  mass eigenvalues, respectively. This
48609 C...range automatically excludes the existence of tachyons.
48610 C...For the charged Higgs mass computation, the method is
48611 C...valid if
48612 C...2 * |MB * AD* TANB|  < M_SUSY**2,  2 * |MTOP * AU| < M_SUSY**2
48613 C...2 * |MB * MU * TANB| < M_SUSY**2,  2 * |MTOP * MU| < M_SUSY**2
48614 C...where M_SUSY**2 is the average of the squared stop mass
48615 C...eigenvalues, M_SUSY**2 = (STOP1**2 + STOP2**2)/2. The sbottom
48616 C...masses have been assumed to be of order of the stop ones
48617 C...M_SUSY**2 = (MQ**2 + MUR**2)*0.5 + MTOP**2
48618  
48619       SUBROUTINE PYSUBH (XMA,TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM,
48620      &XMHCH,SA,CA,TANBA)
48621  
48622 C...Double precision and integer declarations.
48623       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48624       IMPLICIT INTEGER(I-N)
48625       INTEGER PYK,PYCHGE,PYCOMP
48626 C...Parameter statement to help give large particle numbers.
48627       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
48628      &KEXCIT=4000000,KDIMEN=5000000)
48629 C...Commonblocks.
48630       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48631       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
48632       COMMON/PYHTRI/HHH(7)
48633       SAVE /PYDAT1/,/PYDAT2/
48634  
48635 C...Local variables.
48636       DOUBLE PRECISION PYALEM,PYALPS
48637       DOUBLE PRECISION TANB,XMQ,XMUR,XMTOP,AU,AD,XMU,XMH,XHM
48638       DOUBLE PRECISION XMHCH,SA,CA
48639       DOUBLE PRECISION XMA,AEM,ALP1,ALP2,ALPH3Z,V,PI
48640       DOUBLE PRECISION Q02
48641       DOUBLE PRECISION TANBA,TANBT,XMB,ALP3
48642       DOUBLE PRECISION RMTOP,XMS,T,SINB,COSB
48643       DOUBLE PRECISION XLAM1,XLAM2,XLAM3,XLAM4,XLAM5,XLAM6
48644       DOUBLE PRECISION XLAM7,XAU,XAD,G1,G2,G3,HU,HD,HU2
48645       DOUBLE PRECISION HD2,HU4,HD4,SINBT,COSBT
48646       DOUBLE PRECISION TRM2,DETM2,XMH2,XHM2,XMHCH2
48647       DOUBLE PRECISION SINALP,COSALP,AUD,PI2,XMS2,XMS4,AD2
48648       DOUBLE PRECISION AU2,XMU2,XMZ,XMS3
48649  
48650       XMZ = PMAS(23,1)
48651       Q02=XMZ**2
48652       AEM=PYALEM(Q02)
48653       ALP1=AEM/(1D0-PARU(102))
48654       ALP2=AEM/PARU(102)
48655       ALPH3Z=PYALPS(Q02)
48656  
48657       ALP1 = 0.0101D0
48658       ALP2 = 0.0337D0
48659       ALPH3Z = 0.12D0
48660  
48661       V = 174.1D0
48662       PI = PARU(1)
48663       TANBA = TANB
48664       TANBT = TANB
48665  
48666 C...MBOTTOM(MTOP) = 3. GEV
48667       XMB = PYMRUN(5,XMTOP**2)
48668       ALP3 = ALPH3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPH3Z*
48669      &LOG(XMTOP**2/XMZ**2))
48670  
48671 C...RMTOP= RUNNING TOP QUARK MASS
48672       RMTOP = XMTOP/(1D0+4D0*ALP3/3D0/PI)
48673       XMS = ((XMQ**2 + XMUR**2)/2D0 + XMTOP**2)**0.5D0
48674       T = LOG(XMS**2/XMTOP**2)
48675       SINB = TANB/((1D0 + TANB**2)**0.5D0)
48676       COSB = SINB/TANB
48677 C...IF(MA.LE.XMTOP) TANBA = TANBT
48678       IF(XMA.GT.XMTOP)
48679      &TANBA = TANBT*(1D0-3D0/32D0/PI**2*
48680      &(RMTOP**2/V**2/SINB**2-XMB**2/V**2/COSB**2)*
48681      &LOG(XMA**2/XMTOP**2))
48682  
48683       SINBT = TANBT/SQRT(1D0 + TANBT**2)
48684       COSBT = 1D0/SQRT(1D0 + TANBT**2)
48685 C      COS2BT = (TANBT**2 - 1D0)/(TANBT**2 + 1D0)
48686       G1 = SQRT(ALP1*4D0*PI)
48687       G2 = SQRT(ALP2*4D0*PI)
48688       G3 = SQRT(ALP3*4D0*PI)
48689       HU = RMTOP/V/SINBT
48690       HD =  XMB/V/COSBT
48691       HU2=HU*HU
48692       HD2=HD*HD
48693       HU4=HU2*HU2
48694       HD4=HD2*HD2
48695       AU2=AU**2
48696       AD2=AD**2
48697       XMS2=XMS**2
48698       XMS3=XMS**3
48699       XMS4=XMS2*XMS2
48700       XMU2=XMU*XMU
48701       PI2=PI*PI
48702  
48703       XAU = (2D0*AU2/XMS2)*(1D0 - AU2/12D0/XMS2)
48704       XAD = (2D0*AD2/XMS2)*(1D0 - AD2/12D0/XMS2)
48705       AUD = (-6D0*XMU2/XMS2 - ( XMU2- AD*AU)**2/XMS4
48706      &+ 3D0*(AU + AD)**2/XMS2)/6D0
48707       XLAM1 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HD2*T/8D0/PI2)
48708      &+(3D0*HD4/8D0/PI2) * (T + XAD/2D0 + (3D0*HD2/2D0 + HU2/2D0
48709      &- 8D0*G3**2) * (XAD*T + T**2)/16D0/PI2)
48710      &-(3D0*HU4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HU2 -5D0* HD2
48711      &-  16D0*G3**2) *T/16D0/PI2)
48712       XLAM2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU2*T/8D0/PI2)
48713      &+(3D0*HU4/8D0/PI2) * (T + XAU/2D0 + (3D0*HU2/2D0 + HD2/2D0
48714      &- 8D0*G3**2) * (XAU*T + T**2)/16D0/PI2)
48715      &-(3D0*HD4* XMU**4/96D0/PI2/XMS4) * (1+ (9D0*HD2 -5D0* HU2
48716      &-  16D0*G3**2) *T/16D0/PI2)
48717       XLAM3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
48718      &(HU2 + HD2)*T/16D0/PI2)
48719      &+(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
48720      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
48721      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
48722      &XMS4)* (1D0+ (6D0*HU2 -2D0* HD2/2D0
48723      &-  16D0*G3**2) *T/16D0/PI2)
48724      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
48725      &XMS4)*(1D0+ (6D0*HD2 -2D0* HU2
48726      &-  16D0*G3**2) *T/16D0/PI2)
48727       XLAM4 = (- G2**2/2D0)*(1D0-3D0*(HU2 + HD2)*T/16D0/PI2)
48728      &-(6D0*HU2*HD2/16D0/PI2) * (T + AUD/2D0 + (HU2 + HD2
48729      &- 8D0*G3**2) * (AUD*T + T**2)/16D0/PI2)
48730      &+(3D0*HU4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AU2/
48731      &XMS4)*
48732      &(1+ (6D0*HU2 -2D0* HD2
48733      &-  16D0*G3**2) *T/16D0/PI2)
48734      &+(3D0*HD4/96D0/PI2) * (3D0*XMU2/XMS2 - XMU2*AD2/
48735      &XMS4)*
48736      &(1+ (6D0*HD2 -2D0* HU2/2D0
48737      &-  16D0*G3**2) *T/16D0/PI2)
48738       XLAM5 = -(3D0*HU4* XMU2*AU2/96D0/PI2/XMS4) *
48739      &(1- (2D0*HD2 -6D0* HU2 + 16D0*G3**2) *T/16D0/PI2)
48740      &-(3D0*HD4* XMU2*AD2/96D0/PI2/XMS4) *
48741      &(1- (2D0*HU2 -6D0* HD2 + 16D0*G3**2) *T/16D0/PI2)
48742       XLAM6 = (3D0*HU4* XMU**3*AU/96D0/PI2/XMS4) *
48743      &(1- (7D0*HD2/2D0 -15D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
48744      &+(3D0*HD4* XMU *(AD**3/XMS3 - 6D0*AD/XMS )/96D0/PI2/XMS) *
48745      &(1- (HU2/2D0 -9D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
48746       XLAM7 = (3D0*HD4* XMU**3*AD/96D0/PI2/XMS4) *
48747      &(1- (7D0*HU2/2D0 -15D0* HD2/2D0 + 16D0*G3**2) *T/16D0/PI2)
48748      &+(3D0*HU4* XMU *(AU**3/XMS3 - 6D0*AU/XMS )/96D0/PI2/XMS) *
48749      &(1- (HD2/2D0 -9D0* HU2/2D0 + 16D0*G3**2) *T/16D0/PI2)
48750       HHH(1)=XLAM1
48751       HHH(2)=XLAM2
48752       HHH(3)=XLAM3
48753       HHH(4)=XLAM4
48754       HHH(5)=XLAM5
48755       HHH(6)=XLAM6
48756       HHH(7)=XLAM7
48757       TRM2 = XMA**2 + 2D0*V**2* (XLAM1* COSBT**2 +
48758      &2D0* XLAM6*SINBT*COSBT
48759      &+ XLAM5*SINBT**2 + XLAM2* SINBT**2 + 2D0* XLAM7*SINBT*COSBT
48760      &+ XLAM5*COSBT**2)
48761       DETM2 = 4D0*V**4*(-(SINBT*COSBT*(XLAM3 + XLAM4) +
48762      &XLAM6*COSBT**2
48763      &+ XLAM7* SINBT**2)**2 + (XLAM1* COSBT**2 +
48764      &2D0* XLAM6* COSBT*SINBT
48765      &+ XLAM5*SINBT**2)*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
48766      &+ XLAM5*COSBT**2)) + XMA**2*2D0*V**2 *
48767      &((XLAM1* COSBT**2 +2D0*
48768      &XLAM6* COSBT*SINBT + XLAM5*SINBT**2)*COSBT**2 +
48769      &(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT + XLAM5*COSBT**2)
48770      &*SINBT**2
48771      &+2D0*SINBT*COSBT* (SINBT*COSBT*(XLAM3
48772      &+ XLAM4) + XLAM6*COSBT**2
48773      &+ XLAM7* SINBT**2))
48774  
48775       XMH2 = (TRM2 - SQRT(TRM2**2 - 4D0* DETM2))/2D0
48776       XHM2 = (TRM2 + SQRT(TRM2**2 - 4D0* DETM2))/2D0
48777       XHM = SQRT(XHM2)
48778       XMH = SQRT(XMH2)
48779       XMHCH2 = XMA**2 + (XLAM5 - XLAM4)* V**2
48780       XMHCH = SQRT(XMHCH2)
48781  
48782       SINALP = SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0) -
48783      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
48784      &XLAM6* COSBT*SINBT
48785      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
48786      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
48787      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2)))/
48788      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0))/2D0**0.5D0
48789  
48790       COSALP = (2D0*(2D0*V**2*(SINBT*COSBT*(XLAM3 + XLAM4) +
48791      &XLAM6*COSBT**2 + XLAM7* SINBT**2) -
48792      &XMA**2*SINBT*COSBT))/2D0**0.5D0/
48793      &SQRT(((TRM2**2 - 4D0* DETM2)**0.5D0)*
48794      &(((TRM2**2 - 4D0* DETM2)**0.5D0) -
48795      &((2D0*V**2*(XLAM1* COSBT**2 + 2D0*
48796      &XLAM6* COSBT*SINBT
48797      &+ XLAM5*SINBT**2) + XMA**2*SINBT**2)
48798      &- (2D0*V**2*(XLAM2* SINBT**2 +2D0* XLAM7* COSBT*SINBT
48799      &+ XLAM5*COSBT**2) + XMA**2*COSBT**2))))
48800  
48801       SA = -SINALP
48802       CA = -COSALP
48803  
48804   100 CONTINUE
48805  
48806       RETURN
48807       END
48808  
48809 C*********************************************************************
48810  
48811 C...PYPOLE
48812 C...This subroutine computes the CP-even higgs and CP-odd pole
48813 c...Higgs masses and mixing angles.
48814  
48815 C...Program based on the work by M. Carena, M. Quiros
48816 C...and C.E.M. Wagner, "Effective potential methods and
48817 C...the Higgs mass spectrum in the MSSM", CERN-TH/95-157
48818  
48819 C...Inputs: IHIGGS(explained below),MCHI,MA,TANB,MQ,MUR,MDR,MTOP,
48820 C...AT,AB,MU
48821 C...where MCHI is the largest chargino mass, MA is the running
48822 C...CP-odd higgs mass, TANB is the value of the ratio of vacuum
48823 C...expectaion values at the scale MTOP, MQ is the third generation
48824 C...left handed squark mass parameter, MUR is the third generation
48825 C...right handed stop mass parameter, MDR is the third generation
48826 C...right handed sbottom mass parameter, MTOP is the pole top quark
48827 C...mass; AT,AB are the soft supersymmetry breaking trilinear
48828 C...couplings of the stop and sbottoms, respectively, and MU is the
48829 C...supersymmetric mass parameter
48830  
48831 C...The parameter IHIGGS=0,1,2,3 corresponds to the number of
48832 C...Higgses whose pole mass is computed. If IHIGGS=0 only running
48833 C...masses are given, what makes the running of the program
48834 c...much faster and it is quite generally a good approximation
48835 c...(for a theoretical discussion see ref. above). If IHIGGS=1,
48836 C...only the pole mass for H is computed. If IHIGGS=2, then h and H,
48837 c...and if IHIGGS=3, then h,H,A polarizations are computed
48838  
48839 C...Output: MH and MHP which are the lightest CP-even Higgs running
48840 C...and pole masses, respectively; HM and HMP are the heaviest CP-even
48841 C...Higgs running and pole masses, repectively; SA and CA are the
48842 C...SIN(ALPHA) and COS(ALPHA) where ALPHA is the Higgs mixing angle
48843 C...AMP is the CP-odd Higgs pole mass. STOP1,STOP2,SBOT1 and SBOT2
48844 C...are the stop and sbottom mass eigenvalues. Finally, TANBA is
48845 C...the value of TANB at the CP-odd Higgs mass scale
48846  
48847 C...This subroutine makes use of CERN library subroutine
48848 C...integration package, which makes the computation of the
48849 C...pole Higgs masses somewhat faster. We thank P. Janot for this
48850 C...improvement. Those who are not able to call the CERN
48851 C...libraries, please use the subroutine SUBHPOLE2.F, which
48852 C...although somewhat slower, gives identical results
48853  
48854       SUBROUTINE PYPOLE(IHIGGS,XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,XMU,
48855      &XMH,XMHP,HM,HMP,AMP,SA,CA,STOP1,STOP2,SBOT1,SBOT2,TANBA,XMG,DT,DB)
48856  
48857 C...Double precision and integer declarations.
48858       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
48859       IMPLICIT INTEGER(I-N)
48860  
48861 C...Parameters.
48862       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
48863       SAVE /PYDAT1/
48864       INTEGER PYK,PYCHGE,PYCOMP
48865  
48866 C...Local variables.
48867       DIMENSION DELTA(2,2),COUPT(2,2),T(2,2),SSTOP2(2),
48868      &SSBOT2(2),B(2,2),COUPB(2,2),
48869      &HCOUPT(2,2),HCOUPB(2,2),
48870      &ACOUPT(2,2),ACOUPB(2,2),PR(3), POLAR(3)
48871  
48872       DELTA(1,1) = 1D0
48873       DELTA(2,2) = 1D0
48874       DELTA(1,2) = 0D0
48875       DELTA(2,1) = 0D0
48876       V = 174.1D0
48877       XMZ=91.18D0
48878       PI=PARU(1)
48879       RXMT=PYMRUN(6,XMT**2)
48880       CALL PYRGHM(XMC,XMA,TANB,XMQ,XMUR,XMDR,XMT,AT,AB,
48881      &XMU,XMH,HM,XMCH,SA,CA,SAB,CAB,TANBA,XMG,DT,DB)
48882  
48883       SINB = TANB/(TANB**2+1D0)**0.5D0
48884       COSB = 1D0/(TANB**2+1D0)**0.5D0
48885       COS2B = SINB**2 - COSB**2
48886       SINBPA = SINB*CA + COSB*SA
48887       COSBPA = COSB*CA - SINB*SA
48888       RMBOT = PYMRUN(5,XMT**2)
48889       XMQ2 = XMQ**2
48890       XMUR2 = XMUR**2
48891       IF(XMUR.LT.0D0) XMUR2=-XMUR2
48892       XMDR2 = XMDR**2
48893       XMST11 = RXMT**2 + XMQ2  - 0.35D0*XMZ**2*COS2B
48894       XMST22 = RXMT**2 + XMUR2 - 0.15D0*XMZ**2*COS2B
48895       IF(XMST11.LT.0D0) GOTO 500
48896       IF(XMST22.LT.0D0) GOTO 500
48897       XMSB11 = RMBOT**2 + XMQ2  + 0.42D0*XMZ**2*COS2B
48898       XMSB22 = RMBOT**2 + XMDR2 + 0.08D0*XMZ**2*COS2B
48899       IF(XMSB11.LT.0D0) GOTO 500
48900       IF(XMSB22.LT.0D0) GOTO 500
48901 C      WMST11 = RXMT**2 + XMQ2
48902 C      WMST22 = RXMT**2 + XMUR2
48903       XMST12 = RXMT*(AT - XMU/TANB)
48904       XMSB12 = RMBOT*(AB - XMU*TANB)
48905  
48906 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48907 C...STOP EIGENVALUES CALCULATION
48908 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48909  
48910       STOP12 = 0.5D0*(XMST11+XMST22) +
48911      &0.5D0*((XMST11+XMST22)**2 -
48912      &4D0*(XMST11*XMST22 - XMST12**2))**0.5D0
48913       STOP22 = 0.5D0*(XMST11+XMST22) -
48914      &0.5D0*((XMST11+XMST22)**2 - 4D0*(XMST11*XMST22 -
48915      &XMST12**2))**0.5D0
48916  
48917       IF(STOP22.LT.0D0) GOTO 500
48918       SSTOP2(1) = STOP12
48919       SSTOP2(2) = STOP22
48920       STOP1 = STOP12**0.5D0
48921       STOP2 = STOP22**0.5D0
48922 C      STOP1W = STOP1
48923 C      STOP2W = STOP2
48924  
48925       IF(XMST12.EQ.0D0) XST11 = 1D0
48926       IF(XMST12.EQ.0D0) XST12 = 0D0
48927       IF(XMST12.EQ.0D0) XST21 = 0D0
48928       IF(XMST12.EQ.0D0) XST22 = 1D0
48929  
48930       IF(XMST12.EQ.0D0) GOTO 110
48931  
48932   100 XST11 = XMST12/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
48933       XST12 = - (XMST11-STOP12)/(XMST12**2+(XMST11-STOP12)**2)**0.5D0
48934       XST21 = XMST12/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
48935       XST22 = - (XMST11-STOP22)/(XMST12**2+(XMST11-STOP22)**2)**0.5D0
48936  
48937   110 T(1,1) = XST11
48938       T(2,2) = XST22
48939       T(1,2) = XST12
48940       T(2,1) = XST21
48941  
48942       SBOT12 = 0.5D0*(XMSB11+XMSB22) +
48943      &0.5D0*((XMSB11+XMSB22)**2 -
48944      &4D0*(XMSB11*XMSB22 - XMSB12**2))**0.5D0
48945       SBOT22 = 0.5D0*(XMSB11+XMSB22) -
48946      &0.5D0*((XMSB11+XMSB22)**2 - 4D0*(XMSB11*XMSB22 -
48947      &XMSB12**2))**0.5D0
48948       IF(SBOT22.LT.0D0) GOTO 500
48949       SBOT1 = SBOT12**0.5D0
48950       SBOT2 = SBOT22**0.5D0
48951  
48952       SSBOT2(1) = SBOT12
48953       SSBOT2(2) = SBOT22
48954  
48955       IF(XMSB12.EQ.0D0) XSB11 = 1D0
48956       IF(XMSB12.EQ.0D0) XSB12 = 0D0
48957       IF(XMSB12.EQ.0D0) XSB21 = 0D0
48958       IF(XMSB12.EQ.0D0) XSB22 = 1D0
48959  
48960       IF(XMSB12.EQ.0D0) GOTO 130
48961  
48962   120 XSB11 = XMSB12/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
48963       XSB12 = - (XMSB11-SBOT12)/(XMSB12**2+(XMSB11-SBOT12)**2)**0.5D0
48964       XSB21 = XMSB12/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
48965       XSB22 = - (XMSB11-SBOT22)/(XMSB12**2+(XMSB11-SBOT22)**2)**0.5D0
48966  
48967   130 B(1,1) = XSB11
48968       B(2,2) = XSB22
48969       B(1,2) = XSB12
48970       B(2,1) = XSB21
48971  
48972  
48973       SINT = 0.2320D0
48974       SQR = DSQRT(2D0)
48975       VP = 174.1D0*SQR
48976  
48977 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48978 C...STARTING OF LIGHT HIGGS
48979 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
48980  
48981       IF(IHIGGS.EQ.0) GOTO 490
48982  
48983       DO 150 I = 1,2
48984         DO 140 J = 1,2
48985           COUPT(I,J) =
48986      &    SINT*XMZ**2*2D0*SQR/174.1D0/3D0*SINBPA*(DELTA(I,J) +
48987      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
48988      &    -RXMT**2/174.1D0**2*VP/SINB*CA*DELTA(I,J)
48989      &    -RXMT/VP/SINB*(AT*CA + XMU*SA)*(T(1,I)*T(2,J) +
48990      &    T(1,J)*T(2,I))
48991   140   CONTINUE
48992   150 CONTINUE
48993  
48994  
48995       DO 170 I = 1,2
48996         DO 160 J = 1,2
48997           COUPB(I,J) =
48998      &    -SINT*XMZ**2*2D0*SQR/174.1D0/6D0*SINBPA*(DELTA(I,J) +
48999      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
49000      &    +RMBOT**2/174.1D0**2*VP/COSB*SA*DELTA(I,J)
49001      &    +RMBOT/VP/COSB*(AB*SA + XMU*CA)*(B(1,I)*B(2,J) +
49002      &    B(1,J)*B(2,I))
49003   160   CONTINUE
49004   170 CONTINUE
49005  
49006       PRUN = XMH
49007       EPS = 1D-4*PRUN
49008       ITER = 0
49009   180 ITER = ITER + 1
49010       DO 230  I3 = 1,3
49011  
49012         PR(I3)=PRUN+(I3-2)*EPS/2
49013         P2=PR(I3)**2
49014         POLT = 0D0
49015         DO 200 I = 1,2
49016           DO 190 J = 1,2
49017             POLT = POLT + COUPT(I,J)**2*3D0*
49018      &      PYFINT(P2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
49019   190     CONTINUE
49020   200   CONTINUE
49021  
49022         POLB = 0D0
49023         DO 220 I = 1,2
49024           DO 210 J = 1,2
49025             POLB = POLB + COUPB(I,J)**2*3D0*
49026      &      PYFINT(P2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
49027   210     CONTINUE
49028   220   CONTINUE
49029 C        RXMT2 = RXMT**2
49030         XMT2=XMT**2
49031  
49032         POLTT =
49033      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
49034      &  CA**2/SINB**2 *
49035      &  (-2D0*XMT**2+0.5D0*P2)*
49036      &  PYFINT(P2,XMT2,XMT2)
49037  
49038         POL = POLT + POLB + POLTT
49039         POLAR(I3) = P2 - XMH**2 - POL
49040   230 CONTINUE
49041       DERIV = (POLAR(3)-POLAR(1))/EPS
49042       DRUN = - POLAR(2)/DERIV
49043       PRUN = PRUN + DRUN
49044       P2 = PRUN**2
49045       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 240
49046       GOTO 180
49047   240 CONTINUE
49048  
49049       XMHP = DSQRT(P2)
49050  
49051 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49052 C...END OF LIGHT HIGGS
49053 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49054  
49055   250 IF(IHIGGS.EQ.1) GOTO 490
49056  
49057 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49058 C... STARTING OF HEAVY HIGGS
49059 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49060  
49061       DO 270 I = 1,2
49062         DO 260 J = 1,2
49063           HCOUPT(I,J) =
49064      &    -SINT*XMZ**2*2D0*SQR/174.1D0/3D0*COSBPA*(DELTA(I,J) +
49065      &    (3D0 - 8D0*SINT)/4D0/SINT*T(1,I)*T(1,J))
49066      &    -RXMT**2/174.1D0**2*VP/SINB*SA*DELTA(I,J)
49067      &    -RXMT/VP/SINB*(AT*SA - XMU*CA)*(T(1,I)*T(2,J) +
49068      &    T(1,J)*T(2,I))
49069   260   CONTINUE
49070   270 CONTINUE
49071  
49072       DO 290 I = 1,2
49073         DO 280 J = 1,2
49074           HCOUPB(I,J) =
49075      &    SINT*XMZ**2*2D0*SQR/174.1D0/6D0*COSBPA*(DELTA(I,J) +
49076      &    (3D0 - 4D0*SINT)/2D0/SINT*B(1,I)*B(1,J))
49077      &    -RMBOT**2/174.1D0**2*VP/COSB*CA*DELTA(I,J)
49078      &    -RMBOT/VP/COSB*(AB*CA - XMU*SA)*(B(1,I)*B(2,J) +
49079      &    B(1,J)*B(2,I))
49080           HCOUPB(I,J)=0D0
49081   280   CONTINUE
49082   290 CONTINUE
49083  
49084       PRUN = HM
49085       EPS = 1D-4*PRUN
49086       ITER = 0
49087   300 ITER = ITER + 1
49088       DO 350 I3 = 1,3
49089         PR(I3)=PRUN+(I3-2)*EPS/2
49090         HP2=PR(I3)**2
49091  
49092         HPOLT = 0D0
49093         DO 320 I = 1,2
49094           DO 310 J = 1,2
49095             HPOLT = HPOLT + HCOUPT(I,J)**2*3D0*
49096      &      PYFINT(HP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
49097   310     CONTINUE
49098   320   CONTINUE
49099  
49100         HPOLB = 0D0
49101         DO 340 I = 1,2
49102           DO 330 J = 1,2
49103             HPOLB = HPOLB + HCOUPB(I,J)**2*3D0*
49104      &      PYFINT(HP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
49105   330     CONTINUE
49106   340   CONTINUE
49107  
49108 C        RXMT2 = RXMT**2
49109         XMT2  = XMT**2
49110  
49111         HPOLTT =
49112      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
49113      &  SA**2/SINB**2 *
49114      &  (-2D0*XMT**2+0.5D0*HP2)*
49115      &  PYFINT(HP2,XMT2,XMT2)
49116  
49117         HPOL = HPOLT + HPOLB + HPOLTT
49118         POLAR(I3) =HP2-HM**2-HPOL
49119   350 CONTINUE
49120       DERIV = (POLAR(3)-POLAR(1))/EPS
49121       DRUN = - POLAR(2)/DERIV
49122       PRUN = PRUN + DRUN
49123       HP2 = PRUN**2
49124       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 360
49125       GOTO 300
49126   360 CONTINUE
49127  
49128  
49129   370 CONTINUE
49130       HMP = HP2**0.5D0
49131  
49132 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49133 C... END OF HEAVY HIGGS
49134 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49135  
49136       IF(IHIGGS.EQ.2) GOTO 490
49137  
49138 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49139 C...BEGINNING OF PSEUDOSCALAR HIGGS
49140 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49141  
49142       DO 390 I = 1,2
49143         DO 380 J = 1,2
49144           ACOUPT(I,J) =
49145      &    -RXMT/VP/SINB*(AT*COSB + XMU*SINB)*
49146      &    (T(1,I)*T(2,J) -T(1,J)*T(2,I))
49147   380   CONTINUE
49148   390 CONTINUE
49149       DO 410 I = 1,2
49150         DO 400 J = 1,2
49151           ACOUPB(I,J) =
49152      &    RMBOT/VP/COSB*(AB*SINB + XMU*COSB)*
49153      &    (B(1,I)*B(2,J) -B(1,J)*B(2,I))
49154   400   CONTINUE
49155   410 CONTINUE
49156  
49157       PRUN = XMA
49158       EPS = 1D-4*PRUN
49159       ITER = 0
49160   420 ITER = ITER + 1
49161       DO 470 I3 = 1,3
49162         PR(I3)=PRUN+(I3-2)*EPS/2
49163         AP2=PR(I3)**2
49164         APOLT = 0D0
49165         DO 440 I = 1,2
49166           DO 430 J = 1,2
49167             APOLT = APOLT + ACOUPT(I,J)**2*3D0*
49168      &      PYFINT(AP2,SSTOP2(I),SSTOP2(J))/16D0/PI**2
49169   430     CONTINUE
49170   440   CONTINUE
49171         APOLB = 0D0
49172         DO 460 I = 1,2
49173           DO 450 J = 1,2
49174             APOLB = APOLB + ACOUPB(I,J)**2*3D0*
49175      &      PYFINT(AP2,SSBOT2(I),SSBOT2(J))/16D0/PI**2
49176   450     CONTINUE
49177   460   CONTINUE
49178 C        RXMT2 = RXMT**2
49179         XMT2=XMT**2
49180         APOLTT =
49181      &  3D0*RXMT**2/8D0/PI**2/  V  **2*
49182      &  COSB**2/SINB**2 *
49183      &  (-0.5D0*AP2)*
49184      &  PYFINT(AP2,XMT2,XMT2)
49185         APOL = APOLT + APOLB + APOLTT
49186         POLAR(I3) = AP2 - XMA**2 -APOL
49187   470 CONTINUE
49188       DERIV = (POLAR(3)-POLAR(1))/EPS
49189       DRUN = - POLAR(2)/DERIV
49190       PRUN = PRUN + DRUN
49191       AP2 = PRUN**2
49192       IF( ABS(DRUN) .LT. 1D-4 .OR.ITER.GT.500) GOTO 480
49193       GOTO 420
49194   480 CONTINUE
49195  
49196       AMP = DSQRT(AP2)
49197  
49198 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49199 C...END OF PSEUDOSCALAR HIGGS
49200 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49201  
49202       IF(IHIGGS.EQ.3) GOTO 490
49203  
49204   490 CONTINUE
49205       RETURN
49206   500 CONTINUE
49207       WRITE(MSTU(11),*) ' EXITING IN PYPOLE '
49208       WRITE(MSTU(11),*) ' XMST11,XMST22 = ',XMST11,XMST22
49209       WRITE(MSTU(11),*) ' XMSB11,XMSB22 = ',XMSB11,XMSB22
49210       WRITE(MSTU(11),*) ' STOP22,SBOT22 = ',STOP22,SBOT22
49211       CALL PYSTOP(107)
49212       END
49213  
49214 C*********************************************************************
49215  
49216 C...PYRGHM
49217 C...Auxiliary to PYPOLE.
49218  
49219       SUBROUTINE PYRGHM(MCHI,MA,TANB,MQ,MUR,MD,MTOP,AU,AD,MU,
49220      *    MHP,HMP,MCH,SA,CA,SAB,CAB,TANBA,MGLU,DELTAMT,DELTAMB)
49221       IMPLICIT DOUBLE PRECISION(A-H,L,M,O-Z)
49222       DIMENSION VH(2,2),M2(2,2),M2P(2,2)
49223 C...Parameters.
49224       INTEGER MSTU,MSTJ
49225       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49226       SAVE /PYDAT1/
49227  
49228       MZ = 91.18D0
49229       PI = PARU(1)
49230       V  = 174.1D0
49231       ALPHA1 = 0.0101D0
49232       ALPHA2 = 0.0337D0
49233       ALPHA3Z = 0.12D0
49234       TANBA = TANB
49235       TANBT = TANB
49236 C     MBOTTOM(MTOP) = 3. GEV
49237       MB = PYMRUN(5,MTOP**2)
49238       ALPHA3 = ALPHA3Z/(1D0 +(11D0 - 10D0/3D0)/4D0/PI*ALPHA3Z*
49239      *LOG(MTOP**2/MZ**2))
49240 C     RMTOP= RUNNING TOP QUARK MASS
49241       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
49242       TQ = LOG((MQ**2+MTOP**2)/MTOP**2)
49243       TU = LOG((MUR**2 + MTOP**2)/MTOP**2)
49244       TD = LOG((MD**2 + MTOP**2)/MTOP**2)
49245 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49246 C
49247 C    NEW DEFINITION, TGLU.
49248 C
49249 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49250       TGLU = LOG(MGLU**2/MTOP**2)
49251       SINB = TANB/DSQRT(1D0 + TANB**2)
49252       COSB = SINB/TANB
49253       IF(MA.GT.MTOP)
49254      *TANBA = TANB*(1D0-3D0/32D0/PI**2*
49255      *(RMTOP**2/V**2/SINB**2-MB**2/V**2/COSB**2)*
49256      *LOG(MA**2/MTOP**2))
49257       IF(MA.LT.MTOP.OR.MA.EQ.MTOP) TANBT = TANBA
49258       SINB = TANBT/SQRT(1D0 + TANBT**2)
49259       COSB = 1D0/DSQRT(1D0 + TANBT**2)
49260       G1 = SQRT(ALPHA1*4D0*PI)
49261       G2 = SQRT(ALPHA2*4D0*PI)
49262       G3 = SQRT(ALPHA3*4D0*PI)
49263       HU = RMTOP/V/SINB
49264       HD =  MB/V/COSB
49265       CALL PYGFXX(MA,TANBA,MQ,MUR,MD,MTOP,AU,AD,MU,MGLU,VH,STOP1,STOP2,
49266      *SBOT1,SBOT2,DELTAMT,DELTAMB)
49267       IF(MQ.GT.MUR) TP = TQ - TU
49268       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TP = TU - TQ
49269       IF(MQ.GT.MUR) TDP = TU
49270       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) TDP = TQ
49271       IF(MQ.GT.MD) TPD = TQ - TD
49272       IF(MQ.LT.MD.OR.MQ.EQ.MD) TPD = TD - TQ
49273       IF(MQ.GT.MD) TDPD = TD
49274       IF(MQ.LT.MD.OR.MQ.EQ.MD) TDPD = TQ
49275  
49276       IF(MQ.GT.MD) DLAMBDA1 = 6D0/96D0/PI**2*G1**2*HD**2*TPD
49277       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA1 = 3D0/32D0/PI**2*
49278      * HD**2*(G1**2/3D0+G2**2)*TPD
49279  
49280       IF(MQ.GT.MUR) DLAMBDA2 =12D0/96D0/PI**2*G1**2*HU**2*TP
49281       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA2 = 3D0/32D0/PI**2*
49282      * HU**2*(-G1**2/3D0+G2**2)*TP
49283  
49284 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49285 C
49286 C  DLAMBDAP1 AND DLAMBDAP2 ARE THE NEW LOG CORRECTIONS DUE TO
49287 C  THE PRESENCE OF THE GLUINO MASS. THEY ARE IN GENERAL VERY SMALL,
49288 C  AND ONLY PRESENT IF THERE IS A HIERARCHY OF MASSES BETWEEN THE
49289 C  TWO STOPS.
49290 C
49291 C
49292 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49293  
49294       DLAMBDAP2 = 0D0
49295       IF(MGLU.LT.MUR.OR.MGLU.LT.MQ) THEN
49296        IF(MQ.GT.MUR.AND.MGLU.GT.MUR) THEN
49297         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TGLU**2)
49298        ENDIF
49299  
49300        IF(MQ.GT.MUR.AND.MGLU.LT.MUR) THEN
49301         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
49302        ENDIF
49303  
49304        IF(MQ.GT.MUR.AND.MGLU.EQ.MUR) THEN
49305         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TQ**2-TU**2)
49306        ENDIF
49307  
49308        IF(MUR.GT.MQ.AND.MGLU.GT.MQ) THEN
49309         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TGLU**2)
49310        ENDIF
49311  
49312        IF(MUR.GT.MQ.AND.MGLU.LT.MQ) THEN
49313         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
49314        ENDIF
49315  
49316        IF(MUR.GT.MQ.AND.MGLU.EQ.MQ) THEN
49317         DLAMBDAP2 = -4D0/(16D0*PI**2)**2*HU**4*(TU**2-TQ**2)
49318        ENDIF
49319       ENDIF
49320       DLAMBDA3 = 0D0
49321       DLAMBDA4 = 0D0
49322       IF(MQ.GT.MD) DLAMBDA3 = -1D0/32D0/PI**2*G1**2*HD**2*TPD
49323       IF(MQ.LT.MD.OR.MQ.EQ.MD) DLAMBDA3 = 3D0/64D0/PI**2*HD**2*
49324      *(G2**2-G1**2/3D0)*TPD
49325       IF(MQ.GT.MUR) DLAMBDA3 = DLAMBDA3 -
49326      *1D0/16D0/PI**2*G1**2*HU**2*TP
49327       IF(MQ.LT.MUR.OR.MQ.EQ.MUR) DLAMBDA3 = DLAMBDA3 +
49328      * 3D0/64D0/PI**2*HU**2*(G2**2+G1**2/3D0)*TP
49329       IF(MQ.LT.MUR) DLAMBDA4 = -3D0/32D0/PI**2*G2**2*HU**2*TP
49330       IF(MQ.LT.MD) DLAMBDA4 = DLAMBDA4 - 3D0/32D0/PI**2*G2**2*
49331      *HD**2*TPD
49332       LAMBDA1 = ((G1**2 + G2**2)/4D0)*
49333      * (1D0-3D0*HD**2*(TPD + TDPD)/8D0/PI**2)
49334      *+(3D0*HD**4D0/16D0/PI**2) *TPD*(1D0
49335      *+ (3D0*HD**2/2D0 + HU**2/2D0
49336      *- 8D0*G3**2) * (TPD + 2D0*TDPD)/16D0/PI**2)
49337      *+(3D0*HD**4D0/8D0/PI**2) *TDPD*(1D0  + (3D0*HD**2/2D0 + HU**2/2D0
49338      *- 8D0*G3**2) * TDPD/16D0/PI**2) + DLAMBDA1
49339       LAMBDA2 = ((G1**2 + G2**2)/4D0)*(1D0-3D0*HU**2*
49340      *(TP + TDP)/8D0/PI**2)
49341      *+(3D0*HU**4D0/16D0/PI**2) *TP*(1D0
49342      *+ (3D0*HU**2/2D0 + HD**2/2D0
49343      *- 8D0*G3**2) * (TP + 2D0*TDP)/16D0/PI**2)
49344      *+(3D0*HU**4D0/8D0/PI**2) *TDP*(1D0 + (3D0*HU**2/2D0 + HD**2/2D0
49345      *- 8D0*G3**2) * TDP/16D0/PI**2) + DLAMBDA2 + DLAMBDAP2
49346       LAMBDA3 = ((G2**2 - G1**2)/4D0)*(1D0-3D0*
49347      *(HU**2)*(TP + TDP)/16D0/PI**2 -3D0*
49348      *(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA3
49349       LAMBDA4 = (- G2**2/2D0)*(1D0
49350      *-3D0*(HU**2)*(TP + TDP)/16D0/PI**2
49351      *-3D0*(HD**2)*(TPD + TDPD)/16D0/PI**2) +DLAMBDA4
49352  
49353       LAMBDA5 = 0D0
49354       LAMBDA6 = 0D0
49355       LAMBDA7 = 0D0
49356  
49357       M2(1,1) = 2D0*V**2*(LAMBDA1*COSB**2+2D0*LAMBDA6*
49358      *COSB*SINB + LAMBDA5*SINB**2) + MA**2*SINB**2
49359  
49360       M2(2,2) = 2D0*V**2*(LAMBDA5*COSB**2+2D0*LAMBDA7*
49361      *COSB*SINB + LAMBDA2*SINB**2) + MA**2*COSB**2
49362       M2(1,2) = 2D0*V**2*(LAMBDA6*COSB**2+(LAMBDA3+LAMBDA4)*
49363      *COSB*SINB + LAMBDA7*SINB**2) - MA**2*SINB*COSB
49364  
49365       M2(2,1) = M2(1,2)
49366 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49367 CCC  THIS IS THE CONTRIBUTION FROM LIGHT CHARGINOS/NEUTRALINOS
49368 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49369  
49370       MSSUSY=DSQRT(.5D0*(MQ**2+MUR**2)+MTOP**2)
49371  
49372       IF(MCHI.GT.MSSUSY) GOTO 100
49373       IF(MCHI.LT.MTOP) MCHI=MTOP
49374  
49375       TCHAR=LOG(MSSUSY**2/MCHI**2)
49376  
49377       DELTAL12=(9D0/64D0/PI**2*G2**4+5D0/192D0/PI**2*G1**4)*TCHAR
49378       DELTAL3P4=(3D0/64D0/PI**2*G2**4+7D0/192D0/PI**2*G1**4
49379      *+4D0/32D0/PI**2*G1**2*G2**2)*TCHAR
49380  
49381       DELTAM112=2D0*DELTAL12*V**2*COSB**2
49382       DELTAM222=2D0*DELTAL12*V**2*SINB**2
49383       DELTAM122=2D0*DELTAL3P4*V**2*SINB*COSB
49384  
49385       M2(1,1)=M2(1,1)+DELTAM112
49386       M2(2,2)=M2(2,2)+DELTAM222
49387       M2(1,2)=M2(1,2)+DELTAM122
49388       M2(2,1)=M2(2,1)+DELTAM122
49389  
49390   100 CONTINUE
49391  
49392 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49393 CCC  END OF CHARGINOS/NEUTRALINOS
49394 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49395  
49396       DO 120 I = 1,2
49397         DO 110 J = 1,2
49398           M2P(I,J) = M2(I,J) + VH(I,J)
49399   110   CONTINUE
49400   120 CONTINUE
49401       TRM2P = M2P(1,1) + M2P(2,2)
49402       DETM2P = M2P(1,1)*M2P(2,2) - M2P(1,2)*M2P(2,1)
49403       MH2P = (TRM2P - DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
49404       HM2P = (TRM2P + DSQRT(TRM2P**2 - 4D0* DETM2P))/2D0
49405       HMP = DSQRT(HM2P)
49406       MCH2=MA**2+(LAMBDA5-LAMBDA4)*V**2
49407       MCH=DSQRT(MCH2)
49408       IF(MH2P.LT.0.) GOTO 130
49409       MHP = SQRT(MH2P)
49410       SIN2ALPHA = 2D0*M2P(1,2)/SQRT(TRM2P**2-4D0*DETM2P)
49411       COS2ALPHA = (M2P(1,1)-M2P(2,2))/SQRT(TRM2P**2-4D0*DETM2P)
49412       IF(COS2ALPHA.GE.0.) THEN
49413         ALPHA = ASIN(SIN2ALPHA)/2D0
49414       ELSE
49415         ALPHA = -PI/2D0-ASIN(SIN2ALPHA)/2D0
49416       ENDIF
49417       SA = SIN(ALPHA)
49418       CA = COS(ALPHA)
49419 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49420 C
49421 C        HERE THE VALUES OF SAB AND CAB ARE DEFINED, IN ORDER
49422 C        TO DEFINE THE NEW COUPLINGS OF THE LIGHTEST AND
49423 C        HEAVY CP-EVEN HIGGS TO THE BOTTOM QUARK.
49424 C
49425 C
49426 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49427       SAB = SA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0+CA/SA/TANB))
49428       CAB = CA*(1D0-DELTAMB/(1D0+DELTAMB)*(1D0-SA/CA/TANB))
49429   130 CONTINUE
49430       RETURN
49431       END
49432  
49433 C*********************************************************************
49434  
49435 C...PYGFXX
49436 C...Auxiliary to PYRGHM.
49437  
49438       SUBROUTINE PYGFXX(MA,TANB,MQ,MUR,MD,MTOP,AT,AB,XMU,XMGL,VH,
49439      *  STOP1,STOP2,SBOT1,SBOT2,DELTAMT,DELTAMB)
49440       IMPLICIT DOUBLE PRECISION(A-H,M,O-Z)
49441       DIMENSION VH(2,2),VH3T(2,2),VH3B(2,2),AL(2,2)
49442 C...Commonblocks.
49443       INTEGER MSTU,MSTJ,KCHG
49444       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49445       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49446       SAVE /PYDAT1/,/PYDAT2/
49447  
49448       G(X,Y) = 2.D0 - (X+Y)/(X-Y)*DLOG(X/Y)
49449  
49450       T(X,Y,Z) = (X**2*Y**2*LOG(X**2/Y**2) + X**2*Z**2*LOG(Z**2/X**2)
49451      * + Y**2*Z**2*LOG(Y**2/Z**2))/((X**2-Y**2)*(Y**2-Z**2)*(X**2-Z**2))
49452  
49453       IF(DABS(XMU).LT.0.000001D0) XMU = 0.000001D0
49454       MQ2 = MQ**2
49455       MUR2 = MUR**2
49456       MD2 = MD**2
49457       TANBA = TANB
49458       SINBA = TANBA/DSQRT(TANBA**2+1D0)
49459       COSBA = SINBA/TANBA
49460  
49461       SINB = TANB/DSQRT(TANB**2+1D0)
49462       COSB = SINB/TANB
49463  
49464       PI = PARU(1)
49465       MZ = PMAS(23,1)
49466       MW = PMAS(24,1)
49467       SW = 1D0-MW**2/MZ**2
49468       V  = 174.1D0
49469  
49470       ALPHA3 = 0.12D0/(1D0+23/12D0/PI*0.12D0*LOG(MTOP**2/MZ**2))
49471       G2 = DSQRT(0.0336D0*4D0*PI)
49472       G1 = DSQRT(0.0101D0*4D0*PI)
49473  
49474       IF(MQ.GT.MUR) MST = MQ
49475       IF(MUR.GT.MQ.OR.MUR.EQ.MQ) MST = MUR
49476  
49477       MSUSYT = DSQRT(MST**2  + MTOP**2)
49478  
49479       IF(MQ.GT.MD) MSB = MQ
49480       IF(MD.GT.MQ.OR.MD.EQ.MQ) MSB = MD
49481  
49482       MB = PYMRUN(5,MSB**2)
49483       MSUSYB = DSQRT(MSB**2 + MB**2)
49484       TT = LOG(MSUSYT**2/MTOP**2)
49485       TB = LOG(MSUSYB**2/MTOP**2)
49486  
49487       RMTOP = MTOP/(1D0+4D0*ALPHA3/3D0/PI)
49488       HT = RMTOP/(V*SINB)
49489       HTST = RMTOP/V
49490       HB = MB/V/COSB
49491       G32 = ALPHA3*4D0*PI
49492       BT2 = -(8D0*G32 - 9D0*HT**2/2D0 - HB**2/2D0)/(4D0*PI)**2
49493       BB2 = -(8D0*G32 - 9D0*HB**2/2D0 - HT**2/2D0)/(4D0*PI)**2
49494       AL2 = 3D0/8D0/PI**2*HT**2
49495 C      BT2ST = -(8.*G32 - 9.*HTST**2/2.)/(4.*PI)**2
49496 C      ALST = 3./8./PI**2*HTST**2
49497       AL1 = 3D0/8D0/PI**2*HB**2
49498  
49499       AL(1,1) = AL1
49500       AL(1,2) = (AL2+AL1)/2D0
49501       AL(2,1) = (AL2+AL1)/2D0
49502       AL(2,2) = AL2
49503  
49504       IF(MA.GT.MTOP) THEN
49505         VI = V*(1D0 + 3D0/32D0/PI**2*HTST**2*
49506      *        LOG(MTOP**2/MA**2))
49507         H1I = VI* COSBA
49508         H2I = VI*SINBA
49509         H1T = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYT**2))**.25D0
49510         H2T = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYT**2))**.25D0
49511         H1B = H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MA**2/MSUSYB**2))**.25D0
49512         H2B = H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MA**2/MSUSYB**2))**.25D0
49513       ELSE
49514         VI = V
49515         H1I = VI*COSB
49516         H2I = VI*SINB
49517         H1T=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYT**2))**.25D0
49518         H2T=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYT**2))**.25D0
49519         H1B=H1I*(1D0+3D0/8D0/PI**2*HB**2*LOG(MTOP**2/MSUSYB**2))**.25D0
49520         H2B=H2I*(1D0+3D0/8D0/PI**2*HT**2*LOG(MTOP**2/MSUSYB**2))**.25D0
49521       ENDIF
49522  
49523       TANBST = H2T/H1T
49524       SINBT = TANBST/DSQRT(1D0+TANBST**2)
49525  
49526       TANBSB = H2B/H1B
49527       SINBB = TANBSB/DSQRT(1D0+TANBSB**2)
49528       COSBB = SINBB/TANBSB
49529  
49530       DELTAMT = 0D0
49531       DELTAMB = 0D0
49532  
49533       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
49534       MTOP2 = DSQRT(MTOP4)
49535       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
49536      * /(1D0+DELTAMB)**4
49537       MBOT2 = DSQRT(MBOT4)
49538  
49539       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
49540      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
49541      *  +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
49542      *  MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
49543       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
49544      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
49545      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
49546      *  MQ2 - MUR2)**2*0.25D0
49547      *  + MTOP2*(AT-XMU/TANBST)**2)
49548       IF(STOP22.LT.0.) GOTO 120
49549       SBOT12 = (MQ2 + MD2)*.5D0
49550      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
49551      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
49552      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
49553       SBOT22 = (MQ2 + MD2)*.5D0
49554      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
49555      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
49556      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
49557       IF(SBOT22.LT.0.) SBOT22 = 10000D0
49558  
49559       STOP1 = DSQRT(STOP12)
49560       STOP2 = DSQRT(STOP22)
49561       SBOT1 = DSQRT(SBOT12)
49562       SBOT2 = DSQRT(SBOT22)
49563  
49564 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49565 C
49566 C     HERE IS THE DEFINITION OF DELTAMB AND DELTAMT, WHICH
49567 C     ARE THE VERTEX CORRECTIONS TO THE BOTTOM AND TOP QUARK
49568 C     MASS, KEEPING THE DOMINANT QCD AND TOP YUKAWA COUPLING
49569 C     INDUCED CORRECTIONS.
49570 C
49571 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49572  
49573       X=SBOT1
49574       Y=SBOT2
49575       Z=XMGL
49576       IF(X.EQ.Y) X = X - 0.00001D0
49577       IF(X.EQ.Z) X = X - 0.00002D0
49578       IF(Y.EQ.Z) Y = Y - 0.00003D0
49579  
49580       T1=T(X,Y,Z)
49581       X=STOP1
49582       Y=STOP2
49583       Z=XMU
49584       IF(X.EQ.Y) X = X - 0.00001D0
49585       IF(X.EQ.Z) X = X - 0.00002D0
49586       IF(Y.EQ.Z) Y = Y - 0.00003D0
49587       T2=T(X,Y,Z)
49588       DELTAMB = -2*ALPHA3/3D0/PI*XMGL*(AB-XMU*TANB)*T1
49589      *  + HT**2/(4D0*PI)**2*(AT-XMU/TANB)*XMU*TANB*T2
49590       X=STOP1
49591       Y=STOP2
49592       Z=XMGL
49593       IF(X.EQ.Y) X = X - 0.00001D0
49594       IF(X.EQ.Z) X = X - 0.00002D0
49595       IF(Y.EQ.Z) Y = Y - 0.00003D0
49596       T3=T(X,Y,Z)
49597       DELTAMT = -2D0*ALPHA3/3D0/PI*(AT-XMU/TANB)*XMGL*T3
49598  
49599 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49600 C
49601 C   HERE THE NEW VALUES OF THE TOP AND BOTTOM QUARK MASSES AT
49602 C   THE SCALE MS ARE DEFINED, TO BE USED IN THE EFFECTIVE
49603 C   POTENTIAL APPROXIMATION. THEY ARE JUST THE OLD ONES, BUT
49604 C   INCLUDING THE FINITE CORRECTIONS DELTAMT AND DELTAMB.
49605 C   THE DELTAMB CORRECTIONS CAN BECOME LARGE AND ARE RESUMMED
49606 C   TO ALL ORDERS, AS SUGGESTED IN THE TWO RECENT WORKS BY M. CARENA,
49607 C   S. MRENNA AND C.E.M. WAGNER, AS WELL AS IN THE WORK BY M. CARENA,
49608 C   D. GARCIA, U. NIERSTE AND C.E.M. WAGNER, TO APPEAR. THE TOP
49609 C   QUARK MASS CORRECTIONS ARE SMALL AND ARE KEPT IN THE PERTURBATIVE
49610 C   FORMULATION.  THE FUNCTION T(X,Y,Z) IS NECESSARY FOR THE
49611 C   CALCULATION. THE ENTRIES ARE MASSES AND NOT THEIR SQUARES !
49612 C
49613 C
49614 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49615  
49616       MTOP4 = RMTOP**4*(1D0+2D0*BT2*TT- AL2*TT - 4D0*DELTAMT)
49617       MTOP2 = DSQRT(MTOP4)
49618       MBOT4 = MB**4*(1D0+2D0*BB2*TB - AL1*TB)
49619      * /(1D0+DELTAMB)**4
49620       MBOT2 = DSQRT(MBOT4)
49621  
49622       STOP12 = (MQ2 + MUR2)*.5D0 + MTOP2
49623      *   +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
49624      *   +SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
49625      *   MQ2 - MUR2)**2*0.25D0 + MTOP2*(AT-XMU/TANBST)**2)
49626       STOP22 = (MQ2 + MUR2)*.5D0 + MTOP2
49627      *  +1D0/8D0*(G2**2+G1**2)*(H1T**2-H2T**2)
49628      *   - SQRT(((G2**2-5D0*G1**2/3D0)/4D0*(H1T**2-H2T**2) +
49629      *  MQ2 - MUR2)**2*0.25D0
49630      *  + MTOP2*(AT-XMU/TANBST)**2)
49631  
49632       IF(STOP22.LT.0.) GOTO 120
49633       SBOT12 = (MQ2 + MD2)*.5D0
49634      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
49635      *  + SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
49636      *  MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
49637       SBOT22 = (MQ2 + MD2)*.5D0
49638      *   - 1D0/8D0*(G2**2+G1**2)*(H1B**2-H2B**2)
49639      *   - SQRT(((G1**2/3D0-G2**2)/4D0*(H1B**2-H2B**2) +
49640      *   MQ2 - MD2)**2*0.25D0 + MBOT2*(AB-XMU*TANBSB)**2)
49641       IF(SBOT22.LT.0.) GOTO 120
49642  
49643  
49644       STOP1 = DSQRT(STOP12)
49645       STOP2 = DSQRT(STOP22)
49646       SBOT1 = DSQRT(SBOT12)
49647       SBOT2 = DSQRT(SBOT22)
49648  
49649 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49650 CCC   D-TERMS
49651 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
49652       STW=SW
49653  
49654       F1T=(MQ2-MUR2)/(STOP12-STOP22)*(.5D0-4D0/3D0*STW)*
49655      *         LOG(STOP1/STOP2)
49656      *        +(.5D0-2D0/3D0*STW)*LOG(STOP1*STOP2/(MQ2+MTOP2))
49657      *        + 2D0/3D0*STW*LOG(STOP1*STOP2/(MUR2+MTOP2))
49658  
49659       F1B=(MQ2-MD2)/(SBOT12-SBOT22)*(-.5D0+2D0/3D0*STW)*
49660      *        LOG(SBOT1/SBOT2)
49661      *        +(-.5D0+1D0/3D0*STW)*LOG(SBOT1*SBOT2/(MQ2+MBOT2))
49662      *        - 1D0/3D0*STW*LOG(SBOT1*SBOT2/(MD2+MBOT2))
49663  
49664       F2T=DSQRT(MTOP2)*(AT-XMU/TANBST)/(STOP12-STOP22)*
49665      *         (-.5D0*LOG(STOP12/STOP22)
49666      *        +(4D0/3D0*STW-.5D0)*(MQ2-MUR2)/(STOP12-STOP22)*
49667      *         G(STOP12,STOP22))
49668  
49669       F2B=DSQRT(MBOT2)*(AB-XMU*TANBSB)/(SBOT12-SBOT22)*
49670      *         (.5D0*LOG(SBOT12/SBOT22)
49671      *        +(-2D0/3D0*STW+.5D0)*(MQ2-MD2)/(SBOT12-SBOT22)*
49672      *        G(SBOT12,SBOT22))
49673  
49674       VH3B(1,1) = MBOT4/(COSBB**2)*(LOG(SBOT1**2*SBOT2**2/
49675      *  (MQ2+MBOT2)/(MD2+MBOT2))
49676      *  + 2D0*(AB*(AB-XMU*TANBSB)/(SBOT1**2-SBOT2**2))*
49677      *  LOG(SBOT1**2/SBOT2**2)) +
49678      *  MBOT4/(COSBB**2)*(AB*(AB-XMU*TANBSB)/
49679      *  (SBOT1**2-SBOT2**2))**2*G(SBOT12,SBOT22)
49680  
49681       VH3T(1,1) =
49682      *  MTOP4/(SINBT**2)*(XMU*(-AT+XMU/TANBST)/(STOP1**2
49683      * -STOP2**2))**2*G(STOP12,STOP22)
49684  
49685       VH3B(1,1)=VH3B(1,1)+
49686      *    MZ**2*(2*MBOT2*F1B-DSQRT(MBOT2)*AB*F2B)
49687  
49688       VH3T(1,1) = VH3T(1,1) +
49689      *  MZ**2*(DSQRT(MTOP2)*XMU/TANBST*F2T)
49690  
49691       VH3T(2,2) = MTOP4/(SINBT**2)*(LOG(STOP1**2*STOP2**2/
49692      *  (MQ2+MTOP2)/(MUR2+MTOP2))
49693      *  + 2D0*(AT*(AT-XMU/TANBST)/(STOP1**2-STOP2**2))*
49694      *  LOG(STOP1**2/STOP2**2)) +
49695      *  MTOP4/(SINBT**2)*(AT*(AT-XMU/TANBST)/
49696      *  (STOP1**2-STOP2**2))**2*G(STOP12,STOP22)
49697  
49698       VH3B(2,2) =
49699      *  MBOT4/(COSBB**2)*(XMU*(-AB+XMU*TANBSB)/(SBOT1**2
49700      * -SBOT2**2))**2*G(SBOT12,SBOT22)
49701  
49702       VH3T(2,2)=VH3T(2,2)+
49703      *    MZ**2*(-2*MTOP2*F1T+DSQRT(MTOP2)*AT*F2T)
49704       VH3B(2,2) = VH3B(2,2) -MZ**2*DSQRT(MBOT2)*XMU*TANBSB*F2B
49705       VH3T(1,2) = -
49706      *   MTOP4/(SINBT**2)*XMU*(AT-XMU/TANBST)/
49707      * (STOP1**2-STOP2**2)*(LOG(STOP1**2/STOP2**2) + AT*
49708      * (AT - XMU/TANBST)/(STOP1**2-STOP2**2)*G(STOP12,STOP22))
49709  
49710       VH3B(1,2) =
49711      * - MBOT4/(COSBB**2)*XMU*(AB-XMU*TANBSB)/
49712      * (SBOT1**2-SBOT2**2)*(LOG(SBOT1**2/SBOT2**2) + AB*
49713      * (AB - XMU*TANBSB)/(SBOT1**2-SBOT2**2)*G(SBOT12,SBOT22))
49714  
49715  
49716       VH3T(1,2)=VH3T(1,2) +
49717      *MZ**2*(MTOP2/TANBST*F1T-DSQRT(MTOP2)*(AT/TANBST+XMU)/2D0*F2T)
49718  
49719       VH3B(1,2)=VH3B(1,2) +
49720      *MZ**2*(-MBOT2*TANBSB*F1B+DSQRT(MBOT2)*(AB*TANBSB+XMU)/2D0*F2B)
49721  
49722       VH3T(2,1) = VH3T(1,2)
49723       VH3B(2,1) = VH3B(1,2)
49724  
49725 C      TQ = LOG((MQ2 + MTOP2)/MTOP2)
49726 C      TU = LOG((MUR2+MTOP2)/MTOP2)
49727 C      TQD = LOG((MQ2 + MB**2)/MB**2)
49728 C      TD = LOG((MD2+MB**2)/MB**2)
49729  
49730       DO 110 I = 1,2
49731         DO 100 J = 1,2
49732           VH(I,J) =
49733      *   6D0/(8D0*PI**2*(H1T**2+H2T**2))
49734      *   *VH3T(I,J)*0.5D0*(1D0-AL(I,J)*TT/2D0) +
49735      *   6D0/(8D0*PI**2*(H1B**2+H2B**2))
49736      *   *VH3B(I,J)*0.5D0*(1D0-AL(I,J)*TB/2D0)
49737   100   CONTINUE
49738   110 CONTINUE
49739  
49740       GOTO 150
49741   120 DO 140 I =1,2
49742         DO 130 J = 1,2
49743           VH(I,J) = -1D15
49744   130   CONTINUE
49745   140 CONTINUE
49746  
49747  
49748   150 RETURN
49749       END
49750  
49751  
49752  
49753  
49754  
49755 C*********************************************************************
49756  
49757 C...PYFINT
49758 C...Auxiliary routine to PYPOLE for SUSY Higgs calculations.
49759  
49760       FUNCTION PYFINT(A,B,C)
49761  
49762 C...Double precision and integer declarations.
49763       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49764       IMPLICIT INTEGER(I-N)
49765       INTEGER PYK,PYCHGE,PYCOMP
49766 C...Commonblock.
49767       COMMON/PYINTS/XXM(20)
49768       SAVE/PYINTS/
49769  
49770 C...Local variables.
49771       EXTERNAL PYFISB
49772       DOUBLE PRECISION PYFISB
49773  
49774       XXM(1)=A
49775       XXM(2)=B
49776       XXM(3)=C
49777       XLO=0D0
49778       XHI=1D0
49779       PYFINT  = PYGAUS(PYFISB,XLO,XHI,1D-3)
49780  
49781       RETURN
49782       END
49783  
49784 C*********************************************************************
49785  
49786 C...PYFISB
49787 C...Auxiliary routine to PYFINT for SUSY Higgs calculations.
49788  
49789       FUNCTION PYFISB(X)
49790  
49791 C...Double precision and integer declarations.
49792       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49793       IMPLICIT INTEGER(I-N)
49794       INTEGER PYK,PYCHGE,PYCOMP
49795 C...Commonblock.
49796       COMMON/PYINTS/XXM(20)
49797       SAVE/PYINTS/
49798  
49799       PYFISB = LOG(ABS(X*XXM(2)+(1-X)*XXM(3)-X*(1-X)*XXM(1))/
49800      &(X*(XXM(2)-XXM(3))+XXM(3)))
49801  
49802       RETURN
49803       END
49804  
49805 C*********************************************************************
49806  
49807 C...PYSFDC
49808 C...Calculates decays of sfermions.
49809  
49810       SUBROUTINE PYSFDC(KFIN,XLAM,IDLAM,IKNT)
49811  
49812 C...Double precision and integer declarations.
49813       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
49814       IMPLICIT INTEGER(I-N)
49815       INTEGER PYK,PYCHGE,PYCOMP
49816 C...Parameter statement to help give large particle numbers.
49817       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
49818      &KEXCIT=4000000,KDIMEN=5000000)
49819 C...Commonblocks.
49820       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
49821       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
49822       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
49823       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
49824      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
49825       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
49826  
49827 C...Local variables.
49828       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2)
49829       COMPLEX*16 CAL,CAR,CBL,CBR,CALP,CARP,CBLP,CBRP,CA,CB
49830       INTEGER KFIN,KCIN
49831       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,XMZ,AXMJ
49832       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
49833       DOUBLE PRECISION PYLAMF,XL
49834       DOUBLE PRECISION TANW,XW,AEM,C1,AS
49835       DOUBLE PRECISION AL,AR,BL,BR
49836       DOUBLE PRECISION CH1,CH2,CH3,CH4
49837       DOUBLE PRECISION XMBOT,XMTOP
49838       DOUBLE PRECISION XLAM(0:400)
49839       INTEGER IDLAM(400,3)
49840       INTEGER LKNT,IX,ILR,IDU,J,I,IKNT,IFL,II
49841       DOUBLE PRECISION SR2
49842       DOUBLE PRECISION CBETA,SBETA
49843       DOUBLE PRECISION CW
49844       DOUBLE PRECISION BETA,ALFA,XMU,AT,AB,ATRIT,ATRIB,ATRIL
49845       DOUBLE PRECISION COSA,SINA,TANB
49846       DOUBLE PRECISION PYALEM,PI,PYALPS,EI
49847       DOUBLE PRECISION GHRR,GHLL,GHLR,XMB,BLR
49848       INTEGER IG,KF1,KF2
49849       INTEGER IGG(4),KFNCHI(4),KFCCHI(2)
49850       DATA IGG/23,25,35,36/
49851       DATA PI/3.141592654D0/
49852       DATA SR2/1.4142136D0/
49853       DATA KFNCHI/1000022,1000023,1000025,1000035/
49854       DATA KFCCHI/1000024,1000037/
49855  
49856 C...COUNT THE NUMBER OF DECAY MODES
49857       LKNT=0
49858  
49859 C...NO NU_R DECAYS
49860       IF(KFIN.EQ.KSUSY2+12.OR.KFIN.EQ.KSUSY2+14.OR.
49861      &KFIN.EQ.KSUSY2+16) RETURN
49862  
49863       XMW=PMAS(24,1)
49864       XMW2=XMW**2
49865       XMZ=PMAS(23,1)
49866       XW=PARU(102)
49867       TANW = SQRT(XW/(1D0-XW))
49868       CW=SQRT(1D0-XW)
49869  
49870       DO 110 I=1,4
49871         DO 100 J=1,4
49872           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
49873   100   CONTINUE
49874   110 CONTINUE
49875       DO 130 I=1,2
49876         DO 120 J=1,2
49877            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
49878            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
49879   120   CONTINUE
49880   130 CONTINUE
49881  
49882 C...KCIN
49883       KCIN=PYCOMP(KFIN)
49884 C...ILR is 1 for left and 2 for right.
49885       ILR=KFIN/KSUSY1
49886 C...IFL is matching non-SUSY flavour.
49887       IFL=MOD(KFIN,KSUSY1)
49888 C...IDU is weak isospin, 1 for down and 2 for up.
49889       IDU=2-MOD(IFL,2)
49890  
49891       XMI=PMAS(KCIN,1)
49892       XMI2=XMI**2
49893       AEM=PYALEM(XMI2)
49894       AS =PYALPS(XMI2)
49895       C1=AEM/XW
49896       XMI3=XMI**3
49897       EI=KCHG(IFL,1)/3D0
49898  
49899       XMBOT=PYMRUN(5,XMI2)
49900       XMTOP=PYMRUN(6,XMI2)
49901  
49902       TANB=RMSS(5)
49903       BETA=ATAN(TANB)
49904       ALFA=RMSS(18)
49905       CBETA=COS(BETA)
49906       SBETA=TANB*CBETA
49907       SINA=SIN(ALFA)
49908       COSA=COS(ALFA)
49909       XMU=-RMSS(4)
49910       ATRIT=RMSS(16)
49911       ATRIB=RMSS(15)
49912       ATRIL=RMSS(17)
49913  
49914 C...2-BODY DECAYS OF SFERMION -> GRAVITINO + FERMION
49915  
49916       IF(IMSS(11).EQ.1) THEN
49917         XMP=RMSS(29)
49918         IDG=39+KSUSY1
49919         XMGR=PMAS(PYCOMP(IDG),1)
49920         XFAC=(XMI2/(XMP*XMGR))**2*XMI/48D0/PI
49921         IF(IFL.EQ.5) THEN
49922           XMF=XMBOT
49923         ELSEIF(IFL.EQ.6) THEN
49924           XMF=XMTOP
49925         ELSE
49926           XMF=PMAS(IFL,1)
49927         ENDIF
49928         IF(XMI.GT.XMGR+XMF) THEN
49929           LKNT=LKNT+1
49930           IDLAM(LKNT,1)=IDG
49931           IDLAM(LKNT,2)=IFL
49932           IDLAM(LKNT,3)=0
49933           XLAM(LKNT)=XFAC*(1D0-XMF**2/XMI2)**4
49934         ENDIF
49935       ENDIF
49936  
49937 C...2-BODY DECAYS OF SFERMION -> FERMION + GAUGE/GAUGINO
49938  
49939 C...CHARGED DECAYS:
49940       DO 140 IX=1,2
49941 C...DI -> U CHI1-,CHI2-
49942         IF(IDU.EQ.1) THEN
49943           XMFP=PMAS(IFL+1,1)
49944           XMF =PMAS(IFL,1)
49945 C...UI -> D CHI1+,CHI2+
49946         ELSE
49947           XMFP=PMAS(IFL-1,1)
49948           XMF =PMAS(IFL,1)
49949         ENDIF
49950         XMJ=SMW(IX)
49951         AXMJ=ABS(XMJ)
49952         IF(XMI.GE.AXMJ+XMFP) THEN
49953           XMA2=XMJ**2
49954           XMB2=XMFP**2
49955           IF(IDU.EQ.2) THEN
49956             IF(IFL.EQ.6) THEN
49957               XMFP=XMBOT
49958               XMF =XMTOP
49959             ELSEIF(IFL.LT.6) THEN
49960               XMF=0D0
49961               XMFP=0D0
49962             ENDIF
49963             CBL=VMIXC(IX,1)
49964             CAL=-XMFP*UMIXC(IX,2)/SR2/XMW/CBETA
49965             CBR=-XMF*VMIXC(IX,2)/SR2/XMW/SBETA
49966             CAR=0D0
49967           ELSE
49968             IF(IFL.EQ.5) THEN
49969               XMF =XMBOT
49970               XMFP=XMTOP
49971             ELSEIF(IFL.LT.5) THEN
49972               XMF=0D0
49973               XMFP=0D0
49974             ENDIF
49975             CBL=UMIXC(IX,1)
49976             CAL=-XMFP*VMIXC(IX,2)/SR2/XMW/SBETA
49977             CBR=-XMF*UMIXC(IX,2)/SR2/XMW/CBETA
49978             CAR=0D0
49979           ENDIF
49980  
49981           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
49982           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
49983           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
49984           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
49985           CAL=CALP
49986           CBL=CBLP
49987           CAR=CARP
49988           CBR=CBRP
49989  
49990 C...F1 -> F` CHI
49991           IF(ILR.EQ.1) THEN
49992             CA=CAL
49993             CB=CBL
49994 C...F2 -> F` CHI
49995           ELSE
49996             CA=CAR
49997             CB=CBR
49998           ENDIF
49999           LKNT=LKNT+1
50000           XL=PYLAMF(XMI2,XMA2,XMB2)
50001 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
50002           XLAM(LKNT)=2D0*C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
50003      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMFP)
50004           IDLAM(LKNT,3)=0
50005           IF(IDU.EQ.1) THEN
50006             IDLAM(LKNT,1)=-KFCCHI(IX)
50007             IDLAM(LKNT,2)=IFL+1
50008           ELSE
50009             IDLAM(LKNT,1)=KFCCHI(IX)
50010             IDLAM(LKNT,2)=IFL-1
50011           ENDIF
50012         ENDIF
50013   140 CONTINUE
50014  
50015 C...NEUTRAL DECAYS
50016       DO 150 IX=1,4
50017 C...DI -> D CHI10
50018         XMF=PMAS(IFL,1)
50019         XMJ=SMZ(IX)
50020         AXMJ=ABS(XMJ)
50021         IF(XMI.GE.AXMJ+XMF) THEN
50022           XMA2=XMJ**2
50023           XMB2=XMF**2
50024           IF(IDU.EQ.1) THEN
50025             IF(IFL.EQ.5) THEN
50026               XMF=XMBOT
50027             ELSEIF(IFL.LT.5) THEN
50028               XMF=0D0
50029             ENDIF
50030             CBL=-ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI+1)
50031             CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
50032             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
50033             CBR=CAL
50034           ELSE
50035             IF(IFL.EQ.6) THEN
50036               XMF=XMTOP
50037             ELSEIF(IFL.LT.5) THEN
50038               XMF=0D0
50039             ENDIF
50040             CBL=ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-1)
50041             CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
50042             CAR=-2D0*EI*TANW*ZMIXC(IX,1)
50043             CBR=CAL
50044           ENDIF
50045  
50046           CALP=SFMIX(IFL,1)*CAL + SFMIX(IFL,2)*CAR
50047           CBLP=SFMIX(IFL,1)*CBL + SFMIX(IFL,2)*CBR
50048           CARP=SFMIX(IFL,4)*CAR + SFMIX(IFL,3)*CAL
50049           CBRP=SFMIX(IFL,4)*CBR + SFMIX(IFL,3)*CBL
50050           CAL=CALP
50051           CBL=CBLP
50052           CAR=CARP
50053           CBR=CBRP
50054  
50055 C...F1 -> F CHI
50056           IF(ILR.EQ.1) THEN
50057             CA=CAL
50058             CB=CBL
50059 C...F2 -> F CHI
50060           ELSE
50061             CA=CAR
50062             CB=CBR
50063           ENDIF
50064           LKNT=LKNT+1
50065           XL=PYLAMF(XMI2,XMA2,XMB2)
50066 C...SPIN AVERAGE = 1/1 NOT 1/2....NO COLOR ENHANCEMENT
50067           XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
50068      &    (ABS(CA)**2+ABS(CB)**2)-4D0*DBLE(CA*DCONJG(CB))*XMJ*XMF)
50069           IDLAM(LKNT,1)=KFNCHI(IX)
50070           IDLAM(LKNT,2)=IFL
50071           IDLAM(LKNT,3)=0
50072         ENDIF
50073   150 CONTINUE
50074  
50075 C...2-BODY DECAYS TO SM GAUGE AND HIGGS BOSONS
50076 C...IG=23,25,35,36
50077       DO 160 II=1,4
50078         IG=IGG(II)
50079         IF(ILR.EQ.1) GOTO 160
50080         XMB=PMAS(IG,1)
50081         XMSF1=PMAS(PYCOMP(KFIN-KSUSY1),1)
50082         IF(XMI.LT.XMSF1+XMB) GOTO 160
50083         IF(IG.EQ.23) THEN
50084           BL=-SIGN(.5D0,EI)/CW+EI*XW/CW
50085           BR=EI*XW/CW
50086           BLR=0D0
50087         ELSEIF(IG.EQ.25) THEN
50088           IF(IFL.EQ.5) THEN
50089             XMF=XMBOT
50090           ELSEIF(IFL.EQ.6) THEN
50091             XMF=XMTOP
50092           ELSEIF(IFL.LT.5) THEN
50093             XMF=0D0
50094           ELSE
50095             XMF=PMAS(IFL,1)
50096           ENDIF
50097           IF(IDU.EQ.2) THEN
50098             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
50099      &      XMF**2/XMW*COSA/SBETA
50100             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
50101      &      XMF**2/XMW*COSA/SBETA
50102           ELSE
50103             GHLL=XMZ/CW*(0.5D0-EI*XW)*(-SIN(ALFA+BETA))+
50104      &      XMF**2/XMW*(-SINA)/CBETA
50105             GHRR=XMZ/CW*(EI*XW)*(-SIN(ALFA+BETA))+
50106      &      XMF**2/XMW*(-SINA)/CBETA
50107           ENDIF
50108           IF(IFL.EQ.5) THEN
50109             AT=ATRIB
50110           ELSEIF(IFL.EQ.6) THEN
50111             AT=ATRIT
50112           ELSEIF(IFL.EQ.15) THEN
50113             AT=ATRIL
50114           ELSE
50115             AT=0D0
50116           ENDIF
50117 C.........need to complexify
50118           IF(IDU.EQ.2) THEN
50119             GHLR=XMF/2D0/XMW/SBETA*(-XMU*SINA+
50120      &      AT*COSA)
50121           ELSE
50122             GHLR=XMF/2D0/XMW/CBETA*(XMU*COSA-
50123      &      AT*SINA)
50124           ENDIF
50125           BL=GHLL
50126           BR=GHRR
50127           BLR=-GHLR
50128         ELSEIF(IG.EQ.35) THEN
50129           IF(IFL.EQ.5) THEN
50130             XMF=XMBOT
50131           ELSEIF(IFL.EQ.6) THEN
50132             XMF=XMTOP
50133           ELSEIF(IFL.LT.5) THEN
50134             XMF=0D0
50135           ELSE
50136             XMF=PMAS(IFL,1)
50137           ENDIF
50138           IF(IDU.EQ.2) THEN
50139             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
50140      &      XMF**2/XMW*SINA/SBETA
50141             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
50142      &      XMF**2/XMW*SINA/SBETA
50143           ELSE
50144             GHLL=XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)+
50145      &      XMF**2/XMW*COSA/CBETA
50146             GHRR=XMZ/CW*(EI*XW)*COS(ALFA+BETA)+
50147      &      XMF**2/XMW*COSA/CBETA
50148           ENDIF
50149           IF(IFL.EQ.5) THEN
50150             AT=ATRIB
50151           ELSEIF(IFL.EQ.6) THEN
50152             AT=ATRIT
50153           ELSEIF(IFL.EQ.15) THEN
50154             AT=ATRIL
50155           ELSE
50156             AT=0D0
50157           ENDIF
50158 C.........Need to complexify
50159           IF(IDU.EQ.2) THEN
50160             GHLR=XMF/2D0/XMW/SBETA*(XMU*COSA+
50161      &      AT*SINA)
50162           ELSE
50163             GHLR=XMF/2D0/XMW/CBETA*(XMU*SINA+
50164      &      AT*COSA)
50165           ENDIF
50166           BL=GHLL
50167           BR=GHRR
50168           BLR=GHLR
50169         ELSEIF(IG.EQ.36) THEN
50170           GHLL=0D0
50171           GHRR=0D0
50172           IF(IFL.EQ.5) THEN
50173             XMF=XMBOT
50174           ELSEIF(IFL.EQ.6) THEN
50175             XMF=XMTOP
50176           ELSEIF(IFL.LT.5) THEN
50177             XMF=0D0
50178           ELSE
50179             XMF=PMAS(IFL,1)
50180           ENDIF
50181           IF(IFL.EQ.5) THEN
50182             AT=ATRIB
50183           ELSEIF(IFL.EQ.6) THEN
50184             AT=ATRIT
50185           ELSEIF(IFL.EQ.15) THEN
50186             AT=ATRIL
50187           ELSE
50188             AT=0D0
50189           ENDIF
50190 C.........Need to complexify
50191           IF(IDU.EQ.2) THEN
50192             GHLR=XMF/2D0/XMW*(-XMU+AT/TANB)
50193           ELSE
50194             GHLR=XMF/2D0/XMW/(-XMU+AT*TANB)
50195           ENDIF
50196           BL=GHLL
50197           BR=GHRR
50198           BLR=GHLR
50199         ENDIF
50200         AL=SFMIX(IFL,1)*SFMIX(IFL,3)*BL+
50201      &  SFMIX(IFL,2)*SFMIX(IFL,4)*BR+
50202      &  (SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,3)*SFMIX(IFL,2))*BLR
50203         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
50204         LKNT=LKNT+1
50205         IF(IG.EQ.23) THEN
50206           XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
50207         ELSE
50208           XLAM(LKNT)=C1/4D0/XMI3*SQRT(XL)*AL**2
50209         ENDIF
50210         IDLAM(LKNT,3)=0
50211         IDLAM(LKNT,1)=KFIN-KSUSY1
50212         IDLAM(LKNT,2)=IG
50213   160 CONTINUE
50214  
50215 C...SF -> SF' + W
50216       XMB=PMAS(24,1)
50217       IF(MOD(IFL,2).EQ.0) THEN
50218         KF1=KSUSY1+IFL-1
50219       ELSE
50220         KF1=KSUSY1+IFL+1
50221       ENDIF
50222       KF2=KF1+KSUSY1
50223       XMSF1=PMAS(PYCOMP(KF1),1)
50224       XMSF2=PMAS(PYCOMP(KF2),1)
50225       IF(XMI.GT.XMB+XMSF1) THEN
50226         IF(MOD(IFL,2).EQ.0) THEN
50227           IF(ILR.EQ.1) THEN
50228             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,1)
50229           ELSE
50230             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,1)
50231           ENDIF
50232         ELSE
50233           IF(ILR.EQ.1) THEN
50234             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,1)
50235           ELSE
50236             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,1)
50237           ENDIF
50238         ENDIF
50239         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
50240         LKNT=LKNT+1
50241         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
50242         IDLAM(LKNT,3)=0
50243         IDLAM(LKNT,1)=KF1
50244         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
50245       ENDIF
50246       IF(XMI.GT.XMB+XMSF2) THEN
50247         IF(MOD(IFL,2).EQ.0) THEN
50248           IF(ILR.EQ.1) THEN
50249             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL-1,3)
50250           ELSE
50251             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL-1,3)
50252           ENDIF
50253         ELSE
50254           IF(ILR.EQ.1) THEN
50255             AL=1D0/SR2*SFMIX(IFL,1)*SFMIX(IFL+1,3)
50256           ELSE
50257             AL=1D0/SR2*SFMIX(IFL,3)*SFMIX(IFL+1,3)
50258           ENDIF
50259         ENDIF
50260         XL=PYLAMF(XMI2,XMSF2**2,XMB**2)
50261         LKNT=LKNT+1
50262         XLAM(LKNT)=C1/4D0/XMI3*XL**1.5D0/XMB**2*AL**2
50263         IDLAM(LKNT,3)=0
50264         IDLAM(LKNT,1)=KF2
50265         IDLAM(LKNT,2)=SIGN(24,KCHG(IFL,1))
50266       ENDIF
50267  
50268 C...SF -> SF' + HC
50269       XMB=PMAS(37,1)
50270       IF(MOD(IFL,2).EQ.0) THEN
50271         KF1=KSUSY1+IFL-1
50272       ELSE
50273         KF1=KSUSY1+IFL+1
50274       ENDIF
50275       KF2=KF1+KSUSY1
50276       XMSF1=PMAS(PYCOMP(KF1),1)
50277       XMSF2=PMAS(PYCOMP(KF2),1)
50278       IF(XMI.GT.XMB+XMSF1) THEN
50279         XMF=0D0
50280         XMFP=0D0
50281         AT=0D0
50282         AB=0D0
50283         IF(MOD(IFL,2).EQ.0) THEN
50284 C...T1-> B1 HC
50285           IF(ILR.EQ.1) THEN
50286             CH1=-SFMIX(IFL,1)*SFMIX(IFL-1,1)
50287             CH2= SFMIX(IFL,2)*SFMIX(IFL-1,2)
50288             CH3=-SFMIX(IFL,1)*SFMIX(IFL-1,2)
50289             CH4=-SFMIX(IFL,2)*SFMIX(IFL-1,1)
50290 C...T2-> B1 HC
50291           ELSE
50292             CH1= SFMIX(IFL,3)*SFMIX(IFL-1,1)
50293             CH2=-SFMIX(IFL,4)*SFMIX(IFL-1,2)
50294             CH3= SFMIX(IFL,3)*SFMIX(IFL-1,2)
50295             CH4= SFMIX(IFL,4)*SFMIX(IFL-1,1)
50296           ENDIF
50297           IF(IFL.EQ.6) THEN
50298             XMF=XMTOP
50299             XMFP=XMBOT
50300             AT=ATRIT
50301             AB=ATRIB
50302           ENDIF
50303         ELSE
50304 C...B1 -> T1 HC
50305           IF(ILR.EQ.1) THEN
50306             CH1=-SFMIX(IFL+1,1)*SFMIX(IFL,1)
50307             CH2= SFMIX(IFL+1,2)*SFMIX(IFL,2)
50308             CH3=-SFMIX(IFL+1,1)*SFMIX(IFL,2)
50309             CH4=-SFMIX(IFL+1,2)*SFMIX(IFL,1)
50310 C...B2-> T1 HC
50311           ELSE
50312             CH1= SFMIX(IFL,3)*SFMIX(IFL+1,1)
50313             CH2=-SFMIX(IFL,4)*SFMIX(IFL+1,2)
50314             CH3= SFMIX(IFL,4)*SFMIX(IFL+1,1)
50315             CH4= SFMIX(IFL,3)*SFMIX(IFL+1,2)
50316           ENDIF
50317           IF(IFL.EQ.5) THEN
50318             XMF=XMTOP
50319             XMFP=XMBOT
50320             AT=ATRIT
50321             AB=ATRIB
50322           ENDIF
50323         ENDIF
50324         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
50325         LKNT=LKNT+1
50326 C.......Need to complexify
50327         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
50328      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
50329      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
50330         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
50331         IDLAM(LKNT,3)=0
50332         IDLAM(LKNT,1)=KF1
50333         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
50334       ENDIF
50335       IF(XMI.GT.XMB+XMSF2) THEN
50336         XMF=0D0
50337         XMFP=0D0
50338         AT=0D0
50339         AB=0D0
50340         IF(MOD(IFL,2).EQ.0) THEN
50341 C...T1-> B2 HC
50342           IF(ILR.EQ.1) THEN
50343             CH1= SFMIX(IFL-1,3)*SFMIX(IFL,1)
50344             CH2=-SFMIX(IFL-1,4)*SFMIX(IFL,2)
50345             CH3= SFMIX(IFL-1,4)*SFMIX(IFL,1)
50346             CH4= SFMIX(IFL-1,3)*SFMIX(IFL,2)
50347 C...T2-> B2 HC
50348           ELSE
50349             CH1= -SFMIX(IFL,3)*SFMIX(IFL-1,3)
50350             CH2= SFMIX(IFL,4)*SFMIX(IFL-1,4)
50351             CH3= -SFMIX(IFL,3)*SFMIX(IFL-1,4)
50352             CH4= -SFMIX(IFL,4)*SFMIX(IFL-1,3)
50353           ENDIF
50354           IF(IFL.EQ.6) THEN
50355             XMF=XMTOP
50356             XMFP=XMBOT
50357             AT=ATRIT
50358             AB=ATRIB
50359           ENDIF
50360         ELSE
50361 C...B1 -> T2 HC
50362           IF(ILR.EQ.1) THEN
50363             CH1= SFMIX(IFL+1,3)*SFMIX(IFL,1)
50364             CH2=-SFMIX(IFL+1,4)*SFMIX(IFL,2)
50365             CH3= SFMIX(IFL+1,3)*SFMIX(IFL,2)
50366             CH4= SFMIX(IFL+1,4)*SFMIX(IFL,1)
50367 C...B2-> T2 HC
50368           ELSE
50369             CH1= -SFMIX(IFL+1,3)*SFMIX(IFL,3)
50370             CH2= SFMIX(IFL+1,4)*SFMIX(IFL,4)
50371             CH3= -SFMIX(IFL+1,3)*SFMIX(IFL,4)
50372             CH4= -SFMIX(IFL+1,4)*SFMIX(IFL,3)
50373           ENDIF
50374           IF(IFL.EQ.5) THEN
50375             XMF=XMTOP
50376             XMFP=XMBOT
50377             AT=ATRIT
50378             AB=ATRIB
50379           ENDIF
50380         ENDIF
50381         XL=PYLAMF(XMI2,XMSF1**2,XMB**2)
50382         LKNT=LKNT+1
50383 C.......Need to complexify
50384         AL=CH1*(XMW2*2D0*CBETA*SBETA-XMFP**2*TANB-XMF**2/TANB)+
50385      &  CH2*2D0*XMF*XMFP/(2D0*CBETA*SBETA)+
50386      &  CH3*XMFP*(-XMU+AB*TANB)+CH4*XMF*(-XMU+AT/TANB)
50387         XLAM(LKNT)=C1/8D0/XMI3*SQRT(XL)/XMW2*AL**2
50388         IDLAM(LKNT,3)=0
50389         IDLAM(LKNT,1)=KF2
50390         IDLAM(LKNT,2)=SIGN(37,KCHG(IFL,1))
50391       ENDIF
50392  
50393 C...2-BODY DECAYS OF SQUARK -> QUARK GLUINO
50394  
50395       IF(IFL.LE.6) THEN
50396         XMFP=0D0
50397         XMF=0D0
50398         IF(IFL.EQ.6) XMF=PMAS(6,1)
50399         IF(IFL.EQ.5) XMF=PMAS(5,1)
50400         XMJ=PMAS(PYCOMP(KSUSY1+21),1)
50401         AXMJ=ABS(XMJ)
50402         IF(XMI.GE.AXMJ+XMF) THEN
50403           AL=-SFMIX(IFL,3)
50404           BL=SFMIX(IFL,1)
50405           AR=-SFMIX(IFL,4)
50406           BR=SFMIX(IFL,2)
50407 C...F1 -> F CHI
50408           IF(ILR.EQ.1) THEN
50409             XCA=AL
50410             XCB=BL
50411 C...F2 -> F CHI
50412           ELSE
50413             XCA=AR
50414             XCB=BR
50415           ENDIF
50416           LKNT=LKNT+1
50417           XMA2=XMJ**2
50418           XMB2=XMF**2
50419           XL=PYLAMF(XMI2,XMA2,XMB2)
50420           XLAM(LKNT)=4D0/3D0*AS/2D0/XMI3*SQRT(XL)*((XMI2-XMB2-XMA2)*
50421      &    (XCA**2+XCB**2)+4D0*XCA*XCB*XMJ*XMF)
50422           IDLAM(LKNT,1)=KSUSY1+21
50423           IDLAM(LKNT,2)=IFL
50424           IDLAM(LKNT,3)=0
50425         ENDIF
50426       ENDIF
50427  
50428 C...IF NOTHING ELSE FOR T1, THEN T1* -> C+CHI0
50429       IF(KFIN.EQ.KSUSY1+6.AND.PMAS(KCIN,1).GT.
50430      &PMAS(PYCOMP(KSUSY1+22),1)+PMAS(4,1)) THEN
50431 C...THIS IS A BACK-OF-THE-ENVELOPE ESTIMATE
50432 C...M = 1/(16PI**2)G**3 = G*2/(4PI) G/(4PI) = C1 * G/(4PI)
50433 C...M*M = C1**2 * G**2/(16PI**2)
50434 C...G = 1/(8PI)P/MI**2 * M*M = C1**3/(32PI**2)*LAM/(2*MI**3)
50435         LKNT=LKNT+1
50436         XL=PYLAMF(XMI2,0D0,PMAS(PYCOMP(KSUSY1+22),1)**2)
50437         XLAM(LKNT)=C1**3/64D0/PI**2/XMI3*SQRT(XL)
50438         IF(XLAM(LKNT).EQ.0) XLAM(LKNT)=1D-3
50439         IDLAM(LKNT,1)=KSUSY1+22
50440         IDLAM(LKNT,2)=4
50441         IDLAM(LKNT,3)=0
50442       ENDIF
50443  
50444 C...R-violating sfermion decays (SKANDS).
50445       CALL PYRVSF(KFIN,XLAM,IDLAM,LKNT)
50446  
50447       IKNT=LKNT
50448       XLAM(0)=0D0
50449       DO 170 I=1,IKNT
50450         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
50451         XLAM(0)=XLAM(0)+XLAM(I)
50452   170 CONTINUE
50453       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-3
50454  
50455       RETURN
50456       END
50457  
50458 C*********************************************************************
50459  
50460 C...PYGLUI
50461 C...Calculates gluino decay modes.
50462  
50463       SUBROUTINE PYGLUI(KFIN,XLAM,IDLAM,IKNT)
50464  
50465 C...Double precision and integer declarations.
50466       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50467       IMPLICIT INTEGER(I-N)
50468       INTEGER PYK,PYCHGE,PYCOMP
50469 C...Parameter statement to help give large particle numbers.
50470       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50471      &KEXCIT=4000000,KDIMEN=5000000)
50472 C...Commonblocks.
50473       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50474       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50475       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
50476       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50477      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
50478 CC     &SFMIX(16,4),
50479 C      COMMON/PYINTS/XXM(20)
50480       COMPLEX*16 CXC
50481       COMMON/PYINTC/XXC(10),CXC(8)
50482       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
50483  
50484 C...Local variables
50485       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
50486       DOUBLE PRECISION XMI,XMJ,XMF,AXMJ,AXMI
50487       DOUBLE PRECISION XMI2,XMI3,XMA2,XMB2,XMFP
50488       DOUBLE PRECISION PYLAMF,XL
50489       DOUBLE PRECISION TANW,XW,AEM,C1,AS,S12MAX,S12MIN
50490       DOUBLE PRECISION CA,CB,AL,AR,BL,BR
50491       DOUBLE PRECISION XLAM(0:400)
50492       INTEGER IDLAM(400,3)
50493       INTEGER LKNT,IX,ILR,I,IKNT,IFL
50494       DOUBLE PRECISION SR2
50495       DOUBLE PRECISION GAM
50496       DOUBLE PRECISION PYALEM,PI,PYALPS,EI,T3I
50497       EXTERNAL PYGAUS,PYXXZ6
50498       DOUBLE PRECISION PYGAUS,PYXXZ6
50499       DOUBLE PRECISION PREC
50500       INTEGER KFNCHI(4),KFCCHI(2)
50501       DATA PI/3.141592654D0/
50502       DATA SR2/1.4142136D0/
50503       DATA PREC/1D-2/
50504       DATA KFNCHI/1000022,1000023,1000025,1000035/
50505       DATA KFCCHI/1000024,1000037/
50506  
50507 C...COUNT THE NUMBER OF DECAY MODES
50508       LKNT=0
50509       IF(KFIN.NE.KSUSY1+21) RETURN
50510       KCIN=PYCOMP(KFIN)
50511  
50512       XW=PARU(102)
50513       TANW = SQRT(XW/(1D0-XW))
50514  
50515       XMI=PMAS(KCIN,1)
50516       AXMI=ABS(XMI)
50517       XMI2=XMI**2
50518       AEM=PYALEM(XMI2)
50519       AS =PYALPS(XMI2)
50520       C1=AEM/XW
50521       XMI3=AXMI**3
50522  
50523       XMI=SIGN(XMI,RMSS(3))
50524  
50525 C...2-BODY DECAYS OF GLUINO -> GRAVITINO GLUON
50526  
50527       IF(IMSS(11).EQ.1) THEN
50528         XMP=RMSS(29)
50529         IDG=39+KSUSY1
50530         XMGR=PMAS(PYCOMP(IDG),1)
50531         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
50532         IF(AXMI.GT.XMGR) THEN
50533           LKNT=LKNT+1
50534           IDLAM(LKNT,1)=IDG
50535           IDLAM(LKNT,2)=21
50536           IDLAM(LKNT,3)=0
50537           XLAM(LKNT)=XFAC
50538         ENDIF
50539       ENDIF
50540  
50541 C...2-BODY DECAYS OF GLUINO -> QUARK SQUARK
50542  
50543       DO 110 IFL=1,6
50544         DO 100 ILR=1,2
50545           XMJ=PMAS(PYCOMP(ILR*KSUSY1+IFL),1)
50546           AXMJ=ABS(XMJ)
50547           XMF=PMAS(IFL,1)
50548           IF(AXMI.GE.AXMJ+XMF) THEN
50549 C...Minus sign difference from gluino-quark-squark feynman rules
50550             AL=SFMIX(IFL,1)
50551             BL=-SFMIX(IFL,3)
50552             AR=SFMIX(IFL,2)
50553             BR=-SFMIX(IFL,4)
50554 C...F1 -> F CHI
50555             IF(ILR.EQ.1) THEN
50556               CA=AL
50557               CB=BL
50558 C...F2 -> F CHI
50559             ELSE
50560               CA=AR
50561               CB=BR
50562             ENDIF
50563             LKNT=LKNT+1
50564             XMA2=XMJ**2
50565             XMB2=XMF**2
50566             XL=PYLAMF(XMI2,XMA2,XMB2)
50567             XLAM(LKNT)=4D0/8D0*AS/4D0/XMI3*SQRT(XL)*((XMI2+XMB2-XMA2)*
50568      &      (CA**2+CB**2)-4D0*CA*CB*XMI*XMF)
50569             IDLAM(LKNT,1)=ILR*KSUSY1+IFL
50570             IDLAM(LKNT,2)=-IFL
50571             IDLAM(LKNT,3)=0
50572             LKNT=LKNT+1
50573             XLAM(LKNT)=XLAM(LKNT-1)
50574             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
50575             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
50576             IDLAM(LKNT,3)=0
50577           ENDIF
50578   100   CONTINUE
50579   110 CONTINUE
50580  
50581 C...3-BODY DECAYS TO GAUGINO FERMION-FERMION
50582 C...GLUINO -> NI Q QBAR
50583       DO 170 IX=1,4
50584         XMJ=SMZ(IX)
50585         AXMJ=ABS(XMJ)
50586         IF(AXMI.GE.AXMJ) THEN
50587           DO 120 I=1,4
50588             ZMIXC(IX,I)=DCMPLX(ZMIX(IX,I),ZMIXI(IX,I))
50589   120     CONTINUE
50590           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))/SR2
50591           ORPP=DCONJG(OLPP)
50592           XXC(1)=0D0
50593           XXC(2)=XMJ
50594           XXC(3)=0D0
50595           XXC(4)=XMI
50596           IA=1
50597           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
50598           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
50599           XXC(7)=XXC(5)
50600           XXC(8)=XXC(6)
50601           XXC(9)=1D6
50602           XXC(10)=0D0
50603           EI=KCHG(IA,1)/3D0
50604           T3I=SIGN(1D0,EI+1D-6)/2D0
50605           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
50606           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
50607           CXC(1)=0D0
50608           CXC(2)=-GLIJ
50609           CXC(3)=0D0
50610           CXC(4)=DCONJG(GLIJ)
50611           CXC(5)=0D0
50612           CXC(6)=GRIJ
50613           CXC(7)=0D0
50614           CXC(8)=-DCONJG(GRIJ)
50615           S12MIN=0D0
50616           S12MAX=(AXMI-AXMJ)**2
50617           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 130
50618           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
50619             LKNT=LKNT+1
50620             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
50621      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
50622             IDLAM(LKNT,1)=KFNCHI(IX)
50623             IDLAM(LKNT,2)=1
50624             IDLAM(LKNT,3)=-1
50625           ENDIF
50626           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
50627             LKNT=LKNT+1
50628             XLAM(LKNT)=XLAM(LKNT-1)
50629             IDLAM(LKNT,1)=KFNCHI(IX)
50630             IDLAM(LKNT,2)=3
50631             IDLAM(LKNT,3)=-3
50632           ENDIF
50633   130     CONTINUE
50634           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
50635             PMOLD=PMAS(PYCOMP(KSUSY1+5),1)
50636             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+5),1)+PMAS(5,1)) THEN
50637               GOTO 140
50638             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+5),1)+PMAS(5,1)) THEN
50639               PMAS(PYCOMP(KSUSY1+5),1)=100D0*XMI
50640             ENDIF
50641             CALL PYTBBN(IX,100,-1D0/3D0,XMI,GAM)
50642             LKNT=LKNT+1
50643             XLAM(LKNT)=GAM
50644             IDLAM(LKNT,1)=KFNCHI(IX)
50645             IDLAM(LKNT,2)=5
50646             IDLAM(LKNT,3)=-5
50647             PMAS(PYCOMP(KSUSY1+5),1)=PMOLD
50648           ENDIF
50649 C...U-TYPE QUARKS
50650   140     CONTINUE
50651           IA=2
50652           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
50653           XXC(6)=PMAS(PYCOMP(KSUSY2+IA),1)
50654 C        IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 290
50655           XXC(7)=XXC(5)
50656           XXC(8)=XXC(6)
50657           EI=KCHG(IA,1)/3D0
50658           T3I=SIGN(1D0,EI+1D-6)/2D0
50659           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
50660           GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
50661           CXC(2)=-GLIJ
50662           CXC(4)=DCONJG(GLIJ)
50663           CXC(6)=GRIJ
50664           CXC(8)=-DCONJG(GRIJ)
50665           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 150
50666           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
50667             LKNT=LKNT+1
50668             XLAM(LKNT)=C1*AS/XMI3/(16D0*PI)*
50669      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-2)
50670             IDLAM(LKNT,1)=KFNCHI(IX)
50671             IDLAM(LKNT,2)=2
50672             IDLAM(LKNT,3)=-2
50673           ENDIF
50674           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
50675             LKNT=LKNT+1
50676             XLAM(LKNT)=XLAM(LKNT-1)
50677             IDLAM(LKNT,1)=KFNCHI(IX)
50678             IDLAM(LKNT,2)=4
50679             IDLAM(LKNT,3)=-4
50680           ENDIF
50681   150     CONTINUE
50682 C...INCLUDE THE DECAY GLUINO -> NJ + T + T~
50683 C...IF THE DECAY GLUINO -> ST + T CANNOT OCCUR
50684           XMF=PMAS(6,1)
50685           IF(AXMI.GE.AXMJ+2D0*XMF) THEN
50686             PMOLD=PMAS(PYCOMP(KSUSY1+6),1)
50687             IF(AXMI.GT.PMAS(PYCOMP(KSUSY2+6),1)+XMF) THEN
50688               GOTO 160
50689             ELSEIF(AXMI.GT.PMAS(PYCOMP(KSUSY1+6),1)+XMF) THEN
50690               PMAS(PYCOMP(KSUSY1+6),1)=100D0*XMI
50691             ENDIF
50692             CALL PYTBBN(IX,100,2D0/3D0,XMI,GAM)
50693             LKNT=LKNT+1
50694             XLAM(LKNT)=GAM
50695             IDLAM(LKNT,1)=KFNCHI(IX)
50696             IDLAM(LKNT,2)=6
50697             IDLAM(LKNT,3)=-6
50698             PMAS(PYCOMP(KSUSY1+6),1)=PMOLD
50699           ENDIF
50700   160     CONTINUE
50701         ENDIF
50702   170 CONTINUE
50703  
50704 C...GLUINO -> CI Q QBAR'
50705       DO 210 IX=1,2
50706         XMJ=SMW(IX)
50707         AXMJ=ABS(XMJ)
50708         IF(AXMI.GE.AXMJ) THEN
50709           DO 180 I=1,2
50710             VMIXC(IX,I)=DCMPLX(VMIX(IX,I),VMIXI(IX,I))
50711             UMIXC(IX,I)=DCMPLX(UMIX(IX,I),UMIXI(IX,I))
50712   180     CONTINUE
50713           S12MIN=0D0
50714           S12MAX=(AXMI-AXMJ)**2
50715           XXC(1)=0D0
50716           XXC(2)=XMJ
50717           XXC(3)=0D0
50718           XXC(4)=XMI
50719           XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
50720           XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
50721           XXC(9)=1D6
50722           XXC(10)=0D0
50723           OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
50724           ORPP=DCONJG(OLPP)
50725           CXC(1)=DCMPLX(0D0,0D0)
50726           CXC(3)=DCMPLX(0D0,0D0)
50727           CXC(5)=DCMPLX(0D0,0D0)
50728           CXC(7)=DCMPLX(0D0,0D0)
50729           CXC(2)=UMIXC(IX,1)*OLPP/SR2
50730           CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
50731           CXC(6)=DCMPLX(0D0,0D0)
50732           CXC(8)=DCMPLX(0D0,0D0)
50733           IF(XXC(5).LT.AXMI) THEN
50734             XXC(5)=1D6
50735           ELSEIF(XXC(6).LT.AXMI) THEN
50736             XXC(6)=1D6
50737           ENDIF
50738           XXC(7)=XXC(6)
50739           XXC(8)=XXC(5)
50740           IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 190
50741           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
50742             LKNT=LKNT+1
50743             XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
50744      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
50745             IDLAM(LKNT,1)=KFCCHI(IX)
50746             IDLAM(LKNT,2)=1
50747             IDLAM(LKNT,3)=-2
50748             LKNT=LKNT+1
50749             XLAM(LKNT)=XLAM(LKNT-1)
50750             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
50751             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
50752             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
50753           ENDIF
50754           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
50755             LKNT=LKNT+1
50756             XLAM(LKNT)=XLAM(LKNT-1)
50757             IDLAM(LKNT,1)=KFCCHI(IX)
50758             IDLAM(LKNT,2)=3
50759             IDLAM(LKNT,3)=-4
50760             LKNT=LKNT+1
50761             XLAM(LKNT)=XLAM(LKNT-1)
50762             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
50763             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
50764             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
50765           ENDIF
50766   190     CONTINUE
50767  
50768           XMF=PMAS(6,1)
50769           XMFP=PMAS(5,1)
50770           IF(AXMI.GE.AXMJ+XMF+XMFP) THEN
50771             IF(XMI.GT.MIN(PMAS(PYCOMP(KSUSY1+5),1)+XMFP,
50772      $      PMAS(PYCOMP(KSUSY2+6),1)+XMF)) GOTO 200
50773             PMOLT2=PMAS(PYCOMP(KSUSY2+6),1)
50774             PMOLB2=PMAS(PYCOMP(KSUSY2+5),1)
50775             PMOLT1=PMAS(PYCOMP(KSUSY1+6),1)
50776             PMOLB1=PMAS(PYCOMP(KSUSY1+5),1)
50777             IF(XMI.GT.PMOLT2+XMF) PMAS(PYCOMP(KSUSY2+6),1)=100D0*AXMI
50778             IF(XMI.GT.PMOLT1+XMF) PMAS(PYCOMP(KSUSY1+6),1)=100D0*AXMI
50779             IF(XMI.GT.PMOLB2+XMFP) PMAS(PYCOMP(KSUSY2+5),1)=100D0*AXMI
50780             IF(XMI.GT.PMOLB1+XMFP) PMAS(PYCOMP(KSUSY1+5),1)=100D0*AXMI
50781             CALL PYTBBC(IX,100,XMI,GAM)
50782             LKNT=LKNT+1
50783             XLAM(LKNT)=GAM
50784             IDLAM(LKNT,1)=KFCCHI(IX)
50785             IDLAM(LKNT,2)=5
50786             IDLAM(LKNT,3)=-6
50787             LKNT=LKNT+1
50788             XLAM(LKNT)=XLAM(LKNT-1)
50789             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
50790             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
50791             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
50792             PMAS(PYCOMP(KSUSY2+6),1)=PMOLT2
50793             PMAS(PYCOMP(KSUSY2+5),1)=PMOLB2
50794             PMAS(PYCOMP(KSUSY1+6),1)=PMOLT1
50795             PMAS(PYCOMP(KSUSY1+5),1)=PMOLB1
50796           ENDIF
50797   200     CONTINUE
50798         ENDIF
50799   210 CONTINUE
50800  
50801 C...R-parity violating (3-body) decays.
50802       CALL PYRVGL(KFIN,XLAM,IDLAM,LKNT)
50803  
50804       IKNT=LKNT
50805       XLAM(0)=0D0
50806       DO 220 I=1,IKNT
50807         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
50808         XLAM(0)=XLAM(0)+XLAM(I)
50809   220 CONTINUE
50810       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
50811  
50812       RETURN
50813       END
50814  
50815  
50816 C*********************************************************************
50817  
50818 C...PYTBBN
50819 C...Calculates the three-body decay of gluinos into
50820 C...neutralinos and third generation fermions.
50821  
50822       SUBROUTINE PYTBBN(I,NN,E,XMGLU,GAM)
50823  
50824 C...Double precision and integer declarations.
50825       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
50826       IMPLICIT INTEGER(I-N)
50827       INTEGER PYK,PYCHGE,PYCOMP
50828 C...Parameter statement to help give large particle numbers.
50829       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
50830      &KEXCIT=4000000,KDIMEN=5000000)
50831 C...Commonblocks.
50832       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
50833       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
50834       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
50835       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
50836      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
50837       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
50838  
50839 C...Local variables.
50840       EXTERNAL PYSIMP,PYLAMF
50841       DOUBLE PRECISION PYSIMP,PYLAMF
50842       INTEGER LIN,NN
50843       DOUBLE PRECISION COSD,SIND,COSD2,SIND2,COS2D,SIN2D
50844       DOUBLE PRECISION HL,HR,FL,FR,HL2,HR2,FL2,FR2
50845       DOUBLE PRECISION XMS2(2),XM,XM2,XMG,XMG2,XMR,XMR2
50846       DOUBLE PRECISION SBAR,SMIN,SMAX,XMQA,W,GRS,G(0:6),SUMME(0:100)
50847       DOUBLE PRECISION FF,HH,HFL,HFR,HRFL,HLFR,XMQ4,XM24
50848       DOUBLE PRECISION XLN1,XLN2,B1,B2
50849       DOUBLE PRECISION E,XMGLU,GAM
50850       DOUBLE PRECISION HRB(4),HLB(4),FLB(4),FRB(4)
50851       SAVE HRB,HLB,FLB,FRB
50852       DOUBLE PRECISION ALPHAW,ALPHAS
50853       DOUBLE PRECISION HLT(4),HRT(4),FLT(4),FRT(4)
50854       SAVE HLT,HRT,FLT,FRT
50855       DOUBLE PRECISION AMN(4),AN(4,4),ZN(3)
50856       SAVE AMN,AN,ZN
50857       DOUBLE PRECISION AMBOT,SINC,COSC
50858       DOUBLE PRECISION AMTOP,SINA,COSA
50859       DOUBLE PRECISION SINW,COSW,TANW
50860       DOUBLE PRECISION ROT1(4,4)
50861       LOGICAL IFIRST
50862       SAVE IFIRST
50863       DATA IFIRST/.TRUE./
50864  
50865       TANB=RMSS(5)
50866       SINB=TANB/SQRT(1D0+TANB**2)
50867       COSB=SINB/TANB
50868       XW=PARU(102)
50869       SINW=SQRT(XW)
50870       COSW=SQRT(1D0-XW)
50871       TANW=SINW/COSW
50872       AMW=PMAS(24,1)
50873       COSC=SFMIX(5,1)
50874       SINC=SFMIX(5,3)
50875       COSA=SFMIX(6,1)
50876       SINA=SFMIX(6,3)
50877       AMBOT=PYMRUN(5,XMGLU**2)
50878       AMTOP=PYMRUN(6,XMGLU**2)
50879       W2=SQRT(2D0)
50880       FAKT1=AMBOT/W2/AMW/COSB
50881       FAKT2=AMTOP/W2/AMW/SINB
50882       IF(IFIRST) THEN
50883         DO 110 II=1,4
50884           AMN(II)=SMZ(II)
50885           DO 100 J=1,4
50886             ROT1(II,J)=0D0
50887             AN(II,J)=0D0
50888   100     CONTINUE
50889   110   CONTINUE
50890         ROT1(1,1)=COSW
50891         ROT1(1,2)=-SINW
50892         ROT1(2,1)=-ROT1(1,2)
50893         ROT1(2,2)=ROT1(1,1)
50894         ROT1(3,3)=COSB
50895         ROT1(3,4)=SINB
50896         ROT1(4,3)=-ROT1(3,4)
50897         ROT1(4,4)=ROT1(3,3)
50898         DO 140 II=1,4
50899           DO 130 J=1,4
50900             DO 120 JJ=1,4
50901               AN(II,J)=AN(II,J)+ZMIX(II,JJ)*ROT1(JJ,J)
50902   120       CONTINUE
50903   130     CONTINUE
50904   140   CONTINUE
50905         DO 150 J=1,4
50906           ZN(1)=-FAKT2*(-SINB*AN(J,3)+COSB*AN(J,4))
50907           ZN(2)=-2D0*W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
50908           ZN(3)=-2*W2/3D0*SINW*AN(J,1)-W2*(0.5D0-2D0/3D0*
50909      &    XW)*AN(J,2)/COSW
50910           HRT(J)=ZN(1)*COSA-ZN(3)*SINA
50911           HLT(J)=ZN(1)*COSA+ZN(2)*SINA
50912           FLT(J)=ZN(3)*COSA+ZN(1)*SINA
50913           FRT(J)=ZN(2)*COSA-ZN(1)*SINA
50914 C          FLU(J)=ZN(3)
50915 C          FRU(J)=ZN(2)
50916           ZN(1)=-FAKT1*(COSB*AN(J,3)+SINB*AN(J,4))
50917           ZN(2)=W2/3D0*SINW*(TANW*AN(J,2)-AN(J,1))
50918           ZN(3)=W2/3D0*SINW*AN(J,1)+W2*(0.5D0-XW/3D0)*AN(J,2)/COSW
50919           HRB(J)=ZN(1)*COSC-ZN(3)*SINC
50920           HLB(J)=ZN(1)*COSC+ZN(2)*SINC
50921           FLB(J)=ZN(3)*COSC+ZN(1)*SINC
50922           FRB(J)=ZN(2)*COSC-ZN(1)*SINC
50923 C          FLD(J)=ZN(3)
50924 C          FRD(J)=ZN(2)
50925   150   CONTINUE
50926 C        AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
50927 C        AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
50928 C        AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
50929 C        AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
50930         IFIRST=.FALSE.
50931       ENDIF
50932  
50933       IF(NINT(3D0*E).EQ.2) THEN
50934         HL=HLT(I)
50935         HR=HRT(I)
50936         FL=FLT(I)
50937         FR=FRT(I)
50938         COSD=SFMIX(6,1)
50939         SIND=SFMIX(6,3)
50940         XMS2(1)=PMAS(PYCOMP(KSUSY1+6),1)**2
50941         XMS2(2)=PMAS(PYCOMP(KSUSY2+6),1)**2
50942         XM=PMAS(6,1)
50943       ELSE
50944         HL=HLB(I)
50945         HR=HRB(I)
50946         FL=FLB(I)
50947         FR=FRB(I)
50948         COSD=SFMIX(5,1)
50949         SIND=SFMIX(5,3)
50950         XMS2(1)=PMAS(PYCOMP(KSUSY1+5),1)**2
50951         XMS2(2)=PMAS(PYCOMP(KSUSY2+5),1)**2
50952         XM=PMAS(5,1)
50953       ENDIF
50954       COSD2=COSD*COSD
50955       SIND2=SIND*SIND
50956       COS2D=COSD2-SIND2
50957       SIN2D=SIND*COSD*2D0
50958       HL2=HL*HL
50959       HR2=HR*HR
50960       FL2=FL*FL
50961       FR2=FR*FR
50962       FF=FL*FR
50963       HH=HL*HR
50964       HFL=HL*FL
50965       HFR=HR*FR
50966       HRFL=HR*FL
50967       HLFR=HL*FR
50968       XM2=XM*XM
50969       XMG=XMGLU
50970       XMG2=XMG*XMG
50971       ALPHAW=PYALEM(XMG2)
50972       ALPHAS=PYALPS(XMG2)
50973       XMR=AMN(I)
50974       XMR2=XMR*XMR
50975       XMQ4=XMG*XM2*XMR
50976       XM24=(XMG2+XM2)*(XM2+XMR2)
50977       SMIN=4D0*XM2
50978       SMAX=(XMG-ABS(XMR))**2
50979       XMQA=XMG2+2D0*XM2+XMR2
50980       DO 170 LIN=1,NN-1
50981         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
50982         GRS=SBAR-XMQA
50983         W=PYLAMF(XMG2,XMR2,SBAR)*(0.25D0-XM2/SBAR)
50984         W=DSQRT(W)
50985         XLN1=LOG(ABS((GRS/2D0+XMS2(1)-W)/(GRS/2D0+XMS2(1)+W)))
50986         XLN2=LOG(ABS((GRS/2D0+XMS2(2)-W)/(GRS/2D0+XMS2(2)+W)))
50987         B1=1D0/(GRS/2D0+XMS2(1)-W)-1D0/(GRS/2D0+XMS2(1)+W)
50988         B2=1D0/(GRS/2D0+XMS2(2)-W)-1D0/(GRS/2D0+XMS2(2)+W)
50989         G(0)=-2D0*(HL2+FL2+HR2+FR2+(HFR-HFL)*SIN2D
50990      &  +2D0*(FF*SIND2-HH*COSD2))*W
50991         G(1)=((HL2+FL2)*(XMQA-2D0*XMS2(1)-2D0*XM*XMG*SIN2D)
50992      &  +4D0*HFL*XM*XMR)*XLN1
50993      &  +((HL2+FL2)*((XMQA-XMS2(1))*XMS2(1)-XM24
50994      &  +2D0*XM*XMG*(XM2+XMR2-XMS2(1))*SIN2D)
50995      &  -4D0*HFL*XMR*XM*(XMG2+XM2-XMS2(1))
50996      &  +8D0*HFL*XMQ4*SIN2D)*B1
50997         G(2)=((HR2+FR2)*(XMQA-2D0*XMS2(2)+2D0*XM*XMG*SIN2D)
50998      &  +4D0*HFR*XMR*XM)*XLN2
50999      &  +((HR2+FR2)*((XMQA-XMS2(2))*XMS2(2)-XM24
51000      &  +2D0*XMG*XM*SIN2D*(XMS2(2)-XM2-XMR2))
51001      &  +4D0*HFR*XM*XMR*(XMS2(2)-XMG2-XM2)
51002      &  -8D0*HFR*XMQ4*SIN2D)*B2
51003         G(3)=(2D0*HFL*SIN2D*(XMS2(1)*(GRS+XMS2(1))+XM2*(SBAR-XMG2-XMR2)
51004      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HL2*SIND2+FL2*COSD2)*SBAR
51005      &  -2D0*XMG*XM*HFL*(SBAR+XMR2-XMG2)
51006      &  +XMR*XM*(HL2+FL2)*SIN2D*(SBAR+XMG2-XMR2)
51007      &  -4D0*XMQ4*(HL2-FL2)*COS2D)/(GRS+2D0*XMS2(1))*XLN1
51008         G(4)=4D0*COS2D*XM*XMG/(XMS2(1)-XMS2(2))*
51009      &  (((HLFR+HRFL)*(XM2+XMR2)+2D0*XM*XMR*(HH+FF))*(XLN1-XLN2)
51010      &  +(HLFR+HRFL)*(XMS2(2)*XLN2-XMS2(1)*XLN1))
51011         G(5)=(2D0*(HH*COSD2-FF*SIND2)
51012      &  *((XMS2(2)*(XMS2(2)+GRS)+XM2*XM2+XMG2*XMR2)*XLN2
51013      &  +(XMS2(1)*(XMS2(1)+GRS)+XM2*XM2+XMG2*XMR2)*XLN1)
51014      &  +XM*((HH-FF)*SIN2D*XMG-(HRFL-HLFR)*XMR)
51015      &  *((GRS+XMS2(1)*2D0)*XLN1-(GRS+XMS2(2)*2D0)*XLN2)
51016      &  +((HRFL-HLFR)*XMR*(SIN2D*XMG*(SBAR-4D0*XM2)
51017      &  +COS2D*XM*(SBAR+XMG2-XMR2))
51018      &  +2D0*(FF*COSD2-HH*SIND2)*XM2*(SBAR-XMG2-XMR2))
51019      &  *(XLN1+XLN2))/(GRS+XMS2(1)+XMS2(2))
51020         G(6)=(-2D0*HFR*SIN2D*(XMS2(2)*(GRS+XMS2(2))+XM2*(SBAR-XMG2-XMR2)
51021      &  +XMG2*XMR2+XM2*XM2)-2D0*XMR*XMG*(HR2*SIND2+FR2*COSD2)*SBAR
51022      &  -2D0*XMG*XM*HFR*(SBAR+XMR2-XMG2)
51023      &  -XMR*XM*(HR2+FR2)*SIN2D*(SBAR+XMG2-XMR2)
51024      &  -4D0*XMQ4*(HR2-FR2)*COS2D)/(GRS+2D0*XMS2(2))*XLN2
51025         SUMME(LIN)=0D0
51026         DO 160 J=0,6
51027           SUMME(LIN)=SUMME(LIN)+G(J)
51028   160   CONTINUE
51029   170 CONTINUE
51030       SUMME(0)=0D0
51031       SUMME(NN)=0D0
51032       GAM = ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
51033      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
51034  
51035       RETURN
51036       END
51037  
51038 C*********************************************************************
51039  
51040 C...PYTBBC
51041 C...Calculates the three-body decay of gluinos into
51042 C...charginos and third generation fermions.
51043  
51044       SUBROUTINE PYTBBC(I,NN,XMGLU,GAM)
51045  
51046 C...Double precision and integer declarations.
51047       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
51048       IMPLICIT INTEGER(I-N)
51049       INTEGER PYK,PYCHGE,PYCOMP
51050 C...Parameter statement to help give large particle numbers.
51051       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
51052      &KEXCIT=4000000,KDIMEN=5000000)
51053 C...Commonblocks.
51054       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
51055       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
51056       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
51057       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
51058      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
51059       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/
51060  
51061 C...Local variables.
51062       EXTERNAL PYSIMP,PYLAMF
51063       DOUBLE PRECISION PYSIMP,PYLAMF
51064       INTEGER I,NN,LIN
51065       DOUBLE PRECISION XMG,XMG2,XMB,XMB2,XMR,XMR2
51066       DOUBLE PRECISION XMT,XMT2,XMST(4),XMSB(4)
51067       DOUBLE PRECISION ULR(2),VLR(2),XMQ2,XMQ4,AM,W,SBAR,SMIN,SMAX
51068       DOUBLE PRECISION SUMME(0:100),A(4,8)
51069       DOUBLE PRECISION COS2A,SIN2A,COS2C,SIN2C
51070       DOUBLE PRECISION GRS,XMQ3,XMGBTR,XMGTBR,ANT1,ANT2,ANB1,ANB2
51071       DOUBLE PRECISION XMGLU,GAM
51072       DOUBLE PRECISION XX1(2),XX2(2),AAA(2),BBB(2),CCC(2),
51073      &DDD(2),EEE(2),FFF(2)
51074       SAVE XX1,XX2,AAA,BBB,CCC,DDD,EEE,FFF
51075       DOUBLE PRECISION ALPHAW,ALPHAS
51076       DOUBLE PRECISION AMC(2)
51077       SAVE AMC
51078       DOUBLE PRECISION AMBOT,AMSB(2),SINC,COSC
51079       DOUBLE PRECISION AMTOP,AMST(2),SINA,COSA
51080       SAVE AMSB,AMST
51081       LOGICAL IFIRST
51082       SAVE IFIRST
51083       DATA IFIRST/.TRUE./
51084  
51085       TANB=RMSS(5)
51086       SINB=TANB/SQRT(1D0+TANB**2)
51087       COSB=SINB/TANB
51088       XW=PARU(102)
51089       AMW=PMAS(24,1)
51090       COSC=SFMIX(5,1)
51091       SINC=SFMIX(5,3)
51092       COSA=SFMIX(6,1)
51093       SINA=SFMIX(6,3)
51094       AMBOT=PYMRUN(5,XMGLU**2)
51095       AMTOP=PYMRUN(6,XMGLU**2)
51096       W2=SQRT(2D0)
51097       AMW=PMAS(24,1)
51098       FAKT1=AMBOT/W2/AMW/COSB
51099       FAKT2=AMTOP/W2/AMW/SINB
51100       IF(IFIRST) THEN
51101         AMC(1)=SMW(1)
51102         AMC(2)=SMW(2)
51103         DO 100 JJ=1,2
51104           CCC(JJ)=FAKT1*UMIX(JJ,2)*SINC-UMIX(JJ,1)*COSC
51105           EEE(JJ)=FAKT2*VMIX(JJ,2)*COSC
51106           DDD(JJ)=FAKT1*UMIX(JJ,2)*COSC+UMIX(JJ,1)*SINC
51107           FFF(JJ)=FAKT2*VMIX(JJ,2)*SINC
51108           XX1(JJ)=FAKT2*VMIX(JJ,2)*SINA-VMIX(JJ,1)*COSA
51109           AAA(JJ)=FAKT1*UMIX(JJ,2)*COSA
51110           XX2(JJ)=FAKT2*VMIX(JJ,2)*COSA+VMIX(JJ,1)*SINA
51111           BBB(JJ)=FAKT1*UMIX(JJ,2)*SINA
51112   100   CONTINUE
51113         AMST(1)=PMAS(PYCOMP(KSUSY1+6),1)
51114         AMST(2)=PMAS(PYCOMP(KSUSY2+6),1)
51115         AMSB(1)=PMAS(PYCOMP(KSUSY1+5),1)
51116         AMSB(2)=PMAS(PYCOMP(KSUSY2+5),1)
51117         IFIRST=.FALSE.
51118       ENDIF
51119  
51120       ULR(1)=XX1(I)*XX1(I)+AAA(I)*AAA(I)
51121       ULR(2)=XX2(I)*XX2(I)+BBB(I)*BBB(I)
51122       VLR(1)=CCC(I)*CCC(I)+EEE(I)*EEE(I)
51123       VLR(2)=DDD(I)*DDD(I)+FFF(I)*FFF(I)
51124  
51125       COS2A=COSA**2-SINA**2
51126       SIN2A=SINA*COSA*2D0
51127       COS2C=COSC**2-SINC**2
51128       SIN2C=SINC*COSC*2D0
51129  
51130       XMG=XMGLU
51131       XMT=PMAS(6,1)
51132       XMB=PMAS(5,1)
51133       XMR=AMC(I)
51134       XMG2=XMG*XMG
51135       ALPHAW=PYALEM(XMG2)
51136       ALPHAS=PYALPS(XMG2)
51137       XMT2=XMT*XMT
51138       XMB2=XMB*XMB
51139       XMR2=XMR*XMR
51140       XMQ2=XMG2+XMT2+XMB2+XMR2
51141       XMQ4=XMG*XMT*XMB*XMR
51142       XMQ3=XMG2*XMR2+XMT2*XMB2
51143       XMGBTR=(XMG2+XMB2)*(XMT2+XMR2)
51144       XMGTBR=(XMG2+XMT2)*(XMB2+XMR2)
51145  
51146       XMST(1)=AMST(1)*AMST(1)
51147       XMST(2)=AMST(1)*AMST(1)
51148       XMST(3)=AMST(2)*AMST(2)
51149       XMST(4)=AMST(2)*AMST(2)
51150       XMSB(1)=AMSB(1)*AMSB(1)
51151       XMSB(2)=AMSB(2)*AMSB(2)
51152       XMSB(3)=AMSB(1)*AMSB(1)
51153       XMSB(4)=AMSB(2)*AMSB(2)
51154  
51155       A(1,1)=-COSA*SINC*CCC(I)*AAA(I)-SINA*COSC*EEE(I)*XX1(I)
51156       A(1,2)=XMG*XMB*(COSA*COSC*CCC(I)*AAA(I)+SINA*SINC*EEE(I)*XX1(I))
51157       A(1,3)=-XMG*XMR*(COSA*COSC*CCC(I)*XX1(I)+SINA*SINC*EEE(I)*AAA(I))
51158       A(1,4)=XMB*XMR*(COSA*SINC*CCC(I)*XX1(I)+SINA*COSC*EEE(I)*AAA(I))
51159       A(1,5)=XMG*XMT*(COSA*COSC*EEE(I)*XX1(I)+SINA*SINC*CCC(I)*AAA(I))
51160       A(1,6)=-XMT*XMB*(COSA*SINC*EEE(I)*XX1(I)+SINA*COSC*CCC(I)*AAA(I))
51161       A(1,7)=XMT*XMR*(COSA*SINC*EEE(I)*AAA(I)+SINA*COSC*CCC(I)*XX1(I))
51162       A(1,8)=-XMQ4*(COSA*COSC*EEE(I)*AAA(I)+SINA*SINC*CCC(I)*XX1(I))
51163  
51164       A(2,1)=-COSA*COSC*DDD(I)*AAA(I)-SINA*SINC*FFF(I)*XX1(I)
51165       A(2,2)=-XMG*XMB*(COSA*SINC*DDD(I)*AAA(I)+SINA*COSC*FFF(I)*XX1(I))
51166       A(2,3)=XMG*XMR*(COSA*SINC*DDD(I)*XX1(I)+SINA*COSC*FFF(I)*AAA(I))
51167       A(2,4)=XMB*XMR*(COSA*COSC*DDD(I)*XX1(I)+SINA*SINC*FFF(I)*AAA(I))
51168       A(2,5)=XMG*XMT*(COSA*SINC*FFF(I)*XX1(I)+SINA*COSC*DDD(I)*AAA(I))
51169       A(2,6)=XMT*XMB*(COSA*COSC*FFF(I)*XX1(I)+SINA*SINC*DDD(I)*AAA(I))
51170       A(2,7)=-XMT*XMR*(COSA*COSC*FFF(I)*AAA(I)+SINA*SINC*DDD(I)*XX1(I))
51171       A(2,8)=-XMQ4*(COSA*SINC*FFF(I)*AAA(I)+SINA*COSC*DDD(I)*XX1(I))
51172  
51173       A(3,1)=-COSA*COSC*EEE(I)*XX2(I)-SINA*SINC*CCC(I)*BBB(I)
51174       A(3,2)=XMG*XMB*(COSA*SINC*EEE(I)*XX2(I)+SINA*COSC*CCC(I)*BBB(I))
51175       A(3,3)=XMG*XMR*(COSA*SINC*EEE(I)*BBB(I)+SINA*COSC*CCC(I)*XX2(I))
51176       A(3,4)=-XMB*XMR*(COSA*COSC*EEE(I)*BBB(I)+SINA*SINC*CCC(I)*XX2(I))
51177       A(3,5)=-XMG*XMT*(COSA*SINC*CCC(I)*BBB(I)+SINA*COSC*EEE(I)*XX2(I))
51178       A(3,6)=XMT*XMB*(COSA*COSC*CCC(I)*BBB(I)+SINA*SINC*EEE(I)*XX2(I))
51179       A(3,7)=XMT*XMR*(COSA*COSC*CCC(I)*XX2(I)+SINA*SINC*EEE(I)*BBB(I))
51180       A(3,8)=-XMQ4*(COSA*SINC*CCC(I)*XX2(I)+SINA*COSC*EEE(I)*BBB(I))
51181  
51182       A(4,1)=-COSA*SINC*FFF(I)*XX2(I)-SINA*COSC*DDD(I)*BBB(I)
51183       A(4,2)=-XMG*XMB*(COSA*COSC*FFF(I)*XX2(I)+SINA*SINC*DDD(I)*BBB(I))
51184       A(4,3)=-XMG*XMR*(COSA*COSC*FFF(I)*BBB(I)+SINA*SINC*DDD(I)*XX2(I))
51185       A(4,4)=-XMB*XMR*(COSA*SINC*FFF(I)*BBB(I)+SINA*COSC*DDD(I)*XX2(I))
51186       A(4,5)=-XMG*XMT*(COSA*COSC*DDD(I)*BBB(I)+SINA*SINC*FFF(I)*XX2(I))
51187       A(4,6)=-XMT*XMB*(COSA*SINC*DDD(I)*BBB(I)+SINA*COSC*FFF(I)*XX2(I))
51188       A(4,7)=-XMT*XMR*(COSA*SINC*DDD(I)*XX2(I)+SINA*COSC*FFF(I)*BBB(I))
51189       A(4,8)=-XMQ4*(COSA*COSC*DDD(I)*XX2(I)+SINA*SINC*FFF(I)*BBB(I))
51190  
51191       SMAX=(XMG-ABS(XMR))**2
51192       SMIN=(XMB+XMT)**2+0.1D0
51193  
51194       DO 120 LIN=0,NN-1
51195         SBAR=SMIN+DBLE(LIN)*(SMAX-SMIN)/DBLE(NN)
51196         AM=(XMG2-XMR2)*(XMT2-XMB2)/2D0/SBAR
51197         GRS=SBAR-XMQ2
51198         W=PYLAMF(SBAR,XMB2,XMT2)*PYLAMF(SBAR,XMG2,XMR2)
51199         W=DSQRT(W)/2D0/SBAR
51200         ANT1=LOG(ABS((GRS/2D0+AM+XMST(1)-W)/(GRS/2D0+AM+XMST(1)+W)))
51201         ANT2=LOG(ABS((GRS/2D0+AM+XMST(3)-W)/(GRS/2D0+AM+XMST(3)+W)))
51202         ANB1=LOG(ABS((GRS/2D0-AM+XMSB(1)-W)/(GRS/2D0-AM+XMSB(1)+W)))
51203         ANB2=LOG(ABS((GRS/2D0-AM+XMSB(2)-W)/(GRS/2D0-AM+XMSB(2)+W)))
51204         SUMME(LIN)=-ULR(1)*W+(ULR(1)*(XMQ2/2D0-XMST(1)-XMG*XMT*SIN2A)
51205      &  +2D0*XX1(I)*AAA(I)*XMR*XMB)*ANT1
51206      &  +(ULR(1)/2D0*(XMST(1)*(XMQ2-XMST(1))-XMGTBR
51207      &  -2D0*XMG*XMT*SIN2A*(XMST(1)-XMB2-XMR2))
51208      &  +2D0*XX1(I)*AAA(I)*XMR*XMB*(XMST(1)-XMG2-XMT2)
51209      &  +4D0*SIN2A*XX1(I)*AAA(I)*XMQ4)
51210      &  *(1D0/(GRS/2D0+AM+XMST(1)-W)-1D0/(GRS/2D0+AM+XMST(1)+W))
51211         SUMME(LIN)=SUMME(LIN)-ULR(2)*W
51212      &  +(ULR(2)*(XMQ2/2D0-XMST(3)+XMG*XMT*SIN2A)
51213      &  -2D0*XX2(I)*BBB(I)*XMR*XMB)*ANT2
51214      &  +(ULR(2)/2D0*(XMST(3)*(XMQ2-XMST(3))-XMGTBR
51215      &  +2D0*XMG*XMT*SIN2A*(XMST(3)-XMB2-XMR2))
51216      &  -2D0*XX2(I)*BBB(I)*XMR*XMB*(XMST(3)-XMG2-XMT2)
51217      &  +4D0*SIN2A*XX2(I)*BBB(I)*XMQ4)
51218      &  *(1D0/(GRS/2D0+AM+XMST(3)-W)-1D0/(GRS/2D0+AM+XMST(3)+W))
51219         SUMME(LIN)=SUMME(LIN)-VLR(1)*W
51220      &  +(VLR(1)*(XMQ2/2D0-XMSB(1)-XMG*XMB*SIN2C)
51221      &  +2D0*CCC(I)*EEE(I)*XMR*XMT)*ANB1
51222      &  +(VLR(1)/2D0*(XMSB(1)*(XMQ2-XMSB(1))-XMGBTR
51223      &  -2D0*XMG*XMB*SIN2C*(XMSB(1)-XMT2-XMR2))
51224      &  +2D0*CCC(I)*EEE(I)*XMR*XMT*(XMSB(1)-XMG2-XMB2)
51225      &  +4D0*SIN2C*CCC(I)*EEE(I)*XMQ4)
51226      &  *(1D0/(GRS/2D0-AM+XMSB(1)-W)-1D0/(GRS/2D0-AM+XMSB(1)+W))
51227         SUMME(LIN)=SUMME(LIN)-VLR(2)*W
51228      &  +(VLR(2)*(XMQ2/2D0-XMSB(2)+XMG*XMB*SIN2C)
51229      &  -2D0*DDD(I)*FFF(I)*XMR*XMT)*ANB2
51230      &  +(VLR(2)/2D0*(XMSB(2)*(XMQ2-XMSB(2))-XMGBTR
51231      &  +2D0*XMG*XMB*SIN2C*(XMSB(2)-XMT2-XMR2))
51232      &  -2D0*DDD(I)*FFF(I)*XMR*XMT*(XMSB(2)-XMG2-XMB2)
51233      &  +4D0*SIN2C*DDD(I)*FFF(I)*XMQ4)
51234      &  *(1D0/(GRS/2D0-AM+XMSB(2)-W)-1D0/(GRS/2D0-AM+XMSB(2)+W))
51235         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMT*COS2A/(XMST(3)-XMST(1))
51236      &  *((AAA(I)*BBB(I)-XX1(I)*XX2(I))
51237      &  *((XMST(3)-XMB2-XMR2)*ANT2-(XMST(1)-XMB2-XMR2)*ANT1)
51238      &  +2D0*(AAA(I)*XX2(I)-XX1(I)*BBB(I))*XMB*XMR*(ANT2-ANT1))
51239         SUMME(LIN)=SUMME(LIN)+2D0*XMG*XMB*COS2C/(XMSB(2)-XMSB(1))
51240      &  *((EEE(I)*FFF(I)-CCC(I)*DDD(I))
51241      &  *((XMSB(2)-XMT2-XMR2)*ANB2-(XMSB(1)-XMT2-XMR2)*ANB1)
51242      &  +2D0*(EEE(I)*DDD(I)-CCC(I)*FFF(I))*XMT*XMR*(ANB2-ANB1))
51243         DO 110 J=1,4
51244           SUMME(LIN)=SUMME(LIN)-2D0*A(J,1)*W
51245      &    +((-A(J,1)*(XMSB(J)*(GRS+XMSB(J))+XMQ3)
51246      &    +A(J,2)*(XMSB(J)-XMT2-XMR2)+A(J,3)*(SBAR-XMB2-XMT2)
51247      &    +A(J,4)*(XMSB(J)+SBAR-XMB2-XMR2)
51248      &    -A(J,5)*(XMSB(J)+SBAR-XMG2-XMT2)+A(J,6)*(XMG2+XMR2-SBAR)
51249      &    -A(J,7)*(XMSB(J)-XMG2-XMB2)+2D0*A(J,8))
51250      &    *LOG(ABS((GRS/2D0+XMSB(J)-AM-W)/(GRS/2D0+XMSB(J)-AM+W)))
51251      &    -(A(J,1)*(XMST(J)*(GRS+XMST(J))+XMQ3)
51252      &    +A(J,2)*(XMST(J)+SBAR-XMG2-XMB2)-A(J,3)*(SBAR-XMB2-XMT2)
51253      &    +A(J,4)*(XMST(J)-XMG2-XMT2)-A(J,5)*(XMST(J)-XMR2-XMB2)
51254      &    -A(J,6)*(XMG2+XMR2-SBAR)
51255      &    -A(J,7)*(XMST(J)+SBAR-XMT2-XMR2)-2D0*A(J,8))
51256      &    *LOG(ABS((GRS/2D0+XMST(J)+AM-W)/(GRS/2D0+XMST(J)+AM+W))))
51257      &    /(GRS+XMSB(J)+XMST(J))
51258   110   CONTINUE
51259   120 CONTINUE
51260       SUMME(NN)=0D0
51261       GAM= ALPHAW * ALPHAS * PYSIMP(SUMME,SMIN,SMAX,NN)
51262      &/ (16D0 * PARU(1) * PARU(102) * XMGLU**3)
51263  
51264       RETURN
51265       END
51266  
51267 C*********************************************************************
51268  
51269 C...PYNJDC
51270 C...Calculates decay widths for the neutralinos (admixtures of
51271 C...Bino, W3-ino, Higgs1-ino, Higgs2-ino)
51272  
51273 C...Input:  KCIN = KF code for particle
51274 C...Output: XLAM = widths
51275 C...        IDLAM = KF codes for decay particles
51276 C...        IKNT = number of decay channels defined
51277 C...AUTHOR: STEPHEN MRENNA
51278 C...Last change:
51279 C...10-15-95:  force decay chi^0_2 -> chi^0_1 + gamma
51280 C...when CHIGAMMA .NE. 0
51281 C...10 FEB 96:  Calculate this decay for small tan(beta)
51282  
51283       SUBROUTINE PYNJDC(KFIN,XLAM,IDLAM,IKNT)
51284  
51285 C...Double precision and integer declarations.
51286       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
51287       IMPLICIT INTEGER(I-N)
51288       INTEGER PYK,PYCHGE,PYCOMP
51289 C...Parameter statement to help give large particle numbers.
51290       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
51291      &KEXCIT=4000000,KDIMEN=5000000)
51292 C...Commonblocks.
51293       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
51294       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
51295       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
51296 c      COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
51297 c     &SFMIX(16,4)
51298       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
51299      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
51300 C      COMMON/PYINTS/XXM(20)
51301       COMPLEX*16 CXC
51302       COMMON/PYINTC/XXC(10),CXC(8)
51303       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
51304  
51305 C...Local variables.
51306       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP,GLIJ,GRIJ
51307       COMPLEX*16 QIJ,RIJ,F21K,F12K,CAL,CAR,CBL,CBR,CA,CB
51308       INTEGER KFIN
51309       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
51310      &XMZ,XMZ2,AXMJ,AXMI
51311       DOUBLE PRECISION S12MIN,S12MAX
51312       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2
51313       DOUBLE PRECISION PYLAMF,XL
51314       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I
51315       DOUBLE PRECISION PYX2XH,PYX2XG
51316       DOUBLE PRECISION XLAM(0:400)
51317       INTEGER IDLAM(400,3)
51318       INTEGER LKNT,IX,IH,J,IJ,I,IKNT,FID
51319       INTEGER ITH(3),KF1,KF2
51320       INTEGER ITHC
51321       DOUBLE PRECISION DH(3),EH(3)
51322       DOUBLE PRECISION SR2
51323       DOUBLE PRECISION CBETA,SBETA
51324       DOUBLE PRECISION GAMCON,XMT1,XMT2
51325       DOUBLE PRECISION PYALEM,PI,PYALPS
51326       DOUBLE PRECISION RAT1,RAT2
51327       DOUBLE PRECISION T3T,FCOL
51328       DOUBLE PRECISION ALFA,BETA,TANB
51329       DOUBLE PRECISION PYXXGA
51330       EXTERNAL PYGAUS,PYXXZ6
51331       DOUBLE PRECISION PYGAUS,PYXXZ6
51332       DOUBLE PRECISION PREC
51333       INTEGER KFNCHI(4),KFCCHI(2)
51334       DATA ITH/25,35,36/
51335       DATA ITHC/37/
51336       DATA PREC/1D-2/
51337       DATA PI/3.141592654D0/
51338       DATA SR2/1.4142136D0/
51339       DATA KFNCHI/1000022,1000023,1000025,1000035/
51340       DATA KFCCHI/1000024,1000037/
51341  
51342 C...COUNT THE NUMBER OF DECAY MODES
51343       LKNT=0
51344  
51345       XMW=PMAS(24,1)
51346       XMW2=XMW**2
51347       XMZ=PMAS(23,1)
51348       XMZ2=XMZ**2
51349       XW=1D0-XMW2/XMZ2
51350       XW1=1D0-XW
51351       TANW = SQRT(XW/XW1)
51352  
51353 C...IX IS 1 - 4 DEPENDING ON SEQUENCE NUMBER
51354       IX=1
51355       IF(KFIN.EQ.KFNCHI(2)) IX=2
51356       IF(KFIN.EQ.KFNCHI(3)) IX=3
51357       IF(KFIN.EQ.KFNCHI(4)) IX=4
51358  
51359       XMI=SMZ(IX)
51360       XMI2=XMI**2
51361       AXMI=ABS(XMI)
51362       AEM=PYALEM(XMI2)
51363       AS =PYALPS(XMI2)
51364       C1=AEM/XW
51365       XMI3=ABS(XMI**3)
51366  
51367       TANB=RMSS(5)
51368       BETA=ATAN(TANB)
51369       ALFA=RMSS(18)
51370       CBETA=COS(BETA)
51371       SBETA=TANB*CBETA
51372       CALFA=COS(ALFA)
51373       SALFA=SIN(ALFA)
51374  
51375       DO 110 I=1,4
51376         DO 100 J=1,4
51377           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
51378   100   CONTINUE
51379   110 CONTINUE
51380       DO 130 I=1,2
51381         DO 120 J=1,2
51382            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
51383            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
51384   120   CONTINUE
51385   130 CONTINUE
51386  
51387 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
51388       IF(IX.EQ.1.AND.IMSS(11).EQ.0) GOTO 300
51389  
51390 C...FORCE CHI0_2 -> CHI0_1 + GAMMA
51391       IF(IX.EQ.2 .AND. IMSS(10).NE.0 ) THEN
51392         XMJ=SMZ(1)
51393         AXMJ=ABS(XMJ)
51394         LKNT=LKNT+1
51395         GAMCON=AEM**3/8D0/PI/XMW2/XW
51396         XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
51397         XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
51398         XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
51399         IDLAM(LKNT,1)=KSUSY1+22
51400         IDLAM(LKNT,2)=22
51401         IDLAM(LKNT,3)=0
51402         WRITE(MSTU(11),*) 'FORCED N2 -> N1 + GAMMA ',XLAM(LKNT)
51403         GOTO 340
51404       ENDIF
51405  
51406 C...GRAVITINO DECAY MODES
51407  
51408       IF(IMSS(11).EQ.1) THEN
51409         XMP=RMSS(29)
51410         IDG=39+KSUSY1
51411         XMGR=PMAS(PYCOMP(IDG),1)
51412         SINW=SQRT(XW)
51413         COSW=SQRT(1D0-XW)
51414         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
51415         IF(AXMI.GT.XMGR+PMAS(22,1)) THEN
51416           LKNT=LKNT+1
51417           IDLAM(LKNT,1)=IDG
51418           IDLAM(LKNT,2)=22
51419           IDLAM(LKNT,3)=0
51420           XLAM(LKNT)=XFAC*ABS(ZMIXC(IX,1)*COSW+ZMIXC(IX,2)*SINW)**2
51421         ENDIF
51422         IF(AXMI.GT.XMGR+XMZ) THEN
51423           LKNT=LKNT+1
51424           IDLAM(LKNT,1)=IDG
51425           IDLAM(LKNT,2)=23
51426           IDLAM(LKNT,3)=0
51427           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,1)*SINW-ZMIXC(IX,2)*COSW)**2 +
51428      $  .5D0*ABS(ZMIXC(IX,3)*CBETA-ZMIXC(IX,4)*SBETA)**2)*
51429      &  (1D0-XMZ2/XMI2)**4
51430         ENDIF
51431         IF(AXMI.GT.XMGR+PMAS(25,1)) THEN
51432           LKNT=LKNT+1
51433           IDLAM(LKNT,1)=IDG
51434           IDLAM(LKNT,2)=25
51435           IDLAM(LKNT,3)=0
51436           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SALFA-ZMIXC(IX,4)*CALFA)**2)*
51437      $  .5D0*(1D0-PMAS(25,1)**2/XMI2)**4
51438         ENDIF
51439         IF(AXMI.GT.XMGR+PMAS(35,1)) THEN
51440           LKNT=LKNT+1
51441           IDLAM(LKNT,1)=IDG
51442           IDLAM(LKNT,2)=35
51443           IDLAM(LKNT,3)=0
51444           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*CALFA+ZMIXC(IX,4)*SALFA)**2)*
51445      $  .5D0*(1D0-PMAS(35,1)**2/XMI2)**4
51446         ENDIF
51447         IF(AXMI.GT.XMGR+PMAS(36,1)) THEN
51448           LKNT=LKNT+1
51449           IDLAM(LKNT,1)=IDG
51450           IDLAM(LKNT,2)=36
51451           IDLAM(LKNT,3)=0
51452           XLAM(LKNT)=XFAC*(ABS(ZMIXC(IX,3)*SBETA+ZMIXC(IX,4)*CBETA)**2)*
51453      $  .5D0*(1D0-PMAS(36,1)**2/XMI2)**4
51454         ENDIF
51455         IF(IX.EQ.1) GOTO 300
51456       ENDIF
51457  
51458       DO 220 IJ=1,IX-1
51459         XMJ=SMZ(IJ)
51460         AXMJ=ABS(XMJ)
51461         XMJ2=XMJ**2
51462  
51463 C...CHI0_I -> CHI0_J + GAMMA
51464         IF(AXMI.GE.AXMJ.AND.SBETA/CBETA.LE.2D0) THEN
51465           RAT1=ABS(ZMIXC(IJ,1))**2+ABS(ZMIXC(IJ,2))**2
51466           RAT1=RAT1/( 1D-6+ABS(ZMIXC(IX,3))**2+ABS(ZMIXC(IX,4))**2 )
51467           RAT2=ABS(ZMIXC(IX,1))**2+ABS(ZMIXC(IX,2))**2
51468           RAT2=RAT2/( 1D-6+ABS(ZMIXC(IJ,3))**2+ABS(ZMIXC(IJ,4))**2 )
51469           IF((RAT1.GT. 0.90D0 .AND. RAT1.LT. 1.10D0) .OR.
51470      &    (RAT2.GT. 0.90D0 .AND. RAT2.LT. 1.10D0)) THEN
51471             LKNT=LKNT+1
51472             IDLAM(LKNT,1)=KFNCHI(IJ)
51473             IDLAM(LKNT,2)=22
51474             IDLAM(LKNT,3)=0
51475             GAMCON=AEM**3/8D0/PI/XMW2/XW
51476             XMT1=(PMAS(PYCOMP(KSUSY1+6),1)/PMAS(6,1))**2
51477             XMT2=(PMAS(PYCOMP(KSUSY2+6),1)/PMAS(6,1))**2
51478             XLAM(LKNT)=PYXXGA(GAMCON,AXMI,AXMJ,XMT1,XMT2)
51479           ENDIF
51480         ENDIF
51481  
51482 C...CHI0_I -> CHI0_J + Z0
51483         IF(AXMI.GE.AXMJ+XMZ) THEN
51484           LKNT=LKNT+1
51485           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
51486      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
51487           ORPP=-DCONJG(OLPP)
51488           GX2=ABS(OLPP)**2+ABS(ORPP)**2
51489           GLR=DBLE(OLPP*DCONJG(ORPP))
51490           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
51491           IDLAM(LKNT,1)=KFNCHI(IJ)
51492           IDLAM(LKNT,2)=23
51493           IDLAM(LKNT,3)=0
51494         ELSEIF(AXMI.GE.AXMJ) THEN
51495           XXC(1)=0D0
51496           XXC(2)=XMJ
51497           XXC(3)=0D0
51498           XXC(4)=XMI
51499           XXC(9)=XMZ
51500           XXC(10)=PMAS(23,2)
51501           OLPP=(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,3))-
51502      &    ZMIXC(IX,4)*DCONJG(ZMIXC(IJ,4)))/2D0
51503           ORPP=DCONJG(OLPP)
51504 C...CHARGED LEPTONS
51505           FID=11
51506           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
51507           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
51508           EI=KCHG(FID,1)/3D0
51509           T3I=SIGN(1D0,EI+1D-6)/2D0
51510           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
51511      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
51512           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
51513           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
51514           CXC(2)=-GLIJ
51515           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
51516           CXC(4)=DCONJG(GLIJ)
51517           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
51518           CXC(6)=GRIJ
51519           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
51520           CXC(8)=-DCONJG(GRIJ)
51521           S12MIN=0D0
51522           S12MAX=(AXMI-AXMJ)**2
51523           IF( XXC(5).LT.AXMI ) THEN
51524             XXC(5)=1D6
51525           ENDIF
51526           IF(XXC(6).LT.AXMI ) THEN
51527             XXC(6)=1D6
51528           ENDIF
51529           XXC(7)=XXC(5)
51530           XXC(8)=XXC(6)
51531  
51532           IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
51533             LKNT=LKNT+1
51534             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51535      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51536             IDLAM(LKNT,1)=KFNCHI(IJ)
51537             IDLAM(LKNT,2)=FID
51538             IDLAM(LKNT,3)=-FID
51539             IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
51540               LKNT=LKNT+1
51541               XLAM(LKNT)=XLAM(LKNT-1)
51542               IDLAM(LKNT,1)=KFNCHI(IJ)
51543               IDLAM(LKNT,2)=13
51544               IDLAM(LKNT,3)=-13
51545             ENDIF
51546           ENDIF
51547   140     CONTINUE
51548           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
51549             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
51550             XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
51551           ELSE
51552             XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
51553             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
51554           ENDIF
51555           IF( XXC(5).LT.AXMI ) THEN
51556             XXC(5)=1D6
51557           ENDIF
51558           IF(XXC(6).LT.AXMI ) THEN
51559             XXC(6)=1D6
51560           ENDIF
51561           XXC(7)=XXC(5)
51562           XXC(8)=XXC(6)
51563  
51564           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
51565             LKNT=LKNT+1
51566             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51567      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51568             IDLAM(LKNT,1)=KFNCHI(IJ)
51569             IDLAM(LKNT,2)=15
51570             IDLAM(LKNT,3)=-15
51571           ENDIF
51572  
51573 C...NEUTRINOS
51574   150     CONTINUE
51575           FID=12
51576           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
51577           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
51578           EI=KCHG(FID,1)/3D0
51579           T3I=SIGN(1D0,EI+1D-6)/2D0
51580           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
51581      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
51582           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
51583           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
51584           CXC(2)=-GLIJ
51585           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
51586           CXC(4)=DCONJG(GLIJ)
51587           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
51588           CXC(6)=GRIJ
51589           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
51590           CXC(8)=-DCONJG(GRIJ)
51591           S12MIN=0D0
51592           S12MAX=(AXMI-AXMJ)**2
51593           IF( XXC(5).LT.AXMI ) THEN
51594             XXC(5)=1D6
51595           ENDIF
51596           IF( XXC(6).LT.AXMI ) THEN
51597             XXC(6)=1D6
51598           ENDIF
51599           XXC(7)=XXC(5)
51600           XXC(8)=XXC(6)
51601  
51602           LKNT=LKNT+1
51603           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51604      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51605           IDLAM(LKNT,1)=KFNCHI(IJ)
51606           IDLAM(LKNT,2)=12
51607           IDLAM(LKNT,3)=-12
51608           LKNT=LKNT+1
51609           XLAM(LKNT)=XLAM(LKNT-1)
51610           IDLAM(LKNT,1)=KFNCHI(IJ)
51611           IDLAM(LKNT,2)=14
51612           IDLAM(LKNT,3)=-14
51613   160     CONTINUE
51614  
51615           IF(PMAS(PYCOMP(KSUSY1+16),1).NE.PMAS(PYCOMP(KSUSY1+12),1))
51616      &    THEN
51617             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
51618             IF( XXC(5).LT.AXMI ) THEN
51619               XXC(5)=1D6
51620             ENDIF
51621             XXC(7)=XXC(5)
51622             LKNT=LKNT+1
51623             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51624      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
51625           ELSE
51626             LKNT=LKNT+1
51627             XLAM(LKNT)=XLAM(LKNT-1)
51628           ENDIF
51629           IDLAM(LKNT,1)=KFNCHI(IJ)
51630           IDLAM(LKNT,2)=16
51631           IDLAM(LKNT,3)=-16
51632 C...D-TYPE QUARKS
51633   170     CONTINUE
51634           FID=1
51635           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
51636           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
51637           EI=KCHG(FID,1)/3D0
51638           T3I=SIGN(1D0,EI+1D-6)/2D0
51639           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
51640      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
51641           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
51642           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
51643           CXC(2)=-GLIJ
51644           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
51645           CXC(4)=DCONJG(GLIJ)
51646           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
51647           CXC(6)=GRIJ
51648           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
51649           CXC(8)=-DCONJG(GRIJ)
51650           S12MIN=0D0
51651           S12MAX=(AXMI-AXMJ)**2
51652           IF( XXC(5).LT.AXMI ) THEN
51653             XXC(5)=1D6
51654           ENDIF
51655           IF( XXC(6).LT.AXMI ) THEN
51656             XXC(6)=1D6
51657           ENDIF
51658           XXC(7)=XXC(5)
51659           XXC(8)=XXC(6)
51660  
51661           IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
51662             LKNT=LKNT+1
51663             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51664      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
51665             IDLAM(LKNT,1)=KFNCHI(IJ)
51666             IDLAM(LKNT,2)=1
51667             IDLAM(LKNT,3)=-1
51668             IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
51669               LKNT=LKNT+1
51670               XLAM(LKNT)=XLAM(LKNT-1)
51671               IDLAM(LKNT,1)=KFNCHI(IJ)
51672               IDLAM(LKNT,2)=3
51673               IDLAM(LKNT,3)=-3
51674             ENDIF
51675           ENDIF
51676   180     CONTINUE
51677           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
51678             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
51679             XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
51680           ELSE
51681             XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
51682             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
51683           ENDIF
51684           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
51685           IF(XXC(5).LT.AXMI) THEN
51686             XXC(5)=1D6
51687           ELSEIF(XXC(6).LT.AXMI) THEN
51688             XXC(6)=1D6
51689           ENDIF
51690           XXC(7)=XXC(5)
51691           XXC(8)=XXC(6)
51692           IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
51693             LKNT=LKNT+1
51694             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51695      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
51696             IDLAM(LKNT,1)=KFNCHI(IJ)
51697             IDLAM(LKNT,2)=5
51698             IDLAM(LKNT,3)=-5
51699           ENDIF
51700  
51701 C...U-TYPE QUARKS
51702   190     CONTINUE
51703           FID=2
51704           XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
51705           XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
51706           EI=KCHG(FID,1)/3D0
51707           T3I=SIGN(1D0,EI+1D-6)/2D0
51708           GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*
51709      &    DCONJG(T3I*ZMIXC(IJ,2)-TANW*(T3I-EI)*ZMIXC(IJ,1))
51710           GRIJ=ZMIXC(IX,1)*DCONJG(ZMIXC(IJ,1))*(EI*TANW)**2
51711           CXC(1)=DCMPLX((T3I-EI*XW)/XW1)*OLPP
51712           CXC(2)=-GLIJ
51713           CXC(3)=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
51714           CXC(4)=DCONJG(GLIJ)
51715           CXC(5)=-DCMPLX((EI*XW)/XW1)*OLPP
51716           CXC(6)=GRIJ
51717           CXC(7)=DCMPLX((EI*XW)/XW1)*ORPP
51718           CXC(8)=-DCONJG(GRIJ)
51719  
51720           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 200
51721           IF(XXC(5).LT.AXMI) THEN
51722             XXC(5)=1D6
51723           ELSEIF(XXC(6).LT.AXMI) THEN
51724             XXC(6)=1D6
51725           ENDIF
51726           XXC(7)=XXC(5)
51727           XXC(8)=XXC(6)
51728  
51729           IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
51730             LKNT=LKNT+1
51731             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51732      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)*3D0
51733             IDLAM(LKNT,1)=KFNCHI(IJ)
51734             IDLAM(LKNT,2)=2
51735             IDLAM(LKNT,3)=-2
51736             IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
51737               LKNT=LKNT+1
51738               XLAM(LKNT)=XLAM(LKNT-1)
51739               IDLAM(LKNT,1)=KFNCHI(IJ)
51740               IDLAM(LKNT,2)=4
51741               IDLAM(LKNT,3)=-4
51742             ENDIF
51743           ENDIF
51744   200     CONTINUE
51745         ENDIF
51746  
51747 C...CHI0_I -> CHI0_J + H0_K
51748         EH(1)=SIN(ALFA)
51749         EH(2)=COS(ALFA)
51750         EH(3)=-SIN(BETA)
51751         DH(1)=COS(ALFA)
51752         DH(2)=-SIN(ALFA)
51753         DH(3)=COS(BETA)
51754         QIJ=ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,2))+
51755      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,2)-
51756      &  TANW*(ZMIXC(IX,3)*DCONJG(ZMIXC(IJ,1))+
51757      &  DCONJG(ZMIXC(IJ,3))*ZMIXC(IX,1))
51758         RIJ=DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,2)+
51759      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,2))-
51760      &  TANW*(DCONJG(ZMIXC(IX,4))*ZMIXC(IJ,1)+
51761      &  ZMIXC(IJ,4)*DCONJG(ZMIXC(IX,1)))
51762         DO 210 IH=1,3
51763           XMH=PMAS(ITH(IH),1)
51764           XMH2=XMH**2
51765           IF(AXMI.GE.AXMJ+XMH) THEN
51766             LKNT=LKNT+1
51767             XL=PYLAMF(XMI2,XMJ2,XMH2)
51768             F21K=0.5D0*(QIJ*EH(IH)+RIJ*DH(IH))
51769             F12K=F21K
51770 C...SIGN OF MASSES I,J
51771             XMK=XMJ
51772             IF(IH.EQ.3) XMK=-XMK
51773             GX2=ABS(F21K)**2+ABS(F12K)**2
51774             GLR=DBLE(F21K*DCONJG(F12K))
51775             XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
51776             IDLAM(LKNT,1)=KFNCHI(IJ)
51777             IDLAM(LKNT,2)=ITH(IH)
51778             IDLAM(LKNT,3)=0
51779           ENDIF
51780   210   CONTINUE
51781   220 CONTINUE
51782  
51783 C...CHI0_I -> CHI+_J + W-
51784       DO 260 IJ=1,2
51785         XMJ=SMW(IJ)
51786         AXMJ=ABS(XMJ)
51787         XMJ2=XMJ**2
51788         IF(AXMI.GE.AXMJ+XMW) THEN
51789           LKNT=LKNT+1
51790           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
51791      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)/SR2)
51792           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
51793      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))/SR2)
51794           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
51795           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
51796           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
51797           IDLAM(LKNT,1)=KFCCHI(IJ)
51798           IDLAM(LKNT,2)=-24
51799           IDLAM(LKNT,3)=0
51800           LKNT=LKNT+1
51801           XLAM(LKNT)=XLAM(LKNT-1)
51802           IDLAM(LKNT,1)=-KFCCHI(IJ)
51803           IDLAM(LKNT,2)=24
51804           IDLAM(LKNT,3)=0
51805         ELSEIF(AXMI.GE.AXMJ) THEN
51806           S12MIN=0D0
51807           S12MAX=(AXMI-AXMJ)**2
51808           RT2I = 1D0/SQRT(2D0)
51809           CXC(1)=(DCONJG(ZMIXC(IX,2))*VMIXC(IJ,1)-
51810      &    DCONJG(ZMIXC(IX,4))*VMIXC(IJ,2)*RT2I)*RT2I
51811           CXC(3)=(ZMIXC(IX,2)*DCONJG(UMIXC(IJ,1))+
51812      &    ZMIXC(IX,3)*DCONJG(UMIXC(IJ,2))*RT2I)*RT2I
51813           CXC(5)=DCMPLX(0D0,0D0)
51814           CXC(7)=DCMPLX(0D0,0D0)
51815           IA=11
51816           JA=12
51817           EI=KCHG(IA,1)/3D0
51818           T3I=SIGN(1D0,EI+1D-6)/2D0
51819           EJ=KCHG(JA,1)/3D0
51820           T3J=SIGN(1D0,EJ+1D-6)/2D0
51821           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
51822      &    TANW+ZMIXC(IX,2)*T3J)*RT2I
51823           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
51824      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)*RT2I
51825           CXC(6)=DCMPLX(0D0,0D0)
51826           CXC(8)=DCMPLX(0D0,0D0)
51827           XXC(1)=0D0
51828           XXC(2)=XMJ
51829           XXC(3)=0D0
51830           XXC(4)=XMI
51831           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
51832           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
51833           XXC(9)=PMAS(24,1)
51834           XXC(10)=PMAS(24,2)
51835           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 230
51836           IF(XXC(5).LT.AXMI) THEN
51837             XXC(5)=1D6
51838           ELSEIF(XXC(6).LT.AXMI) THEN
51839             XXC(6)=1D6
51840           ENDIF
51841           XXC(7)=XXC(6)
51842           XXC(8)=XXC(5)
51843           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
51844             LKNT=LKNT+1
51845             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51846      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51847             IDLAM(LKNT,1)=KFCCHI(IJ)
51848             IDLAM(LKNT,2)=11
51849             IDLAM(LKNT,3)=-12
51850             LKNT=LKNT+1
51851             XLAM(LKNT)=XLAM(LKNT-1)
51852             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51853             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51854             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51855             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
51856               LKNT=LKNT+1
51857               XLAM(LKNT)=XLAM(LKNT-1)
51858               IDLAM(LKNT,1)=KFCCHI(IJ)
51859               IDLAM(LKNT,2)=13
51860               IDLAM(LKNT,3)=-14
51861               LKNT=LKNT+1
51862               XLAM(LKNT)=XLAM(LKNT-1)
51863               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51864               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51865               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51866             ENDIF
51867           ENDIF
51868   230     CONTINUE
51869           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
51870             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
51871             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
51872           ELSE
51873             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
51874             XXC(6)=PMAS(PYCOMP(KSUSY1+16),1)
51875           ENDIF
51876           IF(XXC(5).LT.AXMI) THEN
51877             XXC(5)=1D6
51878           ENDIF
51879           IF(XXC(6).LT.AXMI) THEN
51880             XXC(6)=1D6
51881           ENDIF
51882           XXC(7)=XXC(6)
51883           XXC(8)=XXC(5)
51884           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
51885             LKNT=LKNT+1
51886             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
51887      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51888             XLAM(LKNT)=XLAM(LKNT-1)
51889             IDLAM(LKNT,1)=KFCCHI(IJ)
51890             IDLAM(LKNT,2)=15
51891             IDLAM(LKNT,3)=-16
51892             LKNT=LKNT+1
51893             XLAM(LKNT)=XLAM(LKNT-1)
51894             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51895             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51896             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51897           ENDIF
51898  
51899 C...NOW, DO THE QUARKS
51900   240     CONTINUE
51901           IA=1
51902           JA=2
51903           EI=KCHG(IA,1)/3D0
51904           T3I=SIGN(1D0,EI+1D-6)/2D0
51905           EJ=KCHG(JA,1)/3D0
51906           T3J=SIGN(1D0,EJ+1D-6)/2D0
51907           CXC(2)=VMIXC(IJ,1)*DCONJG(ZMIXC(IX,1)*(EJ-T3J)*
51908      &    TANW+ZMIXC(IX,2)*T3J)
51909           CXC(4)=-DCONJG(UMIXC(IJ,1))*(
51910      &    ZMIXC(IX,1)*(EI-T3I)*TANW+ZMIXC(IX,2)*T3I)
51911           XXC(5)=PMAS(PYCOMP(KSUSY1+IA),1)
51912           XXC(6)=PMAS(PYCOMP(KSUSY1+JA),1)
51913           IF(XXC(5).LT.AXMI) THEN
51914             XXC(5)=1D6
51915           ENDIF
51916           IF(XXC(6).LT.AXMI) THEN
51917             XXC(6)=1D6
51918           ENDIF
51919           XXC(7)=XXC(6)
51920           XXC(8)=XXC(5)
51921           IF(AXMI.GE.AXMJ+PMAS(2,1)+PMAS(1,1)) THEN
51922             LKNT=LKNT+1
51923             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
51924      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
51925             IDLAM(LKNT,1)=KFCCHI(IJ)
51926             IDLAM(LKNT,2)=1
51927             IDLAM(LKNT,3)=-2
51928             LKNT=LKNT+1
51929             XLAM(LKNT)=XLAM(LKNT-1)
51930             IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51931             IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51932             IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51933             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
51934               LKNT=LKNT+1
51935               XLAM(LKNT)=XLAM(LKNT-1)
51936               IDLAM(LKNT,1)=KFCCHI(IJ)
51937               IDLAM(LKNT,2)=3
51938               IDLAM(LKNT,3)=-4
51939               LKNT=LKNT+1
51940               XLAM(LKNT)=XLAM(LKNT-1)
51941               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51942               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51943               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51944             ENDIF
51945           ENDIF
51946   250     CONTINUE
51947         ENDIF
51948   260 CONTINUE
51949   270 CONTINUE
51950  
51951 C...CHI0_I -> CHI+_I + H-
51952       DO 280 IJ=1,2
51953         XMJ=SMW(IJ)
51954         AXMJ=ABS(XMJ)
51955         XMJ2=XMJ**2
51956         XMHP=PMAS(ITHC,1)
51957         IF(AXMI.GE.AXMJ+XMHP) THEN
51958           LKNT=LKNT+1
51959           OLPP=CBETA*(ZMIXC(IX,4)*DCONJG(VMIXC(IJ,1))+(ZMIXC(IX,2)+
51960      &    ZMIXC(IX,1)*TANW)*DCONJG(VMIXC(IJ,2))/SR2)
51961           ORPP=SBETA*(DCONJG(ZMIXC(IX,3))*UMIXC(IJ,1)-
51962      &    (DCONJG(ZMIXC(IX,2))+DCONJG(ZMIXC(IX,1))*TANW)*
51963      &    UMIXC(IJ,2)/SR2)
51964           GX2=ABS(OLPP)**2+ABS(ORPP)**2
51965           GLR=DBLE(OLPP*DCONJG(ORPP))
51966           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
51967           IDLAM(LKNT,1)=KFCCHI(IJ)
51968           IDLAM(LKNT,2)=-ITHC
51969           IDLAM(LKNT,3)=0
51970           LKNT=LKNT+1
51971           XLAM(LKNT)=XLAM(LKNT-1)
51972           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
51973           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
51974           IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
51975         ELSE
51976  
51977         ENDIF
51978   280 CONTINUE
51979  
51980 C...2-BODY DECAYS TO FERMION SFERMION
51981       DO 290 J=1,16
51982         IF(J.GE.7.AND.J.LE.10) GOTO 290
51983         KF1=KSUSY1+J
51984         KF2=KSUSY2+J
51985         XMSF1=PMAS(PYCOMP(KF1),1)
51986         XMSF2=PMAS(PYCOMP(KF2),1)
51987         XMF=PMAS(J,1)
51988         IF(J.LE.6) THEN
51989           FCOL=3D0
51990         ELSE
51991           FCOL=1D0
51992         ENDIF
51993  
51994         EI=KCHG(J,1)/3D0
51995         T3T=SIGN(1D0,EI)
51996         IF(J.EQ.12.OR.J.EQ.14.OR.J.EQ.16) T3T=1D0
51997         IF(MOD(J,2).EQ.0) THEN
51998           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
51999           CAL=XMF*ZMIXC(IX,4)/XMW/SBETA
52000           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
52001           CBR=CAL
52002         ELSE
52003           CBL=T3T*ZMIXC(IX,2)+TANW*ZMIXC(IX,1)*(2D0*EI-T3T)
52004           CAL=XMF*ZMIXC(IX,3)/XMW/CBETA
52005           CAR=-2D0*EI*TANW*ZMIXC(IX,1)
52006           CBR=CAL
52007         ENDIF
52008  
52009 C...D~ D_L
52010         IF(AXMI.GE.XMF+XMSF1) THEN
52011           LKNT=LKNT+1
52012           XMA2=XMSF1**2
52013           XMB2=XMF**2
52014           XL=PYLAMF(XMI2,XMA2,XMB2)
52015           CA=CAL*SFMIX(J,1)+CAR*SFMIX(J,2)
52016           CB=CBL*SFMIX(J,1)+CBR*SFMIX(J,2)
52017           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
52018      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
52019           IDLAM(LKNT,1)=KF1
52020           IDLAM(LKNT,2)=-J
52021           IDLAM(LKNT,3)=0
52022           LKNT=LKNT+1
52023           XLAM(LKNT)=XLAM(LKNT-1)
52024           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52025           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52026           IDLAM(LKNT,3)=0
52027         ENDIF
52028  
52029 C...D~ D_R
52030         IF(AXMI.GE.XMF+XMSF2) THEN
52031           LKNT=LKNT+1
52032           XMA2=XMSF2**2
52033           XMB2=XMF**2
52034           CA=CAL*SFMIX(J,3)+CAR*SFMIX(J,4)
52035           CB=CBL*SFMIX(J,3)+CBR*SFMIX(J,4)
52036           XL=PYLAMF(XMI2,XMA2,XMB2)
52037           XLAM(LKNT)=0.5D0*FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
52038      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
52039           IDLAM(LKNT,1)=KF2
52040           IDLAM(LKNT,2)=-J
52041           IDLAM(LKNT,3)=0
52042           LKNT=LKNT+1
52043           XLAM(LKNT)=XLAM(LKNT-1)
52044           IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
52045           IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
52046           IDLAM(LKNT,3)=0
52047         ENDIF
52048   290 CONTINUE
52049   300 CONTINUE
52050 C...3-BODY DECAY TO Q Q~ GLUINO
52051       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
52052       IF(AXMI.GE.XMJ) THEN
52053         RT2I = 1D0/SQRT(2D0)
52054         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))*RT2I
52055         ORPP=DCONJG(OLPP)
52056         AXMJ=ABS(XMJ)
52057         XXC(1)=0D0
52058         XXC(2)=XMJ
52059         XXC(3)=0D0
52060         XXC(4)=XMI
52061         FID=1
52062         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
52063         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
52064         XXC(7)=XXC(5)
52065         XXC(8)=XXC(6)
52066         XXC(9)=1D6
52067         XXC(10)=0D0
52068         EI=KCHG(FID,1)/3D0
52069         T3I=SIGN(1D0,EI+1D-6)/2D0
52070         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
52071         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
52072         CXC(1)=0D0
52073         CXC(2)=-GLIJ
52074         CXC(3)=0D0
52075         CXC(4)=DCONJG(GLIJ)
52076         CXC(5)=0D0
52077         CXC(6)=GRIJ
52078         CXC(7)=0D0
52079         CXC(8)=-DCONJG(GRIJ)
52080         S12MIN=0D0
52081         S12MAX=(AXMI-AXMJ)**2
52082 CMRENNA.This statement must be here to define S12MAX
52083         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 310
52084 C...ALL QUARKS BUT T
52085         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
52086           LKNT=LKNT+1
52087           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
52088      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52089           IDLAM(LKNT,1)=KSUSY1+21
52090           IDLAM(LKNT,2)=1
52091           IDLAM(LKNT,3)=-1
52092           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
52093             LKNT=LKNT+1
52094             XLAM(LKNT)=XLAM(LKNT-1)
52095             IDLAM(LKNT,1)=KSUSY1+21
52096             IDLAM(LKNT,2)=3
52097             IDLAM(LKNT,3)=-3
52098           ENDIF
52099         ENDIF
52100   310   CONTINUE
52101         IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
52102           XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
52103           XXC(6)=PMAS(PYCOMP(KSUSY2+5),1)
52104         ELSE
52105           XXC(6)=PMAS(PYCOMP(KSUSY1+5),1)
52106           XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
52107         ENDIF
52108         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 320
52109         XXC(7)=XXC(5)
52110         XXC(8)=XXC(6)
52111         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
52112           LKNT=LKNT+1
52113           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
52114      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52115           IDLAM(LKNT,1)=KSUSY1+21
52116           IDLAM(LKNT,2)=5
52117           IDLAM(LKNT,3)=-5
52118         ENDIF
52119 C...U-TYPE QUARKS
52120   320   CONTINUE
52121         FID=2
52122         XXC(5)=PMAS(PYCOMP(KSUSY1+FID),1)
52123         XXC(6)=PMAS(PYCOMP(KSUSY2+FID),1)
52124         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 330
52125         XXC(7)=XXC(5)
52126         XXC(8)=XXC(6)
52127         EI=KCHG(FID,1)/3D0
52128         T3I=SIGN(1D0,EI+1D-6)/2D0
52129         GLIJ=(T3I*ZMIXC(IX,2)-TANW*(T3I-EI)*ZMIXC(IX,1))*OLPP
52130         GRIJ=ZMIXC(IX,1)*(EI*TANW)*ORPP
52131         CXC(2)=-GLIJ
52132         CXC(4)=DCONJG(GLIJ)
52133         CXC(6)=GRIJ
52134         CXC(8)=-DCONJG(GRIJ)
52135         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
52136           LKNT=LKNT+1
52137           XLAM(LKNT)=0.5D0*C1*AS/XMI3/(16D0*PI)*
52138      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,1D-3)
52139           IDLAM(LKNT,1)=KSUSY1+21
52140           IDLAM(LKNT,2)=2
52141           IDLAM(LKNT,3)=-2
52142           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
52143             LKNT=LKNT+1
52144             XLAM(LKNT)=XLAM(LKNT-1)
52145             IDLAM(LKNT,1)=KSUSY1+21
52146             IDLAM(LKNT,2)=4
52147             IDLAM(LKNT,3)=-4
52148           ENDIF
52149         ENDIF
52150   330   CONTINUE
52151       ENDIF
52152  
52153 C...R-violating decay modes (SKANDS).
52154       CALL PYRVNE(KFIN,XLAM,IDLAM,LKNT)
52155  
52156   340 IKNT=LKNT
52157       XLAM(0)=0D0
52158       DO 350 I=1,IKNT
52159         IF(XLAM(I).LT.0D0) XLAM(I)=0D0
52160         XLAM(0)=XLAM(0)+XLAM(I)
52161   350 CONTINUE
52162       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
52163  
52164       RETURN
52165       END
52166  
52167 C*********************************************************************
52168  
52169 C...PYCJDC
52170 C...Calculate decay widths for the charginos (admixtures of
52171 C...charged Wino and charged Higgsino.
52172  
52173 C...Input:  KCIN = KF code for particle
52174 C...Output: XLAM = widths
52175 C...        IDLAM = KF codes for decay particles
52176 C...        IKNT = number of decay channels defined
52177 C...AUTHOR: STEPHEN MRENNA
52178 C...Last change:
52179 C...10-16-95:  force decay chi^+_1 -> chi^0_1 e+ nu_e
52180 C...when CHIENU .NE. 0
52181  
52182       SUBROUTINE PYCJDC(KFIN,XLAM,IDLAM,IKNT)
52183  
52184 C...Double precision and integer declarations.
52185       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52186       IMPLICIT INTEGER(I-N)
52187       INTEGER PYK,PYCHGE,PYCOMP
52188 C...Parameter statement to help give large particle numbers.
52189       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52190      &KEXCIT=4000000,KDIMEN=5000000)
52191 C...Commonblocks.
52192       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52193       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
52194       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
52195       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
52196      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
52197 CC     &SFMIX(16,4),
52198 C      COMMON/PYINTS/XXM(20)
52199       COMPLEX*16 CXC
52200       COMMON/PYINTC/XXC(10),CXC(8)
52201       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYINTC/
52202  
52203 C...Local variables
52204       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
52205       COMPLEX*16 CAL,CBL,CAR,CBR,CA,CB
52206       INTEGER KFIN,KCIN
52207       DOUBLE PRECISION XMI,XMJ,XMF,XMSF1,XMSF2,XMW,XMW2,
52208      &XMZ,XMZ2,AXMJ,AXMI
52209       DOUBLE PRECISION S12MIN,S12MAX
52210       DOUBLE PRECISION XMI2,XMI3,XMJ2,XMH,XMH2,XMHP,XMA2,XMB2,XMK
52211       DOUBLE PRECISION PYLAMF,XL
52212       DOUBLE PRECISION TANW,XW,AEM,C1,AS,EI,T3I,BETA,ALFA
52213       DOUBLE PRECISION PYX2XH,PYX2XG
52214       DOUBLE PRECISION XLAM(0:400)
52215       INTEGER IDLAM(400,3)
52216       INTEGER LKNT,IX,IH,J,IJ,I,IKNT
52217       INTEGER ITH(3)
52218       INTEGER ITHC
52219       DOUBLE PRECISION ETAH(3),DH(3),EH(3)
52220       DOUBLE PRECISION SR2
52221       DOUBLE PRECISION CBETA,SBETA,TANB
52222  
52223       DOUBLE PRECISION PYALEM,PI,PYALPS
52224       DOUBLE PRECISION FCOL
52225       INTEGER KF1,KF2,ISF
52226       INTEGER KFNCHI(4),KFCCHI(2)
52227  
52228       DOUBLE PRECISION TEMP
52229       EXTERNAL PYGAUS,PYXXZ6
52230       DOUBLE PRECISION PYGAUS,PYXXZ6
52231       DOUBLE PRECISION PREC
52232       DATA ITH/25,35,36/
52233       DATA ITHC/37/
52234       DATA ETAH/1D0,1D0,-1D0/
52235       DATA SR2/1.4142136D0/
52236       DATA PI/3.141592654D0/
52237       DATA PREC/1D-2/
52238       DATA KFNCHI/1000022,1000023,1000025,1000035/
52239       DATA KFCCHI/1000024,1000037/
52240  
52241 C...COUNT THE NUMBER OF DECAY MODES
52242       LKNT=0
52243       XMW=PMAS(24,1)
52244       XMW2=XMW**2
52245       XMZ=PMAS(23,1)
52246       XMZ2=XMZ**2
52247       XW=1D0-XMW2/XMZ2
52248       XW1=1D0-XW
52249       TANW = SQRT(XW/XW1)
52250  
52251 C...1 OR 2 DEPENDING ON CHARGINO TYPE
52252       IX=1
52253       IF(KFIN.EQ.KFCCHI(2)) IX=2
52254       KCIN=PYCOMP(KFIN)
52255  
52256       XMI=SMW(IX)
52257       XMI2=XMI**2
52258       AXMI=ABS(XMI)
52259       AEM=PYALEM(XMI2)
52260       AS =PYALPS(XMI2)
52261       C1=AEM/XW
52262       XMI3=ABS(XMI**3)
52263       TANB=RMSS(5)
52264       BETA=ATAN(TANB)
52265       CBETA=COS(BETA)
52266       SBETA=TANB*CBETA
52267       ALFA=RMSS(18)
52268  
52269       DO 110 I=1,2
52270         DO 100 J=1,2
52271           VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
52272           UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
52273   100   CONTINUE
52274   110 CONTINUE
52275  
52276 C...GRAVITINO DECAY MODES
52277  
52278       IF(IMSS(11).EQ.1) THEN
52279         XMP=RMSS(29)
52280         IDG=39+KSUSY1
52281         XMGR=PMAS(PYCOMP(IDG),1)
52282 C        SINW=SQRT(XW)
52283 C        COSW=SQRT(1D0-XW)
52284         XFAC=(XMI2/(XMP*XMGR))**2*AXMI/48D0/PI
52285         IF(AXMI.GT.XMGR+XMW) THEN
52286           LKNT=LKNT+1
52287           IDLAM(LKNT,1)=IDG
52288           IDLAM(LKNT,2)=24
52289           IDLAM(LKNT,3)=0
52290           XLAM(LKNT)=XFAC*(
52291      &  .5D0*(ABS(VMIXC(IX,1))**2+ABS(UMIXC(IX,1))**2)+
52292      &  .5D0*((ABS(VMIXC(IX,2))*SBETA)**2+(ABS(UMIXC(IX,2))*CBETA)**2))*
52293      &  (1D0-XMW2/XMI2)**4
52294         ENDIF
52295         IF(AXMI.GT.XMGR+PMAS(37,1)) THEN
52296           LKNT=LKNT+1
52297           IDLAM(LKNT,1)=IDG
52298           IDLAM(LKNT,2)=37
52299           IDLAM(LKNT,3)=0
52300           XLAM(LKNT)=XFAC*(.5D0*((ABS(VMIXC(IX,2))*CBETA)**2+
52301      &   (ABS(UMIXC(IX,2))*SBETA)**2))
52302      &   *(1D0-PMAS(37,1)**2/XMI2)**4
52303        ENDIF
52304       ENDIF
52305  
52306 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
52307       IF(IX.EQ.1) GOTO 170
52308       XMJ=SMW(1)
52309       AXMJ=ABS(XMJ)
52310       XMJ2=XMJ**2
52311  
52312 C...CHI_2+ -> CHI_1+ + Z0
52313       IF(AXMI.GE.AXMJ+XMZ) THEN
52314         LKNT=LKNT+1
52315         IJ=1
52316         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
52317      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
52318         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
52319      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
52320         GX2=ABS(OLPP)**2+ABS(ORPP)**2
52321         GLR=DBLE(OLPP*DCONJG(ORPP))
52322         XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMZ,GX2,GLR)
52323         IDLAM(LKNT,1)=KFCCHI(1)
52324         IDLAM(LKNT,2)=23
52325         IDLAM(LKNT,3)=0
52326  
52327 C...CHARGED LEPTONS
52328       ELSEIF(AXMI.GE.AXMJ) THEN
52329         S12MIN=0D0
52330         S12MAX=(AXMI-AXMJ)**2
52331         IA=11
52332         JA=12
52333         EI=KCHG(IABS(IA),1)/3D0
52334         T3I=SIGN(1D0,EI+1D-6)/2D0
52335         XXC(1)=0D0
52336         XXC(2)=XMJ
52337         XXC(3)=0D0
52338         XXC(4)=XMI
52339         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
52340         XXC(6)=1D6
52341         XXC(9)=PMAS(23,1)
52342         XXC(10)=PMAS(23,2)
52343         IJ=1
52344         OLPP=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))-
52345      &  VMIXC(IJ,2)*DCONJG(VMIXC(IX,2))/2D0
52346         ORPP=-UMIXC(IX,1)*DCONJG(UMIXC(IJ,1))-
52347      &  UMIXC(IX,2)*DCONJG(UMIXC(IJ,2))/2D0
52348         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
52349         CXC(2)=DCMPLX(0D0,0D0)
52350         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
52351         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
52352         CXC(5)=-DCMPLX(EI/XW1)*ORPP
52353         CXC(6)=DCMPLX(0D0,0D0)
52354         CXC(7)=-DCMPLX(EI/XW1)*OLPP
52355         CXC(8)=DCMPLX(0D0,0D0)
52356         IF( XXC(5).LT.AXMI ) THEN
52357           XXC(5)=1D6
52358         ENDIF
52359         XXC(7)=XXC(5)
52360         XXC(8)=XXC(6)
52361         IF(AXMI.GE.AXMJ+2D0*PMAS(11,1)) THEN
52362           LKNT=LKNT+1
52363           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52364      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52365           IDLAM(LKNT,1)=KFCCHI(1)
52366           IDLAM(LKNT,2)=11
52367           IDLAM(LKNT,3)=-11
52368           IF(AXMI.GE.AXMJ+2D0*PMAS(13,1)) THEN
52369             LKNT=LKNT+1
52370             XLAM(LKNT)=XLAM(LKNT-1)
52371             IDLAM(LKNT,1)=KFCCHI(1)
52372             IDLAM(LKNT,2)=13
52373             IDLAM(LKNT,3)=-13
52374           ENDIF
52375           IF(AXMI.GE.AXMJ+2D0*PMAS(15,1)) THEN
52376             LKNT=LKNT+1
52377             XLAM(LKNT)=XLAM(LKNT-1)
52378             IDLAM(LKNT,1)=KFCCHI(1)
52379             IDLAM(LKNT,2)=15
52380             IDLAM(LKNT,3)=-15
52381           ENDIF
52382         ENDIF
52383  
52384 C...NEUTRINOS
52385   120   CONTINUE
52386         IA=12
52387         JA=11
52388         EI=KCHG(IABS(IA),1)/3D0
52389         T3I=SIGN(1D0,EI+1D-6)/2D0
52390         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
52391         XXC(6)=1D6
52392         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
52393         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
52394         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
52395         CXC(5)=-DCMPLX(EI/XW1)*ORPP
52396         CXC(7)=-DCMPLX(EI/XW1)*OLPP
52397         IF( XXC(5).LT.AXMI ) THEN
52398           XXC(5)=1D6
52399         ENDIF
52400         XXC(7)=XXC(5)
52401         XXC(8)=XXC(6)
52402         IF(AXMI.GE.AXMJ+2D0*PMAS(12,1)) THEN
52403           LKNT=LKNT+1
52404           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52405      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52406           IDLAM(LKNT,1)=KFCCHI(1)
52407           IDLAM(LKNT,2)=12
52408           IDLAM(LKNT,3)=-12
52409           LKNT=LKNT+1
52410           XLAM(LKNT)=XLAM(LKNT-1)
52411           IDLAM(LKNT,1)=KFCCHI(1)
52412           IDLAM(LKNT,2)=14
52413           IDLAM(LKNT,3)=-14
52414         ENDIF
52415         IF(AXMI.GE.AXMJ+2D0*PMAS(16,1)) THEN
52416           IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
52417             XXC(5)=PMAS(PYCOMP(KSUSY1+15),1)
52418           ELSE
52419             XXC(5)=PMAS(PYCOMP(KSUSY2+15),1)
52420           ENDIF
52421           IF( XXC(5).LT.AXMI ) THEN
52422             XXC(5)=1D6
52423           ENDIF
52424           XXC(7)=XXC(5)
52425           LKNT=LKNT+1
52426           XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*
52427      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52428           IDLAM(LKNT,1)=KFCCHI(1)
52429           IDLAM(LKNT,2)=16
52430           IDLAM(LKNT,3)=-16
52431         ENDIF
52432  
52433 C...D-TYPE QUARKS
52434   130   CONTINUE
52435         IA=1
52436         JA=2
52437         EI=KCHG(IABS(IA),1)/3D0
52438         T3I=SIGN(1D0,EI+1D-6)/2D0
52439         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
52440         XXC(6)=1D6
52441         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
52442         CXC(2)=DCMPLX(0D0,0D0)
52443         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
52444         CXC(4)=-VMIXC(IJ,1)*DCONJG(VMIXC(IX,1))*DCMPLX(T3I/XW)
52445         CXC(5)=-DCMPLX(EI/XW1)*ORPP
52446         CXC(6)=DCMPLX(0D0,0D0)
52447         CXC(7)=-DCMPLX(EI/XW1)*OLPP
52448         CXC(8)=DCMPLX(0D0,0D0)
52449         IF( XXC(5).LT.AXMI ) THEN
52450           XXC(5)=1D6
52451         ENDIF
52452         XXC(7)=XXC(5)
52453         XXC(8)=XXC(6)
52454         IF(AXMI.GE.AXMJ+2D0*PMAS(1,1)) THEN
52455           LKNT=LKNT+1
52456           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
52457      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52458           IDLAM(LKNT,1)=KFCCHI(1)
52459           IDLAM(LKNT,2)=1
52460           IDLAM(LKNT,3)=-1
52461           IF(AXMI.GE.AXMJ+2D0*PMAS(3,1)) THEN
52462             LKNT=LKNT+1
52463             XLAM(LKNT)=XLAM(LKNT-1)
52464             IDLAM(LKNT,1)=KFCCHI(1)
52465             IDLAM(LKNT,2)=3
52466             IDLAM(LKNT,3)=-3
52467           ENDIF
52468         ENDIF
52469         IF(AXMI.GE.AXMJ+2D0*PMAS(5,1)) THEN
52470           IF(ABS(SFMIX(5,1)).GT.ABS(SFMIX(5,2))) THEN
52471             XXC(5)=PMAS(PYCOMP(KSUSY1+5),1)
52472           ELSE
52473             XXC(5)=PMAS(PYCOMP(KSUSY2+5),1)
52474           ENDIF
52475           IF( XXC(5).LT.AXMI ) THEN
52476             XXC(5)=1D6
52477           ENDIF
52478           XXC(7)=XXC(5)
52479           LKNT=LKNT+1
52480           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
52481      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52482           IDLAM(LKNT,1)=KFCCHI(1)
52483           IDLAM(LKNT,2)=5
52484           IDLAM(LKNT,3)=-5
52485         ENDIF
52486  
52487 C...U-TYPE QUARKS
52488   140   CONTINUE
52489         IA=2
52490         JA=1
52491         EI=KCHG(IABS(IA),1)/3D0
52492         T3I=SIGN(1D0,EI+1D-6)/2D0
52493         XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
52494         XXC(6)=1D6
52495         CXC(1)=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
52496         CXC(2)=DCMPLX(0D0,0D0)
52497         CXC(3)=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
52498         CXC(4)=-UMIXC(IJ,1)*DCONJG(UMIXC(IX,1))*DCMPLX(T3I/XW)
52499         CXC(5)=-DCMPLX(EI/XW1)*ORPP
52500         CXC(6)=DCMPLX(0D0,0D0)
52501         CXC(7)=-DCMPLX(EI/XW1)*OLPP
52502         CXC(8)=DCMPLX(0D0,0D0)
52503         IF( XXC(5).LT.AXMI ) THEN
52504           XXC(5)=1D6
52505         ENDIF
52506         XXC(7)=XXC(5)
52507         XXC(8)=XXC(6)
52508         IF(AXMI.GE.AXMJ+2D0*PMAS(2,1)) THEN
52509           LKNT=LKNT+1
52510           XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
52511      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52512           IDLAM(LKNT,1)=KFCCHI(1)
52513           IDLAM(LKNT,2)=2
52514           IDLAM(LKNT,3)=-2
52515           IF(AXMI.GE.AXMJ+2D0*PMAS(4,1)) THEN
52516             LKNT=LKNT+1
52517             XLAM(LKNT)=XLAM(LKNT-1)
52518             IDLAM(LKNT,1)=KFCCHI(1)
52519             IDLAM(LKNT,2)=4
52520             IDLAM(LKNT,3)=-4
52521           ENDIF
52522         ENDIF
52523   150   CONTINUE
52524       ENDIF
52525  
52526 C...CHI_2+ -> CHI_1+ + H0_K
52527       EH(2)=COS(ALFA)
52528       EH(1)=SIN(ALFA)
52529       EH(3)=-SBETA
52530       DH(2)=-SIN(ALFA)
52531       DH(1)=COS(ALFA)
52532       DH(3)=COS(BETA)
52533       DO 160 IH=1,3
52534         XMH=PMAS(ITH(IH),1)
52535         XMH2=XMH**2
52536 C...NO 3-BODY OPTION
52537         IF(AXMI.GE.AXMJ+XMH) THEN
52538           LKNT=LKNT+1
52539           XL=PYLAMF(XMI2,XMJ2,XMH2)
52540           OLPP=(VMIXC(2,1)*DCONJG(UMIXC(1,2))*EH(IH) -
52541      &    VMIXC(2,2)*DCONJG(UMIXC(1,1))*DH(IH))/SR2
52542           ORPP=(DCONJG(VMIXC(1,1))*UMIXC(2,2)*EH(IH) -
52543      &    DCONJG(VMIXC(1,2))*UMIXC(2,1)*DH(IH))/SR2
52544           XMK=XMJ*ETAH(IH)
52545           GX2=ABS(OLPP)**2+ABS(ORPP)**2
52546           GLR=DBLE(OLPP*DCONJG(ORPP))
52547           XLAM(LKNT)=PYX2XH(C1,XMI,XMK,XMH,GX2,GLR)
52548           IDLAM(LKNT,1)=KFCCHI(1)
52549           IDLAM(LKNT,2)=ITH(IH)
52550           IDLAM(LKNT,3)=0
52551         ENDIF
52552   160 CONTINUE
52553  
52554 C...CHI1 JUMPS TO HERE
52555   170 CONTINUE
52556  
52557 C...CHI+_I -> CHI0_J + W+
52558       DO 220 IJ=1,4
52559         XMJ=SMZ(IJ)
52560         AXMJ=ABS(XMJ)
52561         XMJ2=XMJ**2
52562         IF(AXMI.GE.AXMJ+XMW) THEN
52563           LKNT=LKNT+1
52564           DO 180 I=1,4
52565             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
52566   180     CONTINUE
52567           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
52568      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)
52569           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
52570      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)
52571           GX2=ABS(CXC(1))**2+ABS(CXC(3))**2
52572           GLR=DBLE(CXC(1)*DCONJG(CXC(3)))
52573           XLAM(LKNT)=PYX2XG(C1/XMW2,XMI,XMJ,XMW,GX2,GLR)
52574           IDLAM(LKNT,1)=KFNCHI(IJ)
52575           IDLAM(LKNT,2)=24
52576           IDLAM(LKNT,3)=0
52577 C...LEPTONS
52578         ELSEIF(AXMI.GE.AXMJ) THEN
52579           S12MIN=0D0
52580           S12MAX=(AXMI-AXMJ)**2
52581           DO 190 I=1,4
52582             ZMIXC(IJ,I)=DCMPLX(ZMIX(IJ,I),ZMIXI(IJ,I))
52583   190     CONTINUE
52584           CXC(1)=(DCONJG(ZMIXC(IJ,2))*VMIXC(IX,1)-
52585      &    DCONJG(ZMIXC(IJ,4))*VMIXC(IX,2)/SR2)/SR2
52586           CXC(3)=(ZMIXC(IJ,2)*DCONJG(UMIXC(IX,1))+
52587      &    ZMIXC(IJ,3)*DCONJG(UMIXC(IX,2))/SR2)/SR2
52588           CXC(5)=DCMPLX(0D0,0D0)
52589           CXC(7)=DCMPLX(0D0,0D0)
52590           IA=11
52591           JA=12
52592           EI=KCHG(IA,1)/3D0
52593           T3I=SIGN(1D0,EI+1D-6)/2D0
52594           EJ=KCHG(JA,1)/3D0
52595           T3J=SIGN(1D0,EJ+1D-6)/2D0
52596           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
52597      &    TANW+ZMIXC(IJ,2)*T3J)/SR2
52598           CXC(4)=-DCONJG(UMIXC(IX,1))*(
52599      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)/SR2
52600           CXC(6)=DCMPLX(0D0,0D0)
52601           CXC(8)=DCMPLX(0D0,0D0)
52602           XXC(1)=0D0
52603           XXC(2)=XMJ
52604           XXC(3)=0D0
52605           XXC(4)=XMI
52606           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
52607           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
52608           XXC(9)=PMAS(24,1)
52609           XXC(10)=PMAS(24,2)
52610 CCC          IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 190
52611           IF(XXC(5).LT.AXMI) THEN
52612             XXC(5)=1D6
52613           ELSEIF(XXC(6).LT.AXMI) THEN
52614             XXC(6)=1D6
52615           ENDIF
52616           XXC(7)=XXC(6)
52617           XXC(8)=XXC(5)
52618 C...1/(2PI)**3*/(32*M**3)*G^4, G^2/(4*PI)= AEM/XW,
52619 C...--> 1/(16PI)/M**3*(AEM/XW)**2
52620           IF(AXMI.GE.AXMJ+PMAS(11,1)+PMAS(12,1)) THEN
52621             LKNT=LKNT+1
52622             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52623             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
52624             IDLAM(LKNT,1)=KFNCHI(IJ)
52625             IDLAM(LKNT,2)=-11
52626             IDLAM(LKNT,3)=12
52627 C...ONLY DECAY CHI+1 -> E+ NU_E
52628             IF( IMSS(12).NE. 0 ) GOTO 260
52629             IF(AXMI.GE.AXMJ+PMAS(13,1)+PMAS(14,1)) THEN
52630               LKNT=LKNT+1
52631               XLAM(LKNT)=XLAM(LKNT-1)
52632               IDLAM(LKNT,1)=KFNCHI(IJ)
52633               IDLAM(LKNT,2)=-13
52634               IDLAM(LKNT,3)=14
52635             ENDIF
52636           ENDIF
52637           IF(AXMI.GE.AXMJ+PMAS(15,1)+PMAS(16,1)) THEN
52638             LKNT=LKNT+1
52639             IF(ABS(SFMIX(15,1)).GT.ABS(SFMIX(15,2))) THEN
52640               XXC(6)=PMAS(PYCOMP(KSUSY1+15),1)
52641             ELSE
52642               XXC(6)=PMAS(PYCOMP(KSUSY2+15),1)
52643             ENDIF
52644             XXC(5)=PMAS(PYCOMP(KSUSY1+16),1)
52645             IF(XXC(5).LT.AXMI) THEN
52646               XXC(5)=1D6
52647             ELSEIF(XXC(6).LT.AXMI) THEN
52648               XXC(6)=1D6
52649             ENDIF
52650             XXC(7)=XXC(6)
52651             XXC(8)=XXC(5)
52652             TEMP=PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52653             XLAM(LKNT)=C1**2/XMI3/(16D0*PI)*TEMP
52654             IDLAM(LKNT,1)=KFNCHI(IJ)
52655             IDLAM(LKNT,2)=-15
52656             IDLAM(LKNT,3)=16
52657           ENDIF
52658  
52659 C...NOW, DO THE QUARKS
52660   200     CONTINUE
52661           IA=1
52662           JA=2
52663           EI=KCHG(IA,1)/3D0
52664           T3I=SIGN(1D0,EI+1D-6)/2D0
52665           EJ=KCHG(JA,1)/3D0
52666           T3J=SIGN(1D0,EJ+1D-6)/2D0
52667           CXC(2)=VMIXC(IX,1)*DCONJG(ZMIXC(IJ,1)*(EJ-T3J)*
52668      &    TANW+ZMIXC(IJ,2)*T3J)
52669           CXC(4)=-DCONJG(UMIXC(IX,1))*(
52670      &    ZMIXC(IJ,1)*(EI-T3I)*TANW+ZMIXC(IJ,2)*T3I)
52671           XXC(5)=PMAS(PYCOMP(KSUSY1+JA),1)
52672           XXC(6)=PMAS(PYCOMP(KSUSY1+IA),1)
52673           IF( XXC(5).LT.AXMI .AND. XXC(6).LT.AXMI ) GOTO 210
52674           IF(XXC(5).LT.AXMI) THEN
52675             XXC(5)=1D6
52676           ENDIF
52677           IF(XXC(6).LT.AXMI) THEN
52678             XXC(6)=1D6
52679           ENDIF
52680           XXC(7)=XXC(6)
52681           XXC(8)=XXC(5)
52682           IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
52683             LKNT=LKNT+1
52684             XLAM(LKNT)=3D0*C1**2/XMI3/(16D0*PI)*
52685      &      PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52686             IDLAM(LKNT,1)=KFNCHI(IJ)
52687             IDLAM(LKNT,2)=-1
52688             IDLAM(LKNT,3)=2
52689             IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
52690               LKNT=LKNT+1
52691               XLAM(LKNT)=XLAM(LKNT-1)
52692               IDLAM(LKNT,1)=KFNCHI(IJ)
52693               IDLAM(LKNT,2)=-3
52694               IDLAM(LKNT,3)=4
52695             ENDIF
52696           ENDIF
52697   210     CONTINUE
52698         ENDIF
52699   220 CONTINUE
52700  
52701 C...CHI+_I -> CHI0_J + H+
52702       DO 230 IJ=1,4
52703         XMJ=SMZ(IJ)
52704         AXMJ=ABS(XMJ)
52705         XMJ2=XMJ**2
52706         XMHP=PMAS(ITHC,1)
52707         IF(AXMI.GE.AXMJ+XMHP) THEN
52708           LKNT=LKNT+1
52709           OLPP=CBETA*(ZMIXC(IJ,4)*DCONJG(VMIXC(IX,1))+(ZMIXC(IJ,2)+
52710      &    ZMIXC(IJ,1)*TANW)*DCONJG(VMIXC(IX,2))/SR2)
52711           ORPP=SBETA*(DCONJG(ZMIXC(IJ,3))*UMIXC(IX,1)-
52712      &    (DCONJG(ZMIXC(IJ,2))+DCONJG(ZMIXC(IJ,1))*TANW)*
52713      &    UMIXC(IX,2)/SR2)
52714           GX2=ABS(OLPP)**2+ABS(ORPP)**2
52715           GLR=DBLE(OLPP*DCONJG(ORPP))
52716           XLAM(LKNT)=PYX2XH(C1,XMI,XMJ,XMHP,GX2,GLR)
52717           IDLAM(LKNT,1)=KFNCHI(IJ)
52718           IDLAM(LKNT,2)=ITHC
52719           IDLAM(LKNT,3)=0
52720         ELSE
52721  
52722         ENDIF
52723   230 CONTINUE
52724  
52725 C...2-BODY DECAYS TO FERMION SFERMION
52726       DO 240 J=1,16
52727         IF(J.GE.7.AND.J.LE.10) GOTO 240
52728         IF(MOD(J,2).EQ.0) THEN
52729           KF1=KSUSY1+J-1
52730         ELSE
52731           KF1=KSUSY1+J+1
52732         ENDIF
52733         KF2=KF1+KSUSY1
52734         XMSF1=PMAS(PYCOMP(KF1),1)
52735         XMSF2=PMAS(PYCOMP(KF2),1)
52736         XMF=PMAS(J,1)
52737         IF(J.LE.6) THEN
52738           FCOL=3D0
52739         ELSE
52740           FCOL=1D0
52741         ENDIF
52742  
52743 C...U~ D_L
52744         IF(MOD(J,2).EQ.0) THEN
52745           XMFP=PMAS(J-1,1)
52746           CAL=UMIXC(IX,1)
52747           CBL=-XMF*VMIXC(IX,2)/XMW/SBETA/SR2
52748           CAR=-XMFP*UMIXC(IX,2)/XMW/CBETA/SR2
52749           CBR=0D0
52750           ISF=J-1
52751         ELSE
52752           XMFP=PMAS(J+1,1)
52753           CAL=VMIXC(IX,1)
52754           CBL=-XMF*UMIXC(IX,2)/XMW/CBETA/SR2
52755           CBR=0D0
52756           CAR=-XMFP*VMIXC(IX,2)/XMW/SBETA/SR2
52757           ISF=J+1
52758         ENDIF
52759  
52760 C...~U_L D
52761         IF(AXMI.GE.XMF+XMSF1) THEN
52762           LKNT=LKNT+1
52763           XMA2=XMSF1**2
52764           XMB2=XMF**2
52765           XL=PYLAMF(XMI2,XMA2,XMB2)
52766           CA=CAL*SFMIX(ISF,1)+CAR*SFMIX(ISF,2)
52767           CB=CBL*SFMIX(ISF,1)+CBR*SFMIX(ISF,2)
52768           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
52769      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
52770           IDLAM(LKNT,3)=0
52771           IF(MOD(J,2).EQ.0) THEN
52772             IDLAM(LKNT,1)=-KF1
52773             IDLAM(LKNT,2)=J
52774           ELSE
52775             IDLAM(LKNT,1)=KF1
52776             IDLAM(LKNT,2)=-J
52777           ENDIF
52778         ENDIF
52779  
52780 C...U~ D_R
52781         IF(AXMI.GE.XMF+XMSF2) THEN
52782           LKNT=LKNT+1
52783           XMA2=XMSF2**2
52784           XMB2=XMF**2
52785           CA=CAL*SFMIX(ISF,3)+CAR*SFMIX(ISF,4)
52786           CB=CBL*SFMIX(ISF,3)+CBR*SFMIX(ISF,4)
52787           XL=PYLAMF(XMI2,XMA2,XMB2)
52788           XLAM(LKNT)=FCOL*C1/8D0/XMI3*SQRT(XL)*( (XMI2+XMB2-XMA2)*
52789      &    (ABS(CA)**2+ABS(CB)**2)+4D0*DBLE(CA*DCONJG(CB))*XMF*XMI)
52790           IDLAM(LKNT,3)=0
52791           IF(MOD(J,2).EQ.0) THEN
52792             IDLAM(LKNT,1)=-KF2
52793             IDLAM(LKNT,2)=J
52794           ELSE
52795             IDLAM(LKNT,1)=KF2
52796             IDLAM(LKNT,2)=-J
52797           ENDIF
52798         ENDIF
52799   240 CONTINUE
52800  
52801 C...3-BODY DECAY TO Q Q~' GLUINO, ONLY IF IT CANNOT PROCEED THROUGH
52802 C...A 2-BODY -- 2-BODY CHAIN
52803       XMJ=PMAS(PYCOMP(KSUSY1+21),1)
52804       IF(AXMI.GE.XMJ) THEN
52805         AXMJ=ABS(XMJ)
52806         S12MIN=0D0
52807         S12MAX=(AXMI-AXMJ)**2
52808         XXC(1)=0D0
52809         XXC(2)=XMJ
52810         XXC(3)=0D0
52811         XXC(4)=XMI
52812         XXC(5)=PMAS(PYCOMP(KSUSY1+1),1)
52813         XXC(6)=PMAS(PYCOMP(KSUSY1+2),1)
52814         XXC(9)=1D6
52815         XXC(10)=0D0
52816         OLPP=DCMPLX(COS(RMSS(32)),SIN(RMSS(32)))
52817         ORPP=DCONJG(OLPP)
52818         CXC(1)=DCMPLX(0D0,0D0)
52819         CXC(3)=DCMPLX(0D0,0D0)
52820         CXC(5)=DCMPLX(0D0,0D0)
52821         CXC(7)=DCMPLX(0D0,0D0)
52822         CXC(2)=UMIXC(IX,1)*OLPP/SR2
52823         CXC(4)=-DCONJG(VMIXC(IX,1))*ORPP/SR2
52824         CXC(6)=DCMPLX(0D0,0D0)
52825         CXC(8)=DCMPLX(0D0,0D0)
52826         IF(XXC(5).LT.AXMI) THEN
52827           XXC(5)=1D6
52828         ELSEIF(XXC(6).LT.AXMI) THEN
52829           XXC(6)=1D6
52830         ENDIF
52831         XXC(7)=XXC(6)
52832         XXC(8)=XXC(5)
52833         IF( XXC(5).LT.AXMI .OR. XXC(6).LT.AXMI ) GOTO 250
52834         IF(AXMI.GE.AXMJ+PMAS(1,1)+PMAS(2,1)) THEN
52835           LKNT=LKNT+1
52836           XLAM(LKNT)=4D0*C1*AS/XMI3/(16D0*PI)*
52837      &    PYGAUS(PYXXZ6,S12MIN,S12MAX,PREC)
52838           IDLAM(LKNT,1)=KSUSY1+21
52839           IDLAM(LKNT,2)=-1
52840           IDLAM(LKNT,3)=2
52841           IF(AXMI.GE.AXMJ+PMAS(3,1)+PMAS(4,1)) THEN
52842             LKNT=LKNT+1
52843             XLAM(LKNT)=XLAM(LKNT-1)
52844             IDLAM(LKNT,1)=KSUSY1+21
52845             IDLAM(LKNT,2)=-3
52846             IDLAM(LKNT,3)=4
52847           ENDIF
52848         ENDIF
52849   250   CONTINUE
52850       ENDIF
52851  
52852 C...R-violating decay modes (SKANDS).
52853       CALL PYRVCH(KFIN,XLAM,IDLAM,LKNT)
52854  
52855   260 IKNT=LKNT
52856       XLAM(0)=0D0
52857       DO 270 I=1,IKNT
52858         XLAM(0)=XLAM(0)+XLAM(I)
52859         IF(XLAM(I).LT.0D0) THEN
52860           WRITE(MSTU(11),*) ' XLAM(I) = ',XLAM(I),KCIN,
52861      &    (IDLAM(I,J),J=1,3)
52862           XLAM(I)=0D0
52863         ENDIF
52864   270 CONTINUE
52865       IF(XLAM(0).EQ.0D0) THEN
52866         XLAM(0)=1D-6
52867         WRITE(MSTU(11),*) ' XLAM(0) = ',XLAM(0)
52868         WRITE(MSTU(11),*) LKNT
52869         WRITE(MSTU(11),*) (XLAM(J),J=1,LKNT)
52870       ENDIF
52871  
52872       RETURN
52873       END
52874  
52875 C*********************************************************************
52876  
52877 C...PYXXZ6
52878 C...Used in the calculation of  inoi -> inoj + f + ~f.
52879  
52880       FUNCTION PYXXZ6(X)
52881  
52882 C...Double precision and integer declarations.
52883       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
52884       IMPLICIT INTEGER(I-N)
52885       INTEGER PYK,PYCHGE,PYCOMP
52886 C...Parameter statement to help give large particle numbers.
52887       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
52888      &KEXCIT=4000000,KDIMEN=5000000)
52889 C...Commonblocks.
52890       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
52891 C      COMMON/PYINTS/XXM(20)
52892       COMPLEX*16 CXC
52893       COMMON/PYINTC/XXC(10),CXC(8)
52894       SAVE /PYDAT1/,/PYINTC/
52895  
52896 C...Local variables.
52897       COMPLEX*16 QLLS,QRRS,QRLS,QLRS,QLLU,QRRU,QLRT,QRLT
52898       DOUBLE PRECISION PYXXZ6,X
52899       DOUBLE PRECISION XM12,XM22,XM32,S,S13,WPROP2
52900       DOUBLE PRECISION WW,WF1,WF2,WFL1,WFL2
52901       DOUBLE PRECISION SIJ
52902       DOUBLE PRECISION XMV,XMG,XMSU1,XMSU2,XMSD1,XMSD2
52903       DOUBLE PRECISION OL2
52904       DOUBLE PRECISION S23MIN,S23MAX,S23AVE,S23DEL
52905       INTEGER I
52906  
52907 C...Statement functions.
52908 C...Integral from x to y of (t-a)(b-t) dt.
52909       TINT(X,Y,A,B)=(X-Y)*(-(X**2+X*Y+Y**2)/3D0+(B+A)*(X+Y)/2D0-A*B)
52910 C...Integral from x to y of (t-a)(b-t)/(t-c) dt.
52911       TINT2(X,Y,A,B,C)=(X-Y)*(-0.5D0*(X+Y)+(B+A-C))-
52912      &LOG(ABS((X-C)/(Y-C)))*(C-B)*(C-A)
52913 C...Integral from x to y of (t-a)(b-t)/(t-c)**2 dt.
52914       TINT3(X,Y,A,B,C)=-(X-Y)+(C-A)*(C-B)*(Y-X)/(X-C)/(Y-C)+
52915      &(B+A-2D0*C)*LOG(ABS((X-C)/(Y-C)))
52916 C...Integral from x to y of (t-a)/(b-t) dt.
52917       UTINT(X,Y,A,B)=LOG(ABS((X-A)/(B-X)*(B-Y)/(Y-A)))/(B-A)
52918 C...Integral from x to y of 1/(t-a) dt.
52919       TPROP(X,Y,A)=LOG(ABS((X-A)/(Y-A)))
52920  
52921       XM12=XXC(1)**2
52922       XM22=XXC(2)**2
52923       XM32=XXC(3)**2
52924       S=XXC(4)**2
52925       S13=X
52926  
52927       S23AVE=XM22+XM32-0.5D0/X*(X+XM32-XM12)*(X+XM22-S)
52928       S23DEL=0.5D0/X*SQRT( ( (X-XM12-XM32)**2-4D0*XM12*XM32)*
52929      &( (X-XM22-S)**2  -4D0*XM22*S  ) )
52930  
52931       S23MIN=(S23AVE-S23DEL)
52932       S23MAX=(S23AVE+S23DEL)
52933  
52934       XMSD1=XXC(5)**2
52935       XMSD2=XXC(7)**2
52936       XMSU1=XXC(6)**2
52937       XMSU2=XXC(8)**2
52938  
52939       XMV=XXC(9)
52940       XMG=XXC(10)
52941       QLLS=CXC(1)
52942       QLLU=CXC(2)
52943       QLRS=CXC(3)
52944       QLRT=CXC(4)
52945       QRLS=CXC(5)
52946       QRLT=CXC(6)
52947       QRRS=CXC(7)
52948       QRRU=CXC(8)
52949       WPROP2=(S13-XMV**2)**2+(XMV*XMG)**2
52950       SIJ=2D0*XXC(2)*XXC(4)*S13
52951       IF(XMV.LE.1000D0) THEN
52952         OL2=ABS(QLLS)**2+ABS(QRRS)**2+ABS(QLRS)**2+ABS(QRLS)**2
52953         OLR=-2D0*DBLE(QLRS*DCONJG(QLLS)+QRLS*DCONJG(QRRS))
52954         WW=(OL2*2D0*TINT(S23MAX,S23MIN,XM22,S)
52955      &  +OLR*SIJ*(S23MAX-S23MIN))/WPROP2
52956         IF(XXC(5).LE.10000D0) THEN
52957           WFL1=4D0*(DBLE(QLLS*DCONJG(QLLU))*
52958      &    TINT2(S23MAX,S23MIN,XM22,S,XMSD1)-
52959      &    .5D0*DBLE(QLLS*DCONJG(QLRT))*SIJ*TPROP(S23MAX,S23MIN,XMSD2)+
52960      &    DBLE(QLRS*DCONJG(QLRT))*TINT2(S23MAX,S23MIN,XM22,S,XMSD2)-
52961      &    .5D0*DBLE(QLRS*DCONJG(QLLU))*SIJ*TPROP(S23MAX,S23MIN,XMSD1))
52962      &    *(S13-XMV**2)/WPROP2
52963         ELSE
52964           WFL1=0D0
52965         ENDIF
52966  
52967         IF(XXC(6).LE.10000D0) THEN
52968           WFL2=4D0*(DBLE(QRRS*DCONJG(QRRU))*
52969      &    TINT2(S23MAX,S23MIN,XM22,S,XMSU1)-
52970      &    .5D0*DBLE(QRRS*DCONJG(QRLT))*SIJ*TPROP(S23MAX,S23MIN,XMSU2)+
52971      &    DBLE(QRLS*DCONJG(QRLT))*TINT2(S23MAX,S23MIN,XM22,S,XMSU2)-
52972      &    .5D0*DBLE(QRLS*DCONJG(QRRU))*SIJ*TPROP(S23MAX,S23MIN,XMSU1))
52973      &    *(S13-XMV**2)/WPROP2
52974         ELSE
52975           WFL2=0D0
52976         ENDIF
52977       ELSE
52978         WW=0D0
52979         WFL1=0D0
52980         WFL2=0D0
52981       ENDIF
52982       IF(XXC(5).LE.10000D0) THEN
52983         WF1=2D0*ABS(QLLU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD1)
52984      &  +2D0*ABS(QLRT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSD2)
52985      &  - 2D0*DBLE(QLRT*DCONJG(QLLU))*
52986      &  SIJ*UTINT(S23MAX,S23MIN,XMSD1,XM22+S-S13-XMSD2)
52987       ELSE
52988         WF1=0D0
52989       ENDIF
52990       IF(XXC(6).LE.10000D0) THEN
52991         WF2=2D0*ABS(QRRU)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU1)
52992      &  +2D0*ABS(QRLT)**2*TINT3(S23MAX,S23MIN,XM22,S,XMSU2)
52993      &  - 2D0*DBLE(QRLT*DCONJG(QRRU))*
52994      &  SIJ*UTINT(S23MAX,S23MIN,XMSU1,XM22+S-S13-XMSU2)
52995       ELSE
52996         WF2=0D0
52997       ENDIF
52998  
52999       PYXXZ6=(WW+WF1+WF2+WFL1+WFL2)
53000  
53001       IF(PYXXZ6.LT.0D0) THEN
53002         WRITE(MSTU(11),*) ' NEGATIVE WT IN PYXXZ6 '
53003         WRITE(MSTU(11),*) (XXC(I),I=1,5)
53004         WRITE(MSTU(11),*) (XXC(I),I=6,10)
53005         WRITE(MSTU(11),*) WW,WF1,WF2,WFL1,WFL2
53006         WRITE(MSTU(11),*) S23MIN,S23MAX
53007         PYXXZ6=0D0
53008       ENDIF
53009  
53010       RETURN
53011       END
53012  
53013  
53014 C*********************************************************************
53015  
53016 C...PYXXGA
53017 C...Calculates chi0_i -> chi0_j + gamma.
53018  
53019       FUNCTION PYXXGA(C0,XM1,XM2,XMTR,XMTL)
53020  
53021 C...Double precision and integer declarations.
53022       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53023       IMPLICIT INTEGER(I-N)
53024       INTEGER PYK,PYCHGE,PYCOMP
53025  
53026 C...Local variables.
53027       DOUBLE PRECISION PYXXGA,C0,XM1,XM2,XMTR,XMTL
53028       DOUBLE PRECISION F1,F2
53029  
53030       F1=(1D0+XMTR/(1D0-XMTR)*LOG(XMTR))/(1D0-XMTR)
53031       F2=(1D0+XMTL/(1D0-XMTL)*LOG(XMTL))/(1D0-XMTL)
53032       PYXXGA=C0*((XM1**2-XM2**2)/XM1)**3
53033       PYXXGA=PYXXGA*(2D0/3D0*(F1+F2)-13D0/12D0)**2
53034  
53035       RETURN
53036       END
53037  
53038 C*********************************************************************
53039  
53040 C...PYX2XG
53041 C...Calculates the decay rate for ino -> ino + gauge boson.
53042  
53043       FUNCTION PYX2XG(C1,XM1,XM2,XM3,GX2,GLR)
53044  
53045 C...Double precision and integer declarations.
53046       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53047       IMPLICIT INTEGER(I-N)
53048       INTEGER PYK,PYCHGE,PYCOMP
53049  
53050 C...Local variables.
53051       DOUBLE PRECISION PYX2XG,XM1,XM2,XM3,GX2,GLR
53052       DOUBLE PRECISION XL,PYLAMF,C1
53053       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
53054  
53055       XMI2=XM1**2
53056       XMI3=ABS(XM1**3)
53057       XMJ2=XM2**2
53058       XMV2=XM3**2
53059       XL=PYLAMF(XMI2,XMJ2,XMV2)
53060       PYX2XG=C1/8D0/XMI3*SQRT(XL)
53061      &*(GX2*(XL+3D0*XMV2*(XMI2+XMJ2-XMV2))-
53062      &12D0*GLR*XM1*XM2*XMV2)
53063  
53064       RETURN
53065       END
53066  
53067 C*********************************************************************
53068  
53069 C...PYX2XH
53070 C...Calculates the decay rate for ino -> ino + H.
53071  
53072       FUNCTION PYX2XH(C1,XM1,XM2,XM3,GX2,GLR)
53073  
53074 C...Double precision and integer declarations.
53075       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53076       IMPLICIT INTEGER(I-N)
53077       INTEGER PYK,PYCHGE,PYCOMP
53078  
53079 C...Local variables.
53080       DOUBLE PRECISION PYX2XH,XM1,XM2,XM3
53081       DOUBLE PRECISION XL,PYLAMF,C1
53082       DOUBLE PRECISION XMI2,XMJ2,XMV2,XMI3
53083  
53084       XMI2=XM1**2
53085       XMI3=ABS(XM1**3)
53086       XMJ2=XM2**2
53087       XMV2=XM3**2
53088       XL=PYLAMF(XMI2,XMJ2,XMV2)
53089       PYX2XH=C1/8D0/XMI3*SQRT(XL)
53090      &*(GX2*(XMI2+XMJ2-XMV2)+
53091      &4D0*GLR*XM1*XM2)
53092  
53093       RETURN
53094       END
53095  
53096 C*********************************************************************
53097  
53098 C...PYHEXT
53099 C...Calculates the non-standard decay modes of the Higgs boson.
53100 C...
53101 C...Author:  Stephen Mrenna
53102 C...Last Update:  April 2001
53103 C......Allow complex values for Z,U, and V
53104  
53105       SUBROUTINE PYHEXT(KFIN,XLAM,IDLAM,IKNT)
53106  
53107 C...Double precision and integer declarations.
53108       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53109       IMPLICIT INTEGER(I-N)
53110       INTEGER PYK,PYCHGE,PYCOMP
53111 C...Parameter statement to help give large particle numbers.
53112       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53113      &KEXCIT=4000000,KDIMEN=5000000)
53114 C...Commonblocks.
53115       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53116       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53117       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
53118       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
53119       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
53120      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
53121       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYMSSM/,/PYSSMT/
53122  
53123 C...Local variables.
53124       COMPLEX*16 ZMIXC(4,4),VMIXC(2,2),UMIXC(2,2),OLPP,ORPP
53125       COMPLEX*16 QIJ,RIJ,F21K,F12K
53126       INTEGER KFIN
53127       DOUBLE PRECISION XMI,XMJ,XMF,XMW,XMW2,XMZ,AXMJ,AXMI
53128       DOUBLE PRECISION XMI2,XMI3,XMJ2
53129       DOUBLE PRECISION PYLAMF,XL,CF,EI
53130       INTEGER IDU,IFL
53131       DOUBLE PRECISION TANW,XW,AEM,C1,AS
53132       DOUBLE PRECISION PYH2XX,GHLL,GHRR,GHLR
53133       DOUBLE PRECISION XLAM(0:400)
53134       INTEGER IDLAM(400,3)
53135       INTEGER LKNT,IH,J,IJ,I,IKNT,IK
53136       INTEGER ITH(4)
53137       INTEGER KFNCHI(4),KFCCHI(2)
53138       DOUBLE PRECISION ETAH(3),CH(3),DH(3),EH(3)
53139       DOUBLE PRECISION SR2
53140       DOUBLE PRECISION BETA,ALFA
53141       DOUBLE PRECISION CBETA,SBETA,GR,GL,TANB
53142       DOUBLE PRECISION PYALEM
53143       DOUBLE PRECISION AL,AR,ALR
53144       DOUBLE PRECISION XMK,AXMK,COSA,SINA,CW,XML
53145       DOUBLE PRECISION XMUZ,ATRIT,ATRIB,ATRIL
53146       DOUBLE PRECISION XMJL,XMJR,XM1,XM2
53147       DATA ITH/25,35,36,37/
53148       DATA ETAH/1D0,1D0,-1D0/
53149       DATA SR2/1.4142136D0/
53150       DATA KFNCHI/1000022,1000023,1000025,1000035/
53151       DATA KFCCHI/1000024,1000037/
53152  
53153 C...COUNT THE NUMBER OF DECAY MODES
53154       LKNT=IKNT
53155  
53156       XMW=PMAS(24,1)
53157       XMW2=XMW**2
53158       XMZ=PMAS(23,1)
53159       XW=PARU(102)
53160       TANW = SQRT(XW/(1D0-XW))
53161       CW=SQRT(1D0-XW)
53162  
53163 C...1 - 4 DEPENDING ON Higgs species.
53164       IH=1
53165       IF(KFIN.EQ.ITH(2)) IH=2
53166       IF(KFIN.EQ.ITH(3)) IH=3
53167       IF(KFIN.EQ.ITH(4)) IH=4
53168  
53169       XMI=PMAS(KFIN,1)
53170       XMI2=XMI**2
53171       AXMI=ABS(XMI)
53172       AEM=PYALEM(XMI2)
53173       C1=AEM/XW
53174       XMI3=ABS(XMI**3)
53175  
53176       TANB=RMSS(5)
53177       BETA=ATAN(TANB)
53178       CBETA=COS(BETA)
53179       SBETA=TANB*CBETA
53180       ALFA=RMSS(18)
53181       COSA=COS(ALFA)
53182       SINA=SIN(ALFA)
53183       ATRIT=RMSS(16)
53184       ATRIB=RMSS(15)
53185       ATRIL=RMSS(17)
53186       XMUZ=-RMSS(4)
53187  
53188       DO 110 I=1,4
53189         DO 100 J=1,4
53190           ZMIXC(J,I)=DCMPLX(ZMIX(J,I),ZMIXI(J,I))
53191   100   CONTINUE
53192   110 CONTINUE
53193       DO 130 I=1,2
53194         DO 120 J=1,2
53195            VMIXC(J,I)=DCMPLX(VMIX(J,I),VMIXI(J,I))
53196            UMIXC(J,I)=DCMPLX(UMIX(J,I),UMIXI(J,I))
53197   120   CONTINUE
53198   130 CONTINUE
53199  
53200  
53201       IF(IH.EQ.4) GOTO 220
53202  
53203 C...CHECK ALL 2-BODY DECAYS TO GAUGE AND HIGGS BOSONS
53204 C...H0_K -> CHI0_I + CHI0_J
53205       EH(2)=SINA
53206       EH(1)=COSA
53207       EH(3)=CBETA
53208       DH(2)=COSA
53209       DH(1)=-SINA
53210       DH(3)=SBETA
53211       DO 150 IJ=1,4
53212         XMJ=SMZ(IJ)
53213         AXMJ=ABS(XMJ)
53214         DO 140 IK=1,IJ
53215           XMK=SMZ(IK)
53216           AXMK=ABS(XMK)
53217           IF(AXMI.GE.AXMJ+AXMK) THEN
53218             LKNT=LKNT+1
53219             QIJ=ZMIXC(IK,3)*ZMIXC(IJ,2)+
53220      &      ZMIXC(IJ,3)*ZMIXC(IK,2)-
53221      &      TANW*(ZMIXC(IK,3)*ZMIXC(IJ,1)+
53222      &      ZMIXC(IJ,3)*ZMIXC(IK,1))
53223             RIJ=ZMIXC(IK,4)*ZMIXC(IJ,2)+
53224      &      ZMIXC(IJ,4)*ZMIXC(IK,2)-
53225      &      TANW*(ZMIXC(IK,4)*ZMIXC(IJ,1)+
53226      &      ZMIXC(IJ,4)*ZMIXC(IK,1))
53227             F21K=0.5D0*DCONJG(QIJ*DH(IH)-RIJ*EH(IH))
53228             F12K=0.5D0*(QIJ*DH(IH)-RIJ*EH(IH))
53229 C...SIGN OF MASSES I,J
53230             XML=XMK*ETAH(IH)
53231             GX2=ABS(F12K)**2+ABS(F21K)**2
53232             GLR=DBLE(F12K*DCONJG(F21K))
53233             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
53234             IF(IJ.EQ.IK) XLAM(LKNT)=XLAM(LKNT)*0.5D0
53235             IDLAM(LKNT,1)=KFNCHI(IJ)
53236             IDLAM(LKNT,2)=KFNCHI(IK)
53237             IDLAM(LKNT,3)=0
53238           ENDIF
53239   140   CONTINUE
53240   150 CONTINUE
53241  
53242 C...H0_K -> CHI+_I CHI-_J
53243       DO 170 IJ=1,2
53244         XMJ=SMW(IJ)
53245         AXMJ=ABS(XMJ)
53246         DO 160 IK=1,2
53247           XMK=SMW(IK)
53248           AXMK=ABS(XMK)
53249           IF(AXMI.GE.AXMJ+AXMK) THEN
53250             LKNT=LKNT+1
53251             OLPP=DCONJG(VMIXC(IJ,1)*UMIXC(IK,2)*DH(IH) +
53252      &      VMIXC(IJ,2)*UMIXC(IK,1)*EH(IH))/SR2
53253             ORPP=(VMIXC(IK,1)*UMIXC(IJ,2)*DH(IH) +
53254      &      VMIXC(IK,2)*UMIXC(IJ,1)*EH(IH))/SR2
53255             GX2=ABS(OLPP)**2+ABS(ORPP)**2
53256             GLR=DBLE(OLPP*DCONJG(ORPP))
53257             XML=XMK*ETAH(IH)
53258             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,XML,GX2,GLR)
53259             IDLAM(LKNT,1)=KFCCHI(IJ)
53260             IDLAM(LKNT,2)=-KFCCHI(IK)
53261             IDLAM(LKNT,3)=0
53262           ENDIF
53263   160   CONTINUE
53264   170 CONTINUE
53265  
53266 C...HIGGS TO SFERMION SFERMION
53267       DO 200 IFL=1,16
53268         IF(IFL.GE.7.AND.IFL.LE.10) GOTO 200
53269         IJ=KSUSY1+IFL
53270         XMJL=PMAS(PYCOMP(IJ),1)
53271         XMJR=PMAS(PYCOMP(IJ+KSUSY1),1)
53272         IF(AXMI.GE.2D0*MIN(XMJL,XMJR)) THEN
53273           XMJ=XMJL
53274           XMJ2=XMJ**2
53275           XL=PYLAMF(XMI2,XMJ2,XMJ2)
53276           XMF=PMAS(IFL,1)
53277           EI=KCHG(IFL,1)/3D0
53278           IDU=2-MOD(IFL,2)
53279  
53280           IF(IH.EQ.1) THEN
53281             IF(IDU.EQ.1) THEN
53282               GHLL=-XMZ/CW*(0.5D0+EI*XW)*SIN(ALFA+BETA)+
53283      &        XMF**2/XMW*SINA/CBETA
53284               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)+
53285      &        XMF**2/XMW*SINA/CBETA
53286               IF(IFL.EQ.5) THEN
53287                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
53288      &          ATRIB*SINA)
53289               ELSEIF(IFL.EQ.15) THEN
53290                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*COSA-
53291      &          ATRIL*SINA)
53292               ELSE
53293                 GHLR=0D0
53294               ENDIF
53295             ELSE
53296               GHLL=XMZ/CW*(0.5D0-EI*XW)*SIN(ALFA+BETA)-
53297      &        XMF**2/XMW*COSA/SBETA
53298               GHRR=XMZ/CW*(EI*XW)*SIN(ALFA+BETA)-
53299      &        XMF**2/XMW*COSA/SBETA
53300               IF(IFL.EQ.6) THEN
53301                 GHLR=XMF/2D0/XMW/SBETA*(XMUZ*SINA-
53302      &          ATRIT*COSA)
53303               ELSE
53304                 GHLR=0D0
53305               ENDIF
53306             ENDIF
53307  
53308           ELSEIF(IH.EQ.2) THEN
53309             IF(IDU.EQ.1) THEN
53310               GHLL=XMZ/CW*(0.5D0+EI*XW)*COS(ALFA+BETA)-
53311      &        XMF**2/XMW*COSA/CBETA
53312               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
53313      &        XMF**2/XMW*COSA/CBETA
53314               IF(IFL.EQ.5) THEN
53315                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
53316      &          ATRIB*COSA)
53317               ELSEIF(IFL.EQ.15) THEN
53318                 GHLR=-XMF/2D0/XMW/CBETA*(XMUZ*SINA+
53319      &          ATRIL*COSA)
53320               ELSE
53321                 GHLR=0D0
53322               ENDIF
53323             ELSE
53324               GHLL=-XMZ/CW*(0.5D0-EI*XW)*COS(ALFA+BETA)-
53325      &        XMF**2/XMW*SINA/SBETA
53326               GHRR=-XMZ/CW*(EI*XW)*COS(ALFA+BETA)-
53327      &        XMF**2/XMW*SINA/SBETA
53328               IF(IFL.EQ.6) THEN
53329                 GHLR=-XMF/2D0/XMW/SBETA*(XMUZ*COSA+
53330      &          ATRIT*SINA)
53331               ELSE
53332                 GHLR=0D0
53333               ENDIF
53334             ENDIF
53335  
53336           ELSEIF(IH.EQ.3) THEN
53337             GHLL=0D0
53338             GHRR=0D0
53339             GHLR=0D0
53340             IF(IDU.EQ.1) THEN
53341               IF(IFL.EQ.5) THEN
53342                 GHLR=XMF/2D0/XMW*(ATRIB*TANB-XMUZ)
53343               ELSEIF(IFL.EQ.15) THEN
53344                 GHLR=XMF/2D0/XMW*(ATRIL*TANB-XMUZ)
53345               ENDIF
53346             ELSE
53347               IF(IFL.EQ.6) THEN
53348                 GHLR=XMF/2D0/XMW*(ATRIT/TANB-XMUZ)
53349               ENDIF
53350             ENDIF
53351           ENDIF
53352           IF(IH.EQ.3) GOTO 180
53353  
53354           AL=SFMIX(IFL,1)**2
53355           AR=SFMIX(IFL,2)**2
53356           ALR=SFMIX(IFL,1)*SFMIX(IFL,2)
53357           IF(IFL.LE.6) THEN
53358             CF=3D0
53359           ELSE
53360             CF=1D0
53361           ENDIF
53362  
53363           IF(AXMI.GE.2D0*XMJ) THEN
53364             LKNT=LKNT+1
53365             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
53366      &      (GHLL*AL+GHRR*AR
53367      &      +2D0*GHLR*ALR)**2
53368             IDLAM(LKNT,1)=IJ
53369             IDLAM(LKNT,2)=-IJ
53370             IDLAM(LKNT,3)=0
53371           ENDIF
53372  
53373           IF(AXMI.GE.2D0*XMJR) THEN
53374             LKNT=LKNT+1
53375             AL=SFMIX(IFL,3)**2
53376             AR=SFMIX(IFL,4)**2
53377             ALR=SFMIX(IFL,3)*SFMIX(IFL,4)
53378             XMJ=XMJR
53379             XMJ2=XMJ**2
53380             XL=PYLAMF(XMI2,XMJ2,XMJ2)
53381             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
53382      &      (GHLL*AL+GHRR*AR
53383      &      +2D0*GHLR*ALR)**2
53384             IDLAM(LKNT,1)=IJ+KSUSY1
53385             IDLAM(LKNT,2)=-(IJ+KSUSY1)
53386             IDLAM(LKNT,3)=0
53387           ENDIF
53388   180     CONTINUE
53389  
53390           IF(AXMI.GE.XMJL+XMJR) THEN
53391             LKNT=LKNT+1
53392             AL=SFMIX(IFL,1)*SFMIX(IFL,3)
53393             AR=SFMIX(IFL,2)*SFMIX(IFL,4)
53394             ALR=SFMIX(IFL,1)*SFMIX(IFL,4)+SFMIX(IFL,2)*SFMIX(IFL,3)
53395             XMJ=XMJR
53396             XMJ2=XMJ**2
53397             XL=PYLAMF(XMI2,XMJ2,XMJL**2)
53398             XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
53399      &      (GHLL*AL+GHRR*AR)**2
53400             IDLAM(LKNT,1)=IJ
53401             IDLAM(LKNT,2)=-(IJ+KSUSY1)
53402             IDLAM(LKNT,3)=0
53403             LKNT=LKNT+1
53404             IDLAM(LKNT,1)=-IJ
53405             IDLAM(LKNT,2)=IJ+KSUSY1
53406             IDLAM(LKNT,3)=0
53407             XLAM(LKNT)=XLAM(LKNT-1)
53408           ENDIF
53409         ENDIF
53410   190   CONTINUE
53411   200 CONTINUE
53412   210 CONTINUE
53413  
53414       GOTO 270
53415   220 CONTINUE
53416  
53417 C...H+ -> CHI+_I + CHI0_J
53418       DO 240 IJ=1,4
53419         XMJ=SMZ(IJ)
53420         AXMJ=ABS(XMJ)
53421         XMJ2=XMJ**2
53422         DO 230 IK=1,2
53423           XMK=SMW(IK)
53424           AXMK=ABS(XMK)
53425           IF(AXMI.GE.AXMJ+AXMK) THEN
53426             LKNT=LKNT+1
53427             OLPP=CBETA*DCONJG(ZMIXC(IJ,4)*VMIXC(IK,1)+(ZMIXC(IJ,2)+
53428      &      ZMIXC(IJ,1)*TANW)*VMIXC(IK,2)/SR2)
53429             ORPP=SBETA*(ZMIXC(IJ,3)*UMIXC(IK,1)-
53430      &      (ZMIXC(IJ,2)+ZMIXC(IJ,1)*TANW)*UMIXC(IK,2)/SR2)
53431             GX2=ABS(OLPP)**2+ABS(ORPP)**2
53432             GLR=DBLE(OLPP*DCONJG(ORPP))
53433             XLAM(LKNT)=PYH2XX(C1,XMI,XMJ,-XMK,GX2,GLR)
53434             IDLAM(LKNT,1)=KFNCHI(IJ)
53435             IDLAM(LKNT,2)=KFCCHI(IK)
53436             IDLAM(LKNT,3)=0
53437           ENDIF
53438   230   CONTINUE
53439   240 CONTINUE
53440  
53441       GL=-XMW/SR2*(SIN(2D0*BETA)-PMAS(6,1)**2/TANB/XMW2)
53442       GR=-PMAS(6,1)/SR2/XMW*(XMUZ-ATRIT/TANB)
53443       AL=0D0
53444       AR=0D0
53445       CF=3D0
53446  
53447 C...H+ -> T_1 B_1~
53448       XM1=PMAS(PYCOMP(KSUSY1+6),1)
53449       XM2=PMAS(PYCOMP(KSUSY1+5),1)
53450       IF(XMI.GE.XM1+XM2) THEN
53451         XL=PYLAMF(XMI2,XM1**2,XM2**2)
53452         LKNT=LKNT+1
53453         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
53454      &  (GL*SFMIX(6,1)*SFMIX(5,1)+GR*SFMIX(6,2)*SFMIX(5,1))**2
53455         IDLAM(LKNT,1)=KSUSY1+6
53456         IDLAM(LKNT,2)=-(KSUSY1+5)
53457         IDLAM(LKNT,3)=0
53458       ENDIF
53459  
53460 C...H+ -> T_2 B_1~
53461       XM1=PMAS(PYCOMP(KSUSY2+6),1)
53462       XM2=PMAS(PYCOMP(KSUSY1+5),1)
53463       IF(XMI.GE.XM1+XM2) THEN
53464         XL=PYLAMF(XMI2,XM1**2,XM2**2)
53465         LKNT=LKNT+1
53466         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
53467      &  (GL*SFMIX(6,3)*SFMIX(5,1)+GR*SFMIX(6,4)*SFMIX(5,1))**2
53468         IDLAM(LKNT,1)=KSUSY2+6
53469         IDLAM(LKNT,2)=-(KSUSY1+5)
53470         IDLAM(LKNT,3)=0
53471       ENDIF
53472  
53473 C...H+ -> T_1 B_2~
53474       XM1=PMAS(PYCOMP(KSUSY1+6),1)
53475       XM2=PMAS(PYCOMP(KSUSY2+5),1)
53476       IF(XMI.GE.XM1+XM2) THEN
53477         XL=PYLAMF(XMI2,XM1**2,XM2**2)
53478         LKNT=LKNT+1
53479         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
53480      &  (GL*SFMIX(6,1)*SFMIX(5,3)+GR*SFMIX(6,2)*SFMIX(5,3))**2
53481         IDLAM(LKNT,1)=KSUSY1+6
53482         IDLAM(LKNT,2)=-(KSUSY2+5)
53483         IDLAM(LKNT,3)=0
53484       ENDIF
53485  
53486 C...H+ -> T_2 B_2~
53487       XM1=PMAS(PYCOMP(KSUSY2+6),1)
53488       XM2=PMAS(PYCOMP(KSUSY2+5),1)
53489       IF(XMI.GE.XM1+XM2) THEN
53490         XL=PYLAMF(XMI2,XM1**2,XM2**2)
53491         LKNT=LKNT+1
53492         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*
53493      &  (GL*SFMIX(6,3)*SFMIX(5,3)+GR*SFMIX(6,4)*SFMIX(5,3))**2
53494         IDLAM(LKNT,1)=KSUSY2+6
53495         IDLAM(LKNT,2)=-(KSUSY2+5)
53496         IDLAM(LKNT,3)=0
53497       ENDIF
53498  
53499 C...H+ -> UL DL~
53500       GL=-XMW/SR2*SIN(2D0*BETA)
53501       DO 250 IJ=1,3,2
53502         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
53503         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
53504         IF(XMI.GE.XM1+XM2) THEN
53505           XL=PYLAMF(XMI2,XM1**2,XM2**2)
53506           LKNT=LKNT+1
53507           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
53508           IDLAM(LKNT,1)=-(KSUSY1+IJ)
53509           IDLAM(LKNT,2)=KSUSY1+IJ+1
53510           IDLAM(LKNT,3)=0
53511         ENDIF
53512   250 CONTINUE
53513  
53514 C...H+ -> EL~ NUL
53515       CF=1D0
53516       DO 260 IJ=11,13,2
53517         XM1=PMAS(PYCOMP(KSUSY1+IJ),1)
53518         XM2=PMAS(PYCOMP(KSUSY1+IJ+1),1)
53519         IF(XMI.GE.XM1+XM2) THEN
53520           XL=PYLAMF(XMI2,XM1**2,XM2**2)
53521           LKNT=LKNT+1
53522           XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2
53523           IDLAM(LKNT,1)=-(KSUSY1+IJ)
53524           IDLAM(LKNT,2)=KSUSY1+IJ+1
53525           IDLAM(LKNT,3)=0
53526         ENDIF
53527   260 CONTINUE
53528  
53529 C...H+ -> TAU1 NUTAUL
53530       XM1=PMAS(PYCOMP(KSUSY1+15),1)
53531       XM2=PMAS(PYCOMP(KSUSY1+16),1)
53532       IF(XMI.GE.XM1+XM2) THEN
53533         XL=PYLAMF(XMI2,XM1**2,XM2**2)
53534         LKNT=LKNT+1
53535         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,1)**2
53536         IDLAM(LKNT,1)=-(KSUSY1+15)
53537         IDLAM(LKNT,2)= KSUSY1+16
53538         IDLAM(LKNT,3)=0
53539       ENDIF
53540  
53541 C...H+ -> TAU2 NUTAUL
53542       XM1=PMAS(PYCOMP(KSUSY2+15),1)
53543       XM2=PMAS(PYCOMP(KSUSY1+16),1)
53544       IF(XMI.GE.XM1+XM2) THEN
53545         XL=PYLAMF(XMI2,XM1**2,XM2**2)
53546         LKNT=LKNT+1
53547         XLAM(LKNT)=CF*SQRT(XL)/4D0*C1/XMI3*GL**2*SFMIX(15,3)**2
53548         IDLAM(LKNT,1)=-(KSUSY2+15)
53549         IDLAM(LKNT,2)= KSUSY1+16
53550         IDLAM(LKNT,3)=0
53551       ENDIF
53552  
53553   270 CONTINUE
53554       IKNT=LKNT
53555       XLAM(0)=0D0
53556       DO 280 I=1,IKNT
53557         IF(XLAM(I).LE.0D0) XLAM(I)=0D0
53558         XLAM(0)=XLAM(0)+XLAM(I)
53559   280 CONTINUE
53560       IF(XLAM(0).EQ.0D0) XLAM(0)=1D-6
53561  
53562       RETURN
53563       END
53564  
53565 C*********************************************************************
53566  
53567 C...PYH2XX
53568 C...Calculates the decay rate for a Higgs to an ino pair.
53569  
53570       FUNCTION PYH2XX(C1,XM1,XM2,XM3,GX2,GLR)
53571  
53572 C...Double precision and integer declarations.
53573       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53574       IMPLICIT INTEGER(I-N)
53575       INTEGER PYK,PYCHGE,PYCOMP
53576 C...Commonblocks.
53577       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53578       SAVE /PYDAT1/
53579  
53580 C...Local variables.
53581       DOUBLE PRECISION PYH2XX,XM1,XM2,XM3,GL,GR
53582       DOUBLE PRECISION XL,PYLAMF,C1
53583       DOUBLE PRECISION XMI2,XMJ2,XMK2,XMI3
53584  
53585       XMI2=XM1**2
53586       XMI3=ABS(XM1**3)
53587       XMJ2=XM2**2
53588       XMK2=XM3**2
53589       XL=PYLAMF(XMI2,XMJ2,XMK2)
53590       PYH2XX=C1/4D0/XMI3*SQRT(XL)
53591      &*(GX2*(XMI2-XMJ2-XMK2)-
53592      &4D0*GLR*XM3*XM2)
53593       IF(PYH2XX.LT.0D0) PYH2XX=0D0
53594  
53595       RETURN
53596       END
53597  
53598 C*********************************************************************
53599  
53600 C...PYGAUS
53601 C...Integration by adaptive Gaussian quadrature.
53602 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
53603  
53604       FUNCTION PYGAUS(F, A, B, EPS)
53605  
53606 C...Double precision and integer declarations.
53607       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53608       IMPLICIT INTEGER(I-N)
53609       INTEGER PYK,PYCHGE,PYCOMP
53610  
53611 C...Local declarations.
53612       EXTERNAL F
53613       DOUBLE PRECISION F,W(12), X(12)
53614       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
53615       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
53616       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
53617       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
53618       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
53619       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
53620       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
53621       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
53622       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
53623       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
53624       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
53625       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
53626  
53627 C...The Gaussian quadrature algorithm.
53628       H = 0D0
53629       IF(B .EQ. A) GOTO 140
53630       CONST = 5D-3 / ABS(B-A)
53631       BB = A
53632   100 CONTINUE
53633       AA = BB
53634       BB = B
53635   110 CONTINUE
53636       C1 = 0.5D0*(BB+AA)
53637       C2 = 0.5D0*(BB-AA)
53638       S8 = 0D0
53639       DO 120 I = 1, 4
53640         U = C2*X(I)
53641         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
53642   120 CONTINUE
53643       S16 = 0D0
53644       DO 130 I = 5, 12
53645         U = C2*X(I)
53646         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
53647   130 CONTINUE
53648       S16 = C2*S16
53649       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
53650         H = H + S16
53651         IF(BB .NE. B) GOTO 100
53652       ELSE
53653         BB = C1
53654         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
53655         H = 0D0
53656         CALL PYERRM(18,'(PYGAUS:) too high accuracy required')
53657         GOTO 140
53658       ENDIF
53659   140 CONTINUE
53660       PYGAUS = H
53661  
53662       RETURN
53663       END
53664  
53665 C*********************************************************************
53666  
53667 C...PYGAU2
53668 C...Integration by adaptive Gaussian quadrature.
53669 C...Adapted from the CERNLIB DGAUSS routine by K.S. Kolbig.
53670 C...Carbon copy of PYGAUS, but avoids having to use it recursively.
53671  
53672       FUNCTION PYGAU2(F, A, B, EPS)
53673  
53674 C...Double precision and integer declarations.
53675       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53676       IMPLICIT INTEGER(I-N)
53677       INTEGER PYK,PYCHGE,PYCOMP
53678  
53679 C...Local declarations.
53680       EXTERNAL F
53681       DOUBLE PRECISION F,W(12), X(12)
53682       DATA X( 1) /9.6028985649753623D-1/, W( 1) /1.0122853629037626D-1/
53683       DATA X( 2) /7.9666647741362674D-1/, W( 2) /2.2238103445337447D-1/
53684       DATA X( 3) /5.2553240991632899D-1/, W( 3) /3.1370664587788729D-1/
53685       DATA X( 4) /1.8343464249564980D-1/, W( 4) /3.6268378337836198D-1/
53686       DATA X( 5) /9.8940093499164993D-1/, W( 5) /2.7152459411754095D-2/
53687       DATA X( 6) /9.4457502307323258D-1/, W( 6) /6.2253523938647893D-2/
53688       DATA X( 7) /8.6563120238783174D-1/, W( 7) /9.5158511682492785D-2/
53689       DATA X( 8) /7.5540440835500303D-1/, W( 8) /1.2462897125553387D-1/
53690       DATA X( 9) /6.1787624440264375D-1/, W( 9) /1.4959598881657673D-1/
53691       DATA X(10) /4.5801677765722739D-1/, W(10) /1.6915651939500254D-1/
53692       DATA X(11) /2.8160355077925891D-1/, W(11) /1.8260341504492359D-1/
53693       DATA X(12) /9.5012509837637440D-2/, W(12) /1.8945061045506850D-1/
53694  
53695 C...The Gaussian quadrature algorithm.
53696       H = 0D0
53697       IF(B .EQ. A) GOTO 140
53698       CONST = 5D-3 / ABS(B-A)
53699       BB = A
53700   100 CONTINUE
53701       AA = BB
53702       BB = B
53703   110 CONTINUE
53704       C1 = 0.5D0*(BB+AA)
53705       C2 = 0.5D0*(BB-AA)
53706       S8 = 0D0
53707       DO 120 I = 1, 4
53708         U = C2*X(I)
53709         S8 = S8 + W(I) * (F(C1+U) + F(C1-U))
53710   120 CONTINUE
53711       S16 = 0D0
53712       DO 130 I = 5, 12
53713         U = C2*X(I)
53714         S16 = S16 + W(I) * (F(C1+U) + F(C1-U))
53715   130 CONTINUE
53716       S16 = C2*S16
53717       IF(DABS(S16-C2*S8) .LE. EPS*(1D0+DABS(S16))) THEN
53718         H = H + S16
53719         IF(BB .NE. B) GOTO 100
53720       ELSE
53721         BB = C1
53722         IF(1D0 + CONST*ABS(C2) .NE. 1D0) GOTO 110
53723         H = 0D0
53724         CALL PYERRM(18,'(PYGAU2:) too high accuracy required')
53725         GOTO 140
53726       ENDIF
53727   140 CONTINUE
53728       PYGAU2 = H
53729  
53730       RETURN
53731       END
53732  
53733 C*********************************************************************
53734  
53735 C...PYSIMP
53736 C...Simpson formula for an integral.
53737  
53738       FUNCTION PYSIMP(Y,X0,X1,N)
53739  
53740 C...Double precision and integer declarations.
53741       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53742       IMPLICIT INTEGER(I-N)
53743       INTEGER PYK,PYCHGE,PYCOMP
53744  
53745 C...Local variables.
53746       DOUBLE PRECISION Y,X0,X1,H,S
53747       DIMENSION Y(0:N)
53748  
53749       S=0D0
53750       H=(X1-X0)/N
53751       DO 100 I=0,N-2,2
53752         S=S+Y(I)+4D0*Y(I+1)+Y(I+2)
53753   100 CONTINUE
53754       PYSIMP=S*H/3D0
53755  
53756       RETURN
53757       END
53758  
53759 C*********************************************************************
53760  
53761 C...PYLAMF
53762 C...The standard lambda function.
53763  
53764       FUNCTION PYLAMF(X,Y,Z)
53765  
53766 C...Double precision and integer declarations.
53767       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53768       IMPLICIT INTEGER(I-N)
53769       INTEGER PYK,PYCHGE,PYCOMP
53770  
53771 C...Local variables.
53772       DOUBLE PRECISION PYLAMF,X,Y,Z
53773  
53774       PYLAMF=(X-(Y+Z))**2-4D0*Y*Z
53775       IF(PYLAMF.LT.0D0) PYLAMF=0D0
53776  
53777       RETURN
53778       END
53779  
53780 C*********************************************************************
53781  
53782 C...PYTBDY
53783 C...Generates 3-body decays of gauginos.
53784  
53785       SUBROUTINE PYTBDY(IDIN)
53786  
53787 C...Double precision and integer declarations.
53788       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
53789       IMPLICIT INTEGER(I-N)
53790       INTEGER PYK,PYCHGE,PYCOMP
53791 C...Parameter statement to help give large particle numbers.
53792       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
53793      &KEXCIT=4000000,KDIMEN=5000000)
53794 C...Commonblocks.
53795       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
53796       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
53797       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
53798 C     COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
53799 C     COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
53800       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
53801      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
53802 C     SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYSSMT/
53803       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYSSMT/
53804  
53805 C...Local variables.
53806       DOUBLE PRECISION XM(5)
53807       COMPLEX*16 OLPP,ORPP,QLL,QLR,QRR,QRL,GLIJ,GRIJ,PROPZ
53808       COMPLEX*16 QLLS,QRRS,QLRS,QRLS,QLLU,QRRU,QLRT,QRLT
53809       COMPLEX*16 ZMIXC(4,4),UMIXC(2,2),VMIXC(2,2)
53810       DOUBLE PRECISION S12MIN,S12MAX,YJACO1,S23AVE,S23DF1,S23DF2
53811       DOUBLE PRECISION D1,D2,D3,P1,P2,P3,CTHE1,STHE1,CTHE3,STHE3
53812       DOUBLE PRECISION CPHI1,SPHI1
53813       DOUBLE PRECISION S23DEL,EPS
53814       DOUBLE PRECISION GOLDEN,AX,BX,CX,TOL,XMIN,R,C
53815       PARAMETER (R=0.61803399D0,C=1D0-R,TOL=1D-3)
53816       DOUBLE PRECISION F1,F2,X0,X1,X2,X3
53817       INTEGER INOID(4)
53818       DATA INOID/22,23,25,35/
53819       DATA EPS/1D-6/
53820  
53821       ID=IDIN
53822       ISKIP=1
53823       XM(1)=P(N+1,5)
53824       XM(2)=P(N+2,5)
53825       XM(3)=P(N+3,5)
53826       XM(5)=P(ID,5)
53827  
53828 C...GENERATE S12
53829       S12MIN=(XM(1)+XM(2))**2
53830       S12MAX=(XM(5)-XM(3))**2
53831       YJACO1=S12MAX-S12MIN
53832  
53833 C...Initialize some parameters
53834       XW=PARU(102)
53835       XW1=1D0-XW
53836       TANW=SQRT(XW/XW1)
53837       IZID1=0
53838       IWID1=0
53839       IZID2=0
53840       IWID2=0
53841 
53842       IA=K(N+2,2)
53843       JA=K(N+3,2)
53844 
53845 C...Mrenna: check that we are indeed decaying a SUSY particle
53846       IF(IABS(K(ID,2)).LT.KSUSY1.OR.IABS(K(ID,2)).GE.3000000) THEN
53847       
53848       ELSE
53849         DO 100 I1=1,4
53850           IF(MOD(K(N+1,2),KSUSY1).EQ.INOID(I1)) IZID1=I1
53851           IF(MOD(K(ID,2),KSUSY1).EQ.INOID(I1)) IZID2=I1
53852  100    CONTINUE
53853         IF(MOD(K(N+1,2),KSUSY1).EQ.24) IWID1=1
53854         IF(MOD(K(N+1,2),KSUSY1).EQ.37) IWID1=2
53855         IF(MOD(K(ID,2),KSUSY1).EQ.24) IWID2=1
53856         IF(MOD(K(ID,2),KSUSY1).EQ.37) IWID2=2
53857         ZM12=XM(5)**2
53858         ZM22=XM(1)**2
53859         EI=KCHG(PYCOMP(IABS(IA)),1)/3D0
53860         T3I=SIGN(1D0,EI+1D-6)/2D0
53861       ENDIF
53862 
53863       IF(MAX(ABS(IA),ABS(JA)).EQ.6) THEN
53864         ISKIP=0
53865       ELSEIF(IZID1*IZID2.NE.0) THEN
53866         SQMZ=PMAS(23,1)**2
53867         GMMZ=PMAS(23,1)*PMAS(23,2)
53868         DO 110 I=1,4
53869           ZMIXC(IZID1,I)=DCMPLX(ZMIX(IZID1,I),ZMIXI(IZID1,I))
53870           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
53871   110   CONTINUE
53872         OLPP=(ZMIXC(IZID1,3)*DCONJG(ZMIXC(IZID2,3))-
53873      &  ZMIXC(IZID1,4)*DCONJG(ZMIXC(IZID2,4)))/2D0
53874         ORPP=DCONJG(OLPP)
53875         XLL2=PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
53876         XLR2=XLL2
53877         XRR2=PMAS(PYCOMP(KSUSY2+IABS(IA)),1)**2
53878         XRL2=XRR2
53879         GLIJ=(T3I*ZMIXC(IZID1,2)-TANW*(T3I-EI)*ZMIXC(IZID1,1))*
53880      &  DCONJG(T3I*ZMIXC(IZID2,2)-TANW*(T3I-EI)*ZMIXC(IZID2,1))
53881         GRIJ=ZMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1))*(EI*TANW)**2
53882         XM1M2=SMZ(IZID1)*SMZ(IZID2)
53883         QLLS=DCMPLX((T3I-EI*XW)/XW1)*OLPP
53884         QLLU=-GLIJ
53885         QLRS=-DCMPLX((T3I-EI*XW)/XW1)*ORPP
53886         QLRT=DCONJG(GLIJ)
53887         QRLS=-DCMPLX((EI*XW)/XW1)*OLPP
53888         QRLT=GRIJ
53889         QRRS=DCMPLX((EI*XW)/XW1)*ORPP
53890         QRRU=-DCONJG(GRIJ)
53891       ELSEIF(IZID1*IWID2.NE.0.OR.IZID2*IWID1.NE.0) THEN
53892         IF(IZID1.NE.0) THEN
53893           XM1M2=SMZ(IZID1)*SMW(IWID2)
53894           IZID1=IWID2
53895           IZID2=IZID1
53896         ELSE
53897           XM1M2=SMZ(IZID2)*SMW(IWID1)
53898           IZID1=IWID1
53899         ENDIF
53900         RT2I = 1D0/SQRT(2D0)
53901         SQMZ=PMAS(24,1)**2
53902         GMMZ=PMAS(24,1)*PMAS(24,2)
53903         DO 120 I=1,2
53904           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
53905           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
53906   120   CONTINUE
53907         DO 130 I=1,4
53908           ZMIXC(IZID2,I)=DCMPLX(ZMIX(IZID2,I),ZMIXI(IZID2,I))
53909   130   CONTINUE
53910         QLLS=(DCONJG(ZMIXC(IZID2,2))*VMIXC(IZID1,1)-
53911      &  DCONJG(ZMIXC(IZID2,4))*VMIXC(IZID1,2)*RT2I)
53912         QLRS=(ZMIXC(IZID2,2)*DCONJG(UMIXC(IZID1,1))+
53913      &  ZMIXC(IZID2,3)*DCONJG(UMIXC(IZID1,2))*RT2I)
53914         EJ=KCHG(IABS(JA),1)/3D0
53915         T3J=SIGN(1D0,EJ+1D-6)/2D0
53916         QRLS=DCMPLX(0D0,0D0)
53917         QRLT=QRLS
53918         QRRS=QRLS
53919         QRRU=QRLS
53920         XRR2=1D6**2
53921         XRL2=XRR2
53922         XLR2  = PMAS(PYCOMP(KSUSY1+IABS(JA)),1)**2
53923         XLL2  = PMAS(PYCOMP(KSUSY1+IABS(IA)),1)**2
53924         IF(MOD(IA,2).EQ.0) THEN
53925           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EI-T3I)*
53926      &    TANW+ZMIXC(IZID2,2)*T3I)
53927           QLRT=-DCONJG(UMIXC(IZID1,1))*(
53928      &    ZMIXC(IZID2,1)*(EJ-T3J)*TANW+ZMIXC(IZID2,2)*T3J)
53929         ELSE
53930           QLLU=VMIXC(IZID1,1)*DCONJG(ZMIXC(IZID2,1)*(EJ-T3J)*
53931      &    TANW+ZMIXC(IZID2,2)*T3J)
53932           QLRT=-DCONJG(UMIXC(IZID1,1))*(
53933      &    ZMIXC(IZID2,1)*(EI-T3I)*TANW+ZMIXC(IZID2,2)*T3I)
53934         ENDIF
53935       ELSEIF(IWID1*IWID2.NE.0) THEN
53936         IZID1=IWID1
53937         IZID2=IWID2
53938         XM1M2=SMW(IWID1)*SMW(IWID2)
53939         SQMZ=PMAS(23,1)**2
53940         GMMZ=PMAS(23,1)*PMAS(23,2)
53941         DO 140 I=1,2
53942           VMIXC(IZID1,I)=DCMPLX(VMIX(IZID1,I),VMIXI(IZID1,I))
53943           UMIXC(IZID1,I)=DCMPLX(UMIX(IZID1,I),UMIXI(IZID1,I))
53944           VMIXC(IZID2,I)=DCMPLX(VMIX(IZID2,I),VMIXI(IZID2,I))
53945           UMIXC(IZID2,I)=DCMPLX(UMIX(IZID2,I),UMIXI(IZID2,I))
53946   140   CONTINUE
53947         OLPP=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))-
53948      &  VMIXC(IZID2,2)*DCONJG(VMIXC(IZID1,2))/2D0
53949         ORPP=-UMIXC(IZID1,1)*DCONJG(UMIXC(IZID2,1))-
53950      &  UMIXC(IZID1,2)*DCONJG(UMIXC(IZID2,2))/2D0
53951         QRLS=-DCMPLX(EI/XW1)*ORPP
53952         QLLS=DCMPLX((T3I-XW*EI)/XW/XW1)*ORPP
53953         QRRS=-DCMPLX(EI/XW1)*OLPP
53954         QLRS=DCMPLX((T3I-XW*EI)/XW/XW1)*OLPP
53955         IF(MOD(IA,2).EQ.0) THEN
53956           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)-1),1)**2
53957           QLRT=-UMIXC(IZID2,1)*DCONJG(UMIXC(IZID1,1))*DCMPLX(T3I/XW)
53958         ELSE
53959           XLR2=PMAS(PYCOMP(KSUSY1+IABS(IA)+1),1)**2
53960           QLRT=-VMIXC(IZID2,1)*DCONJG(VMIXC(IZID1,1))*DCMPLX(T3I/XW)
53961         ENDIF
53962       ELSEIF(MOD(K(N+1,2),KSUSY1).EQ.21.OR.MOD(K(ID,2),KSUSY1).EQ.21)
53963      &THEN
53964         ISKIP=0
53965       ELSE
53966         ISKIP=0
53967       ENDIF
53968  
53969       IF(ISKIP.NE.0) THEN
53970         WTMAX=0D0
53971         DO 160 KT=1,100
53972           S12=S12MIN+YJACO1*(KT-1)/99
53973           S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
53974      &    *(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
53975           S23DF1=(S12-XM(2)**2-XM(1)**2)**2
53976      &    -(2D0*XM(1)*XM(2))**2
53977           S23DF2=(S12-XM(3)**2-XM(5)**2)**2
53978      &    -(2D0*XM(3)*XM(5))**2
53979           S23DF1=S23DF1*EPS
53980           S23DF2=S23DF2*EPS
53981           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
53982           S23DEL=S23DEL/EPS
53983           S23MIN=S23AVE-S23DEL
53984           S23MAX=S23AVE+S23DEL
53985           YJACO2=S23MAX-S23MIN
53986           TH=S12
53987           DO 150 KS=1,100
53988             S23=S23MIN+YJACO2*(KS-1)/99
53989             SH=S23
53990             UH=ZM12+ZM22-SH-TH
53991             WU2 = (UH-ZM12)*(UH-ZM22)
53992             WT2 = (TH-ZM12)*(TH-ZM22)
53993             WS2 = XM1M2*SH
53994             PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
53995             PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
53996             QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
53997             QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
53998             QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
53999             QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
54000             WT0=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
54001      &      (ABS(QRL)**2+ABS(QLR)**2)*WT2+
54002      &      2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
54003             IF(WT0.GT.WTMAX) WTMAX=WT0
54004   150     CONTINUE
54005   160   CONTINUE
54006  
54007         WTMAX=WTMAX*1.05D0
54008       ENDIF
54009  
54010 C...FIND S12*
54011       AX=S12MIN
54012       CX=S12MAX
54013       BX=S12MIN+0.5D0*YJACO1
54014       X0=AX
54015       X3=CX
54016       IF(ABS(CX-BX).GT.ABS(BX-AX))THEN
54017         X1=BX
54018         X2=BX+C*(CX-BX)
54019       ELSE
54020         X2=BX
54021         X1=BX-C*(BX-AX)
54022       ENDIF
54023  
54024 C...SOLVE FOR F1 AND F2
54025       S23DF1=(X1-XM(2)**2-XM(1)**2)**2
54026      &-(2D0*XM(1)*XM(2))**2
54027       S23DF2=(X1-XM(3)**2-XM(5)**2)**2
54028      &-(2D0*XM(3)*XM(5))**2
54029       S23DF1=S23DF1*EPS
54030       S23DF2=S23DF2*EPS
54031       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
54032       F1=-2D0*S23DEL/EPS
54033       S23DF1=(X2-XM(2)**2-XM(1)**2)**2
54034      &-(2D0*XM(1)*XM(2))**2
54035       S23DF2=(X2-XM(3)**2-XM(5)**2)**2
54036      &-(2D0*XM(3)*XM(5))**2
54037       S23DF1=S23DF1*EPS
54038       S23DF2=S23DF2*EPS
54039       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
54040       F2=-2D0*S23DEL/EPS
54041  
54042   170 IF(ABS(X3-X0).GT.TOL*(ABS(X1)+ABS(X2)))THEN
54043 C...Possibility of infinite loop with .LT.; changed to .LE. (SKANDS)
54044         IF(F2.LE.F1)THEN
54045           X0=X1
54046           X1=X2
54047           X2=R*X1+C*X3
54048           F1=F2
54049           S23DF1=(X2-XM(2)**2-XM(1)**2)**2
54050      &    -(2D0*XM(1)*XM(2))**2
54051           S23DF2=(X2-XM(3)**2-XM(5)**2)**2
54052      &    -(2D0*XM(3)*XM(5))**2
54053           S23DF1=S23DF1*EPS
54054           S23DF2=S23DF2*EPS
54055           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X2)
54056           F2=-2D0*S23DEL/EPS
54057         ELSE
54058           X3=X2
54059           X2=X1
54060           X1=R*X2+C*X0
54061           F2=F1
54062           S23DF1=(X1-XM(2)**2-XM(1)**2)**2
54063      &    -(2D0*XM(1)*XM(2))**2
54064           S23DF2=(X1-XM(3)**2-XM(5)**2)**2
54065      &    -(2D0*XM(3)*XM(5))**2
54066           S23DF1=S23DF1*EPS
54067           S23DF2=S23DF2*EPS
54068           S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*X1)
54069           F1=-2D0*S23DEL/EPS
54070         ENDIF
54071         GOTO 170
54072       ENDIF
54073 C...WE WANT THE MAXIMUM, NOT THE MINIMUM
54074       IF(F1.LT.F2)THEN
54075         GOLDEN=-F1
54076         XMIN=X1
54077       ELSE
54078         GOLDEN=-F2
54079         XMIN=X2
54080       ENDIF
54081  
54082       IKNT=0
54083   180 S12=S12MIN+PYR(0)*YJACO1
54084       IKNT=IKNT+1
54085 C...GENERATE S23
54086       S23AVE=XM(2)**2+XM(3)**2-(S12+XM(2)**2-XM(1)**2)
54087      &*(S12+XM(3)**2-XM(5)**2)/(2D0*S12)
54088       S23DF1=(S12-XM(2)**2-XM(1)**2)**2
54089      &-(2D0*XM(1)*XM(2))**2
54090       S23DF2=(S12-XM(3)**2-XM(5)**2)**2
54091      &-(2D0*XM(3)*XM(5))**2
54092       S23DF1=S23DF1*EPS
54093       S23DF2=S23DF2*EPS
54094       S23DEL=SQRT(MAX(0D0,S23DF1*S23DF2))/(2D0*S12)
54095       S23DEL=S23DEL/EPS
54096       S23MIN=S23AVE-S23DEL
54097       S23MAX=S23AVE+S23DEL
54098       YJACO2=S23MAX-S23MIN
54099       S23=S23MIN+PYR(0)*YJACO2
54100  
54101 C...CHECK THE SAMPLING
54102       IF(IKNT.GT.100) THEN
54103         WRITE(MSTU(11),*) ' IKNT > 100 IN PYTBDY '
54104         GOTO 190
54105       ENDIF
54106       IF(YJACO2.LT.PYR(0)*GOLDEN) GOTO 180
54107  
54108       IF(ISKIP.EQ.0) GOTO 190
54109  
54110       SH=S23
54111       TH=S12
54112       UH=ZM12+ZM22-SH-TH
54113  
54114       WU2 = (UH-ZM12)*(UH-ZM22)
54115       WT2 = (TH-ZM12)*(TH-ZM22)
54116       WS2 = XM1M2*SH
54117       PROPZ2 = (SH-SQMZ)**2 + GMMZ**2
54118       PROPZ=DCMPLX(SH-SQMZ,-GMMZ)/DCMPLX(PROPZ2)
54119  
54120       QLL=QLLS*PROPZ+QLLU/DCMPLX(UH-XLL2)
54121       QLR=QLRS*PROPZ+QLRT/DCMPLX(TH-XLR2)
54122       QRL=QRLS*PROPZ+QRLT/DCMPLX(TH-XRL2)
54123       QRR=QRRS*PROPZ+QRRU/DCMPLX(UH-XRR2)
54124 c      QLL=DCMPLX((T3I-EI*XW)/XW1)*OLPP*PROPZ-GLIJ/DCMPLX(UH-XML2)
54125 c      QLR=-DCMPLX((T3I-EI*XW)/XW1)*ORPP*PROPZ+DCONJG(GLIJ)
54126 c     &/DCMPLX(TH-XML2)
54127 c      QRL=-DCMPLX((EI*XW)/XW1)*OLPP*PROPZ+GRIJ/DCMPLX(TH-XMR2)
54128 c      QRR=DCMPLX((EI*XW)/XW1)*ORPP*PROPZ
54129 c     &-DCONJG(GRIJ)/DCMPLX(UH-XMR2)
54130       WT=-((ABS(QLL)**2+ABS(QRR)**2)*WU2+
54131      &(ABS(QRL)**2+ABS(QLR)**2)*WT2+
54132      &2D0*DBLE(QLR*DCONJG(QLL)+QRL*DCONJG(QRR))*WS2)
54133  
54134       IF(WT.LT.PYR(0)*WTMAX) GOTO 180
54135       IF(WT.GT.WTMAX) PRINT*,' WT > WTMAX ',WT,WTMAX
54136  
54137   190 D3=(XM(5)**2+XM(3)**2-S12)/(2D0*XM(5))
54138       D1=(XM(5)**2+XM(1)**2-S23)/(2D0*XM(5))
54139       D2=XM(5)-D1-D3
54140       P1=SQRT(D1*D1-XM(1)**2)
54141       P2=SQRT(D2*D2-XM(2)**2)
54142       P3=SQRT(D3*D3-XM(3)**2)
54143       CTHE1=2D0*PYR(0)-1D0
54144       ANG1=2D0*PYR(0)*PARU(1)
54145       CPHI1=COS(ANG1)
54146       SPHI1=SIN(ANG1)
54147       ARG=1D0-CTHE1**2
54148       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
54149       STHE1=SQRT(ARG)
54150       P(N+1,1)=P1*STHE1*CPHI1
54151       P(N+1,2)=P1*STHE1*SPHI1
54152       P(N+1,3)=P1*CTHE1
54153       P(N+1,4)=D1
54154  
54155 C...GET CPHI3
54156       ANG3=2D0*PYR(0)*PARU(1)
54157       CPHI3=COS(ANG3)
54158       SPHI3=SIN(ANG3)
54159       CTHE3=(P2**2-P1**2-P3**2)/2D0/P1/P3
54160       ARG=1D0-CTHE3**2
54161       IF(ARG.LT.0D0.AND.ARG.GT.-1D-3) ARG=0D0
54162       STHE3=SQRT(ARG)
54163       P(N+3,1)=-P3*STHE3*CPHI3*CTHE1*CPHI1
54164      &+P3*STHE3*SPHI3*SPHI1
54165      &+P3*CTHE3*STHE1*CPHI1
54166       P(N+3,2)=-P3*STHE3*CPHI3*CTHE1*SPHI1
54167      &-P3*STHE3*SPHI3*CPHI1
54168      &+P3*CTHE3*STHE1*SPHI1
54169       P(N+3,3)=P3*STHE3*CPHI3*STHE1
54170      &+P3*CTHE3*CTHE1
54171       P(N+3,4)=D3
54172  
54173       DO 200 I=1,3
54174         P(N+2,I)=-P(N+1,I)-P(N+3,I)
54175   200 CONTINUE
54176       P(N+2,4)=D2
54177  
54178       RETURN
54179       END
54180  
54181  
54182 C*********************************************************************
54183  
54184 C...PYTECM
54185 C...Finds the s-hat dependent eigenvalues of the inverse propagator
54186 C...matrix for gamma, Z, techni-rho, and techni-omega to optimize the
54187 C...phase space generation.  Extended to include techni-a meson, and
54188 C...to return the width.
54189  
54190       SUBROUTINE PYTECM(SMIN,SMOU,WIDO,IOPT)
54191  
54192 C...Double precision and integer declarations.
54193       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54194       IMPLICIT INTEGER(I-N)
54195       INTEGER PYK,PYCHGE,PYCOMP
54196 C...Parameter statement to help give large particle numbers.
54197       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
54198      &KEXCIT=4000000,KDIMEN=5000000)
54199 C...Commonblocks.
54200       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54201       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54202       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
54203       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
54204       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/,/PYTCSM/
54205  
54206 C...Local variables.
54207       DOUBLE PRECISION AR(5,5),WR(5),ZR(5,5),ZI(5,5),WORK(12,12),
54208      &AT(5,5),WI(5),FV1(5),FV2(5),FV3(5),SH,AEM,TANW,CT2W,QUPD,ALPRHT,
54209      &FAR,FAO,FZR,FZO,SHR,R1,R2,S1,S2,WDTP(0:400),WDTE(0:400,0:5),WX(5)
54210       INTEGER i,j,ierr
54211 
54212       SH=SMIN
54213       SHR=SQRT(SH)
54214       AEM=PYALEM(SH)
54215  
54216       SINW=MIN(SQRT(PARU(102)),1D0)
54217       COSW=SQRT(1D0-SINW**2)
54218       TANW=SINW/COSW
54219       CT2W=(1D0-2D0*PARU(102))/(2D0*PARU(102)/TANW)
54220       QUPD=2D0*RTCM(2)-1D0
54221 
54222       ALPRHT=2.16D0*(3D0/DBLE(ITCM(1)))
54223       FAR=SQRT(AEM/ALPRHT)
54224       FAO=FAR*QUPD
54225       FZR=FAR*CT2W
54226       FZO=-FAO*TANW
54227       FZX=-FAR/RTCM(47)/(2D0*SINW*COSW)
54228       FWR=FAR/(2D0*SINW)
54229       FWX=-FWR/RTCM(47)
54230 
54231       DO 110 I=1,5
54232         DO 100 J=1,5
54233           AT(I,J)=0D0
54234   100   CONTINUE
54235   110 CONTINUE
54236 
54237 C...NC
54238       IF(IOPT.EQ.1) THEN
54239         AR(1,1) = SH
54240         AR(2,2) = SH-PMAS(23,1)**2
54241         AR(3,3) = SH-PMAS(PYCOMP(KTECHN+113),1)**2
54242         AR(4,4) = SH-PMAS(PYCOMP(KTECHN+223),1)**2
54243         AR(5,5) = SH-PMAS(PYCOMP(KTECHN+115),1)**2
54244         AR(1,2) = 0D0
54245         AR(2,1) = 0D0
54246         AR(1,3) = SH*FAR
54247         AR(3,1) = AR(1,3)
54248         AR(1,4) = SH*FAO
54249         AR(4,1) = AR(1,4)
54250         AR(2,3) = SH*FZR
54251         AR(3,2) = AR(2,3)
54252         AR(2,4) = SH*FZO
54253         AR(4,2) = AR(2,4)
54254         AR(3,4) = 0D0
54255         AR(4,3) = 0D0
54256         AR(2,5) = SH*FZX
54257         AR(5,2) = AR(2,5)
54258         AR(1,5) = 0D0
54259         AR(5,1) = AR(1,5)
54260         AR(3,5) = 0D0
54261         AR(5,3) = AR(3,5)
54262         AR(4,5) = 0D0
54263         AR(5,4) = AR(4,5)
54264         CALL PYWIDT(23,SH,WDTP,WDTE)
54265         AT(2,2) = WDTP(0)*SHR
54266         CALL PYWIDT(KTECHN+113,SH,WDTP,WDTE)
54267         AT(3,3) = WDTP(0)*SHR
54268         CALL PYWIDT(KTECHN+223,SH,WDTP,WDTE)
54269         AT(4,4) = WDTP(0)*SHR
54270         CALL PYWIDT(KTECHN+115,SH,WDTP,WDTE)
54271         AT(5,5) = WDTP(0)*SHR
54272         IDIM=5
54273 C...CC
54274       ELSE
54275         AR(1,1) = SH-PMAS(24,1)**2
54276         AR(2,2) = SH-PMAS(PYCOMP(KTECHN+213),1)**2
54277         AR(3,3) = SH-PMAS(PYCOMP(KTECHN+215),1)**2
54278         AR(1,2) = SH*FWR
54279         AR(2,1) = AR(1,2)
54280         AR(1,3) = SH*FWX
54281         AR(3,1) = AR(1,3)
54282         AR(2,3) = 0D0
54283         AR(3,2) = 0D0
54284         CALL PYWIDT(24,SH,WDTP,WDTE)
54285         AT(1,1) = WDTP(0)*SHR
54286         CALL PYWIDT(KTECHN+213,SH,WDTP,WDTE)
54287         AT(2,2) = WDTP(0)*SHR
54288         CALL PYWIDT(KTECHN+215,SH,WDTP,WDTE)
54289         AT(3,3) = WDTP(0)*SHR
54290         IDIM=3
54291       ENDIF
54292       CALL PYEICG(IDIM,IDIM,AR,AT,WR,WI,0,ZR,ZI,FV1,FV2,FV3,IERR)
54293 
54294       IMIN=1
54295       SXMN=1D20
54296       DO 120 I=1,IDIM
54297         WX(I)=SQRT(ABS(SH-WR(I)))
54298         WR(I)=ABS(WR(I))
54299         IF(WR(I).LT.SXMN) THEN
54300           SXMN=WR(I)
54301           IMIN=I
54302         ENDIF
54303   120 CONTINUE
54304       SMOU=WX(IMIN)**2
54305       WIDO=WI(IMIN)/SHR
54306 
54307       RETURN
54308       END
54309 C*********************************************************************
54310  
54311 C...PYXDIN
54312 C...Universal Extra Dimensions Model (UED)
54313 C...Initialize the xd masses and widths
54314 C...M. ELKACIMI 4/03/2006
54315 C...Modified for inclusion in Pythia Apr 2008, H. Przysiezniak, P. Skands
54316 
54317       SUBROUTINE PYXDIN
54318 
54319 C...Double precision and integer declarations.
54320       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54321       IMPLICIT INTEGER(I-N)
54322       INTEGER PYK,PYCHGE,PYCOMP
54323 C...Commonblocks.
54324       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54325       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54326       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
54327 C...UED Pythia common
54328       COMMON/PYPUED/IUED(0:99),RUED(0:99)
54329 
54330 C...SAVE statements
54331       SAVE /PYDAT1/,/PYDAT3/,/PYSUBS/,/PYPUED/
54332 
54333 C...Print out some info about the UED model
54334       WRITE(MSTU(11),7000) 
54335      &    ' ',
54336      &    '********** PYXDIN: initialization of UED ******************',
54337      &    ' ',
54338      &    'Universal Extra Dimensions (UED) switched on ',
54339      &    ' ',
54340      &    'This implementation is courtesy of',
54341      &    '       M.Elkacimi, D.Goujdami, H.Przysiezniak,  ', 
54342      &    '       see [hep-ph/0602198] (Les Houches 2005) ',
54343      &    ' ',
54344      &    'The model follows [hep-ph/0012100] (Appelquist, Cheng,   ',
54345      &    'Dobrescu), with gravity-mediated decay widths calculated in',
54346      &    '[hep-ph/0001335] (DeRujula, Donini, Gavela, Rigolin) and ',
54347      &    'radiative corrections to the KK masses from [hep/ph0204342]',
54348      &    '(Cheng, Matchev, Schmaltz).'
54349       WRITE(MSTU(11),7000) 
54350      &    ' ',
54351      &    'SM particles can propagate into one small extra dimension  ',
54352      &    'of size 1/R = RUED(1) GeV. For gravity-mediated decays, the',
54353      &    'graviton is further allowed to propagate into N = IUED(4)', 
54354      &    'large (eV^-1) extra dimensions.'
54355       WRITE(MSTU(11),7000) 
54356      &    ' ',
54357      &    'The switches and parameters for UED are:',
54358      &    '    IUED(1): (D=0) main UED ON(=1)/OFF(=0) switch ',
54359      &    '    IUED(2): (D=0) Grav. med. decays are set ON(=1)/OFF(=0)',
54360      &    '    IUED(3): (D=5) number of quark flavours',
54361      &    '    IUED(4): (D=6) number of large extra dimensions into',
54362      &    '                   which the graviton propagates',
54363      &    '    IUED(5): (D=0) Lambda (=0) or Lambda*R (=1) is used',
54364      &    '    IUED(6): (D=1) With/without rad.corrs. (=1/0)',
54365      &    '                                                 ',
54366      &    '    RUED(1): (D=1000.) curvature 1/R of the UED (in GeV)',
54367      &    '    RUED(2): (D=5000.) gravity mediated (GM) scale (in GeV)',
54368      &    '    RUED(3): (D=20000.) Lambda cutoff scale (in GeV). Used',
54369      &    '                        when IUED(5)=0',
54370      &    '    RUED(4): (D=20.) Lambda*R. Used when IUED(5)=1'
54371       WRITE(MSTU(11),7000) 
54372      &    ' ',
54373      &    'N.B.: the Higgs mass is also a free parameter of the UED ',
54374      &    'model, but is set through pmas(25,1).',
54375      &    ' '
54376 
54377 C...Hardcoded switch, required by current implementation     
54378       CALL PYGIVE('MSTP(42)=0')
54379 
54380 C...Turn the gravity mediated decay (for the KK pphoton) ON or OFF
54381       IF(IUED(2).EQ.0) CALL PYGIVE('MDCY(C5100022,1)=0')
54382 
54383 C...Calculated the radiative corrections to the KK particle masses
54384       CALL PYUEDC
54385 
54386 C...Initialize the graviton mass
54387 C...only if the KK particles decays gravitationally
54388       IF(IUED(2).EQ.1) CALL PYGRAM(0)
54389 
54390       WRITE(MSTU(11),7000) 
54391      &    '********** PYXDIN: UED initialization completed  ***********'
54392 
54393 C...Format to use for comments
54394  7000 FORMAT(' * ',A)
54395 
54396       RETURN
54397       END
54398 C*********************************************************************
54399  
54400 C...PYUEDC
54401 C...Auxiliary to PYXDIN
54402 C...Mass kk states radiative corrections 
54403 C...Radiative corrections are included (hep/ph0204342)
54404 
54405       SUBROUTINE PYUEDC
54406 
54407 C...Double precision and integer declarations.
54408       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54409       IMPLICIT INTEGER(I-N)
54410       INTEGER PYK,PYCHGE,PYCOMP
54411 
54412       PARAMETER(KKPART=25,KKFLA=450)
54413 
54414 C...UED Pythia common
54415       COMMON/PYPUED/IUED(0:99),RUED(0:99)
54416 C...Pythia common: particles properties
54417       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)      
54418 C...Parameters.
54419       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54420 C...Decay information.
54421       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
54422 C...Resonance width and secondary decay treatment.
54423       COMMON/PYINT4/MWID(500),WIDS(500,5)
54424       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
54425 
54426 C...Local variables
54427       DOUBLE PRECISION PI,QUP,QDW
54428       DOUBLE PRECISION WDTP,WDTE
54429       DIMENSION WDTP(0:400),WDTE(0:400,0:5)
54430       DOUBLE PRECISION Q2,ALPHEM,ALPHS,SW2,CW2,RMKK,RMKK2,ZETA3
54431       DOUBLE PRECISION DSMG2,LOGLAM,DBMG2
54432       DOUBLE PRECISION DBMQU,DBMQD,DBMQDO,DBMLDO,DBMLE
54433       DOUBLE PRECISION DSMA2,DSMB2,DBMA2,DBMB2
54434       DOUBLE PRECISION RFACT,RMW,RMZ,RMZ2,RMW2,A,B,C,SQRDEL,DMB2,DMA2
54435       DOUBLE PRECISION SWW1,CWW1
54436       DOUBLE PRECISION RMGST,RMPHST,RMZST,RMWST
54437       DOUBLE PRECISION RMDQST,RMSQUS,RMSQDS,RMLSLD,RMLSLE
54438       DOUBLE PRECISION SW21,CW21,SW021,CW021
54439       COMMON/SW1/SW021,CW021
54440 C...UED related declarations:
54441 C...equivalences between ordered particles (451->475)
54442 C...and UED particle code (5 000 000 + id)
54443       DIMENSION IUEDEQ(475)
54444       DATA (IUEDEQ(I),I=451,475)/
54445 C...Singlet quarks      
54446      & 6100001,6100002,6100003,6100004,6100005,6100006,
54447 C...Doublet quarks
54448      & 5100001,5100002,5100003,5100004,5100005,5100006, 
54449 C...Singlet leptons
54450      & 6100011,6100013,6100015,                         
54451 C...Doublet leptons
54452      & 5100012,5100011,5100014,5100013,5100016,5100015,
54453 C...Gauge boson KK excitations
54454      & 5100021,5100022,5100023,5100024/                 
54455 
54456 C...N.B. rinv=rued(1)
54457       IF(RUED(1).LE.0.)THEN
54458          WRITE(MSTU(11),*) 'PYUEDC: RINV < 0 : ',RUED(1)
54459          WRITE(MSTU(11),*) 'DEFAULT KK STATE MASSES ARE TAKEN '
54460          RETURN
54461       ENDIF
54462 
54463       PI=DACOS(-1.D0)
54464       RMZ  = PMAS(23,1)
54465       RMZ2 = RMZ**2
54466       RMW  = PMAS(24,1)
54467       RMW2 = RMW**2
54468       ALPHEM = PARU(101)
54469       QUP = 2./3.
54470       QDW = -1./3.
54471 
54472 c...qt is q-tilde, qs is q-star
54473 c...strong coupling value
54474       Q2 = RUED(1)**2
54475       ALPHS=PYALPS(Q2)
54476       
54477 c...weak mixing angle
54478       SW2=PARU(102)
54479       CW2=1D0-PARU(102)
54480       
54481 c...for the mass corrections
54482       RMKK = RUED(1)
54483       RMKK2 = RMKK**2
54484       ZETA3= 1.2
54485       
54486 C... Either fix the cutoff scale LAMUED
54487       IF(IUED(5).EQ.0)THEN
54488          LOGLAM = DLOG((RUED(3)*(1./RUED(1)))**2)
54489 C... or the ratio LAMUED/RINV (=product Lambda*R)
54490       ELSEIF(IUED(5).EQ.1)THEN
54491          LOGLAM = DLOG(RUED(4)**2)
54492       ELSE
54493          WRITE(MSTU(11),*) '(PYUEDC:) INVALID VALUE FOR IUED(5)'
54494          CALL PYSTOP(6000)
54495       ENDIF
54496 
54497 C...Calculate the radiative corrections for the UED KK masses
54498       IF(IUED(6).EQ.1)THEN
54499          RFACT=1.D0
54500 C...or induce a minute mass difference
54501 C...keeping the UED KK mass values nearly equal to 1/R
54502       ELSEIF(IUED(6).EQ.0)THEN
54503          RFACT=0.01D0
54504       ELSE
54505          WRITE(MSTU(11),*) '(PYUEDC:) INVALID VALUE FOR IUED(6)'
54506          CALL PYSTOP(6001)
54507       ENDIF
54508 
54509 c...Take into account only the strong interactions:
54510 
54511 c...The space bulk corrections :
54512       DSMG2 = RMKK2*(-1.5)*(ALPHS/4./PI)*ZETA3/PI**2
54513 c...The boundary terms:
54514       DBMG2 = RMKK2*(23./2.)*(ALPHS/4./PI)*LOGLAM
54515 
54516 c...Mass corrections for fermions are extracted from 
54517 c...Phys. Rev. D66 036005(2002)9
54518       DBMQDO=RMKK*(3.*(ALPHS/4./PI)+27./16.*(ALPHEM/4./PI/SW2)
54519      .     +1./16.*(ALPHEM/4./PI/CW2))*LOGLAM
54520       DBMQU=RMKK*(3.*(ALPHS/4./PI)
54521      .     +(ALPHEM/4./PI/CW2))*LOGLAM
54522       DBMQD=RMKK*(3.*(ALPHS/4./PI)
54523      .     +0.25*(ALPHEM/4./PI/CW2))*LOGLAM
54524       
54525       DBMLDO=RMKK *((27./16.)*(ALPHEM/4./PI/SW2)+9./16.*
54526      .     (ALPHEM/4./PI/CW2))*LOGLAM
54527       DBMLE=RMKK *(9./4.*(ALPHEM/4./PI/CW2))*LOGLAM
54528       
54529 c...Vector boson masss matrix diagonalization
54530       DBMB2 = RMKK2*(-1./6.)*(ALPHEM/4./PI/CW2)*LOGLAM
54531       DSMB2 = RMKK2*(-39./2.)*(ALPHEM/4./PI**3/CW2)*ZETA3
54532       DBMA2 = RMKK2*(15./2.)*(ALPHEM/4./PI/SW2)*LOGLAM
54533       DSMA2 = RMKK2*(-5./2.)*(ALPHEM/4./PI**3/SW2)*ZETA3
54534       
54535 c...Elements of the mass matrix
54536       A = RMZ2*SW2 + DBMB2 + DSMB2
54537       B = RMZ2*CW2 + DBMA2 + DSMA2
54538       C = RMZ2*DSQRT(SW2*CW2)
54539       SQRDEL = DSQRT( (A-B)**2 + 4*C**2 )
54540 
54541 c...Eigenvalues: corrections to X1 and Z1 masses
54542       DMB2 = (A+B-SQRDEL)/2. 
54543       DMA2 = (A+B+SQRDEL)/2. 
54544       
54545 c...Rotation angles     
54546       SWW1 = 2*C
54547       CWW1 = A-B-SQRDEL
54548 C...Weinberg angle
54549       SW21= SWW1**2/(SWW1**2 + CWW1**2)
54550       CW21= 1. - SW21
54551       
54552       SW021=SW21
54553       CW021=CW21
54554       
54555 c...Masses:
54556       RMGST = RMKK+RFACT*(DSQRT(RMKK2 + DSMG2 + DBMG2)-RMKK)
54557       
54558       RMDQST=RMKK+RFACT*DBMQDO
54559       RMSQUS=RMKK+RFACT*DBMQU
54560       RMSQDS=RMKK+RFACT*DBMQD
54561 
54562 C...Note: MZ mass is included in ma2
54563       RMPHST= RMKK+RFACT*(DSQRT(RMKK2 + DMB2)-RMKK)
54564       RMZST = RMKK+RFACT*(DSQRT(RMKK2 + DMA2)-RMKK)
54565       RMWST = RMKK+RFACT*(DSQRT(RMKK2 + DBMA2 + DSMA2 + RMW**2)-RMKK)
54566 
54567       RMLSLD=RMKK+RFACT*DBMLDO
54568       RMLSLE=RMKK+RFACT*DBMLE
54569 
54570       DO 100 IPART=1,5,2
54571         PMAS(KKFLA+IPART,1)=RMSQDS
54572  100  CONTINUE
54573       DO 110 IPART=2,6,2
54574         PMAS(KKFLA+IPART,1)=RMSQUS
54575  110  CONTINUE
54576       DO 120 IPART=7,12
54577         PMAS(KKFLA+IPART,1)=RMDQST
54578  120  CONTINUE
54579       DO 130 IPART=13,15
54580         PMAS(KKFLA+IPART,1)=RMLSLE
54581  130  CONTINUE
54582       DO 140 IPART=16,21
54583         PMAS(KKFLA+IPART,1)=RMLSLD
54584  140  CONTINUE
54585       PMAS(KKFLA+22,1)=RMGST
54586       PMAS(KKFLA+23,1)=RMPHST
54587       PMAS(KKFLA+24,1)=RMZST
54588       PMAS(KKFLA+25,1)=RMWST
54589 
54590       WRITE(MSTU(11),7000) ' PYUEDC: ',
54591      & 'UED Mass Spectrum (GeV) :'
54592       WRITE(MSTU(11),7100) '   m(d*_S,s*_S,b*_S) = ',RMSQDS
54593       WRITE(MSTU(11),7100) '   m(u*_S,c*_S,t*_S) = ',RMSQUS
54594       WRITE(MSTU(11),7100) '   m(q*_D)           = ',RMDQST
54595       WRITE(MSTU(11),7100) '   m(l*_S)           = ',RMLSLE
54596       WRITE(MSTU(11),7100) '   m(l*_D)           = ',RMLSLD
54597       WRITE(MSTU(11),7100) '   m(g*)             = ',RMGST
54598       WRITE(MSTU(11),7100) '   m(gamma*)         = ',RMPHST
54599       WRITE(MSTU(11),7100) '   m(Z*)             = ',RMZST
54600       WRITE(MSTU(11),7100) '   m(W*)             = ',RMWST
54601       WRITE(MSTU(11),7000) ' '
54602 
54603 C...Initialize widths, branching ratios and life time
54604       DO 199 IPART=1,25
54605         KC=KKFLA+IPART
54606         IF(MWID(KC).EQ.1.AND.MDCY(KC,1).EQ.1)THEN
54607           CALL PYWIDT(IUEDEQ(KC),PMAS(KC,1)**2,WDTP,WDTE)
54608           IF(WDTP(0).LE.0)THEN
54609              WRITE(MSTU(11),*) 
54610      +             'PYUEDC WARNING: TOTAL WIDTH = 0 --> KC ', KC
54611              WRITE(MSTU(11),*) 'INITIAL VALUE IS TAKEN',PMAS(KC,2)
54612              GOTO 199
54613           ELSE
54614             DO 180 IDC=1,MDCY(KC,3)
54615               IC=IDC+MDCY(KC,2)-1
54616               IF(MDME(IC,1).EQ.1.AND.WDTP(IDC).GT.0.)THEN
54617 C...Life time in cm^{-1}.  paru(3) gev^{-1} -> fm
54618                 PMAS(KC,4)=PARU(3)/WDTP(IDC)*1.D-12
54619                 BRAT(IC)=WDTP(IDC)/WDTP(0)
54620               ENDIF
54621  180        CONTINUE
54622           ENDIF
54623         ENDIF
54624  199  CONTINUE
54625 
54626 C...Format to use for comments
54627  7000 FORMAT(' * ',A)
54628  7100 FORMAT(' * ',A,F12.3)
54629 
54630       END
54631 C********************************************************************
54632 C...PYXUED
54633 C... Last change: 
54634 C... 13/01/2009 : H. Przysiezniak Frey, P. Skands
54635 C... Original version:
54636 C... M. El Kacimi
54637 C... 05/07/2005
54638 C     Universal Extra Dimensions Subprocess cross sections  
54639 C     The expressions used are from atl-com-phys-2005-003
54640 C     What is coded here is shat**2/pi * dsigma/dt = |M|**2
54641 C     For each UED subprocess, the color flow used is the same 
54642 C     as the equivalent QCD subprocess. Different configuration
54643 C     color flows are considered to have the same probability. 
54644 C
54645 C     The Xsection is calculated following ATL-PHYS-PUB-2005-003
54646 C     by G.Azuelos and P.H.Beauchemin.
54647 C
54648 C     This routine is called from pysigh.
54649 
54650       SUBROUTINE PYXUED(NCHN,SIGS)
54651 
54652 C...Double precision and integer declarations
54653       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54654       IMPLICIT INTEGER(I-N)
54655 C...
54656       INTEGER NGRDEC
54657       COMMON/DECMOD/NGRDEC
54658 C...
54659       PARAMETER(KKPART=25,KKFLA=450)
54660 C...Commonblocks
54661       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
54662       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
54663       COMMON/PYINT1/MINT(400),VINT(400)
54664       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
54665       COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA,
54666      &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4,
54667      &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW,
54668      &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR
54669       SAVE /PYDAT2/,/PYINT1/,/PYINT3/,/PYPARS/
54670 C...UED Pythia common
54671       COMMON/PYPUED/IUED(0:99),RUED(0:99)
54672 C...Local arrays and complex variables
54673       DOUBLE PRECISION SHAT,SP,THAT,TP,UHAT,UP,ALPHAS
54674      + ,FAC1,XMNKK,XMUED,SIGS
54675       INTEGER NCHN
54676 
54677 C...Return if UED not switched on
54678       IF (IUED(1).LE.0) THEN 
54679         RETURN 
54680       ENDIF
54681 
54682 C...Energy scale of the parton processus
54683 C...taken equal to the mass of the final state kk
54684 c      Q2=XMNKK**2      
54685 
54686 C...Default Mandlestam variable (u/t)hatp=(u/t)hatp-xmnkk**2
54687       XMNKK=PMAS(KKFLA+23,1) 
54688 
54689 C...To compare the cross section with phys-pub-2005-03
54690 C...(no radiative corrections), 
54691 C...take xmnkk=rinv  and q2=rinv**2
54692 c++lnk
54693 C...n.b. (rinv=rued(1))
54694 c      IF(NGRDEC.EQ.1)XMNKK=RUED(0)
54695       IF(NGRDEC.EQ.1)XMNKK=RUED(1)
54696 c--lnk
54697 
54698       SHAT=VINT(44)
54699       SP=SHAT
54700       THAT=VINT(45)
54701       TP=THAT-XMNKK**2
54702       UHAT=VINT(46)
54703       UP=UHAT-XMNKK**2
54704       BETA34=DSQRT(1.D0-4.D0*XMNKK**2/SHAT)
54705       PI=DACOS(-1.D0)
54706 c++lnk
54707 c      Q2=RUED(0)**2+(TP*UP-RUED(0)**4)/SP
54708       Q2=RUED(1)**2+(TP*UP-RUED(1)**4)/SP
54709 
54710 c      IF(NGRDEC.EQ.1)Q2=RUED(0)**2
54711       IF(NGRDEC.EQ.1)Q2=RUED(1)**2
54712 c--lnk
54713 
54714 C...Strong coupling value
54715       ALPHAS=PYALPS(Q2)
54716 
54717       IF(ISUB.EQ.311)THEN
54718 C...gg --> g* g*
54719          FAC1=9./8.*ALPHAS**2/(SP*TP*UP)**2
54720          XMUED=FAC1*(XMNKK**4*(6.*TP**4+18.*TP**3*UP+
54721      &        24.*TP**2*UP**2+18.*TP*UP**3+6.*UP**4)
54722      &        +XMNKK**2*(6.*TP**4*UP+12.*TP**3*UP**2+
54723      &        12.*TP**2*UP**3+6*TP*UP**4)
54724      &        +2.*TP**6+6*TP**5*UP+13*TP**4*UP**2+
54725      &        15.*TP**3*UP**3+13*TP**2*UP**4+
54726      &        6.*TP*UP**5+2.*UP**6)
54727          NCHN=NCHN+1
54728          ISIG(NCHN,1)=21
54729          ISIG(NCHN,2)=21
54730 C...Three color flow configurations (qcd g+g->g+g)
54731          XCOL=PYR(0)
54732          IF(XCOL.LE.1./3.)THEN
54733             ISIG(NCHN,3)=1
54734          ELSEIF(XCOL.LE.2./3.)THEN
54735             ISIG(NCHN,3)=2
54736          ELSE
54737             ISIG(NCHN,3)=3
54738          ENDIF
54739          SIGH(NCHN)=COMFAC*XMUED
54740       ELSEIF(ISUB.EQ.312)THEN
54741 C...q + g -> q*_D + g*, q*_S + g*
54742 C...(the two channels have the same cross section)
54743          FAC1=-1./36.*ALPHAS**2/(SP*TP*UP)**2
54744          XMUED=FAC1*(12.*SP*UP**5+5.*SP**2*UP**4+22.*SP**3*UP**3+
54745      &          5.*SP**4*UP**2+12.*SP**5*UP)
54746          XMUED=COMFAC*2.*XMUED 
54747 
54748           DO 190 I=MMINA,MMAXA
54749             IF(I.EQ.0.OR.IABS(I).GT.10) GOTO 190
54750             DO 180 ISDE=1,2
54751 
54752               IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180
54753               IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180
54754               NCHN=NCHN+1
54755               ISIG(NCHN,ISDE)=I
54756               ISIG(NCHN,3-ISDE)=21
54757               ISIG(NCHN,3)=1
54758               SIGH(NCHN)=XMUED
54759               IF(PYR(0).GT.0.5)ISIG(NCHN,3)=2
54760   180       CONTINUE
54761   190     CONTINUE
54762 
54763       ELSEIF(ISUB.EQ.313)THEN
54764 C...qi + qj -> q*_Di + q*_Dj, q*_Si + q*_Sj 
54765 C...(the two channels have the same cross section)
54766 C...qi and qj have the same charge sign 
54767          DO 100 I=MMIN1,MMAX1
54768             IA=IABS(I)
54769             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 100
54770             DO 101 J=MMIN2,MMAX2
54771                JA=IABS(J)
54772                IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).
54773      &           EQ.0) GOTO 101
54774                IF(J*I.LE.0)GOTO 101
54775                NCHN=NCHN+1
54776                ISIG(NCHN,1)=I
54777                ISIG(NCHN,2)=J
54778                IF(J.EQ.I)THEN
54779                   FAC1=1./72.*ALPHAS**2/(TP*UP)**2
54780                   XMUED=FAC1*
54781      &                  (XMNKK**2*(8*TP**3+4./3.*TP**2*UP+4./3.*TP*UP**2
54782      &                 +8.*UP**3)+8.*TP**4+56./3.*TP**3*UP+
54783      &                 20.*TP**2*UP**2+56./3.*
54784      &                 TP*UP**3+8.*UP**4)
54785                   SIGH(NCHN)=COMFAC*2.*XMUED
54786                   ISIG(NCHN,3)=1
54787                   IF(PYR(0).GT.0.5)ISIG(NCHN,3)=2
54788                ELSE
54789                   FAC1=2./9.*ALPHAS**2/TP**2
54790                   XMUED=FAC1*(-XMNKK**2*SP+SP**2+0.25*TP**2)     
54791                   SIGH(NCHN)=COMFAC*2.*XMUED
54792                   ISIG(NCHN,3)=1
54793                ENDIF
54794  101       CONTINUE
54795  100    CONTINUE
54796       ELSEIF(ISUB.EQ.314)THEN
54797 C...g + g -> q*_D + q*_Dbar, q*_S + q*_Sbar 
54798 C...(the two channels have the same cross section)
54799          NCHN=NCHN+1
54800          ISIG(NCHN,1)=21
54801          ISIG(NCHN,2)=21
54802          ISIG(NCHN,3)=INT(1.5+PYR(0))
54803 
54804          FAC1=5./6.*ALPHAS**2/(SP*TP*UP)**2
54805          XMUED=FAC1*(-XMNKK**4*(8.*TP*UP**3+8.*TP**2*UP**2+8.*TP**3*UP
54806      +          +4.*UP**4+4*TP**4)
54807      +          -XMNKK**2*(0.5*TP*UP**4+4.*TP**2*UP**3+15./2.*TP**3
54808      +          *UP**2+ 4.*TP**4*UP)+TP*UP**5-0.25*TP**2*UP**4+
54809      +          2.*TP**3*UP**3-0.25*TP**4*UP**2+TP**5*UP)
54810          
54811          SIGH(NCHN)=COMFAC*XMUED 
54812 C...has been multiplied by 5: all possible quark flavors in final state
54813 
54814       ELSEIF(ISUB.EQ.315)THEN
54815 C...q + qbar -> q*_D + q*_Dbar, q*_S + q*_Sbar
54816 C...(the two channels have the same cross section)
54817           DO 141 I=MMIN1,MMAX1
54818             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
54819      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 141
54820             DO 142 J=MMIN2,MMAX2
54821                IF(J.EQ.0.OR.ABS(I).NE.ABS(J).OR.I*J.GE.0) GOTO 142
54822                FAC1=2./9.*ALPHAS**2*1./(SP*TP)**2
54823                XMUED=FAC1*(XMNKK**2*SP*(4.*TP**2-SP*TP-SP**2)+
54824      &              4.*TP**4+3.*SP*TP**3+11./12.*TP**2*SP**2-
54825      &              2./3.*SP**3*TP+SP**4)                  
54826                NCHN=NCHN+1
54827                ISIG(NCHN,1)=I
54828                ISIG(NCHN,2)=-I
54829                ISIG(NCHN,3)=1
54830                SIGH(NCHN)=COMFAC*2.*XMUED
54831  142        CONTINUE
54832  141      CONTINUE
54833       ELSEIF(ISUB.EQ.316)THEN
54834 C...q + qbar' -> q*_D + q*_Sbar' 
54835          FAC1=2./9.*ALPHAS**2
54836          DO 300 I=MMIN1,MMAX1
54837             IA=IABS(I)
54838             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 300
54839             DO 301 J=MMIN2,MMAX2
54840                JA=IABS(J)
54841                IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 301
54842                IF(J*I.GE.0.OR.IA.EQ.JA)GOTO 301
54843                NCHN=NCHN+1
54844                ISIG(NCHN,1)=I
54845                ISIG(NCHN,2)=J
54846                ISIG(NCHN,3)=1
54847                FAC1=2./9.*ALPHAS**2/TP**2
54848                XMUED=FAC1*(-XMNKK**2*SP+SP**2+0.25*TP**2)
54849                SIGH(NCHN)=COMFAC*XMUED 
54850  301       CONTINUE
54851  300   CONTINUE
54852                
54853       ELSEIF(ISUB.EQ.317)THEN
54854 C...q + qbar' -> q*_D + q*_Dbar' , q*_S + q*_Sbar' 
54855 C...(the two channels have the same cross section)
54856          DO 400 I=MMIN1,MMAX1
54857             IA=IABS(I)
54858             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 400     
54859             DO 401 J=MMIN1,MMAX1
54860                JA=IABS(J)
54861                IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 401
54862                IF(J*I.GE.0.OR.IA.EQ.JA)GOTO 401
54863                NCHN=NCHN+1
54864                ISIG(NCHN,1)=I
54865                ISIG(NCHN,2)=J
54866                ISIG(NCHN,3)=1
54867                FAC1=1./18.*ALPHAS**2/TP**2
54868                XMUED=FAC1*(4.*XMNKK**2*SP+4.*SP**2+8.*SP*TP+5*TP**2)  
54869                SIGH(NCHN)=COMFAC*2.*XMUED 
54870  401       CONTINUE
54871  400   CONTINUE
54872       ELSEIF(ISUB.EQ.318)THEN
54873 C...q + q' -> q*_D + q*_S'
54874          DO 500 I=MMIN1,MMAX1
54875             IA=IABS(I)
54876             IF(I.EQ.0.OR.IA.GT.MSTP(58).OR.KFAC(1,I).EQ.0) GOTO 500   
54877             DO 501 J=MMIN2,MMAX2
54878                JA=IABS(J)
54879                IF(J.EQ.0.OR.JA.GT.MSTP(58).OR.KFAC(2,J).EQ.0) GOTO 501 
54880                IF(J*I.LE.0)GOTO 501
54881                IF(IA.EQ.JA)THEN
54882                   NCHN=NCHN+1
54883                   ISIG(NCHN,1)=I
54884                   ISIG(NCHN,2)=J
54885                   ISIG(NCHN,3)=INT(1.5+PYR(0))
54886                   FAC1=1./36.*ALPHAS**2/(TP*UP)**2
54887                XMUED=FAC1*(-8.*XMNKK**2*(TP**3+TP**2*UP+TP*UP**2+UP**3)
54888      &                 +8.*TP**4+4.*TP**2*UP**2+8.*UP**4)
54889                   SIGH(NCHN)=COMFAC*XMUED              
54890                ELSE
54891                   NCHN=NCHN+1
54892                   ISIG(NCHN,1)=I
54893                   ISIG(NCHN,2)=J
54894                   ISIG(NCHN,3)=1
54895                   FAC1=1./18.*ALPHAS**2/TP**2
54896                   XMUED=FAC1*(4.*XMNKK**2*SP+4.*SP**2+8.*SP*TP+5*TP**2)
54897                   SIGH(NCHN)=COMFAC*2.*XMUED
54898                ENDIF
54899  501        CONTINUE
54900  500     CONTINUE
54901       ELSEIF(ISUB.EQ.319)THEN
54902 C...q + qbar -> q*_D' +q*_Dbar' , q*_S' + q*_Sbar'
54903 C...(the two channels have the same cross section)
54904           DO 741 I=MMIN1,MMAX1
54905             IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR.
54906      &      KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 741
54907             DO 742 J=MMIN2,MMAX2
54908                IF(J.EQ.0.OR.IABS(J).NE.IABS(I).OR.J*I.GT.0) GOTO 742
54909                FAC1=16./9.*ALPHAS**2*1./(SP)**2
54910                XMUED=FAC1*(2.*XMNKK**2*SP+SP**2+2.*SP*TP+2.*TP**2)
54911                NCHN=NCHN+1
54912                ISIG(NCHN,1)=I
54913                ISIG(NCHN,2)=-I
54914                ISIG(NCHN,3)=1
54915                SIGH(NCHN)=COMFAC*2.*XMUED
54916  742        CONTINUE
54917  741      CONTINUE   
54918        
54919       ENDIF
54920 
54921       RETURN
54922       END
54923 C*********************************************************************
54924  
54925 C...PYGRAM
54926 C...Universal Extra Dimensions Model (UED)
54927 C...Computation of the Graviton mass.
54928 
54929       SUBROUTINE PYGRAM(IN)
54930 
54931 C...Double precision and integer declarations
54932       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
54933       IMPLICIT INTEGER(I-N)
54934 
54935 C...Pythia commonblocks
54936       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
54937       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)      
54938 C...UED Pythia common
54939       COMMON/PYPUED/IUED(0:99),RUED(0:99)
54940 
54941 C...Local variables
54942       INTEGER KCFLA,NMAX
54943       PARAMETER(KCFLA=450,NMAX=5000)
54944       DIMENSION YVEC(5000),RESVEC(5000)
54945       COMMON/INTSAV/YSAV,YMAX,RESMAX
54946       COMMON/UEDGRA/XMPLNK,XMD,RINV,NDIM
54947       COMMON/KAPPA/XKAPPA
54948 
54949 C...External function (used in call to PYGAUS)
54950       EXTERNAL PYGRAW
54951 
54952 C...SAVE statements
54953       SAVE /PYDAT1/,/PYDAT2/,/PYPUED/,/INTSAV/
54954 
54955 C...Initialization
54956       NDIM=IUED(4)
54957       RINV=RUED(1)
54958       XMD=RUED(2)
54959       PI=PARU(1)
54960 
54961 C...Initialize for numerical integration
54962       XMPLNK=2.4D+18
54963       XKAPPA=DSQRT(2.D0)/XMPLNK      
54964 
54965 C...For NDIM=2, compute graviton mass distribution numerically
54966       IF(NDIM.EQ.2)THEN
54967         
54968 C...  For first event: tabulate distribution of stepwise integrals:
54969 C...  int_y1^y2 dy dGamma/dy , with y = MG*/MgammaKK
54970         IF(IN.EQ.0)THEN
54971           RESMAX = 0D0
54972           YMAX   = 0D0
54973           DO 100 I=1,NMAX
54974             YSAV = (I-0.5)/DBLE(NMAX)
54975             TOL       = 1D-6
54976 C...Integral of PYGRAW from 0 to 1, with precision TOL, for given YSAV
54977             RESINT    = PYGAUS(PYGRAW,0D0,1D0,TOL)
54978             YVEC(I)   = YSAV
54979             RESVEC(I) = RESINT
54980 C...  Save max of distribution (for accept/reject below)
54981             IF(RESINT.GT.RESMAX)THEN
54982               RESMAX = RESINT
54983               YMAX   = YVEC(I)
54984             ENDIF
54985  100      CONTINUE
54986         ENDIF
54987         
54988 C...  Generate Mg for each graviton (1D0 ensures a minimal open phase space)
54989         PCUJET=1D0
54990         KCGAKK=KCFLA+23
54991         XMGAMK=PMAS(KCGAKK,1)
54992         
54993 C...  Pick random graviton mass, accept according to stored integrals
54994         AMMAX=DSQRT(XMGAMK**2-2D0*XMGAMK*PCUJET)
54995  110    RMG=AMMAX*PYR(0)
54996         X=RMG/XMGAMK        
54997 
54998 C...  Bin enumeration starts at 1, but make sure always in range
54999         IBIN=INT(NMAX*X)+1
55000         IBIN=MIN(IBIN,NMAX)        
55001         IF(RESVEC(IBIN)/RESMAX.LT.PYR(0)) GOTO 110
55002         
55003 C...  For NDIM=4 and 6, the analytical expression for the
55004 C...  graviton mass distribution integral is used.
55005       ELSEIF(NDIM.EQ.4.OR.NDIM.EQ.6)THEN
55006         
55007 C...  Ensure minimal open phase space (max(mG*) < m(gamma*))
55008         PCUJET=1D0
55009         
55010 C...  KK photon (?) compressed code and mass
55011         KCGAKK=KCFLA+23
55012         XMGAMK=PMAS(KCGAKK,1)
55013         
55014 C...  Find maximum of (dGamma/dMg)
55015         IF(IN.EQ.0)THEN
55016           RESMAX=0D0
55017           YMAX=0D0
55018           DO 120 I=1,NMAX-1 
55019             Y=I/DBLE(NMAX)
55020             RESINT=Y**(NDIM-3)*(1D0/(1D0-Y**2))*(1D0+DCOS(PI*Y))
55021             IF(RESINT.GE.RESMAX)THEN
55022               RESMAX=RESINT
55023               YMAX=Y
55024             ENDIF
55025  120      CONTINUE
55026         ENDIF
55027         
55028 C...  Pick random graviton mass, accept/reject
55029         AMMAX=DSQRT(XMGAMK**2-2D0*XMGAMK*PCUJET)
55030  130    RMG=AMMAX*PYR(0)
55031         X=RMG/XMGAMK
55032         DGADMG=X**(NDIM-3)*(1./(1.-X**2))*(1.+DCOS(PI*X))
55033         IF(DGADMG/RESMAX.LT.PYR(0)) GOTO 130
55034         
55035 C...  If the user has not chosen N=2,4 or 6, STOP
55036       ELSE
55037         WRITE(MSTU(11),*) '(PYGRAM:) BAD VALUE N(LARGE XD) =',NDIM,
55038      &       ' (MUST BE 2, 4, OR 6) '
55039         CALL PYSTOP(6002)
55040       ENDIF
55041       
55042 C...  Now store the sampled Mg
55043       PMAS(39,1)=RMG
55044       
55045       RETURN
55046       END
55047       
55048 C*********************************************************************
55049  
55050 C...PYGRAW
55051 C...Universal Extra Dimensions Model (UED)
55052 C...
55053 C...See Macesanu etal. hep-ph/0201300 eqns.31 and 34.
55054 C...
55055 C...Integrand for the KK boson -> SM boson + graviton
55056 C...graviton mass distribution (and gravity mediated total width),
55057 C...which contains (see 0201300 and below for the full product)
55058 C...the gravity mediated partial decay width Gamma(xx, yy)
55059 C... i.e. GRADEN(YY)*PYWDKK(XXA)
55060 C...  where xx is exclusive to gravity
55061 C...  yy=m_Graviton/m_bosonKK denotes the Universal extra dimension
55062 C...  and xxa=sqrt(xx**2+yy**2) refers to all of the extra dimensions.
55063 
55064       DOUBLE PRECISION FUNCTION PYGRAW(YIN)
55065 
55066 C...Double precision and integer declarations
55067       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
55068       IMPLICIT INTEGER (I-N)
55069 
55070 C...Pythia commonblocks
55071       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55072 
55073 C...Local UED commonblocks and variables
55074       COMMON/UEDGRA/XMPLNK,XMD,RINV,NDIM
55075       COMMON/INTSAV/YSAV,YMAX,RESMAX
55076 
55077 C...SAVE statements
55078       SAVE /PYDAT1/,/INTSAV/
55079 
55080 C...External: Pythia's Gamma function
55081       EXTERNAL PYGAMM
55082 
55083 C...Pi
55084       PI=PARU(1)
55085       PI2=PI*PI
55086 
55087       YMIN=1.D-9/RINV
55088       YY=YSAV
55089       XX=DSQRT(1.-YY**2)*YIN
55090       DJAC=(1.-YMIN)*DSQRT(1.-YY**2)
55091       FAC=2.*PI**((NDIM-1.)/2.)*XMPLNK**2*RINV**NDIM/XMD**(NDIM+2)
55092       XND=(NDIM-1.)/2.
55093       GAMMN=PYGAMM(XND)
55094       FAC=FAC/GAMMN
55095       XXA=DSQRT(XX**2+YY**2)
55096       GRADEN=4./PI2 * (YY**2/(1.-YY**2)**2)*(1.+DCOS(PI*YY))
55097 
55098       PYGRAW=DJAC*
55099      +     FAC*XX**(NDIM-2)*GRADEN*PYWDKK(XXA)
55100 
55101       RETURN
55102       END
55103 C*********************************************************************
55104 
55105 C...PYWDKK
55106 C...Universal Extra Dimensions Model (UED)
55107 C...
55108 C...Multiplied by the square modulus of a form factor
55109 C...(see GRADEN in function PYGRAW)
55110 C...PYWDKK is the KK boson -> SM boson + graviton
55111 C...gravity mediated partial decay width Gamma(xx, yy)
55112 C...  where xx is exclusive to gravity
55113 C...  yy=m_Graviton/m_bosonKK denotes the Universal extra dimension
55114 C...  and xxa=sqrt(xx**2+yy**2) refers to all of the extra dimensions
55115 C...
55116 C...N.B. The Feynman rules for the couplings of the graviton fields
55117 C...to the UED fields are related to the corresponding couplings of
55118 C...the graviton fields to the SM fields by the form factor.
55119 
55120       DOUBLE PRECISION FUNCTION PYWDKK(X)
55121 
55122 C...Double precision and integer declarations
55123       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
55124       IMPLICIT INTEGER (I-N)
55125 
55126 C...Pythia commonblocks
55127       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
55128       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
55129 
55130 C...Local UED commonblocks and variables
55131       COMMON/UEDGRA/XMPLNK,XMD,RINV,NDIM
55132       COMMON/KAPPA/XKAPPA
55133 
55134 C...SAVE statements
55135       SAVE /PYDAT1/,/PYDAT2/,/UEDGRA/,/KAPPA/
55136 
55137       PI=PARU(1)
55138 
55139 C...gamma* mass 473
55140       KCQKK=473
55141       XMNKK=PMAS(KCQKK,1)
55142 
55143 C...Bosons partial width Macesanu hep-ph/0201300
55144       PYWDKK=XKAPPA**2/(96.*PI)*XMNKK**3/X**4*
55145      +          ((1.-X**2)**2*(1.+3.*X**2+6.*X**4))
55146 
55147       RETURN
55148       END
55149  
55150 C*********************************************************************
55151  
55152 C...PYEIGC
55153 C...Finds eigenvalues of a general complex matrix
55154 C
55155 C     THIS SUBROUTINE CALLS THE RECOMMENDED SEQUENCE OF
55156 C     SUBROUTINES FROM THE EIGENSYSTEM SUBROUTINE PACKAGE (EISPACK)
55157 C     TO FIND THE EIGENVALUES AND EIGENVECTORS (IF DESIRED)
55158 C     OF A COMPLEX GENERAL MATRIX.
55159 C
55160 C     ON INPUT
55161 C
55162 C        NM  MUST BE SET TO THE ROW DIMENSION OF THE TWO-DIMENSIONAL
55163 C        ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
55164 C        DIMENSION STATEMENT.
55165 C
55166 C        N  IS THE ORDER OF THE MATRIX  A=(AR,AI).
55167 C
55168 C        AR  AND  AI  CONTAIN THE REAL AND IMAGINARY PARTS,
55169 C        RESPECTIVELY, OF THE COMPLEX GENERAL MATRIX.
55170 C
55171 C        MATZ  IS AN INTEGER VARIABLE SET EQUAL TO ZERO IF
55172 C        ONLY EIGENVALUES ARE DESIRED.  OTHERWISE IT IS SET TO
55173 C        ANY NON-ZERO INTEGER FOR BOTH EIGENVALUES AND EIGENVECTORS.
55174 C
55175 C     ON OUTPUT
55176 C
55177 C        WR  AND  WI  CONTAIN THE REAL AND IMAGINARY PARTS,
55178 C        RESPECTIVELY, OF THE EIGENVALUES.
55179 C
55180 C        ZR  AND  ZI  CONTAIN THE REAL AND IMAGINARY PARTS,
55181 C        RESPECTIVELY, OF THE EIGENVECTORS IF MATZ IS NOT ZERO.
55182 C
55183 C        IERR  IS AN INTEGER OUTPUT VARIABLE SET EQUAL TO AN ERROR
55184 C           COMPLETION CODE DESCRIBED IN THE DOCUMENTATION FOR COMQR
55185 C           AND COMQR2.  THE NORMAL COMPLETION CODE IS ZERO.
55186 C
55187 C        FV1, FV2, AND  FV3  ARE TEMPORARY STORAGE ARRAYS.
55188 C
55189 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
55190 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
55191 C
55192 C     THIS VERSION DATED AUGUST 1983.
55193 C
55194  
55195       SUBROUTINE PYEICG(NM,N,AR,AI,WR,WI,MATZ,ZR,ZI,FV1,FV2,FV3,IERR)
55196  
55197       INTEGER N,NM,IS1,IS2,IERR,MATZ
55198       DOUBLE PRECISION AR(5,5),AI(5,5),WR(5),WI(5),ZR(5,5),ZI(5,5),
55199      X       FV1(5),FV2(5),FV3(5)
55200       IF (N .LE. NM) GOTO 100
55201       IERR = 10 * N
55202       GOTO 120
55203 C
55204   100 CALL  PYCBAL(NM,N,AR,AI,IS1,IS2,FV1)
55205       CALL  PYCRTH(NM,N,IS1,IS2,AR,AI,FV2,FV3)
55206       IF (MATZ .NE. 0) GOTO 110
55207 C     .......... FIND EIGENVALUES ONLY ..........
55208       CALL  PYCMQR(NM,N,IS1,IS2,AR,AI,WR,WI,IERR)
55209       GOTO 120
55210 C     .......... FIND BOTH EIGENVALUES AND EIGENVECTORS ..........
55211   110 CALL  PYCMQ2(NM,N,IS1,IS2,FV2,FV3,AR,AI,WR,WI,ZR,ZI,IERR)
55212       IF (IERR .NE. 0) GOTO 120
55213       CALL  PYCBA2(NM,N,IS1,IS2,FV1,N,ZR,ZI)
55214   120 RETURN
55215       END
55216  
55217 C*********************************************************************
55218  
55219 C...PYCMQR
55220 C...Auxiliary to PYEICG.
55221 C
55222 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
55223 C     ALGOL PROCEDURE  COMLR, NUM. MATH. 12, 369-376(1968) BY MARTIN
55224 C     AND WILKINSON.
55225 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 396-403(1971).
55226 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
55227 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
55228 C
55229 C     THIS SUBROUTINE FINDS THE EIGENVALUES OF A COMPLEX
55230 C     UPPER HESSENBERG MATRIX BY THE QR METHOD.
55231 C
55232 C     ON INPUT
55233 C
55234 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
55235 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
55236 C          DIMENSION STATEMENT.
55237 C
55238 C        N IS THE ORDER OF THE MATRIX.
55239 C
55240 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
55241 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
55242 C          SET LOW=1, IGH=N.
55243 C
55244 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
55245 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
55246 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN
55247 C          INFORMATION ABOUT THE UNITARY TRANSFORMATIONS USED IN
55248 C          THE REDUCTION BY  CORTH, IF PERFORMED.
55249 C
55250 C     ON OUTPUT
55251 C
55252 C        THE UPPER HESSENBERG PORTIONS OF HR AND HI HAVE BEEN
55253 C          DESTROYED.  THEREFORE, THEY MUST BE SAVED BEFORE
55254 C          CALLING  COMQR  IF SUBSEQUENT CALCULATION OF
55255 C          EIGENVECTORS IS TO BE PERFORMED.
55256 C
55257 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
55258 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
55259 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
55260 C          FOR INDICES IERR+1,...,N.
55261 C
55262 C        IERR IS SET TO
55263 C          ZERO       FOR NORMAL RETURN,
55264 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
55265 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
55266 C
55267 C     CALLS PYCDIV FOR COMPLEX DIVISION.
55268 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
55269 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
55270 C
55271 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
55272 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
55273 C
55274 C     THIS VERSION DATED AUGUST 1983.
55275 C
55276  
55277       SUBROUTINE PYCMQR(NM,N,LOW,IGH,HR,HI,WR,WI,IERR)
55278  
55279       INTEGER I,J,L,N,EN,LL,NM,IGH,ITN,ITS,LOW,LP1,ENM1,IERR
55280       DOUBLE PRECISION HR(5,5),HI(5,5),WR(5),WI(5)
55281       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
55282      X       PYTHAG
55283  
55284       IERR = 0
55285       IF (LOW .EQ. IGH) GOTO 130
55286 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
55287       L = LOW + 1
55288 C
55289       DO 120 I = L, IGH
55290          LL = MIN0(I+1,IGH)
55291          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 120
55292          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
55293          YR = HR(I,I-1) / NORM
55294          YI = HI(I,I-1) / NORM
55295          HR(I,I-1) = NORM
55296          HI(I,I-1) = 0.0D0
55297 C
55298          DO 100 J = I, IGH
55299             SI = YR * HI(I,J) - YI * HR(I,J)
55300             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
55301             HI(I,J) = SI
55302   100    CONTINUE
55303 C
55304          DO 110 J = LOW, LL
55305             SI = YR * HI(J,I) + YI * HR(J,I)
55306             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
55307             HI(J,I) = SI
55308   110    CONTINUE
55309 C
55310   120 CONTINUE
55311 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
55312   130 DO 140 I = 1, N
55313          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
55314          WR(I) = HR(I,I)
55315          WI(I) = HI(I,I)
55316   140 CONTINUE
55317 C
55318       EN = IGH
55319       TR = 0.0D0
55320       TI = 0.0D0
55321       ITN = 30*N
55322 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
55323   150 IF (EN .LT. LOW) GOTO 320
55324       ITS = 0
55325       ENM1 = EN - 1
55326 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
55327 C                FOR L=EN STEP -1 UNTIL LOW D0 -- ..........
55328   160 DO 170 LL = LOW, EN
55329          L = EN + LOW - LL
55330          IF (L .EQ. LOW) GOTO 180
55331          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
55332      X            + DABS(HR(L,L)) + DABS(HI(L,L))
55333          TST2 = TST1 + DABS(HR(L,L-1))
55334          IF (TST2 .EQ. TST1) GOTO 180
55335   170 CONTINUE
55336 C     .......... FORM SHIFT ..........
55337   180 IF (L .EQ. EN) GOTO 300
55338       IF (ITN .EQ. 0) GOTO 310
55339       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 200
55340       SR = HR(EN,EN)
55341       SI = HI(EN,EN)
55342       XR = HR(ENM1,EN) * HR(EN,ENM1)
55343       XI = HI(ENM1,EN) * HR(EN,ENM1)
55344       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 210
55345       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
55346       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
55347       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
55348       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 190
55349       ZZR = -ZZR
55350       ZZI = -ZZI
55351   190 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
55352       SR = SR - XR
55353       SI = SI - XI
55354       GOTO 210
55355 C     .......... FORM EXCEPTIONAL SHIFT ..........
55356   200 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
55357       SI = 0.0D0
55358 C
55359   210 DO 220 I = LOW, EN
55360          HR(I,I) = HR(I,I) - SR
55361          HI(I,I) = HI(I,I) - SI
55362   220 CONTINUE
55363 C
55364       TR = TR + SR
55365       TI = TI + SI
55366       ITS = ITS + 1
55367       ITN = ITN - 1
55368 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
55369       LP1 = L + 1
55370 C
55371       DO 240 I = LP1, EN
55372          SR = HR(I,I-1)
55373          HR(I,I-1) = 0.0D0
55374          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
55375          XR = HR(I-1,I-1) / NORM
55376          WR(I-1) = XR
55377          XI = HI(I-1,I-1) / NORM
55378          WI(I-1) = XI
55379          HR(I-1,I-1) = NORM
55380          HI(I-1,I-1) = 0.0D0
55381          HI(I,I-1) = SR / NORM
55382 C
55383          DO 230 J = I, EN
55384             YR = HR(I-1,J)
55385             YI = HI(I-1,J)
55386             ZZR = HR(I,J)
55387             ZZI = HI(I,J)
55388             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
55389             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
55390             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
55391             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
55392   230    CONTINUE
55393 C
55394   240 CONTINUE
55395 C
55396       SI = HI(EN,EN)
55397       IF (SI .EQ. 0.0D0) GOTO 250
55398       NORM = PYTHAG(HR(EN,EN),SI)
55399       SR = HR(EN,EN) / NORM
55400       SI = SI / NORM
55401       HR(EN,EN) = NORM
55402       HI(EN,EN) = 0.0D0
55403 C     .......... INVERSE OPERATION (COLUMNS) ..........
55404   250 DO 280 J = LP1, EN
55405          XR = WR(J-1)
55406          XI = WI(J-1)
55407 C
55408          DO 270 I = L, J
55409             YR = HR(I,J-1)
55410             YI = 0.0D0
55411             ZZR = HR(I,J)
55412             ZZI = HI(I,J)
55413             IF (I .EQ. J) GOTO 260
55414             YI = HI(I,J-1)
55415             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
55416   260       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
55417             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
55418             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
55419   270    CONTINUE
55420 C
55421   280 CONTINUE
55422 C
55423       IF (SI .EQ. 0.0D0) GOTO 160
55424 C
55425       DO 290 I = L, EN
55426          YR = HR(I,EN)
55427          YI = HI(I,EN)
55428          HR(I,EN) = SR * YR - SI * YI
55429          HI(I,EN) = SR * YI + SI * YR
55430   290 CONTINUE
55431 C
55432       GOTO 160
55433 C     .......... A ROOT FOUND ..........
55434   300 WR(EN) = HR(EN,EN) + TR
55435       WI(EN) = HI(EN,EN) + TI
55436       EN = ENM1
55437       GOTO 150
55438 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
55439 C                CONVERGED AFTER 30*N ITERATIONS ..........
55440   310 IERR = EN
55441   320 RETURN
55442       END
55443  
55444 C*********************************************************************
55445  
55446 C...PYCMQ2
55447 C...Auxiliary to PYEICG.
55448 C
55449 C     THIS SUBROUTINE IS A TRANSLATION OF A UNITARY ANALOGUE OF THE
55450 C     ALGOL PROCEDURE  COMLR2, NUM. MATH. 16, 181-204(1970) BY PETERS
55451 C     AND WILKINSON.
55452 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 372-395(1971).
55453 C     THE UNITARY ANALOGUE SUBSTITUTES THE QR ALGORITHM OF FRANCIS
55454 C     (COMP. JOUR. 4, 332-345(1962)) FOR THE LR ALGORITHM.
55455 C
55456 C     THIS SUBROUTINE FINDS THE EIGENVALUES AND EIGENVECTORS
55457 C     OF A COMPLEX UPPER HESSENBERG MATRIX BY THE QR
55458 C     METHOD.  THE EIGENVECTORS OF A COMPLEX GENERAL MATRIX
55459 C     CAN ALSO BE FOUND IF  CORTH  HAS BEEN USED TO REDUCE
55460 C     THIS GENERAL MATRIX TO HESSENBERG FORM.
55461 C
55462 C     ON INPUT
55463 C
55464 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
55465 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
55466 C          DIMENSION STATEMENT.
55467 C
55468 C        N IS THE ORDER OF THE MATRIX.
55469 C
55470 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
55471 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
55472 C          SET LOW=1, IGH=N.
55473 C
55474 C        ORTR AND ORTI CONTAIN INFORMATION ABOUT THE UNITARY TRANS-
55475 C          FORMATIONS USED IN THE REDUCTION BY  CORTH, IF PERFORMED.
55476 C          ONLY ELEMENTS LOW THROUGH IGH ARE USED.  IF THE EIGENVECTORS
55477 C          OF THE HESSENBERG MATRIX ARE DESIRED, SET ORTR(J) AND
55478 C          ORTI(J) TO 0.0D0 FOR THESE ELEMENTS.
55479 C
55480 C        HR AND HI CONTAIN THE REAL AND IMAGINARY PARTS,
55481 C          RESPECTIVELY, OF THE COMPLEX UPPER HESSENBERG MATRIX.
55482 C          THEIR LOWER TRIANGLES BELOW THE SUBDIAGONAL CONTAIN FURTHER
55483 C          INFORMATION ABOUT THE TRANSFORMATIONS WHICH WERE USED IN THE
55484 C          REDUCTION BY  CORTH, IF PERFORMED.  IF THE EIGENVECTORS OF
55485 C          THE HESSENBERG MATRIX ARE DESIRED, THESE ELEMENTS MAY BE
55486 C          ARBITRARY.
55487 C
55488 C     ON OUTPUT
55489 C
55490 C        ORTR, ORTI, AND THE UPPER HESSENBERG PORTIONS OF HR AND HI
55491 C          HAVE BEEN DESTROYED.
55492 C
55493 C        WR AND WI CONTAIN THE REAL AND IMAGINARY PARTS,
55494 C          RESPECTIVELY, OF THE EIGENVALUES.  IF AN ERROR
55495 C          EXIT IS MADE, THE EIGENVALUES SHOULD BE CORRECT
55496 C          FOR INDICES IERR+1,...,N.
55497 C
55498 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
55499 C          RESPECTIVELY, OF THE EIGENVECTORS.  THE EIGENVECTORS
55500 C          ARE UNNORMALIZED.  IF AN ERROR EXIT IS MADE, NONE OF
55501 C          THE EIGENVECTORS HAS BEEN FOUND.
55502 C
55503 C        IERR IS SET TO
55504 C          ZERO       FOR NORMAL RETURN,
55505 C          J          IF THE LIMIT OF 30*N ITERATIONS IS EXHAUSTED
55506 C                     WHILE THE J-TH EIGENVALUE IS BEING SOUGHT.
55507 C
55508 C     CALLS PYCDIV FOR COMPLEX DIVISION.
55509 C     CALLS PYCSRT FOR COMPLEX SQUARE ROOT.
55510 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
55511 C
55512 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
55513 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
55514 C
55515 C     THIS VERSION DATED OCTOBER 1989.
55516 C
55517 C  MESHED OVERFLOW CONTROL WITH VECTORS OF ISOLATED ROOTS (10/19/89 BSG)
55518 C  MESHED OVERFLOW CONTROL WITH TRIANGULAR MULTIPLY (10/30/89 BSG)
55519 C
55520  
55521       SUBROUTINE PYCMQ2(NM,N,LOW,IGH,ORTR,ORTI,HR,HI,WR,WI,ZR,ZI,IERR)
55522  
55523       INTEGER I,J,K,L,M,N,EN,II,JJ,LL,NM,NN,IGH,IP1,
55524      X        ITN,ITS,LOW,LP1,ENM1,IEND,IERR
55525       DOUBLE PRECISION HR(5,5),HI(5,5),WR(5),WI(5),ZR(5,5),ZI(5,5),
55526      X       ORTR(5),ORTI(5)
55527       DOUBLE PRECISION SI,SR,TI,TR,XI,XR,YI,YR,ZZI,ZZR,NORM,TST1,TST2,
55528      X       PYTHAG
55529  
55530       IERR = 0
55531 C     .......... INITIALIZE EIGENVECTOR MATRIX ..........
55532       DO 110 J = 1, N
55533 C
55534          DO 100 I = 1, N
55535             ZR(I,J) = 0.0D0
55536             ZI(I,J) = 0.0D0
55537   100    CONTINUE
55538          ZR(J,J) = 1.0D0
55539   110 CONTINUE
55540 C     .......... FORM THE MATRIX OF ACCUMULATED TRANSFORMATIONS
55541 C                FROM THE INFORMATION LEFT BY CORTH ..........
55542       IEND = IGH - LOW - 1
55543       IF (IEND.LT.0) GOTO 220
55544       IF (IEND.EQ.0) GOTO 170
55545 C     .......... FOR I=IGH-1 STEP -1 UNTIL LOW+1 DO -- ..........
55546       DO 160 II = 1, IEND
55547          I = IGH - II
55548          IF (ORTR(I) .EQ. 0.0D0 .AND. ORTI(I) .EQ. 0.0D0) GOTO 160
55549          IF (HR(I,I-1) .EQ. 0.0D0 .AND. HI(I,I-1) .EQ. 0.0D0) GOTO 160
55550 C     .......... NORM BELOW IS NEGATIVE OF H FORMED IN CORTH ..........
55551          NORM = HR(I,I-1) * ORTR(I) + HI(I,I-1) * ORTI(I)
55552          IP1 = I + 1
55553 C
55554          DO 120 K = IP1, IGH
55555             ORTR(K) = HR(K,I-1)
55556             ORTI(K) = HI(K,I-1)
55557   120    CONTINUE
55558 C
55559          DO 150 J = I, IGH
55560             SR = 0.0D0
55561             SI = 0.0D0
55562 C
55563             DO 130 K = I, IGH
55564                SR = SR + ORTR(K) * ZR(K,J) + ORTI(K) * ZI(K,J)
55565                SI = SI + ORTR(K) * ZI(K,J) - ORTI(K) * ZR(K,J)
55566   130       CONTINUE
55567 C
55568             SR = SR / NORM
55569             SI = SI / NORM
55570 C
55571             DO 140 K = I, IGH
55572                ZR(K,J) = ZR(K,J) + SR * ORTR(K) - SI * ORTI(K)
55573                ZI(K,J) = ZI(K,J) + SR * ORTI(K) + SI * ORTR(K)
55574   140       CONTINUE
55575 C
55576   150    CONTINUE
55577 C
55578   160 CONTINUE
55579 C     .......... CREATE REAL SUBDIAGONAL ELEMENTS ..........
55580   170 L = LOW + 1
55581 C
55582       DO 210 I = L, IGH
55583          LL = MIN0(I+1,IGH)
55584          IF (HI(I,I-1) .EQ. 0.0D0) GOTO 210
55585          NORM = PYTHAG(HR(I,I-1),HI(I,I-1))
55586          YR = HR(I,I-1) / NORM
55587          YI = HI(I,I-1) / NORM
55588          HR(I,I-1) = NORM
55589          HI(I,I-1) = 0.0D0
55590 C
55591          DO 180 J = I, N
55592             SI = YR * HI(I,J) - YI * HR(I,J)
55593             HR(I,J) = YR * HR(I,J) + YI * HI(I,J)
55594             HI(I,J) = SI
55595   180    CONTINUE
55596 C
55597          DO 190 J = 1, LL
55598             SI = YR * HI(J,I) + YI * HR(J,I)
55599             HR(J,I) = YR * HR(J,I) - YI * HI(J,I)
55600             HI(J,I) = SI
55601   190    CONTINUE
55602 C
55603          DO 200 J = LOW, IGH
55604             SI = YR * ZI(J,I) + YI * ZR(J,I)
55605             ZR(J,I) = YR * ZR(J,I) - YI * ZI(J,I)
55606             ZI(J,I) = SI
55607   200    CONTINUE
55608 C
55609   210 CONTINUE
55610 C     .......... STORE ROOTS ISOLATED BY CBAL ..........
55611   220 DO 230 I = 1, N
55612          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 230
55613          WR(I) = HR(I,I)
55614          WI(I) = HI(I,I)
55615   230 CONTINUE
55616 C
55617       EN = IGH
55618       TR = 0.0D0
55619       TI = 0.0D0
55620       ITN = 30*N
55621 C     .......... SEARCH FOR NEXT EIGENVALUE ..........
55622   240 IF (EN .LT. LOW) GOTO 430
55623       ITS = 0
55624       ENM1 = EN - 1
55625 C     .......... LOOK FOR SINGLE SMALL SUB-DIAGONAL ELEMENT
55626 C                FOR L=EN STEP -1 UNTIL LOW DO -- ..........
55627   250 DO 260 LL = LOW, EN
55628          L = EN + LOW - LL
55629          IF (L .EQ. LOW) GOTO 270
55630          TST1 = DABS(HR(L-1,L-1)) + DABS(HI(L-1,L-1))
55631      X            + DABS(HR(L,L)) + DABS(HI(L,L))
55632          TST2 = TST1 + DABS(HR(L,L-1))
55633          IF (TST2 .EQ. TST1) GOTO 270
55634   260 CONTINUE
55635 C     .......... FORM SHIFT ..........
55636   270 IF (L .EQ. EN) GOTO 420
55637       IF (ITN .EQ. 0) GOTO 550
55638       IF (ITS .EQ. 10 .OR. ITS .EQ. 20) GOTO 290
55639       SR = HR(EN,EN)
55640       SI = HI(EN,EN)
55641       XR = HR(ENM1,EN) * HR(EN,ENM1)
55642       XI = HI(ENM1,EN) * HR(EN,ENM1)
55643       IF (XR .EQ. 0.0D0 .AND. XI .EQ. 0.0D0) GOTO 300
55644       YR = (HR(ENM1,ENM1) - SR) / 2.0D0
55645       YI = (HI(ENM1,ENM1) - SI) / 2.0D0
55646       CALL PYCSRT(YR**2-YI**2+XR,2.0D0*YR*YI+XI,ZZR,ZZI)
55647       IF (YR * ZZR + YI * ZZI .GE. 0.0D0) GOTO 280
55648       ZZR = -ZZR
55649       ZZI = -ZZI
55650   280 CALL PYCDIV(XR,XI,YR+ZZR,YI+ZZI,XR,XI)
55651       SR = SR - XR
55652       SI = SI - XI
55653       GOTO 300
55654 C     .......... FORM EXCEPTIONAL SHIFT ..........
55655   290 SR = DABS(HR(EN,ENM1)) + DABS(HR(ENM1,EN-2))
55656       SI = 0.0D0
55657 C
55658   300 DO 310 I = LOW, EN
55659          HR(I,I) = HR(I,I) - SR
55660          HI(I,I) = HI(I,I) - SI
55661   310 CONTINUE
55662 C
55663       TR = TR + SR
55664       TI = TI + SI
55665       ITS = ITS + 1
55666       ITN = ITN - 1
55667 C     .......... REDUCE TO TRIANGLE (ROWS) ..........
55668       LP1 = L + 1
55669 C
55670       DO 330 I = LP1, EN
55671          SR = HR(I,I-1)
55672          HR(I,I-1) = 0.0D0
55673          NORM = PYTHAG(PYTHAG(HR(I-1,I-1),HI(I-1,I-1)),SR)
55674          XR = HR(I-1,I-1) / NORM
55675          WR(I-1) = XR
55676          XI = HI(I-1,I-1) / NORM
55677          WI(I-1) = XI
55678          HR(I-1,I-1) = NORM
55679          HI(I-1,I-1) = 0.0D0
55680          HI(I,I-1) = SR / NORM
55681 C
55682          DO 320 J = I, N
55683             YR = HR(I-1,J)
55684             YI = HI(I-1,J)
55685             ZZR = HR(I,J)
55686             ZZI = HI(I,J)
55687             HR(I-1,J) = XR * YR + XI * YI + HI(I,I-1) * ZZR
55688             HI(I-1,J) = XR * YI - XI * YR + HI(I,I-1) * ZZI
55689             HR(I,J) = XR * ZZR - XI * ZZI - HI(I,I-1) * YR
55690             HI(I,J) = XR * ZZI + XI * ZZR - HI(I,I-1) * YI
55691   320    CONTINUE
55692 C
55693   330 CONTINUE
55694 C
55695       SI = HI(EN,EN)
55696       IF (SI .EQ. 0.0D0) GOTO 350
55697       NORM = PYTHAG(HR(EN,EN),SI)
55698       SR = HR(EN,EN) / NORM
55699       SI = SI / NORM
55700       HR(EN,EN) = NORM
55701       HI(EN,EN) = 0.0D0
55702       IF (EN .EQ. N) GOTO 350
55703       IP1 = EN + 1
55704 C
55705       DO 340 J = IP1, N
55706          YR = HR(EN,J)
55707          YI = HI(EN,J)
55708          HR(EN,J) = SR * YR + SI * YI
55709          HI(EN,J) = SR * YI - SI * YR
55710   340 CONTINUE
55711 C     .......... INVERSE OPERATION (COLUMNS) ..........
55712   350 DO 390 J = LP1, EN
55713          XR = WR(J-1)
55714          XI = WI(J-1)
55715 C
55716          DO 370 I = 1, J
55717             YR = HR(I,J-1)
55718             YI = 0.0D0
55719             ZZR = HR(I,J)
55720             ZZI = HI(I,J)
55721             IF (I .EQ. J) GOTO 360
55722             YI = HI(I,J-1)
55723             HI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
55724   360       HR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
55725             HR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
55726             HI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
55727   370    CONTINUE
55728 C
55729          DO 380 I = LOW, IGH
55730             YR = ZR(I,J-1)
55731             YI = ZI(I,J-1)
55732             ZZR = ZR(I,J)
55733             ZZI = ZI(I,J)
55734             ZR(I,J-1) = XR * YR - XI * YI + HI(J,J-1) * ZZR
55735             ZI(I,J-1) = XR * YI + XI * YR + HI(J,J-1) * ZZI
55736             ZR(I,J) = XR * ZZR + XI * ZZI - HI(J,J-1) * YR
55737             ZI(I,J) = XR * ZZI - XI * ZZR - HI(J,J-1) * YI
55738   380    CONTINUE
55739 C
55740   390 CONTINUE
55741 C
55742       IF (SI .EQ. 0.0D0) GOTO 250
55743 C
55744       DO 400 I = 1, EN
55745          YR = HR(I,EN)
55746          YI = HI(I,EN)
55747          HR(I,EN) = SR * YR - SI * YI
55748          HI(I,EN) = SR * YI + SI * YR
55749   400 CONTINUE
55750 C
55751       DO 410 I = LOW, IGH
55752          YR = ZR(I,EN)
55753          YI = ZI(I,EN)
55754          ZR(I,EN) = SR * YR - SI * YI
55755          ZI(I,EN) = SR * YI + SI * YR
55756   410 CONTINUE
55757 C
55758       GOTO 250
55759 C     .......... A ROOT FOUND ..........
55760   420 HR(EN,EN) = HR(EN,EN) + TR
55761       WR(EN) = HR(EN,EN)
55762       HI(EN,EN) = HI(EN,EN) + TI
55763       WI(EN) = HI(EN,EN)
55764       EN = ENM1
55765       GOTO 240
55766 C     .......... ALL ROOTS FOUND.  BACKSUBSTITUTE TO FIND
55767 C                VECTORS OF UPPER TRIANGULAR FORM ..........
55768   430 NORM = 0.0D0
55769 C
55770       DO 440 I = 1, N
55771 C
55772          DO 440 J = I, N
55773             TR = DABS(HR(I,J)) + DABS(HI(I,J))
55774             IF (TR .GT. NORM) NORM = TR
55775   440 CONTINUE
55776 C
55777       IF (N .EQ. 1 .OR. NORM .EQ. 0.0D0) GOTO 560
55778 C     .......... FOR EN=N STEP -1 UNTIL 2 DO -- ..........
55779       DO 500 NN = 2, N
55780          EN = N + 2 - NN
55781          XR = WR(EN)
55782          XI = WI(EN)
55783          HR(EN,EN) = 1.0D0
55784          HI(EN,EN) = 0.0D0
55785          ENM1 = EN - 1
55786 C     .......... FOR I=EN-1 STEP -1 UNTIL 1 DO -- ..........
55787          DO 490 II = 1, ENM1
55788             I = EN - II
55789             ZZR = 0.0D0
55790             ZZI = 0.0D0
55791             IP1 = I + 1
55792 C
55793             DO 450 J = IP1, EN
55794                ZZR = ZZR + HR(I,J) * HR(J,EN) - HI(I,J) * HI(J,EN)
55795                ZZI = ZZI + HR(I,J) * HI(J,EN) + HI(I,J) * HR(J,EN)
55796   450       CONTINUE
55797 C
55798             YR = XR - WR(I)
55799             YI = XI - WI(I)
55800             IF (YR .NE. 0.0D0 .OR. YI .NE. 0.0D0) GOTO 470
55801                TST1 = NORM
55802                YR = TST1
55803   460          YR = 0.01D0 * YR
55804                TST2 = NORM + YR
55805                IF (TST2 .GT. TST1) GOTO 460
55806   470       CONTINUE
55807             CALL PYCDIV(ZZR,ZZI,YR,YI,HR(I,EN),HI(I,EN))
55808 C     .......... OVERFLOW CONTROL ..........
55809             TR = DABS(HR(I,EN)) + DABS(HI(I,EN))
55810             IF (TR .EQ. 0.0D0) GOTO 490
55811             TST1 = TR
55812             TST2 = TST1 + 1.0D0/TST1
55813             IF (TST2 .GT. TST1) GOTO 490
55814             DO 480 J = I, EN
55815                HR(J,EN) = HR(J,EN)/TR
55816                HI(J,EN) = HI(J,EN)/TR
55817   480       CONTINUE
55818 C
55819   490    CONTINUE
55820 C
55821   500 CONTINUE
55822 C     .......... END BACKSUBSTITUTION ..........
55823 C     .......... VECTORS OF ISOLATED ROOTS ..........
55824       DO 520 I = 1, N
55825          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 520
55826 C
55827          DO 510 J = I, N
55828             ZR(I,J) = HR(I,J)
55829             ZI(I,J) = HI(I,J)
55830   510    CONTINUE
55831 C
55832   520 CONTINUE
55833 C     .......... MULTIPLY BY TRANSFORMATION MATRIX TO GIVE
55834 C                VECTORS OF ORIGINAL FULL MATRIX.
55835 C                FOR J=N STEP -1 UNTIL LOW DO -- ..........
55836       DO 540 JJ = LOW, N
55837          J = N + LOW - JJ
55838          M = MIN0(J,IGH)
55839 C
55840          DO 540 I = LOW, IGH
55841             ZZR = 0.0D0
55842             ZZI = 0.0D0
55843 C
55844             DO 530 K = LOW, M
55845                ZZR = ZZR + ZR(I,K) * HR(K,J) - ZI(I,K) * HI(K,J)
55846                ZZI = ZZI + ZR(I,K) * HI(K,J) + ZI(I,K) * HR(K,J)
55847   530       CONTINUE
55848 C
55849             ZR(I,J) = ZZR
55850             ZI(I,J) = ZZI
55851   540 CONTINUE
55852 C
55853       GOTO 560
55854 C     .......... SET ERROR -- ALL EIGENVALUES HAVE NOT
55855 C                CONVERGED AFTER 30*N ITERATIONS ..........
55856   550 IERR = EN
55857   560 RETURN
55858       END
55859  
55860 C*********************************************************************
55861  
55862 C...PYCDIV
55863 C...Auxiliary to PYCMQR
55864 C
55865 C     COMPLEX DIVISION, (CR,CI) = (AR,AI)/(BR,BI)
55866 C
55867  
55868       SUBROUTINE PYCDIV(AR,AI,BR,BI,CR,CI)
55869  
55870       DOUBLE PRECISION AR,AI,BR,BI,CR,CI
55871       DOUBLE PRECISION S,ARS,AIS,BRS,BIS
55872  
55873       S = DABS(BR) + DABS(BI)
55874       ARS = AR/S
55875       AIS = AI/S
55876       BRS = BR/S
55877       BIS = BI/S
55878       S = BRS**2 + BIS**2
55879       CR = (ARS*BRS + AIS*BIS)/S
55880       CI = (AIS*BRS - ARS*BIS)/S
55881       RETURN
55882       END
55883  
55884 C*********************************************************************
55885  
55886 C...PYCSRT
55887 C...Auxiliary to PYCMQR
55888 C
55889 C     (YR,YI) = COMPLEX DSQRT(XR,XI)
55890 C     BRANCH CHOSEN SO THAT YR .GE. 0.0 AND SIGN(YI) .EQ. SIGN(XI)
55891 C
55892  
55893       SUBROUTINE PYCSRT(XR,XI,YR,YI)
55894  
55895       DOUBLE PRECISION XR,XI,YR,YI
55896       DOUBLE PRECISION S,TR,TI,PYTHAG
55897  
55898       TR = XR
55899       TI = XI
55900       S = DSQRT(0.5D0*(PYTHAG(TR,TI) + DABS(TR)))
55901       IF (TR .GE. 0.0D0) YR = S
55902       IF (TI .LT. 0.0D0) S = -S
55903       IF (TR .LE. 0.0D0) YI = S
55904       IF (TR .LT. 0.0D0) YR = 0.5D0*(TI/YI)
55905       IF (TR .GT. 0.0D0) YI = 0.5D0*(TI/YR)
55906       RETURN
55907       END
55908  
55909       DOUBLE PRECISION FUNCTION PYTHAG(A,B)
55910       DOUBLE PRECISION A,B
55911 C
55912 C     FINDS DSQRT(A**2+B**2) WITHOUT OVERFLOW OR DESTRUCTIVE UNDERFLOW
55913 C
55914       DOUBLE PRECISION P,R,S,T,U
55915       P = DMAX1(DABS(A),DABS(B))
55916       IF (P .EQ. 0.0D0) GOTO 110
55917       R = (DMIN1(DABS(A),DABS(B))/P)**2
55918   100 CONTINUE
55919          T = 4.0D0 + R
55920          IF (T .EQ. 4.0D0) GOTO 110
55921          S = R/T
55922          U = 1.0D0 + 2.0D0*S
55923          P = U*P
55924          R = (S/U)**2 * R
55925       GOTO 100
55926   110 PYTHAG = P
55927       RETURN
55928       END
55929  
55930 C*********************************************************************
55931  
55932 C...PYCBAL
55933 C...Auxiliary to PYEICG
55934 C
55935 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
55936 C     CBALANCE, WHICH IS A COMPLEX VERSION OF BALANCE,
55937 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
55938 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
55939 C
55940 C     THIS SUBROUTINE BALANCES A COMPLEX MATRIX AND ISOLATES
55941 C     EIGENVALUES WHENEVER POSSIBLE.
55942 C
55943 C     ON INPUT
55944 C
55945 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
55946 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
55947 C          DIMENSION STATEMENT.
55948 C
55949 C        N IS THE ORDER OF THE MATRIX.
55950 C
55951 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
55952 C          RESPECTIVELY, OF THE COMPLEX MATRIX TO BE BALANCED.
55953 C
55954 C     ON OUTPUT
55955 C
55956 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
55957 C          RESPECTIVELY, OF THE BALANCED MATRIX.
55958 C
55959 C        LOW AND IGH ARE TWO INTEGERS SUCH THAT AR(I,J) AND AI(I,J)
55960 C          ARE EQUAL TO ZERO IF
55961 C           (1) I IS GREATER THAN J AND
55962 C           (2) J=1,...,LOW-1 OR I=IGH+1,...,N.
55963 C
55964 C        SCALE CONTAINS INFORMATION DETERMINING THE
55965 C           PERMUTATIONS AND SCALING FACTORS USED.
55966 C
55967 C     SUPPOSE THAT THE PRINCIPAL SUBMATRIX IN ROWS LOW THROUGH IGH
55968 C     HAS BEEN BALANCED, THAT P(J) DENOTES THE INDEX INTERCHANGED
55969 C     WITH J DURING THE PERMUTATION STEP, AND THAT THE ELEMENTS
55970 C     OF THE DIAGONAL MATRIX USED ARE DENOTED BY D(I,J).  THEN
55971 C        SCALE(J) = P(J),    FOR J = 1,...,LOW-1
55972 C                 = D(J,J)       J = LOW,...,IGH
55973 C                 = P(J)         J = IGH+1,...,N.
55974 C     THE ORDER IN WHICH THE INTERCHANGES ARE MADE IS N TO IGH+1,
55975 C     THEN 1 TO LOW-1.
55976 C
55977 C     NOTE THAT 1 IS RETURNED FOR IGH IF IGH IS ZERO FORMALLY.
55978 C
55979 C     THE ALGOL PROCEDURE EXC CONTAINED IN CBALANCE APPEARS IN
55980 C     CBAL  IN LINE.  (NOTE THAT THE ALGOL ROLES OF IDENTIFIERS
55981 C     K,L HAVE BEEN REVERSED.)
55982 C
55983 C     ARITHMETIC IS REAL THROUGHOUT.
55984 C
55985 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
55986 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
55987 C
55988 C     THIS VERSION DATED AUGUST 1983.
55989 C
55990  
55991       SUBROUTINE PYCBAL(NM,N,AR,AI,LOW,IGH,SCALE)
55992  
55993       INTEGER I,J,K,L,M,N,JJ,NM,IGH,LOW,IEXC
55994       DOUBLE PRECISION AR(5,5),AI(5,5),SCALE(5)
55995       DOUBLE PRECISION C,F,G,R,S,B2,RADIX
55996       LOGICAL NOCONV
55997  
55998       RADIX = 16.0D0
55999 C
56000       B2 = RADIX * RADIX
56001       K = 1
56002       L = N
56003       GOTO 150
56004 C     .......... IN-LINE PROCEDURE FOR ROW AND
56005 C                COLUMN EXCHANGE ..........
56006   100 SCALE(M) = J
56007       IF (J .EQ. M) GOTO 130
56008 C
56009       DO 110 I = 1, L
56010          F = AR(I,J)
56011          AR(I,J) = AR(I,M)
56012          AR(I,M) = F
56013          F = AI(I,J)
56014          AI(I,J) = AI(I,M)
56015          AI(I,M) = F
56016   110 CONTINUE
56017 C
56018       DO 120 I = K, N
56019          F = AR(J,I)
56020          AR(J,I) = AR(M,I)
56021          AR(M,I) = F
56022          F = AI(J,I)
56023          AI(J,I) = AI(M,I)
56024          AI(M,I) = F
56025   120 CONTINUE
56026 C
56027   130 IF(IEXC.EQ.1) GOTO 140
56028       IF(IEXC.EQ.2) GOTO 180
56029 C     .......... SEARCH FOR ROWS ISOLATING AN EIGENVALUE
56030 C                AND PUSH THEM DOWN ..........
56031   140 IF (L .EQ. 1) GOTO 320
56032       L = L - 1
56033 C     .......... FOR J=L STEP -1 UNTIL 1 DO -- ..........
56034   150 DO 170 JJ = 1, L
56035          J = L + 1 - JJ
56036 C
56037          DO 160 I = 1, L
56038             IF (I .EQ. J) GOTO 160
56039             IF (AR(J,I) .NE. 0.0D0 .OR. AI(J,I) .NE. 0.0D0) GOTO 170
56040   160    CONTINUE
56041 C
56042          M = L
56043          IEXC = 1
56044          GOTO 100
56045   170 CONTINUE
56046 C
56047       GOTO 190
56048 C     .......... SEARCH FOR COLUMNS ISOLATING AN EIGENVALUE
56049 C                AND PUSH THEM LEFT ..........
56050   180 K = K + 1
56051 C
56052   190 DO 210 J = K, L
56053 C
56054          DO 200 I = K, L
56055             IF (I .EQ. J) GOTO 200
56056             IF (AR(I,J) .NE. 0.0D0 .OR. AI(I,J) .NE. 0.0D0) GOTO 210
56057   200    CONTINUE
56058 C
56059          M = K
56060          IEXC = 2
56061          GOTO 100
56062   210 CONTINUE
56063 C     .......... NOW BALANCE THE SUBMATRIX IN ROWS K TO L ..........
56064       DO 220 I = K, L
56065   220 SCALE(I) = 1.0D0
56066 C     .......... ITERATIVE LOOP FOR NORM REDUCTION ..........
56067   230 NOCONV = .FALSE.
56068 C
56069       DO 310 I = K, L
56070          C = 0.0D0
56071          R = 0.0D0
56072 C
56073          DO 240 J = K, L
56074             IF (J .EQ. I) GOTO 240
56075             C = C + DABS(AR(J,I)) + DABS(AI(J,I))
56076             R = R + DABS(AR(I,J)) + DABS(AI(I,J))
56077   240    CONTINUE
56078 C     .......... GUARD AGAINST ZERO C OR R DUE TO UNDERFLOW ..........
56079          IF (C .EQ. 0.0D0 .OR. R .EQ. 0.0D0) GOTO 310
56080          G = R / RADIX
56081          F = 1.0D0
56082          S = C + R
56083   250    IF (C .GE. G) GOTO 260
56084          F = F * RADIX
56085          C = C * B2
56086          GOTO 250
56087   260    G = R * RADIX
56088   270    IF (C .LT. G) GOTO 280
56089          F = F / RADIX
56090          C = C / B2
56091          GOTO 270
56092 C     .......... NOW BALANCE ..........
56093   280    IF ((C + R) / F .GE. 0.95D0 * S) GOTO 310
56094          G = 1.0D0 / F
56095          SCALE(I) = SCALE(I) * F
56096          NOCONV = .TRUE.
56097 C
56098          DO 290 J = K, N
56099             AR(I,J) = AR(I,J) * G
56100             AI(I,J) = AI(I,J) * G
56101   290    CONTINUE
56102 C
56103          DO 300 J = 1, L
56104             AR(J,I) = AR(J,I) * F
56105             AI(J,I) = AI(J,I) * F
56106   300    CONTINUE
56107 C
56108   310 CONTINUE
56109 C
56110       IF (NOCONV) GOTO 230
56111 C
56112   320 LOW = K
56113       IGH = L
56114       RETURN
56115       END
56116  
56117 C*********************************************************************
56118  
56119 C...PYCBA2
56120 C...Auxiliary to PYEICG.
56121 C
56122 C     THIS SUBROUTINE IS A TRANSLATION OF THE ALGOL PROCEDURE
56123 C     CBABK2, WHICH IS A COMPLEX VERSION OF BALBAK,
56124 C     NUM. MATH. 13, 293-304(1969) BY PARLETT AND REINSCH.
56125 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 315-326(1971).
56126 C
56127 C     THIS SUBROUTINE FORMS THE EIGENVECTORS OF A COMPLEX GENERAL
56128 C     MATRIX BY BACK TRANSFORMING THOSE OF THE CORRESPONDING
56129 C     BALANCED MATRIX DETERMINED BY  CBAL.
56130 C
56131 C     ON INPUT
56132 C
56133 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
56134 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
56135 C          DIMENSION STATEMENT.
56136 C
56137 C        N IS THE ORDER OF THE MATRIX.
56138 C
56139 C        LOW AND IGH ARE INTEGERS DETERMINED BY  CBAL.
56140 C
56141 C        SCALE CONTAINS INFORMATION DETERMINING THE PERMUTATIONS
56142 C          AND SCALING FACTORS USED BY  CBAL.
56143 C
56144 C        M IS THE NUMBER OF EIGENVECTORS TO BE BACK TRANSFORMED.
56145 C
56146 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
56147 C          RESPECTIVELY, OF THE EIGENVECTORS TO BE
56148 C          BACK TRANSFORMED IN THEIR FIRST M COLUMNS.
56149 C
56150 C     ON OUTPUT
56151 C
56152 C        ZR AND ZI CONTAIN THE REAL AND IMAGINARY PARTS,
56153 C          RESPECTIVELY, OF THE TRANSFORMED EIGENVECTORS
56154 C          IN THEIR FIRST M COLUMNS.
56155 C
56156 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
56157 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
56158 C
56159 C     THIS VERSION DATED AUGUST 1983.
56160 C
56161  
56162       SUBROUTINE PYCBA2(NM,N,LOW,IGH,SCALE,M,ZR,ZI)
56163  
56164       INTEGER I,J,K,M,N,II,NM,IGH,LOW
56165       DOUBLE PRECISION SCALE(5),ZR(5,5),ZI(5,5)
56166       DOUBLE PRECISION S
56167  
56168       IF (M .EQ. 0) GOTO 150
56169       IF (IGH .EQ. LOW) GOTO 120
56170 C
56171       DO 110 I = LOW, IGH
56172          S = SCALE(I)
56173 C     .......... LEFT HAND EIGENVECTORS ARE BACK TRANSFORMED
56174 C                IF THE FOREGOING STATEMENT IS REPLACED BY
56175 C                S=1.0D0/SCALE(I). ..........
56176          DO 100 J = 1, M
56177             ZR(I,J) = ZR(I,J) * S
56178             ZI(I,J) = ZI(I,J) * S
56179   100    CONTINUE
56180 C
56181   110 CONTINUE
56182 C     .......... FOR I=LOW-1 STEP -1 UNTIL 1,
56183 C                IGH+1 STEP 1 UNTIL N DO -- ..........
56184   120 DO 140 II = 1, N
56185          I = II
56186          IF (I .GE. LOW .AND. I .LE. IGH) GOTO 140
56187          IF (I .LT. LOW) I = LOW - II
56188          K = SCALE(I)
56189          IF (K .EQ. I) GOTO 140
56190 C
56191          DO 130 J = 1, M
56192             S = ZR(I,J)
56193             ZR(I,J) = ZR(K,J)
56194             ZR(K,J) = S
56195             S = ZI(I,J)
56196             ZI(I,J) = ZI(K,J)
56197             ZI(K,J) = S
56198   130    CONTINUE
56199 C
56200   140 CONTINUE
56201 C
56202   150 RETURN
56203       END
56204  
56205 C*********************************************************************
56206  
56207 C...PYCRTH
56208 C...Auxiliary to PYEICG.
56209 C
56210 C     THIS SUBROUTINE IS A TRANSLATION OF A COMPLEX ANALOGUE OF
56211 C     THE ALGOL PROCEDURE ORTHES, NUM. MATH. 12, 349-368(1968)
56212 C     BY MARTIN AND WILKINSON.
56213 C     HANDBOOK FOR AUTO. COMP., VOL.II-LINEAR ALGEBRA, 339-358(1971).
56214 C
56215 C     GIVEN A COMPLEX GENERAL MATRIX, THIS SUBROUTINE
56216 C     REDUCES A SUBMATRIX SITUATED IN ROWS AND COLUMNS
56217 C     LOW THROUGH IGH TO UPPER HESSENBERG FORM BY
56218 C     UNITARY SIMILARITY TRANSFORMATIONS.
56219 C
56220 C     ON INPUT
56221 C
56222 C        NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL
56223 C          ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM
56224 C          DIMENSION STATEMENT.
56225 C
56226 C        N IS THE ORDER OF THE MATRIX.
56227 C
56228 C        LOW AND IGH ARE INTEGERS DETERMINED BY THE BALANCING
56229 C          SUBROUTINE  CBAL.  IF  CBAL  HAS NOT BEEN USED,
56230 C          SET LOW=1, IGH=N.
56231 C
56232 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
56233 C          RESPECTIVELY, OF THE COMPLEX INPUT MATRIX.
56234 C
56235 C     ON OUTPUT
56236 C
56237 C        AR AND AI CONTAIN THE REAL AND IMAGINARY PARTS,
56238 C          RESPECTIVELY, OF THE HESSENBERG MATRIX.  INFORMATION
56239 C          ABOUT THE UNITARY TRANSFORMATIONS USED IN THE REDUCTION
56240 C          IS STORED IN THE REMAINING TRIANGLES UNDER THE
56241 C          HESSENBERG MATRIX.
56242 C
56243 C        ORTR AND ORTI CONTAIN FURTHER INFORMATION ABOUT THE
56244 C          TRANSFORMATIONS.  ONLY ELEMENTS LOW THROUGH IGH ARE USED.
56245 C
56246 C     CALLS PYTHAG FOR  DSQRT(A*A + B*B) .
56247 C
56248 C     QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW,
56249 C     MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY
56250 C
56251 C     THIS VERSION DATED AUGUST 1983.
56252 C
56253  
56254       SUBROUTINE PYCRTH(NM,N,LOW,IGH,AR,AI,ORTR,ORTI)
56255  
56256       INTEGER I,J,M,N,II,JJ,LA,MP,NM,IGH,KP1,LOW
56257       DOUBLE PRECISION AR(5,5),AI(5,5),ORTR(5),ORTI(5)
56258       DOUBLE PRECISION F,G,H,FI,FR,SCALE,PYTHAG
56259  
56260       LA = IGH - 1
56261       KP1 = LOW + 1
56262       IF (LA .LT. KP1) GOTO 210
56263 C
56264       DO 200 M = KP1, LA
56265          H = 0.0D0
56266          ORTR(M) = 0.0D0
56267          ORTI(M) = 0.0D0
56268          SCALE = 0.0D0
56269 C     .......... SCALE COLUMN (ALGOL TOL THEN NOT NEEDED) ..........
56270          DO 100 I = M, IGH
56271   100    SCALE = SCALE + DABS(AR(I,M-1)) + DABS(AI(I,M-1))
56272 C
56273          IF (SCALE .EQ. 0.0D0) GOTO 200
56274          MP = M + IGH
56275 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
56276          DO 110 II = M, IGH
56277             I = MP - II
56278             ORTR(I) = AR(I,M-1) / SCALE
56279             ORTI(I) = AI(I,M-1) / SCALE
56280             H = H + ORTR(I) * ORTR(I) + ORTI(I) * ORTI(I)
56281   110    CONTINUE
56282 C
56283          G = DSQRT(H)
56284          F = PYTHAG(ORTR(M),ORTI(M))
56285          IF (F .EQ. 0.0D0) GOTO 120
56286          H = H + F * G
56287          G = G / F
56288          ORTR(M) = (1.0D0 + G) * ORTR(M)
56289          ORTI(M) = (1.0D0 + G) * ORTI(M)
56290          GOTO 130
56291 C
56292   120    ORTR(M) = G
56293          AR(M,M-1) = SCALE
56294 C     .......... FORM (I-(U*UT)/H) * A ..........
56295   130    DO 160 J = M, N
56296             FR = 0.0D0
56297             FI = 0.0D0
56298 C     .......... FOR I=IGH STEP -1 UNTIL M DO -- ..........
56299             DO 140 II = M, IGH
56300                I = MP - II
56301                FR = FR + ORTR(I) * AR(I,J) + ORTI(I) * AI(I,J)
56302                FI = FI + ORTR(I) * AI(I,J) - ORTI(I) * AR(I,J)
56303   140       CONTINUE
56304 C
56305             FR = FR / H
56306             FI = FI / H
56307 C
56308             DO 150 I = M, IGH
56309                AR(I,J) = AR(I,J) - FR * ORTR(I) + FI * ORTI(I)
56310                AI(I,J) = AI(I,J) - FR * ORTI(I) - FI * ORTR(I)
56311   150       CONTINUE
56312 C
56313   160    CONTINUE
56314 C     .......... FORM (I-(U*UT)/H)*A*(I-(U*UT)/H) ..........
56315          DO 190 I = 1, IGH
56316             FR = 0.0D0
56317             FI = 0.0D0
56318 C     .......... FOR J=IGH STEP -1 UNTIL M DO -- ..........
56319             DO 170 JJ = M, IGH
56320                J = MP - JJ
56321                FR = FR + ORTR(J) * AR(I,J) - ORTI(J) * AI(I,J)
56322                FI = FI + ORTR(J) * AI(I,J) + ORTI(J) * AR(I,J)
56323   170       CONTINUE
56324 C
56325             FR = FR / H
56326             FI = FI / H
56327 C
56328             DO 180 J = M, IGH
56329                AR(I,J) = AR(I,J) - FR * ORTR(J) - FI * ORTI(J)
56330                AI(I,J) = AI(I,J) + FR * ORTI(J) - FI * ORTR(J)
56331   180       CONTINUE
56332 C
56333   190    CONTINUE
56334 C
56335          ORTR(M) = SCALE * ORTR(M)
56336          ORTI(M) = SCALE * ORTI(M)
56337          AR(M,M-1) = -G * AR(M,M-1)
56338          AI(M,M-1) = -G * AI(M,M-1)
56339   200 CONTINUE
56340 C
56341   210 RETURN
56342       END
56343  
56344 C*********************************************************************
56345  
56346 C...PYLDCM
56347 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
56348 C...processes.
56349  
56350       SUBROUTINE PYLDCM(A,N,NP,INDX,D)
56351       IMPLICIT NONE
56352       INTEGER N,NP,INDX(N)
56353       REAL*8 D,TINY
56354       COMPLEX*16 A(NP,NP)
56355       PARAMETER (TINY=1.0D-20)
56356       INTEGER I,IMAX,J,K
56357       REAL*8 AAMAX,VV(6),DUM
56358       COMPLEX*16 SUM,DUMC
56359  
56360       D=1D0
56361       DO 110 I=1,N
56362         AAMAX=0D0
56363         DO 100 J=1,N
56364           IF (ABS(A(I,J)).GT.AAMAX) AAMAX=ABS(A(I,J))
56365   100   CONTINUE
56366         IF (AAMAX.EQ.0D0) CALL PYERRM(28,'(PYLDCM:) singular matrix')
56367         VV(I)=1D0/AAMAX
56368   110 CONTINUE
56369       DO 180 J=1,N
56370         DO 130 I=1,J-1
56371           SUM=A(I,J)
56372           DO 120 K=1,I-1
56373             SUM=SUM-A(I,K)*A(K,J)
56374   120     CONTINUE
56375           A(I,J)=SUM
56376   130   CONTINUE
56377         AAMAX=0D0
56378         DO 150 I=J,N
56379           SUM=A(I,J)
56380           DO 140 K=1,J-1
56381             SUM=SUM-A(I,K)*A(K,J)
56382   140     CONTINUE
56383           A(I,J)=SUM
56384           DUM=VV(I)*ABS(SUM)
56385           IF (DUM.GE.AAMAX) THEN
56386             IMAX=I
56387             AAMAX=DUM
56388           ENDIF
56389   150   CONTINUE
56390         IF (J.NE.IMAX)THEN
56391           DO 160 K=1,N
56392             DUMC=A(IMAX,K)
56393             A(IMAX,K)=A(J,K)
56394             A(J,K)=DUMC
56395   160     CONTINUE
56396           D=-D
56397           VV(IMAX)=VV(J)
56398         ENDIF
56399         INDX(J)=IMAX
56400         IF(ABS(A(J,J)).EQ.0D0) A(J,J)=DCMPLX(TINY,0D0)
56401         IF(J.NE.N)THEN
56402           DO 170 I=J+1,N
56403             A(I,J)=A(I,J)/A(J,J)
56404   170     CONTINUE
56405         ENDIF
56406   180 CONTINUE
56407  
56408       RETURN
56409       END
56410  
56411 C*********************************************************************
56412  
56413 C...PYBKSB
56414 C...Auxiliary to PYSIGH, for technicolor corrections to QCD 2 -> 2
56415 C...processes.
56416  
56417       SUBROUTINE PYBKSB(A,N,NP,INDX,B)
56418       IMPLICIT NONE
56419       INTEGER N,NP,INDX(N)
56420       COMPLEX*16 A(NP,NP),B(N)
56421       INTEGER I,II,J,LL
56422       COMPLEX*16 SUM
56423  
56424       II=0
56425       DO 110 I=1,N
56426         LL=INDX(I)
56427         SUM=B(LL)
56428         B(LL)=B(I)
56429         IF (II.NE.0)THEN
56430           DO 100 J=II,I-1
56431             SUM=SUM-A(I,J)*B(J)
56432   100     CONTINUE
56433         ELSE IF (ABS(SUM).NE.0D0) THEN
56434           II=I
56435         ENDIF
56436         B(I)=SUM
56437   110 CONTINUE
56438       DO 130 I=N,1,-1
56439         SUM=B(I)
56440         DO 120 J=I+1,N
56441           SUM=SUM-A(I,J)*B(J)
56442   120   CONTINUE
56443         B(I)=SUM/A(I,I)
56444   130 CONTINUE
56445       RETURN
56446       END
56447  
56448 C***********************************************************************
56449  
56450 C...PYWIDX
56451 C...Calculates full and partial widths of resonances.
56452 C....copy of PYWIDT, used for techniparticle widths
56453  
56454       SUBROUTINE PYWIDX(KFLR,SH,WDTP,WDTE)
56455  
56456 C...Double precision and integer declarations.
56457       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56458       IMPLICIT INTEGER(I-N)
56459       INTEGER PYK,PYCHGE,PYCOMP
56460 C...Parameter statement to help give large particle numbers.
56461       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
56462      &KEXCIT=4000000,KDIMEN=5000000)
56463 C...Commonblocks.
56464       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56465       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56466       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
56467       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
56468       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
56469       COMMON/PYINT1/MINT(400),VINT(400)
56470       COMMON/PYINT4/MWID(500),WIDS(500,5)
56471       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
56472       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
56473       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/,
56474      &/PYINT4/,/PYMSSM/,/PYTCSM/
56475 C...Local arrays and saved variables.
56476       DIMENSION WDTP(0:400),WDTE(0:400,0:5),MOFSV(3,2),WIDWSV(3,2),
56477      &WID2SV(3,2)
56478       SAVE MOFSV,WIDWSV,WID2SV
56479       DATA MOFSV/6*0/,WIDWSV/6*0D0/,WID2SV/6*0D0/
56480  
56481 C...Compressed code and sign; mass.
56482       KFLA=IABS(KFLR)
56483       KFLS=ISIGN(1,KFLR)
56484       KC=PYCOMP(KFLA)
56485       SHR=SQRT(SH)
56486       PMR=PMAS(KC,1)
56487  
56488 C...Reset width information.
56489       DO I=0,400
56490         WDTP(I)=0D0
56491       ENDDO
56492  
56493 C...Common electroweak and strong constants.
56494       XW=PARU(102)
56495       XWV=XW
56496       IF(MSTP(8).GE.2) XW=1D0-(PMAS(24,1)/PMAS(23,1))**2
56497       XW1=1D0-XW
56498       AEM=PYALEM(SH)
56499       IF(MSTP(8).GE.1) AEM=SQRT(2D0)*PARU(105)*PMAS(24,1)**2*XW/PARU(1)
56500       AS=PYALPS(SH)
56501       RADC=1D0+AS/PARU(1)
56502  
56503       IF(KFLA.EQ.23) THEN
56504 C...Z0:
56505         XWC=1D0/(16D0*XW*XW1)
56506         FAC=(AEM*XWC/3D0)*SHR
56507   120   CONTINUE
56508         DO 130 I=1,MDCY(KC,3)
56509           IDC=I+MDCY(KC,2)-1
56510           IF(MDME(IDC,1).LT.0) GOTO 130
56511           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
56512           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
56513           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 130
56514           IF(I.LE.8) THEN
56515 C...Z0 -> q + qbar
56516             EF=KCHG(I,1)/3D0
56517             AF=SIGN(1D0,EF+0.1D0)
56518             VF=AF-4D0*EF*XWV
56519             FCOF=3D0*RADC
56520             IF(I.GE.6.AND.MSTP(35).GE.1) FCOF=FCOF*PYHFTH(SH,SH*RM1,1D0)
56521           ELSEIF(I.LE.16) THEN
56522 C...Z0 -> l+ + l-, nu + nubar
56523             EF=KCHG(I+2,1)/3D0
56524             AF=SIGN(1D0,EF+0.1D0)
56525             VF=AF-4D0*EF*XWV
56526             FCOF=1D0
56527           ENDIF
56528           BE34=SQRT(MAX(0D0,1D0-4D0*RM1))
56529           WDTP(I)=FAC*FCOF*(VF**2*(1D0+2D0*RM1)+AF**2*(1D0-4D0*RM1))*
56530      &    BE34
56531           WDTP(0)=WDTP(0)+WDTP(I)
56532   130   CONTINUE
56533  
56534  
56535       ELSEIF(KFLA.EQ.24) THEN
56536 C...W+/-:
56537         FAC=(AEM/(24D0*XW))*SHR
56538         DO 140 I=1,MDCY(KC,3)
56539           IDC=I+MDCY(KC,2)-1
56540           IF(MDME(IDC,1).LT.0) GOTO 140
56541           RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SH
56542           RM2=PMAS(IABS(KFDP(IDC,2)),1)**2/SH
56543           IF(SQRT(RM1)+SQRT(RM2).GT.1D0) GOTO 140
56544           WID2=1D0
56545           IF(I.LE.16) THEN
56546 C...W+/- -> q + qbar'
56547             FCOF=3D0*RADC*VCKM((I-1)/4+1,MOD(I-1,4)+1)
56548           ELSEIF(I.LE.20) THEN
56549 C...W+/- -> l+/- + nu
56550             FCOF=1D0
56551           ENDIF
56552           WDTP(I)=FAC*FCOF*(2D0-RM1-RM2-(RM1-RM2)**2)*
56553      &    SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2))
56554           WDTP(0)=WDTP(0)+WDTP(I)
56555   140   CONTINUE
56556  
56557 C.....V8 -> quark anti-quark
56558       ELSEIF(KFLA.EQ.KTECHN+100021) THEN
56559         FAC=AS/6D0*SHR
56560         TANT3=RTCM(21)
56561         IF(ITCM(2).EQ.0) THEN
56562           IMDL=1
56563         ELSEIF(ITCM(2).EQ.1) THEN
56564           IMDL=2
56565         ENDIF
56566         DO 150 I=1,MDCY(KC,3)
56567           IDC=I+MDCY(KC,2)-1
56568           IF(MDME(IDC,1).LT.0) GOTO 150
56569           PM1=PMAS(PYCOMP(KFDP(IDC,1)),1)
56570           RM1=PM1**2/SH
56571           IF(RM1.GT.0.25D0) GOTO 150
56572           WID2=1D0
56573           IF(I.EQ.5.OR.I.EQ.6.OR.IMDL.EQ.2) THEN
56574             FMIX=1D0/TANT3**2
56575           ELSE
56576             FMIX=TANT3**2
56577           ENDIF
56578           WDTP(I)=FAC*(1D0+2D0*RM1)*SQRT(1D0-4D0*RM1)*FMIX
56579           IF(I.EQ.6) WID2=WIDS(6,1)
56580           WDTP(0)=WDTP(0)+WDTP(I)
56581   150   CONTINUE
56582       ENDIF
56583  
56584       RETURN
56585       END
56586  
56587 C*********************************************************************
56588  
56589 C...PYRVSF
56590 C...Calculates R-violating decays of sfermions.
56591 C...P. Z. Skands
56592  
56593       SUBROUTINE PYRVSF(KFIN,XLAM,IDLAM,LKNT)
56594  
56595 C...Double precision and integer declarations.
56596       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56597       IMPLICIT INTEGER(I-N)
56598 C...Parameter statement to help give large particle numbers.
56599       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
56600      &KEXCIT=4000000,KDIMEN=5000000)
56601 C...Commonblocks.
56602       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56603       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
56604       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
56605      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
56606       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
56607 C...Local variables.
56608       DOUBLE PRECISION XLAM(0:400)
56609       INTEGER IDLAM(400,3), PYCOMP
56610       SAVE /PYMSRV/,/PYSSMT/,/PYMSSM/,/PYDAT2/
56611  
56612 C...IS R-VIOLATION ON ?
56613       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
56614 C...Mass eigenstate counter
56615         ICNT=INT(KFIN/KSUSY1)
56616 C...SM KF code of SUSY particle
56617         KFSM=KFIN-ICNT*KSUSY1
56618 C...Squared Sparticle Mass
56619         SM=PMAS(PYCOMP(KFIN),1)**2
56620 C... Squared mass of top quark
56621         SMT=PMAS(PYCOMP(6),1)**2
56622 C...IS L-VIOLATION ON ?
56623         IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1)) THEN
56624 C...SLEPTON -> NU(BAR) + LEPTON and UBAR + D
56625           IF(ICNT.NE.0.AND.(KFSM.EQ.11.OR.KFSM.EQ.13.OR.KFSM.EQ.15))
56626      &         THEN
56627             K=INT((KFSM-9)/2)
56628             DO 110 I=1,3
56629               DO 100 J=1,3
56630                 IF(I.NE.J) THEN
56631 C...~e,~mu,~tau -> nu_I + lepton-_J
56632                   LKNT = LKNT+1
56633                   IDLAM(LKNT,1)= 12 +2*(I-1)
56634                   IDLAM(LKNT,2)= 11 +2*(J-1)
56635                   IDLAM(LKNT,3)= 0
56636                   XLAM(LKNT)=0D0
56637                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
56638                   IF (IMSS(51).NE.0) XLAM(LKNT) =
56639      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56640 C...KINEMATICS CHECK
56641                   IF (XLAM(LKNT).EQ.0D0) THEN
56642                     LKNT=LKNT-1
56643                   ENDIF
56644                 ENDIF
56645   100         CONTINUE
56646   110       CONTINUE
56647 C...~e,~mu,~tau -> nu_Ibar + lepton-_K
56648             J=INT((KFSM-9)/2)
56649             DO 130 I=1,3
56650               IF(I.NE.J) THEN
56651                 DO 120 K=1,3
56652                   LKNT = LKNT+1
56653                   IDLAM(LKNT,1)=-12 -2*(I-1)
56654                   IDLAM(LKNT,2)= 11 +2*(K-1)
56655                   IDLAM(LKNT,3)= 0
56656                   XLAM(LKNT)=0D0
56657                   RM2=RVLAM(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
56658                   IF (IMSS(51).NE.0) XLAM(LKNT) =
56659      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56660 C...KINEMATICS CHECK
56661                   IF (XLAM(LKNT).EQ.0D0) THEN
56662                     LKNT=LKNT-1
56663                   ENDIF
56664   120           CONTINUE
56665               ENDIF
56666   130       CONTINUE
56667 C...~e,~mu,~tau -> u_Jbar + d_K
56668             I=INT((KFSM-9)/2)
56669             DO 150 J=1,3
56670               DO 140 K=1,3
56671                 LKNT = LKNT+1
56672                 IDLAM(LKNT,1)=-2 -2*(J-1)
56673                 IDLAM(LKNT,2)= 1 +2*(K-1)
56674                 IDLAM(LKNT,3)= 0
56675                 XLAM(LKNT)=0
56676                 IF (IMSS(52).NE.0) THEN
56677 C...Use massive top quark
56678                   IF (IDLAM(LKNT,1).EQ.-6) THEN
56679                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2
56680      &                   * (SM-SMT)
56681                     XLAM(LKNT) =
56682      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
56683 C...If no top quark, all decay products massless
56684                   ELSE
56685                     RM2=3*RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
56686                     XLAM(LKNT) =
56687      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56688                   ENDIF
56689 C...KINEMATICS CHECK
56690                   IF (XLAM(LKNT).EQ.0D0) THEN
56691                     LKNT=LKNT-1
56692                   ENDIF
56693                 ENDIF
56694   140         CONTINUE
56695   150       CONTINUE
56696           ENDIF
56697 C * SNEUTRINO -> LEPTON+ + LEPTON- and DBAR + D
56698 C...No right-handed neutrinos
56699           IF(ICNT.EQ.1) THEN
56700             IF(KFSM.EQ.12.OR.KFSM.EQ.14.OR.KFSM.EQ.16) THEN
56701               J=INT((KFSM-10)/2)
56702               DO 170 I=1,3
56703                 DO 160 K=1,3
56704                   IF (I.NE.J) THEN
56705 C...~nu_J -> lepton+_I + lepton-_K
56706                     LKNT = LKNT+1
56707                     IDLAM(LKNT,1)=-11 -2*(I-1)
56708                     IDLAM(LKNT,2)= 11 +2*(K-1)
56709                     IDLAM(LKNT,3)=  0
56710                     XLAM(LKNT)=0D0
56711                     RM2=RVLAM(I,J,K)**2 * SM
56712                     IF (IMSS(51).NE.0) XLAM(LKNT) =
56713      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56714 C...KINEMATICS CHECK
56715                     IF (XLAM(LKNT).EQ.0D0) THEN
56716                       LKNT=LKNT-1
56717                     ENDIF
56718                   ENDIF
56719   160           CONTINUE
56720   170         CONTINUE
56721 C...~nu_I -> dbar_J + d_K
56722               I=INT((KFSM-10)/2)
56723               DO 190 J=1,3
56724                 DO 180 K=1,3
56725                   LKNT = LKNT+1
56726                   IDLAM(LKNT,1)=-1 -2*(J-1)
56727                   IDLAM(LKNT,2)= 1 +2*(K-1)
56728                   IDLAM(LKNT,3)= 0
56729                   XLAM(LKNT)=0D0
56730                   RM2=3*RVLAMP(I,J,K)**2 * SM
56731                   IF (IMSS(52).NE.0) XLAM(LKNT) =
56732      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56733 C...KINEMATICS CHECK
56734                   IF (XLAM(LKNT).EQ.0D0) THEN
56735                     LKNT=LKNT-1
56736                   ENDIF
56737   180           CONTINUE
56738   190         CONTINUE
56739             ENDIF
56740           ENDIF
56741 C * SDOWN -> NU(BAR) + D and LEPTON- + U
56742           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
56743             J=INT((KFSM+1)/2)
56744             DO 210 I=1,3
56745               DO 200 K=1,3
56746 C...~d_J -> nu_Ibar + d_K
56747                 LKNT = LKNT+1
56748                 IDLAM(LKNT,1)=-12 -2*(I-1)
56749                 IDLAM(LKNT,2)=  1 +2*(K-1)
56750                 IDLAM(LKNT,3)=  0
56751                 XLAM(LKNT)=0D0
56752                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
56753                 IF (IMSS(52).NE.0) XLAM(LKNT) =
56754      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56755 C...KINEMATICS CHECK
56756                 IF (XLAM(LKNT).EQ.0D0) THEN
56757                   LKNT=LKNT-1
56758                 ENDIF
56759   200         CONTINUE
56760   210       CONTINUE
56761             K=INT((KFSM+1)/2)
56762             DO 240 I=1,3
56763               DO 230 J=1,3
56764 C...~d_K -> nu_I + d_J
56765                 LKNT = LKNT+1
56766                 IDLAM(LKNT,1)= 12 +2*(I-1)
56767                 IDLAM(LKNT,2)=  1 +2*(J-1)
56768                 IDLAM(LKNT,3)=  0
56769                 XLAM(LKNT)=0D0
56770                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
56771                 IF (IMSS(52).NE.0) XLAM(LKNT) =
56772      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56773 C...KINEMATICS CHECK
56774                 IF (XLAM(LKNT).EQ.0D0) THEN
56775                   LKNT=LKNT-1
56776                 ENDIF
56777 C...~d_K -> lepton_I- + u_J
56778   220           LKNT = LKNT+1
56779                 IDLAM(LKNT,1)= 11 +2*(I-1)
56780                 IDLAM(LKNT,2)=  2 +2*(J-1)
56781                 IDLAM(LKNT,3)=  0
56782                 XLAM(LKNT)=0D0
56783                 IF (IMSS(52).NE.0) THEN
56784 C...Use massive top quark
56785                   IF (IDLAM(LKNT,2).EQ.6) THEN
56786                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT)
56787                     XLAM(LKNT) =
56788      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,2)
56789 C...If no top quark, all decay products massless
56790                   ELSE
56791                     RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
56792                     XLAM(LKNT) =
56793      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56794                   ENDIF
56795 C...KINEMATICS CHECK
56796                   IF (XLAM(LKNT).EQ.0D0) THEN
56797                     LKNT=LKNT-1
56798                   ENDIF
56799                 ENDIF
56800   230         CONTINUE
56801   240       CONTINUE
56802           ENDIF
56803 C * SUP -> LEPTON+ + D
56804           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
56805             J=NINT(KFSM/2.)
56806             DO 260 I=1,3
56807               DO 250 K=1,3
56808 C...~u_J -> lepton_I+ + d_K
56809                 LKNT = LKNT+1
56810                 IDLAM(LKNT,1)=-11 -2*(I-1)
56811                 IDLAM(LKNT,2)=  1 +2*(K-1)
56812                 IDLAM(LKNT,3)=  0
56813                 XLAM(LKNT)=0D0
56814                 RM2=RVLAMP(I,J,K)**2*SFMIX(KFSM,2*ICNT-1)**2 * SM
56815                 IF (IMSS(52).NE.0) XLAM(LKNT) =
56816      &               PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56817 C...KINEMATICS CHECK
56818                 IF (XLAM(LKNT).EQ.0D0) THEN
56819                   LKNT=LKNT-1
56820                 ENDIF
56821   250         CONTINUE
56822   260       CONTINUE
56823           ENDIF
56824         ENDIF
56825 C...BARYON NUMBER VIOLATING DECAYS
56826         IF (IMSS(53).GE.1) THEN
56827 C * SUP -> DBAR + DBAR
56828           IF(ICNT.NE.0.AND.(KFSM.EQ.2.OR.KFSM.EQ.4.OR.KFSM.EQ.6)) THEN
56829             I = KFSM/2
56830             DO 280 J=1,3
56831               DO 270 K=1,3
56832 C...~u_I -> dbar_J + dbar_K
56833                 IF (J.LT.K) THEN
56834 C...(anti-) symmetry J <-> K.
56835                   LKNT = LKNT + 1
56836                   IDLAM(LKNT,1) = -1 -2*(J-1)
56837                   IDLAM(LKNT,2) = -1 -2*(K-1)
56838                   IDLAM(LKNT,3) =  0
56839                   XLAM(LKNT)    =  0D0
56840                   RM2 = 2.*(RVLAMB(I,J,K)**2)
56841      &                 * SFMIX(KFSM,2*ICNT)**2 * SM
56842                   XLAM(LKNT)    =
56843      &                 PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56844 C...KINEMATICS CHECK
56845                   IF (XLAM(LKNT).EQ.0D0) THEN
56846                     LKNT = LKNT-1
56847                   ENDIF
56848                 ENDIF
56849   270         CONTINUE
56850   280       CONTINUE
56851           ENDIF
56852 C * SDOWN -> UBAR + DBAR
56853           IF(ICNT.NE.0.AND.(KFSM.EQ.1.OR.KFSM.EQ.3.OR.KFSM.EQ.5)) THEN
56854             K=(KFSM+1)/2
56855             DO 300 I=1,3
56856               DO 290 J=1,3
56857 C...LAMB coupling antisymmetric in J and K.
56858                 IF (J.NE.K) THEN
56859 C...~d_K -> ubar_I + dbar_K
56860                   LKNT = LKNT + 1
56861                   IDLAM(LKNT,1)= -2 -2*(I-1)
56862                   IDLAM(LKNT,2)= -1 -2*(J-1)
56863                   IDLAM(LKNT,3)=  0
56864                   XLAM(LKNT)=0D0
56865 C...Use massive top quark
56866                   IF (IDLAM(LKNT,1).EQ.-6) THEN
56867                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2*(SM-SMT
56868      &                   )
56869                     XLAM(LKNT) =
56870      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,3)
56871 C...If no top quark, all decay products massless
56872                   ELSE
56873                     RM2=2*RVLAMB(I,J,K)**2*SFMIX(KFSM,2*ICNT)**2 * SM
56874                     XLAM(LKNT) =
56875      &                   PYRVSB(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),RM2,4)
56876                   ENDIF
56877 C...KINEMATICS CHECK
56878                   IF (XLAM(LKNT).EQ.0D0) THEN
56879                     LKNT=LKNT-1
56880                   ENDIF
56881                 ENDIF
56882   290         CONTINUE
56883   300       CONTINUE
56884           ENDIF
56885         ENDIF
56886       ENDIF
56887  
56888       RETURN
56889       END
56890  
56891 C*********************************************************************
56892  
56893 C...PYRVNE
56894 C...Calculates R-violating neutralino decay widths (pure 1->3 parts).
56895 C...P. Z. Skands
56896  
56897       SUBROUTINE PYRVNE(KFIN,XLAM,IDLAM,LKNT)
56898  
56899 C...Double precision and integer declarations.
56900       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
56901       IMPLICIT INTEGER(I-N)
56902 C...Parameter statement to help give large particle numbers.
56903       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
56904      &KEXCIT=4000000,KDIMEN=5000000)
56905 C...Commonblocks.
56906       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
56907       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
56908       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
56909       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
56910      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
56911       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
56912 C...Local variables.
56913       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
56914      &     ,DCMASS,KFR(3)
56915       DOUBLE PRECISION XLAM(0:400)
56916       DOUBLE PRECISION ZPMIX(4,4), NMIX(4,4), RMQ(6)
56917       INTEGER IDLAM(400,3), PYCOMP
56918       LOGICAL DCMASS
56919       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/
56920  
56921 C...R-VIOLATING DECAYS
56922       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
56923         KFSM=KFIN-KSUSY1
56924         IF(KFSM.EQ.22.OR.KFSM.EQ.23.OR.KFSM.EQ.25.OR.KFSM.EQ.35) THEN
56925 C...WHICH NEUTRALINO ?
56926           NCHI=1
56927           IF (KFSM.EQ.23) NCHI=2
56928           IF (KFSM.EQ.25) NCHI=3
56929           IF (KFSM.EQ.35) NCHI=4
56930 C...SIGN OF MASS (Opposite convention as HERWIG)
56931           ISM = 1
56932           IF (SMZ(NCHI).LT.0D0) ISM = -ISM
56933  
56934 C...Useful parameters for the calculation of the A and B constants.
56935           WMASS = PMAS(PYCOMP(24),1)
56936           ECHG = 2*SQRT(PARU(103)*PARU(1))
56937           COSB=1/(SQRT(1+RMSS(5)**2))
56938           SINB=RMSS(5)/SQRT(1+RMSS(5)**2)
56939           COSW=SQRT(1-PARU(102))
56940           SINW=SQRT(PARU(102))
56941           GW=2D0*SQRT(PARU(103)*PARU(1))/SINW
56942 C...Run quark masses to neutralino mass squared (for Higgs-type
56943 C...couplings)
56944           SQMCHI=PMAS(PYCOMP(KFIN),1)**2
56945           DO 100 I=1,6
56946             RMQ(I)=PYMRUN(I,SQMCHI)
56947   100     CONTINUE
56948 C...EXPRESS NEUTRALINO MIXING IN (photino,Zino,~H_u,~H_d) BASIS
56949             DO 110 NCHJ=1,4
56950               ZPMIX(NCHJ,1)= ZMIX(NCHJ,1)*COSW+ZMIX(NCHJ,2)*SINW
56951               ZPMIX(NCHJ,2)=-ZMIX(NCHJ,1)*SINW+ZMIX(NCHJ,2)*COSW
56952               ZPMIX(NCHJ,3)= ZMIX(NCHJ,3)
56953               ZPMIX(NCHJ,4)= ZMIX(NCHJ,4)
56954   110       CONTINUE
56955             C1=GW*ZPMIX(NCHI,3)/(2D0*COSB*WMASS)
56956             C1U=GW*ZPMIX(NCHI,4)/(2D0*SINB*WMASS)
56957             C2=ECHG*ZPMIX(NCHI,1)
56958             C3=GW*ZPMIX(NCHI,2)/COSW
56959             EU=2D0/3D0
56960             ED=-1D0/3D0
56961 C... AB(x,y,z):
56962 C       x=1-2  : Select A or B constant     (1:A ; 2:B)
56963 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
56964 C                                    11-16:e,nu_e,mu,...)
56965 C       z=1-2  : Mass eigenstate number
56966 C...CALCULATE COUPLINGS
56967           DO 120 I = 11,15,2
56968             CMS=PMAS(PYCOMP(I),1)
56969 C...Intermediate sleptons
56970             AB(1,I,1)=ISM*(CMS*C1*SFMIX(I,1) + SFMIX(I,2)
56971      &           *(C2-C3*SINW**2))
56972             AB(1,I,2)=ISM*(CMS*C1*SFMIX(I,3) + SFMIX(I,4)
56973      &           *(C2-C3*SINW**2))
56974             AB(2,I,1)= CMS*C1*SFMIX(I,2) - SFMIX(I,1)*(C2+C3*(5D-1-SINW
56975      &           **2))
56976             AB(2,I,2)=CMS*C1*SFMIX(I,4) - SFMIX(I,3)*(C2+C3*(5D-1-SINW
56977      &           **2))
56978 C...Inermediate sneutrinos
56979             AB(1,I+1,1)=0D0
56980             AB(2,I+1,1)=5D-1*C3
56981             AB(1,I+1,2)=0D0
56982             AB(2,I+1,2)=0D0
56983 C...Inermediate sdown
56984             J=I-10
56985             CMS=RMQ(J)
56986             AB(1,J,1)=ISM*(CMS*C1*SFMIX(J,1) - SFMIX(J,2)
56987      &           *ED*(C2-C3*SINW**2))
56988             AB(1,J,2)=ISM*(CMS*C1*SFMIX(J,3) - SFMIX(J,4)
56989      &           *ED*(C2-C3*SINW**2))
56990             AB(2,J,1)=CMS*C1*SFMIX(J,2) + SFMIX(J,1)
56991      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
56992             AB(2,J,2)=CMS*C1*SFMIX(J,4) + SFMIX(J,3)
56993      &           *(ED*C2-C3*(1D0/2D0+ED*SINW**2))
56994 C...Inermediate sup
56995             J=J+1
56996             CMS=RMQ(J)
56997             AB(1,J,1)=ISM*(CMS*C1U*SFMIX(J,1) - SFMIX(J,2)
56998      &           *EU*(C2-C3*SINW**2))
56999             AB(1,J,2)=ISM*(CMS*C1U*SFMIX(J,3) - SFMIX(J,4)
57000      &           *EU*(C2-C3*SINW**2))
57001             AB(2,J,1)=CMS*C1U*SFMIX(J,2) + SFMIX(J,1)
57002      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
57003             AB(2,J,2)=CMS*C1U*SFMIX(J,4) + SFMIX(J,3)
57004      &           *(EU*C2+C3*(1D0/2D0-EU*SINW**2))
57005   120     CONTINUE
57006  
57007           IF (IMSS(51).GE.1) THEN
57008 C...LAMBDA COUPLINGS (LLE TYPE R-VIOLATION)
57009 C * CHI0_I -> NUBAR_I + LEPTON+_J + lEPTON-_K.
57010 C...STEP IN I,J,K USING SINGLE COUNTER
57011             DO 130 ISC=0,26
57012 C...LAMBDA COUPLING ASYM IN I,J
57013               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
57014                 LKNT = LKNT+1
57015                 IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
57016                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
57017                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
57018                 XLAM(LKNT)    = 0D0
57019 C...Set coupling, and decay product masses on/off
57020                 RVLAMC        = RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
57021      &               ,MOD(ISC,3)+1)**2
57022                 DCMASS=.FALSE.
57023                 IF (IDLAM(LKNT,2).EQ.-15.OR.IDLAM(LKNT,3).EQ.15)
57024      &               DCMASS = .TRUE.
57025 C...Resonance KF codes (1=I,2=J,3=K)
57026                 KFR(1)=-IDLAM(LKNT,1)
57027                 KFR(2)=-IDLAM(LKNT,2)
57028                 KFR(3)=-IDLAM(LKNT,3)
57029 C...Calculate width.
57030                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57031      &               IDLAM(LKNT,3),XLAM(LKNT))
57032                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57033 C...Charge conjugate mode.
57034                 LKNT=LKNT+1
57035                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
57036                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
57037                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
57038                 XLAM(LKNT)=XLAM(LKNT-1)
57039 C...KINEMATICS CHECK
57040                 IF (XLAM(LKNT).EQ.0D0) THEN
57041                   LKNT=LKNT-2
57042                 ENDIF
57043               ENDIF
57044   130       CONTINUE
57045           ENDIF
57046  
57047           IF (IMSS(52).GE.1) THEN
57048 C...LAMBDA' COUPLINGS. (LQD TYPE R-VIOLATION)
57049 C * CHI0 -> NUBAR_I + DBAR_J + D_K
57050             DO 140 ISC=0,26
57051               LKNT = LKNT+1
57052               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
57053               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
57054               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
57055               XLAM(LKNT)    =  0D0
57056 C...Set coupling, and decay product masses on/off
57057               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
57058      &             ,MOD(ISC,3)+1)**2
57059               DCMASS=.FALSE.
57060               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5)
57061      &             DCMASS = .TRUE.
57062 C...Resonance KF codes (1=I,2=J,3=K)
57063               KFR(1)=-IDLAM(LKNT,1)
57064               KFR(2)=-IDLAM(LKNT,2)
57065               KFR(3)=-IDLAM(LKNT,3)
57066 C...Calculate width.
57067               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57068      &             ,XLAM(LKNT))
57069               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57070 C...Charge conjugate mode.
57071               LKNT=LKNT+1
57072               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
57073               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
57074               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
57075               XLAM(LKNT)=XLAM(LKNT-1)
57076 C...KINEMATICS CHECK
57077               IF (XLAM(LKNT).EQ.0D0) THEN
57078                 LKNT=LKNT-2
57079               ENDIF
57080  
57081 C * CHI0 -> LEPTON_I+ + UBAR_J + D_K
57082               LKNT = LKNT+1
57083               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
57084               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
57085               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
57086               XLAM(LKNT)    =  0D0
57087 C...Set coupling, and decay product masses on/off
57088               RVLAMC        = 3 * RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1
57089      &             ,MOD(ISC,3)+1)**2
57090               DCMASS=.FALSE.
57091               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
57092      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
57093 C...Resonance KF codes (1=I,2=J,3=K)
57094               KFR(1)=-IDLAM(LKNT,1)
57095               KFR(2)=-IDLAM(LKNT,2)
57096               KFR(3)=-IDLAM(LKNT,3)
57097 C...Calculate width.
57098               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57099      &             ,XLAM(LKNT))
57100               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57101 C...Charge conjugate mode.
57102               LKNT=LKNT+1
57103               IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
57104               IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
57105               IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
57106               XLAM(LKNT)=XLAM(LKNT-1)
57107 C...KINEMATICS CHECK
57108               IF (XLAM(LKNT).EQ.0D0) THEN
57109                 LKNT=LKNT-2
57110               ENDIF
57111   140       CONTINUE
57112           ENDIF
57113  
57114           IF (IMSS(53).GE.1) THEN
57115 C...LAMBDA'' COUPLINGS. (UDD TYPE R-VIOLATION)
57116 C * CHI0 -> UBAR_I + DBAR_J + DBAR_K
57117             DO 150 ISC=0,26
57118 C...Symmetry J<->K. Also, LAMB antisymmetric in J and K, so no J=K.
57119               IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
57120                 LKNT = LKNT+1
57121                 IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
57122                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
57123                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
57124                 XLAM(LKNT)    =  0D0
57125 C...Set coupling, and decay product masses on/off
57126                 RVLAMC        = 6. * RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)
57127      &               +1,MOD(ISC,3)+1)**2
57128                 DCMASS=.FALSE.
57129                 IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
57130      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
57131 C...Resonance KF codes (1=I,2=J,3=K)
57132                 KFR(1) = IDLAM(LKNT,1)
57133                 KFR(2) = IDLAM(LKNT,2)
57134                 KFR(3) = IDLAM(LKNT,3)
57135 C...Calculate width.
57136                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57137      &               IDLAM(LKNT,3),XLAM(LKNT))
57138                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57139 C...Charge conjugate mode.
57140                 LKNT=LKNT+1
57141                 IDLAM(LKNT,1)=-IDLAM(LKNT-1,1)
57142                 IDLAM(LKNT,2)=-IDLAM(LKNT-1,2)
57143                 IDLAM(LKNT,3)=-IDLAM(LKNT-1,3)
57144                 XLAM(LKNT)=XLAM(LKNT-1)
57145 C...KINEMATICS CHECK
57146                 IF (XLAM(LKNT).EQ.0D0) THEN
57147                   LKNT=LKNT-2
57148                 ENDIF
57149               ENDIF
57150   150       CONTINUE
57151           ENDIF
57152         ENDIF
57153       ENDIF
57154  
57155       RETURN
57156       END
57157  
57158 C*********************************************************************
57159  
57160 C...PYRVCH
57161 C...Calculates R-violating chargino decay widths.
57162 C...P. Z. Skands
57163  
57164       SUBROUTINE PYRVCH(KFIN,XLAM,IDLAM,LKNT)
57165  
57166 C...Double precision and integer declarations.
57167       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57168       IMPLICIT INTEGER(I-N)
57169 C...Parameter statement to help give large particle numbers.
57170       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
57171      &KEXCIT=4000000,KDIMEN=5000000)
57172 C...Commonblocks.
57173       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57174       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57175       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
57176       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
57177      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
57178       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
57179 C...Local variables.
57180       DOUBLE PRECISION XLAM(0:400)
57181       INTEGER IDLAM(400,3), PYCOMP
57182 C...Information from main routine to PYRVGW
57183       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
57184      &     ,DCMASS,KFR(3)
57185 C...Auxiliary variables needed for BV (RV Gauge STOre)
57186       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
57187      &     ,RVLJKI,RVLJIK
57188 C...Running quark masses
57189       DOUBLE PRECISION RMQ(6)
57190 C...Decay product masses on/off
57191       LOGICAL DCMASS
57192       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
57193      &     /RVGSTO/
57194  
57195  
57196 C...IF R-VIOLATION ON.
57197       IF ((IMSS(51).GE.1).OR.(IMSS(52).GE.1).OR.(IMSS(53).GE.1)) THEN
57198         KFSM=KFIN-KSUSY1
57199         IF(KFSM.EQ.24.OR.KFSM.EQ.37) THEN
57200 C...WHICH CHARGINO ?
57201           NCHI = 1
57202           IF (KFSM.EQ.37) NCHI = 2
57203  
57204 C...Useful parameters for calculating the A and B constants.
57205 C...SIGN OF MASS (Opposite convention as HERWIG)
57206           ISM  = 1
57207           IF (SMW(NCHI).LT.0D0) ISM = -1
57208           WMASS   = PMAS(PYCOMP(24),1)
57209           COSB    = 1/(SQRT(1+RMSS(5)**2))
57210           SINB    = RMSS(5)/SQRT(1+RMSS(5)**2)
57211           GW2     = 4*PARU(103)*PARU(1)/PARU(102)
57212           C1U     = UMIX(NCHI,2)/(SQRT(2D0)*COSB*WMASS)
57213           C1V     = VMIX(NCHI,2)/(SQRT(2D0)*SINB*WMASS)
57214           C2      = UMIX(NCHI,1)
57215           C3      = VMIX(NCHI,1)
57216 C...Running masses at Q^2=MCHI^2.
57217           SQMCHI  = PMAS(PYCOMP(KFSM),1)**2
57218           DO 100 I=1,6
57219             RMQ(I)=PYMRUN(I,SQMCHI)
57220   100     CONTINUE
57221  
57222 C... AB(x,y,z) coefficients:
57223 C       x=1-2  : A or B coefficient  (1:A ; 2:B)
57224 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
57225 C                                    11-16:e,nu_e,mu,...)
57226 C       z=1-2  : Mass eigenstate number
57227           DO 110 I = 11,15,2
57228 C...Intermediate sleptons
57229             AB(1,I,1)   = 0D0
57230             AB(1,I,2)   = 0D0
57231             AB(2,I,1)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,2) +
57232      &           SFMIX(I,1)*C2
57233             AB(2,I,2)   = -PMAS(PYCOMP(I),1)*C1U*SFMIX(I,4) +
57234      &           SFMIX(I,3)*C2
57235 C...Intermediate sneutrinos
57236             AB(1,I+1,1) = -PMAS(PYCOMP(I),1)*C1U
57237             AB(1,I+1,2) = 0D0
57238             AB(2,I+1,1) = ISM*C3
57239             AB(2,I+1,2) = 0D0
57240 C...Intermediate sdown
57241             J=I-10
57242             AB(1,J,1)   = -RMQ(J+1)*C1V*SFMIX(J,1)
57243             AB(1,J,2)   = -RMQ(J+1)*C1V*SFMIX(J,3)
57244             AB(2,J,1)   = -ISM*(RMQ(J)*C1U*SFMIX(J,2) - SFMIX(J,1)*C2)
57245             AB(2,J,2)   = -ISM*(RMQ(J)*C1U*SFMIX(J,4) - SFMIX(J,3)*C2)
57246 C...Intermediate sup
57247             J=J+1
57248             AB(1,J,1)   = -RMQ(J-1)*C1U*SFMIX(J,1)
57249             AB(1,J,2)   = -RMQ(J-1)*C1U*SFMIX(J,3)
57250             AB(2,J,1)   = -ISM*(RMQ(J)*C1V*SFMIX(J,2) - SFMIX(J,1)*C3)
57251             AB(2,J,2)   = -ISM*(RMQ(J)*C1V*SFMIX(J,4) - SFMIX(J,3)*C3)
57252   110     CONTINUE
57253  
57254 C...LLE TYPE R-VIOLATION
57255           IF (IMSS(51).GE.1) THEN
57256 C...LOOP OVER DECAY MODES
57257             DO 140 ISC=0,26
57258  
57259 C...CHI+ -> NUBAR_I + LEPTON+_J + NU_K.
57260               IF(MOD(ISC/9,3).NE.MOD(ISC/3,3)) THEN
57261                 LKNT = LKNT+1
57262                 IDLAM(LKNT,1) = -12 -2*MOD(ISC/9,3)
57263                 IDLAM(LKNT,2) = -11 -2*MOD(ISC/3,3)
57264                 IDLAM(LKNT,3) =  12 +2*MOD(ISC,3)
57265                 XLAM(LKNT)    =  0D0
57266 C...Set coupling, and decay product masses on/off
57267                 RVLAMC        = GW2 * 5D-1 *
57268      &               RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
57269      &               **2
57270                 DCMASS=.FALSE.
57271                 IF (IDLAM(LKNT,2).EQ.-15) DCMASS = .TRUE.
57272 C...Resonance KF codes (1=I,2=J,3=K).
57273                 KFR(1) = 0
57274                 KFR(2) = 0
57275                 KFR(3) = -IDLAM(LKNT,3)+1
57276 C...Calculate width.
57277                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57278      &               IDLAM(LKNT,3),XLAM(LKNT))
57279                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57280 C...KINEMATICS CHECK
57281                 IF (XLAM(LKNT).EQ.0D0) THEN
57282                   LKNT=LKNT-1
57283                 ENDIF
57284  
57285 C * CHI+ -> NU_I + NU_J + LEPTON+_K. (NOTE: SYMM. IN I AND J)
57286   120           IF (MOD(ISC/9,3).LT.MOD(ISC/3,3)) THEN
57287                   LKNT = LKNT+1
57288                   IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
57289                   IDLAM(LKNT,2) = 12 +2*MOD(ISC/3,3)
57290                   IDLAM(LKNT,3) =-11 -2*MOD(ISC,3)
57291                   XLAM(LKNT)    = 0D0
57292 C...Set coupling, and decay product masses on/off
57293                   RVLAMC = GW2 * 5D-1 *
57294      &              RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
57295 C...I,J SYMMETRY => FACTOR 2
57296                   RVLAMC=2*RVLAMC
57297                   DCMASS=.FALSE.
57298                   IF (IDLAM(LKNT,3).EQ.-15) DCMASS = .TRUE.
57299 C...Resonance KF codes (1=I,2=J,3=K)
57300                   KFR(1)=IDLAM(LKNT,1)-1
57301                   KFR(2)=IDLAM(LKNT,2)-1
57302                   KFR(3)=0
57303 C...Calculate width.
57304                   CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57305      &                 IDLAM(LKNT,3),XLAM(LKNT))
57306                  XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57307 C...KINEMATICS CHECK
57308                   IF (XLAM(LKNT).EQ.0D0) THEN
57309                     LKNT=LKNT-1
57310                   ENDIF
57311   130           ENDIF
57312  
57313 C * CHI+ -> LEPTON+_I + LEPTON+_J + LEPTON-_K
57314                 LKNT = LKNT+1
57315                 IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
57316                 IDLAM(LKNT,2) =-11 -2*MOD(ISC/3,3)
57317                 IDLAM(LKNT,3) = 11 +2*MOD(ISC,3)
57318                 XLAM(LKNT)    = 0D0
57319 C...Set coupling, and decay product masses on/off
57320                 RVLAMC = GW2 * 5D-1 *
57321      &             RVLAM(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
57322 C...I,J SYMMETRY => FACTOR 2
57323                 RVLAMC=2*RVLAMC
57324                 DCMASS=.FALSE.
57325                 IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-15
57326      &               .OR.IDLAM(LKNT,3).EQ.15) DCMASS = .TRUE.
57327 C...Resonance KF codes (1=I,2=J,3=K)
57328                 KFR(1) =-IDLAM(LKNT,1)+1
57329                 KFR(2) =-IDLAM(LKNT,2)+1
57330                 KFR(3) = 0
57331 C...Calculate width.
57332                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57333      &               IDLAM(LKNT,3),XLAM(LKNT))
57334                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57335 C...KINEMATICS CHECK
57336                 IF (XLAM(LKNT).EQ.0D0) THEN
57337                   LKNT=LKNT-1
57338                 ENDIF
57339               ENDIF
57340   140       CONTINUE
57341           ENDIF
57342  
57343 C...LQD TYPE R-VIOLATION
57344           IF (IMSS(52).GE.1) THEN
57345 C...LOOP OVER DECAY MODES
57346             DO 180 ISC=0,26
57347  
57348 C...CHI+ -> NUBAR_I + DBAR_J + U_K
57349               LKNT = LKNT+1
57350               IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
57351               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
57352               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
57353               XLAM(LKNT)    =  0D0
57354 C...Set coupling, and decay product masses on/off
57355               RVLAMC = 3. * GW2 * 5D-1 *
57356      &           RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
57357               DCMASS=.FALSE.
57358               IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.6)
57359      &             DCMASS = .TRUE.
57360 C...Resonance KF codes (1=I,2=J,3=K)
57361               KFR(1)=0
57362               KFR(2)=0
57363               KFR(3)=-IDLAM(LKNT,3)+1
57364 C...Calculate width.
57365               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57366      &             ,XLAM(LKNT))
57367               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57368 C...KINEMATICS CHECK
57369               IF (XLAM(LKNT).EQ.0D0) THEN
57370                 LKNT=LKNT-1
57371               ENDIF
57372  
57373 C * CHI+ -> LEPTON+_I + UBAR_J + U_K.
57374   150         LKNT = LKNT+1
57375               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
57376               IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
57377               IDLAM(LKNT,3) =  2 +2*MOD(ISC,3)
57378               XLAM(LKNT)    =  0D0
57379 C...Set coupling, and decay product masses on/off
57380               RVLAMC = 3. * GW2 * 5D-1 *
57381      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
57382               DCMASS=.FALSE.
57383               IF (IDLAM(LKNT,1).EQ.-11.OR.IDLAM(LKNT,2).EQ.-6
57384      &             .OR.IDLAM(LKNT,3).EQ.6) DCMASS = .TRUE.
57385 C...Resonance KF codes (1=I,2=J,3=K)
57386               KFR(1)=0
57387               KFR(2)=0
57388               KFR(3)=-IDLAM(LKNT,3)+1
57389 C...Calculate width.
57390               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57391      &             ,XLAM(LKNT))
57392               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57393 C...KINEMATICS CHECK
57394               IF (XLAM(LKNT).EQ.0D0) THEN
57395                 LKNT=LKNT-1
57396               ENDIF
57397  
57398 C * CHI+ -> LEPTON+_I + DBAR_J + D_K.
57399   160         LKNT = LKNT+1
57400               IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
57401               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
57402               IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
57403               XLAM(LKNT)    =  0D0
57404 C...Set coupling, and decay product masses on/off
57405               RVLAMC = 3. * GW2 * 5D-1 *
57406      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
57407               DCMASS = .FALSE.
57408               IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-5
57409      &             .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
57410 C...Resonance KF codes (1=I,2=J,3=K)
57411               KFR(1)=-IDLAM(LKNT,1)+1
57412               KFR(2)=-IDLAM(LKNT,2)+1
57413               KFR(3)=0
57414 C...Calculate width.
57415               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57416      &             ,XLAM(LKNT))
57417               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57418 C...KINEMATICS CHECK
57419               IF (XLAM(LKNT).EQ.0D0) THEN
57420                 LKNT=LKNT-1
57421               ENDIF
57422  
57423 C * CHI+ -> NU_I + U_J + DBAR_K.
57424   170         LKNT = LKNT+1
57425               IDLAM(LKNT,1) = 12 +2*MOD(ISC/9,3)
57426               IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
57427               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
57428               XLAM(LKNT)    =  0D0
57429 C...Set coupling, and decay product masses on/off
57430               DCMASS = .FALSE.
57431               RVLAMC = 3. * GW2 * 5D-1 *
57432      &             RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
57433               IF (IDLAM(LKNT,2).EQ.6.OR.IDLAM(LKNT,3).EQ.-5)
57434      &             DCMASS = .TRUE.
57435 C...Resonance KF codes (1=I,2=J,3=K)
57436               KFR(1)=IDLAM(LKNT,1)-1
57437               KFR(2)=IDLAM(LKNT,2)-1
57438               KFR(3)=0
57439 C...Calculate width.
57440               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57441      &             ,XLAM(LKNT))
57442               XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57443 C...KINEMATICS CHECK
57444               IF (XLAM(LKNT).EQ.0D0) THEN
57445                 LKNT=LKNT-1
57446               ENDIF
57447  
57448   180       CONTINUE
57449           ENDIF
57450  
57451 C...UDD TYPE R-VIOLATION
57452 C...These decays need special treatment since more than one BV coupling
57453 C...contributes (with interference). Consider e.g. (symbolically)
57454 C      |M|^2 = |l''_{ijk}|^2*(PYRVI1(RES_I) + PYRVI2(RES_I))
57455 C             +|l''_{jik}|^2*(PYRVI1(RES_J) + PYRVI2(RES_J))
57456 C             +l''_{ijk}*l''_{jik}*PYRVI3(PYRVI4(RES_I,RES_J))
57457 C...The problem is that a single call to PYRVGW would evaluate all
57458 C...these terms and sum them, but without the different couplings. The
57459 C...way out is to call PYRVGW three times, once for the first line, once
57460 C...for the second line, and then once for all the lines (it is
57461 C...impossible to get just the last line out) without multiplying by
57462 C...couplings. The last line is then obtained as the result of the third
57463 C...call minus the results of the two first calls. Each term is then
57464 C...multiplied by its respective coupling before the whole thing is
57465 C...summed up in XLAM.
57466 C...Note that with three interfering resonances, this procedure becomes
57467 C...more complicated, as can be seen in the CHI+ -> 3*DBAR mode.
57468  
57469           IF (IMSS(53).GE.1) THEN
57470 C...LOOP OVER DECAY MODES
57471             DO 190 ISC=1,25
57472  
57473 C...CHI+ -> U_I + U_J + D_K
57474 C...Decay mode I<->J symmetric.
57475               IF (MOD(ISC/9,3).LE.MOD(ISC/3,3).AND.ISC.NE.13) THEN
57476                 LKNT = LKNT+1
57477                 IDLAM(LKNT,1) =  2 +2*MOD(ISC/9,3)
57478                 IDLAM(LKNT,2) =  2 +2*MOD(ISC/3,3)
57479                 IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
57480                 XLAM(LKNT)    =  0D0
57481 C...Set coupling, and decay product masses on/off
57482                 RVLAMC= 6. * GW2 * 5D-1
57483                 RVLJIK= RVLAMB(MOD(ISC/3,3)+1,MOD(ISC/9,3)+1,MOD(ISC,3)
57484      &               +1)
57485                 RVLIJK= RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
57486      &               +1)
57487                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3)) RVLAMC = 5D-1
57488      &               * RVLAMC
57489                 DCMASS=.FALSE.
57490                 IF (IDLAM(LKNT,1).EQ.6.OR.IDLAM(LKNT,2).EQ.6
57491      &               .OR.IDLAM(LKNT,3).EQ.5) DCMASS =.TRUE.
57492 C...Resonance KF codes (1=I,2=J,3=K)
57493                 KFR(1) = -IDLAM(LKNT,1)+1
57494                 KFR(2) = 0
57495                 KFR(3) = 0
57496 C...Calculate width.
57497                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57498      &               IDLAM(LKNT,3),XRESI)
57499 C...Resonance KF codes (1=I,2=J,3=K)
57500                 KFR(1) = 0
57501                 KFR(2) = -IDLAM(LKNT,2)+1
57502                 KFR(3) = 0
57503 C...Calculate width.
57504                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57505      &               IDLAM(LKNT,3),XRESJ)
57506 C...Resonance KF codes (1=I,2=J,3=K)
57507                 KFR(1) = -IDLAM(LKNT,1)+1
57508                 KFR(2) = -IDLAM(LKNT,2)+1
57509                 KFR(3) = 0
57510 C...Calculate width.
57511                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57512      &               IDLAM(LKNT,3),XRESIJ)
57513                 IF (ABS(XRESI+XRESJ-XRESIJ).GT.1D-4*XRESIJ) THEN
57514                   XRESIJ = XRESIJ-XRESI-XRESJ
57515                 ELSE
57516                   XRESIJ = 0D0
57517                 ENDIF
57518 C...CALCULATE TOTAL WIDTH
57519                 XLAM(LKNT) = RVLJIK**2 * XRESI + RVLIJK**2 * XRESJ
57520      &               + RVLJIK*RVLIJK * XRESIJ
57521                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57522 C...KINEMATICS CHECK
57523                 IF (XLAM(LKNT).EQ.0D0) THEN
57524                   LKNT=LKNT-1
57525                 ENDIF
57526               ENDIF
57527 C...CHI+ -> DBAR_I + DBAR_J + DBAR_K
57528 C...Symmetry I<->J<->K.
57529               IF ((MOD(ISC/9,3).LE.MOD(ISC/3,3)).AND.(MOD(ISC/3,3).LE
57530      &             .MOD(ISC,3)).AND.ISC.NE.13) THEN
57531                 LKNT = LKNT+1
57532                 IDLAM(LKNT,1) = -1 -2*MOD(ISC/9,3)
57533                 IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
57534                 IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
57535                 XLAM(LKNT)    =  0D0
57536 C...Set coupling, and decay product masses on/off
57537                 RVLAMC = 6. * GW2 * 5D-1
57538                 RVLIJK = RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)
57539      &               +1)
57540                 RVLKIJ = RVLAMB(MOD(ISC,3)+1,MOD(ISC/9,3)+1,MOD(ISC/3,3)
57541      &               +1)
57542                 RVLJKI = RVLAMB(MOD(ISC/3,3)+1,MOD(ISC,3)+1,MOD(ISC/9,3)
57543      &               +1)
57544                 DCMASS = .FALSE.
57545                 IF (IDLAM(LKNT,1).EQ.-5.OR.IDLAM(LKNT,2).EQ.-5
57546      &               .OR.IDLAM(LKNT,3).EQ.-5) DCMASS = .TRUE.
57547 C...Collect symmetry factors
57548                 IF (MOD(ISC/9,3).EQ.MOD(ISC/3,3).OR.MOD(ISC/3,3).EQ
57549      &               .MOD(ISC,3).OR.MOD(ISC/9,3).EQ.MOD(ISC,3))
57550      &               RVLAMC = 5D-1 * RVLAMC
57551 C...Resonance KF codes (1=I,2=J,3=K)
57552                 KFR(1) = IDLAM(LKNT,1)-1
57553                 KFR(2) = 0
57554                 KFR(3) = 0
57555 C...Calculate width.
57556                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57557      &               IDLAM(LKNT,3),XRESI)
57558 C...Resonance KF codes (1=I,2=J,3=K)
57559                 KFR(1) = 0
57560                 KFR(2) = IDLAM(LKNT,2)-1
57561                 KFR(3) = 0
57562 C...Calculate width.
57563                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57564      &               IDLAM(LKNT,3),XRESJ)
57565 C...Resonance KF codes (1=I,2=J,3=K)
57566                 KFR(1) = 0
57567                 KFR(2) = 0
57568                 KFR(3) = IDLAM(LKNT,3)-1
57569 C...Calculate width.
57570                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57571      &               IDLAM(LKNT,3),XRESK)
57572 C...Resonance KF codes (1=I,2=J,3=K)
57573                 KFR(1) = IDLAM(LKNT,1)-1
57574                 KFR(2) = IDLAM(LKNT,2)-1
57575                 KFR(3) = 0
57576 C...Calculate width.
57577                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57578      &               IDLAM(LKNT,3),XRESIJ)
57579                 IF (ABS(XRESI+XRESJ-XRESIJ).GT.1D-4*(XRESI+XRESJ)) THEN
57580                   XRESIJ = XRESI+XRESJ-XRESIJ
57581                 ELSE
57582                   XRESIJ = 0D0
57583                 ENDIF
57584 C...Resonance KF codes (1=I,2=J,3=K)
57585                 KFR(1) = 0
57586                 KFR(2) = IDLAM(LKNT,2)-1
57587                 KFR(3) = IDLAM(LKNT,3)-1
57588 C...Calculate width.
57589                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57590      &               IDLAM(LKNT,3),XRESJK)
57591                 IF (ABS(XRESJ+XRESK-XRESJK).GT.1D-4*(XRESJ+XRESK)) THEN
57592                   XRESJK = XRESJ+XRESK-XRESJK
57593                 ELSE
57594                   XRESJK = 0D0
57595                 ENDIF
57596 C...Resonance KF codes (1=I,2=J,3=K)
57597                 KFR(1) = IDLAM(LKNT,1)-1
57598                 KFR(2) = 0
57599                 KFR(3) = IDLAM(LKNT,3)-1
57600 C...Calculate width.
57601                 CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),
57602      &               IDLAM(LKNT,3),XRESIK)
57603                 IF (ABS(XRESI+XRESK-XRESIK).GT.1D-4*(XRESI+XRESK)) THEN
57604                   XRESIK = XRESI+XRESK-XRESIK
57605                 ELSE
57606                   XRESIK = 0D0
57607                 ENDIF
57608 C...CALCULATE TOTAL WIDTH
57609                 XLAM(LKNT) =
57610      &                 RVLIJK**2 * XRESI
57611      &               + RVLJKI**2 * XRESJ
57612      &               + RVLKIJ**2 * XRESK
57613      &               + RVLIJK*RVLJKI * XRESIJ
57614      &               + RVLIJK*RVLKIJ * XRESIK
57615      &               + RVLJKI*RVLKIJ * XRESJK
57616                 XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2.*PARU(1)*RMS(0))**3*32)
57617 C...KINEMATICS CHECK
57618                 IF (XLAM(LKNT).EQ.0D0) THEN
57619                   LKNT=LKNT-1
57620                 ENDIF
57621               ENDIF
57622   190       CONTINUE
57623           ENDIF
57624         ENDIF
57625       ENDIF
57626  
57627       RETURN
57628       END
57629  
57630 C*********************************************************************
57631  
57632 C...PYRVGL
57633 C...Calculates R-violating gluino decay widths.
57634 C...See BV part of PYRVCH for comments about the way the BV decay width
57635 C...is calculated. Same comments apply here.
57636 C...P. Z. Skands
57637  
57638       SUBROUTINE PYRVGL(KFIN,XLAM,IDLAM,LKNT)
57639  
57640 C...Double precision and integer declarations.
57641       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
57642       IMPLICIT INTEGER(I-N)
57643 C...Parameter statement to help give large particle numbers.
57644       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
57645      &KEXCIT=4000000,KDIMEN=5000000)
57646 C...Commonblocks.
57647       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57648       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57649       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
57650       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
57651      &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
57652       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
57653 C...Local variables.
57654       DOUBLE PRECISION XLAM(0:400)
57655       INTEGER IDLAM(400,3), PYCOMP
57656 C...Information from main routine to PYRVGW
57657       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
57658      &     ,DCMASS,KFR(3)
57659 C...Auxiliary variables needed for BV (RV Gauge STOre)
57660       COMMON/RVGSTO/XRESI,XRESJ,XRESK,XRESIJ,XRESIK,XRESJK,RVLIJK,RVLKIJ
57661      &     ,RVLJKI,RVLJIK
57662 C...Running quark masses
57663       DOUBLE PRECISION RMQ(6)
57664 C...Decay product masses on/off
57665       LOGICAL DCMASS
57666       SAVE /PYDAT1/,/PYDAT2/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYRVNV/,
57667      &     /RVGSTO/
57668  
57669 C...IF LQD OR UDD TYPE R-VIOLATION ON.
57670       IF (IMSS(52).GE.1.OR.IMSS(53).GE.1) THEN
57671         KFSM=KFIN-KSUSY1
57672  
57673 C... AB(x,y,z):
57674 C       x=1-2  : Select A or B coupling     (1:A ; 2:B)
57675 C       y=1-16 : Sparticle's SM code (1-6:d,u,s,c,b,t ;
57676 C                                    11-16:e,nu_e,mu,... not used here)
57677 C       z=1-2  : Mass eigenstate number
57678         DO 100 I = 1,6
57679 C...A Couplings
57680           AB(1,I,1) = SFMIX(I,2)
57681           AB(1,I,2) = SFMIX(I,4)
57682 C...B Couplings
57683           AB(2,I,1) = -SFMIX(I,1)
57684           AB(2,I,2) = -SFMIX(I,3)
57685   100   CONTINUE
57686         GSTR2 = 4D0*PARU(1) * PYALPS(PMAS(PYCOMP(KFIN),1)**2)
57687 C...LQD DECAYS.
57688         IF (IMSS(52).GE.1) THEN
57689 C...STEP IN I,J,K USING SINGLE COUNTER
57690           DO 120 ISC=0,26
57691 C * GLUINO -> NUBAR_I + DBAR_J + D_K.
57692             LKNT          = LKNT+1
57693             IDLAM(LKNT,1) =-12 -2*MOD(ISC/9,3)
57694             IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
57695             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
57696             XLAM(LKNT)=0D0
57697 C...Set coupling, and decay product masses on/off
57698             RVLAMC=RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)**2
57699      &           * 5D-1 * GSTR2
57700             DCMASS        = .FALSE.
57701             IF (IDLAM(LKNT,2).EQ.-5.OR.IDLAM(LKNT,3).EQ.5) DCMASS=.TRUE.
57702 C...Resonance KF codes (1=I,2=J,3=K)
57703             KFR(1)        = 0
57704             KFR(2)        = -IDLAM(LKNT,2)
57705             KFR(3)        = -IDLAM(LKNT,3)
57706 C...Calculate width.
57707             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57708      &           ,XLAM(LKNT))
57709 C...Normalize
57710             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57711 C...Charge conjugate mode.
57712   110       LKNT          = LKNT+1
57713             IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
57714             IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
57715             IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
57716             XLAM(LKNT)    = XLAM(LKNT-1)
57717 C...KINEMATICS CHECK
57718             IF (XLAM(LKNT).EQ.0D0) THEN
57719               LKNT=LKNT-2
57720             ENDIF
57721  
57722 C * GLUINO -> LEPTON+_I + UBAR_J + D_K
57723             LKNT = LKNT+1
57724             IDLAM(LKNT,1) =-11 -2*MOD(ISC/9,3)
57725             IDLAM(LKNT,2) = -2 -2*MOD(ISC/3,3)
57726             IDLAM(LKNT,3) =  1 +2*MOD(ISC,3)
57727             XLAM(LKNT)=0D0
57728 C...Set coupling, and decay product masses on/off
57729             RVLAMC = RVLAMP(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
57730      &           **2* 5D-1 * GSTR2
57731             DCMASS        = .FALSE.
57732             IF (IDLAM(LKNT,1).EQ.-15.OR.IDLAM(LKNT,2).EQ.-6
57733      &           .OR.IDLAM(LKNT,3).EQ.5) DCMASS = .TRUE.
57734 C...Resonance KF codes (1=I,2=J,3=K)
57735             KFR(1)        = 0
57736             KFR(2)        = -IDLAM(LKNT,2)
57737             KFR(3)        = -IDLAM(LKNT,3)
57738 C...Calculate width.
57739             CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57740      &           ,XLAM(LKNT))
57741             XLAM(LKNT)=XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57742 C...Charge conjugate mode.
57743             LKNT=LKNT+1
57744             IDLAM(LKNT,1) = -IDLAM(LKNT-1,1)
57745             IDLAM(LKNT,2) = -IDLAM(LKNT-1,2)
57746             IDLAM(LKNT,3) = -IDLAM(LKNT-1,3)
57747             XLAM(LKNT)    =  XLAM(LKNT-1)
57748 C...KINEMATICS CHECK
57749             IF (XLAM(LKNT).EQ.0D0) THEN
57750               LKNT=LKNT-2
57751             ENDIF
57752  
57753   120     CONTINUE
57754         ENDIF
57755  
57756 C...UDD DECAYS.
57757         IF (IMSS(53).GE.1) THEN
57758 C...STEP IN I,J,K USING SINGLE COUNTER
57759           DO 130 ISC=0,26
57760 C * GLUINO -> UBAR_I + DBAR_J + DBAR_K.
57761             IF (MOD(ISC/3,3).LT.MOD(ISC,3)) THEN
57762               LKNT          = LKNT+1
57763               IDLAM(LKNT,1) = -2 -2*MOD(ISC/9,3)
57764               IDLAM(LKNT,2) = -1 -2*MOD(ISC/3,3)
57765               IDLAM(LKNT,3) = -1 -2*MOD(ISC,3)
57766               XLAM(LKNT)=0D0
57767 C...Set coupling, and decay product masses on/off. A factor of 2 for
57768 C...(N_C-1) has been used to cancel a factor 0.5.
57769               RVLAMC=RVLAMB(MOD(ISC/9,3)+1,MOD(ISC/3,3)+1,MOD(ISC,3)+1)
57770      &             **2 * GSTR2
57771               DCMASS        = .FALSE.
57772               IF (IDLAM(LKNT,1).EQ.-6.OR.IDLAM(LKNT,2).EQ.-5
57773      &             .OR.IDLAM(LKNT,3).EQ.-5) DCMASS=.TRUE.
57774 C...Resonance KF codes (1=I,2=J,3=K)
57775               KFR(1)        = IDLAM(LKNT,1)
57776               KFR(2)        = 0
57777               KFR(3)        = 0
57778 C...Calculate width.
57779               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57780      &             ,XRESI)
57781 C...Resonance KF codes (1=I,2=J,3=K)
57782               KFR(1)        = 0
57783               KFR(2)        = IDLAM(LKNT,2)
57784               KFR(3)        = 0
57785 C...Calculate width.
57786               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57787      &             ,XRESJ)
57788 C...Resonance KF codes (1=I,2=J,3=K)
57789               KFR(1)        = 0
57790               KFR(2)        = 0
57791               KFR(3)        = IDLAM(LKNT,3)
57792 C...Calculate width.
57793               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57794      &             ,XRESK)
57795 C...Resonance KF codes (1=I,2=J,3=K)
57796               KFR(1)        = IDLAM(LKNT,1)
57797               KFR(2)        = IDLAM(LKNT,2)
57798               KFR(3)        = 0
57799 C...Calculate width.
57800               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57801      &             ,XRESIJ)
57802 C...Calculate interference function. (Factor -1/2 to make up for factor
57803 C...-2 in PYRVGW.
57804               IF (ABS(XRESI+XRESJ-XRESIJ).GT.1D-4*XRESIJ) THEN
57805                 XRESIJ = 5D-1 * (XRESI+XRESJ-XRESIJ)
57806               ELSE
57807                 XRESIJ = 0D0
57808               ENDIF
57809 C...Resonance KF codes (1=I,2=J,3=K)
57810               KFR(1)        = 0
57811               KFR(2)        = IDLAM(LKNT,2)
57812               KFR(3)        = IDLAM(LKNT,3)
57813 C...Calculate width.
57814               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57815      &             ,XRESJK)
57816               IF (ABS(XRESJ+XRESK-XRESJK).GT.1D-4*XRESJK) THEN
57817                 XRESJK = 5D-1 * (XRESJ+XRESK-XRESJK)
57818               ELSE
57819                 XRESJK = 0D0
57820               ENDIF
57821 C...Resonance KF codes (1=I,2=J,3=K)
57822               KFR(1)        = IDLAM(LKNT,1)
57823               KFR(2)        = 0
57824               KFR(3)        = IDLAM(LKNT,3)
57825 C...Calculate width.
57826               CALL PYRVGW(KFIN,IDLAM(LKNT,1),IDLAM(LKNT,2),IDLAM(LKNT,3)
57827      &             ,XRESIK)
57828               IF (ABS(XRESI+XRESK-XRESIK).GT.1D-4*XRESIK) THEN
57829                 XRESIK = 5D-1 * (XRESI+XRESK-XRESIK)
57830               ELSE
57831                 XRESIK = 0D0
57832               ENDIF
57833 C...Calculate total width (factor 1/2 from 1/(N_C-1))
57834               XLAM(LKNT) = XRESI + XRESJ + XRESK
57835      &             + 5D-1 * (XRESIJ + XRESIK + XRESJK)
57836 C...Normalize
57837               XLAM(LKNT) = XLAM(LKNT)*RVLAMC/((2*PARU(1)*RMS(0))**3*32)
57838 C...Charge conjugate mode.
57839               LKNT          = LKNT+1
57840               IDLAM(LKNT,1) =-IDLAM(LKNT-1,1)
57841               IDLAM(LKNT,2) =-IDLAM(LKNT-1,2)
57842               IDLAM(LKNT,3) =-IDLAM(LKNT-1,3)
57843               XLAM(LKNT)    = XLAM(LKNT-1)
57844 C...KINEMATICS CHECK
57845               IF (XLAM(LKNT).EQ.0D0) THEN
57846                 LKNT=LKNT-2
57847               ENDIF
57848             ENDIF
57849   130     CONTINUE
57850         ENDIF
57851       ENDIF
57852       RETURN
57853       END
57854  
57855 C*********************************************************************
57856  
57857 C...PYRVSB
57858 C...Auxiliary function to PYRVSF for calculating R-Violating
57859 C...sfermion widths. Though the decay products are most often treated
57860 C...as massless in the calculation, the kinematical boundary of phase
57861 C...space is tested using the true masses.
57862 C...MODE = 1: All decay products massive
57863 C...MODE = 2: Decay product 1 massless
57864 C...MODE = 3: Decay product 2 massless
57865 C...MODE = 4: All decay products  massless
57866  
57867       FUNCTION PYRVSB(KFIN,ID1,ID2,RM2,MODE)
57868  
57869       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
57870       IMPLICIT INTEGER (I-N)
57871       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
57872       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57873       SAVE /PYDAT1/,/PYDAT2/
57874       DOUBLE PRECISION SM(3)
57875       INTEGER PYCOMP, KC(3)
57876       KC(1)=PYCOMP(KFIN)
57877       KC(2)=PYCOMP(ID1)
57878       KC(3)=PYCOMP(ID2)
57879       SM(1)=PMAS(KC(1),1)**2
57880       SM(2)=PMAS(KC(2),1)**2
57881       SM(3)=PMAS(KC(3),1)**2
57882 C...Kinematics check
57883       IF ((SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2).LE.0D0) THEN
57884         PYRVSB=0D0
57885         RETURN
57886       ENDIF
57887 C...CM momenta squared
57888       IF (MODE.EQ.1) THEN
57889         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1)+PMAS(KC(3),1))**2)
57890      &       * (SM(1)-(PMAS(KC(2),1)-PMAS(KC(3),1))**2)
57891       ELSE IF (MODE.EQ.2) THEN
57892         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(3),1))**2)**2
57893       ELSE IF (MODE.EQ.3) THEN
57894         P2CM=1./(4*SM(1))*(SM(1)-(PMAS(KC(2),1))**2)**2
57895       ELSE
57896         P2CM=SM(1)/4.
57897       ENDIF
57898 C...Calculate Width
57899       PYRVSB=RM2*SQRT(MAX(0D0,P2CM))/(8*PARU(1)*SM(1))
57900       RETURN
57901       END
57902  
57903 C*********************************************************************
57904  
57905 C...PYRVGW
57906 C...Generalized Matrix Element for R-Violating 3-body widths.
57907 C...P. Z. Skands
57908       SUBROUTINE PYRVGW(KFIN,ID1,ID2,ID3,XLAM)
57909  
57910       IMPLICIT DOUBLE PRECISION (A-H,O-Z)
57911       IMPLICIT INTEGER (I-N)
57912       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
57913      &KEXCIT=4000000,KDIMEN=5000000)
57914       PARAMETER (EPS=1D-4)
57915       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
57916       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
57917      &     ,DCMASS,KFR(3)
57918       COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2),
57919      & SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2)
57920       DOUBLE PRECISION XLIM(3,3)
57921       INTEGER KC(0:3), PYCOMP
57922       LOGICAL DCMASS, DCHECK(6)
57923       SAVE /PYDAT2/,/PYRVNV/,/PYSSMT/
57924  
57925       XLAM   = 0D0
57926  
57927       KC(0)  = PYCOMP(KFIN)
57928       KC(1)  = PYCOMP(ID1)
57929       KC(2)  = PYCOMP(ID2)
57930       KC(3)  = PYCOMP(ID3)
57931       RMS(0) = PMAS(KC(0),1)
57932       RMS(1) = PYMRUN(ID1,PMAS(KC(1),1)**2)
57933       RMS(2) = PYMRUN(ID2,PMAS(KC(2),1)**2)
57934       RMS(3) = PYMRUN(ID3,PMAS(KC(3),1)**2)
57935 C...INITIALIZE OUTER INTEGRATION LIMITS AND KINEMATICS CHECK
57936       XLIM(1,1)=(RMS(1)+RMS(2))**2
57937       XLIM(1,2)=(RMS(0)-RMS(3))**2
57938       XLIM(1,3)=XLIM(1,2)-XLIM(1,1)
57939       XLIM(2,1)=(RMS(2)+RMS(3))**2
57940       XLIM(2,2)=(RMS(0)-RMS(1))**2
57941       XLIM(2,3)=XLIM(2,2)-XLIM(2,1)
57942       XLIM(3,1)=(RMS(1)+RMS(3))**2
57943       XLIM(3,2)=(RMS(0)-RMS(2))**2
57944       XLIM(3,3)=XLIM(3,2)-XLIM(3,1)
57945 C...Check Phase Space
57946       IF (XLIM(1,3).LT.0D0.OR.XLIM(2,3).LT.0D0.OR.XLIM(3,3).LT.0D0) THEN
57947         RETURN
57948       ENDIF
57949  
57950 C...INITIALIZE RESONANCE INFORMATION
57951       DO 110 JRES = 1,3
57952         DO 100 IMASS = 1,2
57953           IRES = 2*(JRES-1)+IMASS
57954           INTRES(IRES,1) = 0
57955           DCHECK(IRES)   =.FALSE.
57956 C...NO RIGHT-HANDED NEUTRINOS
57957           IF (((IMASS.EQ.2).AND.((IABS(KFR(JRES)).EQ.12).OR
57958      &         .(IABS(KFR(JRES)).EQ.14).OR.(IABS(KFR(JRES)).EQ.16))).OR
57959      &         .KFR(JRES).EQ.0) GOTO 100
57960           RES(IRES,1) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),1)
57961           RES(IRES,2) = PMAS(PYCOMP(IMASS*KSUSY1+IABS(KFR(JRES))),2)
57962           INTRES(IRES,1) = IABS(KFR(JRES))
57963           INTRES(IRES,2) = IMASS
57964           IF (KFR(JRES).LT.0) INTRES(IRES,3) = 1
57965           IF (KFR(JRES).GT.0) INTRES(IRES,3) = 0
57966   100   CONTINUE
57967   110 CONTINUE
57968  
57969 C...SUM OVER DIAGRAMS AND INTEGRATE OVER PHASE SPACE
57970  
57971 C...RESONANCE CONTRIBUTIONS
57972 C...(Only sum contributions where the resonance is off shell).
57973 C...Store whether diagram on/off in DCHECK.
57974 C...LOOP OVER MASS STATES
57975       DO 120 J=1,2
57976         IDR=J
57977         IF(INTRES(IDR,1).NE.0) THEN
57978 
57979         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
57980         IF ((RMS(0).LT.(RMS(1)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(2)
57981      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
57982           DCHECK(IDR) =.TRUE.
57983           XLAM = XLAM + TMIX * PYRVI1(2,3,1)
57984         ENDIF
57985         ENDIF
57986  
57987         IDR=J+2
57988         IF(INTRES(IDR,1).NE.0) THEN
57989         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
57990         IF ((RMS(0).LT.(RMS(2)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
57991      &       +RMS(3)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
57992           DCHECK(IDR) =.TRUE.
57993           XLAM = XLAM + TMIX * PYRVI1(1,3,2)
57994         ENDIF
57995         ENDIF
57996  
57997         IDR=J+4
57998         IF(INTRES(IDR,1).NE.0) THEN
57999         TMIX = SFMIX(INTRES(IDR,1),2*J+INTRES(IDR,3)-1)**2
58000         IF ((RMS(0).LT.(RMS(3)+RES(IDR,1)).OR.(RES(IDR,1).LT.(RMS(1)
58001      &       +RMS(2)))).AND.TMIX.GT.EPS.AND.INTRES(IDR,1).NE.0) THEN
58002           DCHECK(IDR) =.TRUE.
58003           XLAM = XLAM + TMIX * PYRVI1(1,2,3)
58004         ENDIF
58005         ENDIF
58006   120 CONTINUE
58007 C... L-R INTERFERENCES
58008 C... (Only add contributions where both contributing diagrams
58009 C... are non-resonant).
58010       IDR=1
58011       IF (DCHECK(1).AND.DCHECK(2)) THEN
58012 C...Bug corrected 11/12 2001. Skands.
58013         XLAM  = XLAM + 2D0 * PYRVI2(2,3,1)
58014      &     * SFMIX(INTRES(1,1),2+INTRES(1,3)-1)
58015      &     * SFMIX(INTRES(2,1),4+INTRES(2,3)-1)
58016       ENDIF
58017  
58018       IDR=3
58019       IF (DCHECK(3).AND.DCHECK(4)) THEN
58020         XLAM  = XLAM + 2D0 * PYRVI2(1,3,2)
58021      &     * SFMIX(INTRES(3,1),2+INTRES(3,3)-1)
58022      &     * SFMIX(INTRES(4,1),4+INTRES(4,3)-1)
58023       ENDIF
58024  
58025       IDR=5
58026       IF (DCHECK(5).AND.DCHECK(6)) THEN
58027         XLAM  = XLAM + 2D0 * PYRVI2(1,2,3)
58028      &     * SFMIX(INTRES(5,1),2+INTRES(5,3)-1)
58029      &     * SFMIX(INTRES(6,1),4+INTRES(6,3)-1)
58030       ENDIF
58031 C... TRUE INTERFERENCES
58032 C... (Only add contributions where both contributing diagrams
58033 C... are non-resonant).
58034       PREF=-2D0
58035       IF ((KFIN-KSUSY1).EQ.24.OR.(KFIN-KSUSY1).EQ.37) PREF=2D0
58036       DO 140 IKR1 = 1,2
58037         DO 130 IKR2 = 1,2
58038           IDR  = IKR1+2
58039           IDR2 = IKR2
58040           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
58041             XLAM = XLAM + PREF*PYRVI3(1,3,2) *
58042      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
58043      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
58044           ENDIF
58045  
58046           IDR  = IKR1+4
58047           IDR2 = IKR2
58048           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
58049             XLAM = XLAM + PREF*PYRVI3(1,2,3) *
58050      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
58051      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
58052           ENDIF
58053  
58054           IDR  = IKR1+4
58055           IDR2 = IKR2+2
58056           IF (DCHECK(IDR).AND.DCHECK(IDR2)) THEN
58057             XLAM = XLAM + PREF*PYRVI3(2,1,3) *
58058      &           SFMIX(INTRES(IDR,1),2*IKR1+INTRES(IDR,3)-1)
58059      &           *SFMIX(INTRES(IDR2,1),2*IKR2+INTRES(IDR2,3)-1)
58060           ENDIF
58061   130   CONTINUE
58062   140 CONTINUE
58063  
58064       RETURN
58065       END
58066  
58067 C*********************************************************************
58068  
58069 C...PYRVI1
58070 C...Function to integrate resonance contributions
58071  
58072       FUNCTION PYRVI1(ID1,ID2,ID3)
58073  
58074       IMPLICIT NONE
58075       DOUBLE PRECISION LO,HI,PYRVI1,PYRVG1,PYGAUS
58076       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
58077       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
58078       LOGICAL MFLAG,DCMASS
58079       EXTERNAL PYRVG1,PYGAUS
58080       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
58081      &     ,DCMASS,KFR(3)
58082       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
58083       SAVE/PYRVNV/,/PYRVPM/
58084 C...Initialize mass and width information
58085       PYRVI1 = 0D0
58086       RM(0)  = RMS(0)
58087       RM(1)  = RMS(ID1)
58088       RM(2)  = RMS(ID2)
58089       RM(3)  = RMS(ID3)
58090       RESM(1)= RES(IDR,1)
58091       RESW(1)= RES(IDR,2)
58092 C...A->B and B->A for antisparticles
58093       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
58094       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
58095 C...Integration boundaries and mass flag
58096       LO     = (RM(1)+RM(2))**2
58097       HI     = (RM(0)-RM(3))**2
58098       MFLAG  = DCMASS
58099       PYRVI1 = PYGAUS(PYRVG1,LO,HI,1D-3)
58100       RETURN
58101       END
58102  
58103 C*********************************************************************
58104  
58105 C...PYRVI2
58106 C...Function to integrate L-R interference contributions
58107  
58108       FUNCTION PYRVI2(ID1,ID2,ID3)
58109  
58110       IMPLICIT NONE
58111       DOUBLE PRECISION LO,HI,PYRVI2, PYRVG2, PYGAUS
58112       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
58113       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
58114       LOGICAL MFLAG,DCMASS
58115       EXTERNAL PYRVG2,PYGAUS
58116       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
58117      &     ,DCMASS,KFR(3)
58118       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
58119       SAVE/PYRVNV/,/PYRVPM/
58120 C...Initialize mass and width information
58121       PYRVI2 = 0D0
58122       RM(0)  = RMS(0)
58123       RM(1)  = RMS(ID1)
58124       RM(2)  = RMS(ID2)
58125       RM(3)  = RMS(ID3)
58126       RESM(1)= RES(IDR,1)
58127       RESW(1)= RES(IDR,2)
58128       RESM(2)= RES(IDR+1,1)
58129       RESW(2)= RES(IDR+1,2)
58130 C...A->B and B->A for antisparticles
58131       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
58132       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
58133       A(2)   = AB(1+INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
58134       B(2)   = AB(2-INTRES(IDR+1,3),INTRES(IDR+1,1),INTRES(IDR+1,2))
58135 C...Boundaries and mass flag
58136       LO     = (RM(1)+RM(2))**2
58137       HI     = (RM(0)-RM(3))**2
58138       MFLAG  = DCMASS
58139       PYRVI2 = PYGAUS(PYRVG2,LO,HI,1D-3)
58140       RETURN
58141       END
58142  
58143 C*********************************************************************
58144  
58145 C...PYRVI3
58146 C...Function to integrate true interference contributions
58147  
58148       FUNCTION PYRVI3(ID1,ID2,ID3)
58149  
58150       IMPLICIT NONE
58151       DOUBLE PRECISION LO,HI,PYRVI3, PYRVG3, PYGAUS
58152       DOUBLE PRECISION RES, AB, RM, RESM, RESW, A, B, RMS
58153       INTEGER ID1,ID2,ID3, IDR, IDR2, KFR, INTRES
58154       LOGICAL MFLAG,DCMASS
58155       EXTERNAL PYRVG3,PYGAUS
58156       COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,2),INTRES(6,3),IDR,IDR2
58157      &     ,DCMASS,KFR(3)
58158       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
58159       SAVE/PYRVNV/,/PYRVPM/
58160 C...Initialize mass and width information
58161       PYRVI3 = 0D0
58162       RM(0)  = RMS(0)
58163       RM(1)  = RMS(ID1)
58164       RM(2)  = RMS(ID2)
58165       RM(3)  = RMS(ID3)
58166       RESM(1)= RES(IDR,1)
58167       RESW(1)= RES(IDR,2)
58168       RESM(2)= RES(IDR2,1)
58169       RESW(2)= RES(IDR2,2)
58170 C...A -> B and B -> A for antisparticles
58171       A(1)   = AB(1+INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
58172       B(1)   = AB(2-INTRES(IDR,3),INTRES(IDR,1),INTRES(IDR,2))
58173       A(2)   = AB(1+INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
58174       B(2)   = AB(2-INTRES(IDR2,3),INTRES(IDR2,1),INTRES(IDR2,2))
58175 C...Boundaries and mass flag
58176       LO     = (RM(1)+RM(2))**2
58177       HI     = (RM(0)-RM(3))**2
58178       MFLAG  = DCMASS
58179       PYRVI3 = PYGAUS(PYRVG3,LO,HI,1D-3)
58180       RETURN
58181       END
58182  
58183 C*********************************************************************
58184  
58185 C...PYRVG1
58186 C...Integrand for resonance contributions
58187  
58188       FUNCTION PYRVG1(X)
58189  
58190       IMPLICIT NONE
58191       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
58192       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY,PYRVR
58193       DOUBLE PRECISION RVR,PYRVG1,E2,E3,C1,SR1,SR2,A1,A2
58194       LOGICAL MFLAG
58195       SAVE/PYRVPM/
58196       RVR    = PYRVR(X,RESM(1),RESW(1))
58197       C1     = 2D0*SQRT(MAX(0D0,X))
58198       IF (.NOT.MFLAG) THEN
58199         E2     = X/C1
58200         E3     = (RM(0)**2-X)/C1
58201         DELTAY = 4D0*E2*E3
58202         PYRVG1 = DELTAY*RVR*X*(A(1)**2+B(1)**2)*(RM(0)**2-X)
58203       ELSE
58204         E2     = (X-RM(1)**2+RM(2)**2)/C1
58205         E3     = (RM(0)**2-X-RM(3)**2)/C1
58206         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
58207         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
58208         DELTAY = 4D0*SR1*SR2
58209         A1     = 4.*A(1)*B(1)*RM(3)*RM(0)
58210         A2     = (A(1)**2+B(1)**2)*(RM(0)**2+RM(3)**2-X)
58211         PYRVG1 = DELTAY*RVR*(X-RM(1)**2-RM(2)**2)*(A1+A2)
58212       ENDIF
58213       RETURN
58214       END
58215  
58216 C*********************************************************************
58217  
58218 C...PYRVG2
58219 C...Integrand for L-R interference contributions
58220  
58221       FUNCTION PYRVG2(X)
58222  
58223       IMPLICIT NONE
58224       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
58225       DOUBLE PRECISION X, RM, A, B, RESM, RESW, DELTAY, PYRVS
58226       DOUBLE PRECISION RVS,PYRVG2,E2,E3,C1,SR1,SR2
58227       LOGICAL MFLAG
58228       SAVE/PYRVPM/
58229       C1     = 2D0*SQRT(MAX(0D0,X))
58230       RVS    = PYRVS(X,X,RESM(1),RESW(1),RESM(2),RESW(2))
58231       IF (.NOT.MFLAG) THEN
58232         E2     = X/C1
58233         E3     = (RM(0)**2-X)/C1
58234         DELTAY = 4D0*E2*E3
58235         PYRVG2 = DELTAY*RVS*X*(A(1)*A(2)+B(1)*B(2))*(RM(0)**2-X)
58236       ELSE
58237         E2     = (X-RM(1)**2+RM(2)**2)/C1
58238         E3     = (RM(0)**2-X-RM(3)**2)/C1
58239         SR1    = SQRT(MAX(0D0,E2**2-RM(2)**2))
58240         SR2    = SQRT(MAX(0D0,E3**2-RM(3)**2))
58241         DELTAY = 4D0*SR1*SR2
58242         PYRVG2 = DELTAY*RVS*(X-RM(1)**2-RM(2)**2)*((A(1)*A(2)
58243      &       + B(1)*B(2))*(RM(0)**2+RM(3)**2-X)
58244      &       + 2D0*(A(1)*B(2)+A(2)*B(1))*RM(3)*RM(0))
58245       ENDIF
58246       RETURN
58247       END
58248  
58249 C*********************************************************************
58250  
58251 C...PYRVG3
58252 C...Function to do Y integration over true interference contributions
58253  
58254       FUNCTION PYRVG3(X)
58255  
58256       IMPLICIT NONE
58257       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
58258 C...Second Dalitz variable for PYRVG4
58259       COMMON/PYG2DX/X1
58260       DOUBLE PRECISION RM, A, B, RESM, RESW, X, X1
58261       DOUBLE PRECISION E2, E3, C1, SQ1, SR1, SR2, YMIN, YMAX
58262       DOUBLE PRECISION PYRVG3, PYRVG4, PYGAU2
58263       LOGICAL MFLAG
58264       EXTERNAL PYGAU2,PYRVG4
58265       SAVE/PYRVPM/,/PYG2DX/
58266       PYRVG3=0D0
58267       C1=2D0*SQRT(MAX(1D-9,X))
58268       X1=X
58269       IF (.NOT.MFLAG) THEN
58270         E2    = X/C1
58271         E3    = (RM(0)**2-X)/C1
58272         YMIN  = 0D0
58273         YMAX  = 4D0*E2*E3
58274       ELSE
58275         E2    = (X-RM(1)**2+RM(2)**2)/C1
58276         E3    = (RM(0)**2-X-RM(3)**2)/C1
58277         SQ1   = (E2+E3)**2
58278         SR1   = SQRT(MAX(0D0,E2**2-RM(2)**2))
58279         SR2   = SQRT(MAX(0D0,E3**2-RM(3)**2))
58280         YMIN  = SQ1-(SR1+SR2)**2
58281         YMAX  = SQ1-(SR1-SR2)**2
58282       ENDIF
58283       PYRVG3 = PYGAU2(PYRVG4,YMIN,YMAX,1D-3)
58284       RETURN
58285       END
58286  
58287 C*********************************************************************
58288  
58289 C...PYRVG4
58290 C...Integrand for true intereference contributions
58291  
58292       FUNCTION PYRVG4(Y)
58293  
58294       IMPLICIT NONE
58295       COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG
58296       COMMON/PYG2DX/X
58297       DOUBLE PRECISION X, Y, PYRVG4, RM, A, B, RESM, RESW, RVS, PYRVS
58298       LOGICAL MFLAG
58299       SAVE /PYRVPM/,/PYG2DX/
58300       PYRVG4=0D0
58301       RVS=PYRVS(X,Y,RESM(1),RESW(1),RESM(2),RESW(2))
58302       IF (.NOT.MFLAG) THEN
58303         PYRVG4 = RVS*B(1)*B(2)*X*Y
58304       ELSE
58305         PYRVG4 = RVS*(RM(1)*RM(3)*A(1)*A(2)*(X+Y-RM(1)**2-RM(3)**2)
58306      &       + RM(1)*RM(0)*B(1)*A(2)*(Y-RM(2)**2-RM(3)**2)
58307      &       + RM(3)*RM(0)*A(1)*B(2)*(X-RM(1)**2-RM(2)**2)
58308      &       + B(1)*B(2)*(X*Y-(RM(1)*RM(3))**2-(RM(0)*RM(2))**2))
58309       ENDIF
58310       RETURN
58311       END
58312  
58313 C*********************************************************************
58314  
58315 C...PYRVR
58316 C...Breit-Wigner for resonance contributions
58317  
58318       FUNCTION PYRVR(Mab2,RM,RW)
58319  
58320       IMPLICIT NONE
58321       DOUBLE PRECISION Mab2,RM,RW,PYRVR
58322       PYRVR = 1D0/((Mab2-RM**2)**2+RM**2*RW**2)
58323       RETURN
58324       END
58325  
58326 C*********************************************************************
58327  
58328 C...PYRVS
58329 C...Interference function
58330  
58331       FUNCTION PYRVS(X,Y,M1,W1,M2,W2)
58332  
58333       IMPLICIT NONE
58334       DOUBLE PRECISION X, Y, PYRVS, PYRVR, M1, M2, W1, W2
58335       PYRVS = PYRVR(X,M1,W1)*PYRVR(Y,M2,W2)*((X-M1**2)*(Y-M2**2)
58336      &     +W1*W2*M1*M2)
58337       RETURN
58338       END
58339  
58340 C*********************************************************************
58341  
58342 C...PY1ENT
58343 C...Stores one parton/particle in commonblock PYJETS.
58344  
58345       SUBROUTINE PY1ENT(IP,KF,PE,THE,PHI)
58346  
58347 C...Double precision and integer declarations.
58348       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58349       IMPLICIT INTEGER(I-N)
58350       INTEGER PYK,PYCHGE,PYCOMP
58351 C...Commonblocks.
58352       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58353       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58354       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58355       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58356  
58357 C...Standard checks.
58358       MSTU(28)=0
58359       IF(MSTU(12).NE.12345) CALL PYLIST(0)
58360       IPA=MAX(1,IABS(IP))
58361       IF(IPA.GT.MSTU(4)) CALL PYERRM(21,
58362      &'(PY1ENT:) writing outside PYJETS memory')
58363       KC=PYCOMP(KF)
58364       IF(KC.EQ.0) CALL PYERRM(12,'(PY1ENT:) unknown flavour code')
58365  
58366 C...Find mass. Reset K, P and V vectors.
58367       PM=0D0
58368       IF(MSTU(10).EQ.1) PM=P(IPA,5)
58369       IF(MSTU(10).GE.2) PM=PYMASS(KF)
58370       DO 100 J=1,5
58371         K(IPA,J)=0
58372         P(IPA,J)=0D0
58373         V(IPA,J)=0D0
58374   100 CONTINUE
58375  
58376 C...Store parton/particle in K and P vectors.
58377       K(IPA,1)=1
58378       IF(IP.LT.0) K(IPA,1)=2
58379       K(IPA,2)=KF
58380       P(IPA,5)=PM
58381       P(IPA,4)=MAX(PE,PM)
58382       PA=SQRT(P(IPA,4)**2-P(IPA,5)**2)
58383       P(IPA,1)=PA*SIN(THE)*COS(PHI)
58384       P(IPA,2)=PA*SIN(THE)*SIN(PHI)
58385       P(IPA,3)=PA*COS(THE)
58386  
58387 C...Set N. Optionally fragment/decay.
58388       N=IPA
58389       IF(IP.EQ.0) CALL PYEXEC
58390  
58391       RETURN
58392       END
58393  
58394 C*********************************************************************
58395  
58396 C...PY2ENT
58397 C...Stores two partons/particles in their CM frame,
58398 C...with the first along the +z axis.
58399  
58400       SUBROUTINE PY2ENT(IP,KF1,KF2,PECM)
58401  
58402 C...Double precision and integer declarations.
58403       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58404       IMPLICIT INTEGER(I-N)
58405       INTEGER PYK,PYCHGE,PYCOMP
58406 C...Commonblocks.
58407       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58408       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58409       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58410       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58411  
58412 C...Standard checks.
58413       MSTU(28)=0
58414       IF(MSTU(12).NE.12345) CALL PYLIST(0)
58415       IPA=MAX(1,IABS(IP))
58416       IF(IPA.GT.MSTU(4)-1) CALL PYERRM(21,
58417      &'(PY2ENT:) writing outside PYJETS memory')
58418       KC1=PYCOMP(KF1)
58419       KC2=PYCOMP(KF2)
58420       IF(KC1.EQ.0.OR.KC2.EQ.0) CALL PYERRM(12,
58421      &'(PY2ENT:) unknown flavour code')
58422  
58423 C...Find masses. Reset K, P and V vectors.
58424       PM1=0D0
58425       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
58426       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
58427       PM2=0D0
58428       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
58429       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
58430       DO 110 I=IPA,IPA+1
58431         DO 100 J=1,5
58432           K(I,J)=0
58433           P(I,J)=0D0
58434           V(I,J)=0D0
58435   100   CONTINUE
58436   110 CONTINUE
58437  
58438 C...Check flavours.
58439       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
58440       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
58441       IF(MSTU(19).EQ.1) THEN
58442         MSTU(19)=0
58443       ELSE
58444         IF(KQ1+KQ2.NE.0.AND.KQ1+KQ2.NE.4) CALL PYERRM(2,
58445      &  '(PY2ENT:) unphysical flavour combination')
58446       ENDIF
58447       K(IPA,2)=KF1
58448       K(IPA+1,2)=KF2
58449  
58450 C...Store partons/particles in K vectors for normal case.
58451       IF(IP.GE.0) THEN
58452         K(IPA,1)=1
58453         IF(KQ1.NE.0.AND.KQ2.NE.0) K(IPA,1)=2
58454         K(IPA+1,1)=1
58455  
58456 C...Store partons in K vectors for parton shower evolution.
58457       ELSE
58458         K(IPA,1)=3
58459         K(IPA+1,1)=3
58460         K(IPA,4)=MSTU(5)*(IPA+1)
58461         K(IPA,5)=K(IPA,4)
58462         K(IPA+1,4)=MSTU(5)*IPA
58463         K(IPA+1,5)=K(IPA+1,4)
58464       ENDIF
58465  
58466 C...Check kinematics and store partons/particles in P vectors.
58467       IF(PECM.LE.PM1+PM2) CALL PYERRM(13,
58468      &'(PY2ENT:) energy smaller than sum of masses')
58469       PA=SQRT(MAX(0D0,(PECM**2-PM1**2-PM2**2)**2-(2D0*PM1*PM2)**2))/
58470      &(2D0*PECM)
58471       P(IPA,3)=PA
58472       P(IPA,4)=SQRT(PM1**2+PA**2)
58473       P(IPA,5)=PM1
58474       P(IPA+1,3)=-PA
58475       P(IPA+1,4)=SQRT(PM2**2+PA**2)
58476       P(IPA+1,5)=PM2
58477  
58478 C...Set N. Optionally fragment/decay.
58479       N=IPA+1
58480       IF(IP.EQ.0) CALL PYEXEC
58481  
58482       RETURN
58483       END
58484  
58485 C*********************************************************************
58486  
58487 C...PY3ENT
58488 C...Stores three partons or particles in their CM frame,
58489 C...with the first along the +z axis and the third in the (x,z)
58490 C...plane with x > 0.
58491  
58492       SUBROUTINE PY3ENT(IP,KF1,KF2,KF3,PECM,X1,X3)
58493  
58494 C...Double precision and integer declarations.
58495       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58496       IMPLICIT INTEGER(I-N)
58497       INTEGER PYK,PYCHGE,PYCOMP
58498 C...Commonblocks.
58499       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58500       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58501       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58502       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58503  
58504 C...Standard checks.
58505       MSTU(28)=0
58506       IF(MSTU(12).NE.12345) CALL PYLIST(0)
58507       IPA=MAX(1,IABS(IP))
58508       IF(IPA.GT.MSTU(4)-2) CALL PYERRM(21,
58509      &'(PY3ENT:) writing outside PYJETS memory')
58510       KC1=PYCOMP(KF1)
58511       KC2=PYCOMP(KF2)
58512       KC3=PYCOMP(KF3)
58513       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0) CALL PYERRM(12,
58514      &'(PY3ENT:) unknown flavour code')
58515  
58516 C...Find masses. Reset K, P and V vectors.
58517       PM1=0D0
58518       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
58519       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
58520       PM2=0D0
58521       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
58522       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
58523       PM3=0D0
58524       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
58525       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
58526       DO 110 I=IPA,IPA+2
58527         DO 100 J=1,5
58528           K(I,J)=0
58529           P(I,J)=0D0
58530           V(I,J)=0D0
58531   100   CONTINUE
58532   110 CONTINUE
58533  
58534 C...Check flavours.
58535       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
58536       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
58537       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
58538       IF(MSTU(19).EQ.1) THEN
58539         MSTU(19)=0
58540       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0) THEN
58541       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.(KQ1+KQ3.EQ.0.OR.
58542      &  KQ1+KQ3.EQ.4)) THEN
58543       ELSE
58544         CALL PYERRM(2,'(PY3ENT:) unphysical flavour combination')
58545       ENDIF
58546       K(IPA,2)=KF1
58547       K(IPA+1,2)=KF2
58548       K(IPA+2,2)=KF3
58549  
58550 C...Store partons/particles in K vectors for normal case.
58551       IF(IP.GE.0) THEN
58552         K(IPA,1)=1
58553         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0)) K(IPA,1)=2
58554         K(IPA+1,1)=1
58555         IF(KQ2.NE.0.AND.KQ3.NE.0) K(IPA+1,1)=2
58556         K(IPA+2,1)=1
58557  
58558 C...Store partons in K vectors for parton shower evolution.
58559       ELSE
58560         K(IPA,1)=3
58561         K(IPA+1,1)=3
58562         K(IPA+2,1)=3
58563         KCS=4
58564         IF(KQ1.EQ.-1) KCS=5
58565         K(IPA,KCS)=MSTU(5)*(IPA+1)
58566         K(IPA,9-KCS)=MSTU(5)*(IPA+2)
58567         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
58568         K(IPA+1,9-KCS)=MSTU(5)*IPA
58569         K(IPA+2,KCS)=MSTU(5)*IPA
58570         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
58571       ENDIF
58572  
58573 C...Check kinematics.
58574       MKERR=0
58575       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*(2D0-X1-X3)*PECM.LE.PM2.OR.
58576      &0.5D0*X3*PECM.LE.PM3) MKERR=1
58577       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
58578       PA2=SQRT(MAX(1D-10,(0.5D0*(2D0-X1-X3)*PECM)**2-PM2**2))
58579       PA3=SQRT(MAX(1D-10,(0.5D0*X3*PECM)**2-PM3**2))
58580       CTHE2=(PA3**2-PA1**2-PA2**2)/(2D0*PA1*PA2)
58581       CTHE3=(PA2**2-PA1**2-PA3**2)/(2D0*PA1*PA3)
58582       IF(ABS(CTHE2).GE.1.001D0.OR.ABS(CTHE3).GE.1.001D0) MKERR=1
58583       CTHE3=MAX(-1D0,MIN(1D0,CTHE3))
58584       IF(MKERR.NE.0) CALL PYERRM(13,
58585      &'(PY3ENT:) unphysical kinematical variable setup')
58586  
58587 C...Store partons/particles in P vectors.
58588       P(IPA,3)=PA1
58589       P(IPA,4)=SQRT(PA1**2+PM1**2)
58590       P(IPA,5)=PM1
58591       P(IPA+2,1)=PA3*SQRT(1D0-CTHE3**2)
58592       P(IPA+2,3)=PA3*CTHE3
58593       P(IPA+2,4)=SQRT(PA3**2+PM3**2)
58594       P(IPA+2,5)=PM3
58595       P(IPA+1,1)=-P(IPA+2,1)
58596       P(IPA+1,3)=-P(IPA,3)-P(IPA+2,3)
58597       P(IPA+1,4)=SQRT(P(IPA+1,1)**2+P(IPA+1,3)**2+PM2**2)
58598       P(IPA+1,5)=PM2
58599  
58600 C...Set N. Optionally fragment/decay.
58601       N=IPA+2
58602       IF(IP.EQ.0) CALL PYEXEC
58603  
58604       RETURN
58605       END
58606  
58607 C*********************************************************************
58608  
58609 C...PY4ENT
58610 C...Stores four partons or particles in their CM frame, with
58611 C...the first along the +z axis, the last in the xz plane with x > 0
58612 C...and the second having y < 0 and y > 0 with equal probability.
58613  
58614       SUBROUTINE PY4ENT(IP,KF1,KF2,KF3,KF4,PECM,X1,X2,X4,X12,X14)
58615  
58616 C...Double precision and integer declarations.
58617       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58618       IMPLICIT INTEGER(I-N)
58619       INTEGER PYK,PYCHGE,PYCOMP
58620 C...Commonblocks.
58621       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58622       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58623       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
58624       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
58625  
58626 C...Standard checks.
58627       MSTU(28)=0
58628       IF(MSTU(12).NE.12345) CALL PYLIST(0)
58629       IPA=MAX(1,IABS(IP))
58630       IF(IPA.GT.MSTU(4)-3) CALL PYERRM(21,
58631      &'(PY4ENT:) writing outside PYJETS momory')
58632       KC1=PYCOMP(KF1)
58633       KC2=PYCOMP(KF2)
58634       KC3=PYCOMP(KF3)
58635       KC4=PYCOMP(KF4)
58636       IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) CALL PYERRM(12,
58637      &'(PY4ENT:) unknown flavour code')
58638  
58639 C...Find masses. Reset K, P and V vectors.
58640       PM1=0D0
58641       IF(MSTU(10).EQ.1) PM1=P(IPA,5)
58642       IF(MSTU(10).GE.2) PM1=PYMASS(KF1)
58643       PM2=0D0
58644       IF(MSTU(10).EQ.1) PM2=P(IPA+1,5)
58645       IF(MSTU(10).GE.2) PM2=PYMASS(KF2)
58646       PM3=0D0
58647       IF(MSTU(10).EQ.1) PM3=P(IPA+2,5)
58648       IF(MSTU(10).GE.2) PM3=PYMASS(KF3)
58649       PM4=0D0
58650       IF(MSTU(10).EQ.1) PM4=P(IPA+3,5)
58651       IF(MSTU(10).GE.2) PM4=PYMASS(KF4)
58652       DO 110 I=IPA,IPA+3
58653         DO 100 J=1,5
58654           K(I,J)=0
58655           P(I,J)=0D0
58656           V(I,J)=0D0
58657   100   CONTINUE
58658   110 CONTINUE
58659  
58660 C...Check flavours.
58661       KQ1=KCHG(KC1,2)*ISIGN(1,KF1)
58662       KQ2=KCHG(KC2,2)*ISIGN(1,KF2)
58663       KQ3=KCHG(KC3,2)*ISIGN(1,KF3)
58664       KQ4=KCHG(KC4,2)*ISIGN(1,KF4)
58665       IF(MSTU(19).EQ.1) THEN
58666         MSTU(19)=0
58667       ELSEIF(KQ1.EQ.0.AND.KQ2.EQ.0.AND.KQ3.EQ.0.AND.KQ4.EQ.0) THEN
58668       ELSEIF(KQ1.NE.0.AND.KQ2.EQ.2.AND.KQ3.EQ.2.AND.(KQ1+KQ4.EQ.0.OR.
58669      &  KQ1+KQ4.EQ.4)) THEN
58670       ELSEIF(KQ1.NE.0.AND.KQ1+KQ2.EQ.0.AND.KQ3.NE.0.AND.KQ3+KQ4.EQ.0D0)
58671      &  THEN
58672       ELSE
58673         CALL PYERRM(2,'(PY4ENT:) unphysical flavour combination')
58674       ENDIF
58675       K(IPA,2)=KF1
58676       K(IPA+1,2)=KF2
58677       K(IPA+2,2)=KF3
58678       K(IPA+3,2)=KF4
58679  
58680 C...Store partons/particles in K vectors for normal case.
58681       IF(IP.GE.0) THEN
58682         K(IPA,1)=1
58683         IF(KQ1.NE.0.AND.(KQ2.NE.0.OR.KQ3.NE.0.OR.KQ4.NE.0)) K(IPA,1)=2
58684         K(IPA+1,1)=1
58685         IF(KQ2.NE.0.AND.KQ1+KQ2.NE.0.AND.(KQ3.NE.0.OR.KQ4.NE.0))
58686      &  K(IPA+1,1)=2
58687         K(IPA+2,1)=1
58688         IF(KQ3.NE.0.AND.KQ4.NE.0) K(IPA+2,1)=2
58689         K(IPA+3,1)=1
58690  
58691 C...Store partons for parton shower evolution from q-g-g-qbar or
58692 C...g-g-g-g event.
58693       ELSEIF(KQ1+KQ2.NE.0) THEN
58694         K(IPA,1)=3
58695         K(IPA+1,1)=3
58696         K(IPA+2,1)=3
58697         K(IPA+3,1)=3
58698         KCS=4
58699         IF(KQ1.EQ.-1) KCS=5
58700         K(IPA,KCS)=MSTU(5)*(IPA+1)
58701         K(IPA,9-KCS)=MSTU(5)*(IPA+3)
58702         K(IPA+1,KCS)=MSTU(5)*(IPA+2)
58703         K(IPA+1,9-KCS)=MSTU(5)*IPA
58704         K(IPA+2,KCS)=MSTU(5)*(IPA+3)
58705         K(IPA+2,9-KCS)=MSTU(5)*(IPA+1)
58706         K(IPA+3,KCS)=MSTU(5)*IPA
58707         K(IPA+3,9-KCS)=MSTU(5)*(IPA+2)
58708  
58709 C...Store partons for parton shower evolution from q-qbar-q-qbar event.
58710       ELSE
58711         K(IPA,1)=3
58712         K(IPA+1,1)=3
58713         K(IPA+2,1)=3
58714         K(IPA+3,1)=3
58715         K(IPA,4)=MSTU(5)*(IPA+1)
58716         K(IPA,5)=K(IPA,4)
58717         K(IPA+1,4)=MSTU(5)*IPA
58718         K(IPA+1,5)=K(IPA+1,4)
58719         K(IPA+2,4)=MSTU(5)*(IPA+3)
58720         K(IPA+2,5)=K(IPA+2,4)
58721         K(IPA+3,4)=MSTU(5)*(IPA+2)
58722         K(IPA+3,5)=K(IPA+3,4)
58723       ENDIF
58724  
58725 C...Check kinematics.
58726       MKERR=0
58727       IF(0.5D0*X1*PECM.LE.PM1.OR.0.5D0*X2*PECM.LE.PM2.OR.
58728      &0.5D0*(2D0-X1-X2-X4)*PECM.LE.PM3.OR.0.5D0*X4*PECM.LE.PM4)
58729      &MKERR=1
58730       PA1=SQRT(MAX(1D-10,(0.5D0*X1*PECM)**2-PM1**2))
58731       PA2=SQRT(MAX(1D-10,(0.5D0*X2*PECM)**2-PM2**2))
58732       PA4=SQRT(MAX(1D-10,(0.5D0*X4*PECM)**2-PM4**2))
58733       X24=X1+X2+X4-1D0-X12-X14+(PM3**2-PM1**2-PM2**2-PM4**2)/PECM**2
58734       CTHE4=(X1*X4-2D0*X14)*PECM**2/(4D0*PA1*PA4)
58735       IF(ABS(CTHE4).GE.1.002D0) MKERR=1
58736       CTHE4=MAX(-1D0,MIN(1D0,CTHE4))
58737       STHE4=SQRT(1D0-CTHE4**2)
58738       CTHE2=(X1*X2-2D0*X12)*PECM**2/(4D0*PA1*PA2)
58739       IF(ABS(CTHE2).GE.1.002D0) MKERR=1
58740       CTHE2=MAX(-1D0,MIN(1D0,CTHE2))
58741       STHE2=SQRT(1D0-CTHE2**2)
58742       CPHI2=((X2*X4-2D0*X24)*PECM**2-4D0*PA2*CTHE2*PA4*CTHE4)/
58743      &MAX(1D-8*PECM**2,4D0*PA2*STHE2*PA4*STHE4)
58744       IF(ABS(CPHI2).GE.1.05D0) MKERR=1
58745       CPHI2=MAX(-1D0,MIN(1D0,CPHI2))
58746       IF(MKERR.EQ.1) CALL PYERRM(13,
58747      &'(PY4ENT:) unphysical kinematical variable setup')
58748  
58749 C...Store partons/particles in P vectors.
58750       P(IPA,3)=PA1
58751       P(IPA,4)=SQRT(PA1**2+PM1**2)
58752       P(IPA,5)=PM1
58753       P(IPA+3,1)=PA4*STHE4
58754       P(IPA+3,3)=PA4*CTHE4
58755       P(IPA+3,4)=SQRT(PA4**2+PM4**2)
58756       P(IPA+3,5)=PM4
58757       P(IPA+1,1)=PA2*STHE2*CPHI2
58758       P(IPA+1,2)=PA2*STHE2*SQRT(1D0-CPHI2**2)*(-1D0)**INT(PYR(0)+0.5D0)
58759       P(IPA+1,3)=PA2*CTHE2
58760       P(IPA+1,4)=SQRT(PA2**2+PM2**2)
58761       P(IPA+1,5)=PM2
58762       P(IPA+2,1)=-P(IPA+1,1)-P(IPA+3,1)
58763       P(IPA+2,2)=-P(IPA+1,2)
58764       P(IPA+2,3)=-P(IPA,3)-P(IPA+1,3)-P(IPA+3,3)
58765       P(IPA+2,4)=SQRT(P(IPA+2,1)**2+P(IPA+2,2)**2+P(IPA+2,3)**2+PM3**2)
58766       P(IPA+2,5)=PM3
58767  
58768 C...Set N. Optionally fragment/decay.
58769       N=IPA+3
58770       IF(IP.EQ.0) CALL PYEXEC
58771  
58772       RETURN
58773       END
58774  
58775 C*********************************************************************
58776  
58777 C...PY2FRM
58778 C...An interface from a two-fermion generator to include
58779 C...parton showers and hadronization.
58780  
58781       SUBROUTINE PY2FRM(IRAD,ITAU,ICOM)
58782  
58783 C...Double precision and integer declarations.
58784       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58785       IMPLICIT INTEGER(I-N)
58786       INTEGER PYK,PYCHGE,PYCOMP
58787 C...Commonblocks.
58788       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58789       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58790       SAVE /PYJETS/,/PYDAT1/
58791 C...Local arrays.
58792       DIMENSION IJOIN(2),INTAU(2)
58793  
58794 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
58795       IF(ICOM.EQ.0) THEN
58796         MSTU(28)=0
58797         CALL PYHEPC(2)
58798       ENDIF
58799  
58800 C...Loop through entries and pick up all final fermions/antifermions.
58801       I1=0
58802       I2=0
58803       DO 100 I=1,N
58804       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
58805       KFA=IABS(K(I,2))
58806       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
58807         IF(K(I,2).GT.0) THEN
58808           IF(I1.EQ.0) THEN
58809             I1=I
58810           ELSE
58811             CALL PYERRM(16,'(PY2FRM:) more than one fermion')
58812           ENDIF
58813         ELSE
58814           IF(I2.EQ.0) THEN
58815             I2=I
58816           ELSE
58817             CALL PYERRM(16,'(PY2FRM:) more than one antifermion')
58818           ENDIF
58819         ENDIF
58820       ENDIF
58821   100 CONTINUE
58822  
58823 C...Check that event is arranged according to conventions.
58824       IF(I1.EQ.0.OR.I2.EQ.0) THEN
58825         CALL PYERRM(16,'(PY2FRM:) event contains too few fermions')
58826       ENDIF
58827       IF(I2.LT.I1) THEN
58828         CALL PYERRM(6,'(PY2FRM:) fermions arranged in wrong order')
58829       ENDIF
58830  
58831 C...Check whether fermion pair is quarks or leptons.
58832       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
58833         IQL12=1
58834       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
58835         IQL12=2
58836       ELSE
58837         CALL PYERRM(16,'(PY2FRM:) fermion pair inconsistent')
58838       ENDIF
58839  
58840 C...Decide whether to allow or not photon radiation in showers.
58841       MSTJ(41)=2
58842       IF(IRAD.EQ.0) MSTJ(41)=1
58843  
58844 C...Do colour joining and parton showers.
58845       IP1=I1
58846       IP2=I2
58847       IF(IQL12.EQ.1) THEN
58848         IJOIN(1)=IP1
58849         IJOIN(2)=IP2
58850         CALL PYJOIN(2,IJOIN)
58851       ENDIF
58852       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
58853         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
58854      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
58855         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
58856       ENDIF
58857  
58858 C...Do fragmentation and decays. Possibly except tau decay.
58859       IF(ITAU.EQ.0) THEN
58860         NTAU=0
58861         DO 110 I=1,N
58862         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
58863           NTAU=NTAU+1
58864           INTAU(NTAU)=I
58865           K(I,1)=11
58866         ENDIF
58867   110   CONTINUE
58868       ENDIF
58869       CALL PYEXEC
58870       IF(ITAU.EQ.0) THEN
58871         DO 120 I=1,NTAU
58872         K(INTAU(I),1)=1
58873   120   CONTINUE
58874       ENDIF
58875  
58876 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
58877       IF(ICOM.EQ.0) THEN
58878         MSTU(28)=0
58879         CALL PYHEPC(1)
58880       ENDIF
58881  
58882       END
58883  
58884 C*********************************************************************
58885  
58886 C...PY4FRM
58887 C...An interface from a four-fermion generator to include
58888 C...parton showers and hadronization.
58889  
58890       SUBROUTINE PY4FRM(ATOTSQ,A1SQ,A2SQ,ISTRAT,IRAD,ITAU,ICOM)
58891  
58892 C...Double precision and integer declarations.
58893       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
58894       IMPLICIT INTEGER(I-N)
58895       INTEGER PYK,PYCHGE,PYCOMP
58896 C...Commonblocks.
58897       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
58898       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
58899       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
58900       COMMON/PYINT1/MINT(400),VINT(400)
58901       SAVE /PYJETS/,/PYDAT1/,/PYPARS/,/PYINT1/
58902 C...Local arrays.
58903       DIMENSION IJOIN(2),INTAU(4)
58904  
58905 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
58906       IF(ICOM.EQ.0) THEN
58907         MSTU(28)=0
58908         CALL PYHEPC(2)
58909       ENDIF
58910  
58911 C...Loop through entries and pick up all final fermions/antifermions.
58912       I1=0
58913       I2=0
58914       I3=0
58915       I4=0
58916       DO 100 I=1,N
58917       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
58918       KFA=IABS(K(I,2))
58919       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
58920         IF(K(I,2).GT.0) THEN
58921           IF(I1.EQ.0) THEN
58922             I1=I
58923           ELSEIF(I3.EQ.0) THEN
58924             I3=I
58925           ELSE
58926             CALL PYERRM(16,'(PY4FRM:) more than two fermions')
58927           ENDIF
58928         ELSE
58929           IF(I2.EQ.0) THEN
58930             I2=I
58931           ELSEIF(I4.EQ.0) THEN
58932             I4=I
58933           ELSE
58934             CALL PYERRM(16,'(PY4FRM:) more than two antifermions')
58935           ENDIF
58936         ENDIF
58937       ENDIF
58938   100 CONTINUE
58939  
58940 C...Check that event is arranged according to conventions.
58941       IF(I3.EQ.0.OR.I4.EQ.0) THEN
58942         CALL PYERRM(16,'(PY4FRM:) event contains too few fermions')
58943       ENDIF
58944       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
58945         CALL PYERRM(6,'(PY4FRM:) fermions arranged in wrong order')
58946       ENDIF
58947  
58948 C...Check which fermion pairs are quarks and which leptons.
58949       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
58950         IQL12=1
58951       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
58952         IQL12=2
58953       ELSE
58954         CALL PYERRM(16,'(PY4FRM:) first fermion pair inconsistent')
58955       ENDIF
58956       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
58957         IQL34=1
58958       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
58959         IQL34=2
58960       ELSE
58961         CALL PYERRM(16,'(PY4FRM:) second fermion pair inconsistent')
58962       ENDIF
58963  
58964 C...Decide whether to allow or not photon radiation in showers.
58965       MSTJ(41)=2
58966       IF(IRAD.EQ.0) MSTJ(41)=1
58967  
58968 C...Decide on dipole pairing.
58969       IP1=I1
58970       IP2=I2
58971       IP3=I3
58972       IP4=I4
58973       IF(IQL12.EQ.IQL34) THEN
58974         R1SQ=A1SQ
58975         R2SQ=A2SQ
58976         DELTA=ATOTSQ-A1SQ-A2SQ
58977         IF(ISTRAT.EQ.1) THEN
58978           IF(DELTA.GT.0D0) R1SQ=R1SQ+DELTA
58979           IF(DELTA.LT.0D0) R2SQ=MAX(0D0,R2SQ+DELTA)
58980         ELSEIF(ISTRAT.EQ.2) THEN
58981           IF(DELTA.GT.0D0) R2SQ=R2SQ+DELTA
58982           IF(DELTA.LT.0D0) R1SQ=MAX(0D0,R1SQ+DELTA)
58983         ENDIF
58984         IF(R2SQ.GT.PYR(0)*(R1SQ+R2SQ)) THEN
58985           IP2=I4
58986           IP4=I2
58987         ENDIF
58988       ENDIF
58989  
58990 C...If colour reconnection then bookkeep W+W- or Z0Z0
58991 C...and copy q qbar q qbar consecutively.
58992       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
58993         K(N+1,1)=11
58994         K(N+1,3)=IP1
58995         K(N+1,4)=N+3
58996         K(N+1,5)=N+4
58997         K(N+2,1)=11
58998         K(N+2,3)=IP3
58999         K(N+2,4)=N+5
59000         K(N+2,5)=N+6
59001         IF(K(IP1,2)+K(IP2,2).EQ.0) THEN
59002           K(N+1,2)=23
59003           K(N+2,2)=23
59004           MINT(1)=22
59005         ELSEIF(PYCHGE(K(IP1,2)).GT.0) THEN
59006           K(N+1,2)=24
59007           K(N+2,2)=-24
59008           MINT(1)=25
59009         ELSE
59010           K(N+1,2)=-24
59011           K(N+2,2)=24
59012           MINT(1)=25
59013         ENDIF
59014         DO 110 J=1,5
59015           K(N+3,J)=K(IP1,J)
59016           K(N+4,J)=K(IP2,J)
59017           K(N+5,J)=K(IP3,J)
59018           K(N+6,J)=K(IP4,J)
59019           P(N+1,J)=P(IP1,J)+P(IP2,J)
59020           P(N+2,J)=P(IP3,J)+P(IP4,J)
59021           P(N+3,J)=P(IP1,J)
59022           P(N+4,J)=P(IP2,J)
59023           P(N+5,J)=P(IP3,J)
59024           P(N+6,J)=P(IP4,J)
59025           V(N+1,J)=V(IP1,J)
59026           V(N+2,J)=V(IP3,J)
59027           V(N+3,J)=V(IP1,J)
59028           V(N+4,J)=V(IP2,J)
59029           V(N+5,J)=V(IP3,J)
59030           V(N+6,J)=V(IP4,J)
59031   110   CONTINUE
59032         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
59033      &  P(N+1,3)**2))
59034         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
59035      &  P(N+2,3)**2))
59036         K(N+3,3)=N+1
59037         K(N+4,3)=N+1
59038         K(N+5,3)=N+2
59039         K(N+6,3)=N+2
59040 C...Remove original q qbar q qbar and update counters.
59041         K(IP1,1)=K(IP1,1)+10
59042         K(IP2,1)=K(IP2,1)+10
59043         K(IP3,1)=K(IP3,1)+10
59044         K(IP4,1)=K(IP4,1)+10
59045         IW1=N+1
59046         IW2=N+2
59047         NSD1=N+2
59048         IP1=N+3
59049         IP2=N+4
59050         IP3=N+5
59051         IP4=N+6
59052         N=N+6
59053       ENDIF
59054  
59055 C...Do colour joinings and parton showers.
59056       IF(IQL12.EQ.1) THEN
59057         IJOIN(1)=IP1
59058         IJOIN(2)=IP2
59059         CALL PYJOIN(2,IJOIN)
59060       ENDIF
59061       IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
59062         PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
59063      &  (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
59064         CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
59065       ENDIF
59066       NAFT1=N
59067       IF(IQL34.EQ.1) THEN
59068         IJOIN(1)=IP3
59069         IJOIN(2)=IP4
59070         CALL PYJOIN(2,IJOIN)
59071       ENDIF
59072       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
59073         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
59074      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
59075         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
59076       ENDIF
59077  
59078 C...Optionally do colour reconnection.
59079       MINT(32)=0
59080       MSTI(32)=0
59081       IF(MSTP(115).GE.1.AND.IQL12.EQ.1.AND.IQL34.EQ.1) THEN
59082         CALL PYRECO(IW1,IW2,NSD1,NAFT1)
59083         MSTI(32)=MINT(32)
59084       ENDIF
59085  
59086 C...Do fragmentation and decays. Possibly except tau decay.
59087       IF(ITAU.EQ.0) THEN
59088         NTAU=0
59089         DO 120 I=1,N
59090         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
59091           NTAU=NTAU+1
59092           INTAU(NTAU)=I
59093           K(I,1)=11
59094         ENDIF
59095   120   CONTINUE
59096       ENDIF
59097       CALL PYEXEC
59098       IF(ITAU.EQ.0) THEN
59099         DO 130 I=1,NTAU
59100         K(INTAU(I),1)=1
59101   130   CONTINUE
59102       ENDIF
59103  
59104 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
59105       IF(ICOM.EQ.0) THEN
59106         MSTU(28)=0
59107         CALL PYHEPC(1)
59108       ENDIF
59109  
59110       END
59111  
59112 C*********************************************************************
59113  
59114 C...PY6FRM
59115 C...An interface from a six-fermion generator to include
59116 C...parton showers and hadronization.
59117  
59118       SUBROUTINE PY6FRM(P12,P13,P21,P23,P31,P32,PTOP,IRAD,ITAU,ICOM)
59119  
59120 C...Double precision and integer declarations.
59121       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59122       IMPLICIT INTEGER(I-N)
59123       INTEGER PYK,PYCHGE,PYCOMP
59124 C...Commonblocks.
59125       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
59126       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59127       SAVE /PYJETS/,/PYDAT1/
59128 C...Local arrays.
59129       DIMENSION IJOIN(2),INTAU(6),BETA(3),BETAO(3),BETAN(3)
59130  
59131 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
59132       IF(ICOM.EQ.0) THEN
59133         MSTU(28)=0
59134         CALL PYHEPC(2)
59135       ENDIF
59136  
59137 C...Loop through entries and pick up all final fermions/antifermions.
59138       I1=0
59139       I2=0
59140       I3=0
59141       I4=0
59142       I5=0
59143       I6=0
59144       DO 100 I=1,N
59145       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
59146       KFA=IABS(K(I,2))
59147       IF((KFA.GE.1.AND.KFA.LE.6).OR.(KFA.GE.11.AND.KFA.LE.16)) THEN
59148         IF(K(I,2).GT.0) THEN
59149           IF(I1.EQ.0) THEN
59150             I1=I
59151           ELSEIF(I3.EQ.0) THEN
59152             I3=I
59153           ELSEIF(I5.EQ.0) THEN
59154             I5=I
59155           ELSE
59156             CALL PYERRM(16,'(PY6FRM:) more than three fermions')
59157           ENDIF
59158         ELSE
59159           IF(I2.EQ.0) THEN
59160             I2=I
59161           ELSEIF(I4.EQ.0) THEN
59162             I4=I
59163           ELSEIF(I6.EQ.0) THEN
59164             I6=I
59165           ELSE
59166             CALL PYERRM(16,'(PY6FRM:) more than three antifermions')
59167           ENDIF
59168         ENDIF
59169       ENDIF
59170   100 CONTINUE
59171  
59172 C...Check that event is arranged according to conventions.
59173       IF(I5.EQ.0.OR.I6.EQ.0) THEN
59174         CALL PYERRM(16,'(PY6FRM:) event contains too few fermions')
59175       ENDIF
59176       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3.OR.I5.LT.I4.OR.I6.LT.I5) THEN
59177         CALL PYERRM(6,'(PY6FRM:) fermions arranged in wrong order')
59178       ENDIF
59179  
59180 C...Check which fermion pairs are quarks and which leptons.
59181       IF(IABS(K(I1,2)).LT.10.AND.IABS(K(I2,2)).LT.10) THEN
59182         IQL12=1
59183       ELSEIF(IABS(K(I1,2)).GT.10.AND.IABS(K(I2,2)).GT.10) THEN
59184         IQL12=2
59185       ELSE
59186         CALL PYERRM(16,'(PY6FRM:) first fermion pair inconsistent')
59187       ENDIF
59188       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
59189         IQL34=1
59190       ELSEIF(IABS(K(I3,2)).GT.10.AND.IABS(K(I4,2)).GT.10) THEN
59191         IQL34=2
59192       ELSE
59193         CALL PYERRM(16,'(PY6FRM:) second fermion pair inconsistent')
59194       ENDIF
59195       IF(IABS(K(I5,2)).LT.10.AND.IABS(K(I6,2)).LT.10) THEN
59196         IQL56=1
59197       ELSEIF(IABS(K(I5,2)).GT.10.AND.IABS(K(I6,2)).GT.10) THEN
59198         IQL56=2
59199       ELSE
59200         CALL PYERRM(16,'(PY6FRM:) third fermion pair inconsistent')
59201       ENDIF
59202  
59203 C...Decide whether to allow or not photon radiation in showers.
59204       MSTJ(41)=2
59205       IF(IRAD.EQ.0) MSTJ(41)=1
59206  
59207 C...Allow dipole pairings only among leptons and quarks separately.
59208       P12D=P12
59209       P13D=0D0
59210       IF(IQL34.EQ.IQL56) P13D=P13
59211       P21D=0D0
59212       IF(IQL12.EQ.IQL34) P21D=P21
59213       P23D=0D0
59214       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P23D=P23
59215       P31D=0D0
59216       IF(IQL12.EQ.IQL34.AND.IQL12.EQ.IQL56) P31D=P31
59217       P32D=0D0
59218       IF(IQL12.EQ.IQL56) P32D=P32
59219  
59220 C...Decide whether t+tbar.
59221       ITOP=0
59222       IF(PYR(0).LT.PTOP) THEN
59223         ITOP=1
59224  
59225 C...If t+tbar: reconstruct t's.
59226         IT=N+1
59227         ITB=N+2
59228         DO 110 J=1,5
59229           K(IT,J)=0
59230           K(ITB,J)=0
59231           P(IT,J)=P(I1,J)+P(I3,J)+P(I4,J)
59232           P(ITB,J)=P(I2,J)+P(I5,J)+P(I6,J)
59233           V(IT,J)=0D0
59234           V(ITB,J)=0D0
59235   110   CONTINUE
59236         K(IT,1)=1
59237         K(ITB,1)=1
59238         K(IT,2)=6
59239         K(ITB,2)=-6
59240         P(IT,5)=SQRT(MAX(0D0,P(IT,4)**2-P(IT,1)**2-P(IT,2)**2-
59241      &  P(IT,3)**2))
59242         P(ITB,5)=SQRT(MAX(0D0,P(ITB,4)**2-P(ITB,1)**2-P(ITB,2)**2-
59243      &  P(ITB,3)**2))
59244         N=N+2
59245  
59246 C...If t+tbar: colour join t's and let them shower.
59247         IJOIN(1)=IT
59248         IJOIN(2)=ITB
59249         CALL PYJOIN(2,IJOIN)
59250         PMTTS=(P(IT,4)+P(ITB,4))**2-(P(IT,1)+P(ITB,1))**2-
59251      &  (P(IT,2)+P(ITB,2))**2-(P(IT,3)+P(ITB,3))**2
59252         CALL PYSHOW(IT,ITB,SQRT(MAX(0D0,PMTTS)))
59253  
59254 C...If t+tbar: pick up the t's after shower.
59255         ITNEW=IT
59256         ITBNEW=ITB
59257         DO 120 I=ITB+1,N
59258           IF(K(I,2).EQ.6) ITNEW=I
59259           IF(K(I,2).EQ.-6) ITBNEW=I
59260   120   CONTINUE
59261  
59262 C...If t+tbar: loop over two top systems.
59263         DO 200 IT1=1,2
59264           IF(IT1.EQ.1) THEN
59265             ITO=IT
59266             ITN=ITNEW
59267             IBO=I1
59268             IW1=I3
59269             IW2=I4
59270           ELSE
59271             ITO=ITB
59272             ITN=ITBNEW
59273             IBO=I2
59274             IW1=I5
59275             IW2=I6
59276           ENDIF
59277           IF(IABS(K(IBO,2)).NE.5) CALL PYERRM(6,
59278      &    '(PY6FRM:) not b in t decay')
59279  
59280 C...If t+tbar: find boost from original to new top frame.
59281           DO 130 J=1,3
59282             BETAO(J)=P(ITO,J)/P(ITO,4)
59283             BETAN(J)=P(ITN,J)/P(ITN,4)
59284   130     CONTINUE
59285  
59286 C...If t+tbar: boost copy of b by t shower and connect it in colour.
59287           N=N+1
59288           IB=N
59289           K(IB,1)=3
59290           K(IB,2)=K(IBO,2)
59291           K(IB,3)=ITN
59292           DO 140 J=1,5
59293             P(IB,J)=P(IBO,J)
59294             V(IB,J)=0D0
59295   140     CONTINUE
59296           CALL PYROBO(IB,IB,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
59297           CALL PYROBO(IB,IB,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
59298           K(IB,4)=MSTU(5)*ITN
59299           K(IB,5)=MSTU(5)*ITN
59300           K(ITN,4)=K(ITN,4)+IB
59301           K(ITN,5)=K(ITN,5)+IB
59302           K(ITN,1)=K(ITN,1)+10
59303           K(IBO,1)=K(IBO,1)+10
59304  
59305 C...If t+tbar: construct W recoiling against b.
59306           N=N+1
59307           IW=N
59308           DO 150 J=1,5
59309             K(IW,J)=0
59310             V(IW,J)=0D0
59311   150     CONTINUE
59312           K(IW,1)=1
59313           KCHW=PYCHGE(K(IW1,2))+PYCHGE(K(IW2,2))
59314           IF(IABS(KCHW).EQ.3) THEN
59315             K(IW,2)=ISIGN(24,KCHW)
59316           ELSE
59317             CALL PYERRM(16,'(PY6FRM:) fermion pair inconsistent with W')
59318           ENDIF
59319           K(IW,3)=IW1
59320  
59321 C...If t+tbar: construct W momentum, including boost by t shower.
59322           DO 160 J=1,4
59323             P(IW,J)=P(IW1,J)+P(IW2,J)
59324   160     CONTINUE
59325           P(IW,5)=SQRT(MAX(0D0,P(IW,4)**2-P(IW,1)**2-P(IW,2)**2-
59326      &    P(IW,3)**2))
59327           CALL PYROBO(IW,IW,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
59328           CALL PYROBO(IW,IW,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
59329  
59330 C...If t+tbar: boost b and W to top rest frame.
59331           DO 170 J=1,3
59332             BETA(J)=(P(IB,J)+P(IW,J))/(P(IB,4)+P(IW,4))
59333   170     CONTINUE
59334           CALL PYROBO(IB,IB,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
59335           CALL PYROBO(IW,IW,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
59336  
59337 C...If t+tbar: let b shower and pick up modified W.
59338           PMTS=(P(IB,4)+P(IW,4))**2-(P(IB,1)+P(IW,1))**2-
59339      &    (P(IB,2)+P(IW,2))**2-(P(IB,3)+P(IW,3))**2
59340           CALL PYSHOW(IB,IW,SQRT(MAX(0D0,PMTS)))
59341           DO 180 I=IW,N
59342             IF(IABS(K(I,2)).EQ.24) IWM=I
59343   180     CONTINUE
59344  
59345 C...If t+tbar: take copy of W decay products.
59346           DO 190 J=1,5
59347             K(N+1,J)=K(IW1,J)
59348             P(N+1,J)=P(IW1,J)
59349             V(N+1,J)=V(IW1,J)
59350             K(N+2,J)=K(IW2,J)
59351             P(N+2,J)=P(IW2,J)
59352             V(N+2,J)=V(IW2,J)
59353   190     CONTINUE
59354           K(IW1,1)=K(IW1,1)+10
59355           K(IW2,1)=K(IW2,1)+10
59356           K(IWM,1)=K(IWM,1)+10
59357           K(IWM,4)=N+1
59358           K(IWM,5)=N+2
59359           K(N+1,3)=IWM
59360           K(N+2,3)=IWM
59361           IF(IT1.EQ.1) THEN
59362             I3=N+1
59363             I4=N+2
59364           ELSE
59365             I5=N+1
59366             I6=N+2
59367           ENDIF
59368           N=N+2
59369  
59370 C...If t+tbar: boost W decay products, first by effects of t shower,
59371 C...then by those of b shower. b and its shower simple boost back.
59372           CALL PYROBO(N-1,N,0D0,0D0,-BETAO(1),-BETAO(2),-BETAO(3))
59373           CALL PYROBO(N-1,N,0D0,0D0,BETAN(1),BETAN(2),BETAN(3))
59374           CALL PYROBO(N-1,N,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
59375           CALL PYROBO(N-1,N,0D0,0D0,-P(IW,1)/P(IW,4),
59376      &    -P(IW,2)/P(IW,4),-P(IW,3)/P(IW,4))
59377           CALL PYROBO(N-1,N,0D0,0D0,P(IWM,1)/P(IWM,4),
59378      &    P(IWM,2)/P(IWM,4),P(IWM,3)/P(IWM,4))
59379           CALL PYROBO(IB,IB,0D0,0D0,BETA(1),BETA(2),BETA(3))
59380           CALL PYROBO(IW,N,0D0,0D0,BETA(1),BETA(2),BETA(3))
59381   200   CONTINUE
59382       ENDIF
59383  
59384 C...Decide on dipole pairing.
59385       IP1=I1
59386       IP3=I3
59387       IP5=I5
59388       PRN=PYR(0)*(P12D+P13D+P21D+P23D+P31D+P32D)
59389       IF(ITOP.EQ.1.OR.PRN.LT.P12D) THEN
59390         IP2=I2
59391         IP4=I4
59392         IP6=I6
59393       ELSEIF(PRN.LT.P12D+P13D) THEN
59394         IP2=I2
59395         IP4=I6
59396         IP6=I4
59397       ELSEIF(PRN.LT.P12D+P13D+P21D) THEN
59398         IP2=I4
59399         IP4=I2
59400         IP6=I6
59401       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D) THEN
59402         IP2=I4
59403         IP4=I6
59404         IP6=I2
59405       ELSEIF(PRN.LT.P12D+P13D+P21D+P23D+P31D) THEN
59406         IP2=I6
59407         IP4=I2
59408         IP6=I4
59409       ELSE
59410         IP2=I6
59411         IP4=I4
59412         IP6=I2
59413       ENDIF
59414  
59415 C...Do colour joinings and parton showers
59416 C...(except ones already made for t+tbar).
59417       IF(ITOP.EQ.0) THEN
59418         IF(IQL12.EQ.1) THEN
59419           IJOIN(1)=IP1
59420           IJOIN(2)=IP2
59421           CALL PYJOIN(2,IJOIN)
59422         ENDIF
59423         IF(IQL12.EQ.1.OR.IRAD.EQ.1) THEN
59424           PM12S=(P(IP1,4)+P(IP2,4))**2-(P(IP1,1)+P(IP2,1))**2-
59425      &    (P(IP1,2)+P(IP2,2))**2-(P(IP1,3)+P(IP2,3))**2
59426           CALL PYSHOW(IP1,IP2,SQRT(MAX(0D0,PM12S)))
59427         ENDIF
59428       ENDIF
59429       IF(IQL34.EQ.1) THEN
59430         IJOIN(1)=IP3
59431         IJOIN(2)=IP4
59432         CALL PYJOIN(2,IJOIN)
59433       ENDIF
59434       IF(IQL34.EQ.1.OR.IRAD.EQ.1) THEN
59435         PM34S=(P(IP3,4)+P(IP4,4))**2-(P(IP3,1)+P(IP4,1))**2-
59436      &  (P(IP3,2)+P(IP4,2))**2-(P(IP3,3)+P(IP4,3))**2
59437         CALL PYSHOW(IP3,IP4,SQRT(MAX(0D0,PM34S)))
59438       ENDIF
59439       IF(IQL56.EQ.1) THEN
59440         IJOIN(1)=IP5
59441         IJOIN(2)=IP6
59442         CALL PYJOIN(2,IJOIN)
59443       ENDIF
59444       IF(IQL56.EQ.1.OR.IRAD.EQ.1) THEN
59445         PM56S=(P(IP5,4)+P(IP6,4))**2-(P(IP5,1)+P(IP6,1))**2-
59446      &  (P(IP5,2)+P(IP6,2))**2-(P(IP5,3)+P(IP6,3))**2
59447         CALL PYSHOW(IP5,IP6,SQRT(MAX(0D0,PM56S)))
59448       ENDIF
59449  
59450 C...Do fragmentation and decays. Possibly except tau decay.
59451       IF(ITAU.EQ.0) THEN
59452         NTAU=0
59453         DO 210 I=1,N
59454         IF(IABS(K(I,2)).EQ.15.AND.K(I,1).EQ.1) THEN
59455           NTAU=NTAU+1
59456           INTAU(NTAU)=I
59457           K(I,1)=11
59458         ENDIF
59459   210   CONTINUE
59460       ENDIF
59461       CALL PYEXEC
59462       IF(ITAU.EQ.0) THEN
59463         DO 220 I=1,NTAU
59464         K(INTAU(I),1)=1
59465   220   CONTINUE
59466       ENDIF
59467  
59468 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
59469       IF(ICOM.EQ.0) THEN
59470         MSTU(28)=0
59471         CALL PYHEPC(1)
59472       ENDIF
59473  
59474       END
59475  
59476 C*********************************************************************
59477  
59478 C...PY4JET
59479 C...An interface from a four-parton generator to include
59480 C...parton showers and hadronization.
59481  
59482       SUBROUTINE PY4JET(PMAX,IRAD,ICOM)
59483  
59484 C...Double precision and integer declarations.
59485       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59486       IMPLICIT INTEGER(I-N)
59487       INTEGER PYK,PYCHGE,PYCOMP
59488 C...Commonblocks.
59489       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
59490       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59491       SAVE /PYJETS/,/PYDAT1/
59492 C...Local arrays.
59493       DIMENSION IJOIN(2),PTOT(4),BETA(3)
59494  
59495 C...Call PYHEPC to convert input from HEPEVT to PYJETS common.
59496       IF(ICOM.EQ.0) THEN
59497         MSTU(28)=0
59498         CALL PYHEPC(2)
59499       ENDIF
59500  
59501 C...Loop through entries and pick up all final partons.
59502       I1=0
59503       I2=0
59504       I3=0
59505       I4=0
59506       DO 100 I=1,N
59507       IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
59508       KFA=IABS(K(I,2))
59509       IF((KFA.GE.1.AND.KFA.LE.6).OR.KFA.EQ.21) THEN
59510         IF(K(I,2).GT.0.AND.K(I,2).LE.6) THEN
59511           IF(I1.EQ.0) THEN
59512             I1=I
59513           ELSEIF(I3.EQ.0) THEN
59514             I3=I
59515           ELSE
59516             CALL PYERRM(16,'(PY4JET:) more than two quarks')
59517           ENDIF
59518         ELSEIF(K(I,2).LT.0) THEN
59519           IF(I2.EQ.0) THEN
59520             I2=I
59521           ELSEIF(I4.EQ.0) THEN
59522             I4=I
59523           ELSE
59524             CALL PYERRM(16,'(PY4JET:) more than two antiquarks')
59525           ENDIF
59526         ELSE
59527           IF(I3.EQ.0) THEN
59528             I3=I
59529           ELSEIF(I4.EQ.0) THEN
59530             I4=I
59531           ELSE
59532             CALL PYERRM(16,'(PY4JET:) more than two gluons')
59533           ENDIF
59534         ENDIF
59535       ENDIF
59536   100 CONTINUE
59537  
59538 C...Check that event is arranged according to conventions.
59539       IF(I1.EQ.0.OR.I2.EQ.0.OR.I3.EQ.0.OR.I4.EQ.0) THEN
59540         CALL PYERRM(16,'(PY4JET:) event contains too few partons')
59541       ENDIF
59542       IF(I2.LT.I1.OR.I3.LT.I2.OR.I4.LT.I3) THEN
59543         CALL PYERRM(6,'(PY4JET:) partons arranged in wrong order')
59544       ENDIF
59545  
59546 C...Check whether second pair are quarks or gluons.
59547       IF(IABS(K(I3,2)).LT.10.AND.IABS(K(I4,2)).LT.10) THEN
59548         IQG34=1
59549       ELSEIF(K(I3,2).EQ.21.AND.K(I4,2).EQ.21) THEN
59550         IQG34=2
59551       ELSE
59552         CALL PYERRM(16,'(PY4JET:) second parton pair inconsistent')
59553       ENDIF
59554  
59555 C...Boost partons to their cm frame.
59556       DO 110 J=1,4
59557         PTOT(J)=P(I1,J)+P(I2,J)+P(I3,J)+P(I4,J)
59558   110 CONTINUE
59559       ECM=SQRT(MAX(0D0,PTOT(4)**2-PTOT(1)**2-PTOT(2)**2-PTOT(3)**2))
59560       DO 120 J=1,3
59561         BETA(J)=PTOT(J)/PTOT(4)
59562   120 CONTINUE
59563       CALL PYROBO(I1,I1,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
59564       CALL PYROBO(I2,I2,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
59565       CALL PYROBO(I3,I3,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
59566       CALL PYROBO(I4,I4,0D0,0D0,-BETA(1),-BETA(2),-BETA(3))
59567       NSAV=N
59568  
59569 C...Decide and set up shower history for q qbar q' qbar' events.
59570       IF(IQG34.EQ.1) THEN
59571         W1=PY4JTW(0,I1,I3,I4)
59572         W2=PY4JTW(0,I2,I3,I4)
59573         IF(W1.GT.PYR(0)*(W1+W2)) THEN
59574           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
59575         ELSE
59576           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
59577         ENDIF
59578  
59579 C...Decide and set up shower history for q qbar g g events.
59580       ELSE
59581         W1=PY4JTW(I1,I3,I2,I4)
59582         W2=PY4JTW(I1,I4,I2,I3)
59583         W3=PY4JTW(0,I3,I1,I4)
59584         W4=PY4JTW(0,I4,I1,I3)
59585         W5=PY4JTW(0,I3,I2,I4)
59586         W6=PY4JTW(0,I4,I2,I3)
59587         W7=PY4JTW(0,I1,I3,I4)
59588         W8=PY4JTW(0,I2,I3,I4)
59589         WR=(W1+W2+W3+W4+W5+W6+W7+W8)*PYR(0)
59590         IF(W1.GT.WR) THEN
59591           CALL PY4JTS(I1,I3,I2,I4,0,QMAX)
59592         ELSEIF(W1+W2.GT.WR) THEN
59593           CALL PY4JTS(I1,I4,I2,I3,0,QMAX)
59594         ELSEIF(W1+W2+W3.GT.WR) THEN
59595           CALL PY4JTS(0,I3,I1,I4,I2,QMAX)
59596         ELSEIF(W1+W2+W3+W4.GT.WR) THEN
59597           CALL PY4JTS(0,I4,I1,I3,I2,QMAX)
59598         ELSEIF(W1+W2+W3+W4+W5.GT.WR) THEN
59599           CALL PY4JTS(0,I3,I2,I4,I1,QMAX)
59600         ELSEIF(W1+W2+W3+W4+W5+W6.GT.WR) THEN
59601           CALL PY4JTS(0,I4,I2,I3,I1,QMAX)
59602         ELSEIF(W1+W2+W3+W4+W5+W6+W7.GT.WR) THEN
59603           CALL PY4JTS(0,I1,I3,I4,I2,QMAX)
59604         ELSE
59605           CALL PY4JTS(0,I2,I3,I4,I1,QMAX)
59606         ENDIF
59607       ENDIF
59608  
59609 C...Boost back original partons and mark them as deleted.
59610       CALL PYROBO(I1,I1,0D0,0D0,BETA(1),BETA(2),BETA(3))
59611       CALL PYROBO(I2,I2,0D0,0D0,BETA(1),BETA(2),BETA(3))
59612       CALL PYROBO(I3,I3,0D0,0D0,BETA(1),BETA(2),BETA(3))
59613       CALL PYROBO(I4,I4,0D0,0D0,BETA(1),BETA(2),BETA(3))
59614       K(I1,1)=K(I1,1)+10
59615       K(I2,1)=K(I2,1)+10
59616       K(I3,1)=K(I3,1)+10
59617       K(I4,1)=K(I4,1)+10
59618  
59619 C...Rotate shower initiating partons to be along z axis.
59620       PHI=PYANGL(P(NSAV+1,1),P(NSAV+1,2))
59621       CALL PYROBO(NSAV+1,NSAV+6,0D0,-PHI,0D0,0D0,0D0)
59622       THE=PYANGL(P(NSAV+1,3),P(NSAV+1,1))
59623       CALL PYROBO(NSAV+1,NSAV+6,-THE,0D0,0D0,0D0,0D0)
59624  
59625 C...Set up copy of shower initiating partons as on mass shell.
59626       DO 140 I=N+1,N+2
59627         DO 130 J=1,5
59628           K(I,J)=0
59629           P(I,J)=0D0
59630           V(I,J)=V(I1,J)
59631   130   CONTINUE
59632         K(I,1)=1
59633         K(I,2)=K(I-6,2)
59634   140 CONTINUE
59635       IF(K(NSAV+1,2).EQ.K(I1,2)) THEN
59636         K(N+1,3)=I1
59637         P(N+1,5)=P(I1,5)
59638         K(N+2,3)=I2
59639         P(N+2,5)=P(I2,5)
59640       ELSE
59641         K(N+1,3)=I2
59642         P(N+1,5)=P(I2,5)
59643         K(N+2,3)=I1
59644         P(N+2,5)=P(I1,5)
59645       ENDIF
59646       PABS=SQRT(MAX(0D0,(ECM**2-P(N+1,5)**2-P(N+2,5)**2)**2-
59647      &(2D0*P(N+1,5)*P(N+2,5))**2))/(2D0*ECM)
59648       P(N+1,3)=PABS
59649       P(N+1,4)=SQRT(PABS**2+P(N+1,5)**2)
59650       P(N+2,3)=-PABS
59651       P(N+2,4)=SQRT(PABS**2+P(N+2,5)**2)
59652       N=N+2
59653  
59654 C...Decide whether to allow or not photon radiation in showers.
59655 C...Connect up colours.
59656       MSTJ(41)=2
59657       IF(IRAD.EQ.0) MSTJ(41)=1
59658       IJOIN(1)=N-1
59659       IJOIN(2)=N
59660       CALL PYJOIN(2,IJOIN)
59661  
59662 C...Decide on maximum virtuality and do parton shower.
59663       IF(PMAX.LT.PARJ(82)) THEN
59664         PQMAX=QMAX
59665       ELSE
59666         PQMAX=PMAX
59667       ENDIF
59668       CALL PYSHOW(NSAV+1,-100,PQMAX)
59669  
59670 C...Rotate and boost back system.
59671       CALL PYROBO(NSAV+1,N,THE,PHI,BETA(1),BETA(2),BETA(3))
59672  
59673 C...Do fragmentation and decays.
59674       CALL PYEXEC
59675  
59676 C...Call PYHEPC to convert output from PYJETS to HEPEVT common.
59677       IF(ICOM.EQ.0) THEN
59678         MSTU(28)=0
59679         CALL PYHEPC(1)
59680       ENDIF
59681  
59682       RETURN
59683       END
59684  
59685 C*********************************************************************
59686  
59687 C...PY4JTW
59688 C...Auxiliary to PY4JET, to evaluate weight of configuration.
59689  
59690       FUNCTION PY4JTW(IA1,IA2,IA3,IA4)
59691  
59692 C...Double precision and integer declarations.
59693       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59694       IMPLICIT INTEGER(I-N)
59695       INTEGER PYK,PYCHGE,PYCOMP
59696 C...Commonblocks.
59697       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
59698       SAVE /PYJETS/
59699  
59700 C...First case: when both original partons radiate.
59701 C...IA1 /= 0: N+1 -> IA1 + IA2, N+2 -> IA3 + IA4.
59702       IF(IA1.NE.0) THEN
59703         DO 100 J=1,4
59704           P(N+1,J)=P(IA1,J)+P(IA2,J)
59705           P(N+2,J)=P(IA3,J)+P(IA4,J)
59706   100   CONTINUE
59707         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
59708      &  P(N+1,3)**2))
59709         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
59710      &  P(N+2,3)**2))
59711         Z1=P(IA1,4)/P(N+1,4)
59712         WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-P(IA1,5)**2)
59713         Z2=P(IA3,4)/P(N+2,4)
59714         WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-P(IA3,5)**2)
59715  
59716 C...Second case: when one original parton radiates to three.
59717 C...IA1  = 0: N+1 -> IA2 + N+2, N+2 -> IA3 + IA4.
59718       ELSE
59719         DO 110 J=1,4
59720           P(N+2,J)=P(IA3,J)+P(IA4,J)
59721           P(N+1,J)=P(N+2,J)+P(IA2,J)
59722   110   CONTINUE
59723         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
59724      &  P(N+1,3)**2))
59725         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
59726      &  P(N+2,3)**2))
59727         IF(K(IA2,2).EQ.21) THEN
59728           Z1=P(N+2,4)/P(N+1,4)
59729           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
59730      &    P(IA3,5)**2)
59731         ELSE
59732           Z1=P(IA2,4)/P(N+1,4)
59733           WT1=(4D0/3D0)*((1D0+Z1**2)/(1D0-Z1))/(P(N+1,5)**2-
59734      &    P(IA2,5)**2)
59735         ENDIF
59736         Z2=P(IA3,4)/P(N+2,4)
59737         IF(K(IA2,2).EQ.21) THEN
59738           WT2=(4D0/3D0)*((1D0+Z2**2)/(1D0-Z2))/(P(N+2,5)**2-
59739      &    P(IA3,5)**2)
59740         ELSEIF(K(IA3,2).EQ.21) THEN
59741           WT2=3D0*((1D0-Z2*(1D0-Z2))**2/(Z2*(1D0-Z2)))/P(N+2,5)**2
59742         ELSE
59743           WT2=0.5D0*(Z2**2+(1D0-Z2)**2)
59744         ENDIF
59745       ENDIF
59746  
59747 C...Total weight.
59748       PY4JTW=WT1*WT2
59749  
59750       RETURN
59751       END
59752  
59753 C*********************************************************************
59754  
59755 C...PY4JTS
59756 C...Auxiliary to PY4JET, to set up chosen configuration.
59757  
59758       SUBROUTINE PY4JTS(IA1,IA2,IA3,IA4,IA5,QMAX)
59759  
59760 C...Double precision and integer declarations.
59761       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59762       IMPLICIT INTEGER(I-N)
59763       INTEGER PYK,PYCHGE,PYCOMP
59764 C...Commonblocks.
59765       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
59766       SAVE /PYJETS/
59767  
59768 C...Reset info.
59769       DO 110 I=N+1,N+6
59770         DO 100 J=1,5
59771           K(I,J)=0
59772           V(I,J)=V(IA2,J)
59773   100   CONTINUE
59774         K(I,1)=16
59775   110 CONTINUE
59776  
59777 C...First case: when both original partons radiate.
59778 C...N+1 -> (IA1=N+3) + (IA2=N+4), N+2 -> (IA3=N+5) + (IA4=N+6).
59779       IF(IA1.NE.0) THEN
59780  
59781 C...Set up flavour and history pointers for new partons.
59782         K(N+1,2)=K(IA1,2)
59783         K(N+2,2)=K(IA3,2)
59784         K(N+3,2)=K(IA1,2)
59785         K(N+4,2)=K(IA2,2)
59786         K(N+5,2)=K(IA3,2)
59787         K(N+6,2)=K(IA4,2)
59788         K(N+1,3)=IA1
59789         K(N+1,4)=N+3
59790         K(N+1,5)=N+4
59791         K(N+2,3)=IA3
59792         K(N+2,4)=N+5
59793         K(N+2,5)=N+6
59794         K(N+3,3)=N+1
59795         K(N+4,3)=N+1
59796         K(N+5,3)=N+2
59797         K(N+6,3)=N+2
59798  
59799 C...Set up momenta for new partons.
59800         DO 120 J=1,5
59801           P(N+1,J)=P(IA1,J)+P(IA2,J)
59802           P(N+2,J)=P(IA3,J)+P(IA4,J)
59803           P(N+3,J)=P(IA1,J)
59804           P(N+4,J)=P(IA2,J)
59805           P(N+5,J)=P(IA3,J)
59806           P(N+6,J)=P(IA4,J)
59807   120   CONTINUE
59808         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
59809      &  P(N+1,3)**2))
59810         P(N+2,5)=SQRT(MAX(0D0,P(N+2,4)**2-P(N+2,1)**2-P(N+2,2)**2-
59811      &  P(N+2,3)**2))
59812         QMAX=MIN(P(N+1,5),P(N+2,5))
59813  
59814 C...Second case: q radiates twice.
59815 C...N+1 -> (IA2=N+4) + N+3, N+3 -> (IA3=N+5) + (IA4=N+6),
59816 C...IA5=N+2 does not radiate.
59817       ELSEIF(K(IA2,2).EQ.21) THEN
59818  
59819 C...Set up flavour and history pointers for new partons.
59820         K(N+1,2)=K(IA3,2)
59821         K(N+2,2)=K(IA5,2)
59822         K(N+3,2)=K(IA3,2)
59823         K(N+4,2)=K(IA2,2)
59824         K(N+5,2)=K(IA3,2)
59825         K(N+6,2)=K(IA4,2)
59826         K(N+1,3)=IA3
59827         K(N+1,4)=N+3
59828         K(N+1,5)=N+4
59829         K(N+2,3)=IA5
59830         K(N+3,3)=N+1
59831         K(N+3,4)=N+5
59832         K(N+3,5)=N+6
59833         K(N+4,3)=N+1
59834         K(N+5,3)=N+3
59835         K(N+6,3)=N+3
59836  
59837 C...Set up momenta for new partons.
59838         DO 130 J=1,5
59839           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
59840           P(N+2,J)=P(IA5,J)
59841           P(N+3,J)=P(IA3,J)+P(IA4,J)
59842           P(N+4,J)=P(IA2,J)
59843           P(N+5,J)=P(IA3,J)
59844           P(N+6,J)=P(IA4,J)
59845   130   CONTINUE
59846         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
59847      &  P(N+1,3)**2))
59848         P(N+3,5)=SQRT(MAX(0D0,P(N+3,4)**2-P(N+3,1)**2-P(N+3,2)**2-
59849      &  P(N+3,3)**2))
59850         QMAX=P(N+3,5)
59851  
59852 C...Third case: q radiates g, g branches.
59853 C...N+1 -> (IA2=N+3) + N+4, N+4 -> (IA3=N+5) + (IA4=N+6),
59854 C...IA5=N+2 does not radiate.
59855       ELSE
59856  
59857 C...Set up flavour and history pointers for new partons.
59858         K(N+1,2)=K(IA2,2)
59859         K(N+2,2)=K(IA5,2)
59860         K(N+3,2)=K(IA2,2)
59861         K(N+4,2)=21
59862         K(N+5,2)=K(IA3,2)
59863         K(N+6,2)=K(IA4,2)
59864         K(N+1,3)=IA2
59865         K(N+1,4)=N+3
59866         K(N+1,5)=N+4
59867         K(N+2,3)=IA5
59868         K(N+3,3)=N+1
59869         K(N+4,3)=N+1
59870         K(N+4,4)=N+5
59871         K(N+4,5)=N+6
59872         K(N+5,3)=N+4
59873         K(N+6,3)=N+4
59874  
59875 C...Set up momenta for new partons.
59876         DO 140 J=1,5
59877           P(N+1,J)=P(IA2,J)+P(IA3,J)+P(IA4,J)
59878           P(N+2,J)=P(IA5,J)
59879           P(N+3,J)=P(IA2,J)
59880           P(N+4,J)=P(IA3,J)+P(IA4,J)
59881           P(N+5,J)=P(IA3,J)
59882           P(N+6,J)=P(IA4,J)
59883   140   CONTINUE
59884         P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
59885      &  P(N+1,3)**2))
59886         P(N+4,5)=SQRT(MAX(0D0,P(N+4,4)**2-P(N+4,1)**2-P(N+4,2)**2-
59887      &  P(N+4,3)**2))
59888         QMAX=P(N+4,5)
59889  
59890       ENDIF
59891       N=N+6
59892  
59893       RETURN
59894       END
59895  
59896 C*********************************************************************
59897  
59898 C...PYJOIN
59899 C...Connects a sequence of partons with colour flow indices,
59900 C...as required for subsequent shower evolution (or other operations).
59901  
59902       SUBROUTINE PYJOIN(NJOIN,IJOIN)
59903  
59904 C...Double precision and integer declarations.
59905       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59906       IMPLICIT INTEGER(I-N)
59907       INTEGER PYK,PYCHGE,PYCOMP
59908 C...Commonblocks.
59909       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
59910       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59911       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
59912       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
59913 C...Local array.
59914       DIMENSION IJOIN(*)
59915  
59916 C...Check that partons are of right types to be connected.
59917       IF(NJOIN.LT.2) GOTO 120
59918       KQSUM=0
59919       DO 100 IJN=1,NJOIN
59920         I=IJOIN(IJN)
59921         IF(I.LE.0.OR.I.GT.N) GOTO 120
59922         IF(K(I,1).LT.1.OR.K(I,1).GT.3) GOTO 120
59923         KC=PYCOMP(K(I,2))
59924         IF(KC.EQ.0) GOTO 120
59925         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
59926         IF(KQ.EQ.0) GOTO 120
59927         IF(IJN.NE.1.AND.IJN.NE.NJOIN.AND.KQ.NE.2) GOTO 120
59928         IF(KQ.NE.2) KQSUM=KQSUM+KQ
59929         IF(IJN.EQ.1) KQS=KQ
59930   100 CONTINUE
59931       IF(KQSUM.NE.0) GOTO 120
59932  
59933 C...Connect the partons sequentially (closing for gluon loop).
59934       KCS=(9-KQS)/2
59935       IF(KQS.EQ.2) KCS=INT(4.5D0+PYR(0))
59936       DO 110 IJN=1,NJOIN
59937         I=IJOIN(IJN)
59938         K(I,1)=3
59939         IF(IJN.NE.1) IP=IJOIN(IJN-1)
59940         IF(IJN.EQ.1) IP=IJOIN(NJOIN)
59941         IF(IJN.NE.NJOIN) IN=IJOIN(IJN+1)
59942         IF(IJN.EQ.NJOIN) IN=IJOIN(1)
59943         K(I,KCS)=MSTU(5)*IN
59944         K(I,9-KCS)=MSTU(5)*IP
59945         IF(IJN.EQ.1.AND.KQS.NE.2) K(I,9-KCS)=0
59946         IF(IJN.EQ.NJOIN.AND.KQS.NE.2) K(I,KCS)=0
59947   110 CONTINUE
59948  
59949 C...Error exit: no action taken.
59950       RETURN
59951   120 CALL PYERRM(12,
59952      &'(PYJOIN:) given entries can not be joined by one string')
59953  
59954       RETURN
59955       END
59956  
59957 C*********************************************************************
59958  
59959 C...PYGIVE
59960 C...Sets values of commonblock variables.
59961  
59962       SUBROUTINE PYGIVE(CHIN)
59963  
59964 C...Double precision and integer declarations.
59965       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
59966       IMPLICIT INTEGER(I-N)
59967       INTEGER PYK,PYCHGE,PYCOMP
59968 C...Commonblocks.
59969       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
59970       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
59971       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
59972       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
59973       COMMON/PYDAT4/CHAF(500,2)
59974       CHARACTER CHAF*16
59975       COMMON/PYDATR/MRPY(6),RRPY(100)
59976       COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200)
59977       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
59978       COMMON/PYINT1/MINT(400),VINT(400)
59979       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
59980       COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000)
59981       COMMON/PYINT4/MWID(500),WIDS(500,5)
59982       COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3)
59983       COMMON/PYINT6/PROC(0:500)
59984       CHARACTER PROC*28
59985       COMMON/PYINT7/SIGT(0:6,0:6,0:5)
59986       COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6),
59987      &XPDIR(-6:6)
59988       COMMON/PYMSSM/IMSS(0:99),RMSS(0:99)
59989       COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3)
59990       COMMON/PYTCSM/ITCM(0:99),RTCM(0:99)
59991       COMMON/PYPUED/IUED(0:99),RUED(0:99)
59992       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,
59993      &/PYSUBS/,/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,
59994      &/PYINT6/,/PYINT7/,/PYINT8/,/PYMSSM/,/PYMSRV/,/PYTCSM/,/PYPUED/
59995 C...Local arrays and character variables.
59996       CHARACTER CHIN*(*),CHFIX*104,CHBIT*104,CHOLD*8,CHNEW*8,CHOLD2*28,
59997      &CHNEW2*28,CHNAM*6,CHVAR(56)*6,CHALP(2)*26,CHIND*8,CHINI*10,
59998      &CHINR*16,CHDIG*10
59999       DIMENSION MSVAR(56,8)
60000  
60001 C...For each variable to be translated give: name,
60002 C...integer/real/character, no. of indices, lower&upper index bounds.
60003       DATA CHVAR/'N','K','P','V','MSTU','PARU','MSTJ','PARJ','KCHG',
60004      &'PMAS','PARF','VCKM','MDCY','MDME','BRAT','KFDP','CHAF','MRPY',
60005      &'RRPY','MSEL','MSUB','KFIN','CKIN','MSTP','PARP','MSTI','PARI',
60006      &'MINT','VINT','ISET','KFPR','COEF','ICOL','XSFX','ISIG','SIGH',
60007      &'MWID','WIDS','NGEN','XSEC','PROC','SIGT','XPVMD','XPANL',
60008      &'XPANH','XPBEH','XPDIR','IMSS','RMSS','RVLAM','RVLAMP','RVLAMB',
60009      &'ITCM','RTCM','IUED','RUED'/
60010       DATA ((MSVAR(I,J),J=1,8),I=1,56)/ 1,7*0,  1,2,1,4000,1,5,2*0,
60011      &2,2,1,4000,1,5,2*0,  2,2,1,4000,1,5,2*0,  1,1,1,200,4*0,
60012      &2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
60013      &1,2,1,500,1,4,2*0,  2,2,1,500,1,4,2*0,  2,1,1,2000,4*0,
60014      &2,2,1,4,1,4,2*0,  1,2,1,500,1,3,2*0,  1,2,1,8000,1,2,2*0,
60015      &2,1,1,8000,4*0,  1,2,1,8000,1,5,2*0,  3,2,1,500,1,2,2*0,
60016      &1,1,1,6,4*0,  2,1,1,100,4*0,
60017      &1,7*0,  1,1,1,500,4*0,  1,2,1,2,-40,40,2*0,  2,1,1,200,4*0,
60018      &1,1,1,200,4*0,  2,1,1,200,4*0,  1,1,1,200,4*0,  2,1,1,200,4*0,
60019      &1,1,1,400,4*0,  2,1,1,400,4*0,  1,1,1,500,4*0,
60020      &1,2,1,500,1,2,2*0,  2,2,1,500,1,20,2*0,  1,3,1,40,1,4,1,2,
60021      &2,2,1,2,-40,40,2*0,  1,2,1,1000,1,3,2*0,  2,1,1,1000,4*0,
60022      &1,1,1,500,4*0,   2,2,1,500,1,5,2*0,   1,2,0,500,1,3,2*0,
60023      &2,2,0,500,1,3,2*0,   4,1,0,500,4*0,   2,3,0,6,0,6,0,5,
60024      &2,1,-6,6,4*0,     2,1,-6,6,4*0,    2,1,-6,6,4*0,
60025      &2,1,-6,6,4*0,  2,1,-6,6,4*0,  1,1,0,99,4*0,  2,1,0,99,4*0,
60026      &2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,   2,3,1,3,1,3,1,3,
60027      &1,1,0,99,4*0,  2,1,0,99,4*0,  1,1,0,99,4*0,  2,1,0,99,4*0/
60028       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
60029      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/, CHDIG/'1234567890'/
60030  
60031 C...Length of character variable. Subdivide it into instructions.
60032       IF(MSTU(12).NE.12345.AND.CHIN.NE.'mstu(12)=12345'.AND.
60033      &CHIN.NE.'MSTU(12)=12345') CALL PYLIST(0)
60034       CHBIT=CHIN//' '
60035       LBIT=101
60036   100 LBIT=LBIT-1
60037       IF(CHBIT(LBIT:LBIT).EQ.' ') GOTO 100
60038       LTOT=0
60039       DO 110 LCOM=1,LBIT
60040         IF(CHBIT(LCOM:LCOM).EQ.' ') GOTO 110
60041         LTOT=LTOT+1
60042         CHFIX(LTOT:LTOT)=CHBIT(LCOM:LCOM)
60043   110 CONTINUE
60044       LLOW=0
60045   120 LHIG=LLOW+1
60046   130 LHIG=LHIG+1
60047       IF(LHIG.LE.LTOT.AND.CHFIX(LHIG:LHIG).NE.';') GOTO 130
60048       LBIT=LHIG-LLOW-1
60049       CHBIT(1:LBIT)=CHFIX(LLOW+1:LHIG-1)
60050 
60051 C...Send off decay-mode on/off commands to PYONOF.
60052       IONOF=0
60053       DO 135 LDIG=1,10
60054         IF(CHBIT(1:1).EQ.CHDIG(LDIG:LDIG)) IONOF=1
60055   135 CONTINUE
60056       IF(IONOF.EQ.1) THEN
60057         CALL PYONOF(CHIN)
60058         RETURN
60059       ENDIF   
60060  
60061 C...Peel off any text following exclamation mark.
60062       LHIG2=LBIT
60063       DO 140 LLOW2=LHIG2,1,-1
60064         IF(CHBIT(LLOW2:LLOW2).EQ.'!') LBIT=LLOW2-1
60065   140 CONTINUE
60066       IF(LBIT.EQ.0) RETURN
60067  
60068 C...Identify commonblock variable.
60069       LNAM=1
60070   150 LNAM=LNAM+1
60071       IF(CHBIT(LNAM:LNAM).NE.'('.AND.CHBIT(LNAM:LNAM).NE.'='.AND.
60072      &LNAM.LE.6) GOTO 150
60073       CHNAM=CHBIT(1:LNAM-1)//' '
60074       DO 170 LCOM=1,LNAM-1
60075         DO 160 LALP=1,26
60076           IF(CHNAM(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) CHNAM(LCOM:LCOM)=
60077      &    CHALP(2)(LALP:LALP)
60078   160   CONTINUE
60079   170 CONTINUE
60080       IVAR=0
60081       DO 180 IV=1,56
60082         IF(CHNAM.EQ.CHVAR(IV)) IVAR=IV
60083   180 CONTINUE
60084       IF(IVAR.EQ.0) THEN
60085         CALL PYERRM(18,'(PYGIVE:) do not recognize variable '//CHNAM)
60086         LLOW=LHIG
60087         IF(LLOW.LT.LTOT) GOTO 120
60088         RETURN
60089       ENDIF
60090  
60091 C...Identify any indices.
60092       I1=0
60093       I2=0
60094       I3=0
60095       NINDX=0
60096       IF(CHBIT(LNAM:LNAM).EQ.'(') THEN
60097         LIND=LNAM
60098   190   LIND=LIND+1
60099         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 190
60100         CHIND=' '
60101         IF((CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.'c')
60102      &  .AND.(IVAR.EQ.9.OR.IVAR.EQ.10.OR.IVAR.EQ.13.OR.IVAR.EQ.17.OR.
60103      &  IVAR.EQ.37)) THEN
60104           CHIND(LNAM-LIND+11:8)=CHBIT(LNAM+2:LIND-1)
60105           READ(CHIND,'(I8)') KF
60106           I1=PYCOMP(KF)
60107         ELSEIF(CHBIT(LNAM+1:LNAM+1).EQ.'C'.OR.CHBIT(LNAM+1:LNAM+1).EQ.
60108      &    'c') THEN
60109           CALL PYERRM(18,'(PYGIVE:) not allowed to use C index for '//
60110      &    CHNAM)
60111           LLOW=LHIG
60112           IF(LLOW.LT.LTOT) GOTO 120
60113           RETURN
60114         ELSE
60115           CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
60116           READ(CHIND,'(I8)') I1
60117         ENDIF
60118         LNAM=LIND
60119         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
60120         NINDX=1
60121       ENDIF
60122       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
60123         LIND=LNAM
60124   200   LIND=LIND+1
60125         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 200
60126         CHIND=' '
60127         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
60128         READ(CHIND,'(I8)') I2
60129         LNAM=LIND
60130         IF(CHBIT(LNAM:LNAM).EQ.')') LNAM=LNAM+1
60131         NINDX=2
60132       ENDIF
60133       IF(CHBIT(LNAM:LNAM).EQ.',') THEN
60134         LIND=LNAM
60135   210   LIND=LIND+1
60136         IF(CHBIT(LIND:LIND).NE.')'.AND.CHBIT(LIND:LIND).NE.',') GOTO 210
60137         CHIND=' '
60138         CHIND(LNAM-LIND+10:8)=CHBIT(LNAM+1:LIND-1)
60139         READ(CHIND,'(I8)') I3
60140         LNAM=LIND+1
60141         NINDX=3
60142       ENDIF
60143  
60144 C...Check that indices allowed.
60145       IERR=0
60146       IF(NINDX.NE.MSVAR(IVAR,2)) IERR=1
60147       IF(NINDX.GE.1.AND.(I1.LT.MSVAR(IVAR,3).OR.I1.GT.MSVAR(IVAR,4)))
60148      &IERR=2
60149       IF(NINDX.GE.2.AND.(I2.LT.MSVAR(IVAR,5).OR.I2.GT.MSVAR(IVAR,6)))
60150      &IERR=3
60151       IF(NINDX.EQ.3.AND.(I3.LT.MSVAR(IVAR,7).OR.I3.GT.MSVAR(IVAR,8)))
60152      &IERR=4
60153       IF(CHBIT(LNAM:LNAM).NE.'=') IERR=5
60154       IF(IERR.GE.1) THEN
60155         CALL PYERRM(18,'(PYGIVE:) unallowed indices for '//
60156      &  CHBIT(1:LNAM-1))
60157         LLOW=LHIG
60158         IF(LLOW.LT.LTOT) GOTO 120
60159         RETURN
60160       ENDIF
60161  
60162 C...Save old value of variable.
60163       IF(IVAR.EQ.1) THEN
60164         IOLD=N
60165       ELSEIF(IVAR.EQ.2) THEN
60166         IOLD=K(I1,I2)
60167       ELSEIF(IVAR.EQ.3) THEN
60168         ROLD=P(I1,I2)
60169       ELSEIF(IVAR.EQ.4) THEN
60170         ROLD=V(I1,I2)
60171       ELSEIF(IVAR.EQ.5) THEN
60172         IOLD=MSTU(I1)
60173       ELSEIF(IVAR.EQ.6) THEN
60174         ROLD=PARU(I1)
60175       ELSEIF(IVAR.EQ.7) THEN
60176         IOLD=MSTJ(I1)
60177       ELSEIF(IVAR.EQ.8) THEN
60178         ROLD=PARJ(I1)
60179       ELSEIF(IVAR.EQ.9) THEN
60180         IOLD=KCHG(I1,I2)
60181       ELSEIF(IVAR.EQ.10) THEN
60182         ROLD=PMAS(I1,I2)
60183       ELSEIF(IVAR.EQ.11) THEN
60184         ROLD=PARF(I1)
60185       ELSEIF(IVAR.EQ.12) THEN
60186         ROLD=VCKM(I1,I2)
60187       ELSEIF(IVAR.EQ.13) THEN
60188         IOLD=MDCY(I1,I2)
60189       ELSEIF(IVAR.EQ.14) THEN
60190         IOLD=MDME(I1,I2)
60191       ELSEIF(IVAR.EQ.15) THEN
60192         ROLD=BRAT(I1)
60193       ELSEIF(IVAR.EQ.16) THEN
60194         IOLD=KFDP(I1,I2)
60195       ELSEIF(IVAR.EQ.17) THEN
60196         CHOLD=CHAF(I1,I2)(1:8)
60197       ELSEIF(IVAR.EQ.18) THEN
60198         IOLD=MRPY(I1)
60199       ELSEIF(IVAR.EQ.19) THEN
60200         ROLD=RRPY(I1)
60201       ELSEIF(IVAR.EQ.20) THEN
60202         IOLD=MSEL
60203       ELSEIF(IVAR.EQ.21) THEN
60204         IOLD=MSUB(I1)
60205       ELSEIF(IVAR.EQ.22) THEN
60206         IOLD=KFIN(I1,I2)
60207       ELSEIF(IVAR.EQ.23) THEN
60208         ROLD=CKIN(I1)
60209       ELSEIF(IVAR.EQ.24) THEN
60210         IOLD=MSTP(I1)
60211       ELSEIF(IVAR.EQ.25) THEN
60212         ROLD=PARP(I1)
60213       ELSEIF(IVAR.EQ.26) THEN
60214         IOLD=MSTI(I1)
60215       ELSEIF(IVAR.EQ.27) THEN
60216         ROLD=PARI(I1)
60217       ELSEIF(IVAR.EQ.28) THEN
60218         IOLD=MINT(I1)
60219       ELSEIF(IVAR.EQ.29) THEN
60220         ROLD=VINT(I1)
60221       ELSEIF(IVAR.EQ.30) THEN
60222         IOLD=ISET(I1)
60223       ELSEIF(IVAR.EQ.31) THEN
60224         IOLD=KFPR(I1,I2)
60225       ELSEIF(IVAR.EQ.32) THEN
60226         ROLD=COEF(I1,I2)
60227       ELSEIF(IVAR.EQ.33) THEN
60228         IOLD=ICOL(I1,I2,I3)
60229       ELSEIF(IVAR.EQ.34) THEN
60230         ROLD=XSFX(I1,I2)
60231       ELSEIF(IVAR.EQ.35) THEN
60232         IOLD=ISIG(I1,I2)
60233       ELSEIF(IVAR.EQ.36) THEN
60234         ROLD=SIGH(I1)
60235       ELSEIF(IVAR.EQ.37) THEN
60236         IOLD=MWID(I1)
60237       ELSEIF(IVAR.EQ.38) THEN
60238         ROLD=WIDS(I1,I2)
60239       ELSEIF(IVAR.EQ.39) THEN
60240         IOLD=NGEN(I1,I2)
60241       ELSEIF(IVAR.EQ.40) THEN
60242         ROLD=XSEC(I1,I2)
60243       ELSEIF(IVAR.EQ.41) THEN
60244         CHOLD2=PROC(I1)
60245       ELSEIF(IVAR.EQ.42) THEN
60246         ROLD=SIGT(I1,I2,I3)
60247       ELSEIF(IVAR.EQ.43) THEN
60248         ROLD=XPVMD(I1)
60249       ELSEIF(IVAR.EQ.44) THEN
60250         ROLD=XPANL(I1)
60251       ELSEIF(IVAR.EQ.45) THEN
60252         ROLD=XPANH(I1)
60253       ELSEIF(IVAR.EQ.46) THEN
60254         ROLD=XPBEH(I1)
60255       ELSEIF(IVAR.EQ.47) THEN
60256         ROLD=XPDIR(I1)
60257       ELSEIF(IVAR.EQ.48) THEN
60258         IOLD=IMSS(I1)
60259       ELSEIF(IVAR.EQ.49) THEN
60260         ROLD=RMSS(I1)
60261       ELSEIF(IVAR.EQ.50) THEN
60262         ROLD=RVLAM(I1,I2,I3)
60263       ELSEIF(IVAR.EQ.51) THEN
60264         ROLD=RVLAMP(I1,I2,I3)
60265       ELSEIF(IVAR.EQ.52) THEN
60266         ROLD=RVLAMB(I1,I2,I3)
60267       ELSEIF(IVAR.EQ.53) THEN
60268         IOLD=ITCM(I1)
60269       ELSEIF(IVAR.EQ.54) THEN
60270         ROLD=RTCM(I1)
60271       ELSEIF(IVAR.EQ.55) THEN
60272         IOLD=IUED(I1)
60273       ELSEIF(IVAR.EQ.56) THEN
60274         ROLD=RUED(I1)
60275       ENDIF
60276  
60277 C...Print current value of variable. Loop back.
60278       IF(LNAM.GE.LBIT) THEN
60279         CHBIT(LNAM:14)=' '
60280         CHBIT(15:60)=' has the value                                '
60281         IF(MSVAR(IVAR,1).EQ.1) THEN
60282           WRITE(CHBIT(51:60),'(I10)') IOLD
60283         ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
60284           WRITE(CHBIT(47:60),'(F14.5)') ROLD
60285         ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
60286           CHBIT(53:60)=CHOLD
60287         ELSE
60288           CHBIT(33:60)=CHOLD
60289         ENDIF
60290         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
60291         LLOW=LHIG
60292         IF(LLOW.LT.LTOT) GOTO 120
60293         RETURN
60294       ENDIF
60295  
60296 C...Read in new variable value.
60297       IF(MSVAR(IVAR,1).EQ.1) THEN
60298         CHINI=' '
60299         CHINI(LNAM-LBIT+11:10)=CHBIT(LNAM+1:LBIT)
60300         READ(CHINI,'(I10)') INEW
60301       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
60302         CHINR=' '
60303         CHINR(LNAM-LBIT+17:16)=CHBIT(LNAM+1:LBIT)
60304         READ(CHINR,*) RNEW
60305       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
60306         CHNEW=CHBIT(LNAM+1:LBIT)//' '
60307       ELSE
60308         CHNEW2=CHBIT(LNAM+1:LBIT)//' '
60309       ENDIF
60310  
60311 C...Store new variable value.
60312       IF(IVAR.EQ.1) THEN
60313         N=INEW
60314       ELSEIF(IVAR.EQ.2) THEN
60315         K(I1,I2)=INEW
60316       ELSEIF(IVAR.EQ.3) THEN
60317         P(I1,I2)=RNEW
60318       ELSEIF(IVAR.EQ.4) THEN
60319         V(I1,I2)=RNEW
60320       ELSEIF(IVAR.EQ.5) THEN
60321         MSTU(I1)=INEW
60322       ELSEIF(IVAR.EQ.6) THEN
60323         PARU(I1)=RNEW
60324       ELSEIF(IVAR.EQ.7) THEN
60325         MSTJ(I1)=INEW
60326       ELSEIF(IVAR.EQ.8) THEN
60327         PARJ(I1)=RNEW
60328       ELSEIF(IVAR.EQ.9) THEN
60329         KCHG(I1,I2)=INEW
60330       ELSEIF(IVAR.EQ.10) THEN
60331         PMAS(I1,I2)=RNEW
60332       ELSEIF(IVAR.EQ.11) THEN
60333         PARF(I1)=RNEW
60334       ELSEIF(IVAR.EQ.12) THEN
60335         VCKM(I1,I2)=RNEW
60336       ELSEIF(IVAR.EQ.13) THEN
60337         MDCY(I1,I2)=INEW
60338       ELSEIF(IVAR.EQ.14) THEN
60339         MDME(I1,I2)=INEW
60340       ELSEIF(IVAR.EQ.15) THEN
60341         BRAT(I1)=RNEW
60342       ELSEIF(IVAR.EQ.16) THEN
60343         KFDP(I1,I2)=INEW
60344       ELSEIF(IVAR.EQ.17) THEN
60345         CHAF(I1,I2)=CHNEW
60346       ELSEIF(IVAR.EQ.18) THEN
60347         MRPY(I1)=INEW
60348       ELSEIF(IVAR.EQ.19) THEN
60349         RRPY(I1)=RNEW
60350       ELSEIF(IVAR.EQ.20) THEN
60351         MSEL=INEW
60352       ELSEIF(IVAR.EQ.21) THEN
60353         MSUB(I1)=INEW
60354       ELSEIF(IVAR.EQ.22) THEN
60355         KFIN(I1,I2)=INEW
60356       ELSEIF(IVAR.EQ.23) THEN
60357         CKIN(I1)=RNEW
60358       ELSEIF(IVAR.EQ.24) THEN
60359         MSTP(I1)=INEW
60360       ELSEIF(IVAR.EQ.25) THEN
60361         PARP(I1)=RNEW
60362       ELSEIF(IVAR.EQ.26) THEN
60363         MSTI(I1)=INEW
60364       ELSEIF(IVAR.EQ.27) THEN
60365         PARI(I1)=RNEW
60366       ELSEIF(IVAR.EQ.28) THEN
60367         MINT(I1)=INEW
60368       ELSEIF(IVAR.EQ.29) THEN
60369         VINT(I1)=RNEW
60370       ELSEIF(IVAR.EQ.30) THEN
60371         ISET(I1)=INEW
60372       ELSEIF(IVAR.EQ.31) THEN
60373         KFPR(I1,I2)=INEW
60374       ELSEIF(IVAR.EQ.32) THEN
60375         COEF(I1,I2)=RNEW
60376       ELSEIF(IVAR.EQ.33) THEN
60377         ICOL(I1,I2,I3)=INEW
60378       ELSEIF(IVAR.EQ.34) THEN
60379         XSFX(I1,I2)=RNEW
60380       ELSEIF(IVAR.EQ.35) THEN
60381         ISIG(I1,I2)=INEW
60382       ELSEIF(IVAR.EQ.36) THEN
60383         SIGH(I1)=RNEW
60384       ELSEIF(IVAR.EQ.37) THEN
60385         MWID(I1)=INEW
60386       ELSEIF(IVAR.EQ.38) THEN
60387         WIDS(I1,I2)=RNEW
60388       ELSEIF(IVAR.EQ.39) THEN
60389         NGEN(I1,I2)=INEW
60390       ELSEIF(IVAR.EQ.40) THEN
60391         XSEC(I1,I2)=RNEW
60392       ELSEIF(IVAR.EQ.41) THEN
60393         PROC(I1)=CHNEW2
60394       ELSEIF(IVAR.EQ.42) THEN
60395         SIGT(I1,I2,I3)=RNEW
60396       ELSEIF(IVAR.EQ.43) THEN
60397         XPVMD(I1)=RNEW
60398       ELSEIF(IVAR.EQ.44) THEN
60399         XPANL(I1)=RNEW
60400       ELSEIF(IVAR.EQ.45) THEN
60401         XPANH(I1)=RNEW
60402       ELSEIF(IVAR.EQ.46) THEN
60403         XPBEH(I1)=RNEW
60404       ELSEIF(IVAR.EQ.47) THEN
60405         XPDIR(I1)=RNEW
60406       ELSEIF(IVAR.EQ.48) THEN
60407         IMSS(I1)=INEW
60408       ELSEIF(IVAR.EQ.49) THEN
60409         RMSS(I1)=RNEW
60410       ELSEIF(IVAR.EQ.50) THEN
60411         RVLAM(I1,I2,I3)=RNEW
60412       ELSEIF(IVAR.EQ.51) THEN
60413         RVLAMP(I1,I2,I3)=RNEW
60414       ELSEIF(IVAR.EQ.52) THEN
60415         RVLAMB(I1,I2,I3)=RNEW
60416       ELSEIF(IVAR.EQ.53) THEN
60417         ITCM(I1)=INEW
60418       ELSEIF(IVAR.EQ.54) THEN
60419         RTCM(I1)=RNEW
60420       ELSEIF(IVAR.EQ.55) THEN
60421         IUED(I1)=INEW
60422       ELSEIF(IVAR.EQ.56) THEN
60423         RUED(I1)=RNEW
60424       ENDIF
60425  
60426 C...Write old and new value. Loop back.
60427       CHBIT(LNAM:14)=' '
60428       CHBIT(15:60)=' changed from                to               '
60429       IF(MSVAR(IVAR,1).EQ.1) THEN
60430         WRITE(CHBIT(33:42),'(I10)') IOLD
60431         WRITE(CHBIT(51:60),'(I10)') INEW
60432         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
60433       ELSEIF(MSVAR(IVAR,1).EQ.2) THEN
60434         WRITE(CHBIT(29:42),'(F14.5)') ROLD
60435         WRITE(CHBIT(47:60),'(F14.5)') RNEW
60436         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
60437       ELSEIF(MSVAR(IVAR,1).EQ.3) THEN
60438         CHBIT(35:42)=CHOLD
60439         CHBIT(53:60)=CHNEW
60440         IF(MSTU(13).GE.1) WRITE(MSTU(11),5000) CHBIT(1:60)
60441       ELSE
60442         CHBIT(15:88)=' changed from '//CHOLD2//' to '//CHNEW2
60443         IF(MSTU(13).GE.1) WRITE(MSTU(11),5100) CHBIT(1:88)
60444       ENDIF
60445       LLOW=LHIG
60446       IF(LLOW.LT.LTOT) GOTO 120
60447  
60448 C...Format statement for output on unit MSTU(11) (by default 6).
60449  5000 FORMAT(5X,A60)
60450  5100 FORMAT(5X,A88)
60451  
60452       RETURN
60453       END
60454  
60455 C*********************************************************************
60456  
60457 C...PYONOF
60458 C...Switches on and off decay channel by search for match.
60459  
60460       SUBROUTINE PYONOF(CHIN)
60461  
60462 C...Double precision and integer declarations.
60463       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60464       IMPLICIT INTEGER(I-N)
60465       INTEGER PYK,PYCHGE,PYCOMP
60466 C...Commonblocks.
60467       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60468       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
60469       SAVE /PYDAT1/,/PYDAT3/
60470 C...Local arrays and character variables.
60471       INTEGER KFCMP(10),KFTMP(10)
60472       CHARACTER CHIN*(*),CHTMP*104,CHFIX*104,CHMODE*10,CHCODE*8,
60473      &CHALP(2)*26
60474       DATA CHALP/'abcdefghijklmnopqrstuvwxyz',
60475      &'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
60476 
60477 C...Determine length of character variable.
60478       CHTMP=CHIN//' '
60479       LBEG=0
60480   100 LBEG=LBEG+1
60481       IF(CHTMP(LBEG:LBEG).EQ.' ') GOTO 100
60482       LEND=LBEG-1
60483   105 LEND=LEND+1
60484       IF(LEND.LE.100.AND.CHTMP(LEND:LEND).NE.'!') GOTO 105
60485   110 LEND=LEND-1
60486       IF(CHTMP(LEND:LEND).EQ.' ') GOTO 110
60487       LEN=1+LEND-LBEG
60488       CHFIX(1:LEN)=CHTMP(LBEG:LEND)
60489 
60490 C...Find colon separator and particle code.
60491       LCOLON=0
60492   120 LCOLON=LCOLON+1
60493       IF(CHFIX(LCOLON:LCOLON).NE.':') GOTO 120
60494       CHCODE=' '
60495       CHCODE(10-LCOLON:8)=CHFIX(1:LCOLON-1)
60496       READ(CHCODE,'(I8)',ERR=300) KF
60497       KC=PYCOMP(KF)
60498 
60499 C...Done if unknown code or no decay channels.
60500       IF(KC.EQ.0) THEN
60501         CALL PYERRM(18,'(PYONOF:) unrecognized particle '//CHCODE)
60502         RETURN
60503       ENDIF
60504       IDCBEG=MDCY(KC,2)
60505       IDCLEN=MDCY(KC,3)
60506       IF(IDCBEG.EQ.0.OR.IDCLEN.EQ.0) THEN
60507         CALL PYERRM(18,'(PYONOF:) no decay channels for '//CHCODE)
60508         RETURN
60509       ENDIF
60510 
60511 C...Find command name up to blank or equal sign.
60512       LSEP=LCOLON
60513   130 LSEP=LSEP+1
60514       IF(LSEP.LE.LEN.AND.CHFIX(LSEP:LSEP).NE.' '.AND.
60515      &CHFIX(LSEP:LSEP).NE.'=') GOTO 130
60516       CHMODE=' '
60517       LMODE=LSEP-LCOLON-1
60518       CHMODE(1:LMODE)=CHFIX(LCOLON+1:LSEP-1)
60519 
60520 C...Convert to uppercase.
60521       DO 150 LCOM=1,LMODE
60522         DO 140 LALP=1,26
60523           IF(CHMODE(LCOM:LCOM).EQ.CHALP(1)(LALP:LALP)) 
60524      &    CHMODE(LCOM:LCOM)=CHALP(2)(LALP:LALP)
60525   140   CONTINUE
60526   150 CONTINUE
60527 
60528 C...Identify command. Failed if not identified.
60529       MODE=0
60530       IF(CHMODE.EQ.'ALLOFF') MODE=1
60531       IF(CHMODE.EQ.'ALLON') MODE=2
60532       IF(CHMODE.EQ.'OFFIFANY') MODE=3
60533       IF(CHMODE.EQ.'ONIFANY') MODE=4
60534       IF(CHMODE.EQ.'OFFIFALL') MODE=5
60535       IF(CHMODE.EQ.'ONIFALL') MODE=6
60536       IF(CHMODE.EQ.'OFFIFMATCH') MODE=7
60537       IF(CHMODE.EQ.'ONIFMATCH') MODE=8
60538       IF(MODE.EQ.0) THEN
60539         CALL PYERRM(18,'(PYONOF:) unknown command '//CHMODE)
60540         RETURN
60541       ENDIF
60542 
60543 C...Simple cases when all on or all off.
60544       IF(MODE.EQ.1.OR.MODE.EQ.2) THEN
60545         WRITE(MSTU(11),1000) KF,CHMODE
60546         DO 160 IDC=IDCBEG,IDCBEG+IDCLEN-1
60547           IF(MDME(IDC,1).LT.0) GOTO 160
60548           MDME(IDC,1)=MODE-1
60549   160   CONTINUE
60550         RETURN
60551       ENDIF
60552 
60553 C...Identify matching list.
60554       NCMP=0
60555       LBEG=LSEP
60556   170 LBEG=LBEG+1
60557       IF(LBEG.GT.LEN) GOTO 190
60558       IF(LBEG.LT.LEN.AND.(CHFIX(LBEG:LBEG).EQ.' '.OR.
60559      &CHFIX(LBEG:LBEG).EQ.'='.OR.CHFIX(LBEG:LBEG).EQ.',')) GOTO 170
60560       LEND=LBEG-1
60561   180 LEND=LEND+1
60562       IF(LEND.LT.LEN.AND.CHFIX(LEND:LEND).NE.' '.AND.
60563      &CHFIX(LEND:LEND).NE.'='.AND.CHFIX(LEND:LEND).NE.',') GOTO 180
60564       IF(LEND.LT.LEN) LEND=LEND-1
60565       CHCODE=' '
60566       CHCODE(8-LEND+LBEG:8)=CHFIX(LBEG:LEND)
60567       READ(CHCODE,'(I8)',ERR=300) KFREAD
60568       NCMP=NCMP+1
60569       KFCMP(NCMP)=IABS(KFREAD)
60570       LBEG=LEND
60571       IF(NCMP.LT.10) GOTO 170
60572   190 CONTINUE
60573       WRITE(MSTU(11),1100) KF,CHMODE,(KFCMP(ICMP),ICMP=1,NCMP)
60574 
60575 C...Only one matching required.
60576       IF(MODE.EQ.3.OR.MODE.EQ.4) THEN
60577         DO 220 IDC=IDCBEG,IDCBEG+IDCLEN-1
60578           IF(MDME(IDC,1).LT.0) GOTO 220
60579           DO 210 IKF=1,5
60580             KFNOW=IABS(KFDP(IDC,IKF))
60581             IF(KFNOW.EQ.0) GOTO 210
60582             DO 200 ICMP=1,NCMP
60583               IF(KFCMP(ICMP).EQ.KFNOW) THEN
60584                 MDME(IDC,1)=MODE-3
60585                 GOTO 220
60586               ENDIF
60587   200      CONTINUE
60588   210     CONTINUE
60589   220   CONTINUE
60590         RETURN
60591       ENDIF
60592 
60593 C...Multiple matchings required.
60594       DO 260 IDC=IDCBEG,IDCBEG+IDCLEN-1
60595         IF(MDME(IDC,1).LT.0) GOTO 260
60596         NTMP=NCMP
60597         DO 230 ITMP=1,NTMP
60598           KFTMP(ITMP)=KFCMP(ITMP)
60599   230   CONTINUE  
60600         NFIN=0 
60601         DO 250 IKF=1,5
60602           KFNOW=IABS(KFDP(IDC,IKF))
60603           IF(KFNOW.EQ.0) GOTO 250
60604           NFIN=NFIN+1
60605           DO 240 ITMP=1,NTMP
60606             IF(KFTMP(ITMP).EQ.KFNOW) THEN
60607               KFTMP(ITMP)=KFTMP(NTMP) 
60608               NTMP=NTMP-1
60609               GOTO 250
60610             ENDIF
60611   240     CONTINUE
60612   250   CONTINUE
60613         IF(NTMP.EQ.0.AND.MODE.LE.6) MDME(IDC,1)=MODE-5
60614         IF(NTMP.EQ.0.AND.NFIN.EQ.NCMP.AND.MODE.GE.7) 
60615      &  MDME(IDC,1)=MODE-7
60616   260 CONTINUE
60617       RETURN
60618 
60619 C...Error exit for impossible read of particle code.
60620   300 CALL PYERRM(18,'(PYONOF:) could not interpret particle code '
60621      &//CHCODE)
60622 
60623 C...Formats for output.
60624  1000 FORMAT(' Decays for',I8,' set ',A10)
60625  1100 FORMAT(' Decays for',I8,' set ',A10,' if match',10I8)
60626 
60627       RETURN
60628       END
60629 C*********************************************************************
60630  
60631 C...PYTUNE
60632 C...Presets for a few specific underlying-event and min-bias tunes
60633 C...Note some tunes require external pdfs to be linked (e.g. 105:QW),
60634 C...others require particular versions of pythia (e.g. the SCI and GAL
60635 C...models). See below for details.
60636       SUBROUTINE PYTUNE(ITUNE)
60637 C
60638 C ITUNE    NAME (detailed descriptions below)
60639 C     0 Default : No settings changed => defaults.
60640 C
60641 C ====== Old UE, Q2-ordered showers ====================================
60642 C   100       A : Rick Field's CDF Tune A                     (Oct 2002)
60643 C   101      AW : Rick Field's CDF Tune AW                    (Apr 2006)
60644 C   102      BW : Rick Field's CDF Tune BW                    (Apr 2006)
60645 C   103      DW : Rick Field's CDF Tune DW                    (Apr 2006)
60646 C   104     DWT : As DW but with slower UE ECM-scaling        (Apr 2006)
60647 C   105      QW : Rick Field's CDF Tune QW using CTEQ6.1M            (?)
60648 C   106 ATLAS-DC2: Arthur Moraes' (old) ATLAS tune ("Rome")          (?)
60649 C   107     ACR : Tune A modified with new CR model           (Mar 2007)
60650 C   108      D6 : Rick Field's CDF Tune D6 using CTEQ6L1             (?)
60651 C   109     D6T : Rick Field's CDF Tune D6T using CTEQ6L1            (?)
60652 C ---- Professor Tunes : 110+ (= 100+ with Professor's tune to LEP) ----
60653 C   110   A-Pro : Tune A, with LEP tune from Professor        (Oct 2008)
60654 C   111  AW-Pro : Tune AW, -"-                                (Oct 2008)
60655 C   112  BW-Pro : Tune BW, -"-                                (Oct 2008)
60656 C   113  DW-Pro : Tune DW, -"-                                (Oct 2008)
60657 C   114 DWT-Pro : Tune DWT, -"-                               (Oct 2008)
60658 C   115  QW-Pro : Tune QW, -"-                                (Oct 2008)
60659 C   116 ATLAS-DC2-Pro: ATLAS-DC2 / Rome, -"-                  (Oct 2008)
60660 C   117 ACR-Pro : Tune ACR, -"-                               (Oct 2008)
60661 C   118  D6-Pro : Tune D6, -"-                                (Oct 2008)
60662 C   119 D6T-Pro : Tune D6T, -"-                               (Oct 2008)
60663 C ---- Professor's Q2-ordered Perugia Tune : 129 -----------------------
60664 C   129 Pro-Q20 : Professor Q2-ordered tune                   (Feb 2009)
60665 C
60666 C ====== Intermediate and Hybrid Models ================================
60667 C   200    IM 1 : Intermediate model: new UE, Q2-ord. showers, new CR
60668 C   201     APT : Tune A w. pT-ordered FSR                    (Mar 2007)
60669 C   211 APT-Pro : Tune APT, with LEP tune from Professor      (Oct 2008)
60670 C   221 Perugia APT  : "Perugia" update of APT-Pro            (Feb 2009)
60671 C   226 Perugia APT6 : "Perugia" update of APT-Pro w. CTEQ6L1 (Feb 2009)
60672 C
60673 C ====== New UE, interleaved pT-ordered showers, annealing CR ==========
60674 C   300      S0 : Sandhoff-Skands Tune using the S0 CR model  (Apr 2006)
60675 C   301      S1 : Sandhoff-Skands Tune using the S1 CR model  (Apr 2006)
60676 C   302      S2 : Sandhoff-Skands Tune using the S2 CR model  (Apr 2006)
60677 C   303     S0A : S0 with "Tune A" UE energy scaling          (Apr 2006)
60678 C   304    NOCR : New UE "best try" without col. rec.         (Apr 2006)
60679 C   305     Old : New UE, original (primitive) col. rec.      (Aug 2004)
60680 C   306 ATLAS-CSC: Arthur Moraes' (new) ATLAS tune w. CTEQ6L1 (?)
60681 C ---- Professor Tunes : 310+ (= 300+ with Professor's tune to LEP)
60682 C   310   S0-Pro : S0 with updated LEP pars from Professor    (Oct 2008)
60683 C   311   S1-Pro : S1 -"-                                     (Oct 2008)
60684 C   312   S2-Pro : S2 -"-                                     (Oct 2008)
60685 C   313  S0A-Pro : S0A -"-                                    (Oct 2008)
60686 C   314 NOCR-Pro : NOCR -"-                                   (Oct 2008)
60687 C   315  Old-Pro : Old -"-                                    (Oct 2008)
60688 C ---- Peter's Perugia Tunes : 320+ ------------------------------------
60689 C   320 Perugia 0 : "Perugia" update of S0-Pro                (Feb 2009)
60690 C   321 Perugia HARD : More ISR, More FSR, Less MPI, Less BR, Less HAD
60691 C   322 Perugia SOFT : Less ISR, Less FSR, More MPI, More BR, More HAD
60692 C   323 Perugia 3 : Alternative to Perugia 0, with different ISR/MPI
60693 C                   balance & different scaling to LHC & RHIC (Feb 2009)
60694 C   324 Perugia NOCR : "Perugia" update of NOCR-Pro           (Feb 2009)
60695 C   325 Perugia * : "Perugia" Tune w. (external) MRSTLO* PDFs (Feb 2009)
60696 C   326 Perugia 6 : "Perugia" Tune w. (external) CTEQ6L1 PDFs (Feb 2009)
60697 C ---- Professor's pT-ordered Perugia Tune : 329 -----------------------
60698 C   329 Pro-pT0   : Professor pT-ordered tune w. S0 CR model  (Feb 2009)
60699 C
60700 C ======= The Uppsala models ===========================================
60701 C   ( NB! must be run with special modified Pythia 6.215 version )
60702 C   ( available from http://www.isv.uu.se/thep/MC/scigal/        )
60703 C   400   GAL 0 : Generalized area-law model. Org pars        (Dec 1998)
60704 C   401   SCI 0 : Soft-Colour-Interaction model. Org pars     (Dec 1998)
60705 C   402   GAL 1 : GAL 0. Tevatron MB retuned (Skands)         (Oct 2006)
60706 C   403   SCI 1 : SCI 0. Tevatron MB retuned (Skands)         (Oct 2006)
60707 C
60708 C More details;
60709 C
60710 C Quick Dictionary:
60711 C      BE : Bose-Einstein
60712 C      BR : Beam Remnants
60713 C      CR : Colour Reconnections
60714 C      HAD: Hadronization
60715 C      ISR/FSR: Initial-State Radiation / Final-State Radiation
60716 C      FSI: Final-State Interactions (=CR+BE)
60717 C      MB : Minimum-bias
60718 C      MI : Multiple Interactions
60719 C      UE : Underlying Event
60720 C
60721 C=======================================================================
60722 C TUNES OF OLD FRAMEWORK (Q2-ORDERED ISR AND FSR, NON-INTERLEAVED UE)
60723 C=======================================================================
60724 C
60725 C   A (100) and AW (101). CTEQ5L parton distributions
60726 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
60727 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
60728 C...Key feature: extensively compared to CDF data (R.D. Field).
60729 C...* Large starting scale for ISR (PARP(67)=4)
60730 C...* AW has even more radiation due to smaller mu_R choice in alpha_s.
60731 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
60732 C
60733 C   BW (102). CTEQ5L parton distributions
60734 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
60735 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
60736 C...Key feature: extensively compared to CDF data (R.D. Field).
60737 C...NB: Can also be run with Pythia 6.2 or 6.312+
60738 C...* Small starting scale for ISR (PARP(67)=1)
60739 C...* BW has more radiation due to smaller mu_R choice in alpha_s.
60740 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
60741 C
60742 C   DW (103) and DWT (104). CTEQ5L parton distributions
60743 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
60744 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
60745 C...Key feature: extensively compared to CDF data (R.D. Field).
60746 C...NB: Can also be run with Pythia 6.2 or 6.312+
60747 C...* Intermediate starting scale for ISR (PARP(67)=2.5)
60748 C...* DWT has a different reference energy, the same as the "S" models
60749 C...  below, leading to more UE activity at the LHC, but less at RHIC.
60750 C...* See: http://www.phys.ufl.edu/~rfield/cdf/
60751 C
60752 C   QW (105). CTEQ61 parton distributions
60753 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
60754 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
60755 C...Key feature: uses CTEQ61 (external pdf library must be linked)
60756 C
60757 C   ATLAS-DC2 (106). CTEQ5L parton distributions
60758 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.2 (e.g. 6.228) ***
60759 C...***      CAN ALSO BE RUN WITH PYTHIA 6.406+
60760 C...Key feature: tune used by the ATLAS collaboration.
60761 C
60762 C   ACR (107). CTEQ5L parton distributions
60763 C...*** NB : SHOULD BE RUN WITH PYTHIA 6.412+    ***
60764 C...Key feature: Tune A modified to use annealing CR.
60765 C...NB: PARP(85)=0D0 and amount of CR is regulated by PARP(78).
60766 C
60767 C   D6 (108) and D6T (109). CTEQ6L parton distributions
60768 C...Key feature: Like DW and DWT but retuned to use CTEQ6L PDFs.
60769 C
60770 C   A-Pro, BW-Pro, etc (111, 112, etc). CTEQ5L parton distributions
60771 C   Old UE model, Q2-ordered showers.
60772 C...Key feature: Rick Field's family of tunes revamped with the
60773 C...Professor Q2-ordered final-state shower and fragmentation tunes
60774 C...presented by Hendrik Hoeth at the Perugia MPI workshop in Oct 2008.
60775 C...Key feature: improved descriptions of LEP data.
60776 C
60777 C   Pro-Q20 (129). CTEQ5L parton distributions
60778 C   Old UE model, Q2-ordered showers.
60779 C...Key feature: Complete retune of old model by Professor, including
60780 C...large amounts of both LEP and Tevatron data.
60781 C...Note that PARP(64) (ISR renormalization scale pre-factor) is quite
60782 C...extreme in this tune, corresponding to using mu_R = pT/3 .
60783 C
60784 C=======================================================================
60785 C INTERMEDIATE/HYBRID TUNES (MIX OF NEW AND OLD SHOWER AND UE MODELS)
60786 C=======================================================================
60787 C
60788 C   IM1 (200). Intermediate model, Q2-ordered showers,
60789 C   CTEQ5L parton distributions
60790 C...Key feature: new UE model w Q2-ordered showers and no interleaving.
60791 C...* "Rap" tune of hep-ph/0402078, modified with new annealing CR.
60792 C...* See: Sjostrand & Skands: JHEP 03(2004)053, hep-ph/0402078.
60793 C
60794 C   APT (201). Old UE model, pT-ordered final-state showers,
60795 C   CTEQ5L parton distributions
60796 C...Key feature: Rick Field's Tune A, but with new final-state showers
60797 C
60798 C   APT-Pro (211). Old UE model, pT-ordered final-state showers,
60799 C   CTEQ5L parton distributions
60800 C...Key feature: APT revamped with the Professor pT-ordered final-state
60801 C...shower and fragmentation tunes presented by Hendrik Hoeth at the
60802 C...Perugia MPI workshop in October 2008.
60803 C
60804 C   Perugia-APT (221). Old UE model, pT-ordered final-state showers,
60805 C   CTEQ5L parton distributions
60806 C...Key feature: APT-Pro with final-state showers off the MPI,
60807 C...lower ISR renormalization scale to improve agreement with the
60808 C...Tevatron Drell-Yan pT measurements and with improved energy scaling
60809 C...to min-bias at 630 GeV.
60810 C
60811 C   Perugia-APT6 (226). Old UE model, pT-ordered final-state showers,
60812 C   CTEQ6L1 parton distributions.
60813 C...Key feature: uses CTEQ6L1 (external pdf library must be linked),
60814 C...with a slightly lower pT0 (2.0 instead of 2.05) due to the smaller
60815 C...UE activity obtained with CTEQ6L1 relative to CTEQ5L.
60816 C
60817 C=======================================================================
60818 C TUNES OF NEW FRAMEWORK (PT-ORDERED ISR AND FSR, INTERLEAVED UE)
60819 C=======================================================================
60820 C
60821 C   S0 (300) and S0A (303). CTEQ5L parton distributions
60822 C...Key feature: large amount of multiple interactions
60823 C...* Somewhat faster than the other colour annealing scenarios.
60824 C...* S0A has a faster energy scaling of the UE IR cutoff, borrowed
60825 C...  from Tune A, leading to less UE at the LHC, but more at RHIC.
60826 C...* Small amount of radiation.
60827 C...* Large amount of low-pT MI
60828 C...* Low degree of proton lumpiness (broad matter dist.)
60829 C...* CR Type S (driven by free triplets), of medium strength.
60830 C...* See: Pythia6402 update notes or later.
60831 C
60832 C   S1 (301). CTEQ5L parton distributions
60833 C...Key feature: large amount of radiation.
60834 C...* Large amount of low-pT perturbative ISR
60835 C...* Large amount of FSR off ISR partons
60836 C...* Small amount of low-pT multiple interactions
60837 C...* Moderate degree of proton lumpiness
60838 C...* Least aggressive CR type (S+S Type I), but with large strength
60839 C...* See: Sandhoff & Skands: FERMILAB-CONF-05-518-T, in hep-ph/0604120.
60840 C
60841 C   S2 (302). CTEQ5L parton distributions
60842 C...Key feature: very lumpy proton + gg string cluster formation allowed
60843 C...* Small amount of radiation
60844 C...* Moderate amount of low-pT MI
60845 C...* High degree of proton lumpiness (more spiky matter distribution)
60846 C...* Most aggressive CR type (S+S Type II), but with small strength
60847 C...* See: Sandhoff & Skands: FERMILAB-CONF-05-518-T, in hep-ph/0604120.
60848 C
60849 C   NOCR (304). CTEQ5L parton distributions
60850 C...Key feature: no colour reconnections (NB: "Best fit" only).
60851 C...* NB: <pT>(Nch) problematic in this tune.
60852 C...* Small amount of radiation
60853 C...* Small amount of low-pT MI
60854 C...* Low degree of proton lumpiness
60855 C...* Large BR composite x enhancement factor
60856 C...* Most clever colour flow without CR ("Lambda ordering")
60857 C
60858 C   ATLAS-CSC (306). CTEQ6L parton distributions
60859 C...Key feature: 11-parameter ATLAS tune of the new framework.
60860 C...* Old (pre-annealing) colour reconnections a la 305.
60861 C...* Uses CTEQ6 Leading Order PDFs (must be interfaced externally)
60862 C
60863 C   S0-Pro, S1-Pro, etc (310, 311, etc). CTEQ5L parton distributions.
60864 C...Key feature: the S0 family of tunes revamped with the Professor
60865 C...pT-ordered final-state shower and fragmentation tunes presented by
60866 C...Hendrik Hoeth at the Perugia MPI workshop in October 2008.
60867 C...Key feature: improved descriptions of LEP data.
60868 C
60869 C   Perugia-0 (320). CTEQ5L parton distributions.
60870 C...Key feature: S0-Pro retuned to more Tevatron data. Better Drell-Yan
60871 C...pT spectrum, better <pT>(Nch) in min-bias, and better scaling to
60872 C...630 GeV than S0-Pro. Also has a slightly smoother mass profile, more
60873 C...beam-remnant breakup (more baryon number transport), and suppression
60874 C...of CR in high-pT string pieces.
60875 C
60876 C   Perugia-HARD (321). CTEQ5L parton distributions.
60877 C...Key feature: More ISR, More FSR, Less MPI, Less BR
60878 C...Uses pT/2 as argument of alpha_s for ISR, and a higher Lambda_FSR.
60879 C...Has higher pT0, less intrinsic kT, less beam remnant breakup (less
60880 C...baryon number transport), and more fragmentation pT.
60881 C...Multiplicity in min-bias is LOW, <pT>(Nch) is HIGH,
60882 C...DY pT spectrum is HARD.
60883 C
60884 C   Perugia-SOFT (322). CTEQ5L parton distributions.
60885 C...Key feature: Less ISR, Less FSR, More MPI, More BR
60886 C...Uses sqrt(2)*pT as argument of alpha_s for ISR, and a lower
60887 C...Lambda_FSR. Has lower pT0, more beam remnant breakup (more baryon
60888 C...number transport), and less fragmentation pT.
60889 C...Multiplicity in min-bias is HIGH, <pT>(Nch) is LOW,
60890 C...DY pT spectrum is SOFT
60891 C
60892 C   Perugia-3 (323). CTEQ5L parton distributions.
60893 C...Key feature: variant of Perugia-0 with more extreme energy scaling
60894 C...properties while still agreeing with Tevatron data from 630 to 1960.
60895 C...More ISR and less MPI than Perugia-0 at the Tevatron and above and
60896 C...allows FSR off the active end of dipoles stretched to the remnant.
60897 C
60898 C   Perugia-NOCR (324). CTEQ5L parton distributions.
60899 C...Key feature: Retune of NOCR-Pro with better scaling properties to
60900 C...lower energies and somewhat better agreement with Tevatron data
60901 C...at 1800/1960.
60902 C
60903 C   Perugia-* (325). MRST LO* parton distributions for generators
60904 C...Key feature: first attempt at using the LO* distributions
60905 C...(external pdf library must be linked).
60906 C
60907 C   Perugia-6 (326). CTEQ6L1 parton distributions
60908 C...Key feature: uses CTEQ6L1 (external pdf library must be linked).
60909 C
60910 C   Pro-pT0 (329). CTEQ5L parton distributions
60911 C...Key feature: Complete retune of new model by Professor, including
60912 C...large amounts of both LEP and Tevatron data. Similar to S0A-Pro.
60913 C
60914 C=======================================================================
60915 C OTHER TUNES
60916 C=======================================================================
60917 C
60918 C...The GAL and SCI models (400+) are special and *SHOULD NOT* be run
60919 C...with an unmodified Pythia distribution.
60920 C...See http://www.isv.uu.se/thep/MC/scigal/ for more information.
60921 C
60922 C ::: + Future improvements?
60923 C        Include also QCD K-factor a la M. Heinz / ATLAS TDR ? RDF's QK?
60924 C       (problem: K-factor affects everything so only works as
60925 C        intended for min-bias, not for UE ... probably need a
60926 C        better long-term solution to handle UE as well. Anyway,
60927 C        Mark uses MSTP(33) and PARP(31)-PARP(33).)
60928  
60929 C...Global statements
60930       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
60931       INTEGER PYK,PYCHGE,PYCOMP
60932  
60933 C...Commonblocks.
60934       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
60935       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
60936  
60937 C...SCI and GAL Commonblocks
60938       COMMON /SCIPAR/MSWI(2),PARSCI(2)
60939  
60940 C...SAVE statements
60941       SAVE /PYDAT1/,/PYPARS/
60942       SAVE /SCIPAR/
60943 
60944 C...Internal parameters
60945       PARAMETER(MXTUNS=500)
60946       CHARACTER*8 CHVERS, CHDOC
60947       PARAMETER (CHVERS='1.015   ',CHDOC='Jan 2009')
60948       CHARACTER*16 CHNAMS(0:MXTUNS), CHNAME
60949       CHARACTER*42 CHMSTJ(50), CHMSTP(51:100), CHPARP(61:100),
60950      &    CHPARJ(1:100), CH40
60951       CHARACTER*60 CH60
60952       CHARACTER*70 CH70
60953       DATA (CHNAMS(I),I=0,1)/'Default',' '/
60954       DATA (CHNAMS(I),I=100,119)/
60955      &    'Tune A','Tune AW','Tune BW','Tune DW','Tune DWT','Tune QW',
60956      &    'ATLAS DC2','Tune ACR','Tune D6','Tune D6T',
60957      1    'Tune A-Pro','Tune AW-Pro','Tune BW-Pro','Tune DW-Pro',
60958      1    'Tune DWT-Pro','Tune QW-Pro','ATLAS DC2-Pro','Tune ACR-Pro',
60959      1    'Tune D6-Pro','Tune D6T-Pro'/
60960       DATA (CHNAMS(I),I=120,129)/
60961      &     9*' ','Pro-Q20'/
60962       DATA (CHNAMS(I),I=300,309)/
60963      &    'Tune S0','Tune S1','Tune S2','Tune S0A','NOCR','Old',
60964      5    'ATLAS-CSC Tune','Yale Tune','Yale-K Tune',' '/
60965       DATA (CHNAMS(I),I=310,315)/
60966      &    'Tune S0-Pro','Tune S1-Pro','Tune S2-Pro','Tune S0A-Pro',
60967      &    'NOCR-Pro','Old-Pro'/
60968       DATA (CHNAMS(I),I=320,329)/
60969      &    'Perugia 0','Perugia HARD','Perugia SOFT',
60970      &    'Perugia 3','Perugia NOCR','Perugia LO*',
60971      &    'Perugia 6',2*' ','Pro-pT0'/
60972       DATA (CHNAMS(I),I=200,229)/
60973      &    'IM Tune 1','Tune APT',8*' ',
60974      &    ' ','Tune APT-Pro',8*' ',
60975      &    ' ','Perugia APT',4*' ','Perugia APT6',3*' '/
60976       DATA (CHNAMS(I),I=400,409)/
60977      &    'GAL Tune 0','SCI Tune 0','GAL Tune 1','SCI Tune 1',6*' '/
60978       DATA (CHMSTJ(I),I=11,20)/
60979      &    'HAD choice of fragmentation function(s)',4*' ',
60980      &    'HAD treatment of small-mass systems',4*' '/
60981       DATA (CHMSTJ(I),I=41,50)/
60982      &    'FSR type (Q2 or pT) for old framework',9*' '/
60983       DATA (CHMSTP(I),I=51,100)/
60984      5    'PDF set','PDF set internal (=1) or pdflib (=2)',8*' ',
60985      6    'ISR master switch',2*' ','ISR alphaS type',2*' ',
60986      6    'ISR coherence option for 1st emission',
60987      6    'ISR phase space choice & ME corrections',' ',
60988      7    'ISR IR regularization scheme',' ',
60989      7    'ISR scheme for FSR off ISR',8*' ',
60990      8    'UE model',
60991      8    'UE hadron transverse mass distribution',5*' ',
60992      8    'BR composite scheme','BR colour scheme',
60993      9    'BR primordial kT compensation',
60994      9    'BR primordial kT distribution',
60995      9    'BR energy partitioning scheme',2*' ',
60996      9    'FSI colour (re-)connection model',5*' '/
60997       DATA (CHPARP(I),I=61,100)/
60998      6    ' ','ISR IR cutoff',' ','ISR renormalization scale prefactor',
60999      6    2*' ','ISR Q2max factor',3*' ',
61000      7    'FSR Q2max factor for non-s-channel procs',5*' ',
61001      7    'FSI colour reco high-pT dampening strength',
61002      7    'FSI colour reconnection strength',
61003      7    'BR composite x enhancement','BR breakup suppression',
61004      8    2*'UE IR cutoff at reference ecm',
61005      8    2*'UE mass distribution parameter',
61006      8    'UE gg colour correlated fraction','UE total gg fraction',
61007      8    2*' ',
61008      8    'UE IR cutoff reference ecm','UE IR cutoff ecm scaling power',
61009      9    'BR primordial kT width <|kT|>',' ',
61010      9    'BR primordial kT UV cutoff',7*' '/
61011       DATA (CHPARJ(I),I=1,30)/
61012      &    'HAD diquark suppression','HAD strangeness suppression',
61013      &    'HAD strange diquark suppression',
61014      &    'HAD vector diquark suppression',6*' ',
61015      1    'HAD P(vector meson), u and d only',
61016      1    'HAD P(vector meson), contains s',
61017      1    'HAD P(vector meson), heavy quarks',7*' ',
61018      2    'HAD fragmentation pT',' ',' ',' ',
61019      2    'HAD eta0 suppression',"HAD eta0' suppression",4*' '/
61020       DATA (CHPARJ(I),I=41,90)/
61021      4    'HAD string parameter a','HAD string parameter b',3*' ',
61022      4    'HAD Lund(=0)-Bowler(=1) rQ (rc)',
61023      4    'HAD Lund(=0)-Bowler(=1) rb',3*' ',
61024      5    3*' ','HAD charm parameter','HAD bottom parameter',5*' ',
61025      6    10*' ',10*' ',
61026      8    'FSR Lambda_QCD scale','FSR IR cutoff',8*' '/
61027  
61028 C...1) Shorthand notation
61029       M13=MSTU(13)
61030       M11=MSTU(11)
61031       IF (ITUNE.LE.MXTUNS.AND.ITUNE.GE.0) THEN
61032         CHNAME=CHNAMS(ITUNE)
61033         IF (ITUNE.EQ.0) GOTO 9999
61034       ELSE
61035         CALL PYERRM(9,'(PYTUNE:) Tune number > max. Using defaults.')
61036         GOTO 9999
61037       ENDIF
61038  
61039 C...2) Hello World
61040       IF (M13.GE.1) WRITE(M11,5000) CHVERS, CHDOC
61041  
61042 C...3) Tune parameters
61043  
61044 C=======================================================================
61045 C...S0, S1, S2, S0A, NOCR, Rap,
61046 C...S0-Pro, S1-Pro, S2-Pro, S0A-Pro, NOCR-Pro, Rap-Pro
61047 C...Perugia 0, HARD, SOFT, Perugia 3, Perugia LO*, Perugia 6
61048 C...Pro-pT0
61049       IF ((ITUNE.GE.300.AND.ITUNE.LE.305)
61050      &    .OR.(ITUNE.GE.310.AND.ITUNE.LE.315)
61051      &    .OR.(ITUNE.GE.320.AND.ITUNE.LE.326).OR.ITUNE.EQ.329) THEN
61052         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
61053         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
61054           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
61055      &        ' with tune.')
61056         ELSEIF(ITUNE.GE.320.AND.ITUNE.LE.326.AND.ITUNE.NE.324.AND.
61057      &        (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.419)))
61058      &        THEN
61059           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
61060      &        ' with tune.')
61061         ENDIF
61062  
61063 C...Use Professor's LEP pars if ITUNE >= 310
61064 C...(i.e., for S0-Pro, S1-Pro etc, and for Perugia tunes)
61065         IF (ITUNE.LT.310) THEN
61066 C...# Old default flavour parameters
61067  
61068         ELSEIF (ITUNE.GE.310) THEN
61069 C...# Tuned flavour parameters:
61070           PARJ(1)  = 0.073
61071           PARJ(2)  = 0.2
61072           PARJ(3)  = 0.94
61073           PARJ(4)  = 0.032
61074           PARJ(11) = 0.31
61075           PARJ(12) = 0.4
61076           PARJ(13) = 0.54
61077           PARJ(25) = 0.63
61078           PARJ(26) = 0.12
61079 C...# Always use pT-ordered shower:
61080           MSTJ(41) = 12
61081 C...# Switch on Bowler:
61082           MSTJ(11) = 5
61083 C...# Fragmentation
61084           PARJ(21) = 0.313
61085           PARJ(41) = 0.49
61086           PARJ(42) = 1.2
61087           PARJ(47) = 1.0
61088           PARJ(81) = 0.257
61089           PARJ(82) = 0.8
61090         ENDIF
61091  
61092 C...Remove middle digit now for Professor variants, since identical pars
61093         ITUNEB=ITUNE
61094         IF (ITUNE.GE.310.AND.ITUNE.LE.319) THEN
61095           ITUNEB=(ITUNE/100)*100+MOD(ITUNE,10)
61096         ENDIF
61097  
61098 C...PDFs: all use CTEQ5L as starting point
61099         MSTP(52)=1
61100         MSTP(51)=7
61101         IF (ITUNE.EQ.325) THEN
61102 C...MRST LO* for 325
61103           MSTP(52)=2
61104           MSTP(51)=20650
61105         ELSEIF (ITUNE.EQ.326) THEN
61106 C...CTEQ6L1 for 326
61107           MSTP(52)=2
61108           MSTP(51)=10042
61109         ENDIF
61110  
61111 C...ISR: use Lambda_MSbar with default scale for S0(A)
61112         MSTP(64)=2
61113         PARP(64)=1D0
61114         IF (ITUNE.EQ.320.OR.ITUNE.EQ.323.OR.ITUNE.EQ.324.OR.
61115      &      ITUNE.EQ.326) THEN
61116 C...Use Lambda_MC with muR^2=pT^2 for most central Perugia tunes
61117           MSTP(64)=3
61118           PARP(64)=1D0
61119         ELSEIF (ITUNE.EQ.321) THEN
61120 C...Use Lambda_MC with muR^2=(1/2pT)^2 for Perugia HARD
61121           MSTP(64)=3
61122           PARP(64)=0.25D0
61123         ELSEIF (ITUNE.EQ.322) THEN
61124 C...Use Lambda_MSbar with muR^2=2pT^2 for Perugia SOFT
61125           MSTP(64)=2
61126           PARP(64)=2D0
61127         ELSEIF (ITUNE.EQ.325) THEN
61128 C...Use Lambda_MC with muR^2=2pT^2 for Perugia LO*
61129           MSTP(64)=3
61130           PARP(64)=2D0
61131         ELSEIF (ITUNE.EQ.329) THEN
61132 C...Use Lambda_MSbar with P64=1.3 for Pro-pT0
61133           MSTP(64)=2
61134           PARP(64)=1.3D0
61135         ENDIF
61136  
61137 C...ISR : power-suppressed power showers above s_color (since 6.4.19)
61138         MSTP(67)=2
61139         PARP(67)=4D0
61140 C...Perugia tunes have stronger suppression, except HARD
61141         IF (ITUNE.GE.320.AND.ITUNE.LE.326) THEN
61142           PARP(67)=1D0
61143           IF (ITUNE.EQ.321) PARP(67)=4D0
61144           IF (ITUNE.EQ.322) PARP(67)=0.5D0
61145         ENDIF
61146  
61147 C...ISR IR cutoff type and FSR off ISR setting:
61148 C...Smooth ISR, low FSR-off-ISR
61149         MSTP(70)=2
61150         MSTP(72)=0
61151         IF (ITUNEB.EQ.301) THEN
61152 C...S1, S1-Pro: sharp ISR, high FSR
61153           MSTP(70)=0
61154           MSTP(72)=1
61155         ELSEIF (ITUNE.EQ.320.OR.ITUNE.EQ.324.OR.ITUNE.EQ.326
61156      &        .OR.ITUNE.EQ.325) THEN
61157 C...Perugia default is smooth ISR, high FSR-off-ISR
61158           MSTP(70)=2
61159           MSTP(72)=1
61160         ELSEIF (ITUNE.EQ.321) THEN
61161 C...Perugia HARD: sharp ISR, high FSR-off-ISR (but no dip-to-BR rad)
61162           MSTP(70)=0
61163           PARP(62)=1.25D0
61164           MSTP(72)=1
61165         ELSEIF (ITUNE.EQ.322) THEN
61166 C...Perugia SOFT: scaling sharp ISR, low FSR-off-ISR
61167           MSTP(70)=1
61168           PARP(81)=1.5D0
61169           MSTP(72)=0
61170         ELSEIF (ITUNE.EQ.323) THEN
61171 C...Perugia 3: sharp ISR, high FSR-off-ISR (with dipole-to-BR radiating)
61172           MSTP(70)=0
61173           PARP(62)=1.25D0
61174           MSTP(72)=2
61175         ENDIF
61176  
61177 C...FSR activity: Perugia tunes use a lower PARP(71) as indicated 
61178 C...by Professor tunes (with HARD and SOFT variations)
61179         PARP(71)=4D0
61180         IF (ITUNE.GE.320.AND.ITUNE.LE.326) THEN 
61181           PARP(71)=2D0
61182           IF (ITUNE.EQ.321) PARP(71)=4D0
61183           IF (ITUNE.EQ.322) PARP(71)=1D0
61184         ENDIF
61185 
61186 C...FSR: Lambda_FSR scale (only if not using professor)
61187         IF (ITUNE.LT.310) PARJ(81)=0.23D0
61188         IF (ITUNE.EQ.321) PARJ(81)=0.30D0
61189         IF (ITUNE.EQ.322) PARJ(81)=0.20D0
61190  
61191 C...UE on, new model
61192         MSTP(81)=21
61193  
61194 C...UE: hadron-hadron overlap profile (expOfPow for all)
61195         MSTP(82)=5
61196 C...UE: Overlap smoothness (1.0 = exponential; 2.0 = gaussian)
61197         PARP(83)=1.6D0
61198         IF (ITUNEB.EQ.301) PARP(83)=1.4D0
61199         IF (ITUNEB.EQ.302) PARP(83)=1.2D0
61200 C...NOCR variants have very smooth distributions
61201         IF (ITUNEB.EQ.304) PARP(83)=1.8D0
61202         IF (ITUNEB.EQ.305) PARP(83)=2.0D0
61203         IF (ITUNE.GE.320.AND.ITUNE.LE.326) THEN
61204 C...Perugia variants have slightly smoother profiles by default
61205 C...(to compensate for more tail by added radiation)
61206 C...Perugia-SOFT has more peaked distribution, NOCR less peaked
61207           PARP(83)=1.7D0
61208           IF (ITUNE.EQ.322) PARP(83)=1.5D0
61209           IF (ITUNE.EQ.324) PARP(83)=1.8D0
61210         ENDIF
61211 C...Professor-pT0 also has very smooth distribution
61212         IF (ITUNE.EQ.329) PARP(83)=1.8
61213  
61214 C...UE: pT0 = 1.85 for S0, S0A, 2.0 for Perugia version
61215         PARP(82)=1.85D0
61216         IF (ITUNEB.EQ.301) PARP(82)=2.1D0
61217         IF (ITUNEB.EQ.302) PARP(82)=1.9D0
61218         IF (ITUNEB.EQ.304) PARP(82)=2.05D0
61219         IF (ITUNEB.EQ.305) PARP(82)=1.9D0
61220         IF (ITUNE.GE.320.AND.ITUNE.LE.326) THEN
61221 C...Perugia tunes (def is 2.0 GeV, HARD has higher, SOFT has lower,
61222 C...Perugia-3 has more ISR, so higher pT0, NOCR can be slightly lower,
61223 C...CTEQ6L1 slightly lower, due to less activity, and LO* needs to be
61224 C...slightly higher, due to increased activity.
61225           PARP(82)=2.0D0
61226           IF (ITUNE.EQ.321) PARP(82)=2.3D0
61227           IF (ITUNE.EQ.322) PARP(82)=1.9D0
61228           IF (ITUNE.EQ.323) PARP(82)=2.2D0
61229           IF (ITUNE.EQ.324) PARP(82)=1.95D0
61230           IF (ITUNE.EQ.325) PARP(82)=2.2D0
61231           IF (ITUNE.EQ.326) PARP(82)=1.95D0
61232         ENDIF
61233 C...Professor-pT0 maintains low pT0 vaue
61234         IF (ITUNE.EQ.329) PARP(82)=1.85D0
61235  
61236 C...UE: IR cutoff reference energy and default energy scaling pace
61237         PARP(89)=1800D0
61238         PARP(90)=0.16D0
61239 C...S0A, S0A-Pro have tune A energy scaling
61240         IF (ITUNEB.EQ.303) PARP(90)=0.25D0
61241         IF (ITUNE.GE.320.AND.ITUNE.LE.326) THEN
61242 C...Perugia tunes explicitly include MB at 630 to fix energy scaling
61243           PARP(90)=0.26
61244           IF (ITUNE.EQ.321) PARP(90)=0.30D0
61245           IF (ITUNE.EQ.322) PARP(90)=0.24D0
61246           IF (ITUNE.EQ.323) PARP(90)=0.32D0
61247           IF (ITUNE.EQ.324) PARP(90)=0.24D0
61248 C...LO* and CTEQ6L1 tunes have slower energy scaling
61249           IF (ITUNE.EQ.325) PARP(90)=0.23D0
61250           IF (ITUNE.EQ.326) PARP(90)=0.22D0
61251         ENDIF
61252 C...Professor-pT0 has intermediate scaling
61253         IF (ITUNE.EQ.329) PARP(90)=0.22D0
61254  
61255 C...BR: MPI initiator color connections rap-ordered by default
61256 C...NOCR variants are Lambda-ordered, Perugia SOFT is random-ordered
61257         MSTP(89)=1
61258         IF (ITUNEB.EQ.304.OR.ITUNE.EQ.324) MSTP(89)=2
61259         IF (ITUNE.EQ.322) MSTP(89)=0
61260  
61261 C...BR: BR-g-BR suppression factor (higher values -> more beam blowup)
61262         PARP(80)=0.01D0
61263         IF (ITUNE.GE.320.AND.ITUNE.LE.326) THEN
61264 C...Perugia tunes have more beam blowup by default
61265           PARP(80)=0.05D0
61266           IF (ITUNE.EQ.321) PARP(80)=0.01
61267           IF (ITUNE.EQ.323) PARP(80)=0.03
61268           IF (ITUNE.EQ.324) PARP(80)=0.01
61269         ENDIF
61270  
61271 C...BR: diquarks (def = valence qq and moderate diquark x enhancement)
61272         MSTP(88)=0
61273         PARP(79)=2D0
61274         IF (ITUNEB.EQ.304) PARP(79)=3D0
61275         IF (ITUNE.EQ.329) PARP(79)=1.18
61276  
61277 C...BR: Primordial kT, parametrization and cutoff, default is 2 GeV
61278         MSTP(91)=1
61279         PARP(91)=2D0
61280         PARP(93)=10D0
61281 C...Perugia-HARD only uses 1.0 GeV
61282         IF (ITUNE.EQ.321) PARP(91)=1.0D0
61283 C...Perugia-3 only uses 1.5 GeV
61284         IF (ITUNE.EQ.323) PARP(91)=1.5D0
61285 C...Professor-pT0 uses 7-GeV cutoff
61286         IF (ITUNE.EQ.329) PARP(93)=7.0
61287  
61288 C...FSI: Colour Reconnections - Seattle algorithm is default (S0)
61289         MSTP(95)=6
61290 C...S1, S1-Pro: use S1
61291         IF (ITUNEB.EQ.301) MSTP(95)=2
61292 C...S2, S2-Pro: use S2
61293         IF (ITUNEB.EQ.302) MSTP(95)=4
61294 C...NOCR, NOCR-Pro, Perugia-NOCR: use no CR
61295         IF (ITUNE.EQ.304.OR.ITUNE.EQ.314.OR.ITUNE.EQ.324) MSTP(95)=0
61296 C..."Old" and "Old"-Pro: use old CR
61297         IF (ITUNEB.EQ.305) MSTP(95)=1
61298  
61299 C...FSI: CR strength and high-pT dampening, default is S0
61300         IF (ITUNE.LT.320.OR.ITUNE.EQ.329) THEN
61301           PARP(78)=0.2D0
61302           PARP(77)=0D0
61303           IF (ITUNEB.EQ.301) PARP(78)=0.35D0
61304           IF (ITUNEB.EQ.302) PARP(78)=0.15D0
61305           IF (ITUNEB.EQ.304) PARP(78)=0.0D0
61306           IF (ITUNEB.EQ.305) PARP(78)=1.0D0
61307           IF (ITUNE.EQ.329) PARP(78)=0.17D0
61308         ELSE
61309 C...Perugia tunes also use high-pT dampening : default is Perugia 0,*,6
61310           PARP(78)=0.33
61311           PARP(77)=0.9D0
61312           IF (ITUNE.EQ.321) THEN
61313 C...HARD has HIGH amount of CR
61314             PARP(78)=0.37D0
61315             PARP(77)=0.4D0
61316           ELSEIF (ITUNE.EQ.322) THEN
61317 C...SOFT has LOW amount of CR
61318             PARP(78)=0.15D0
61319             PARP(77)=0.5D0
61320           ELSEIF (ITUNE.EQ.323) THEN
61321 C...Scaling variant appears to need slightly more than default
61322             PARP(78)=0.35D0
61323             PARP(77)=0.6D0
61324           ELSEIF (ITUNE.EQ.324) THEN
61325 C...NOCR has no CR
61326             PARP(78)=0D0
61327             PARP(77)=0D0
61328           ENDIF
61329         ENDIF
61330  
61331 C...HAD: fragmentation pT (only if not using professor) - HARD and SOFT
61332         IF (ITUNE.EQ.321) PARJ(21)=0.34D0
61333         IF (ITUNE.EQ.322) PARJ(21)=0.28D0
61334  
61335 C...Switch off trial joinings
61336         MSTP(96)=0
61337  
61338 C...S0 (300), S0A (303)
61339         IF (ITUNEB.EQ.300.OR.ITUNEB.EQ.303) THEN
61340           IF (M13.GE.1) THEN
61341             CH60='see P. Skands & D. Wicke, hep-ph/0703081'
61342             WRITE(M11,5030) CH60
61343             CH60='M. Sandhoff & P. Skands, in hep-ph/0604120'
61344             WRITE(M11,5030) CH60
61345             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
61346             WRITE(M11,5030) CH60
61347             IF (ITUNE.GE.310) THEN
61348               CH60='LEP parameters tuned by Professor'
61349               WRITE(M11,5030) CH60
61350             ENDIF
61351           ENDIF
61352  
61353 C...S1 (301)
61354         ELSEIF(ITUNEB.EQ.301) THEN
61355           IF (M13.GE.1) THEN
61356             CH60='see M. Sandhoff & P. Skands, in hep-ph/0604120'
61357             WRITE(M11,5030) CH60
61358             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
61359             WRITE(M11,5030) CH60
61360             IF (ITUNE.GE.310) THEN
61361               CH60='LEP parameters tuned with Professor'
61362               WRITE(M11,5030) CH60
61363             ENDIF
61364           ENDIF
61365  
61366 C...S2 (302)
61367         ELSEIF(ITUNEB.EQ.302) THEN
61368           IF (M13.GE.1) THEN
61369             CH60='see M. Sandhoff & P. Skands, in hep-ph/0604120'
61370             WRITE(M11,5030) CH60
61371             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
61372             WRITE(M11,5030) CH60
61373             IF (ITUNE.GE.310) THEN
61374               CH60='LEP parameters tuned by Professor'
61375               WRITE(M11,5030) CH60
61376             ENDIF
61377           ENDIF
61378  
61379 C...NOCR (304)
61380         ELSEIF(ITUNEB.EQ.304) THEN
61381           IF (M13.GE.1) THEN
61382             CH60='"best try" without colour reconnections'
61383             WRITE(M11,5030) CH60
61384             CH60='see P. Skands & D. Wicke, hep-ph/0703081'
61385             WRITE(M11,5030) CH60
61386             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
61387             WRITE(M11,5030) CH60
61388             IF (ITUNE.GE.310) THEN
61389               CH60='LEP parameters tuned by Professor'
61390               WRITE(M11,5030) CH60
61391             ENDIF
61392           ENDIF
61393  
61394 C..."Lo FSR" retune (305)
61395         ELSEIF(ITUNEB.EQ.305) THEN
61396           IF (M13.GE.1) THEN
61397             CH60='"Lo FSR retune" with primitive colour reconnections'
61398             WRITE(M11,5030) CH60
61399             CH60='see T. Sjostrand & P. Skands, hep-ph/0408302'
61400             WRITE(M11,5030) CH60
61401             IF (ITUNE.GE.310) THEN
61402               CH60='LEP parameters tuned by Professor'
61403               WRITE(M11,5030) CH60
61404             ENDIF
61405           ENDIF
61406  
61407 C...Perugia Tunes (320-326)
61408         ELSEIF(ITUNE.GE.320.AND.ITUNE.LE.326) THEN
61409           IF (M13.GE.1) THEN
61410             CH60='P. Skands, Perugia MPI workshop October 2008'
61411             WRITE(M11,5030) CH60
61412             CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
61413             WRITE(M11,5030) CH60
61414             CH60='CR by M. Sandhoff & P. Skands, in hep-ph/0604120'
61415             WRITE(M11,5030) CH60
61416             CH60='LEP parameters tuned by Professor'
61417             WRITE(M11,5030) CH60
61418             IF (ITUNE.EQ.325) THEN
61419               CH70='NB! This tune requires MRST LO* pdfs to be '//
61420      &            'externally linked'
61421               WRITE(M11,5035) CH70
61422             ELSEIF (ITUNE.EQ.326) THEN
61423               CH70='NB! This tune requires CTEQ6L1 pdfs to be '//
61424      &            'externally linked'
61425               WRITE(M11,5035) CH70
61426             ELSEIF (ITUNE.EQ.321) THEN
61427               CH60='NB! This tune has MORE ISR & FSR / LESS UE & BR'
61428               WRITE(M11,5030) CH60
61429             ELSEIF (ITUNE.EQ.322) THEN
61430               CH60='NB! This tune has LESS ISR & FSR / MORE UE & BR'
61431               WRITE(M11,5030) CH60
61432             ENDIF
61433           ENDIF
61434  
61435 C...Professor-pT0 (329)
61436         ELSEIF(ITUNE.EQ.329) THEN
61437           IF (M13.GE.1) THEN
61438             CH60='See T. Sjostrand & P. Skands, hep-ph/0408302'
61439             WRITE(M11,5030) CH60
61440             CH60='and M. Sandhoff & P. Skands, in hep-ph/0604120'
61441             WRITE(M11,5030) CH60
61442             CH60='LEP/Tevatron parameters tuned by Professor'
61443             WRITE(M11,5030) CH60
61444           ENDIF
61445  
61446         ENDIF
61447  
61448 C...Output
61449         IF (M13.GE.1) THEN
61450           WRITE(M11,5030) ' '
61451           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
61452           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
61453           IF (MSTP(70).EQ.0) THEN
61454             WRITE(M11,5050) 62, PARP(62), CHPARP(62)
61455           ELSEIF (MSTP(70).EQ.1) THEN
61456             WRITE(M11,5050) 81, PARP(81), CHPARP(62)
61457             CH60='(Note: PARP(81) replaces PARP(62).)'
61458             WRITE(M11,5030) CH60
61459           ENDIF
61460           WRITE(M11,5040) 64, MSTP(64), CHMSTP(64)
61461           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
61462           WRITE(M11,5040) 67, MSTP(67), CHMSTP(67)
61463           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
61464           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
61465           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
61466           WRITE(M11,5030) CH60
61467           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
61468           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
61469           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
61470           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
61471           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
61472           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
61473           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
61474           IF (MSTP(70).EQ.2) THEN
61475             CH60='(Note: PARP(82) replaces PARP(62).)'
61476             WRITE(M11,5030) CH60
61477           ENDIF
61478           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
61479           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
61480           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
61481           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
61482           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
61483           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
61484           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
61485           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
61486           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
61487           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
61488           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
61489           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
61490           IF (MSTP(95).GE.1) THEN
61491             WRITE(M11,5050) 78, PARP(78), CHPARP(78)
61492             IF (MSTP(95).GE.2) WRITE(M11,5050) 77, PARP(77), CHPARP(77)
61493           ENDIF
61494           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
61495           WRITE(M11,5060) 21, PARJ(21), CHPARJ(21)
61496           WRITE(M11,5060) 41, PARJ(41), CHPARJ(41)
61497           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
61498           IF (MSTJ(11).LE.3) THEN
61499              WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
61500              WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
61501           ELSE
61502              WRITE(M11,5060) 46, PARJ(46), CHPARJ(46)
61503           ENDIF
61504           IF (MSTJ(11).EQ.5) WRITE(M11,5060) 47, PARJ(47), CHPARJ(47)
61505         ENDIF
61506  
61507 C=======================================================================
61508 C...ATLAS-CSC 11-parameter tune (By A. Moraes)
61509       ELSEIF (ITUNE.EQ.306) THEN
61510         IF (M13.GE.1) WRITE(M11,5010) ITUNE, CHNAME
61511         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
61512           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
61513      &        ' with tune.')
61514         ENDIF
61515  
61516 C...PDFs
61517         MSTP(52)=2
61518         MSTP(54)=2
61519         MSTP(51)=10042
61520         MSTP(53)=10042
61521 C...ISR
61522 C        PARP(64)=1D0
61523 C...UE on, new model.
61524         MSTP(81)=21
61525 C...Energy scaling
61526         PARP(89)=1800D0
61527         PARP(90)=0.22D0
61528 C...Switch off trial joinings
61529         MSTP(96)=0
61530 C...Primordial kT cutoff
61531  
61532         IF (M13.GE.1) THEN
61533           CH60='see presentations by A. Moraes (ATLAS),'
61534           WRITE(M11,5030) CH60
61535           CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
61536           WRITE(M11,5030) CH60
61537           WRITE(M11,5030) ' '
61538           CH70='NB! This tune requires CTEQ6.1 pdfs to be '//
61539      &        'externally linked'
61540           WRITE(M11,5035) CH70
61541         ENDIF
61542 C...Smooth ISR, low FSR
61543         MSTP(70)=2
61544         MSTP(72)=0
61545 C...pT0
61546         PARP(82)=1.9D0
61547 C...Transverse density profile.
61548         MSTP(82)=4
61549         PARP(83)=0.3D0
61550         PARP(84)=0.5D0
61551 C...ISR & FSR in interactions after the first (default)
61552         MSTP(84)=1
61553         MSTP(85)=1
61554 C...No double-counting (default)
61555         MSTP(86)=2
61556 C...Companion quark parent gluon (1-x) power
61557         MSTP(87)=4
61558 C...Primordial kT compensation along chaings (default = 0 : uniform)
61559         MSTP(90)=1
61560 C...Colour Reconnections
61561         MSTP(95)=1
61562         PARP(78)=0.2D0
61563 C...Lambda_FSR scale.
61564         PARJ(81)=0.23D0
61565 C...Rap order, Valence qq, qq x enhc, BR-g-BR supp
61566         MSTP(89)=1
61567         MSTP(88)=0
61568 C   PARP(79)=2D0
61569         PARP(80)=0.01D0
61570 C...Peterson charm frag, and c and b hadr parameters
61571         MSTJ(11)=3
61572         PARJ(54)=-0.07
61573         PARJ(55)=-0.006
61574 C...  Output
61575         IF (M13.GE.1) THEN
61576           WRITE(M11,5030) ' '
61577           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
61578           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
61579           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
61580           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
61581           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
61582           WRITE(M11,5030) CH60
61583           WRITE(M11,5040) 70, MSTP(70), CHMSTP(70)
61584           WRITE(M11,5040) 72, MSTP(72), CHMSTP(72)
61585           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
61586           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
61587           CH60='(Note: PARJ(81) changed from 0.14! See update notes)'
61588           WRITE(M11,5030) CH60
61589           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
61590           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
61591           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
61592           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
61593           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
61594           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
61595           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
61596           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
61597           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
61598           WRITE(M11,5040) 90, MSTP(90), CHMSTP(90)
61599           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
61600           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
61601           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
61602           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
61603           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
61604           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
61605           WRITE(M11,5060) 21, PARJ(21), CHPARJ(21)
61606           WRITE(M11,5060) 41, PARJ(41), CHPARJ(41)
61607           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
61608           IF (MSTJ(11).LE.3) THEN
61609              WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
61610              WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
61611           ELSE
61612              WRITE(M11,5060) 46, PARJ(46), CHPARJ(46)
61613           ENDIF
61614           IF (MSTJ(11).EQ.5) WRITE(M11,5060) 47, PARJ(47), CHPARJ(47)
61615         ENDIF
61616  
61617 C=======================================================================
61618 C...Tunes A, AW, BW, DW, DWT, QW, D6, D6T (by R.D. Field, CDF)
61619 C...(100-105,108-109), ATLAS-DC2 Tune (by A. Moraes, ATLAS) (106)
61620 C...A-Pro, DW-Pro, etc (100-119), and Pro-Q20 (129)
61621       ELSEIF ((ITUNE.GE.100.AND.ITUNE.LE.106).OR.ITUNE.EQ.108.OR.
61622      &      ITUNE.EQ.109.OR.(ITUNE.GE.110.AND.ITUNE.LE.116).OR.
61623      &      ITUNE.EQ.118.OR.ITUNE.EQ.119.OR.ITUNE.EQ.129) THEN
61624         IF (M13.GE.1.AND.ITUNE.NE.106.AND.ITUNE.NE.129) THEN
61625           WRITE(M11,5010) ITUNE, CHNAME
61626           CH60='see R.D. Field, in hep-ph/0610012'
61627           WRITE(M11,5030) CH60
61628           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
61629           WRITE(M11,5030) CH60
61630           IF (ITUNE.GE.110.AND.ITUNE.LE.119) THEN
61631             CH60='LEP parameters tuned by Professor'
61632             WRITE(M11,5030) CH60
61633           ENDIF
61634         ELSEIF (M13.GE.1.AND.ITUNE.EQ.129) THEN
61635           WRITE(M11,5010) ITUNE, CHNAME
61636           CH60='See T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
61637           WRITE(M11,5030) CH60
61638           CH60='LEP/Tevatron parameters tuned by Professor'
61639           WRITE(M11,5030) CH60
61640         ENDIF
61641  
61642 C...Make sure we start from old default fragmentation parameters
61643         PARJ(81) = 0.29
61644         PARJ(82) = 1.0
61645  
61646 C...Use Professor's LEP pars if ITUNE >= 110
61647 C...(i.e., for A-Pro, DW-Pro etc)
61648         IF (ITUNE.GE.110) THEN
61649 C...# Tuned flavour parameters:
61650           PARJ(1)  = 0.073
61651           PARJ(2)  = 0.2
61652           PARJ(3)  = 0.94
61653           PARJ(4)  = 0.032
61654           PARJ(11) = 0.31
61655           PARJ(12) = 0.4
61656           PARJ(13) = 0.54
61657           PARJ(25) = 0.63
61658           PARJ(26) = 0.12
61659 C...# Switch on Bowler:
61660           MSTJ(11) = 5
61661 C...# Fragmentation
61662           PARJ(21) = 0.325
61663           PARJ(41) = 0.5
61664           PARJ(42) = 0.6
61665           PARJ(47) = 0.67
61666           PARJ(81) = 0.29
61667           PARJ(82) = 1.65
61668         ENDIF
61669  
61670 C...Remove middle digit now for Professor variants, since identical pars
61671         ITUNEB=ITUNE
61672         IF (ITUNE.GE.110.AND.ITUNE.LE.119) THEN
61673           ITUNEB=(ITUNE/100)*100+MOD(ITUNE,10)
61674         ENDIF
61675  
61676 C...Multiple interactions on, old framework
61677         MSTP(81)=1
61678 C...Fast IR cutoff energy scaling by default
61679         PARP(89)=1800D0
61680         PARP(90)=0.25D0
61681 C...Default CTEQ5L (internal), except for QW: CTEQ61 (external)
61682         MSTP(51)=7
61683         MSTP(52)=1
61684         IF (ITUNEB.EQ.105) THEN
61685           MSTP(51)=10150
61686           MSTP(52)=2
61687         ELSEIF(ITUNEB.EQ.108.OR.ITUNEB.EQ.109) THEN
61688           MSTP(52)=2
61689           MSTP(54)=2
61690           MSTP(51)=10042
61691           MSTP(53)=10042
61692         ENDIF
61693 C...Double Gaussian matter distribution.
61694         MSTP(82)=4
61695         PARP(83)=0.5D0
61696         PARP(84)=0.4D0
61697 C...FSR activity.
61698         PARP(71)=4D0
61699 C...Fragmentation functions and c and b parameters
61700 C...(only if not using Professor)
61701         IF (ITUNE.LE.109) THEN
61702           MSTJ(11)=4
61703           PARJ(54)=-0.05
61704           PARJ(55)=-0.005
61705         ENDIF
61706  
61707 C...Tune A and AW
61708         IF(ITUNEB.EQ.100.OR.ITUNEB.EQ.101) THEN
61709 C...pT0.
61710           PARP(82)=2.0D0
61711 c...String drawing almost completely minimizes string length.
61712           PARP(85)=0.9D0
61713           PARP(86)=0.95D0
61714 C...ISR cutoff, muR scale factor, and phase space size
61715           PARP(62)=1D0
61716           PARP(64)=1D0
61717           PARP(67)=4D0
61718 C...Intrinsic kT, size, and max
61719           MSTP(91)=1
61720           PARP(91)=1D0
61721           PARP(93)=5D0
61722 C...AW : higher ISR IR cutoff, but also larger alphaS, more intrinsic kT
61723           IF (ITUNEB.EQ.101) THEN
61724             PARP(62)=1.25D0
61725             PARP(64)=0.2D0
61726             PARP(91)=2.1D0
61727             PARP(92)=15.0D0
61728           ENDIF
61729  
61730 C...Tune BW (larger alphaS, more intrinsic kT. Smaller ISR phase space)
61731         ELSEIF (ITUNEB.EQ.102) THEN
61732 C...pT0.
61733           PARP(82)=1.9D0
61734 c...String drawing completely minimizes string length.
61735           PARP(85)=1.0D0
61736           PARP(86)=1.0D0
61737 C...ISR cutoff, muR scale factor, and phase space size
61738           PARP(62)=1.25D0
61739           PARP(64)=0.2D0
61740           PARP(67)=1D0
61741 C...Intrinsic kT, size, and max
61742           MSTP(91)=1
61743           PARP(91)=2.1D0
61744           PARP(93)=15D0
61745  
61746 C...Tune DW
61747         ELSEIF (ITUNEB.EQ.103) THEN
61748 C...pT0.
61749           PARP(82)=1.9D0
61750 c...String drawing completely minimizes string length.
61751           PARP(85)=1.0D0
61752           PARP(86)=1.0D0
61753 C...ISR cutoff, muR scale factor, and phase space size
61754           PARP(62)=1.25D0
61755           PARP(64)=0.2D0
61756           PARP(67)=2.5D0
61757 C...Intrinsic kT, size, and max
61758           MSTP(91)=1
61759           PARP(91)=2.1D0
61760           PARP(93)=15D0
61761  
61762 C...Tune DWT
61763         ELSEIF (ITUNEB.EQ.104) THEN
61764 C...pT0.
61765           PARP(82)=1.9409D0
61766 C...Run II ref scale and slow scaling
61767           PARP(89)=1960D0
61768           PARP(90)=0.16D0
61769 c...String drawing completely minimizes string length.
61770           PARP(85)=1.0D0
61771           PARP(86)=1.0D0
61772 C...ISR cutoff, muR scale factor, and phase space size
61773           PARP(62)=1.25D0
61774           PARP(64)=0.2D0
61775           PARP(67)=2.5D0
61776 C...Intrinsic kT, size, and max
61777           MSTP(91)=1
61778           PARP(91)=2.1D0
61779           PARP(93)=15D0
61780  
61781 C...Tune QW
61782         ELSEIF(ITUNEB.EQ.105) THEN
61783           IF (M13.GE.1) THEN
61784             WRITE(M11,5030) ' '
61785             CH70='NB! This tune requires CTEQ6.1 pdfs to be '//
61786      &           'externally linked'
61787             WRITE(M11,5035) CH70
61788           ENDIF
61789 C...pT0.
61790           PARP(82)=1.1D0
61791 c...String drawing completely minimizes string length.
61792           PARP(85)=1.0D0
61793           PARP(86)=1.0D0
61794 C...ISR cutoff, muR scale factor, and phase space size
61795           PARP(62)=1.25D0
61796           PARP(64)=0.2D0
61797           PARP(67)=2.5D0
61798 C...Intrinsic kT, size, and max
61799           MSTP(91)=1
61800           PARP(91)=2.1D0
61801           PARP(93)=15D0
61802  
61803 C...Tune D6 and D6T
61804         ELSEIF(ITUNEB.EQ.108.OR.ITUNEB.EQ.109) THEN
61805           IF (M13.GE.1) THEN
61806             WRITE(M11,5030) ' '
61807             CH70='NB! This tune requires CTEQ6L pdfs to be '//
61808      &           'externally linked'
61809             WRITE(M11,5035) CH70
61810           ENDIF
61811 C...The "Rick" proton, double gauss with 0.5/0.4
61812           MSTP(82)=4
61813           PARP(83)=0.5D0
61814           PARP(84)=0.4D0
61815 c...String drawing completely minimizes string length.
61816           PARP(85)=1.0D0
61817           PARP(86)=1.0D0
61818           IF (ITUNEB.EQ.108) THEN
61819 C...D6: pT0, Run I ref scale, and fast energy scaling
61820             PARP(82)=1.8D0
61821             PARP(89)=1800D0
61822             PARP(90)=0.25D0
61823           ELSE
61824 C...D6T: pT0, Run II ref scale, and slow energy scaling
61825             PARP(82)=1.8387D0
61826             PARP(89)=1960D0
61827             PARP(90)=0.16D0
61828           ENDIF
61829 C...ISR cutoff, muR scale factor, and phase space size
61830           PARP(62)=1.25D0
61831           PARP(64)=0.2D0
61832           PARP(67)=2.5D0
61833 C...Intrinsic kT, size, and max
61834           MSTP(91)=1
61835           PARP(91)=2.1D0
61836           PARP(93)=15D0
61837  
61838 C...Old ATLAS-DC2 5-parameter tune
61839         ELSEIF(ITUNEB.EQ.106) THEN
61840           IF (M13.GE.1) THEN
61841             WRITE(M11,5010) ITUNE, CHNAME
61842             CH60='see A. Moraes et al., SN-ATLAS-2006-057,'
61843             WRITE(M11,5030) CH60
61844             CH60='    R. Field in hep-ph/0610012,'
61845             WRITE(M11,5030) CH60
61846             CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
61847             WRITE(M11,5030) CH60
61848           ENDIF
61849 C...  pT0.
61850           PARP(82)=1.8D0
61851 C...  Different ref and rescaling pacee
61852           PARP(89)=1000D0
61853           PARP(90)=0.16D0
61854 C...  Parameters of mass distribution
61855           PARP(83)=0.5D0
61856           PARP(84)=0.5D0
61857 C...  Old default string drawing
61858           PARP(85)=0.33D0
61859           PARP(86)=0.66D0
61860 C...  ISR, phase space equivalent to Tune B
61861           PARP(62)=1D0
61862           PARP(64)=1D0
61863           PARP(67)=1D0
61864 C...  FSR
61865           PARP(71)=4D0
61866 C...  Intrinsic kT
61867           MSTP(91)=1
61868           PARP(91)=1D0
61869           PARP(93)=5D0
61870  
61871 C...Professor's Pro-Q20 Tune
61872         ELSEIF(ITUNE.EQ.129) THEN
61873           IF (M13.GE.1) THEN
61874             CH60='see H. Hoeth, Perugia MPI workshop, Oct 2008'
61875             WRITE(M11,5030) CH60
61876           ENDIF
61877           PARP(62)=2.9
61878           PARP(64)=0.14
61879           PARP(67)=2.65
61880           PARP(82)=1.9
61881           PARP(83)=0.83
61882           PARP(84)=0.6
61883           PARP(85)=0.86
61884           PARP(86)=0.93
61885           PARP(89)=1800D0
61886           PARP(90)=0.22
61887           MSTP(91)=1
61888           PARP(91)=2.1
61889           PARP(93)=5.0
61890  
61891         ENDIF
61892  
61893 C...  Output
61894         IF (M13.GE.1) THEN
61895           WRITE(M11,5030) ' '
61896           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
61897           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
61898           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
61899           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
61900           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
61901           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
61902           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
61903           WRITE(M11,5030) CH60
61904           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
61905           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
61906           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
61907           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
61908           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
61909           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
61910           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
61911           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
61912           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
61913           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
61914           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
61915           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
61916           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
61917           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
61918           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
61919           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
61920           WRITE(M11,5060) 21, PARJ(21), CHPARJ(21)
61921           WRITE(M11,5060) 41, PARJ(41), CHPARJ(41)
61922           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
61923           IF (MSTJ(11).LE.3) THEN
61924              WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
61925              WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
61926           ELSE
61927              WRITE(M11,5060) 46, PARJ(46), CHPARJ(46)
61928           ENDIF
61929           IF (MSTJ(11).EQ.5) WRITE(M11,5060) 47, PARJ(47), CHPARJ(47)
61930         ENDIF
61931  
61932 C=======================================================================
61933 C... ACR, tune A with new CR (107)
61934       ELSEIF(ITUNE.EQ.107.OR.ITUNE.EQ.117) THEN
61935         IF (M13.GE.1) THEN
61936           WRITE(M11,5010) ITUNE, CHNAME
61937           CH60='Tune A modified with new colour reconnections'
61938           WRITE(M11,5030) CH60
61939           CH60='PARP(85)=0D0 and amount of CR is regulated by PARP(78)'
61940           WRITE(M11,5030) CH60
61941           CH60='see P. Skands & D. Wicke, hep-ph/0703081,'
61942           WRITE(M11,5030) CH60
61943           CH60='    R. Field, in hep-ph/0610012 (Tune A),'
61944           WRITE(M11,5030) CH60
61945           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
61946           WRITE(M11,5030) CH60
61947           IF (ITUNE.EQ.117) THEN
61948             CH60='LEP parameters tuned by Professor'
61949             WRITE(M11,5030) CH60
61950           ENDIF
61951         ENDIF
61952         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.406))THEN
61953           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
61954      &        ' with tune. Using defaults.')
61955           GOTO 100
61956         ENDIF
61957  
61958 C...Make sure we start from old default fragmentation parameters
61959         PARJ(81) = 0.29
61960         PARJ(82) = 1.0
61961  
61962 C...Use Professor's LEP pars if ITUNE >= 110
61963 C...(i.e., for A-Pro, DW-Pro etc)
61964         IF (ITUNE.GE.110) THEN
61965 C...# Tuned flavour parameters:
61966           PARJ(1)  = 0.073
61967           PARJ(2)  = 0.2
61968           PARJ(3)  = 0.94
61969           PARJ(4)  = 0.032
61970           PARJ(11) = 0.31
61971           PARJ(12) = 0.4
61972           PARJ(13) = 0.54
61973           PARJ(25) = 0.63
61974           PARJ(26) = 0.12
61975 C...# Switch on Bowler:
61976           MSTJ(11) = 5
61977 C...# Fragmentation
61978           PARJ(21) = 0.325
61979           PARJ(41) = 0.5
61980           PARJ(42) = 0.6
61981           PARJ(47) = 0.67
61982           PARJ(81) = 0.29
61983           PARJ(82) = 1.65
61984         ENDIF
61985  
61986         MSTP(81)=1
61987         PARP(89)=1800D0
61988         PARP(90)=0.25D0
61989         MSTP(82)=4
61990         PARP(83)=0.5D0
61991         PARP(84)=0.4D0
61992         MSTP(51)=7
61993         MSTP(52)=1
61994         PARP(71)=4D0
61995         PARP(82)=2.0D0
61996         PARP(85)=0.0D0
61997         PARP(86)=0.66D0
61998         PARP(62)=1D0
61999         PARP(64)=1D0
62000         PARP(67)=4D0
62001         MSTP(91)=1
62002         PARP(91)=1D0
62003         PARP(93)=5D0
62004         MSTP(95)=6
62005 C...P78 changed from 0.12 to 0.09 in 6.4.19 to improve <pT>(Nch)
62006         PARP(78)=0.09D0
62007 C...Frag functions (only if not using Professor)
62008         IF (ITUNE.LE.109) THEN
62009           MSTJ(11)=4
62010           PARJ(54)=-0.05
62011           PARJ(55)=-0.005
62012         ENDIF
62013  
62014 C...Output
62015         IF (M13.GE.1) THEN
62016           WRITE(M11,5030) ' '
62017           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
62018           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
62019           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
62020           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
62021           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
62022           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
62023           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
62024           WRITE(M11,5030) CH60
62025           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
62026           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
62027           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
62028           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62029           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
62030           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
62031           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
62032           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62033           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
62034           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
62035           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
62036           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
62037           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
62038           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
62039           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
62040           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
62041           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
62042           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
62043           WRITE(M11,5060) 21, PARJ(21), CHPARJ(21)
62044           WRITE(M11,5060) 41, PARJ(41), CHPARJ(41)
62045           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
62046           IF (MSTJ(11).LE.3) THEN
62047              WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
62048              WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
62049           ELSE
62050              WRITE(M11,5060) 46, PARJ(46), CHPARJ(46)
62051           ENDIF
62052           IF (MSTJ(11).EQ.5) WRITE(M11,5060) 47, PARJ(47), CHPARJ(47)
62053         ENDIF
62054  
62055 C=======================================================================
62056 C...Intermediate model. Rap tune
62057 C...(retuned to post-6.406 IR factorization)
62058       ELSEIF(ITUNE.EQ.200) THEN
62059         IF (M13.GE.1) THEN
62060           WRITE(M11,5010) ITUNE, CHNAME
62061           CH60='see T. Sjostrand & P. Skands, JHEP03(2004)053'
62062           WRITE(M11,5030) CH60
62063         ENDIF
62064         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.405))THEN
62065           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
62066      &        ' with tune.')
62067         ENDIF
62068 C...PDF
62069         MSTP(51)=7
62070         MSTP(52)=1
62071 C...ISR
62072         PARP(62)=1D0
62073         PARP(64)=1D0
62074         PARP(67)=4D0
62075 C...FSR
62076         PARP(71)=4D0
62077         PARJ(81)=0.29D0
62078 C...UE
62079         MSTP(81)=11
62080         PARP(82)=2.25D0
62081         PARP(89)=1800D0
62082         PARP(90)=0.25D0
62083 C...  ExpOfPow(1.8) overlap profile
62084         MSTP(82)=5
62085         PARP(83)=1.8D0
62086 C...  Valence qq
62087         MSTP(88)=0
62088 C...  Rap Tune
62089         MSTP(89)=1
62090 C...  Default diquark, BR-g-BR supp
62091         PARP(79)=2D0
62092         PARP(80)=0.01D0
62093 C...  Final state reconnect.
62094         MSTP(95)=1
62095         PARP(78)=0.55D0
62096 C...Fragmentation functions and c and b parameters
62097         MSTJ(11)=4
62098         PARJ(54)=-0.05
62099         PARJ(55)=-0.005
62100 C...  Output
62101         IF (M13.GE.1) THEN
62102           WRITE(M11,5030) ' '
62103           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
62104           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
62105           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
62106           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
62107           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
62108           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
62109           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
62110           WRITE(M11,5030) CH60
62111           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
62112           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
62113           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62114           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
62115           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
62116           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
62117           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62118           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
62119           WRITE(M11,5040) 88, MSTP(88), CHMSTP(88)
62120           WRITE(M11,5040) 89, MSTP(89), CHMSTP(89)
62121           WRITE(M11,5050) 79, PARP(79), CHPARP(79)
62122           WRITE(M11,5050) 80, PARP(80), CHPARP(80)
62123           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
62124           WRITE(M11,5040) 95, MSTP(95), CHMSTP(95)
62125           WRITE(M11,5050) 78, PARP(78), CHPARP(78)
62126           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
62127           WRITE(M11,5060) 21, PARJ(21), CHPARJ(21)
62128           WRITE(M11,5060) 41, PARJ(41), CHPARJ(41)
62129           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
62130           IF (MSTJ(11).LE.3) THEN
62131              WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
62132              WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
62133           ELSE
62134              WRITE(M11,5060) 46, PARJ(46), CHPARJ(46)
62135           ENDIF
62136           IF (MSTJ(11).EQ.5) WRITE(M11,5060) 47, PARJ(47), CHPARJ(47)
62137         ENDIF
62138  
62139 C...APT(201), APT-Pro (211), Perugia-APT (221), Perugia-APT6 (226).
62140 C...Old model for ISR and UE, new pT-ordered model for FSR
62141       ELSEIF(ITUNE.EQ.201.OR.ITUNE.EQ.211.OR.ITUNE.EQ.221.OR
62142      &       .ITUNE.EQ.226) THEN
62143         IF (M13.GE.1) THEN
62144           WRITE(M11,5010) ITUNE, CHNAME
62145           CH60='see P. Skands & D. Wicke, hep-ph/0703081 (Tune APT),'
62146           WRITE(M11,5030) CH60
62147           CH60='    R.D. Field, in hep-ph/0610012 (Tune A)'
62148           WRITE(M11,5030) CH60
62149           CH60='    T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
62150           WRITE(M11,5030) CH60
62151           CH60='and T. Sjostrand & P. Skands, hep-ph/0408302'
62152           WRITE(M11,5030) CH60
62153           IF (ITUNE.EQ.211.OR.ITUNE.GE.221) THEN
62154             CH60='LEP parameters tuned by Professor'
62155             WRITE(M11,5030) CH60
62156           ENDIF
62157         ENDIF
62158         IF (MSTP(181).LE.5.OR.(MSTP(181).EQ.6.AND.MSTP(182).LE.411))THEN
62159           CALL PYERRM(9,'(PYTUNE:) linked PYTHIA version incompatible'//
62160      &        ' with tune.')
62161         ENDIF
62162 C...First set as if Pythia tune A
62163 C...Multiple interactions on, old framework
62164         MSTP(81)=1
62165 C...Fast IR cutoff energy scaling by default
62166         PARP(89)=1800D0
62167         PARP(90)=0.25D0
62168 C...Default CTEQ5L (internal)
62169         MSTP(51)=7
62170         MSTP(52)=1
62171 C...Double Gaussian matter distribution.
62172         MSTP(82)=4
62173         PARP(83)=0.5D0
62174         PARP(84)=0.4D0
62175 C...FSR activity.
62176         PARP(71)=4D0
62177 c...String drawing almost completely minimizes string length.
62178         PARP(85)=0.9D0
62179         PARP(86)=0.95D0
62180 C...ISR cutoff, muR scale factor, and phase space size
62181         PARP(62)=1D0
62182         PARP(64)=1D0
62183         PARP(67)=4D0
62184 C...Intrinsic kT, size, and max
62185         MSTP(91)=1
62186         PARP(91)=1D0
62187         PARP(93)=5D0
62188 C...Use 2 GeV of primordial kT for "Perugia" version
62189         IF (ITUNE.EQ.221) THEN
62190           PARP(91)=2D0
62191           PARP(93)=10D0
62192         ENDIF
62193 C...Use pT-ordered FSR
62194         MSTJ(41)=12
62195 C...Lambda_FSR scale for pT-ordering
62196         PARJ(81)=0.23D0
62197 C...Retune pT0 (changed from 2.1 to 2.05 in 6.4.20)
62198         PARP(82)=2.05D0
62199 C...Fragmentation functions and c and b parameters
62200 C...(overwritten for 211, i.e., if using Professor pars)
62201         MSTJ(11)=4
62202         PARJ(54)=-0.05
62203         PARJ(55)=-0.005
62204  
62205 C...Use Professor's LEP pars if ITUNE == 211, 221, 226
62206         IF (ITUNE.EQ.211.OR.ITUNE.GE.221) THEN
62207 C...# Tuned flavour parameters:
62208           PARJ(1)  = 0.073
62209           PARJ(2)  = 0.2
62210           PARJ(3)  = 0.94
62211           PARJ(4)  = 0.032
62212           PARJ(11) = 0.31
62213           PARJ(12) = 0.4
62214           PARJ(13) = 0.54
62215           PARJ(25) = 0.63
62216           PARJ(26) = 0.12
62217 C...# Always use pT-ordered shower:
62218           MSTJ(41) = 12
62219 C...# Switch on Bowler:
62220           MSTJ(11) = 5
62221 C...# Fragmentation
62222           PARJ(21) = 3.1327e-01
62223           PARJ(41) = 4.8989e-01
62224           PARJ(42) = 1.2018e+00
62225           PARJ(47) = 1.0000e+00
62226           PARJ(81) = 2.5696e-01
62227           PARJ(82) = 8.0000e-01
62228         ENDIF
62229  
62230 C...221, 226 : Perugia-APT and Perugia-APT6
62231         IF (ITUNE.EQ.221.OR.ITUNE.EQ.226) THEN
62232  
62233           PARP(64)=0.5D0
62234           PARP(82)=2.05D0
62235           PARP(90)=0.26D0
62236           PARP(91)=2.0D0
62237 C...The Perugia variants use Steve's showers off the old MPI
62238           MSTP(152)=1
62239 C...And use a lower PARP(71) as suggested by Professor tunings
62240 C...(although not certain that applies to Q2-pT2 hybrid)
62241           PARP(71)=2.5D0
62242  
62243 C...Perugia-APT6 uses CTEQ6L1 and a slightly lower pT0
62244           IF (ITUNE.EQ.226) THEN
62245             CH70='NB! This tune requires CTEQ6L1 pdfs to be '//
62246      &           'externally linked'
62247             WRITE(M11,5035) CH70
62248             MSTP(52)=2
62249             MSTP(51)=10042
62250             PARP(82)=1.95D0
62251           ENDIF
62252  
62253         ENDIF
62254  
62255 C...  Output
62256         IF (M13.GE.1) THEN
62257           WRITE(M11,5030) ' '
62258           WRITE(M11,5040) 51, MSTP(51), CHMSTP(51)
62259           WRITE(M11,5040) 52, MSTP(52), CHMSTP(52)
62260           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
62261           WRITE(M11,5050) 64, PARP(64), CHPARP(64)
62262           WRITE(M11,5050) 67, PARP(67), CHPARP(67)
62263           WRITE(M11,5040) 68, MSTP(68), CHMSTP(68)
62264           CH60='(Note: MSTP(68) is not explicitly (re-)set by PYTUNE)'
62265           WRITE(M11,5030) CH60
62266           WRITE(M11,5070) 41, MSTJ(41), CHMSTJ(41)
62267           WRITE(M11,5050) 71, PARP(71), CHPARP(71)
62268           WRITE(M11,5060) 81, PARJ(81), CHPARJ(81)
62269           WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62270           WRITE(M11,5050) 82, PARP(82), CHPARP(82)
62271           WRITE(M11,5050) 89, PARP(89), CHPARP(89)
62272           WRITE(M11,5050) 90, PARP(90), CHPARP(90)
62273           WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62274           WRITE(M11,5050) 83, PARP(83), CHPARP(83)
62275           WRITE(M11,5050) 84, PARP(84), CHPARP(84)
62276           WRITE(M11,5050) 85, PARP(85), CHPARP(85)
62277           WRITE(M11,5050) 86, PARP(86), CHPARP(86)
62278           WRITE(M11,5040) 91, MSTP(91), CHMSTP(91)
62279           WRITE(M11,5050) 91, PARP(91), CHPARP(91)
62280           WRITE(M11,5050) 93, PARP(93), CHPARP(93)
62281           WRITE(M11,5070) 11, MSTJ(11), CHMSTJ(11)
62282           WRITE(M11,5060) 21, PARJ(21), CHPARJ(21)
62283           WRITE(M11,5060) 41, PARJ(41), CHPARJ(41)
62284           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
62285           IF (MSTJ(11).LE.3) THEN
62286              WRITE(M11,5060) 54, PARJ(54), CHPARJ(54)
62287              WRITE(M11,5060) 55, PARJ(55), CHPARJ(55)
62288           ELSE
62289              WRITE(M11,5060) 46, PARJ(46), CHPARJ(46)
62290           ENDIF
62291           IF (MSTJ(11).EQ.5) WRITE(M11,5060) 47, PARJ(47), CHPARJ(47)
62292         ENDIF
62293  
62294 C======================================================================
62295 C...Uppsala models: Generalized Area Law and Soft Colour Interactions
62296       ELSEIF(CHNAME.EQ.'GAL Tune 0'.OR.CHNAME.EQ.'GAL Tune 1') THEN
62297         IF (M13.GE.1) THEN
62298           WRITE(M11,5010) ITUNE, CHNAME
62299           CH60='see J. Rathsman, PLB452(1999)364'
62300           WRITE(M11,5030) CH60
62301 C ?         CH60='A. Edin, G. Ingelman, J. Rathsman, hep-ph/9912539,'
62302 C ?         WRITE(M11,5030)
62303           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
62304           WRITE(M11,5030) CH60
62305           WRITE(M11,5030) ' '
62306           CH70='NB! The GAL model must be run with modified '//
62307      &        'Pythia v6.215:'
62308           WRITE(M11,5035) CH70
62309           CH70='available from http://www.isv.uu.se/thep/MC/scigal/'
62310           WRITE(M11,5035) CH70
62311           WRITE(M11,5030) ' '
62312         ENDIF
62313 C...GAL Recommended settings from Uppsala web page (as per 22/08 2006)
62314         MSWI(2) = 3
62315         PARSCI(2) = 0.10
62316         MSWI(1) = 2
62317         PARSCI(1) = 0.44
62318         MSTJ(16) = 0
62319         PARJ(42) = 0.45
62320         PARJ(82) = 2.0
62321         PARP(62) = 2.0  
62322         MSTP(81) = 1
62323         MSTP(82) = 1
62324         PARP(81) = 1.9
62325         MSTP(92) = 1
62326         IF(CHNAME.EQ.'GAL Tune 1') THEN
62327 C...GAL retune (P. Skands) to get better min-bias <Nch> at Tevatron
62328           MSTP(82)=4
62329           PARP(83)=0.25D0
62330           PARP(84)=0.5D0
62331           PARP(82) = 1.75
62332           IF (M13.GE.1) THEN
62333             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62334             WRITE(M11,5050) 82, PARP(82), CHPARP(82)
62335             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62336             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
62337             WRITE(M11,5050) 84, PARP(84), CHPARP(84)
62338           ENDIF
62339         ELSE
62340           IF (M13.GE.1) THEN
62341             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62342             WRITE(M11,5050) 81, PARP(81), CHPARP(81)
62343             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62344           ENDIF
62345         ENDIF
62346 C...Output
62347         IF (M13.GE.1) THEN
62348           WRITE(M11,5050) 62, PARP(62), CHPARP(62)
62349           WRITE(M11,5060) 82, PARJ(82), CHPARJ(82)
62350           WRITE(M11,5040) 92, MSTP(92), CHMSTP(92)
62351           CH40='FSI SCI/GAL selection'
62352           WRITE(M11,6040) 1, MSWI(1), CH40
62353           CH40='FSI SCI/GAL sea quark treatment'
62354           WRITE(M11,6040) 2, MSWI(2), CH40
62355           CH40='FSI SCI/GAL sea quark treatment parm'
62356           WRITE(M11,6050) 1, PARSCI(1), CH40
62357           CH40='FSI SCI/GAL string reco probability R_0'
62358           WRITE(M11,6050) 2, PARSCI(2), CH40
62359           WRITE(M11,5060) 42, PARJ(42), CHPARJ(42)
62360           WRITE(M11,5070) 16, MSTJ(16), CHMSTJ(16)
62361         ENDIF
62362       ELSEIF(CHNAME.EQ.'SCI Tune 0'.OR.CHNAME.EQ.'SCI Tune 1') THEN
62363         IF (M13.GE.1) THEN
62364           WRITE(M11,5010) ITUNE, CHNAME
62365           CH60='see A.Edin et al, PLB366(1996)371, Z.Phys.C75(1997)57,'
62366           WRITE(M11,5030) CH60
62367           CH60='and T. Sjostrand & M. v. Zijl, PRD36(1987)2019'
62368           WRITE(M11,5030) CH60
62369           WRITE(M11,5030) ' '
62370           CH70='NB! The SCI model must be run with modified '//
62371      &        'Pythia v6.215:'
62372           WRITE(M11,5035) CH70
62373           CH70='available from http://www.isv.uu.se/thep/MC/scigal/'
62374           WRITE(M11,5035) CH70
62375           WRITE(M11,5030) ' '
62376         ENDIF
62377 C...SCI Recommended settings from Uppsala web page (as per 22/08 2006)
62378         MSTP(81)=1
62379         MSTP(82)=1
62380         PARP(81)=2.2
62381         MSTP(92)=1
62382         MSWI(2)=2
62383         PARSCI(2)=0.50
62384         MSWI(1)=2
62385         PARSCI(1)=0.44
62386         MSTJ(16)=0
62387         IF (CHNAME.EQ.'SCI Tune 1') THEN
62388 C...SCI retune (P. Skands) to get better min-bias <Nch> at Tevatron
62389           MSTP(81) = 1
62390           MSTP(82) = 3
62391           PARP(82) = 2.4
62392           PARP(83) = 0.5D0
62393           PARP(62) = 1.5
62394           PARP(84)=0.25D0
62395           IF (M13.GE.1) THEN
62396             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62397             WRITE(M11,5050) 82, PARP(82), CHPARP(82)
62398             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62399             WRITE(M11,5050) 83, PARP(83), CHPARP(83)
62400             WRITE(M11,5050) 62, PARP(62), CHPARP(62)
62401           ENDIF
62402         ELSE
62403           IF (M13.GE.1) THEN
62404             WRITE(M11,5040) 81, MSTP(81), CHMSTP(81)
62405             WRITE(M11,5050) 81, PARP(81), CHPARP(81)
62406             WRITE(M11,5040) 82, MSTP(82), CHMSTP(82)
62407           ENDIF
62408         ENDIF
62409 C...Output
62410         IF (M13.GE.1) THEN
62411           WRITE(M11,5040) 92, MSTP(92), CHMSTP(92)
62412           CH40='FSI SCI/GAL selection'
62413           WRITE(M11,6040) 1, MSWI(1), CH40
62414           CH40='FSI SCI/GAL sea quark treatment'
62415           WRITE(M11,6040) 2, MSWI(2), CH40
62416           CH40='FSI SCI/GAL sea quark treatment parm'
62417           WRITE(M11,6050) 1, PARSCI(1), CH40
62418           CH40='FSI SCI/GAL string reco probability R_0'
62419           WRITE(M11,6050) 2, PARSCI(2), CH40
62420           WRITE(M11,5070) 16, MSTJ(16), CHMSTJ(16)
62421         ENDIF
62422  
62423       ELSE
62424         IF (MSTU(13).GE.1) WRITE(M11,5020) ITUNE
62425  
62426       ENDIF
62427  
62428   100 IF (MSTU(13).GE.1) WRITE(M11,6000)
62429  
62430  9999 RETURN
62431  
62432  5000 FORMAT(1x,78('*')/' *',76x,'*'/' *',3x,'PYTUNE v',A6,' : ',
62433      &    'Presets for underlying-event (and min-bias)',13x,'*'/' *',
62434      &    20x,'Last Change : ',A8,' - P. Skands',22x,'*'/' *',76x,'*')
62435  5010 FORMAT(' *',3x,I4,1x,A16,52x,'*')
62436  5020 FORMAT(' *',3x,'Tune ',I4, ' not recognized. Using defaults.')
62437  5030 FORMAT(' *',3x,10x,A60,3x,'*')
62438  5035 FORMAT(' *',3x,A70,3x,'*')
62439  5040 FORMAT(' *',5x,'MSTP(',I2,') = ',I12,3x,A42,3x,'*')
62440  5050 FORMAT(' *',5x,'PARP(',I2,') = ',F12.4,3x,A40,5x,'*')
62441  5060 FORMAT(' *',5x,'PARJ(',I2,') = ',F12.4,3x,A40,5x,'*')
62442  5070 FORMAT(' *',5x,'MSTJ(',I2,') = ',I12,3x,A40,5x,'*')
62443  5140 FORMAT(' *',5x,'MSTP(',I3,')= ',I12,3x,A40,5x,'*')
62444  5150 FORMAT(' *',5x,'PARP(',I3,')= ',F12.4,3x,A40,5x,'*')
62445  6000 FORMAT(' *',76x,'*'/1x,32('*'),1x,'END OF PYTUNE',1x,31('*'))
62446  6040 FORMAT(' *',5x,'MSWI(',I1,')  = ',I12,3x,A40,5x,'*')
62447  6050 FORMAT(' *',5x,'PARSCI(',I1,')= ',F12.4,3x,A40,5x,'*')
62448  
62449       END
62450 
62451 C*********************************************************************
62452  
62453 C...PYEXEC
62454 C...Administrates the fragmentation and decay chain.
62455  
62456       SUBROUTINE PYEXEC
62457  
62458 C...Double precision and integer declarations.
62459       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
62460       IMPLICIT INTEGER(I-N)
62461       INTEGER PYK,PYCHGE,PYCOMP
62462 C...Commonblocks.
62463       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
62464       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
62465       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
62466       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
62467       COMMON/PYINT1/MINT(400),VINT(400)
62468       COMMON/PYINT4/MWID(500),WIDS(500,5)
62469       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYINT4/
62470 C...Local array.
62471       DIMENSION PS(2,6),IJOIN(100)
62472  
62473 C...Initialize and reset.
62474       MSTU(24)=0
62475       IF(MSTU(12).NE.12345) CALL PYLIST(0)
62476       MSTU(29)=0
62477       MSTU(31)=MSTU(31)+1
62478       MSTU(1)=0
62479       MSTU(2)=0
62480       MSTU(3)=0
62481       IF(MSTU(17).LE.0) MSTU(90)=0
62482       MCONS=1
62483  
62484 C...Sum up momentum, energy and charge for starting entries.
62485       NSAV=N
62486       DO 110 I=1,2
62487         DO 100 J=1,6
62488           PS(I,J)=0D0
62489   100   CONTINUE
62490   110 CONTINUE
62491       DO 130 I=1,N
62492         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 130
62493         DO 120 J=1,4
62494           PS(1,J)=PS(1,J)+P(I,J)
62495   120   CONTINUE
62496         PS(1,6)=PS(1,6)+PYCHGE(K(I,2))
62497   130 CONTINUE
62498       PARU(21)=PS(1,4)
62499  
62500 C...Start by all decays of coloured resonances involved in shower.
62501       NORIG=N
62502       DO 140 I=1,NORIG
62503         IF(K(I,1).EQ.3) THEN
62504           KC=PYCOMP(K(I,2))
62505           IF(MWID(KC).NE.0.AND.KCHG(KC,2).NE.0) CALL PYRESD(I)
62506         ENDIF
62507   140 CONTINUE
62508  
62509 C...Prepare system for subsequent fragmentation/decay.
62510       CALL PYPREP(0)
62511       IF(MINT(51).NE.0) RETURN
62512  
62513 C...Loop through jet fragmentation and particle decays.
62514       MBE=0
62515   150 MBE=MBE+1
62516       IP=0
62517   160 IP=IP+1
62518       KC=0
62519       IF(K(IP,1).GT.0.AND.K(IP,1).LE.10) KC=PYCOMP(K(IP,2))
62520       IF(KC.EQ.0) THEN
62521  
62522 C...Deal with any remaining undecayed resonance
62523 C...(normally the task of PYEVNT, so seldom used).
62524       ELSEIF(MWID(KC).NE.0) THEN
62525         IBEG=IP
62526         IF(KCHG(KC,2).NE.0.AND.K(I,1).NE.3) THEN
62527           IBEG=IP+1
62528   170     IBEG=IBEG-1
62529           IF(IBEG.GE.2.AND.K(IBEG,1).EQ.2) GOTO 170
62530           IF(K(IBEG,1).NE.2) IBEG=IBEG+1
62531           IEND=IP-1
62532   180     IEND=IEND+1
62533           IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 180
62534           IF(IEND.LT.N.AND.KCHG(PYCOMP(K(IEND,2)),2).EQ.0) GOTO 180
62535           NJOIN=0
62536           DO 190 I=IBEG,IEND
62537             IF(KCHG(PYCOMP(K(IEND,2)),2).NE.0) THEN
62538               NJOIN=NJOIN+1
62539               IJOIN(NJOIN)=I
62540             ENDIF
62541   190     CONTINUE
62542         ENDIF
62543         CALL PYRESD(IP)
62544         CALL PYPREP(IBEG)
62545         IF(MINT(51).NE.0) RETURN
62546  
62547 C...Particle decay if unstable and allowed. Save long-lived particle
62548 C...decays until second pass after Bose-Einstein effects.
62549       ELSEIF(KCHG(KC,2).EQ.0) THEN
62550         IF(MSTJ(21).GE.1.AND.MDCY(KC,1).GE.1.AND.(MSTJ(51).LE.0.OR.MBE
62551      &  .EQ.2.OR.PMAS(KC,2).GE.PARJ(91).OR.IABS(K(IP,2)).EQ.311))
62552      &  CALL PYDECY(IP)
62553  
62554 C...Decay products may develop a shower.
62555         IF(MSTJ(92).GT.0) THEN
62556           IP1=MSTJ(92)
62557           QMAX=SQRT(MAX(0D0,(P(IP1,4)+P(IP1+1,4))**2-(P(IP1,1)+P(IP1+1,
62558      &    1))**2-(P(IP1,2)+P(IP1+1,2))**2-(P(IP1,3)+P(IP1+1,3))**2))
62559           MINT(33)=0
62560           CALL PYSHOW(IP1,IP1+1,QMAX)
62561           CALL PYPREP(IP1)
62562           IF(MINT(51).NE.0) RETURN
62563           MSTJ(92)=0
62564         ELSEIF(MSTJ(92).LT.0) THEN
62565           IP1=-MSTJ(92)
62566           MINT(33)=0
62567           CALL PYSHOW(IP1,-3,P(IP,5))
62568           CALL PYPREP(IP1)
62569           IF(MINT(51).NE.0) RETURN
62570           MSTJ(92)=0
62571         ENDIF
62572  
62573 C...Jet fragmentation: string or independent fragmentation.
62574       ELSEIF(K(IP,1).EQ.1.OR.K(IP,1).EQ.2) THEN
62575         MFRAG=MSTJ(1)
62576         IF(MFRAG.GE.1.AND.K(IP,1).EQ.1) MFRAG=2
62577         IF(MSTJ(21).GE.2.AND.K(IP,1).EQ.2.AND.N.GT.IP) THEN
62578           IF(K(IP+1,1).EQ.1.AND.K(IP+1,3).EQ.K(IP,3).AND.
62579      &    K(IP,3).GT.0.AND.K(IP,3).LT.IP) THEN
62580             IF(KCHG(PYCOMP(K(K(IP,3),2)),2).EQ.0) MFRAG=MIN(1,MFRAG)
62581           ENDIF
62582         ENDIF
62583         IF(MFRAG.EQ.1) CALL PYSTRF(IP)
62584         IF(MFRAG.EQ.2) CALL PYINDF(IP)
62585         IF(MFRAG.EQ.2.AND.K(IP,1).EQ.1) MCONS=0
62586         IF(MFRAG.EQ.2.AND.(MSTJ(3).LE.0.OR.MOD(MSTJ(3),5).EQ.0)) MCONS=0
62587       ENDIF
62588  
62589 C...Loop back if enough space left in PYJETS and no error abort.
62590       IF(MSTU(24).NE.0.AND.MSTU(21).GE.2) THEN
62591       ELSEIF(IP.LT.N.AND.N.LT.MSTU(4)-20-MSTU(32)) THEN
62592         GOTO 160
62593       ELSEIF(IP.LT.N) THEN
62594         CALL PYERRM(11,'(PYEXEC:) no more memory left in PYJETS')
62595       ENDIF
62596  
62597 C...Include simple Bose-Einstein effect parametrization if desired.
62598       IF(MBE.EQ.1.AND.MSTJ(51).GE.1) THEN
62599         CALL PYBOEI(NSAV)
62600         GOTO 150
62601       ENDIF
62602  
62603 C...Check that momentum, energy and charge were conserved.
62604       DO 210 I=1,N
62605         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 210
62606         DO 200 J=1,4
62607           PS(2,J)=PS(2,J)+P(I,J)
62608   200   CONTINUE
62609         PS(2,6)=PS(2,6)+PYCHGE(K(I,2))
62610   210 CONTINUE
62611       PDEV=(ABS(PS(2,1)-PS(1,1))+ABS(PS(2,2)-PS(1,2))+ABS(PS(2,3)-
62612      &PS(1,3))+ABS(PS(2,4)-PS(1,4)))/(1D0+ABS(PS(2,4))+ABS(PS(1,4)))
62613       IF(MCONS.EQ.1.AND.PDEV.GT.PARU(11)) CALL PYERRM(15,
62614      &'(PYEXEC:) four-momentum was not conserved')
62615       IF(MCONS.EQ.1.AND.ABS(PS(2,6)-PS(1,6)).GT.0.1D0) CALL PYERRM(15,
62616      &'(PYEXEC:) charge was not conserved')
62617  
62618       RETURN
62619       END
62620  
62621 C*********************************************************************
62622  
62623 C...PYPREP
62624 C...Rearranges partons along strings.
62625 C...Special considerations for systems with junctions, with
62626 C...possibility of junction-antijunction annihilation.
62627 C...Allows small systems to collapse into one or two particles.
62628 C...Checks flavours and colour singlet invariant masses.
62629  
62630       SUBROUTINE PYPREP(IP)
62631  
62632 C...Double precision and integer declarations.
62633       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
62634       INTEGER PYK,PYCHGE,PYCOMP
62635 C...Commonblocks.
62636       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
62637       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
62638       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
62639       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
62640       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
62641       COMMON/PYINT1/MINT(400),VINT(400)
62642 C...The common block of colour tags.
62643       COMMON/PYCTAG/NCT,MCT(4000,2)
62644       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYCTAG/,
62645      &/PYPARS/
62646       DATA NERRPR/0/
62647       SAVE NERRPR
62648 C...Local arrays.
62649       DIMENSION DPS(5),DPC(5),UE(3),PG(5),E1(3),E2(3),E3(3),E4(3),
62650      &ECL(3),IJUNC(10,0:4),IPIECE(30,0:4),KFEND(4),KFQ(4),
62651      &IJUR(4),PJU(4,6),IRNG(4,2),TJJ(2,5),T(5),PUL(3,5),
62652      &IJCP(0:6),TJUOLD(5)
62653       CHARACTER CHTMP*6
62654  
62655 C...Function to give four-product.
62656       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)
62657  
62658 C...Rearrange parton shower product listing along strings: begin loop.
62659       MSTU(24)=0
62660       NOLD=N
62661       I1=N
62662       NJUNC=0
62663       NPIECE=0
62664       NJJSTR=0
62665       MSTU32=MSTU(32)+1
62666       DO 100 I=MAX(1,IP),N
62667 C...First store junction positions.
62668         IF(K(I,1).EQ.42) THEN
62669           NJUNC=NJUNC+1
62670           IJUNC(NJUNC,0)=I
62671           IJUNC(NJUNC,4)=0
62672         ENDIF
62673   100 CONTINUE
62674  
62675       DO 250 MQGST=1,3
62676         DO 240 I=MAX(1,IP),N
62677 C...Special treatment for junctions
62678           IF (K(I,1).LE.0) GOTO 240
62679           IF(K(I,1).EQ.42) THEN
62680 C...MQGST=2: Look for junction-junction strings (not detected in the
62681 C...main search below).
62682             IF (MQGST.EQ.2.AND.NPIECE.NE.3*NJUNC) THEN
62683               IF (NJJSTR.EQ.0) THEN
62684                 NJJSTR = (3*NJUNC-NPIECE)/2
62685               ENDIF
62686 C...Check how many already identified strings end on this junction
62687               ILC=0
62688               DO 110 J=1,NPIECE
62689                 IF (IPIECE(J,4).EQ.I) ILC=ILC+1
62690   110         CONTINUE
62691 C...If less than 3, remaining must be to another junction
62692               IF (ILC.LT.3) THEN
62693                 IF (ILC.NE.2) THEN
62694 C...Multiple j-j connections not handled yet.
62695                   CALL PYERRM(2,
62696      &            '(PYPREP:) Too many junction-junction strings.')
62697                   MINT(51)=1
62698                   RETURN
62699                 ENDIF
62700 C...The colour information in the junction is unreadable for the
62701 C...colour space search further down in this routine, so we must
62702 C...start on the colour mother of this junction and then "artificially"
62703 C...prevent the colour mother from connecting here again.
62704                 ITJUNC=MOD(K(I,4)/MSTU(5),MSTU(5))
62705                 KCS=4
62706                 IF (MOD(ITJUNC,2).EQ.0) KCS=5
62707 C...Switch colour if the junction-junction leg is presumably a
62708 C...junction mother leg rather than a junction daughter leg.
62709                 IF (ITJUNC.GE.3) KCS=9-KCS
62710                 IF (MINT(33).EQ.0) THEN
62711 C...Find the unconnected leg and reorder junction daughter pointers so
62712 C...MOD(K(I,4),MSTU(5)) always points to the junction-junction string
62713 C...piece.
62714                   IA=MOD(K(I,4),MSTU(5))
62715                   IF (K(IA,KCS)/MSTU(5)**2.GE.2) THEN
62716                     ITMP=MOD(K(I,5),MSTU(5))
62717                     IF (K(ITMP,KCS)/MSTU(5)**2.GE.2) THEN
62718                       ITMP=MOD(K(I,5)/MSTU(5),MSTU(5))
62719                       K(I,5)=K(I,5)+(IA-ITMP)*MSTU(5)
62720                     ELSE
62721                       K(I,5)=K(I,5)+(IA-ITMP)
62722                     ENDIF
62723                     K(I,4)=K(I,4)+(ITMP-IA)
62724                     IA=ITMP
62725                   ENDIF
62726                   IF (ITJUNC.LE.2) THEN
62727 C...Beam baryon junction
62728                     K(IA,KCS)   = K(IA,KCS) + 2*MSTU(5)**2
62729                     K(I,KCS)    = K(I,KCS) + 1*MSTU(5)**2
62730 C...Else 1 -> 2 decay junction
62731                   ELSE
62732                     K(IA,KCS)   = K(IA,KCS) + MSTU(5)**2
62733                     K(I,KCS)    = K(I,KCS) + 2*MSTU(5)**2
62734                   ENDIF
62735                   I1BEG = I1
62736                   NSTP = 0
62737                   GOTO 170
62738 C...Alternatively use colour tag information.
62739                 ELSE
62740 C...Find a final state parton with appropriate dangling colour tag.
62741                   JCT=0
62742                   IA=0
62743                   IJUMO=K(I,3)
62744                   DO 140 J1=MAX(1,IP),N
62745                     IF (K(J1,1).NE.3) GOTO 140
62746 C...Check for matching final-state colour tag
62747                     IMATCH=0
62748                     DO 120 J2=MAX(1,IP),N
62749                       IF (K(J2,1).NE.3) GOTO 120
62750                       IF (MCT(J1,KCS-3).EQ.MCT(J2,6-KCS)) IMATCH=1
62751   120               CONTINUE
62752                     IF (IMATCH.EQ.1) GOTO 140
62753 C...Check whether this colour tag belongs to the present junction
62754 C...by seeing whether any parton with this colour tag has the same
62755 C...mother as the junction.
62756                     JCT=MCT(J1,KCS-3)
62757                     IMATCH=0
62758                     DO 130 J2=MINT(84)+1,N
62759                       IMO2=K(J2,3)
62760 C...First scattering partons have IMO1 = 3 and 4.
62761                       IF (IMO2.EQ.MINT(83)+3.OR.IMO2.EQ.MINT(83)+4)
62762      &                     IMO2=IMO2-2
62763                       IF (MCT(J2,KCS-3).EQ.JCT.AND.IMO2.EQ.IJUMO)
62764      &                     IMATCH=1
62765   130               CONTINUE
62766                     IF (IMATCH.EQ.0) GOTO 140
62767                     IA=J1
62768   140             CONTINUE
62769 C...Check for junction-junction strings without intermediate final state
62770 C...glue (not detected above).
62771                   IF (IA.EQ.0) THEN
62772                     DO 160 MJU=1,NJUNC
62773                       IJU2=IJUNC(MJU,0)
62774                       IF (IJU2.EQ.I) GOTO 160
62775                       ITJU2=MOD(K(IJU2,4)/MSTU(5),MSTU(5))
62776 C...Only opposite types of junctions can connect to each other.
62777                       IF (MOD(ITJU2,2).EQ.MOD(ITJUNC,2)) GOTO 160
62778                       IS=0
62779                       DO 150 J=1,NPIECE
62780                         IF (IPIECE(J,4).EQ.IJU2) IS=IS+1
62781   150                 CONTINUE
62782                       IF (IS.EQ.3) GOTO 160
62783                       IB=I
62784                       IA=IJU2
62785   160               CONTINUE
62786                   ENDIF
62787 C...Switch to other side of adjacent parton and step from there.
62788                   KCS=9-KCS
62789                   I1BEG = I1
62790                   NSTP = 0
62791                   GOTO 170
62792                 ENDIF
62793               ELSE IF (ILC.NE.3) THEN
62794               ENDIF
62795             ENDIF
62796           ENDIF
62797  
62798 C...Look for coloured string endpoint, or (later) leftover gluon.
62799           IF(K(I,1).NE.3) GOTO 240
62800           KC=PYCOMP(K(I,2))
62801           IF(KC.EQ.0) GOTO 240
62802           KQ=KCHG(KC,2)
62803           IF(KQ.EQ.0.OR.(MQGST.LE.2.AND.KQ.EQ.2)) GOTO 240
62804  
62805 C...Pick up loose string end.
62806           KCS=4
62807           IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5
62808           IA=I
62809           IB=I
62810           I1BEG=I1
62811           NSTP=0
62812   170     NSTP=NSTP+1
62813           IF(NSTP.GT.4*N) THEN
62814             CALL PYERRM(14,'(PYPREP:) caught in infinite loop')
62815             MINT(51)=1
62816             RETURN
62817           ENDIF
62818  
62819 C...Copy undecayed parton. Finished if reached string endpoint.
62820           IF(K(IA,1).EQ.3) THEN
62821             IF(I1.GE.MSTU(4)-MSTU32-5) THEN
62822               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
62823               MINT(51)=1
62824               MSTU(24)=1
62825               RETURN
62826             ENDIF
62827             I1=I1+1
62828             K(I1,1)=2
62829             IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) K(I1,1)=1
62830             K(I1,2)=K(IA,2)
62831             K(I1,3)=IA
62832             K(I1,4)=0
62833             K(I1,5)=0
62834             DO 180 J=1,5
62835               P(I1,J)=P(IA,J)
62836               V(I1,J)=V(IA,J)
62837   180       CONTINUE
62838             K(IA,1)=K(IA,1)+10
62839             IF(K(I1,1).EQ.1) GOTO 240
62840           ENDIF
62841  
62842 C...Also finished (for now) if reached junction; then copy to end.
62843           IF(K(IA,1).EQ.42) THEN
62844             NCOPY=I1-I1BEG
62845             IF(I1.GE.MSTU(4)-MSTU32-NCOPY-5) THEN
62846               CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS')
62847               MINT(51)=1
62848               MSTU(24)=1
62849               RETURN
62850             ENDIF
62851             IF (MQGST.LE.2.AND.NCOPY.NE.0) THEN
62852               DO 200 ICOPY=1,NCOPY
62853                 DO 190 J=1,5
62854                   K(MSTU(4)-MSTU32-ICOPY,J)=K(I1BEG+ICOPY,J)
62855                   P(MSTU(4)-MSTU32-ICOPY,J)=P(I1BEG+ICOPY,J)
62856                   V(MSTU(4)-MSTU32-ICOPY,J)=V(I1BEG+ICOPY,J)
62857   190           CONTINUE
62858   200         CONTINUE
62859             ENDIF
62860 C...For junction-junction strings, find end leg and reorder junction
62861 C...daughter pointers so MOD(K(I,4),MSTU(5)) always points to the
62862 C...junction-junction string piece.
62863             IF (K(I,1).EQ.42.AND.MINT(33).EQ.0) THEN
62864               ITMP=MOD(K(IA,4),MSTU(5))
62865               IF (ITMP.NE.IB) THEN
62866                 IF (MOD(K(IA,5),MSTU(5)).EQ.IB) THEN
62867                   K(IA,5)=K(IA,5)+(ITMP-IB)
62868                 ELSE
62869                   K(IA,5)=K(IA,5)+(ITMP-IB)*MSTU(5)
62870                 ENDIF
62871                 K(IA,4)=K(IA,4)+(IB-ITMP)
62872               ENDIF
62873             ENDIF
62874             NPIECE=NPIECE+1
62875 C...IPIECE:
62876 C...0: endpoint in original ER
62877 C...1:
62878 C...2:
62879 C...3: Parton immediately next to junction
62880 C...4: Junction
62881             IPIECE(NPIECE,0)=I
62882             IPIECE(NPIECE,1)=MSTU32+1
62883             IPIECE(NPIECE,2)=MSTU32+NCOPY
62884             IPIECE(NPIECE,3)=IB
62885             IPIECE(NPIECE,4)=IA
62886             MSTU32=MSTU32+NCOPY
62887             I1=I1BEG
62888             GOTO 240
62889           ENDIF
62890  
62891 C...GOTO next parton in colour space.
62892           IB=IA
62893           IF (MINT(33).EQ.0) THEN
62894             IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5
62895      &           )).NE.0) THEN
62896               IA=MOD(K(IB,KCS),MSTU(5))
62897               K(IB,KCS)=K(IB,KCS)+MSTU(5)**2
62898               MREV=0
62899             ELSE
62900               IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),
62901      &             MSTU(5)).EQ.0) KCS=9-KCS
62902               IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5))
62903               K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2
62904               MREV=1
62905             ENDIF
62906             IF(IA.LE.0.OR.IA.GT.N) THEN
62907               CALL PYERRM(12,'(PYPREP:) colour rearrangement failed')
62908               IF(NERRPR.LT.5) THEN
62909                 NERRPR=NERRPR+1
62910                 WRITE(MSTU(11),*) 'started at:', I
62911                 WRITE(MSTU(11),*) 'ended going from',IB,' to',IA
62912                 WRITE(MSTU(11),*) 'MQGST =',MQGST
62913                 CALL PYLIST(4)
62914               ENDIF
62915               MINT(51)=1
62916               RETURN
62917             ENDIF
62918             IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5)
62919      &           ,MSTU(5)).EQ.IB) THEN
62920               IF(MREV.EQ.1) KCS=9-KCS
62921               IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS
62922               K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2
62923             ELSE
62924               IF(MREV.EQ.0) KCS=9-KCS
62925               IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS
62926               K(IA,KCS)=K(IA,KCS)+MSTU(5)**2
62927             ENDIF
62928             IF(IA.NE.I) GOTO 170
62929 C...Use colour tag information
62930           ELSE
62931 C...First create colour tags starting on IB if none already present.
62932             IF (MCT(IB,KCS-3).EQ.0) THEN
62933               CALL PYCTTR(IB,KCS,IB)
62934               IF(MINT(51).NE.0) RETURN
62935             ENDIF
62936             JCT=MCT(IB,KCS-3)
62937             IFOUND=0
62938 C...Find final state tag partner
62939             DO 210 IT=MAX(1,IP),N
62940               IF (IT.EQ.IB) GOTO 210
62941               IF (MCT(IT,6-KCS).EQ.JCT.AND.K(IT,1).LT.10.AND.K(IT,1).GT
62942      &             .0) THEN
62943                 IFOUND=IFOUND+1
62944                 IA=IT
62945               ENDIF
62946   210       CONTINUE
62947 C...Just copy and goto next if exactly one partner found.
62948             IF (IFOUND.EQ.1) THEN
62949               GOTO 170
62950 C...When no match found, match is presumably junction.
62951             ELSEIF (IFOUND.EQ.0.AND.MQGST.LE.2) THEN
62952 C...Check whether this colour tag matches a junction
62953 C...by seeing whether any parton with this colour tag has the same
62954 C...mother as a junction.
62955 C...NB: Only type 1 and 2 junctions handled presently.
62956               DO 230 IJU=1,NJUNC
62957                 IJUMO=K(IJUNC(IJU,0),3)
62958                 ITJUNC=MOD(K(IJUNC(IJU,0),4)/MSTU(5),MSTU(5))
62959 C...Colours only connect to junctions, anti-colours to antijunctions:
62960                 IF (MOD(ITJUNC+1,2)+1.NE.KCS-3) GOTO 230
62961                 IMATCH=0
62962                 DO 220 J1=MAX(1,IP),N
62963                   IF (K(J1,1).LE.0) GOTO 220
62964 C...First scattering partons have IMO1 = 3 and 4.
62965                   IMO=K(J1,3)
62966                   IF (IMO.EQ.MINT(83)+3.OR.IMO.EQ.MINT(83)+4)
62967      &                 IMO=IMO-2
62968                   IF (MCT(J1,KCS-3).EQ.JCT.AND.IMO.EQ.IJUMO.AND.MOD(K(J1
62969      &                 ,3+ITJUNC)/MSTU(5),MSTU(5)).EQ.IJUNC(IJU,0))
62970      &                 IMATCH=1
62971 C...Attempt at handling type > 3 junctions also. Not tested.
62972                   IF (ITJUNC.GE.3.AND.MCT(J1,6-KCS).EQ.JCT.AND.IMO.EQ
62973      &                 .IJUMO) IMATCH=1
62974   220           CONTINUE
62975                 IF (IMATCH.EQ.0) GOTO 230
62976                 IA=IJUNC(IJU,0)
62977                 IFOUND=IFOUND+1
62978   230         CONTINUE
62979  
62980               IF (IFOUND.EQ.1) THEN
62981                 GOTO 170
62982               ELSEIF (IFOUND.EQ.0) THEN
62983                 WRITE(CHTMP,*) JCT
62984                 CALL PYERRM(12,'(PYPREP:) no matching colour tag: '
62985      &               //CHTMP)
62986                 IF(NERRPR.LT.5) THEN
62987                   NERRPR=NERRPR+1
62988                   CALL PYLIST(4)
62989                 ENDIF
62990                 MINT(51)=1
62991                 RETURN
62992               ENDIF
62993             ELSEIF (IFOUND.GE.2) THEN
62994               WRITE(CHTMP,*) JCT
62995               CALL PYERRM(12
62996      &             ,'(PYPREP:) too many occurences of colour line: '//
62997      &             CHTMP)
62998               IF(NERRPR.LT.5) THEN
62999                 NERRPR=NERRPR+1
63000                 CALL PYLIST(4)
63001               ENDIF
63002               MINT(51)=1
63003               RETURN
63004             ENDIF
63005           ENDIF
63006           K(I1,1)=1
63007   240   CONTINUE
63008   250 CONTINUE
63009  
63010 C...Junction systems remain.
63011       IJU=0
63012       IJUS=0
63013       IJUCNT=0
63014       MREV=0
63015       IJJSTR=0
63016   260 IJUCNT=IJUCNT+1
63017       IF (IJUCNT.LE.NJUNC) THEN
63018 C...If we are not processing a j-j string, treat this junction as new.
63019         IF (IJJSTR.EQ.0) THEN
63020           IJU=IJUNC(IJUCNT,0)
63021           MREV=0
63022 C...If junction has already been read, ignore it.
63023           IF (IJUNC(IJUCNT,4).EQ.1) GOTO 260
63024 C...If we are on a j-j string, goto second j-j junction.
63025         ELSE
63026           IJUCNT=IJUCNT-1
63027           IJU=IJUS
63028         ENDIF
63029 C...Mark selected junction read.
63030         DO 270 J=1,NJUNC
63031           IF (IJUNC(J,0).EQ.IJU) IJUNC(J,4)=1
63032   270   CONTINUE
63033 C...Determine junction type
63034         ITJUNC = MOD(K(IJU,4)/MSTU(5),MSTU(5))
63035 C...Type 1 and 2 junctions: ~chi -> q q q, ~chi -> qbar,qbar,qbar
63036 C...Type 3 and 4 junctions: ~qbar -> q q , ~q -> qbar qbar
63037 C...Type 5 and 6 junctions: ~g -> q q q, ~g -> qbar qbar qbar
63038         IF (ITJUNC.GE.1.AND.ITJUNC.LE.6) THEN
63039           IHK=0
63040   280     IHK=IHK+1
63041 C...Find which quarks belong to given junction.
63042           IHF=0
63043           DO 290 IPC=1,NPIECE
63044             IF (IPIECE(IPC,4).EQ.IJU) THEN
63045               IHF=IHF+1
63046               IF (IHF.EQ.IHK) IEND=IPIECE(IPC,3)
63047             ENDIF
63048             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJU) IEND=IPIECE(IPC,3)
63049   290     CONTINUE
63050 C...IHK = 3 is special. Either normal string piece, or j-j string.
63051           IF(IHK.EQ.3) THEN
63052             IF (MREV.NE.1) THEN
63053               DO 300 IPC=1,NPIECE
63054 C...If there is a j-j string starting on the present junction which has
63055 C...zero length, insert next junction immediately.
63056                 IF (IPIECE(IPC,0).EQ.IJU.AND.K(IPIECE(IPC,4),1)
63057      &          .EQ.42.AND.IPIECE(IPC,1)-1-IPIECE(IPC,2).EQ.0) THEN
63058                   IJJSTR = 1
63059                   GOTO 340
63060                 ENDIF
63061   300         CONTINUE
63062               MREV = 1
63063 C...If MREV is 1 and IHK is 3 we are finished with this system.
63064             ELSE
63065               MREV=0
63066               GOTO 260
63067             ENDIF
63068           ENDIF
63069  
63070 C...If we've gotten this far, then either IHK < 3, or
63071 C...an interjunction string exists, or just a third normal string.
63072           IJUNC(IJUCNT,IHK)=0
63073           IJJSTR = 0
63074 C..Order pieces belonging to this junction. Also look for j-j.
63075           DO 310 IPC=1,NPIECE
63076             IF (IPIECE(IPC,3).EQ.IEND) IJUNC(IJUCNT,IHK)=IPC
63077             IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJUNC(IJUCNT,0)
63078      &      .AND.K(IPIECE(IPC,4),1).EQ.42) THEN
63079               IJUNC(IJUCNT,IHK)=IPC
63080               IJJSTR = 1
63081               MREV = 0
63082             ENDIF
63083   310     CONTINUE
63084 C...Copy back chains in proper order. MREV=0/1 : descending/ascending
63085           IPC=IJUNC(IJUCNT,IHK)
63086 C...Temporary solution to cover for bug.
63087           IF(IPC.LE.0) THEN
63088             CALL PYERRM(12,'(PYPREP:) fails to hook up junctions')
63089             MINT(51)=1
63090             RETURN
63091           ENDIF
63092           DO 330 ICP=IPIECE(IPC,1+MREV),IPIECE(IPC,2-MREV),1-2*MREV
63093             I1=I1+1
63094             DO 320 J=1,5
63095               K(I1,J)=K(MSTU(4)-ICP,J)
63096               P(I1,J)=P(MSTU(4)-ICP,J)
63097               V(I1,J)=V(MSTU(4)-ICP,J)
63098   320       CONTINUE
63099   330     CONTINUE
63100           K(I1,1)=2
63101 C...Mark last quark.
63102           IF (MREV.EQ.1.AND.IHK.GE.2) K(I1,1)=1
63103 C...Do not insert junctions at wrong places.
63104           IF(IHK.LT.2.OR.MREV.NE.0) GOTO 360
63105 C...Insert junction.
63106   340     IJUS = IJU
63107           IF (IHK.EQ.3) THEN
63108 C...Shift to end junction if a j-j string has been processed.
63109             IF (IJJSTR.NE.0) IJUS = IPIECE(IPC,4)
63110             MREV= 1
63111           ENDIF
63112           I1=I1+1
63113           DO 350 J=1,5
63114             K(I1,J)=0
63115             P(I1,J)=0.
63116             V(I1,J)=0.
63117   350     CONTINUE
63118           K(I1,1)=41
63119           K(IJUS,1)=K(IJUS,1)+10
63120           K(I1,2)=K(IJUS,2)
63121           K(I1,3)=IJUS
63122   360     IF (IHK.LT.3) GOTO 280
63123         ELSE
63124           CALL PYERRM(12,'(PYPREP:) Unknown junction type')
63125           MINT(51)=1
63126           RETURN
63127         ENDIF
63128         IF (IJUCNT.NE.NJUNC) GOTO 260
63129       ENDIF
63130       N=I1
63131  
63132 C...Rearrange three strings from junction, e.g. in case one has been
63133 C...shortened by shower, so the last is the largest-energy one.
63134       IF(NJUNC.GE.1) THEN
63135 C...Find systems with exactly one junction.
63136         MJUN1=0
63137         NBEG=NOLD+1
63138         DO 470 I=NOLD+1,N
63139           IF(K(I,1).NE.1.AND.K(I,1).NE.41) THEN
63140           ELSEIF(K(I,1).EQ.41) THEN
63141             MJUN1=MJUN1+1
63142           ELSEIF(K(I,1).EQ.1.AND.MJUN1.NE.1) THEN
63143             MJUN1=0
63144             NBEG=I+1
63145           ELSE
63146             NEND=I
63147 C...Sum up energy-momentum in each junction string.
63148             DO 370 J=1,5
63149               PJU(1,J)=0D0
63150               PJU(2,J)=0D0
63151               PJU(3,J)=0D0
63152   370       CONTINUE
63153             NJU=0
63154             DO 390 I1=NBEG,NEND
63155               IF(K(I1,2).NE.21) THEN
63156                 NJU=NJU+1
63157                 IJUR(NJU)=I1
63158               ENDIF
63159               DO 380 J=1,5
63160                 PJU(MIN(NJU,3),J)=PJU(MIN(NJU,3),J)+P(I1,J)
63161   380         CONTINUE
63162   390       CONTINUE
63163 C...Find which of them has highest energy (minus mass) in rest frame.
63164             DO 400 J=1,5
63165               PJU(4,J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
63166   400       CONTINUE
63167             PMJU=SQRT(MAX(0D0,PJU(4,4)**2-PJU(4,1)**2-PJU(4,2)**2-
63168      &      PJU(4,3)**2))
63169             DO 410 I2=1,3
63170               PJU(I2,6)=(PJU(4,4)*PJU(I2,4)-PJU(4,1)*PJU(I2,1)-
63171      &        PJU(4,2)*PJU(I2,2)-PJU(4,3)*PJU(I2,3))/PMJU-PJU(I2,5)
63172   410       CONTINUE
63173             IF(PJU(3,6).LT.MIN(PJU(1,6),PJU(2,6))) THEN
63174 C...Decide how to rearrange so that new last has highest energy.
63175               IF(PJU(1,6).LT.PJU(2,6)) THEN
63176                 IRNG(1,1)=IJUR(1)
63177                 IRNG(1,2)=IJUR(2)-1
63178                 IRNG(2,1)=IJUR(4)
63179                 IRNG(2,2)=IJUR(3)+1
63180                 IRNG(4,1)=IJUR(3)-1
63181                 IRNG(4,2)=IJUR(2)
63182               ELSE
63183                 IRNG(1,1)=IJUR(4)
63184                 IRNG(1,2)=IJUR(3)+1
63185                 IRNG(2,1)=IJUR(2)
63186                 IRNG(2,2)=IJUR(3)-1
63187                 IRNG(4,1)=IJUR(2)-1
63188                 IRNG(4,2)=IJUR(1)
63189               ENDIF
63190               IRNG(3,1)=IJUR(3)
63191               IRNG(3,2)=IJUR(3)
63192 C...Copy in correct order below bottom of current event record.
63193               I2=N
63194               DO 440 II=1,4
63195                 DO 430 I1=IRNG(II,1),IRNG(II,2),
63196      &          ISIGN(1,IRNG(II,2)-IRNG(II,1))
63197                   I2=I2+1
63198                   IF(I2.GE.MSTU(4)-MSTU32-5) THEN
63199                     CALL PYERRM(11,
63200      &              '(PYPREP:) no more memory left in PYJETS')
63201                     MINT(51)=1
63202                     MSTU(24)=1
63203                     RETURN
63204                   ENDIF
63205                   DO 420 J=1,5
63206                     K(I2,J)=K(I1,J)
63207                     P(I2,J)=P(I1,J)
63208                     V(I2,J)=V(I1,J)
63209   420             CONTINUE
63210                   IF(K(I2,1).EQ.1) K(I2,1)=2
63211   430           CONTINUE
63212   440         CONTINUE
63213               K(I2,1)=1
63214 C...Copy back up, overwriting but now in correct order.
63215               DO 460 I1=NBEG,NEND
63216                 I2=I1-NBEG+N+1
63217                 DO 450 J=1,5
63218                   K(I1,J)=K(I2,J)
63219                   P(I1,J)=P(I2,J)
63220                   V(I1,J)=V(I2,J)
63221   450           CONTINUE
63222   460         CONTINUE
63223             ENDIF
63224             MJUN1=0
63225             NBEG=I+1
63226           ENDIF
63227   470   CONTINUE
63228  
63229 C...Check whether q-q-j-j-qbar-qbar systems should be collapsed
63230 C...to two q-qbar systems.
63231 C...(MSTJ(19)=1 forces q-q-j-j-qbar-qbar.)
63232         IF (MSTJ(19).NE.1) THEN
63233           MJUN1  = 0
63234           JJGLUE = 0
63235           NBEG   = NOLD+1
63236 C...Force collapse when MSTJ(19)=2.
63237           IF (MSTJ(19).EQ.2) THEN
63238             DELMJJ = 1D9
63239             DELMQQ = 0D0
63240           ENDIF
63241 C...Find systems with exactly two junctions.
63242           DO 700 I=NOLD+1,N
63243 C...Count junctions
63244             IF (K(I,1).EQ.41) THEN
63245               MJUN1 = MJUN1+1
63246 C...Check for interjunction gluons
63247               IF (MJUN1.EQ.2.AND.K(I-1,1).NE.41) THEN
63248                 JJGLUE = 1
63249               ENDIF
63250             ELSEIF(K(I,1).EQ.1.AND.(MJUN1.NE.2)) THEN
63251 C...If end of system reached with either zero or one junction, restart
63252 C...with next system.
63253               MJUN1  = 0
63254               JJGLUE = 0
63255               NBEG   = I+1
63256             ELSEIF(K(I,1).EQ.1) THEN
63257 C...If end of system reached with exactly two junctions, compute string
63258 C...length measure for the (q-q-j-j-qbar-qbar) topology and compare with
63259 C...length measure for the (q-qbar)(q-qbar) topology.
63260               NEND=I
63261 C...Loop down through chain.
63262               ISID=0
63263               DO 480 I1=NBEG,NEND
63264 C...Store string piece division locations in event record
63265                 IF (K(I1,2).NE.21) THEN
63266                   ISID       = ISID+1
63267                   IJCP(ISID) = I1
63268                 ENDIF
63269   480         CONTINUE
63270 C...Randomly choose between (1,3)(2,4) and (1,4)(2,3) topologies.
63271               ISW=0
63272               IF (PYR(0).LT.0.5D0) ISW=1
63273 C...Randomly choose which qqbar string gets the jj gluons.
63274               IGS=1
63275               IF (PYR(0).GT.0.5D0) IGS=2
63276 C...Only compute string lengths when no topology forced.
63277               IF (MSTJ(19).EQ.0) THEN
63278 C...Repeat following for each junction
63279                 DO 570 IJU=1,2
63280 C...Initialize iterative procedure for finding JRF
63281                   IJRFIT=0
63282                   DO 490 IX=1,3
63283                     TJUOLD(IX)=0D0
63284   490             CONTINUE
63285                   TJUOLD(4)=1D0
63286 C...Start iteration. Sum up momenta in string pieces
63287   500             DO 540 IJS=1,3
63288 C...JD=-1 for first junction, +1 for second junction.
63289 C...Find out where piece starts and ends and which direction to go.
63290                     JD=2*IJU-3
63291                     IF (IJS.LE.2) THEN
63292                       IA = IJCP((IJU-1)*7 - JD*(IJS+1)) + JD
63293                       IB = IJCP((IJU-1)*7 - JD*IJS)
63294                     ELSEIF (IJS.EQ.3) THEN
63295                       JD =-JD
63296                       IA = IJCP((IJU-1)*7 + JD*(IJS)) + JD
63297                       IB = IJCP((IJU-1)*7 + JD*(IJS+3))
63298                     ENDIF
63299 C...Initialize junction pull 4-vector.
63300                     DO 510 J=1,5
63301                       PUL(IJS,J)=0D0
63302   510               CONTINUE
63303 C...Initialize weight
63304                     PWT = 0D0
63305                     PWTOLD = 0D0
63306 C...Sum up (weighted) momenta along each string piece
63307                     DO 530 ISP=IA,IB,JD
63308 C...If present parton not last in chain
63309                       IF (ISP.NE.IA.AND.ISP.NE.IB) THEN
63310 C...If last parton was a junction, store present weight
63311                         IF (K(ISP-JD,2).EQ.88) THEN
63312                           PWTOLD = PWT
63313 C...If last parton was a quark, reset to stored weight.
63314                         ELSEIF (K(ISP-JD,2).NE.21) THEN
63315                           PWT = PWTOLD
63316                         ENDIF
63317                       ENDIF
63318 C...Skip next parton if weight already large
63319                       IF (PWT.GT.10D0) GOTO 530
63320 C...Compute momentum in TJUOLD frame:
63321                       TDP=TJUOLD(1)*P(ISP,1)+TJUOLD(2)*P(ISP,2)+TJUOLD(3
63322      &                     )*P(ISP,3)
63323                       BFC=TDP/(1D0+TJUOLD(4))+P(ISP,4)
63324                       DO 520 J=1,3
63325                         TMP=P(ISP,J)+TJUOLD(J)*BFC
63326                         PUL(IJS,J)=PUL(IJS,J)+TMP*EXP(-PWT)
63327   520                 CONTINUE
63328 C...Boosted energy
63329                       TMP=TJUOLD(4)*P(ISP,4)+TDP
63330                       PUL(IJS,4)=PUL(IJS,J)+TMP*EXP(-PWT)
63331 C...Update weight
63332                       PWT=PWT+TMP/PARJ(48)
63333 C...Put |p| rather than m in 5th slot
63334                       PUL(IJS,5)=SQRT(PUL(IJS,1)**2+PUL(IJS,2)**2
63335      &                     +PUL(IJS,3)**2)
63336   530               CONTINUE
63337   540             CONTINUE
63338 C...Compute boost
63339                   IJRFIT=IJRFIT+1
63340                   CALL PYJURF(PUL,T)
63341 C...Combine new boost (T) with old boost (TJUOLD)
63342                   TMP=T(1)*TJUOLD(1)+T(2)*TJUOLD(2)+T(3)*TJUOLD(3)
63343                   DO 550 IX=1,3
63344                     TJUOLD(IX)=T(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+T(4
63345      &                   ))
63346   550             CONTINUE
63347                   TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)
63348      &                 **2)
63349 C...If last boost small, accept JRF, else iterate.
63350 C...Also prevent possibility of infinite loop.
63351                   IF (ABS((T(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
63352      &                 IJRFIT.LT.MSTJ(18))THEN
63353                     GOTO 500
63354                   ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
63355                     CALL PYERRM(1,'(PYPREP:) failed to converge on JRF')
63356                   ENDIF
63357 C...Store final boost, with change of sign since TJJ motion vector.
63358                   DO 560 IX=1,3
63359                     TJJ(IJU,IX)=-TJUOLD(IX)
63360   560             CONTINUE
63361                   TJJ(IJU,4)=SQRT(1D0+TJJ(IJU,1)**2+TJJ(IJU,2)**2
63362      &                 +TJJ(IJU,3)**2)
63363   570           CONTINUE
63364 C...String length measure for (q-qbar)(q-qbar) topology.
63365 C...Note only momenta of nearest partons used (since rest of system
63366 C...identical).
63367                 IF (JJGLUE.EQ.0) THEN
63368                   DELMQQ=4D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)*FOUR(IJCP(3)
63369      &                 -1,IJCP(5-ISW)+1)
63370                 ELSE
63371 C...Put jj gluons on selected string (IGS selected randomly above).
63372                   IF (IGS.EQ.1) THEN
63373                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
63374      &                   ,IJCP(4+ISW)+1)*FOUR(IJCP(3)-1,IJCP(5-ISW)+1)
63375                   ELSE
63376                     DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)
63377      &                   *FOUR(IJCP(3)-1,IJCP(4)-1)*FOUR(IJCP(3)+1
63378      &                   ,IJCP(5-ISW)+1)
63379                   ENDIF
63380                 ENDIF
63381 C...String length measure for q-q-j-j-q-q topology.
63382                 T1G1=0D0
63383                 T2G2=0D0
63384                 T1T2=0D0
63385                 T1P1=0D0
63386                 T1P2=0D0
63387                 T2P3=0D0
63388                 T2P4=0D0
63389                 ISGN=-1
63390 C...Note only momenta of nearest partons used (since rest of system
63391 C...identical).
63392                 DO 580 IX=1,4
63393                   IF (IX.EQ.4) ISGN=1
63394                   T1P1=T1P1+ISGN*TJJ(1,IX)*P(IJCP(2)-1,IX)
63395                   T1P2=T1P2+ISGN*TJJ(1,IX)*P(IJCP(3)-1,IX)
63396                   T2P3=T2P3+ISGN*TJJ(2,IX)*P(IJCP(4)+1,IX)
63397                   T2P4=T2P4+ISGN*TJJ(2,IX)*P(IJCP(5)+1,IX)
63398                   IF (JJGLUE.EQ.0) THEN
63399 C...Junction motion vector dot product gives length when inter-junction
63400 C...gluons absent.
63401                     T1T2=T1T2+ISGN*TJJ(1,IX)*TJJ(2,IX)
63402                   ELSE
63403 C...Junction motion vector dot products with gluon momenta give length
63404 C...when inter-junction gluons present.
63405                     T1G1=T1G1+ISGN*TJJ(1,IX)*P(IJCP(3)+1,IX)
63406                     T2G2=T2G2+ISGN*TJJ(2,IX)*P(IJCP(4)-1,IX)
63407                   ENDIF
63408   580           CONTINUE
63409                 DELMJJ=16D0*T1P1*T1P2*T2P3*T2P4
63410                 IF (JJGLUE.EQ.0) THEN
63411                   DELMJJ=DELMJJ*(T1T2+SQRT(T1T2**2-1))
63412                 ELSE
63413                   DELMJJ=DELMJJ*4D0*T1G1*T2G2
63414                 ENDIF
63415               ENDIF
63416 C...If delmjj > delmqq collapse string system to q-qbar q-qbar
63417 C...(Always the case for MSTJ(19)=2 due to initialization above)
63418               IF (DELMJJ.GT.DELMQQ) THEN
63419 C...Put new system at end of event record
63420                 NCOP=N
63421                 DO 650 IST=1,2
63422                   DO 600 ICOP=IJCP(IST),IJCP(IST+1)-1
63423                     NCOP=NCOP+1
63424                     DO 590 IX=1,5
63425                       P(NCOP,IX)=P(ICOP,IX)
63426                       K(NCOP,IX)=K(ICOP,IX)
63427   590               CONTINUE
63428   600             CONTINUE
63429                   IF (JJGLUE.NE.0.AND.IST.EQ.IGS) THEN
63430 C...Insert inter-junction gluon string piece (reversed)
63431                     NJJGL=0
63432                     DO 620 ICOP=IJCP(4)-1,IJCP(3)+1,-1
63433                       NJJGL=NJJGL+1
63434                       NCOP=NCOP+1
63435                       DO 610 IX=1,5
63436                         P(NCOP,IX)=P(ICOP,IX)
63437                         K(NCOP,IX)=K(ICOP,IX)
63438   610                 CONTINUE
63439   620               CONTINUE
63440                     ENDIF
63441                   IFC=-2*IST+3
63442                   DO 640 ICOP=IJCP(IST+IFC*ISW+3)+1,IJCP(IST+IFC*ISW+4)
63443                     NCOP=NCOP+1
63444                     DO 630 IX=1,5
63445                       P(NCOP,IX)=P(ICOP,IX)
63446                       K(NCOP,IX)=K(ICOP,IX)
63447   630               CONTINUE
63448   640             CONTINUE
63449                   K(NCOP,1)=1
63450   650           CONTINUE
63451 C...Copy system back in right order
63452                 DO 670 ICOP=NBEG,NEND-2
63453                   DO 660 IX=1,5
63454                     P(ICOP,IX)=P(N+ICOP-NBEG+1,IX)
63455                     K(ICOP,IX)=K(N+ICOP-NBEG+1,IX)
63456   660             CONTINUE
63457   670           CONTINUE
63458 C...Shift down rest of event record
63459                 DO 690 ICOP=NEND+1,N
63460                   DO 680 IX=1,5
63461                     P(ICOP-2,IX)=P(ICOP,IX)
63462                     K(ICOP-2,IX)=K(ICOP,IX)
63463   680             CONTINUE
63464   690             CONTINUE
63465 C...Update length of event record.
63466                 N=N-2
63467               ENDIF
63468               MJUN1=0
63469               NBEG=I+1
63470             ENDIF
63471   700     CONTINUE
63472         ENDIF
63473       ENDIF
63474  
63475 C...Done if no checks on small-mass systems.
63476       IF(MSTJ(14).LT.0) RETURN
63477       IF(MSTJ(14).EQ.0) GOTO 1140
63478  
63479 C...Find lowest-mass colour singlet jet system.
63480       NS=N
63481   710 NSIN=N-NS
63482       PDMIN=1D0+PARJ(32)
63483       IC=0
63484       DO 770 I=MAX(1,IP),N
63485         IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN
63486         ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN
63487           NSIN=NSIN+1
63488           IC=I
63489           DO 720 J=1,4
63490             DPS(J)=P(I,J)
63491   720     CONTINUE
63492           MSTJ(93)=1
63493           DPS(5)=PYMASS(K(I,2))
63494         ELSEIF(K(I,1).EQ.2.AND.K(I,2).NE.21) THEN
63495           DO 730 J=1,4
63496             DPS(J)=DPS(J)+P(I,J)
63497   730     CONTINUE
63498           MSTJ(93)=1
63499           DPS(5)=DPS(5)+PYMASS(K(I,2))
63500         ELSEIF(K(I,1).EQ.2) THEN
63501           DO 740 J=1,4
63502             DPS(J)=DPS(J)+P(I,J)
63503   740     CONTINUE
63504         ELSEIF(IC.NE.0.AND.KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
63505           DO 750 J=1,4
63506             DPS(J)=DPS(J)+P(I,J)
63507   750     CONTINUE
63508           MSTJ(93)=1
63509           DPS(5)=DPS(5)+PYMASS(K(I,2))
63510           PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-
63511      &    DPS(5)
63512           IF(PD.LT.PDMIN) THEN
63513             PDMIN=PD
63514             DO 760 J=1,5
63515               DPC(J)=DPS(J)
63516   760       CONTINUE
63517             IC1=IC
63518             IC2=I
63519           ENDIF
63520           IC=0
63521         ELSE
63522           NSIN=NSIN+1
63523         ENDIF
63524   770 CONTINUE
63525  
63526 C...Done if lowest-mass system above threshold for string frag.
63527       IF(PDMIN.GE.PARJ(32)) GOTO 1140
63528  
63529 C...Fill small-mass system as cluster.
63530       NSAV=N
63531       PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2))
63532       K(N+1,1)=11
63533       K(N+1,2)=91
63534       K(N+1,3)=IC1
63535       P(N+1,1)=DPC(1)
63536       P(N+1,2)=DPC(2)
63537       P(N+1,3)=DPC(3)
63538       P(N+1,4)=DPC(4)
63539       P(N+1,5)=PECM
63540  
63541 C...Set up history, assuming cluster -> 2 hadrons.
63542       NBODY=2
63543       K(N+1,4)=N+2
63544       K(N+1,5)=N+3
63545       K(N+2,1)=1
63546       K(N+3,1)=1
63547       IF(MSTU(16).NE.2) THEN
63548         K(N+2,3)=N+1
63549         K(N+3,3)=N+1
63550       ELSE
63551         K(N+2,3)=IC1
63552         K(N+3,3)=IC2
63553       ENDIF
63554       K(N+2,4)=0
63555       K(N+3,4)=0
63556       K(N+2,5)=0
63557       K(N+3,5)=0
63558       V(N+1,5)=0D0
63559       V(N+2,5)=0D0
63560       V(N+3,5)=0D0
63561  
63562 C...Find total flavour content - complicated by presence of junctions.
63563       NQ=0
63564       NDIQ=0
63565       DO 780 I=IC1,IC2
63566         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.K(I,2).NE.21) THEN
63567           NQ=NQ+1
63568           KFQ(NQ)=K(I,2)
63569           IF(IABS(K(I,2)).GT.1000) NDIQ=NDIQ+1
63570         ENDIF
63571   780 CONTINUE
63572  
63573 C...If several diquarks, split up one to give even number of flavours.
63574       IF(NQ.EQ.3.AND.NDIQ.GE.2) THEN
63575         I1=3
63576         IF(IABS(KFQ(3)).LT.1000) I1=1
63577         KFQ(4)=ISIGN(MOD(IABS(KFQ(I1))/100,10),KFQ(I1))
63578         KFQ(I1)=KFQ(I1)/1000
63579         NQ=4
63580         NDIQ=NDIQ-1
63581       ENDIF
63582  
63583 C...If four quark ends, join two to diquark.
63584       IF(NQ.EQ.4.AND.NDIQ.EQ.0) THEN
63585         I1=1
63586         I2=2
63587         IF(KFQ(I1)*KFQ(I2).LT.0) I2=3
63588         IF(I2.EQ.3.AND.KFQ(I1)*KFQ(I2).LT.0) I2=4
63589         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
63590         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
63591         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
63592      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
63593         KFQ(I2)=KFQ(4)
63594         NQ=3
63595         NDIQ=1
63596       ENDIF
63597  
63598 C...If two quark ends, plus quark or diquark, join quarks to diquark.
63599       IF(NQ.EQ.3) THEN
63600         I1=1
63601         I2=2
63602         IF(IABS(KFQ(I1)).GT.1000) I1=3
63603         IF(IABS(KFQ(I2)).GT.1000) I2=3
63604         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
63605         IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3
63606         KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+
63607      &  100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1))
63608         KFQ(I2)=KFQ(3)
63609         NQ=2
63610         NDIQ=NDIQ+1
63611       ENDIF
63612  
63613 C...Form two particles from flavours of lowest-mass system, if feasible.
63614       NTRY = 0
63615   790 NTRY = NTRY + 1
63616  
63617 C...Open string with two specified endpoint flavours.
63618       IF(NQ.EQ.2) THEN
63619         KC1=PYCOMP(KFQ(1))
63620         KC2=PYCOMP(KFQ(2))
63621         IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 1140
63622         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
63623         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
63624         IF(KQ1+KQ2.NE.0) GOTO 1140
63625 C...Start with qq, if there is one. Only allow for rank 1 popcorn meson
63626   800   K1=KFQ(1)
63627         IF(IABS(KFQ(2)).GT.1000) K1=KFQ(2)
63628         MSTU(125)=0
63629         CALL PYDCYK(K1,0,KFLN,K(N+2,2))
63630         CALL PYDCYK(KFQ(1)+KFQ(2)-K1,-KFLN,KFLDMP,K(N+3,2))
63631         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 800
63632  
63633 C...Open string with four specified flavours.
63634       ELSEIF(NQ.EQ.4) THEN
63635         KC1=PYCOMP(KFQ(1))
63636         KC2=PYCOMP(KFQ(2))
63637         KC3=PYCOMP(KFQ(3))
63638         KC4=PYCOMP(KFQ(4))
63639         IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) GOTO 1140
63640         KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1))
63641         KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2))
63642         KQ3=KCHG(KC3,2)*ISIGN(1,KFQ(3))
63643         KQ4=KCHG(KC4,2)*ISIGN(1,KFQ(4))
63644         IF(KQ1+KQ2+KQ3+KQ4.NE.0) GOTO 1140
63645 C...Combine flavours pairwise to form two hadrons.
63646   810   I1=1
63647         I2=2
63648         IF(KQ1*KQ2.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
63649      &  IABS(KFQ(2)).GT.1000)) I2=3
63650         IF(I2.EQ.3.AND.(KQ1*KQ3.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND.
63651      &  IABS(KFQ(3)).GT.1000))) I2=4
63652         I3=3
63653         IF(I2.EQ.3) I3=2
63654         I4=10-I1-I2-I3
63655         CALL PYDCYK(KFQ(I1),KFQ(I2),KFLDMP,K(N+2,2))
63656         CALL PYDCYK(KFQ(I3),KFQ(I4),KFLDMP,K(N+3,2))
63657         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 810
63658  
63659 C...Closed string.
63660       ELSE
63661         IF(IABS(K(IC2,2)).NE.21) GOTO 1140
63662 C...No room for popcorn mesons in closed string -> 2 hadrons.
63663         MSTU(125)=0
63664   820   CALL PYDCYK(1+INT((2D0+PARJ(2))*PYR(0)),0,KFLN,KFDMP)
63665         CALL PYDCYK(KFLN,0,KFLM,K(N+2,2))
63666         CALL PYDCYK(-KFLN,-KFLM,KFLDMP,K(N+3,2))
63667         IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 820
63668       ENDIF
63669       P(N+2,5)=PYMASS(K(N+2,2))
63670       P(N+3,5)=PYMASS(K(N+3,2))
63671  
63672 C...If it does not work: try again (a number of times), give up (if no
63673 C...place to shuffle momentum or too many flavours), or form one hadron.
63674       IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) THEN
63675         IF(NTRY.LT.MSTJ(17).OR.(NQ.EQ.4.AND.NTRY.LT.5*MSTJ(17))) THEN
63676           GOTO 790
63677         ELSEIF(NSIN.EQ.1.OR.NQ.EQ.4) THEN
63678           GOTO 1140
63679         ELSE
63680           GOTO 890
63681         END IF
63682       END IF
63683  
63684 C...Perform two-particle decay of jet system.
63685 C...First step: find reference axis in decaying system rest frame.
63686 C...(Borrow slot N+2 for temporary direction.)
63687       DO 830 J=1,4
63688         P(N+2,J)=P(IC1,J)
63689   830 CONTINUE
63690       DO 850 I=IC1+1,IC2-1
63691         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
63692      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
63693           FRAC1=FOUR(IC2,I)/(FOUR(IC1,I)+FOUR(IC2,I))
63694           DO 840 J=1,4
63695             P(N+2,J)=P(N+2,J)+FRAC1*P(I,J)
63696   840     CONTINUE
63697         ENDIF
63698   850 CONTINUE
63699       CALL PYROBO(N+2,N+2,0D0,0D0,-DPC(1)/DPC(4),-DPC(2)/DPC(4),
63700      &-DPC(3)/DPC(4))
63701       THE1=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2))
63702       PHI1=PYANGL(P(N+2,1),P(N+2,2))
63703  
63704 C...Second step: generate isotropic/anisotropic decay.
63705       PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2-
63706      &(P(N+2,5)-P(N+3,5))**2))/(2D0*PECM)
63707   860 UE(3)=PYR(0)
63708       IF(PARJ(21).LE.0.01D0) UE(3)=1D0
63709       PT2=(1D0-UE(3)**2)*PA**2
63710       IF(MSTJ(16).LE.0) THEN
63711         PREV=0.5D0
63712       ELSE
63713         IF(EXP(-PT2/(2D0*MAX(0.01D0,PARJ(21))**2)).LT.PYR(0)) GOTO 860
63714         PR1=P(N+2,5)**2+PT2
63715         PR2=P(N+3,5)**2+PT2
63716         ALAMBD=SQRT(MAX(0D0,(PECM**2-PR1-PR2)**2-4D0*PR1*PR2))
63717         PREVCF=PARJ(42)
63718         IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
63719         PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*ALAMBD*PARJ(40))))
63720       ENDIF
63721       IF(PYR(0).LT.PREV) UE(3)=-UE(3)
63722       PHI=PARU(2)*PYR(0)
63723       UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
63724       UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
63725       DO 870 J=1,3
63726         P(N+2,J)=PA*UE(J)
63727         P(N+3,J)=-PA*UE(J)
63728   870 CONTINUE
63729       P(N+2,4)=SQRT(PA**2+P(N+2,5)**2)
63730       P(N+3,4)=SQRT(PA**2+P(N+3,5)**2)
63731  
63732 C...Third step: move back to event frame and set production vertex.
63733       CALL PYROBO(N+2,N+3,THE1,PHI1,DPC(1)/DPC(4),DPC(2)/DPC(4),
63734      &DPC(3)/DPC(4))
63735       DO 880 J=1,4
63736         V(N+1,J)=V(IC1,J)
63737         V(N+2,J)=V(IC1,J)
63738         V(N+3,J)=V(IC2,J)
63739   880 CONTINUE
63740       N=N+3
63741       GOTO 1120
63742  
63743 C...Else form one particle, if possible.
63744   890 NBODY=1
63745       K(N+1,5)=N+2
63746       DO 900 J=1,4
63747         V(N+1,J)=V(IC1,J)
63748         V(N+2,J)=V(IC1,J)
63749   900 CONTINUE
63750  
63751 C...Select hadron flavour from available quark flavours.
63752   910 IF(NQ.EQ.2.AND.IABS(KFQ(1)).GT.100.AND.IABS(KFQ(2)).GT.100) THEN
63753         GOTO 1140
63754       ELSEIF(NQ.EQ.2) THEN
63755         CALL PYKFDI(KFQ(1),KFQ(2),KFLDMP,K(N+2,2))
63756       ELSE
63757         KFLN=1+INT((2D0+PARJ(2))*PYR(0))
63758         CALL PYKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2))
63759       ENDIF
63760       IF(K(N+2,2).EQ.0) GOTO 910
63761       P(N+2,5)=PYMASS(K(N+2,2))
63762  
63763 C...Use old algorithm for E/p conservation? (EN)
63764       IF (MSTJ(16).LE.0) GOTO 1080
63765  
63766 C...Find the string piece closest to the cluster by a loop
63767 C...over the undecayed partons not in present cluster. (EN)
63768       DGLOMI=1D30
63769       IBEG=0
63770       I0=0
63771       NJUNC=0
63772       DO 940 I1=MAX(1,IP),N-1
63773         IF(K(I1,1).EQ.1) NJUNC=0
63774         IF(K(I1,1).EQ.41) NJUNC=NJUNC+1
63775         IF(K(I1,1).EQ.41) GOTO 940
63776         IF(I1.GE.IC1-1.AND.I1.LE.IC2) THEN
63777           I0=0
63778         ELSEIF(K(I1,1).EQ.2) THEN
63779           IF(I0.EQ.0) I0=I1
63780           I2=I1
63781   920     I2=I2+1
63782           IF(K(I2,1).EQ.41) GOTO 940
63783           IF(K(I2,1).GT.10) GOTO 920
63784           IF(KCHG(PYCOMP(K(I2,2)),2).EQ.0) GOTO 920
63785           IF(K(I1,2).EQ.21.AND.K(I2,2).NE.21.AND.K(I2,1).NE.1.AND.
63786      &    NJUNC.EQ.0) GOTO 940
63787           IF(K(I1,2).NE.21.AND.K(I2,2).EQ.21.AND.NJUNC.NE.0) GOTO 940
63788           IF(K(I1,2).NE.21.AND.K(I2,2).NE.21.AND.(I1.GT.I0.OR.
63789      &    K(I2,1).NE.1)) GOTO 940
63790  
63791 C...Define velocity vectors e1, e2, ecl and differences e3, e4.
63792           DO 930 J=1,3
63793             E1(J)=P(I1,J)/P(I1,4)
63794             E2(J)=P(I2,J)/P(I2,4)
63795             ECL(J)=P(N+1,J)/P(N+1,4)
63796             E3(J)=E2(J)-E1(J)
63797             E4(J)=ECL(J)-E1(J)
63798   930     CONTINUE
63799  
63800 C...Calculate minimal D=(e4-alpha*e3)**2 for 0<alpha<1.
63801           E3S=E3(1)**2+E3(2)**2+E3(3)**2
63802           E4S=E4(1)**2+E4(2)**2+E4(3)**2
63803           E34=E3(1)*E4(1)+E3(2)*E4(2)+E3(3)*E4(3)
63804           IF(E34.LE.0D0) THEN
63805             DDMIN=E4S
63806           ELSEIF(E34.LT.E3S) THEN
63807             DDMIN=E4S-E34**2/E3S
63808           ELSE
63809             DDMIN=E4S-2D0*E34+E3S
63810           ENDIF
63811  
63812 C...Is this the smallest so far?
63813           IF(DDMIN.LT.DGLOMI) THEN
63814             DGLOMI=DDMIN
63815             IBEG=I0
63816             IPCS=I1
63817           ENDIF
63818         ELSEIF(K(I1,1).EQ.1.AND.KCHG(PYCOMP(K(I1,2)),2).NE.0) THEN
63819           I0=0
63820         ENDIF
63821   940 CONTINUE
63822  
63823 C... Check if there are any strings to connect to the new gluon. (EN)
63824       IF (IBEG.EQ.0) GOTO 1080
63825  
63826 C...Delta_m = m_clus - m_had > 0: emit a 'gluon' (EN)
63827       IF (P(N+1,5).GE.P(N+2,5)) THEN
63828  
63829 C...Construct 'gluon' that is needed to put hadron on the mass shell.
63830         FRAC=P(N+2,5)/P(N+1,5)
63831         DO 950 J=1,5
63832           P(N+2,J)=FRAC*P(N+1,J)
63833           PG(J)=(1D0-FRAC)*P(N+1,J)
63834   950   CONTINUE
63835  
63836 C... Copy string with new gluon put in.
63837         N=N+2
63838         I=IBEG-1
63839   960   I=I+1
63840         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 960
63841         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 960
63842         N=N+1
63843         DO 970 J=1,5
63844           K(N,J)=K(I,J)
63845           P(N,J)=P(I,J)
63846           V(N,J)=V(I,J)
63847   970   CONTINUE
63848         K(I,1)=K(I,1)+10
63849         K(I,4)=N
63850         K(I,5)=N
63851         K(N,3)=I
63852         IF(I.EQ.IPCS) THEN
63853           N=N+1
63854           DO 980 J=1,5
63855             K(N,J)=K(N-1,J)
63856             P(N,J)=PG(J)
63857             V(N,J)=V(N-1,J)
63858   980     CONTINUE
63859           K(N,2)=21
63860           K(N,3)=NSAV+1
63861         ENDIF
63862         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 960
63863         GOTO 1120
63864  
63865 C...Delta_m = m_clus - m_had < 0: have to absorb a 'gluon' instead,
63866 C...from string piece endpoints.
63867       ELSE
63868  
63869 C...Begin by copying string that should give energy to cluster.
63870         N=N+2
63871         I=IBEG-1
63872   990   I=I+1
63873         IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 990
63874         IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 990
63875         N=N+1
63876         DO 1000 J=1,5
63877           K(N,J)=K(I,J)
63878           P(N,J)=P(I,J)
63879           V(N,J)=V(I,J)
63880  1000   CONTINUE
63881         K(I,1)=K(I,1)+10
63882         K(I,4)=N
63883         K(I,5)=N
63884         K(N,3)=I
63885         IF(I.EQ.IPCS) I1=N
63886         IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 990
63887         I2=I1+1
63888  
63889 C...Set initial Phad.
63890         DO 1010 J=1,4
63891           P(NSAV+2,J)=P(NSAV+1,J)
63892  1010   CONTINUE
63893  
63894 C...Calculate Pg, a part of which will be added to Phad later. (EN)
63895  1020   IF(MSTJ(16).EQ.1) THEN
63896           ALPHA=1D0
63897           BETA=1D0
63898         ELSE
63899           ALPHA=FOUR(NSAV+1,I2)/FOUR(I1,I2)
63900           BETA=FOUR(NSAV+1,I1)/FOUR(I1,I2)
63901         ENDIF
63902         DO 1030 J=1,4
63903           PG(J)=ALPHA*P(I1,J)+BETA*P(I2,J)
63904  1030   CONTINUE
63905         PG(5)=SQRT(MAX(1D-20,PG(4)**2-PG(1)**2-PG(2)**2-PG(3)**2))
63906  
63907 C..Solve 2nd order equation, use the best (smallest) solution. (EN)
63908         PMSCOL=P(NSAV+2,4)**2-P(NSAV+2,1)**2-P(NSAV+2,2)**2-
63909      &  P(NSAV+2,3)**2
63910         PCLPG=(P(NSAV+2,4)*PG(4)-P(NSAV+2,1)*PG(1)-
63911      &  P(NSAV+2,2)*PG(2)-P(NSAV+2,3)*PG(3))/PG(5)**2
63912         DELTA=SQRT(PCLPG**2+(P(NSAV+2,5)**2-PMSCOL)/PG(5)**2)-PCLPG
63913  
63914 C...If all gluon energy eaten, zero it and take a step back.
63915         ITER=0
63916         IF(DELTA*ALPHA.GT.1D0.AND.I1.GT.NSAV+3.AND.K(I1,2).EQ.21) THEN
63917           ITER=1
63918           DO 1040 J=1,4
63919             P(NSAV+2,J)=P(NSAV+2,J)+P(I1,J)
63920             P(I1,J)=0D0
63921  1040     CONTINUE
63922           P(I1,5)=0D0
63923           K(I1,1)=K(I1,1)+10
63924           I1=I1-1
63925           IF(K(I1,1).EQ.41) ITER=-1
63926         ENDIF
63927         IF(DELTA*BETA.GT.1D0.AND.I2.LT.N.AND.K(I2,2).EQ.21) THEN
63928           ITER=1
63929           DO 1050 J=1,4
63930             P(NSAV+2,J)=P(NSAV+2,J)+P(I2,J)
63931             P(I2,J)=0D0
63932  1050     CONTINUE
63933           P(I2,5)=0D0
63934           K(I2,1)=K(I2,1)+10
63935           I2=I2+1
63936           IF(K(I2,1).EQ.41) ITER=-1
63937         ENDIF
63938         IF(ITER.EQ.1) GOTO 1020
63939  
63940 C...If also all endpoint energy eaten, revert to old procedure.
63941         IF((1D0-DELTA*ALPHA)*P(I1,4).LT.P(I1,5).OR.
63942      &  (1D0-DELTA*BETA)*P(I2,4).LT.P(I2,5).OR.ITER.EQ.-1) THEN
63943           DO 1060 I=NSAV+3,N
63944             IM=K(I,3)
63945             K(IM,1)=K(IM,1)-10
63946             K(IM,4)=0
63947             K(IM,5)=0
63948  1060     CONTINUE
63949           N=NSAV
63950           GOTO 1080
63951         ENDIF
63952  
63953 C... Construct the collapsed hadron and modified string partons.
63954         DO 1070 J=1,4
63955           P(NSAV+2,J)=P(NSAV+2,J)+DELTA*PG(J)
63956           P(I1,J)=(1D0-DELTA*ALPHA)*P(I1,J)
63957           P(I2,J)=(1D0-DELTA*BETA)*P(I2,J)
63958  1070   CONTINUE
63959           P(I1,5)=(1D0-DELTA*ALPHA)*P(I1,5)
63960           P(I2,5)=(1D0-DELTA*BETA)*P(I2,5)
63961  
63962 C...Finished with string collapse in new scheme.
63963         GOTO 1120
63964       ENDIF
63965  
63966 C... Use old algorithm; by choice or when in trouble.
63967  1080 CONTINUE
63968 C...Find parton/particle which combines to largest extra mass.
63969       IR=0
63970       HA=0D0
63971       HSM=0D0
63972       DO 1100 MCOMB=1,3
63973         IF(IR.NE.0) GOTO 1100
63974         DO 1090 I=MAX(1,IP),N
63975           IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2
63976      &    .AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 1090
63977           IF(MCOMB.EQ.1) KCI=PYCOMP(K(I,2))
63978           IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 1090
63979           IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 1090
63980           IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100)
63981      &    GOTO 1090
63982           HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3)
63983           HSR=2D0*HCR+PECM**2-P(N+2,5)**2-2D0*P(N+2,5)*P(I,5)
63984           IF(HSR.GT.HSM) THEN
63985             IR=I
63986             HA=HCR
63987             HSM=HSR
63988           ENDIF
63989  1090   CONTINUE
63990  1100 CONTINUE
63991  
63992 C...Shuffle energy and momentum to put new particle on mass shell.
63993       IF(IR.NE.0) THEN
63994         HB=PECM**2+HA
63995         HC=P(N+2,5)**2+HA
63996         HD=P(IR,5)**2+HA
63997         HK2=0.5D0*(HB*SQRT(MAX(0D0,((HB+HC)**2-4D0*(HB+HD)*P(N+2,5)**2)/
63998      &  (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD)
63999         HK1=(0.5D0*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB
64000         DO 1110 J=1,4
64001           P(N+2,J)=(1D0+HK1)*DPC(J)-HK2*P(IR,J)
64002           P(IR,J)=(1D0+HK2)*P(IR,J)-HK1*DPC(J)
64003  1110   CONTINUE
64004         N=N+2
64005       ELSE
64006         CALL PYERRM(3,'(PYPREP:) no match for collapsing cluster')
64007         RETURN
64008       ENDIF
64009  
64010 C...Mark collapsed system and store daughter pointers. Iterate.
64011  1120 DO 1130 I=IC1,IC2
64012         IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.
64013      &  KCHG(PYCOMP(K(I,2)),2).NE.0) THEN
64014           K(I,1)=K(I,1)+10
64015           IF(MSTU(16).NE.2) THEN
64016             K(I,4)=NSAV+1
64017             K(I,5)=NSAV+1
64018           ELSE
64019             K(I,4)=NSAV+2
64020             K(I,5)=NSAV+1+NBODY
64021           ENDIF
64022         ENDIF
64023         IF(K(I,1).EQ.41) K(I,1)=K(I,1)+10
64024  1130 CONTINUE
64025       IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 710
64026  
64027 C...Check flavours and invariant masses in parton systems.
64028  1140 NP=0
64029       KFN=0
64030       KQS=0
64031       NJU=0
64032       DO 1150 J=1,5
64033         DPS(J)=0D0
64034  1150 CONTINUE
64035       DO 1180 I=MAX(1,IP),N
64036         IF(K(I,1).EQ.41) NJU=NJU+1
64037         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 1180
64038         KC=PYCOMP(K(I,2))
64039         IF(KC.EQ.0) GOTO 1180
64040         KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
64041         IF(KQ.EQ.0) GOTO 1180
64042         NP=NP+1
64043         IF(KQ.NE.2) THEN
64044           KFN=KFN+1
64045           KQS=KQS+KQ
64046           MSTJ(93)=1
64047           DPS(5)=DPS(5)+PYMASS(K(I,2))
64048         ENDIF
64049         DO 1160 J=1,4
64050           DPS(J)=DPS(J)+P(I,J)
64051  1160   CONTINUE
64052         IF(K(I,1).EQ.1) THEN
64053           NFERR=0
64054           IF(NJU.EQ.0.AND.NP.NE.1) THEN
64055             IF(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0) NFERR=1
64056           ELSEIF(NJU.EQ.1) THEN
64057             IF(KFN.NE.3.OR.IABS(KQS).NE.3) NFERR=1
64058           ELSEIF(NJU.EQ.2) THEN
64059             IF(KFN.NE.4.OR.KQS.NE.0) NFERR=1
64060           ELSEIF(NJU.GE.3) THEN
64061             NFERR=1
64062           ENDIF
64063           IF(NFERR.EQ.1) THEN
64064             CALL PYERRM(2,'(PYPREP:) unphysical flavour combination')
64065             MINT(51)=1
64066             RETURN
64067           ENDIF
64068           IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT.
64069      &    (0.9D0*PARJ(32)+DPS(5))**2) CALL PYERRM(3,
64070      &    '(PYPREP:) too small mass in jet system')
64071           NP=0
64072           KFN=0
64073           KQS=0
64074           NJU=0
64075           DO 1170 J=1,5
64076             DPS(J)=0D0
64077  1170     CONTINUE
64078         ENDIF
64079  1180 CONTINUE
64080  
64081       RETURN
64082       END
64083  
64084 C*********************************************************************
64085  
64086 C...PYSTRF
64087 C...Handles the fragmentation of an arbitrary colour singlet
64088 C...jet system according to the Lund string fragmentation model.
64089  
64090       SUBROUTINE PYSTRF(IP)
64091  
64092 C...Double precision and integer declarations.
64093       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
64094       IMPLICIT INTEGER(I-N)
64095       INTEGER PYK,PYCHGE,PYCOMP
64096 C...Commonblocks.
64097       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
64098       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
64099       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
64100       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
64101 C...Local arrays. All MOPS variables ends with MO
64102       DIMENSION DPS(5),KFL(3),PMQ(3),PX(3),PY(3),GAM(3),IE(2),PR(2),
64103      &IN(9),DHM(4),DHG(4),DP(5,5),IRANK(2),MJU(4),IJU(6),PJU(5,5),
64104      &TJU(5),KFJH(2),NJS(2),KFJS(2),PJS(4,5),MSTU9T(8),PARU9T(8),
64105      &INMO(9),PM2QMO(2),XTMO(2),EJSTR(2),IJUORI(2),IBARRK(2),
64106      &PBST(3,5),TJUOLD(5)
64107  
64108 C...Function: four-product of two vectors.
64109       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)
64110       DFOUR(I,J)=DP(I,4)*DP(J,4)-DP(I,1)*DP(J,1)-DP(I,2)*DP(J,2)-
64111      &DP(I,3)*DP(J,3)
64112  
64113 C...Reset counters.
64114       MSTJ(91)=0
64115       NSAV=N
64116       MSTU90=MSTU(90)
64117       NP=0
64118       KQSUM=0
64119       DO 100 J=1,5
64120         DPS(J)=0D0
64121   100 CONTINUE
64122       MJU(1)=0
64123       MJU(2)=0
64124       NTRYFN=0
64125       IJUORI(1)=0
64126       IJUORI(2)=0
64127  
64128 C...Identify parton system.
64129       I=IP-1
64130   110 I=I+1
64131       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
64132         CALL PYERRM(12,'(PYSTRF:) failed to reconstruct jet system')
64133         IF(MSTU(21).GE.1) RETURN
64134       ENDIF
64135       IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 110
64136       KC=PYCOMP(K(I,2))
64137       IF(KC.EQ.0) GOTO 110
64138       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
64139       IF(KQ.EQ.0.AND.K(I,1).NE.41) GOTO 110
64140       IF(N+5*NP+11.GT.MSTU(4)-MSTU(32)-5) THEN
64141         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
64142         IF(MSTU(21).GE.1) RETURN
64143       ENDIF
64144  
64145 C...Take copy of partons to be considered. Check flavour sum.
64146       NP=NP+1
64147       DO 120 J=1,5
64148         K(N+NP,J)=K(I,J)
64149         P(N+NP,J)=P(I,J)
64150         IF(J.NE.4) DPS(J)=DPS(J)+P(I,J)
64151   120 CONTINUE
64152       DPS(4)=DPS(4)+SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
64153       K(N+NP,3)=I
64154       IF(KQ.NE.2) KQSUM=KQSUM+KQ
64155       IF(K(I,1).EQ.41) THEN
64156         IF(MOD(KQSUM,2).EQ.0.AND.MJU(1).EQ.0) THEN
64157           MJU(1)=N+NP
64158           IJUORI(1)=I
64159         ELSE
64160           MJU(2)=N+NP
64161           IJUORI(2)=I
64162         ENDIF
64163       ENDIF
64164       IF(K(I,1).EQ.2.OR.K(I,1).EQ.41) GOTO 110
64165       IF(MOD(KQSUM,3).NE.0) THEN
64166         CALL PYERRM(12,'(PYSTRF:) unphysical flavour combination')
64167         IF(MSTU(21).GE.1) RETURN
64168       ENDIF
64169       IF(MJU(1).GT.0.OR.MJU(2).GT.0) MSTU(29)=1
64170  
64171 C...Boost copied system to CM frame (for better numerical precision).
64172       IF(ABS(DPS(3)).LT.0.99D0*DPS(4)) THEN
64173         MBST=0
64174         MSTU(33)=1
64175         CALL PYROBO(N+1,N+NP,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
64176      &  -DPS(3)/DPS(4))
64177       ELSE
64178         MBST=1
64179         HHBZ=SQRT(MAX(1D-6,DPS(4)+DPS(3))/MAX(1D-6,DPS(4)-DPS(3)))
64180         DO 130 I=N+1,N+NP
64181           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
64182           IF(P(I,3).GT.0D0) THEN
64183             HHPEZ=MAX(1D-10,(P(I,4)+P(I,3))/HHBZ)
64184             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
64185             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
64186           ELSE
64187             HHPEZ=MAX(1D-10,(P(I,4)-P(I,3))*HHBZ)
64188             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
64189             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
64190           ENDIF
64191   130   CONTINUE
64192       ENDIF
64193  
64194 C...Search for very nearby partons that may be recombined.
64195       NTRYR=0
64196       NTRYWR=0
64197       PARU12=PARU(12)
64198       PARU13=PARU(13)
64199       MJU(3)=MJU(1)
64200       MJU(4)=MJU(2)
64201       NR=NP
64202       NRMIN=2
64203       IF(MJU(1).GT.0) NRMIN=NRMIN+2
64204       IF(MJU(2).GT.0) NRMIN=NRMIN+2
64205   140 IF(NR.GT.NRMIN) THEN
64206         PDRMIN=2D0*PARU12
64207         DO 150 I=N+1,N+NR
64208           IF(I.EQ.N+NR.AND.IABS(K(N+1,2)).NE.21) GOTO 150
64209           I1=I+1
64210           IF(I.EQ.N+NR) I1=N+1
64211           IF(K(I,1).EQ.41.OR.K(I1,1).EQ.41) GOTO 150
64212           IF(MJU(1).NE.0.AND.I1.LT.MJU(1).AND.IABS(K(I1,2)).NE.21)
64213      &    GOTO 150
64214           IF(MJU(2).NE.0.AND.I.GT.MJU(2).AND.IABS(K(I,2)).NE.21)
64215      &    GOTO 150
64216           PAP=SQRT((P(I,1)**2+P(I,2)**2+P(I,3)**2)*(P(I1,1)**2+
64217      &    P(I1,2)**2+P(I1,3)**2))
64218           PVP=P(I,1)*P(I1,1)+P(I,2)*P(I1,2)+P(I,3)*P(I1,3)
64219           PDR=4D0*(PAP-PVP)**2/MAX(1D-6,PARU13**2*PAP+2D0*(PAP-PVP))
64220           IF(PDR.LT.PDRMIN) THEN
64221             IR=I
64222             PDRMIN=PDR
64223           ENDIF
64224   150   CONTINUE
64225  
64226 C...Recombine very nearby partons to avoid machine precision problems.
64227         IF(PDRMIN.LT.PARU12.AND.IR.EQ.N+NR) THEN
64228           DO 160 J=1,4
64229             P(N+1,J)=P(N+1,J)+P(N+NR,J)
64230   160     CONTINUE
64231           P(N+1,5)=SQRT(MAX(0D0,P(N+1,4)**2-P(N+1,1)**2-P(N+1,2)**2-
64232      &    P(N+1,3)**2))
64233           NR=NR-1
64234           GOTO 140
64235         ELSEIF(PDRMIN.LT.PARU12) THEN
64236           DO 170 J=1,4
64237             P(IR,J)=P(IR,J)+P(IR+1,J)
64238   170     CONTINUE
64239           P(IR,5)=SQRT(MAX(0D0,P(IR,4)**2-P(IR,1)**2-P(IR,2)**2-
64240      &    P(IR,3)**2))
64241           IF(MJU(2).NE.0.AND.IR.GT.MJU(2)) K(IR,2)=K(IR+1,2)
64242           DO 190 I=IR+1,N+NR-1
64243             K(I,1)=K(I+1,1)
64244             K(I,2)=K(I+1,2)
64245             DO 180 J=1,5
64246               P(I,J)=P(I+1,J)
64247   180       CONTINUE
64248   190     CONTINUE
64249           IF(IR.EQ.N+NR-1) K(IR,2)=K(N+NR,2)
64250           NR=NR-1
64251           IF(MJU(1).GT.IR) MJU(1)=MJU(1)-1
64252           IF(MJU(2).GT.IR) MJU(2)=MJU(2)-1
64253           GOTO 140
64254         ENDIF
64255       ENDIF
64256       NTRYR=NTRYR+1
64257  
64258 C...Reset particle counter. Skip ahead if no junctions are present;
64259 C...this is usually the case!
64260       NRS=MAX(5*NR+11,NP)
64261       NTRY=0
64262   200 NTRY=NTRY+1
64263       IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
64264         PARU12=4D0*PARU12
64265         PARU13=2D0*PARU13
64266         GOTO 140
64267       ELSEIF(NTRY.GT.100.OR.NTRYR.GT.100) THEN
64268         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
64269         IF(MSTU(21).GE.1) RETURN
64270       ENDIF
64271       I=N+NRS
64272       MSTU(90)=MSTU90
64273       IF(MJU(1).EQ.0.AND.MJU(2).EQ.0) GOTO 650
64274       IF(MSTJ(12).GE.4) CALL PYERRM(29,'(PYSTRF:) sorry,'//
64275      &     ' junction strings not handled by MSTJ(12)>3 options')
64276       DO 640 JT=1,2
64277         NJS(JT)=0
64278         IF(MJU(JT).EQ.0) GOTO 640
64279         JS=3-2*JT
64280  
64281 C++SKANDS
64282 C...Find and sum up momentum on three sides of junction.
64283 C...Begin with previous boost = zero.
64284         IJRFIT=0
64285         DO 210 IX=1,3
64286           TJUOLD(IX)=0D0
64287   210   CONTINUE
64288 C...Prevent IJU (specifically IJU(5)) from containing junk below
64289         DO 215 IU=1,6
64290           IJU(IU)=0
64291  215    CONTINUE
64292         TJUOLD(4)=1D0
64293   220   IU=0
64294 C...Beginning and end of string system in event record.
64295         I1BEG=N+1+(JT-1)*(NR-1)
64296         I1END=N+NR+(JT-1)*(1-NR)
64297 C...Look for junction string piece end points
64298         DO 230 I1=I1BEG,I1END,JS
64299           IF(K(I1,2).NE.21.AND.IU.LE.5.AND.IJRFIT.EQ.0) THEN
64300 C...Store junction string piece end points.
64301 C                 1-junction systems        2-junction systems
64302 C           IU :  1     2     3   4     1     2   3     4   5     6
64303 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
64304             IU=IU+1
64305             IJU(IU)=I1
64306           ENDIF
64307 C...Sum over momenta, from junction outwards.
64308   230   CONTINUE
64309         DO 280 IU=1,3
64310           PWT=0D0
64311 C...Initialize junction drag and string piece 4-vectors.
64312           DO 240 J=1,5
64313             PBST(IU,J)=0D0
64314             PJU(IU,J)=0D0
64315   240     CONTINUE
64316 C...First two branches. Inwards out means opposite direction to JS.
64317 C...(JS is 1 for JT=1, -1 for JT=2)
64318           IF (IU.LT.3) THEN
64319             I1A=IJU(IU+1)-JS
64320             I1B=IJU(IU)
64321             IDIR=-JS
64322 C...Last branch (gq or gjgqgq). Direction now reversed.
64323           ELSE
64324             I1A=IJU(IU)+JS
64325             I1B=I1END
64326             IDIR=JS
64327           ENDIF
64328           DO 270 I1=I1A,I1B,IDIR
64329 C...Sum up momentum directions with exponential suppression
64330 C...for use in finding junction rest frame below.
64331             IF (K(I1,2).EQ.88) THEN
64332 C...gjgqgq type system encountered. Use current PWT as start
64333 C...for both strings.
64334               PWTOLD=PWT
64335             ELSE
64336               IF (I1.EQ.IJU(5)+IDIR) PWT=PWTOLD
64337 C...Sum up string piece (boosted) 4-momenta.
64338               DO 250 J=1,4
64339                 PJU(IU,J)=PJU(IU,J)+P(I1,J)
64340   250         CONTINUE
64341 C...Compute "junction drag" vectors from (boosted) 4-momenta (initial
64342 C...boost is zero, see above). Skip parton if suppression factor large.
64343               IF (PWT.GT.10D0) GOTO 270
64344 C...Compute momentum in current frame:
64345               TDP=TJUOLD(1)*P(I1,1)+TJUOLD(2)*P(I1,2)+TJUOLD(3)*P(I1,3)
64346               BFC=TDP/(1D0+TJUOLD(4))+P(I1,4)
64347               DO 260 J=1,3
64348                 PTMP=P(I1,J)+TJUOLD(J)*BFC
64349                 PBST(IU,J)=PBST(IU,J)+PTMP*EXP(-PWT)
64350   260         CONTINUE
64351 C...Boosted energy
64352               PTMP=TJUOLD(4)*P(I1,4)+TDP
64353               PBST(IU,4)=PBST(IU,J)+PTMP*EXP(-PWT)
64354               PWT=PWT+PTMP/PARJ(48)
64355             ENDIF
64356   270     CONTINUE
64357 C...Put |p| rather than m in 5th slot.
64358           PBST(IU,5)=SQRT(PBST(IU,1)**2+PBST(IU,2)**2+PBST(IU,3)**2)
64359           PJU(IU,5)=SQRT(PJU(IU,1)**2+PJU(IU,2)**2+PJU(IU,3)**2)
64360   280   CONTINUE
64361  
64362 C...Calculate boost from present frame to next JRF candidate.
64363         IJRFIT=IJRFIT+1
64364         CALL PYJURF(PBST,TJU)
64365  
64366 C...After some iterations do not take full step in new direction.
64367         IF(IJRFIT.GT.5) THEN
64368           REDUCE=0.8D0**(IJRFIT-5)
64369           TJU(1)=REDUCE*TJU(1)
64370           TJU(2)=REDUCE*TJU(2)
64371           TJU(3)=REDUCE*TJU(3)
64372           TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
64373         ENDIF
64374  
64375 C...Combine new boost (TJU) with old boost (TJUOLD)
64376         TMP=TJU(1)*TJUOLD(1)+TJU(2)*TJUOLD(2)+TJU(3)*TJUOLD(3)
64377         DO 290 IX=1,3
64378           TJUOLD(IX)=TJU(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+TJU(4))
64379   290   CONTINUE
64380         TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3)**2)
64381  
64382 C...If last boost small, accept JRF, else iterate.
64383 C...Also prevent possibility of infinite loop.
64384         IF (ABS((TJU(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND.
64385      &  IJRFIT.LT.MSTJ(18)) THEN
64386           GOTO 220
64387         ELSEIF (IJRFIT.GE.MSTJ(18)) THEN
64388           CALL PYERRM(1,'(PYSTRF:) failed to converge on JRF')
64389         ENDIF
64390  
64391 C...Now store total boost in TJU and change perception.
64392 C...TJUOLD = boost vector from CM of string syst -> JRF. Henceforth,
64393 C...TJU = junction motion vector in string CM, so the sign changes.
64394         DO 300 J=1,3
64395           TJU(J)=-TJUOLD(J)
64396   300   CONTINUE
64397         TJU(4)=SQRT(1D0+TJU(1)**2+TJU(2)**2+TJU(3)**2)
64398  
64399 C--SKANDS
64400  
64401 C...Calculate string piece energies in junction rest frame.
64402         DO 310 IU=1,3
64403           PJU(IU,5)=TJU(4)*PJU(IU,4)-TJU(1)*PJU(IU,1)-TJU(2)*PJU(IU,2)-
64404      &    TJU(3)*PJU(IU,3)
64405           PBST(IU,5)=TJU(4)*PBST(IU,4)-TJU(1)*PBST(IU,1)-
64406      &    TJU(2)*PBST(IU,2)-TJU(3)*PBST(IU,3)
64407   310   CONTINUE
64408  
64409 C...Start preparing for fragmentation of two strings from junction.
64410         ISTA=I
64411         NTRYER=0
64412   320   NTRYER=NTRYER+1
64413         I=ISTA
64414         DO 620 IU=1,2
64415           NS=IABS(IJU(IU+1)-IJU(IU))
64416  
64417 C...Junction strings: find longitudinal string directions.
64418           DO 350 IS=1,NS
64419             IS1=IJU(IU)+JS*(IS-1)
64420             IS2=IJU(IU)+JS*IS
64421             DO 330 J=1,5
64422               DP(1,J)=0.5D0*P(IS1,J)
64423               IF(IS.EQ.1) DP(1,J)=P(IS1,J)
64424               DP(2,J)=0.5D0*P(IS2,J)
64425               IF(IS.EQ.NS) DP(2,J)=(-PBST(IU,J)+2D0*PBST(IU,5)*TJU(J))*
64426      &        (PJU(IU,5)/PBST(IU,5))
64427   330       CONTINUE
64428             IF(IS.EQ.NS) DP(2,5)=SQRT(MAX(0D0,PJU(IU,4)**2-
64429      &      PJU(IU,1)**2-PJU(IU,2)**2-PJU(IU,3)**2))
64430             DP(3,5)=DFOUR(1,1)
64431             DP(4,5)=DFOUR(2,2)
64432             DHKC=DFOUR(1,2)
64433             IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) THEN
64434               DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
64435               DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
64436               DP(3,5)=0D0
64437               DP(4,5)=0D0
64438               DHKC=DFOUR(1,2)
64439             ENDIF
64440             DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
64441             DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
64442             DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
64443             IN1=N+NR+4*IS-3
64444             P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
64445             DO 340 J=1,4
64446               P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
64447               P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
64448   340       CONTINUE
64449   350     CONTINUE
64450  
64451 C...Junction strings: initialize flavour, momentum and starting pos.
64452           ISAV=I
64453           MSTU91=MSTU(90)
64454   360     NTRY=NTRY+1
64455           IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
64456             PARU12=4D0*PARU12
64457             PARU13=2D0*PARU13
64458             GOTO 140
64459           ELSEIF(NTRY.GT.100) THEN
64460             CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
64461             IF(MSTU(21).GE.1) RETURN
64462           ENDIF
64463           I=ISAV
64464           MSTU(90)=MSTU91
64465           IRANKJ=0
64466           IE(1)=K(N+1+(JT/2)*(NP-1),3)
64467           IF (MOD(JT+IU,2).NE.0) THEN
64468             IE(1)=K(IJU(IU),3)
64469             IF (NP-NR.NE.0) THEN
64470 C...If gluons have disappeared. Original IJU must be used.
64471               IT=IP
64472               NE=1
64473   370         IT=IT+1
64474               IF (K(IT,2).NE.21) THEN
64475                 NE=NE+1
64476               ENDIF
64477               IF (NE.EQ.IU+4*(JT-1)) THEN
64478                 IE(1)=IT
64479               ELSEIF (IT.LE.IP+NP) THEN
64480                 GOTO 370
64481               ELSE
64482                 CALL PYERRM(14,'(PYSTRF:) '//
64483      &               'Original IJU could not be reconstructed!')
64484               ENDIF
64485             ENDIF
64486           ENDIF
64487           IN(4)=N+NR+1
64488           IN(5)=IN(4)+1
64489           IN(6)=N+NR+4*NS+1
64490           DO 390 JQ=1,2
64491             DO 380 IN1=N+NR+2+JQ,N+NR+4*NS-2+JQ,4
64492               P(IN1,1)=2-JQ
64493               P(IN1,2)=JQ-1
64494               P(IN1,3)=1D0
64495   380       CONTINUE
64496   390     CONTINUE
64497           KFL(1)=K(IJU(IU),2)
64498           PX(1)=0D0
64499           PY(1)=0D0
64500           GAM(1)=0D0
64501           DO 400 J=1,5
64502             PJU(IU+3,J)=0D0
64503   400     CONTINUE
64504  
64505 C...Junction strings: find initial transverse directions.
64506           DO 410 J=1,4
64507             DP(1,J)=P(IN(4),J)
64508             DP(2,J)=P(IN(4)+1,J)
64509             DP(3,J)=0D0
64510             DP(4,J)=0D0
64511   410     CONTINUE
64512           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
64513           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
64514           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
64515           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
64516           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
64517           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
64518           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
64519           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
64520           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
64521           DHC12=DFOUR(1,2)
64522           DHCX1=DFOUR(3,1)/DHC12
64523           DHCX2=DFOUR(3,2)/DHC12
64524           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
64525           DHCY1=DFOUR(4,1)/DHC12
64526           DHCY2=DFOUR(4,2)/DHC12
64527           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
64528           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
64529           DO 420 J=1,4
64530             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
64531             P(IN(6),J)=DP(3,J)
64532             P(IN(6)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
64533      &      DHCYX*DP(3,J))
64534   420     CONTINUE
64535  
64536 C...Junction strings: produce new particle, origin.
64537   430     I=I+1
64538           IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
64539             CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
64540             IF(MSTU(21).GE.1) RETURN
64541           ENDIF
64542           IRANKJ=IRANKJ+1
64543           K(I,1)=1
64544           K(I,3)=IE(1)
64545           K(I,4)=0
64546           K(I,5)=0
64547  
64548 C...Junction strings: generate flavour, hadron, pT, z and Gamma.
64549   440     CALL PYKFDI(KFL(1),0,KFL(3),K(I,2))
64550           IF(K(I,2).EQ.0) GOTO 360
64551           IF(IRANKJ.EQ.1.AND.IABS(KFL(1)).LE.10.AND.
64552      &    IABS(KFL(3)).GT.10) THEN
64553             IF(PYR(0).GT.PARJ(19)) GOTO 440
64554           ENDIF
64555           P(I,5)=PYMASS(K(I,2))
64556           CALL PYPTDI(KFL(1),PX(3),PY(3))
64557           PR(1)=P(I,5)**2+(PX(1)+PX(3))**2+(PY(1)+PY(3))**2
64558           CALL PYZDIS(KFL(1),KFL(3),PR(1),Z)
64559           IF(IABS(KFL(1)).GE.4.AND.IABS(KFL(1)).LE.8.AND.
64560      &    MSTU(90).LT.8) THEN
64561             MSTU(90)=MSTU(90)+1
64562             MSTU(90+MSTU(90))=I
64563             PARU(90+MSTU(90))=Z
64564           ENDIF
64565           GAM(3)=(1D0-Z)*(GAM(1)+PR(1)/Z)
64566           DO 450 J=1,3
64567             IN(J)=IN(3+J)
64568   450     CONTINUE
64569  
64570 C...Junction strings: stepping within 'low' string region.
64571           IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
64572      &    P(IN(1),5)**2.GE.PR(1)) THEN
64573             P(IN(1)+2,4)=Z*P(IN(1)+2,3)
64574             P(IN(2)+2,4)=PR(1)/(P(IN(1)+2,4)*P(IN(1),5)**2)
64575             DO 460 J=1,4
64576               P(I,J)=(PX(1)+PX(3))*P(IN(3),J)+(PY(1)+PY(3))*P(IN(3)+1,J)
64577   460       CONTINUE
64578             GOTO 560
64579 C...Has used up energy of junction string, i.e. no more hadrons in it.
64580           ELSEIF(IN(1)+1.EQ.IN(2).AND.IN(1).EQ.N+NR+4*NS-3) THEN
64581             DO 470 J=1,5
64582               P(I,J)=0D0
64583   470       CONTINUE
64584             GOTO 600
64585 C...Stepping from 'low' string region
64586           ELSEIF(IN(1)+1.EQ.IN(2)) THEN
64587             P(IN(2)+2,4)=P(IN(2)+2,3)
64588             P(IN(2)+2,1)=1D0
64589             IN(2)=IN(2)+4
64590             IF(IN(2).GT.N+NR+4*NS) GOTO 360
64591             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
64592               P(IN(1)+2,4)=P(IN(1)+2,3)
64593               P(IN(1)+2,1)=0D0
64594               IN(1)=IN(1)+4
64595             ENDIF
64596           ENDIF
64597  
64598 C...Junction strings: find new transverse directions.
64599   480     IF(IN(1).GT.N+NR+4*NS.OR.IN(2).GT.N+NR+4*NS.OR.
64600      &    IN(1).GT.IN(2)) GOTO 360
64601           IF(IN(1).NE.IN(4).OR.IN(2).NE.IN(5)) THEN
64602             DO 490 J=1,4
64603               DP(1,J)=P(IN(1),J)
64604               DP(2,J)=P(IN(2),J)
64605               DP(3,J)=0D0
64606               DP(4,J)=0D0
64607   490       CONTINUE
64608             DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
64609             DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
64610             DHC12=DFOUR(1,2)
64611             IF(DHC12.LE.1D-2) THEN
64612               P(IN(1)+2,4)=P(IN(1)+2,3)
64613               P(IN(1)+2,1)=0D0
64614               IN(1)=IN(1)+4
64615               GOTO 480
64616             ENDIF
64617             IN(3)=N+NR+4*NS+5
64618             DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
64619             DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
64620             DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
64621             IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
64622             IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
64623             IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
64624             IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
64625             DHCX1=DFOUR(3,1)/DHC12
64626             DHCX2=DFOUR(3,2)/DHC12
64627             DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
64628             DHCY1=DFOUR(4,1)/DHC12
64629             DHCY2=DFOUR(4,2)/DHC12
64630             DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
64631             DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
64632             DO 500 J=1,4
64633               DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
64634               P(IN(3),J)=DP(3,J)
64635               P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
64636      &        DHCYX*DP(3,J))
64637   500       CONTINUE
64638 C...Express pT with respect to new axes, if sensible.
64639             PXP=-(PX(3)*FOUR(IN(6),IN(3))+PY(3)*FOUR(IN(6)+1,IN(3)))
64640             PYP=-(PX(3)*FOUR(IN(6),IN(3)+1)+PY(3)*FOUR(IN(6)+1,IN(3)+1))
64641             IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
64642               PX(3)=PXP
64643               PY(3)=PYP
64644             ENDIF
64645           ENDIF
64646  
64647 C...Junction strings: sum up known four-momentum, coefficients for m2.
64648           DO 530 J=1,4
64649             DHG(J)=0D0
64650             P(I,J)=PX(1)*P(IN(6),J)+PY(1)*P(IN(6)+1,J)+PX(3)*P(IN(3),J)+
64651      &      PY(3)*P(IN(3)+1,J)
64652             DO 510 IN1=IN(4),IN(1)-4,4
64653               P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
64654   510       CONTINUE
64655             DO 520 IN2=IN(5),IN(2)-4,4
64656               P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
64657   520       CONTINUE
64658   530     CONTINUE
64659           DHM(1)=FOUR(I,I)
64660           DHM(2)=2D0*FOUR(I,IN(1))
64661           DHM(3)=2D0*FOUR(I,IN(2))
64662           DHM(4)=2D0*FOUR(IN(1),IN(2))
64663  
64664 C...Junction strings: find coefficients for Gamma expression.
64665           DO 550 IN2=IN(1)+1,IN(2),4
64666             DO 540 IN1=IN(1),IN2-1,4
64667               DHC=2D0*FOUR(IN1,IN2)
64668               DHG(1)=DHG(1)+P(IN1+2,1)*P(IN2+2,1)*DHC
64669               IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-P(IN2+2,1)*DHC
64670               IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+P(IN1+2,1)*DHC
64671               IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
64672   540       CONTINUE
64673   550     CONTINUE
64674  
64675 C...Junction strings: solve (m2, Gamma) equation system for energies.
64676           DHS1=DHM(3)*DHG(4)-DHM(4)*DHG(3)
64677           IF(ABS(DHS1).LT.1D-4) GOTO 360
64678           DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(2)*DHG(3)-DHG(4)*
64679      &    (P(I,5)**2-DHM(1))+DHG(2)*DHM(3)
64680           DHS3=DHM(2)*(GAM(3)-DHG(1))-DHG(2)*(P(I,5)**2-DHM(1))
64681           P(IN(2)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
64682      &    ABS(DHS1)-DHS2/DHS1)
64683           IF(DHM(2)+DHM(4)*P(IN(2)+2,4).LE.0D0) GOTO 360
64684           P(IN(1)+2,4)=(P(I,5)**2-DHM(1)-DHM(3)*P(IN(2)+2,4))/
64685      &    (DHM(2)+DHM(4)*P(IN(2)+2,4))
64686  
64687 C...Junction strings: step to new region if necessary.
64688           IF(P(IN(2)+2,4).GT.P(IN(2)+2,3)) THEN
64689             P(IN(2)+2,4)=P(IN(2)+2,3)
64690             P(IN(2)+2,1)=1D0
64691             IN(2)=IN(2)+4
64692             IF(IN(2).GT.N+NR+4*NS) GOTO 360
64693             IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
64694               P(IN(1)+2,4)=P(IN(1)+2,3)
64695               P(IN(1)+2,1)=0D0
64696               IN(1)=IN(1)+4
64697             ENDIF
64698             GOTO 480
64699           ELSEIF(P(IN(1)+2,4).GT.P(IN(1)+2,3)) THEN
64700             P(IN(1)+2,4)=P(IN(1)+2,3)
64701             P(IN(1)+2,1)=0D0
64702             IN(1)=IN(1)+4
64703             GOTO 480
64704           ENDIF
64705  
64706 C...Junction strings: particle four-momentum, remainder, loop back.
64707   560     DO 570 J=1,4
64708             P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+
64709      &      P(IN(2)+2,4)*P(IN(2),J)
64710             PJU(IU+3,J)=PJU(IU+3,J)+P(I,J)
64711   570     CONTINUE
64712           IF(P(I,4).LT.P(I,5)) GOTO 360
64713           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
64714      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
64715           IF(PJU(IU+3,5).LT.PJU(IU,5)) THEN
64716             KFL(1)=-KFL(3)
64717             PX(1)=-PX(3)
64718             PY(1)=-PY(3)
64719             GAM(1)=GAM(3)
64720             IF(IN(3).NE.IN(6)) THEN
64721               DO 580 J=1,4
64722                 P(IN(6),J)=P(IN(3),J)
64723                 P(IN(6)+1,J)=P(IN(3)+1,J)
64724   580         CONTINUE
64725             ENDIF
64726             DO 590 JQ=1,2
64727               IN(3+JQ)=IN(JQ)
64728               P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
64729               P(IN(JQ)+2,1)=P(IN(JQ)+2,1)-(3-2*JQ)*P(IN(JQ)+2,4)
64730   590       CONTINUE
64731             GOTO 430
64732           ENDIF
64733  
64734 C...Junction strings: save quantities left after each string.
64735           IF(IABS(KFL(1)).GT.10) GOTO 360
64736   600     I=I-1
64737           KFJH(IU)=KFL(1)
64738           DO 610 J=1,4
64739             PJU(IU+3,J)=PJU(IU+3,J)-P(I+1,J)
64740   610     CONTINUE
64741  
64742 C...Junction strings: loopback if much unused energy in both strings.
64743           PJU(IU+3,5)=TJU(4)*PJU(IU+3,4)-TJU(1)*PJU(IU+3,1)-
64744      &    TJU(2)*PJU(IU+3,2)-TJU(3)*PJU(IU+3,3)
64745           EJSTR(IU)=PJU(IU,5)-PJU(IU+3,5)
64746   620   CONTINUE
64747         IF((MIN(EJSTR(1),EJSTR(2)).GT.PARJ(49).OR.
64748      &  EJSTR(1).GT.PARJ(49)+PYR(0)*PARJ(50).OR.
64749      &  EJSTR(2).GT.PARJ(49)+PYR(0)*PARJ(50))
64750      &  .AND.NTRYER.LT.10) GOTO 320
64751  
64752 C...Junction strings: put together to new effective string endpoint.
64753         NJS(JT)=I-ISTA
64754         KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1
64755         IF(KFJH(1).EQ.KFJH(2)) KFLS=3
64756         KFJS(JT)=ISIGN(1000*MAX(IABS(KFJH(1)),IABS(KFJH(2)))+
64757      &  100*MIN(IABS(KFJH(1)),IABS(KFJH(2)))+KFLS,KFJH(1))
64758         DO 630 J=1,4
64759           PJS(JT,J)=PJU(1,J)+PJU(2,J)+P(MJU(JT),J)
64760           PJS(JT+2,J)=PJU(4,J)+PJU(5,J)
64761   630   CONTINUE
64762         PJS(JT,5)=SQRT(MAX(0D0,PJS(JT,4)**2-PJS(JT,1)**2-PJS(JT,2)**2-
64763      &  PJS(JT,3)**2))
64764         PJS(JT+2,5)=0D0
64765   640 CONTINUE
64766  
64767 C...Open versus closed strings. Choose breakup region for latter.
64768   650 IF(MJU(1).NE.0.AND.MJU(2).NE.0) THEN
64769         NS=MJU(2)-MJU(1)
64770         NB=MJU(1)-N
64771       ELSEIF(MJU(1).NE.0) THEN
64772         NS=N+NR-MJU(1)
64773         NB=MJU(1)-N
64774       ELSEIF(MJU(2).NE.0) THEN
64775         NS=MJU(2)-N
64776         NB=1
64777       ELSEIF(IABS(K(N+1,2)).NE.21) THEN
64778         NS=NR-1
64779         NB=1
64780       ELSE
64781         NS=NR+1
64782         W2SUM=0D0
64783         DO 660 IS=1,NR
64784           P(N+NR+IS,1)=0.5D0*FOUR(N+IS,N+IS+1-NR*(IS/NR))
64785           W2SUM=W2SUM+P(N+NR+IS,1)
64786   660   CONTINUE
64787         W2RAN=PYR(0)*W2SUM
64788         NB=0
64789   670   NB=NB+1
64790         W2SUM=W2SUM-P(N+NR+NB,1)
64791         IF(W2SUM.GT.W2RAN.AND.NB.LT.NR) GOTO 670
64792       ENDIF
64793  
64794 C...Find longitudinal string directions (i.e. lightlike four-vectors).
64795       DO 700 IS=1,NS
64796         IS1=N+IS+NB-1-NR*((IS+NB-2)/NR)
64797         IS2=N+IS+NB-NR*((IS+NB-1)/NR)
64798         DO 680 J=1,5
64799           DP(1,J)=P(IS1,J)
64800           IF(IABS(K(IS1,2)).EQ.21) DP(1,J)=0.5D0*DP(1,J)
64801           IF(IS1.EQ.MJU(1)) DP(1,J)=PJS(1,J)-PJS(3,J)
64802           DP(2,J)=P(IS2,J)
64803           IF(IABS(K(IS2,2)).EQ.21) DP(2,J)=0.5D0*DP(2,J)
64804           IF(IS2.EQ.MJU(2)) DP(2,J)=PJS(2,J)-PJS(4,J)
64805   680   CONTINUE
64806         IF(IS1.EQ.MJU(1)) DP(1,5)=SQRT(MAX(0D0,DP(1,4)**2-DP(1,1)**2-
64807      &  DP(1,2)**2-DP(1,3)**2))
64808         IF(IS2.EQ.MJU(2)) DP(2,5)=SQRT(MAX(0D0,DP(2,4)**2-DP(2,1)**2-
64809      &  DP(2,2)**2-DP(2,3)**2))
64810         DP(3,5)=DFOUR(1,1)
64811         DP(4,5)=DFOUR(2,2)
64812         DHKC=DFOUR(1,2)
64813         IF(DP(3,5)+2D0*DHKC+DP(4,5).LE.0D0) GOTO 200
64814         DHKS=SQRT(DHKC**2-DP(3,5)*DP(4,5))
64815         DHK1=0.5D0*((DP(4,5)+DHKC)/DHKS-1D0)
64816         DHK2=0.5D0*((DP(3,5)+DHKC)/DHKS-1D0)
64817         IN1=N+NR+4*IS-3
64818         P(IN1,5)=SQRT(DP(3,5)+2D0*DHKC+DP(4,5))
64819         DO 690 J=1,4
64820           P(IN1,J)=(1D0+DHK1)*DP(1,J)-DHK2*DP(2,J)
64821           P(IN1+1,J)=(1D0+DHK2)*DP(2,J)-DHK1*DP(1,J)
64822   690   CONTINUE
64823   700 CONTINUE
64824  
64825 C...Begin initialization: sum up energy, set starting position.
64826       ISAV=I
64827       MSTU91=MSTU(90)
64828   710 NTRY=NTRY+1
64829       IF(NTRY.GT.100.AND.NTRYR.LE.8.AND.NR.GT.NRMIN) THEN
64830         PARU12=4D0*PARU12
64831         PARU13=2D0*PARU13
64832         GOTO 140
64833       ELSEIF(NTRY.GT.100) THEN
64834         CALL PYERRM(14,'(PYSTRF:) caught in infinite loop')
64835         IF(MSTU(21).GE.1) RETURN
64836       ENDIF
64837       I=ISAV
64838       MSTU(90)=MSTU91
64839       DO 730 J=1,4
64840         P(N+NRS,J)=0D0
64841         DO 720 IS=1,NR
64842           P(N+NRS,J)=P(N+NRS,J)+P(N+IS,J)
64843   720   CONTINUE
64844   730 CONTINUE
64845       DO 750 JT=1,2
64846         IRANK(JT)=0
64847         IF(MJU(JT).NE.0) IRANK(JT)=NJS(JT)
64848         IF(NS.GT.NR) IRANK(JT)=1
64849         IBARRK(JT)=0
64850         IE(JT)=K(N+1+(JT/2)*(NP-1),3)
64851         IN(3*JT+1)=N+NR+1+4*(JT/2)*(NS-1)
64852         IN(3*JT+2)=IN(3*JT+1)+1
64853         IN(3*JT+3)=N+NR+4*NS+2*JT-1
64854         DO 740 IN1=N+NR+2+JT,N+NR+4*NS-2+JT,4
64855           P(IN1,1)=2-JT
64856           P(IN1,2)=JT-1
64857           P(IN1,3)=1D0
64858   740   CONTINUE
64859   750 CONTINUE
64860  
64861 C.. MOPS variables and switches
64862       NRVMO=0
64863       XBMO=1D0
64864       MSTU(121)=0
64865       MSTU(122)=0
64866  
64867 C...Initialize flavour and pT variables for open string.
64868       IF(NS.LT.NR) THEN
64869         PX(1)=0D0
64870         PY(1)=0D0
64871         IF(NS.EQ.1.AND.MJU(1)+MJU(2).EQ.0) CALL PYPTDI(0,PX(1),PY(1))
64872         PX(2)=-PX(1)
64873         PY(2)=-PY(1)
64874         DO 760 JT=1,2
64875           KFL(JT)=K(IE(JT),2)
64876           IF(MJU(JT).NE.0) KFL(JT)=KFJS(JT)
64877           IF(MJU(JT).NE.0.AND.IABS(KFL(JT)).GT.1000) IBARRK(JT)=1
64878           MSTJ(93)=1
64879           PMQ(JT)=PYMASS(KFL(JT))
64880           GAM(JT)=0D0
64881   760   CONTINUE
64882  
64883 C...Closed string: random initial breakup flavour, pT and vertex.
64884       ELSE
64885         KFL(3)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
64886         IBMO=0
64887   770   CALL PYKFDI(KFL(3),0,KFL(1),KDUMP)
64888 C.. Closed string: first vertex diq attempt => enforced second
64889 C.. vertex diq
64890         IF(IABS(KFL(1)).GT.10)THEN
64891            IBMO=1
64892            MSTU(121)=0
64893            GOTO 770
64894         ENDIF
64895         IF(IBMO.EQ.1) MSTU(121)=-1
64896         KFL(2)=-KFL(1)
64897         CALL PYPTDI(KFL(1),PX(1),PY(1))
64898         PX(2)=-PX(1)
64899         PY(2)=-PY(1)
64900         PR3=MIN(25D0,0.1D0*P(N+NR+1,5)**2)
64901   780   CALL PYZDIS(KFL(1),KFL(2),PR3,Z)
64902         ZR=PR3/(Z*P(N+NR+1,5)**2)
64903         IF(ZR.GE.1D0) GOTO 780
64904         DO 790 JT=1,2
64905           MSTJ(93)=1
64906           PMQ(JT)=PYMASS(KFL(JT))
64907           GAM(JT)=PR3*(1D0-Z)/Z
64908           IN1=N+NR+3+4*(JT/2)*(NS-1)
64909           P(IN1,JT)=1D0-Z
64910           P(IN1,3-JT)=JT-1
64911           P(IN1,3)=(2-JT)*(1D0-Z)+(JT-1)*Z
64912           P(IN1+1,JT)=ZR
64913           P(IN1+1,3-JT)=2-JT
64914           P(IN1+1,3)=(2-JT)*(1D0-ZR)+(JT-1)*ZR
64915   790   CONTINUE
64916       ENDIF
64917 C.. MOPS variables
64918       DO 800 JT=1,2
64919          XTMO(JT)=1D0
64920          PM2QMO(JT)=PMQ(JT)**2
64921          IF(IABS(KFL(JT)).GT.10) PM2QMO(JT)=0D0
64922   800 CONTINUE
64923  
64924 C...Find initial transverse directions (i.e. spacelike four-vectors).
64925       DO 840 JT=1,2
64926         IF(JT.EQ.1.OR.NS.EQ.NR-1.OR.MJU(1)+MJU(2).NE.0) THEN
64927           IN1=IN(3*JT+1)
64928           IN3=IN(3*JT+3)
64929           DO 810 J=1,4
64930             DP(1,J)=P(IN1,J)
64931             DP(2,J)=P(IN1+1,J)
64932             DP(3,J)=0D0
64933             DP(4,J)=0D0
64934   810     CONTINUE
64935           DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
64936           DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
64937           DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
64938           DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
64939           DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
64940           IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
64941           IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
64942           IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
64943           IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
64944           DHC12=DFOUR(1,2)
64945           DHCX1=DFOUR(3,1)/DHC12
64946           DHCX2=DFOUR(3,2)/DHC12
64947           DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
64948           DHCY1=DFOUR(4,1)/DHC12
64949           DHCY2=DFOUR(4,2)/DHC12
64950           DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
64951           DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
64952           DO 820 J=1,4
64953             DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
64954             P(IN3,J)=DP(3,J)
64955             P(IN3+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
64956      &      DHCYX*DP(3,J))
64957   820     CONTINUE
64958         ELSE
64959           DO 830 J=1,4
64960             P(IN3+2,J)=P(IN3,J)
64961             P(IN3+3,J)=P(IN3+1,J)
64962   830     CONTINUE
64963         ENDIF
64964   840 CONTINUE
64965  
64966 C...Remove energy used up in junction string fragmentation.
64967       IF(MJU(1)+MJU(2).GT.0) THEN
64968         DO 860 JT=1,2
64969           IF(NJS(JT).EQ.0) GOTO 860
64970           DO 850 J=1,4
64971             P(N+NRS,J)=P(N+NRS,J)-PJS(JT+2,J)
64972   850     CONTINUE
64973   860   CONTINUE
64974         PARJST=PARJ(33)
64975         IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
64976         WMIN=PARJST+PMQ(1)+PMQ(2)
64977         WREM2=FOUR(N+NRS,N+NRS)
64978         IF(P(N+NRS,4).LT.0D0.OR.WREM2.LT.WMIN**2) THEN
64979           NTRYWR=NTRYWR+1
64980           IF(MOD(NTRYWR,20).NE.0) NTRYR=NTRYR-1
64981           GOTO 140
64982         ENDIF
64983       ENDIF
64984  
64985 C...Produce new particle: side, origin.
64986   870 I=I+1
64987       IF(2*I-NSAV.GE.MSTU(4)-MSTU(32)-5) THEN
64988         CALL PYERRM(11,'(PYSTRF:) no more memory left in PYJETS')
64989         IF(MSTU(21).GE.1) RETURN
64990       ENDIF
64991 C.. New side priority for popcorn systems
64992       IF(MSTU(121).LE.0)THEN
64993          JT=1.5D0+PYR(0)
64994          IF(IABS(KFL(3-JT)).GT.10) JT=3-JT
64995          IF(IABS(KFL(3-JT)).GE.4.AND.IABS(KFL(3-JT)).LE.8) JT=3-JT
64996       ENDIF
64997       JR=3-JT
64998       JS=3-2*JT
64999       IRANK(JT)=IRANK(JT)+1
65000       K(I,1)=1
65001       K(I,4)=0
65002       K(I,5)=0
65003  
65004 C...Generate flavour, hadron and pT.
65005   880 K(I,3)=IE(JT)
65006       CALL PYKFDI(KFL(JT),0,KFL(3),K(I,2))
65007       IF(K(I,2).EQ.0) GOTO 710
65008       MU90MO=MSTU(90)
65009       IF(MSTU(121).EQ.-1) GOTO 910
65010       IF(IRANK(JT).EQ.1.AND.IABS(KFL(JT)).LE.10.AND.
65011      &IABS(KFL(3)).GT.10) THEN
65012         IF(PYR(0).GT.PARJ(19)) GOTO 880
65013       ENDIF
65014       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
65015      &K(I,3)=IJUORI(JT)
65016       P(I,5)=PYMASS(K(I,2))
65017       CALL PYPTDI(KFL(JT),PX(3),PY(3))
65018       PR(JT)=P(I,5)**2+(PX(JT)+PX(3))**2+(PY(JT)+PY(3))**2
65019  
65020 C...Final hadrons for small invariant mass.
65021       MSTJ(93)=1
65022       PMQ(3)=PYMASS(KFL(3))
65023       PARJST=PARJ(33)
65024       IF(MSTJ(11).EQ.2) PARJST=PARJ(34)
65025       WMIN=PARJST+PMQ(1)+PMQ(2)+PARJ(36)*PMQ(3)
65026       IF(IABS(KFL(JT)).GT.10.AND.IABS(KFL(3)).GT.10) WMIN=
65027      &WMIN-0.5D0*PARJ(36)*PMQ(3)
65028       WREM2=FOUR(N+NRS,N+NRS)
65029       IF(WREM2.LT.0.10D0) GOTO 710
65030       IF(WREM2.LT.MAX(WMIN*(1D0+(2D0*PYR(0)-1D0)*PARJ(37)),
65031      &PARJ(32)+PMQ(1)+PMQ(2))**2) GOTO 1080
65032  
65033 C...Choose z, which gives Gamma. Shift z for heavy flavours.
65034       CALL PYZDIS(KFL(JT),KFL(3),PR(JT),Z)
65035       IF(IABS(KFL(JT)).GE.4.AND.IABS(KFL(JT)).LE.8.AND.
65036      &MSTU(90).LT.8) THEN
65037         MSTU(90)=MSTU(90)+1
65038         MSTU(90+MSTU(90))=I
65039         PARU(90+MSTU(90))=Z
65040       ENDIF
65041       KFL1A=IABS(KFL(1))
65042       KFL2A=IABS(KFL(2))
65043       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
65044      &MOD(KFL2A/1000,10)).GE.4) THEN
65045         PR(JR)=(PMQ(JR)+PMQ(3))**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
65046         PW12=SQRT(MAX(0D0,(WREM2-PR(1)-PR(2))**2-4D0*PR(1)*PR(2)))
65047         Z=(WREM2+PR(JT)-PR(JR)+PW12*(2D0*Z-1D0))/(2D0*WREM2)
65048         PR(JR)=(PMQ(JR)+PARJST)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
65049         IF((1D0-Z)*(WREM2-PR(JT)/Z).LT.PR(JR)) GOTO 1080
65050       ENDIF
65051       GAM(3)=(1D0-Z)*(GAM(JT)+PR(JT)/Z)
65052  
65053 C.. MOPS baryon model modification
65054       XTMO3=(1D0-Z)*XTMO(JT)
65055       IF(IABS(KFL(3)).LE.10) NRVMO=0
65056       IF(IABS(KFL(3)).GT.10.AND.MSTJ(12).GE.4) THEN
65057          GTSTMO=1D0
65058          PTSTMO=1D0
65059          RTSTMO=PYR(0)
65060          IF(IABS(KFL(JT)).LE.10)THEN
65061             XBMO=MIN(XTMO3,1D0-(2D-10))
65062             GBMO=GAM(3)
65063             PMMO=0D0
65064             PGMO=GBMO+LOG(1D0-XBMO)*PM2QMO(JT)
65065             GTSTMO=1D0-PARF(192)**PGMO
65066          ELSE
65067             IF(IRANK(JT).EQ.1) THEN
65068                GBMO=GAM(JT)
65069                PMMO=0D0
65070                XBMO=1D0
65071             ENDIF
65072             IF(XBMO.LT.1D0-(1D-10))THEN
65073                PGNMO=GBMO*XTMO3/XBMO+PM2QMO(JT)*LOG(1D0-XTMO3)
65074                GTSTMO=(1D0-PARF(192)**PGNMO)/(1D0-PARF(192)**PGMO)
65075                PGMO=PGNMO
65076             ENDIF
65077             IF(MSTJ(12).GE.5)THEN
65078                PMNMO=SQRT((XBMO-XTMO3)*(GAM(3)/XTMO3-GBMO/XBMO))
65079                PMMO=PMMO+PMAS(PYCOMP(K(I,2)),1)-PMAS(PYCOMP(K(I,2)),3)
65080                PTSTMO=EXP((PMMO-PMNMO)*PARF(193))
65081                PMMO=PMNMO
65082             ENDIF
65083          ENDIF
65084  
65085 C.. MOPS Accepting popcorn system hadron.
65086          IF(PTSTMO*GTSTMO.GT.RTSTMO) THEN
65087             IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) THEN
65088                NRVMO=I-N-NR
65089                IF(I+NRVMO.GT.MSTU(4)-MSTU(32)-5) THEN
65090                   CALL PYERRM(11,
65091      &                 '(PYSTRF:) no more memory left in PYJETS')
65092                   IF(MSTU(21).GE.1) RETURN
65093                ENDIF
65094                IMO=I
65095                KFLMO=KFL(JT)
65096                PMQMO=PMQ(JT)
65097                PXMO=PX(JT)
65098                PYMO=PY(JT)
65099                GAMMO=GAM(JT)
65100                IRMO=IRANK(JT)
65101                XMO=XTMO(JT)
65102                DO 900 J=1,9
65103                   IF(J.LE.5) THEN
65104                      DO 890 LINE=1,I-N-NR
65105                         P(MSTU(4)-MSTU(32)-LINE,J)=P(N+NR+LINE,J)
65106                         K(MSTU(4)-MSTU(32)-LINE,J)=K(N+NR+LINE,J)
65107   890                CONTINUE
65108                   ENDIF
65109                   INMO(J)=IN(J)
65110   900          CONTINUE
65111             ENDIF
65112          ELSE
65113 C..Reject popcorn system, flag=-1 if enforcing new one
65114             MSTU(121)=-1
65115             IF(PTSTMO.GT.RTSTMO) MSTU(121)=-2
65116          ENDIF
65117       ENDIF
65118  
65119  
65120 C..Lift restoring string outside MOPS block
65121   910 IF(MSTU(121).LT.0) THEN
65122          IF(MSTU(121).EQ.-2) MSTU(121)=0
65123          MSTU(90)=MU90MO
65124          NRVMO=0
65125          IF(IRANK(JT).EQ.1.OR.IABS(KFL(JT)).LE.10) GOTO 880
65126          I=IMO
65127          KFL(JT)=KFLMO
65128          PMQ(JT)=PMQMO
65129          PX(JT)=PXMO
65130          PY(JT)=PYMO
65131          GAM(JT)=GAMMO
65132          IRANK(JT)=IRMO
65133          XTMO(JT)=XMO
65134          DO 930 J=1,9
65135             IF(J.LE.5) THEN
65136                DO 920 LINE=1,I-N-NR
65137                   P(N+NR+LINE,J)=P(MSTU(4)-MSTU(32)-LINE,J)
65138                   K(N+NR+LINE,J)=K(MSTU(4)-MSTU(32)-LINE,J)
65139   920          CONTINUE
65140             ENDIF
65141             IN(J)=INMO(J)
65142   930    CONTINUE
65143          GOTO 880
65144       ENDIF
65145       XTMO(JT)=XTMO3
65146 C.. MOPS end of modification
65147  
65148       DO 940 J=1,3
65149         IN(J)=IN(3*JT+J)
65150   940 CONTINUE
65151  
65152 C...Stepping within or from 'low' string region easy.
65153       IF(IN(1)+1.EQ.IN(2).AND.Z*P(IN(1)+2,3)*P(IN(2)+2,3)*
65154      &P(IN(1),5)**2.GE.PR(JT)) THEN
65155         P(IN(JT)+2,4)=Z*P(IN(JT)+2,3)
65156         P(IN(JR)+2,4)=PR(JT)/(P(IN(JT)+2,4)*P(IN(1),5)**2)
65157         DO 950 J=1,4
65158           P(I,J)=(PX(JT)+PX(3))*P(IN(3),J)+(PY(JT)+PY(3))*P(IN(3)+1,J)
65159   950   CONTINUE
65160         GOTO 1040
65161       ELSEIF(IN(1)+1.EQ.IN(2)) THEN
65162         P(IN(JR)+2,4)=P(IN(JR)+2,3)
65163         P(IN(JR)+2,JT)=1D0
65164         IN(JR)=IN(JR)+4*JS
65165         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 710
65166         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
65167           P(IN(JT)+2,4)=P(IN(JT)+2,3)
65168           P(IN(JT)+2,JT)=0D0
65169           IN(JT)=IN(JT)+4*JS
65170         ENDIF
65171       ENDIF
65172  
65173 C...Find new transverse directions (i.e. spacelike string vectors).
65174   960 IF(JS*IN(1).GT.JS*IN(3*JR+1).OR.JS*IN(2).GT.JS*IN(3*JR+2).OR.
65175      &IN(1).GT.IN(2)) GOTO 710
65176       IF(IN(1).NE.IN(3*JT+1).OR.IN(2).NE.IN(3*JT+2)) THEN
65177         DO 970 J=1,4
65178           DP(1,J)=P(IN(1),J)
65179           DP(2,J)=P(IN(2),J)
65180           DP(3,J)=0D0
65181           DP(4,J)=0D0
65182   970   CONTINUE
65183         DP(1,4)=SQRT(DP(1,1)**2+DP(1,2)**2+DP(1,3)**2)
65184         DP(2,4)=SQRT(DP(2,1)**2+DP(2,2)**2+DP(2,3)**2)
65185         DHC12=DFOUR(1,2)
65186         IF(DHC12.LE.1D-2) THEN
65187           P(IN(JT)+2,4)=P(IN(JT)+2,3)
65188           P(IN(JT)+2,JT)=0D0
65189           IN(JT)=IN(JT)+4*JS
65190           GOTO 960
65191         ENDIF
65192         IN(3)=N+NR+4*NS+5
65193         DP(5,1)=DP(1,1)/DP(1,4)-DP(2,1)/DP(2,4)
65194         DP(5,2)=DP(1,2)/DP(1,4)-DP(2,2)/DP(2,4)
65195         DP(5,3)=DP(1,3)/DP(1,4)-DP(2,3)/DP(2,4)
65196         IF(DP(5,1)**2.LE.DP(5,2)**2+DP(5,3)**2) DP(3,1)=1D0
65197         IF(DP(5,1)**2.GT.DP(5,2)**2+DP(5,3)**2) DP(3,3)=1D0
65198         IF(DP(5,2)**2.LE.DP(5,1)**2+DP(5,3)**2) DP(4,2)=1D0
65199         IF(DP(5,2)**2.GT.DP(5,1)**2+DP(5,3)**2) DP(4,3)=1D0
65200         DHCX1=DFOUR(3,1)/DHC12
65201         DHCX2=DFOUR(3,2)/DHC12
65202         DHCXX=1D0/SQRT(1D0+2D0*DHCX1*DHCX2*DHC12)
65203         DHCY1=DFOUR(4,1)/DHC12
65204         DHCY2=DFOUR(4,2)/DHC12
65205         DHCYX=DHCXX*(DHCX1*DHCY2+DHCX2*DHCY1)*DHC12
65206         DHCYY=1D0/SQRT(1D0+2D0*DHCY1*DHCY2*DHC12-DHCYX**2)
65207         DO 980 J=1,4
65208           DP(3,J)=DHCXX*(DP(3,J)-DHCX2*DP(1,J)-DHCX1*DP(2,J))
65209           P(IN(3),J)=DP(3,J)
65210           P(IN(3)+1,J)=DHCYY*(DP(4,J)-DHCY2*DP(1,J)-DHCY1*DP(2,J)-
65211      &    DHCYX*DP(3,J))
65212   980   CONTINUE
65213 C...Express pT with respect to new axes, if sensible.
65214         PXP=-(PX(3)*FOUR(IN(3*JT+3),IN(3))+PY(3)*
65215      &  FOUR(IN(3*JT+3)+1,IN(3)))
65216         PYP=-(PX(3)*FOUR(IN(3*JT+3),IN(3)+1)+PY(3)*
65217      &  FOUR(IN(3*JT+3)+1,IN(3)+1))
65218         IF(ABS(PXP**2+PYP**2-PX(3)**2-PY(3)**2).LT.0.01D0) THEN
65219           PX(3)=PXP
65220           PY(3)=PYP
65221         ENDIF
65222       ENDIF
65223  
65224 C...Sum up known four-momentum. Gives coefficients for m2 expression.
65225       DO 1010 J=1,4
65226         DHG(J)=0D0
65227         P(I,J)=PX(JT)*P(IN(3*JT+3),J)+PY(JT)*P(IN(3*JT+3)+1,J)+
65228      &  PX(3)*P(IN(3),J)+PY(3)*P(IN(3)+1,J)
65229         DO 990 IN1=IN(3*JT+1),IN(1)-4*JS,4*JS
65230           P(I,J)=P(I,J)+P(IN1+2,3)*P(IN1,J)
65231   990   CONTINUE
65232         DO 1000 IN2=IN(3*JT+2),IN(2)-4*JS,4*JS
65233           P(I,J)=P(I,J)+P(IN2+2,3)*P(IN2,J)
65234  1000   CONTINUE
65235  1010 CONTINUE
65236       DHM(1)=FOUR(I,I)
65237       DHM(2)=2D0*FOUR(I,IN(1))
65238       DHM(3)=2D0*FOUR(I,IN(2))
65239       DHM(4)=2D0*FOUR(IN(1),IN(2))
65240  
65241 C...Find coefficients for Gamma expression.
65242       DO 1030 IN2=IN(1)+1,IN(2),4
65243         DO 1020 IN1=IN(1),IN2-1,4
65244           DHC=2D0*FOUR(IN1,IN2)
65245           DHG(1)=DHG(1)+P(IN1+2,JT)*P(IN2+2,JT)*DHC
65246           IF(IN1.EQ.IN(1)) DHG(2)=DHG(2)-JS*P(IN2+2,JT)*DHC
65247           IF(IN2.EQ.IN(2)) DHG(3)=DHG(3)+JS*P(IN1+2,JT)*DHC
65248           IF(IN1.EQ.IN(1).AND.IN2.EQ.IN(2)) DHG(4)=DHG(4)-DHC
65249  1020   CONTINUE
65250  1030 CONTINUE
65251  
65252 C...Solve (m2, Gamma) equation system for energies taken.
65253       DHS1=DHM(JR+1)*DHG(4)-DHM(4)*DHG(JR+1)
65254       IF(ABS(DHS1).LT.1D-4) GOTO 710
65255       DHS2=DHM(4)*(GAM(3)-DHG(1))-DHM(JT+1)*DHG(JR+1)-DHG(4)*
65256      &(P(I,5)**2-DHM(1))+DHG(JT+1)*DHM(JR+1)
65257       DHS3=DHM(JT+1)*(GAM(3)-DHG(1))-DHG(JT+1)*(P(I,5)**2-DHM(1))
65258       P(IN(JR)+2,4)=0.5D0*(SQRT(MAX(0D0,DHS2**2-4D0*DHS1*DHS3))/
65259      &ABS(DHS1)-DHS2/DHS1)
65260       IF(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4).LE.0D0) GOTO 710
65261       P(IN(JT)+2,4)=(P(I,5)**2-DHM(1)-DHM(JR+1)*P(IN(JR)+2,4))/
65262      &(DHM(JT+1)+DHM(4)*P(IN(JR)+2,4))
65263  
65264 C...Step to new region if necessary.
65265       IF(P(IN(JR)+2,4).GT.P(IN(JR)+2,3)) THEN
65266         P(IN(JR)+2,4)=P(IN(JR)+2,3)
65267         P(IN(JR)+2,JT)=1D0
65268         IN(JR)=IN(JR)+4*JS
65269         IF(JS*IN(JR).GT.JS*IN(4*JR)) GOTO 710
65270         IF(FOUR(IN(1),IN(2)).LE.1D-2) THEN
65271           P(IN(JT)+2,4)=P(IN(JT)+2,3)
65272           P(IN(JT)+2,JT)=0D0
65273           IN(JT)=IN(JT)+4*JS
65274         ENDIF
65275         GOTO 960
65276       ELSEIF(P(IN(JT)+2,4).GT.P(IN(JT)+2,3)) THEN
65277         P(IN(JT)+2,4)=P(IN(JT)+2,3)
65278         P(IN(JT)+2,JT)=0D0
65279         IN(JT)=IN(JT)+4*JS
65280         GOTO 960
65281       ENDIF
65282  
65283 C...Four-momentum of particle. Remaining quantities. Loop back.
65284  1040 DO 1050 J=1,4
65285         P(I,J)=P(I,J)+P(IN(1)+2,4)*P(IN(1),J)+P(IN(2)+2,4)*P(IN(2),J)
65286         P(N+NRS,J)=P(N+NRS,J)-P(I,J)
65287  1050 CONTINUE
65288       IF(P(IN(1)+2,4).GT.1D0+PARU(14).OR.P(IN(1)+2,4).LT.-PARU(14).OR.
65289      &P(IN(2)+2,4).GT.1D0+PARU(14).OR.P(IN(2)+2,4).LT.-PARU(14))
65290      &GOTO 200
65291       IF(P(I,4).LT.P(I,5)) GOTO 710
65292       KFL(JT)=-KFL(3)
65293       PMQ(JT)=PMQ(3)
65294       PX(JT)=-PX(3)
65295       PY(JT)=-PY(3)
65296       GAM(JT)=GAM(3)
65297       IF(IN(3).NE.IN(3*JT+3)) THEN
65298         DO 1060 J=1,4
65299           P(IN(3*JT+3),J)=P(IN(3),J)
65300           P(IN(3*JT+3)+1,J)=P(IN(3)+1,J)
65301  1060   CONTINUE
65302       ENDIF
65303       DO 1070 JQ=1,2
65304         IN(3*JT+JQ)=IN(JQ)
65305         P(IN(JQ)+2,3)=P(IN(JQ)+2,3)-P(IN(JQ)+2,4)
65306         P(IN(JQ)+2,JT)=P(IN(JQ)+2,JT)-JS*(3-2*JQ)*P(IN(JQ)+2,4)
65307  1070 CONTINUE
65308       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
65309      &IBARRK(JT)=0
65310       GOTO 870
65311  
65312 C...Final hadron: side, flavour, hadron, mass.
65313  1080 I=I+1
65314       K(I,1)=1
65315       K(I,3)=IE(JR)
65316       K(I,4)=0
65317       K(I,5)=0
65318       CALL PYKFDI(KFL(JR),-KFL(3),KFLDMP,K(I,2))
65319       IF(K(I,2).EQ.0) GOTO 710
65320       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I-1,2)),10000).GT.1000)
65321      &IBARRK(JT)=0
65322       IF(IBARRK(JT).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
65323      &K(I,3)=IJUORI(JT)
65324       IF(IBARRK(JR).EQ.1.AND.MOD(IABS(K(I,2)),10000).GT.1000)
65325      &K(I,3)=IJUORI(JR)
65326       P(I,5)=PYMASS(K(I,2))
65327       PR(JR)=P(I,5)**2+(PX(JR)-PX(3))**2+(PY(JR)-PY(3))**2
65328  
65329 C...Final two hadrons: find common setup of four-vectors.
65330       JQ=1
65331       IF(P(IN(4)+2,3)*P(IN(5)+2,3)*FOUR(IN(4),IN(5)).LT.
65332      &P(IN(7)+2,3)*P(IN(8)+2,3)*FOUR(IN(7),IN(8))) JQ=2
65333       DHC12=FOUR(IN(3*JQ+1),IN(3*JQ+2))
65334       DHR1=FOUR(N+NRS,IN(3*JQ+2))/DHC12
65335       DHR2=FOUR(N+NRS,IN(3*JQ+1))/DHC12
65336       IF(IN(4).NE.IN(7).OR.IN(5).NE.IN(8)) THEN
65337         PX(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3))-PX(JQ)
65338         PY(3-JQ)=-FOUR(N+NRS,IN(3*JQ+3)+1)-PY(JQ)
65339         PR(3-JQ)=P(I+(JT+JQ-3)**2-1,5)**2+(PX(3-JQ)+(2*JQ-3)*JS*
65340      &  PX(3))**2+(PY(3-JQ)+(2*JQ-3)*JS*PY(3))**2
65341       ENDIF
65342  
65343 C...Solve kinematics for final two hadrons, if possible.
65344       WREM2=2D0*DHR1*DHR2*DHC12
65345       FD=(SQRT(PR(1))+SQRT(PR(2)))/SQRT(WREM2)
65346       IF(MJU(1)+MJU(2).NE.0.AND.I.EQ.ISAV+2.AND.FD.GE.1D0) GOTO 200
65347       IF(FD.GE.1D0) GOTO 710
65348       FA=WREM2+PR(JT)-PR(JR)
65349       FB=SQRT(MAX(0D0,FA**2-4D0*WREM2*PR(JT)))
65350       PREVCF=PARJ(42)
65351       IF(MSTJ(11).EQ.2) PREVCF=PARJ(39)
65352       PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*FB*PARJ(40))))
65353       FB=SIGN(FB,JS*(PYR(0)-PREV))
65354       KFL1A=IABS(KFL(1))
65355       KFL2A=IABS(KFL(2))
65356       IF(MAX(MOD(KFL1A,10),MOD(KFL1A/1000,10),MOD(KFL2A,10),
65357      &MOD(KFL2A/1000,10)).GE.6) FB=SIGN(SQRT(MAX(0D0,FA**2-
65358      &4D0*WREM2*PR(JT))),DBLE(JS))
65359       DO 1090 J=1,4
65360         P(I-1,J)=(PX(JT)+PX(3))*P(IN(3*JQ+3),J)+(PY(JT)+PY(3))*
65361      &  P(IN(3*JQ+3)+1,J)+0.5D0*(DHR1*(FA+FB)*P(IN(3*JQ+1),J)+
65362      &  DHR2*(FA-FB)*P(IN(3*JQ+2),J))/WREM2
65363         P(I,J)=P(N+NRS,J)-P(I-1,J)
65364  1090 CONTINUE
65365       IF(P(I-1,4).LT.P(I-1,5).OR.P(I,4).LT.P(I,5)) GOTO 710
65366       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
65367       DM2F2=P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2-P(I,5)**2
65368       IF(DM2F1.GT.1D-10*P(I-1,4)**2.OR.DM2F2.GT.1D-10*P(I,4)**2) THEN
65369         NTRYFN=NTRYFN+1
65370         IF(NTRYFN.LT.100) GOTO 140
65371         CALL PYERRM(13,'(PYSTRF:) bad energies for final two hadrons')
65372       ENDIF
65373  
65374 C...Mark jets as fragmented and give daughter pointers.
65375       N=I-NRS+1
65376       DO 1100 I=NSAV+1,NSAV+NP
65377         IM=K(I,3)
65378         K(IM,1)=K(IM,1)+10
65379         IF(MSTU(16).NE.2) THEN
65380           K(IM,4)=NSAV+1
65381           K(IM,5)=NSAV+1
65382         ELSE
65383           K(IM,4)=NSAV+2
65384           K(IM,5)=N
65385         ENDIF
65386  1100 CONTINUE
65387  
65388 C...Document string system. Move up particles.
65389       NSAV=NSAV+1
65390       K(NSAV,1)=11
65391       K(NSAV,2)=92
65392       K(NSAV,3)=IP
65393       K(NSAV,4)=NSAV+1
65394       K(NSAV,5)=N
65395       DO 1110 J=1,4
65396         P(NSAV,J)=DPS(J)
65397         V(NSAV,J)=V(IP,J)
65398  1110 CONTINUE
65399       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
65400       V(NSAV,5)=0D0
65401       DO 1130 I=NSAV+1,N
65402         DO 1120 J=1,5
65403           K(I,J)=K(I+NRS-1,J)
65404           P(I,J)=P(I+NRS-1,J)
65405           V(I,J)=0D0
65406  1120   CONTINUE
65407  1130 CONTINUE
65408       MSTU91=MSTU(90)
65409       DO 1140 IZ=MSTU90+1,MSTU91
65410         MSTU9T(IZ)=MSTU(90+IZ)-NRS+1-NSAV+N
65411         PARU9T(IZ)=PARU(90+IZ)
65412  1140 CONTINUE
65413       MSTU(90)=MSTU90
65414  
65415 C...Order particles in rank along the chain. Update mother pointer.
65416       DO 1160 I=NSAV+1,N
65417         DO 1150 J=1,5
65418           K(I-NSAV+N,J)=K(I,J)
65419           P(I-NSAV+N,J)=P(I,J)
65420  1150   CONTINUE
65421  1160 CONTINUE
65422       I1=NSAV
65423       DO 1190 I=N+1,2*N-NSAV
65424         IF(K(I,3).NE.IE(1).AND.K(I,3).NE.IJUORI(1)) GOTO 1190
65425         I1=I1+1
65426         DO 1170 J=1,5
65427           K(I1,J)=K(I,J)
65428           P(I1,J)=P(I,J)
65429  1170   CONTINUE
65430         IF(MSTU(16).NE.2) K(I1,3)=NSAV
65431         DO 1180 IZ=MSTU90+1,MSTU91
65432           IF(MSTU9T(IZ).EQ.I) THEN
65433             MSTU(90)=MSTU(90)+1
65434             MSTU(90+MSTU(90))=I1
65435             PARU(90+MSTU(90))=PARU9T(IZ)
65436           ENDIF
65437  1180   CONTINUE
65438  1190 CONTINUE
65439       DO 1220 I=2*N-NSAV,N+1,-1
65440         IF(K(I,3).EQ.IE(1).OR.K(I,3).EQ.IJUORI(1)) GOTO 1220
65441         I1=I1+1
65442         DO 1200 J=1,5
65443           K(I1,J)=K(I,J)
65444           P(I1,J)=P(I,J)
65445  1200   CONTINUE
65446         IF(MSTU(16).NE.2) K(I1,3)=NSAV
65447         DO 1210 IZ=MSTU90+1,MSTU91
65448           IF(MSTU9T(IZ).EQ.I) THEN
65449             MSTU(90)=MSTU(90)+1
65450             MSTU(90+MSTU(90))=I1
65451             PARU(90+MSTU(90))=PARU9T(IZ)
65452           ENDIF
65453  1210   CONTINUE
65454  1220 CONTINUE
65455  
65456 C...Boost back particle system. Set production vertices.
65457       IF(MBST.EQ.0) THEN
65458         MSTU(33)=1
65459         CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),
65460      &  DPS(3)/DPS(4))
65461       ELSE
65462         DO 1230 I=NSAV+1,N
65463           HHPMT=P(I,1)**2+P(I,2)**2+P(I,5)**2
65464           IF(P(I,3).GT.0D0) THEN
65465             HHPEZ=(P(I,4)+P(I,3))*HHBZ
65466             P(I,3)=0.5D0*(HHPEZ-HHPMT/HHPEZ)
65467             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
65468           ELSE
65469             HHPEZ=(P(I,4)-P(I,3))/HHBZ
65470             P(I,3)=-0.5D0*(HHPEZ-HHPMT/HHPEZ)
65471             P(I,4)=0.5D0*(HHPEZ+HHPMT/HHPEZ)
65472           ENDIF
65473  1230   CONTINUE
65474       ENDIF
65475       DO 1250 I=NSAV+1,N
65476         DO 1240 J=1,4
65477           V(I,J)=V(IP,J)
65478  1240   CONTINUE
65479  1250 CONTINUE
65480  
65481       RETURN
65482       END
65483  
65484 C*********************************************************************
65485  
65486 C...PYJURF
65487 C...From three given input vectors in PJU the boost VJU from
65488 C...the "lab frame" to the junction rest frame is constructed.
65489  
65490       SUBROUTINE PYJURF(PJU,VJU)
65491  
65492 C...Double precision and integer declarations.
65493       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65494       IMPLICIT INTEGER(I-N)
65495  
65496 C...Input, output and local arrays.
65497       DIMENSION PJU(3,5),VJU(5),PSUM(5),A(3,3),PENEW(3),PCM(5,5)
65498       DATA TWOPI/6.283186D0/
65499  
65500 C...Calculate masses and other invariants.
65501       DO 100 J=1,4
65502         PSUM(J)=PJU(1,J)+PJU(2,J)+PJU(3,J)
65503   100 CONTINUE
65504       PSUM2=PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2
65505       PSUM(5)=SQRT(PSUM2)
65506       DO 120 I=1,3
65507         DO 110 J=1,3
65508           A(I,J)=PJU(I,4)*PJU(J,4)-PJU(I,1)*PJU(J,1)-
65509      &    PJU(I,2)*PJU(J,2)-PJU(I,3)*PJU(J,3)
65510   110   CONTINUE
65511   120 CONTINUE
65512  
65513 C...Pick I to be most massive parton and J to be the one closest to I.
65514       ITRY=0
65515       I=1
65516       IF(A(2,2).GT.A(1,1)) I=2
65517       IF(A(3,3).GT.MAX(A(1,1),A(2,2))) I=3
65518   130 ITRY=ITRY+1
65519       J=1+MOD(I,3)
65520       K=1+MOD(J,3)
65521       IF(A(I,K)**2*A(J,J).LT.A(I,J)**2*A(K,K)) THEN
65522         K=1+MOD(I,3)
65523         J=1+MOD(K,3)
65524       ENDIF
65525       PMI2=A(I,I)
65526       PMJ2=A(J,J)
65527       PMK2=A(K,K)
65528       AIJ=A(I,J)
65529       AIK=A(I,K)
65530       AJK=A(J,K)
65531  
65532 C...Trivial find new parton energies if all three partons are massless.
65533       IF(PMI2.LT.1D-4) THEN
65534         PEI=SQRT(2D0*AIK*AIJ/(3D0*AJK))
65535         PEJ=SQRT(2D0*AJK*AIJ/(3D0*AIK))
65536         PEK=SQRT(2D0*AIK*AJK/(3D0*AIJ))
65537  
65538 C...Else find momentum range for parton I and values at extremes.
65539       ELSE
65540         PAIMIN=0D0
65541         PEIMIN=SQRT(PMI2)
65542         PEJMIN=AIJ/PEIMIN
65543         PEKMIN=AIK/PEIMIN
65544         PAJMIN=SQRT(MAX(0D0,PEJMIN**2-PMJ2))
65545         PAKMIN=SQRT(MAX(0D0,PEKMIN**2-PMK2))
65546         FMIN=PEJMIN*PEKMIN+0.5D0*PAJMIN*PAKMIN-AJK
65547         PEIMAX=(AIJ+AIK)/SQRT(PMJ2+PMK2+2D0*AJK)
65548         IF(PMJ2.GT.1D-4) PEIMAX=AIJ/SQRT(PMJ2)
65549         PAIMAX=SQRT(MAX(0D0,PEIMAX**2-PMI2))
65550         HI=PEIMAX**2-0.25D0*PAIMAX**2
65551         PAJMAX=(PEIMAX*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-
65552      &  0.5D0*PAIMAX*AIJ)/HI
65553         PAKMAX=(PEIMAX*SQRT(MAX(0D0,AIK**2-PMK2*HI))-
65554      &  0.5D0*PAIMAX*AIK)/HI
65555         PEJMAX=SQRT(PAJMAX**2+PMJ2)
65556         PEKMAX=SQRT(PAKMAX**2+PMK2)
65557         FMAX=PEJMAX*PEKMAX+0.5D0*PAJMAX*PAKMAX-AJK
65558  
65559 C...If unexpected values at upper endpoint then pick another parton.
65560         IF(FMAX.GT.0D0.AND.ITRY.LE.2) THEN
65561           I1=1+MOD(I,3)
65562           IF(A(I1,I1).GE.1D-4) THEN
65563             I=I1
65564             GOTO 130
65565           ENDIF
65566           ITRY=ITRY+1
65567           I1=1+MOD(I,3)
65568           IF(ITRY.LE.2.AND.A(I1,I1).GE.1D-4) THEN
65569             I=I1
65570             GOTO 130
65571           ENDIF
65572         ENDIF
65573  
65574 C..Start binary + linear search to find solution inside range.
65575         ITER=0
65576         ITMIN=0
65577         ITMAX=0
65578         PAI=0.5D0*(PAIMIN+PAIMAX)
65579   140   ITER=ITER+1
65580  
65581 C...Derive momentum of other two partons and distance to root.
65582         PEI=SQRT(PAI**2+PMI2)
65583         HI=PEI**2-0.25D0*PAI**2
65584         PAJ=(PEI*SQRT(MAX(0D0,AIJ**2-PMJ2*HI))-0.5D0*PAI*AIJ)/HI
65585         PEJ=SQRT(PAJ**2+PMJ2)
65586         PAK=(PEI*SQRT(MAX(0D0,AIK**2-PMK2*HI))-0.5D0*PAI*AIK)/HI
65587         PEK=SQRT(PAK**2+PMK2)
65588         FNOW=PEJ*PEK+0.5D0*PAJ*PAK-AJK
65589  
65590 C...Pick next I momentum to explore, hopefully closer to root.
65591         IF(FNOW.GT.0D0) THEN
65592           PAIMIN=PAI
65593           FMIN=FNOW
65594           ITMIN=ITMIN+1
65595         ELSE
65596           PAIMAX=PAI
65597           FMAX=FNOW
65598           ITMAX=ITMAX+1
65599         ENDIF
65600         IF((ITER.LT.10.OR.ITMIN.LE.1.OR.ITMAX.LE.1).AND.ITER.LT.20)
65601      &  THEN
65602           PAI=0.5D0*(PAIMIN+PAIMAX)
65603           GOTO 140
65604         ELSEIF(ITER.LT.40.AND.FMIN.GT.0D0.AND.FMAX.LT.0D0.AND.
65605      &  ABS(FNOW).GT.1D-12*PSUM2) THEN
65606           PAI=PAIMIN+(PAIMAX-PAIMIN)*FMIN/(FMIN-FMAX)
65607           GOTO 140
65608         ENDIF
65609       ENDIF
65610  
65611 C...Now know energies in junction rest frame.
65612       PENEW(I)=PEI
65613       PENEW(J)=PEJ
65614       PENEW(K)=PEK
65615  
65616 C...Boost (copy of) partons to their rest frame.
65617       VXCM=-PSUM(1)/PSUM(5)
65618       VYCM=-PSUM(2)/PSUM(5)
65619       VZCM=-PSUM(3)/PSUM(5)
65620       GAMCM=SQRT(1D0+VXCM**2+VYCM**2+VZCM**2)
65621       DO 150 I=1,3
65622         FAC1=PJU(I,1)*VXCM+PJU(I,2)*VYCM+PJU(I,3)*VZCM
65623         FAC2=FAC1/(1D0+GAMCM)+PJU(I,4)
65624         PCM(I,1)=PJU(I,1)+FAC2*VXCM
65625         PCM(I,2)=PJU(I,2)+FAC2*VYCM
65626         PCM(I,3)=PJU(I,3)+FAC2*VZCM
65627         PCM(I,4)=PJU(I,4)*GAMCM+FAC1
65628         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
65629   150 CONTINUE
65630  
65631 C...Construct difference vectors and boost to junction rest frame.
65632       DO 160 J=1,3
65633         PCM(4,J)=PCM(1,J)/PCM(1,4)-PCM(2,J)/PCM(2,4)
65634         PCM(5,J)=PCM(1,J)/PCM(1,4)-PCM(3,J)/PCM(3,4)
65635   160 CONTINUE
65636       PCM(4,4)=PENEW(1)/PCM(1,4)-PENEW(2)/PCM(2,4)
65637       PCM(5,4)=PENEW(1)/PCM(1,4)-PENEW(3)/PCM(3,4)
65638       PCM4S=PCM(4,1)**2+PCM(4,2)**2+PCM(4,3)**2
65639       PCM5S=PCM(5,1)**2+PCM(5,2)**2+PCM(5,3)**2
65640       PCM45=PCM(4,1)*PCM(5,1)+PCM(4,2)*PCM(5,2)+PCM(4,3)*PCM(5,3)
65641       C4=(PCM5S*PCM(4,4)-PCM45*PCM(5,4))/(PCM4S*PCM5S-PCM45**2)
65642       C5=(PCM4S*PCM(5,4)-PCM45*PCM(4,4))/(PCM4S*PCM5S-PCM45**2)
65643       VXJU=C4*PCM(4,1)+C5*PCM(5,1)
65644       VYJU=C4*PCM(4,2)+C5*PCM(5,2)
65645       VZJU=C4*PCM(4,3)+C5*PCM(5,3)
65646       GAMJU=SQRT(1D0+VXJU**2+VYJU**2+VZJU**2)
65647  
65648 C...Add two boosts, giving final result.
65649       FCM=(VXJU*VXCM+VYJU*VYCM+VZJU*VZCM)/(1+GAMCM)+GAMJU
65650       VJU(1)=VXJU+FCM*VXCM
65651       VJU(2)=VYJU+FCM*VYCM
65652       VJU(3)=VZJU+FCM*VZCM
65653       VJU(4)=SQRT(1D0+VJU(1)**2+VJU(2)**2+VJU(3)**2)
65654       VJU(5)=1D0
65655  
65656 C...In case of error in reconstruction: revert to CM frame of system.
65657       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
65658      &(PCM(1,5)*PCM(2,5))
65659       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
65660      &(PCM(1,5)*PCM(3,5))
65661       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
65662      &(PCM(2,5)*PCM(3,5))
65663       ERRCCM=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
65664       ERRTCM=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
65665       DO 170 I=1,3
65666         FAC1=PJU(I,1)*VJU(1)+PJU(I,2)*VJU(2)+PJU(I,3)*VJU(3)
65667         FAC2=FAC1/(1D0+VJU(4))+PJU(I,4)
65668         PCM(I,1)=PJU(I,1)+FAC2*VJU(1)
65669         PCM(I,2)=PJU(I,2)+FAC2*VJU(2)
65670         PCM(I,3)=PJU(I,3)+FAC2*VJU(3)
65671         PCM(I,4)=PJU(I,4)*VJU(4)+FAC1
65672         PCM(I,5)=SQRT(PCM(I,1)**2+PCM(I,2)**2+PCM(I,3)**2)
65673   170 CONTINUE
65674       CTH12=(PCM(1,1)*PCM(2,1)+PCM(1,2)*PCM(2,2)+PCM(1,3)*PCM(2,3))/
65675      &(PCM(1,5)*PCM(2,5))
65676       CTH13=(PCM(1,1)*PCM(3,1)+PCM(1,2)*PCM(3,2)+PCM(1,3)*PCM(3,3))/
65677      &(PCM(1,5)*PCM(3,5))
65678       CTH23=(PCM(2,1)*PCM(3,1)+PCM(2,2)*PCM(3,2)+PCM(2,3)*PCM(3,3))/
65679      &(PCM(2,5)*PCM(3,5))
65680       ERRCJU=(CTH12+0.5D0)**2+(CTH13+0.5D0)**2+(CTH23+0.5D0)**2
65681       ERRTJU=TWOPI-ACOS(CTH12)-ACOS(CTH13)-ACOS(CTH23)
65682       IF(ERRCJU+ERRTJU.GT.ERRCCM+ERRTCM) THEN
65683         VJU(1)=VXCM
65684         VJU(2)=VYCM
65685         VJU(3)=VZCM
65686         VJU(4)=GAMCM
65687       ENDIF
65688  
65689       RETURN
65690       END
65691  
65692 C*********************************************************************
65693  
65694 C...PYINDF
65695 C...Handles the fragmentation of a jet system (or a single
65696 C...jet) according to independent fragmentation models.
65697  
65698       SUBROUTINE PYINDF(IP)
65699  
65700 C...Double precision and integer declarations.
65701       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
65702       IMPLICIT INTEGER(I-N)
65703       INTEGER PYK,PYCHGE,PYCOMP
65704 C...Commonblocks.
65705       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
65706       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
65707       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
65708       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
65709 C...Local arrays.
65710       DIMENSION DPS(5),PSI(4),NFI(3),NFL(3),IFET(3),KFLF(3),
65711      &KFLO(2),PXO(2),PYO(2),WO(2)
65712  
65713 C.. MOPS error message
65714       IF(MSTJ(12).GT.3) CALL PYERRM(9,'(PYINDF:) MSTJ(12)>3 options'//
65715      &' are not treated as expected in independent fragmentation')
65716  
65717 C...Reset counters. Identify parton system and take copy. Check flavour.
65718       NSAV=N
65719       MSTU90=MSTU(90)
65720       NJET=0
65721       KQSUM=0
65722       DO 100 J=1,5
65723         DPS(J)=0D0
65724   100 CONTINUE
65725       I=IP-1
65726   110 I=I+1
65727       IF(I.GT.MIN(N,MSTU(4)-MSTU(32))) THEN
65728         CALL PYERRM(12,'(PYINDF:) failed to reconstruct jet system')
65729         IF(MSTU(21).GE.1) RETURN
65730       ENDIF
65731       IF(K(I,1).NE.1.AND.K(I,1).NE.2) GOTO 110
65732       KC=PYCOMP(K(I,2))
65733       IF(KC.EQ.0) GOTO 110
65734       KQ=KCHG(KC,2)*ISIGN(1,K(I,2))
65735       IF(KQ.EQ.0) GOTO 110
65736       NJET=NJET+1
65737       IF(KQ.NE.2) KQSUM=KQSUM+KQ
65738       DO 120 J=1,5
65739         K(NSAV+NJET,J)=K(I,J)
65740         P(NSAV+NJET,J)=P(I,J)
65741         DPS(J)=DPS(J)+P(I,J)
65742   120 CONTINUE
65743       K(NSAV+NJET,3)=I
65744       IF(K(I,1).EQ.2.OR.(MSTJ(3).LE.5.AND.N.GT.I.AND.
65745      &K(I+1,1).EQ.2)) GOTO 110
65746       IF(NJET.NE.1.AND.KQSUM.NE.0) THEN
65747         CALL PYERRM(12,'(PYINDF:) unphysical flavour combination')
65748         IF(MSTU(21).GE.1) RETURN
65749       ENDIF
65750  
65751 C...Boost copied system to CM frame. Find CM energy and sum flavours.
65752       IF(NJET.NE.1) THEN
65753         MSTU(33)=1
65754         CALL PYROBO(NSAV+1,NSAV+NJET,0D0,0D0,-DPS(1)/DPS(4),
65755      &  -DPS(2)/DPS(4),-DPS(3)/DPS(4))
65756       ENDIF
65757       PECM=0D0
65758       DO 130 J=1,3
65759         NFI(J)=0
65760   130 CONTINUE
65761       DO 140 I=NSAV+1,NSAV+NJET
65762         PECM=PECM+P(I,4)
65763         KFA=IABS(K(I,2))
65764         IF(KFA.LE.3) THEN
65765           NFI(KFA)=NFI(KFA)+ISIGN(1,K(I,2))
65766         ELSEIF(KFA.GT.1000) THEN
65767           KFLA=MOD(KFA/1000,10)
65768           KFLB=MOD(KFA/100,10)
65769           IF(KFLA.LE.3) NFI(KFLA)=NFI(KFLA)+ISIGN(1,K(I,2))
65770           IF(KFLB.LE.3) NFI(KFLB)=NFI(KFLB)+ISIGN(1,K(I,2))
65771         ENDIF
65772   140 CONTINUE
65773  
65774 C...Loop over attempts made. Reset counters.
65775       NTRY=0
65776   150 NTRY=NTRY+1
65777       IF(NTRY.GT.200) THEN
65778         CALL PYERRM(14,'(PYINDF:) caught in infinite loop')
65779         IF(MSTU(21).GE.1) RETURN
65780       ENDIF
65781       N=NSAV+NJET
65782       MSTU(90)=MSTU90
65783       DO 160 J=1,3
65784         NFL(J)=NFI(J)
65785         IFET(J)=0
65786         KFLF(J)=0
65787   160 CONTINUE
65788  
65789 C...Loop over jets to be fragmented.
65790       DO 230 IP1=NSAV+1,NSAV+NJET
65791         MSTJ(91)=0
65792         NSAV1=N
65793         MSTU91=MSTU(90)
65794  
65795 C...Initial flavour and momentum values. Jet along +z axis.
65796         KFLH=IABS(K(IP1,2))
65797         IF(KFLH.GT.10) KFLH=MOD(KFLH/1000,10)
65798         KFLO(2)=0
65799         WF=P(IP1,4)+SQRT(P(IP1,1)**2+P(IP1,2)**2+P(IP1,3)**2)
65800  
65801 C...Initial values for quark or diquark jet.
65802   170   IF(IABS(K(IP1,2)).NE.21) THEN
65803           NSTR=1
65804           KFLO(1)=K(IP1,2)
65805           CALL PYPTDI(0,PXO(1),PYO(1))
65806           WO(1)=WF
65807  
65808 C...Initial values for gluon treated like random quark jet.
65809         ELSEIF(MSTJ(2).LE.2) THEN
65810           NSTR=1
65811           IF(MSTJ(2).EQ.2) MSTJ(91)=1
65812           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
65813           CALL PYPTDI(0,PXO(1),PYO(1))
65814           WO(1)=WF
65815  
65816 C...Initial values for gluon treated like quark-antiquark jet pair,
65817 C...sharing energy according to Altarelli-Parisi splitting function.
65818         ELSE
65819           NSTR=2
65820           IF(MSTJ(2).EQ.4) MSTJ(91)=1
65821           KFLO(1)=INT(1D0+(2D0+PARJ(2))*PYR(0))*(-1)**INT(PYR(0)+0.5D0)
65822           KFLO(2)=-KFLO(1)
65823           CALL PYPTDI(0,PXO(1),PYO(1))
65824           PXO(2)=-PXO(1)
65825           PYO(2)=-PYO(1)
65826           WO(1)=WF*PYR(0)**(1D0/3D0)
65827           WO(2)=WF-WO(1)
65828         ENDIF
65829  
65830 C...Initial values for rank, flavour, pT and W+.
65831         DO 220 ISTR=1,NSTR
65832   180     I=N
65833           MSTU(90)=MSTU91
65834           IRANK=0
65835           KFL1=KFLO(ISTR)
65836           PX1=PXO(ISTR)
65837           PY1=PYO(ISTR)
65838           W=WO(ISTR)
65839  
65840 C...New hadron. Generate flavour and hadron species.
65841   190     I=I+1
65842           IF(I.GE.MSTU(4)-MSTU(32)-NJET-5) THEN
65843             CALL PYERRM(11,'(PYINDF:) no more memory left in PYJETS')
65844             IF(MSTU(21).GE.1) RETURN
65845           ENDIF
65846           IRANK=IRANK+1
65847           K(I,1)=1
65848           K(I,3)=IP1
65849           K(I,4)=0
65850           K(I,5)=0
65851   200     CALL PYKFDI(KFL1,0,KFL2,K(I,2))
65852           IF(K(I,2).EQ.0) GOTO 180
65853           IF(IRANK.EQ.1.AND.IABS(KFL1).LE.10.AND.IABS(KFL2).GT.10) THEN
65854             IF(PYR(0).GT.PARJ(19)) GOTO 200
65855           ENDIF
65856  
65857 C...Find hadron mass. Generate four-momentum.
65858           P(I,5)=PYMASS(K(I,2))
65859           CALL PYPTDI(KFL1,PX2,PY2)
65860           P(I,1)=PX1+PX2
65861           P(I,2)=PY1+PY2
65862           PR=P(I,5)**2+P(I,1)**2+P(I,2)**2
65863           CALL PYZDIS(KFL1,KFL2,PR,Z)
65864           MZSAV=0
65865           IF(IABS(KFL1).GE.4.AND.IABS(KFL1).LE.8.AND.MSTU(90).LT.8) THEN
65866             MZSAV=1
65867             MSTU(90)=MSTU(90)+1
65868             MSTU(90+MSTU(90))=I
65869             PARU(90+MSTU(90))=Z
65870           ENDIF
65871           P(I,3)=0.5D0*(Z*W-PR/MAX(1D-4,Z*W))
65872           P(I,4)=0.5D0*(Z*W+PR/MAX(1D-4,Z*W))
65873           IF(MSTJ(3).GE.1.AND.IRANK.EQ.1.AND.KFLH.GE.4.AND.
65874      &    P(I,3).LE.0.001D0) THEN
65875             IF(W.GE.P(I,5)+0.5D0*PARJ(32)) GOTO 180
65876             P(I,3)=0.0001D0
65877             P(I,4)=SQRT(PR)
65878             Z=P(I,4)/W
65879           ENDIF
65880  
65881 C...Remaining flavour and momentum.
65882           KFL1=-KFL2
65883           PX1=-PX2
65884           PY1=-PY2
65885           W=(1D0-Z)*W
65886           DO 210 J=1,5
65887             V(I,J)=0D0
65888   210     CONTINUE
65889  
65890 C...Check if pL acceptable. Go back for new hadron if enough energy.
65891           IF(MSTJ(3).GE.0.AND.P(I,3).LT.0D0) THEN
65892             I=I-1
65893             IF(MZSAV.EQ.1) MSTU(90)=MSTU(90)-1
65894           ENDIF
65895           IF(W.GT.PARJ(31)) GOTO 190
65896           N=I
65897   220   CONTINUE
65898         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) WF=WF+0.1D0*PARJ(32)
65899         IF(MOD(MSTJ(3),5).EQ.4.AND.N.EQ.NSAV1) GOTO 170
65900  
65901 C...Rotate jet to new direction.
65902         THE=PYANGL(P(IP1,3),SQRT(P(IP1,1)**2+P(IP1,2)**2))
65903         PHI=PYANGL(P(IP1,1),P(IP1,2))
65904         MSTU(33)=1
65905         CALL PYROBO(NSAV1+1,N,THE,PHI,0D0,0D0,0D0)
65906         K(K(IP1,3),4)=NSAV1+1
65907         K(K(IP1,3),5)=N
65908  
65909 C...End of jet generation loop. Skip conservation in some cases.
65910   230 CONTINUE
65911       IF(NJET.EQ.1.OR.MSTJ(3).LE.0) GOTO 490
65912       IF(MOD(MSTJ(3),5).NE.0.AND.N-NSAV-NJET.LT.2) GOTO 150
65913  
65914 C...Subtract off produced hadron flavours, finished if zero.
65915       DO 240 I=NSAV+NJET+1,N
65916         KFA=IABS(K(I,2))
65917         KFLA=MOD(KFA/1000,10)
65918         KFLB=MOD(KFA/100,10)
65919         KFLC=MOD(KFA/10,10)
65920         IF(KFLA.EQ.0) THEN
65921           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))*(-1)**KFLB
65922           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(I,2))*(-1)**KFLB
65923         ELSE
65924           IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)-ISIGN(1,K(I,2))
65925           IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)-ISIGN(1,K(I,2))
65926           IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISIGN(1,K(I,2))
65927         ENDIF
65928   240 CONTINUE
65929       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
65930      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
65931       IF(NREQ.EQ.0) GOTO 320
65932  
65933 C...Take away flavour of low-momentum particles until enough freedom.
65934       NREM=0
65935   250 IREM=0
65936       P2MIN=PECM**2
65937       DO 260 I=NSAV+NJET+1,N
65938         P2=P(I,1)**2+P(I,2)**2+P(I,3)**2
65939         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) IREM=I
65940         IF(K(I,1).EQ.1.AND.P2.LT.P2MIN) P2MIN=P2
65941   260 CONTINUE
65942       IF(IREM.EQ.0) GOTO 150
65943       K(IREM,1)=7
65944       KFA=IABS(K(IREM,2))
65945       KFLA=MOD(KFA/1000,10)
65946       KFLB=MOD(KFA/100,10)
65947       KFLC=MOD(KFA/10,10)
65948       IF(KFLA.GE.4.OR.KFLB.GE.4) K(IREM,1)=8
65949       IF(K(IREM,1).EQ.8) GOTO 250
65950       IF(KFLA.EQ.0) THEN
65951         ISGN=ISIGN(1,K(IREM,2))*(-1)**KFLB
65952         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISGN
65953         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)-ISGN
65954       ELSE
65955         IF(KFLA.LE.3) NFL(KFLA)=NFL(KFLA)+ISIGN(1,K(IREM,2))
65956         IF(KFLB.LE.3) NFL(KFLB)=NFL(KFLB)+ISIGN(1,K(IREM,2))
65957         IF(KFLC.LE.3) NFL(KFLC)=NFL(KFLC)+ISIGN(1,K(IREM,2))
65958       ENDIF
65959       NREM=NREM+1
65960       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
65961      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
65962       IF(NREQ.GT.NREM) GOTO 250
65963       DO 270 I=NSAV+NJET+1,N
65964         IF(K(I,1).EQ.8) K(I,1)=1
65965   270 CONTINUE
65966  
65967 C...Find combination of existing and new flavours for hadron.
65968   280 NFET=2
65969       IF(NFL(1)+NFL(2)+NFL(3).NE.0) NFET=3
65970       IF(NREQ.LT.NREM) NFET=1
65971       IF(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)).EQ.0) NFET=0
65972       DO 290 J=1,NFET
65973         IFET(J)=1+(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3)))*PYR(0)
65974         KFLF(J)=ISIGN(1,NFL(1))
65975         IF(IFET(J).GT.IABS(NFL(1))) KFLF(J)=ISIGN(2,NFL(2))
65976         IF(IFET(J).GT.IABS(NFL(1))+IABS(NFL(2))) KFLF(J)=ISIGN(3,NFL(3))
65977   290 CONTINUE
65978       IF(NFET.EQ.2.AND.(IFET(1).EQ.IFET(2).OR.KFLF(1)*KFLF(2).GT.0))
65979      &GOTO 280
65980       IF(NFET.EQ.3.AND.(IFET(1).EQ.IFET(2).OR.IFET(1).EQ.IFET(3).OR.
65981      &IFET(2).EQ.IFET(3).OR.KFLF(1)*KFLF(2).LT.0.OR.KFLF(1)*KFLF(3)
65982      &.LT.0.OR.KFLF(1)*(NFL(1)+NFL(2)+NFL(3)).LT.0)) GOTO 280
65983       IF(NFET.EQ.0) KFLF(1)=1+INT((2D0+PARJ(2))*PYR(0))
65984       IF(NFET.EQ.0) KFLF(2)=-KFLF(1)
65985       IF(NFET.EQ.1) KFLF(2)=ISIGN(1+INT((2D0+PARJ(2))*PYR(0)),-KFLF(1))
65986       IF(NFET.LE.2) KFLF(3)=0
65987       IF(KFLF(3).NE.0) THEN
65988         KFLFC=ISIGN(1000*MAX(IABS(KFLF(1)),IABS(KFLF(3)))+
65989      &  100*MIN(IABS(KFLF(1)),IABS(KFLF(3)))+1,KFLF(1))
65990         IF(KFLF(1).EQ.KFLF(3).OR.(1D0+3D0*PARJ(4))*PYR(0).GT.1D0)
65991      &  KFLFC=KFLFC+ISIGN(2,KFLFC)
65992       ELSE
65993         KFLFC=KFLF(1)
65994       ENDIF
65995       CALL PYKFDI(KFLFC,KFLF(2),KFLDMP,KF)
65996       IF(KF.EQ.0) GOTO 280
65997       DO 300 J=1,MAX(2,NFET)
65998         NFL(IABS(KFLF(J)))=NFL(IABS(KFLF(J)))-ISIGN(1,KFLF(J))
65999   300 CONTINUE
66000  
66001 C...Store hadron at random among free positions.
66002       NPOS=MIN(1+INT(PYR(0)*NREM),NREM)
66003       DO 310 I=NSAV+NJET+1,N
66004         IF(K(I,1).EQ.7) NPOS=NPOS-1
66005         IF(K(I,1).EQ.1.OR.NPOS.NE.0) GOTO 310
66006         K(I,1)=1
66007         K(I,2)=KF
66008         P(I,5)=PYMASS(K(I,2))
66009         P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
66010   310 CONTINUE
66011       NREM=NREM-1
66012       NREQ=(IABS(NFL(1))+IABS(NFL(2))+IABS(NFL(3))-IABS(NFL(1)+
66013      &NFL(2)+NFL(3)))/2+IABS(NFL(1)+NFL(2)+NFL(3))/3
66014       IF(NREM.GT.0) GOTO 280
66015  
66016 C...Compensate for missing momentum in global scheme (3 options).
66017   320 IF(MOD(MSTJ(3),5).NE.0.AND.MOD(MSTJ(3),5).NE.4) THEN
66018         DO 340 J=1,3
66019           PSI(J)=0D0
66020           DO 330 I=NSAV+NJET+1,N
66021             PSI(J)=PSI(J)+P(I,J)
66022   330     CONTINUE
66023   340   CONTINUE
66024         PSI(4)=PSI(1)**2+PSI(2)**2+PSI(3)**2
66025         PWS=0D0
66026         DO 350 I=NSAV+NJET+1,N
66027           IF(MOD(MSTJ(3),5).EQ.1) PWS=PWS+P(I,4)
66028           IF(MOD(MSTJ(3),5).EQ.2) PWS=PWS+SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
66029      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
66030           IF(MOD(MSTJ(3),5).EQ.3) PWS=PWS+1D0
66031   350   CONTINUE
66032         DO 370 I=NSAV+NJET+1,N
66033           IF(MOD(MSTJ(3),5).EQ.1) PW=P(I,4)
66034           IF(MOD(MSTJ(3),5).EQ.2) PW=SQRT(P(I,5)**2+(PSI(1)*P(I,1)+
66035      &    PSI(2)*P(I,2)+PSI(3)*P(I,3))**2/PSI(4))
66036           IF(MOD(MSTJ(3),5).EQ.3) PW=1D0
66037           DO 360 J=1,3
66038             P(I,J)=P(I,J)-PSI(J)*PW/PWS
66039   360     CONTINUE
66040           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
66041   370   CONTINUE
66042  
66043 C...Compensate for missing momentum withing each jet separately.
66044       ELSEIF(MOD(MSTJ(3),5).EQ.4) THEN
66045         DO 390 I=N+1,N+NJET
66046           K(I,1)=0
66047           DO 380 J=1,5
66048             P(I,J)=0D0
66049   380     CONTINUE
66050   390   CONTINUE
66051         DO 410 I=NSAV+NJET+1,N
66052           IR1=K(I,3)
66053           IR2=N+IR1-NSAV
66054           K(IR2,1)=K(IR2,1)+1
66055           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
66056      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
66057           DO 400 J=1,3
66058             P(IR2,J)=P(IR2,J)+P(I,J)-PLS*P(IR1,J)
66059   400     CONTINUE
66060           P(IR2,4)=P(IR2,4)+P(I,4)
66061           P(IR2,5)=P(IR2,5)+PLS
66062   410   CONTINUE
66063         PSS=0D0
66064         DO 420 I=N+1,N+NJET
66065           IF(K(I,1).NE.0) PSS=PSS+P(I,4)/(PECM*(0.8D0*P(I,5)+0.2D0))
66066   420   CONTINUE
66067         DO 440 I=NSAV+NJET+1,N
66068           IR1=K(I,3)
66069           IR2=N+IR1-NSAV
66070           PLS=(P(I,1)*P(IR1,1)+P(I,2)*P(IR1,2)+P(I,3)*P(IR1,3))/
66071      &    (P(IR1,1)**2+P(IR1,2)**2+P(IR1,3)**2)
66072           DO 430 J=1,3
66073             P(I,J)=P(I,J)-P(IR2,J)/K(IR2,1)+(1D0/(P(IR2,5)*PSS)-1D0)*
66074      &      PLS*P(IR1,J)
66075   430     CONTINUE
66076           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
66077   440   CONTINUE
66078       ENDIF
66079  
66080 C...Scale momenta for energy conservation.
66081       IF(MOD(MSTJ(3),5).NE.0) THEN
66082         PMS=0D0
66083         PES=0D0
66084         PQS=0D0
66085         DO 450 I=NSAV+NJET+1,N
66086           PMS=PMS+P(I,5)
66087           PES=PES+P(I,4)
66088           PQS=PQS+P(I,5)**2/P(I,4)
66089   450   CONTINUE
66090         IF(PMS.GE.PECM) GOTO 150
66091         NECO=0
66092   460   NECO=NECO+1
66093         PFAC=(PECM-PQS)/(PES-PQS)
66094         PES=0D0
66095         PQS=0D0
66096         DO 480 I=NSAV+NJET+1,N
66097           DO 470 J=1,3
66098             P(I,J)=PFAC*P(I,J)
66099   470     CONTINUE
66100           P(I,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2+P(I,5)**2)
66101           PES=PES+P(I,4)
66102           PQS=PQS+P(I,5)**2/P(I,4)
66103   480   CONTINUE
66104         IF(NECO.LT.10.AND.ABS(PECM-PES).GT.2D-6*PECM) GOTO 460
66105       ENDIF
66106  
66107 C...Origin of produced particles and parton daughter pointers.
66108   490 DO 500 I=NSAV+NJET+1,N
66109         IF(MSTU(16).NE.2) K(I,3)=NSAV+1
66110         IF(MSTU(16).EQ.2) K(I,3)=K(K(I,3),3)
66111   500 CONTINUE
66112       DO 510 I=NSAV+1,NSAV+NJET
66113         I1=K(I,3)
66114         K(I1,1)=K(I1,1)+10
66115         IF(MSTU(16).NE.2) THEN
66116           K(I1,4)=NSAV+1
66117           K(I1,5)=NSAV+1
66118         ELSE
66119           K(I1,4)=K(I1,4)-NJET+1
66120           K(I1,5)=K(I1,5)-NJET+1
66121           IF(K(I1,5).LT.K(I1,4)) THEN
66122             K(I1,4)=0
66123             K(I1,5)=0
66124           ENDIF
66125         ENDIF
66126   510 CONTINUE
66127  
66128 C...Document independent fragmentation system. Remove copy of jets.
66129       NSAV=NSAV+1
66130       K(NSAV,1)=11
66131       K(NSAV,2)=93
66132       K(NSAV,3)=IP
66133       K(NSAV,4)=NSAV+1
66134       K(NSAV,5)=N-NJET+1
66135       DO 520 J=1,4
66136         P(NSAV,J)=DPS(J)
66137         V(NSAV,J)=V(IP,J)
66138   520 CONTINUE
66139       P(NSAV,5)=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))
66140       V(NSAV,5)=0D0
66141       DO 540 I=NSAV+NJET,N
66142         DO 530 J=1,5
66143           K(I-NJET+1,J)=K(I,J)
66144           P(I-NJET+1,J)=P(I,J)
66145           V(I-NJET+1,J)=V(I,J)
66146   530   CONTINUE
66147   540 CONTINUE
66148       N=N-NJET+1
66149       DO 550 IZ=MSTU90+1,MSTU(90)
66150         MSTU(90+IZ)=MSTU(90+IZ)-NJET+1
66151   550 CONTINUE
66152  
66153 C...Boost back particle system. Set production vertices.
66154       IF(NJET.NE.1) CALL PYROBO(NSAV+1,N,0D0,0D0,DPS(1)/DPS(4),
66155      &DPS(2)/DPS(4),DPS(3)/DPS(4))
66156       DO 570 I=NSAV+1,N
66157         DO 560 J=1,4
66158           V(I,J)=V(IP,J)
66159   560   CONTINUE
66160   570 CONTINUE
66161  
66162       RETURN
66163       END
66164  
66165 C*********************************************************************
66166  
66167 C...PYDECY
66168 C...Handles the decay of unstable particles.
66169  
66170       SUBROUTINE PYDECY(IP)
66171  
66172 C...Double precision and integer declarations.
66173       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
66174       IMPLICIT INTEGER(I-N)
66175       INTEGER PYK,PYCHGE,PYCOMP
66176 C...Commonblocks.
66177       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
66178       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
66179       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
66180       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
66181       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
66182 C...Local arrays.
66183       DIMENSION VDCY(4),KFLO(4),KFL1(4),PV(10,5),RORD(10),UE(3),BE(3),
66184      &WTCOR(10),PTAU(4),PCMTAU(4),DBETAU(3)
66185       CHARACTER CIDC*4
66186       DATA WTCOR/2D0,5D0,15D0,60D0,250D0,1500D0,1.2D4,1.2D5,150D0,16D0/
66187  
66188 C...Functions: momentum in two-particle decays and four-product.
66189       PAWT(A,B,C)=SQRT((A**2-(B+C)**2)*(A**2-(B-C)**2))/(2D0*A)
66190       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)
66191  
66192 C...Initial values.
66193       NTRY=0
66194       NSAV=N
66195       KFA=IABS(K(IP,2))
66196       KFS=ISIGN(1,K(IP,2))
66197       KC=PYCOMP(KFA)
66198       MSTJ(92)=0
66199  
66200 C...Choose lifetime and determine decay vertex.
66201       IF(K(IP,1).EQ.5) THEN
66202         V(IP,5)=0D0
66203       ELSEIF(K(IP,1).NE.4) THEN
66204         V(IP,5)=-PMAS(KC,4)*LOG(PYR(0))
66205       ENDIF
66206       DO 100 J=1,4
66207         VDCY(J)=V(IP,J)+V(IP,5)*P(IP,J)/P(IP,5)
66208   100 CONTINUE
66209  
66210 C...Determine whether decay allowed or not.
66211       MOUT=0
66212       IF(MSTJ(22).EQ.2) THEN
66213         IF(PMAS(KC,4).GT.PARJ(71)) MOUT=1
66214       ELSEIF(MSTJ(22).EQ.3) THEN
66215         IF(VDCY(1)**2+VDCY(2)**2+VDCY(3)**2.GT.PARJ(72)**2) MOUT=1
66216       ELSEIF(MSTJ(22).EQ.4) THEN
66217         IF(VDCY(1)**2+VDCY(2)**2.GT.PARJ(73)**2) MOUT=1
66218         IF(ABS(VDCY(3)).GT.PARJ(74)) MOUT=1
66219       ENDIF
66220       IF(MOUT.EQ.1.AND.K(IP,1).NE.5) THEN
66221         K(IP,1)=4
66222         RETURN
66223       ENDIF
66224  
66225 C...Interface to external tau decay library (for tau polarization).
66226       IF(KFA.EQ.15.AND.MSTJ(28).GE.1) THEN
66227  
66228 C...Starting values for pointers and momenta.
66229         ITAU=IP
66230         DO 110 J=1,4
66231           PTAU(J)=P(ITAU,J)
66232           PCMTAU(J)=P(ITAU,J)
66233   110   CONTINUE
66234  
66235 C...Iterate to find position and code of mother of tau.
66236         IMTAU=ITAU
66237   120   IMTAU=K(IMTAU,3)
66238  
66239         IF(IMTAU.EQ.0) THEN
66240 C...If no known origin then impossible to do anything further.
66241           KFORIG=0
66242           IORIG=0
66243  
66244         ELSEIF(K(IMTAU,2).EQ.K(ITAU,2)) THEN
66245 C...If tau -> tau + gamma then add gamma energy and loop.
66246           IF(K(K(IMTAU,4),2).EQ.22) THEN
66247             DO 130 J=1,4
66248               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,4),J)
66249   130       CONTINUE
66250           ELSEIF(K(K(IMTAU,5),2).EQ.22) THEN
66251             DO 140 J=1,4
66252               PCMTAU(J)=PCMTAU(J)+P(K(IMTAU,5),J)
66253   140       CONTINUE
66254           ENDIF
66255           GOTO 120
66256  
66257         ELSEIF(IABS(K(IMTAU,2)).GT.100) THEN
66258 C...If coming from weak decay of hadron then W is not stored in record,
66259 C...but can be reconstructed by adding neutrino momentum.
66260           KFORIG=-ISIGN(24,K(ITAU,2))
66261           IORIG=0
66262           DO 160 II=K(IMTAU,4),K(IMTAU,5)
66263             IF(K(II,2)*ISIGN(1,K(ITAU,2)).EQ.-16) THEN
66264               DO 150 J=1,4
66265                 PCMTAU(J)=PCMTAU(J)+P(II,J)
66266   150         CONTINUE
66267             ENDIF
66268   160     CONTINUE
66269  
66270         ELSE
66271 C...If coming from resonance decay then find latest copy of this
66272 C...resonance (may not completely agree).
66273           KFORIG=K(IMTAU,2)
66274           IORIG=IMTAU
66275           DO 170 II=IMTAU+1,IP-1
66276             IF(K(II,2).EQ.KFORIG.AND.K(II,3).EQ.IORIG.AND.
66277      &      ABS(P(II,5)-P(IORIG,5)).LT.1D-5*P(IORIG,5)) IORIG=II
66278   170     CONTINUE
66279           DO 180 J=1,4
66280             PCMTAU(J)=P(IORIG,J)
66281   180     CONTINUE
66282         ENDIF
66283  
66284 C...Boost tau to rest frame of production process (where known)
66285 C...and rotate it to sit along +z axis.
66286         DO 190 J=1,3
66287           DBETAU(J)=PCMTAU(J)/PCMTAU(4)
66288   190   CONTINUE
66289         IF(KFORIG.NE.0) CALL PYROBO(ITAU,ITAU,0D0,0D0,-DBETAU(1),
66290      &  -DBETAU(2),-DBETAU(3))
66291         PHITAU=PYANGL(P(ITAU,1),P(ITAU,2))
66292         CALL PYROBO(ITAU,ITAU,0D0,-PHITAU,0D0,0D0,0D0)
66293         THETAU=PYANGL(P(ITAU,3),P(ITAU,1))
66294         CALL PYROBO(ITAU,ITAU,-THETAU,0D0,0D0,0D0,0D0)
66295  
66296 C...Call tau decay routine (if meaningful) and fill extra info.
66297         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
66298           CALL PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
66299           DO 200 II=NSAV+1,NSAV+NDECAY
66300             K(II,1)=1
66301             K(II,3)=IP
66302             K(II,4)=0
66303             K(II,5)=0
66304   200     CONTINUE
66305           N=NSAV+NDECAY
66306         ENDIF
66307  
66308 C...Boost back decay tau and decay products.
66309         DO 210 J=1,4
66310           P(ITAU,J)=PTAU(J)
66311   210   CONTINUE
66312         IF(KFORIG.NE.0.OR.MSTJ(28).EQ.2) THEN
66313           CALL PYROBO(NSAV+1,N,THETAU,PHITAU,0D0,0D0,0D0)
66314           IF(KFORIG.NE.0) CALL PYROBO(NSAV+1,N,0D0,0D0,DBETAU(1),
66315      &    DBETAU(2),DBETAU(3))
66316  
66317 C...Skip past ordinary tau decay treatment.
66318           MMAT=0
66319           MBST=0
66320           ND=0
66321           GOTO 630
66322         ENDIF
66323       ENDIF
66324  
66325 C...B-Bbar mixing: flip sign of meson appropriately.
66326       MMIX=0
66327       IF((KFA.EQ.511.OR.KFA.EQ.531).AND.MSTJ(26).GE.1) THEN
66328         XBBMIX=PARJ(76)
66329         IF(KFA.EQ.531) XBBMIX=PARJ(77)
66330         IF(SIN(0.5D0*XBBMIX*V(IP,5)/PMAS(KC,4))**2.GT.PYR(0)) MMIX=1
66331         IF(MMIX.EQ.1) KFS=-KFS
66332       ENDIF
66333  
66334 C...Check existence of decay channels. Particle/antiparticle rules.
66335       KCA=KC
66336       IF(MDCY(KC,2).GT.0) THEN
66337         MDMDCY=MDME(MDCY(KC,2),2)
66338         IF(MDMDCY.GT.80.AND.MDMDCY.LE.90) KCA=MDMDCY
66339       ENDIF
66340       IF(MDCY(KCA,2).LE.0.OR.MDCY(KCA,3).LE.0) THEN
66341         CALL PYERRM(9,'(PYDECY:) no decay channel defined')
66342         RETURN
66343       ENDIF
66344       IF(MOD(KFA/1000,10).EQ.0.AND.KCA.EQ.85) KFS=-KFS
66345       IF(KCHG(KC,3).EQ.0) THEN
66346         KFSP=1
66347         KFSN=0
66348         IF(PYR(0).GT.0.5D0) KFS=-KFS
66349       ELSEIF(KFS.GT.0) THEN
66350         KFSP=1
66351         KFSN=0
66352       ELSE
66353         KFSP=0
66354         KFSN=1
66355       ENDIF
66356  
66357 C...Sum branching ratios of allowed decay channels.
66358   220 NOPE=0
66359       BRSU=0D0
66360       DO 230 IDL=MDCY(KCA,2),MDCY(KCA,2)+MDCY(KCA,3)-1
66361         IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
66362      &  KFSN*MDME(IDL,1).NE.3) GOTO 230
66363         IF(MDME(IDL,2).GT.100) GOTO 230
66364         NOPE=NOPE+1
66365         BRSU=BRSU+BRAT(IDL)
66366   230 CONTINUE
66367       IF(NOPE.EQ.0) THEN
66368         CALL PYERRM(2,'(PYDECY:) all decay channels closed by user')
66369         RETURN
66370       ENDIF
66371  
66372 C...Select decay channel among allowed ones.
66373   240 RBR=BRSU*PYR(0)
66374       IDL=MDCY(KCA,2)-1
66375   250 IDL=IDL+1
66376       IF(MDME(IDL,1).NE.1.AND.KFSP*MDME(IDL,1).NE.2.AND.
66377      &KFSN*MDME(IDL,1).NE.3) THEN
66378         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
66379       ELSEIF(MDME(IDL,2).GT.100) THEN
66380         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1) GOTO 250
66381       ELSE
66382         IDC=IDL
66383         RBR=RBR-BRAT(IDL)
66384         IF(IDL.LT.MDCY(KCA,2)+MDCY(KCA,3)-1.AND.RBR.GT.0D0) GOTO 250
66385       ENDIF
66386  
66387 C...Start readout of decay channel: matrix element, reset counters.
66388       MMAT=MDME(IDC,2)
66389   260 NTRY=NTRY+1
66390       IF(MOD(NTRY,200).EQ.0) THEN
66391         WRITE(CIDC,'(I4)') IDC
66392 C...Do not print warning for some well-known special cases.
66393         IF(KFA.NE.113.AND.KFA.NE.115.AND.KFA.NE.215)
66394      &  CALL PYERRM(4,'(PYDECY:) caught in loop for decay channel'//
66395      &  CIDC)
66396         GOTO 240
66397       ENDIF
66398       IF(NTRY.GT.1000) THEN
66399         CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
66400         IF(MSTU(21).GE.1) RETURN
66401       ENDIF
66402       I=N
66403       NP=0
66404       NQ=0
66405       MBST=0
66406       IF(MMAT.GE.11.AND.P(IP,4).GT.20D0*P(IP,5)) MBST=1
66407       DO 270 J=1,4
66408         PV(1,J)=0D0
66409         IF(MBST.EQ.0) PV(1,J)=P(IP,J)
66410   270 CONTINUE
66411       IF(MBST.EQ.1) PV(1,4)=P(IP,5)
66412       PV(1,5)=P(IP,5)
66413       PS=0D0
66414       PSQ=0D0
66415       MREM=0
66416       MHADDY=0
66417       IF(KFA.GT.80) MHADDY=1
66418 C.. Random flavour and popcorn system memory.
66419       IRNDMO=0
66420       JTMO=0
66421       MSTU(121)=0
66422       MSTU(125)=10
66423  
66424 C...Read out decay products. Convert to standard flavour code.
66425       JTMAX=5
66426       IF(MDME(IDC+1,2).EQ.101) JTMAX=10
66427       DO 280 JT=1,JTMAX
66428         IF(JT.LE.5) KP=KFDP(IDC,JT)
66429         IF(JT.GE.6) KP=KFDP(IDC+1,JT-5)
66430         IF(KP.EQ.0) GOTO 280
66431         KPA=IABS(KP)
66432         KCP=PYCOMP(KPA)
66433         IF(KPA.GT.80) MHADDY=1
66434         IF(KCHG(KCP,3).EQ.0.AND.KPA.NE.81.AND.KPA.NE.82) THEN
66435           KFP=KP
66436         ELSEIF(KPA.NE.81.AND.KPA.NE.82) THEN
66437           KFP=KFS*KP
66438         ELSEIF(KPA.EQ.81.AND.MOD(KFA/1000,10).EQ.0) THEN
66439           KFP=-KFS*MOD(KFA/10,10)
66440         ELSEIF(KPA.EQ.81.AND.MOD(KFA/100,10).GE.MOD(KFA/10,10)) THEN
66441           KFP=KFS*(100*MOD(KFA/10,100)+3)
66442         ELSEIF(KPA.EQ.81) THEN
66443           KFP=KFS*(1000*MOD(KFA/10,10)+100*MOD(KFA/100,10)+1)
66444         ELSEIF(KP.EQ.82) THEN
66445           CALL PYDCYK(-KFS*INT(1D0+(2D0+PARJ(2))*PYR(0)),0,KFP,KDUMP)
66446           IF(KFP.EQ.0) GOTO 260
66447           KFP=-KFP
66448           IRNDMO=1
66449           MSTJ(93)=1
66450           IF(PV(1,5).LT.PARJ(32)+2D0*PYMASS(KFP)) GOTO 260
66451         ELSEIF(KP.EQ.-82) THEN
66452           KFP=MSTU(124)
66453         ENDIF
66454         IF(KPA.EQ.81.OR.KPA.EQ.82) KCP=PYCOMP(KFP)
66455  
66456 C...Add decay product to event record or to quark flavour list.
66457         KFPA=IABS(KFP)
66458         KQP=KCHG(KCP,2)
66459         IF(MMAT.GE.11.AND.MMAT.LE.30.AND.KQP.NE.0) THEN
66460           NQ=NQ+1
66461           KFLO(NQ)=KFP
66462 C...set rndmflav popcorn system pointer
66463           IF(KP.EQ.82.AND.MSTU(121).GT.0) JTMO=NQ
66464           MSTJ(93)=2
66465           PSQ=PSQ+PYMASS(KFLO(NQ))
66466         ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.48).AND.NP.EQ.3.AND.
66467      &    MOD(NQ,2).EQ.1) THEN
66468           NQ=NQ-1
66469           PS=PS-P(I,5)
66470           K(I,1)=1
66471           KFI=K(I,2)
66472           CALL PYKFDI(KFP,KFI,KFLDMP,K(I,2))
66473           IF(K(I,2).EQ.0) GOTO 260
66474           MSTJ(93)=1
66475           P(I,5)=PYMASS(K(I,2))
66476           PS=PS+P(I,5)
66477         ELSE
66478           I=I+1
66479           NP=NP+1
66480           IF(MMAT.NE.33.AND.KQP.NE.0) NQ=NQ+1
66481           IF(MMAT.EQ.33.AND.KQP.NE.0.AND.KQP.NE.2) NQ=NQ+1
66482           K(I,1)=1+MOD(NQ,2)
66483           IF(MMAT.EQ.4.AND.JT.LE.2.AND.KFP.EQ.21) K(I,1)=2
66484           IF(MMAT.EQ.4.AND.JT.EQ.3) K(I,1)=1
66485           K(I,2)=KFP
66486           K(I,3)=IP
66487           K(I,4)=0
66488           K(I,5)=0
66489           P(I,5)=PYMASS(KFP)
66490           PS=PS+P(I,5)
66491         ENDIF
66492   280 CONTINUE
66493  
66494 C...Check masses for resonance decays.
66495       IF(MHADDY.EQ.0) THEN
66496         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 240
66497       ENDIF
66498  
66499 C...Choose decay multiplicity in phase space model.
66500   290 IF(MMAT.GE.11.AND.MMAT.LE.30) THEN
66501         PSP=PS
66502         CNDE=PARJ(61)*LOG(MAX((PV(1,5)-PS-PSQ)/PARJ(62),1.1D0))
66503         IF(MMAT.EQ.12) CNDE=CNDE+PARJ(63)
66504   300   NTRY=NTRY+1
66505 C...Reset popcorn flags if new attempt. Re-select rndmflav if failed.
66506         IF(IRNDMO.EQ.0) THEN
66507            MSTU(121)=0
66508            JTMO=0
66509         ELSEIF(IRNDMO.EQ.1) THEN
66510            IRNDMO=2
66511         ELSE
66512            GOTO 260
66513         ENDIF
66514         IF(NTRY.GT.1000) THEN
66515           CALL PYERRM(14,'(PYDECY:) caught in infinite loop')
66516           IF(MSTU(21).GE.1) RETURN
66517         ENDIF
66518         IF(MMAT.LE.20) THEN
66519           GAUSS=SQRT(-2D0*CNDE*LOG(MAX(1D-10,PYR(0))))*
66520      &    SIN(PARU(2)*PYR(0))
66521           ND=0.5D0+0.5D0*NP+0.25D0*NQ+CNDE+GAUSS
66522           IF(ND.LT.NP+NQ/2.OR.ND.LT.2.OR.ND.GT.10) GOTO 300
66523           IF(MMAT.EQ.13.AND.ND.EQ.2) GOTO 300
66524           IF(MMAT.EQ.14.AND.ND.LE.3) GOTO 300
66525           IF(MMAT.EQ.15.AND.ND.LE.4) GOTO 300
66526         ELSE
66527           ND=MMAT-20
66528         ENDIF
66529 C.. Set maximum popcorn meson number. Test rndmflav popcorn size.
66530         MSTU(125)=ND-NQ/2
66531         IF(MSTU(121).GT.MSTU(125)) GOTO 300
66532  
66533 C...Form hadrons from flavour content.
66534         DO 310 JT=1,NQ
66535           KFL1(JT)=KFLO(JT)
66536   310   CONTINUE
66537         IF(ND.EQ.NP+NQ/2) GOTO 330
66538         DO 320 I=N+NP+1,N+ND-NQ/2
66539 C.. Stick to started popcorn system, else pick side at random
66540           JT=JTMO
66541           IF(JT.EQ.0) JT=1+INT((NQ-1)*PYR(0))
66542           CALL PYDCYK(KFL1(JT),0,KFL2,K(I,2))
66543           IF(K(I,2).EQ.0) GOTO 300
66544           MSTU(125)=MSTU(125)-1
66545           JTMO=0
66546           IF(MSTU(121).GT.0) JTMO=JT
66547           KFL1(JT)=-KFL2
66548   320   CONTINUE
66549   330   JT=2
66550         JT2=3
66551         JT3=4
66552         IF(NQ.EQ.4.AND.PYR(0).LT.PARJ(66)) JT=4
66553         IF(JT.EQ.4.AND.ISIGN(1,KFL1(1)*(10-IABS(KFL1(1))))*
66554      &  ISIGN(1,KFL1(JT)*(10-IABS(KFL1(JT)))).GT.0) JT=3
66555         IF(JT.EQ.3) JT2=2
66556         IF(JT.EQ.4) JT3=2
66557         CALL PYDCYK(KFL1(1),KFL1(JT),KFLDMP,K(N+ND-NQ/2+1,2))
66558         IF(K(N+ND-NQ/2+1,2).EQ.0) GOTO 300
66559         IF(NQ.EQ.4) CALL PYDCYK(KFL1(JT2),KFL1(JT3),KFLDMP,K(N+ND,2))
66560         IF(NQ.EQ.4.AND.K(N+ND,2).EQ.0) GOTO 300
66561  
66562 C...Check that sum of decay product masses not too large.
66563         PS=PSP
66564         DO 340 I=N+NP+1,N+ND
66565           K(I,1)=1
66566           K(I,3)=IP
66567           K(I,4)=0
66568           K(I,5)=0
66569           P(I,5)=PYMASS(K(I,2))
66570           PS=PS+P(I,5)
66571   340   CONTINUE
66572         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 300
66573  
66574 C...Rescale energy to subtract off spectator quark mass.
66575       ELSEIF((MMAT.EQ.31.OR.MMAT.EQ.33.OR.MMAT.EQ.44)
66576      &  .AND.NP.GE.3) THEN
66577         PS=PS-P(N+NP,5)
66578         PQT=(P(N+NP,5)+PARJ(65))/PV(1,5)
66579         DO 350 J=1,5
66580           P(N+NP,J)=PQT*PV(1,J)
66581           PV(1,J)=(1D0-PQT)*PV(1,J)
66582   350   CONTINUE
66583         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
66584         ND=NP-1
66585         MREM=1
66586  
66587 C...Fully specified final state: check mass broadening effects.
66588       ELSE
66589         IF(NP.GE.2.AND.PS+PARJ(64).GT.PV(1,5)) GOTO 260
66590         ND=NP
66591       ENDIF
66592  
66593 C...Determine position of grandmother, number of sisters.
66594       NM=0
66595       KFAS=0
66596       MSGN=0
66597       IF(MMAT.EQ.3) THEN
66598         IM=K(IP,3)
66599         IF(IM.LT.0.OR.IM.GE.IP) IM=0
66600         IF(IM.NE.0) KFAM=IABS(K(IM,2))
66601         IF(IM.NE.0) THEN
66602           DO 360 IL=MAX(IP-2,IM+1),MIN(IP+2,N)
66603             IF(K(IL,3).EQ.IM) NM=NM+1
66604             IF(K(IL,3).EQ.IM.AND.IL.NE.IP) ISIS=IL
66605   360     CONTINUE
66606           IF(NM.NE.2.OR.KFAM.LE.100.OR.MOD(KFAM,10).NE.1.OR.
66607      &    MOD(KFAM/1000,10).NE.0) NM=0
66608           IF(NM.EQ.2) THEN
66609             KFAS=IABS(K(ISIS,2))
66610             IF((KFAS.LE.100.OR.MOD(KFAS,10).NE.1.OR.
66611      &      MOD(KFAS/1000,10).NE.0).AND.KFAS.NE.22) NM=0
66612           ENDIF
66613         ENDIF
66614       ENDIF
66615  
66616 C...Kinematics of one-particle decays.
66617       IF(ND.EQ.1) THEN
66618         DO 370 J=1,4
66619           P(N+1,J)=P(IP,J)
66620   370   CONTINUE
66621         GOTO 630
66622       ENDIF
66623  
66624 C...Calculate maximum weight ND-particle decay.
66625       PV(ND,5)=P(N+ND,5)
66626       IF(ND.GE.3) THEN
66627         WTMAX=1D0/WTCOR(ND-2)
66628         PMAX=PV(1,5)-PS+P(N+ND,5)
66629         PMIN=0D0
66630         DO 380 IL=ND-1,1,-1
66631           PMAX=PMAX+P(N+IL,5)
66632           PMIN=PMIN+P(N+IL+1,5)
66633           WTMAX=WTMAX*PAWT(PMAX,PMIN,P(N+IL,5))
66634   380   CONTINUE
66635       ENDIF
66636  
66637 C...Find virtual gamma mass in Dalitz decay.
66638   390 IF(ND.EQ.2) THEN
66639       ELSEIF(MMAT.EQ.2) THEN
66640         PMES=4D0*PMAS(11,1)**2
66641         PMRHO2=PMAS(131,1)**2
66642         PGRHO2=PMAS(131,2)**2
66643   400   PMST=PMES*(P(IP,5)**2/PMES)**PYR(0)
66644         WT=(1+0.5D0*PMES/PMST)*SQRT(MAX(0D0,1D0-PMES/PMST))*
66645      &  (1D0-PMST/P(IP,5)**2)**3*(1D0+PGRHO2/PMRHO2)/
66646      &  ((1D0-PMST/PMRHO2)**2+PGRHO2/PMRHO2)
66647         IF(WT.LT.PYR(0)) GOTO 400
66648         PV(2,5)=MAX(2.00001D0*PMAS(11,1),SQRT(PMST))
66649  
66650 C...M-generator gives weight. If rejected, try again.
66651       ELSE
66652   410   RORD(1)=1D0
66653         DO 440 IL1=2,ND-1
66654           RSAV=PYR(0)
66655           DO 420 IL2=IL1-1,1,-1
66656             IF(RSAV.LE.RORD(IL2)) GOTO 430
66657             RORD(IL2+1)=RORD(IL2)
66658   420     CONTINUE
66659   430     RORD(IL2+1)=RSAV
66660   440   CONTINUE
66661         RORD(ND)=0D0
66662         WT=1D0
66663         DO 450 IL=ND-1,1,-1
66664           PV(IL,5)=PV(IL+1,5)+P(N+IL,5)+(RORD(IL)-RORD(IL+1))*
66665      &    (PV(1,5)-PS)
66666           WT=WT*PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
66667   450   CONTINUE
66668         IF(WT.LT.PYR(0)*WTMAX) GOTO 410
66669       ENDIF
66670  
66671 C...Perform two-particle decays in respective CM frame.
66672   460 DO 480 IL=1,ND-1
66673         PA=PAWT(PV(IL,5),PV(IL+1,5),P(N+IL,5))
66674         UE(3)=2D0*PYR(0)-1D0
66675         PHI=PARU(2)*PYR(0)
66676         UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI)
66677         UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI)
66678         DO 470 J=1,3
66679           P(N+IL,J)=PA*UE(J)
66680           PV(IL+1,J)=-PA*UE(J)
66681   470   CONTINUE
66682         P(N+IL,4)=SQRT(PA**2+P(N+IL,5)**2)
66683         PV(IL+1,4)=SQRT(PA**2+PV(IL+1,5)**2)
66684   480 CONTINUE
66685  
66686 C...Lorentz transform decay products to lab frame.
66687       DO 490 J=1,4
66688         P(N+ND,J)=PV(ND,J)
66689   490 CONTINUE
66690       DO 530 IL=ND-1,1,-1
66691         DO 500 J=1,3
66692           BE(J)=PV(IL,J)/PV(IL,4)
66693   500   CONTINUE
66694         GA=PV(IL,4)/PV(IL,5)
66695         DO 520 I=N+IL,N+ND
66696           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
66697           DO 510 J=1,3
66698             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
66699   510     CONTINUE
66700           P(I,4)=GA*(P(I,4)+BEP)
66701   520   CONTINUE
66702   530 CONTINUE
66703  
66704 C...Check that no infinite loop in matrix element weight.
66705       NTRY=NTRY+1
66706       IF(NTRY.GT.800) GOTO 560
66707  
66708 C...Matrix elements for omega and phi decays.
66709       IF(MMAT.EQ.1) THEN
66710         WT=(P(N+1,5)*P(N+2,5)*P(N+3,5))**2-(P(N+1,5)*FOUR(N+2,N+3))**2
66711      &  -(P(N+2,5)*FOUR(N+1,N+3))**2-(P(N+3,5)*FOUR(N+1,N+2))**2
66712      &  +2D0*FOUR(N+1,N+2)*FOUR(N+1,N+3)*FOUR(N+2,N+3)
66713         IF(MAX(WT*WTCOR(9)/P(IP,5)**6,0.001D0).LT.PYR(0)) GOTO 390
66714  
66715 C...Matrix elements for pi0 or eta Dalitz decay to gamma e+ e-.
66716       ELSEIF(MMAT.EQ.2) THEN
66717         FOUR12=FOUR(N+1,N+2)
66718         FOUR13=FOUR(N+1,N+3)
66719         WT=(PMST-0.5D0*PMES)*(FOUR12**2+FOUR13**2)+
66720      &  PMES*(FOUR12*FOUR13+FOUR12**2+FOUR13**2)
66721         IF(WT.LT.PYR(0)*0.25D0*PMST*(P(IP,5)**2-PMST)**2) GOTO 460
66722  
66723 C...Matrix element for S0 -> S1 + V1 -> S1 + S2 + S3 (S scalar,
66724 C...V vector), of form cos**2(theta02) in V1 rest frame, and for
66725 C...S0 -> gamma + V1 -> gamma + S2 + S3, of form sin**2(theta02).
66726       ELSEIF(MMAT.EQ.3.AND.NM.EQ.2) THEN
66727         FOUR10=FOUR(IP,IM)
66728         FOUR12=FOUR(IP,N+1)
66729         FOUR02=FOUR(IM,N+1)
66730         PMS1=P(IP,5)**2
66731         PMS0=P(IM,5)**2
66732         PMS2=P(N+1,5)**2
66733         IF(KFAS.NE.22) HNUM=(FOUR10*FOUR12-PMS1*FOUR02)**2
66734         IF(KFAS.EQ.22) HNUM=PMS1*(2D0*FOUR10*FOUR12*FOUR02-
66735      &  PMS1*FOUR02**2-PMS0*FOUR12**2-PMS2*FOUR10**2+PMS1*PMS0*PMS2)
66736         HNUM=MAX(1D-6*PMS1**2*PMS0*PMS2,HNUM)
66737         HDEN=(FOUR10**2-PMS1*PMS0)*(FOUR12**2-PMS1*PMS2)
66738         IF(HNUM.LT.PYR(0)*HDEN) GOTO 460
66739  
66740 C...Matrix element for "onium" -> g + g + g or gamma + g + g.
66741       ELSEIF(MMAT.EQ.4) THEN
66742         HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
66743         HX2=2D0*FOUR(IP,N+2)/P(IP,5)**2
66744         HX3=2D0*FOUR(IP,N+3)/P(IP,5)**2
66745         WT=((1D0-HX1)/(HX2*HX3))**2+((1D0-HX2)/(HX1*HX3))**2+
66746      &  ((1D0-HX3)/(HX1*HX2))**2
66747         IF(WT.LT.2D0*PYR(0)) GOTO 390
66748         IF(K(IP+1,2).EQ.22.AND.(1D0-HX1)*P(IP,5)**2.LT.4D0*PARJ(32)**2)
66749      &  GOTO 390
66750  
66751 C...Effective matrix element for nu spectrum in tau -> nu + hadrons.
66752       ELSEIF(MMAT.EQ.41) THEN
66753         IF(MBST.EQ.0) HX1=2D0*FOUR(IP,N+1)/P(IP,5)**2
66754         IF(MBST.EQ.1) HX1=2D0*P(N+1,4)/P(IP,5)
66755         HXM=MIN(0.75D0,2D0*(1D0-PS/P(IP,5)))
66756         IF(HX1*(3D0-2D0*HX1).LT.PYR(0)*HXM*(3D0-2D0*HXM)) GOTO 390
66757  
66758 C...Matrix elements for weak decays (only semileptonic for c and b)
66759       ELSEIF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
66760      &  .AND.ND.EQ.3) THEN
66761         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+3)
66762         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+3)
66763         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
66764       ELSEIF(MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48) THEN
66765         DO 550 J=1,4
66766           P(N+NP+1,J)=0D0
66767           DO 540 IS=N+3,N+NP
66768             P(N+NP+1,J)=P(N+NP+1,J)+P(IS,J)
66769   540     CONTINUE
66770   550   CONTINUE
66771         IF(MBST.EQ.0) WT=FOUR(IP,N+1)*FOUR(N+2,N+NP+1)
66772         IF(MBST.EQ.1) WT=P(IP,5)*P(N+1,4)*FOUR(N+2,N+NP+1)
66773         IF(WT.LT.PYR(0)*P(IP,5)*PV(1,5)**3/WTCOR(10)) GOTO 390
66774       ENDIF
66775  
66776 C...Scale back energy and reattach spectator.
66777   560 IF(MREM.EQ.1) THEN
66778         DO 570 J=1,5
66779           PV(1,J)=PV(1,J)/(1D0-PQT)
66780   570   CONTINUE
66781         ND=ND+1
66782         MREM=0
66783       ENDIF
66784  
66785 C...Low invariant mass for system with spectator quark gives particle,
66786 C...not two jets. Readjust momenta accordingly.
66787       IF(MMAT.EQ.31.AND.ND.EQ.3) THEN
66788         MSTJ(93)=1
66789         PM2=PYMASS(K(N+2,2))
66790         MSTJ(93)=1
66791         PM3=PYMASS(K(N+3,2))
66792         IF(P(N+2,5)**2+P(N+3,5)**2+2D0*FOUR(N+2,N+3).GE.
66793      &  (PARJ(32)+PM2+PM3)**2) GOTO 630
66794         K(N+2,1)=1
66795         KFTEMP=K(N+2,2)
66796         CALL PYKFDI(KFTEMP,K(N+3,2),KFLDMP,K(N+2,2))
66797         IF(K(N+2,2).EQ.0) GOTO 260
66798         P(N+2,5)=PYMASS(K(N+2,2))
66799         PS=P(N+1,5)+P(N+2,5)
66800         PV(2,5)=P(N+2,5)
66801         MMAT=0
66802         ND=2
66803         GOTO 460
66804       ELSEIF(MMAT.EQ.44) THEN
66805         MSTJ(93)=1
66806         PM3=PYMASS(K(N+3,2))
66807         MSTJ(93)=1
66808         PM4=PYMASS(K(N+4,2))
66809         IF(P(N+3,5)**2+P(N+4,5)**2+2D0*FOUR(N+3,N+4).GE.
66810      &  (PARJ(32)+PM3+PM4)**2) GOTO 600
66811         K(N+3,1)=1
66812         KFTEMP=K(N+3,2)
66813         CALL PYKFDI(KFTEMP,K(N+4,2),KFLDMP,K(N+3,2))
66814         IF(K(N+3,2).EQ.0) GOTO 260
66815         P(N+3,5)=PYMASS(K(N+3,2))
66816         DO 580 J=1,3
66817           P(N+3,J)=P(N+3,J)+P(N+4,J)
66818   580   CONTINUE
66819         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)
66820         HA=P(N+1,4)**2-P(N+2,4)**2
66821         HB=HA-(P(N+1,5)**2-P(N+2,5)**2)
66822         HC=(P(N+1,1)-P(N+2,1))**2+(P(N+1,2)-P(N+2,2))**2+
66823      &  (P(N+1,3)-P(N+2,3))**2
66824         HD=(PV(1,4)-P(N+3,4))**2
66825         HE=HA**2-2D0*HD*(P(N+1,4)**2+P(N+2,4)**2)+HD**2
66826         HF=HD*HC-HB**2
66827         HG=HD*HC-HA*HB
66828         HH=(SQRT(HG**2+HE*HF)-HG)/(2D0*HF)
66829         DO 590 J=1,3
66830           PCOR=HH*(P(N+1,J)-P(N+2,J))
66831           P(N+1,J)=P(N+1,J)+PCOR
66832           P(N+2,J)=P(N+2,J)-PCOR
66833   590   CONTINUE
66834         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)
66835         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)
66836         ND=ND-1
66837       ENDIF
66838  
66839 C...Check invariant mass of W jets. May give one particle or start over.
66840   600 IF((MMAT.EQ.42.OR.MMAT.EQ.43.OR.MMAT.EQ.44.OR.MMAT.EQ.48)
66841      &.AND.IABS(K(N+1,2)).LT.10) THEN
66842         PMR=SQRT(MAX(0D0,P(N+1,5)**2+P(N+2,5)**2+2D0*FOUR(N+1,N+2)))
66843         MSTJ(93)=1
66844         PM1=PYMASS(K(N+1,2))
66845         MSTJ(93)=1
66846         PM2=PYMASS(K(N+2,2))
66847         IF(PMR.GT.PARJ(32)+PM1+PM2) GOTO 610
66848         KFLDUM=INT(1.5D0+PYR(0))
66849         CALL PYKFDI(K(N+1,2),-ISIGN(KFLDUM,K(N+1,2)),KFLDMP,KF1)
66850         CALL PYKFDI(K(N+2,2),-ISIGN(KFLDUM,K(N+2,2)),KFLDMP,KF2)
66851         IF(KF1.EQ.0.OR.KF2.EQ.0) GOTO 260
66852         PSM=PYMASS(KF1)+PYMASS(KF2)
66853         IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.PMR.GT.PARJ(64)+PSM) GOTO 610
66854         IF(MMAT.GE.43.AND.PMR.GT.0.2D0*PARJ(32)+PSM) GOTO 610
66855         IF(MMAT.EQ.48) GOTO 390
66856         IF(ND.EQ.4.OR.KFA.EQ.15) GOTO 260
66857         K(N+1,1)=1
66858         KFTEMP=K(N+1,2)
66859         CALL PYKFDI(KFTEMP,K(N+2,2),KFLDMP,K(N+1,2))
66860         IF(K(N+1,2).EQ.0) GOTO 260
66861         P(N+1,5)=PYMASS(K(N+1,2))
66862         K(N+2,2)=K(N+3,2)
66863         P(N+2,5)=P(N+3,5)
66864         PS=P(N+1,5)+P(N+2,5)
66865         IF(PS+PARJ(64).GT.PV(1,5)) GOTO 260
66866         PV(2,5)=P(N+3,5)
66867         MMAT=0
66868         ND=2
66869         GOTO 460
66870       ENDIF
66871  
66872 C...Phase space decay of partons from W decay.
66873   610 IF((MMAT.EQ.42.OR.MMAT.EQ.48).AND.IABS(K(N+1,2)).LT.10) THEN
66874         KFLO(1)=K(N+1,2)
66875         KFLO(2)=K(N+2,2)
66876         K(N+1,1)=K(N+3,1)
66877         K(N+1,2)=K(N+3,2)
66878         DO 620 J=1,5
66879           PV(1,J)=P(N+1,J)+P(N+2,J)
66880           P(N+1,J)=P(N+3,J)
66881   620   CONTINUE
66882         PV(1,5)=PMR
66883         N=N+1
66884         NP=0
66885         NQ=2
66886         PS=0D0
66887         MSTJ(93)=2
66888         PSQ=PYMASS(KFLO(1))
66889         MSTJ(93)=2
66890         PSQ=PSQ+PYMASS(KFLO(2))
66891         MMAT=11
66892         GOTO 290
66893       ENDIF
66894  
66895 C...Boost back for rapidly moving particle.
66896   630 N=N+ND
66897       IF(MBST.EQ.1) THEN
66898         DO 640 J=1,3
66899           BE(J)=P(IP,J)/P(IP,4)
66900   640   CONTINUE
66901         GA=P(IP,4)/P(IP,5)
66902         DO 660 I=NSAV+1,N
66903           BEP=BE(1)*P(I,1)+BE(2)*P(I,2)+BE(3)*P(I,3)
66904           DO 650 J=1,3
66905             P(I,J)=P(I,J)+GA*(GA*BEP/(1D0+GA)+P(I,4))*BE(J)
66906   650     CONTINUE
66907           P(I,4)=GA*(P(I,4)+BEP)
66908   660   CONTINUE
66909       ENDIF
66910  
66911 C...Fill in position of decay vertex.
66912       DO 680 I=NSAV+1,N
66913         DO 670 J=1,4
66914           V(I,J)=VDCY(J)
66915   670   CONTINUE
66916         V(I,5)=0D0
66917   680 CONTINUE
66918  
66919 C...Set up for parton shower evolution from jets.
66920       IF(MSTJ(23).GE.1.AND.MMAT.EQ.4.AND.K(NSAV+1,2).EQ.21) THEN
66921         K(NSAV+1,1)=3
66922         K(NSAV+2,1)=3
66923         K(NSAV+3,1)=3
66924         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
66925         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
66926         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
66927         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
66928         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
66929         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
66930         MSTJ(92)=-(NSAV+1)
66931       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.4) THEN
66932         K(NSAV+2,1)=3
66933         K(NSAV+3,1)=3
66934         K(NSAV+2,4)=MSTU(5)*(NSAV+3)
66935         K(NSAV+2,5)=MSTU(5)*(NSAV+3)
66936         K(NSAV+3,4)=MSTU(5)*(NSAV+2)
66937         K(NSAV+3,5)=MSTU(5)*(NSAV+2)
66938         MSTJ(92)=NSAV+2
66939       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
66940      &  IABS(K(NSAV+1,2)).LE.10.AND.IABS(K(NSAV+2,2)).LE.10) THEN
66941         K(NSAV+1,1)=3
66942         K(NSAV+2,1)=3
66943         K(NSAV+1,4)=MSTU(5)*(NSAV+2)
66944         K(NSAV+1,5)=MSTU(5)*(NSAV+2)
66945         K(NSAV+2,4)=MSTU(5)*(NSAV+1)
66946         K(NSAV+2,5)=MSTU(5)*(NSAV+1)
66947         MSTJ(92)=NSAV+1
66948       ELSEIF(MSTJ(23).GE.1.AND.(MMAT.EQ.32.OR.MMAT.EQ.44).AND.
66949      &  IABS(K(NSAV+1,2)).LE.20.AND.IABS(K(NSAV+2,2)).LE.20) THEN
66950         MSTJ(92)=NSAV+1
66951       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33.AND.IABS(K(NSAV+2,2)).EQ.21)
66952      &  THEN
66953         K(NSAV+1,1)=3
66954         K(NSAV+2,1)=3
66955         K(NSAV+3,1)=3
66956         KCP=PYCOMP(K(NSAV+1,2))
66957         KQP=KCHG(KCP,2)*ISIGN(1,K(NSAV+1,2))
66958         JCON=4
66959         IF(KQP.LT.0) JCON=5
66960         K(NSAV+1,JCON)=MSTU(5)*(NSAV+2)
66961         K(NSAV+2,9-JCON)=MSTU(5)*(NSAV+1)
66962         K(NSAV+2,JCON)=MSTU(5)*(NSAV+3)
66963         K(NSAV+3,9-JCON)=MSTU(5)*(NSAV+2)
66964         MSTJ(92)=NSAV+1
66965       ELSEIF(MSTJ(23).GE.1.AND.MMAT.EQ.33) THEN
66966         K(NSAV+1,1)=3
66967         K(NSAV+3,1)=3
66968         K(NSAV+1,4)=MSTU(5)*(NSAV+3)
66969         K(NSAV+1,5)=MSTU(5)*(NSAV+3)
66970         K(NSAV+3,4)=MSTU(5)*(NSAV+1)
66971         K(NSAV+3,5)=MSTU(5)*(NSAV+1)
66972         MSTJ(92)=NSAV+1
66973       ENDIF
66974  
66975 C...Mark decayed particle; special option for B-Bbar mixing.
66976       IF(K(IP,1).EQ.5) K(IP,1)=15
66977       IF(K(IP,1).LE.10) K(IP,1)=11
66978       IF(MMIX.EQ.1.AND.MSTJ(26).EQ.2.AND.K(IP,1).EQ.11) K(IP,1)=12
66979       K(IP,4)=NSAV+1
66980       K(IP,5)=N
66981  
66982       RETURN
66983       END
66984  
66985  
66986 C*********************************************************************
66987  
66988 C...PYDCYK
66989 C...Handles flavour production in the decay of unstable particles
66990 C...and small string clusters.
66991  
66992       SUBROUTINE PYDCYK(KFL1,KFL2,KFL3,KF)
66993  
66994 C...Double precision and integer declarations.
66995       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
66996       IMPLICIT INTEGER(I-N)
66997       INTEGER PYK,PYCHGE,PYCOMP
66998 C...Commonblocks.
66999       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67000       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67001       SAVE /PYDAT1/,/PYDAT2/
67002  
67003  
67004 C.. Call PYKFDI directly if no popcorn option is on
67005       IF(MSTJ(12).LT.2) THEN
67006          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
67007          MSTU(124)=KFL3
67008          RETURN
67009       ENDIF
67010  
67011       KFL3=0
67012       KF=0
67013       IF(KFL1.EQ.0) RETURN
67014       KF1A=IABS(KFL1)
67015       KF2A=IABS(KFL2)
67016  
67017       NSTO=130
67018       NMAX=MIN(MSTU(125),10)
67019  
67020 C.. Identify rank 0 cluster qq
67021       IRANK=1
67022       IF(KF1A.GT.10.AND.KF1A.LT.10000) IRANK=0
67023  
67024       IF(KF2A.GT.0)THEN
67025 C.. Join jets: Fails if store not empty
67026          IF(MSTU(121).GT.0) THEN
67027             MSTU(121)=0
67028             RETURN
67029          ENDIF
67030          CALL PYKFDI(KFL1,KFL2,KFL3,KF)
67031       ELSEIF(KF1A.GT.10.AND.MSTU(121).GT.0)THEN
67032 C.. Pick popcorn meson from store, return same qq, decrease store
67033          KF=MSTU(NSTO+MSTU(121))
67034          KFL3=-KFL1
67035          MSTU(121)=MSTU(121)-1
67036       ELSE
67037 C.. Generate new flavour. Then done if no diquark is generated
67038   100    CALL PYKFDI(KFL1,0,KFL3,KF)
67039          IF(MSTU(121).EQ.-1) GOTO 100
67040          MSTU(124)=KFL3
67041          IF(KF.EQ.0.OR.IABS(KFL3).LE.10) RETURN
67042  
67043 C.. Simple case if no dynamical popcorn suppressions are considered
67044          IF(MSTJ(12).LT.4) THEN
67045             IF(MSTU(121).EQ.0) RETURN
67046             NMES=1
67047             KFPREV=-KFL3
67048             CALL PYKFDI(KFPREV,0,KFL3,KFM)
67049 C.. Due to eta+eta' suppr., a qq->M+qq attempt might end as qq->B+q
67050             IF(IABS(KFL3).LE.10)THEN
67051                KFL3=-KFPREV
67052                RETURN
67053             ENDIF
67054             GOTO 120
67055          ENDIF
67056  
67057 C test output qq against fake Gamma, then return if no popcorn.
67058          GB=2D0
67059          IF(IRANK.NE.0)THEN
67060             CALL PYZDIS(1,2103,5D0,Z)
67061             GB=5D0*(1D0-Z)/Z
67062             IF(1D0-PARF(192)**GB.LT.PYR(0)) THEN
67063                MSTU(121)=0
67064                GOTO 100
67065             ENDIF
67066          ENDIF
67067          IF(MSTU(121).EQ.0) RETURN
67068  
67069 C..Set store size memory. Pick fake dynamical variables of qq.
67070          NMES=MSTU(121)
67071          CALL PYPTDI(1,PX3,PY3)
67072          X=1D0
67073          POPM=0D0
67074          G=GB
67075          POPG=GB
67076  
67077 C.. Pick next popcorn meson, test with fake dynamical variables
67078   110    KFPREV=-KFL3
67079          PX1=-PX3
67080          PY1=-PY3
67081          CALL PYKFDI(KFPREV,0,KFL3,KFM)
67082          IF(MSTU(121).EQ.-1) GOTO 100
67083          CALL PYPTDI(KFL3,PX3,PY3)
67084          PM=PYMASS(KFM)**2+(PX1+PX3)**2+(PY1+PY3)**2
67085          CALL PYZDIS(KFPREV,KFL3,PM,Z)
67086          G=(1D0-Z)*(G+PM/Z)
67087          X=(1D0-Z)*X
67088  
67089          PTST=1D0
67090          GTST=1D0
67091          RTST=PYR(0)
67092          IF(MSTJ(12).GT.4)THEN
67093             POPMN=SQRT((1D0-X)*(G/X-GB))
67094             POPM=POPM+PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
67095             PTST=EXP((POPM-POPMN)*PARF(193))
67096             POPM=POPMN
67097          ENDIF
67098          IF(IRANK.NE.0)THEN
67099             POPGN=X*GB
67100             GTST=(1D0-PARF(192)**POPGN)/(1D0-PARF(192)**POPG)
67101             POPG=POPGN
67102          ENDIF
67103          IF(RTST.GT.PTST*GTST)THEN
67104             MSTU(121)=0
67105             IF(RTST.GT.PTST) MSTU(121)=-1
67106             GOTO 100
67107          ENDIF
67108  
67109 C.. Store meson
67110   120    IF(NMES.LE.NMAX) MSTU(NSTO+MSTU(121)+1)=KFM
67111          IF(MSTU(121).GT.0) GOTO 110
67112  
67113 C.. Test accepted system size. If OK set global popcorn size variable.
67114          IF(NMES.GT.NMAX)THEN
67115             KF=0
67116             KFL3=0
67117             RETURN
67118          ENDIF
67119          MSTU(121)=NMES
67120       ENDIF
67121  
67122       RETURN
67123       END
67124  
67125 C********************************************************************
67126  
67127 C...PYKFDI
67128 C...Generates a new flavour pair and combines off a hadron
67129  
67130       SUBROUTINE PYKFDI(KFL1,KFL2,KFL3,KF)
67131  
67132 C...Double precision and integer declarations.
67133       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67134       IMPLICIT INTEGER(I-N)
67135       INTEGER PYK,PYCHGE,PYCOMP
67136 C...Commonblocks.
67137       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67138       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67139       SAVE /PYDAT1/,/PYDAT2/
67140 C...Local arrays.
67141       DIMENSION PD(7)
67142  
67143       IF(MSTU(123).EQ.0.AND.MSTJ(12).GE.0)  CALL PYKFIN
67144  
67145 C...Default flavour values. Input consistency checks.
67146       KF1A=IABS(KFL1)
67147       KF2A=IABS(KFL2)
67148       KFL3=0
67149       KF=0
67150       IF(KF1A.EQ.0) RETURN
67151       IF(KF2A.NE.0)THEN
67152         IF(KF1A.LE.10.AND.KF2A.LE.10.AND.KFL1*KFL2.GT.0) RETURN
67153         IF(KF1A.GT.10.AND.KF2A.GT.10) RETURN
67154         IF((KF1A.GT.10.OR.KF2A.GT.10).AND.KFL1*KFL2.LT.0) RETURN
67155       ENDIF
67156  
67157 C...Check if tabulated flavour probabilities are to be used.
67158       IF(MSTJ(15).EQ.1) THEN
67159         IF(MSTJ(12).GE.5)  CALL PYERRM(29,
67160      &        '(PYKFDI:) Sorry, option MSTJ(15)=1 not available' //
67161      &        ' together with MSTJ(12)>=5 modification')
67162         KTAB1=-1
67163         IF(KF1A.GE.1.AND.KF1A.LE.6) KTAB1=KF1A
67164         KFL1A=MOD(KF1A/1000,10)
67165         KFL1B=MOD(KF1A/100,10)
67166         KFL1S=MOD(KF1A,10)
67167         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1B.GE.1.AND.KFL1B.LE.4)
67168      &  KTAB1=6+KFL1A*(KFL1A-2)+2*KFL1B+(KFL1S-1)/2
67169         IF(KFL1A.GE.1.AND.KFL1A.LE.4.AND.KFL1A.EQ.KFL1B) KTAB1=KTAB1-1
67170         IF(KF1A.GE.1.AND.KF1A.LE.6) KFL1A=KF1A
67171         KTAB2=0
67172         IF(KF2A.NE.0) THEN
67173           KTAB2=-1
67174           IF(KF2A.GE.1.AND.KF2A.LE.6) KTAB2=KF2A
67175           KFL2A=MOD(KF2A/1000,10)
67176           KFL2B=MOD(KF2A/100,10)
67177           KFL2S=MOD(KF2A,10)
67178           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2B.GE.1.AND.KFL2B.LE.4)
67179      &    KTAB2=6+KFL2A*(KFL2A-2)+2*KFL2B+(KFL2S-1)/2
67180           IF(KFL2A.GE.1.AND.KFL2A.LE.4.AND.KFL2A.EQ.KFL2B) KTAB2=KTAB2-1
67181         ENDIF
67182         IF(KTAB1.GE.0.AND.KTAB2.GE.0) GOTO 140
67183       ENDIF
67184  
67185 C.. Recognize rank 0 diquark case
67186   100 IRANK=1
67187       KFDIQ=MAX(KF1A,KF2A)
67188       IF(KFDIQ.GT.10.AND.KFDIQ.LT.10000) IRANK=0
67189  
67190 C.. Join two flavours to meson or baryon. Test for popcorn.
67191       IF(KF2A.GT.0)THEN
67192         MBARY=0
67193         IF(KFDIQ.GT.10) THEN
67194           IF(IRANK.EQ.0.AND.MSTJ(12).LT.5)
67195      &         CALL PYNMES(KFDIQ)
67196           IF(MSTU(121).NE.0) THEN
67197              MSTU(121)=0
67198              RETURN
67199           ENDIF
67200           MBARY=2
67201         ENDIF
67202         KFQOLD=KF1A
67203         KFQVER=KF2A
67204         GOTO 130
67205       ENDIF
67206  
67207 C.. Separate incoming flavours, curtain flavour consistency check
67208       KFIN=KFL1
67209       KFQOLD=KF1A
67210       KFQPOP=KF1A/10000
67211       IF(KF1A.GT.10)THEN
67212          KFIN=-KFL1
67213          KFL1A=MOD(KF1A/1000,10)
67214          KFL1B=MOD(KF1A/100,10)
67215          IF(IRANK.EQ.0)THEN
67216             QAWT=1D0
67217             IF(KFL1A.GE.3) QAWT=PARF(136+KFL1A/4)
67218             IF(KFL1B.GE.3) QAWT=QAWT/PARF(136+KFL1B/4)
67219             KFQPOP=KFL1A+(KFL1B-KFL1A)*INT(1D0/(QAWT+1D0)+PYR(0))
67220          ENDIF
67221          IF(KFQPOP.NE.KFL1B.AND.KFQPOP.NE.KFL1A) THEN
67222              MSTU(121)=0
67223              RETURN
67224           ENDIF
67225          KFQOLD=KFL1A+KFL1B-KFQPOP
67226       ENDIF
67227  
67228 C...Meson/baryon choice. Set number of mesons if starting a popcorn
67229 C...system.
67230   110 MBARY=0
67231       IF(KF1A.LE.10.AND.MSTJ(12).GT.0)THEN
67232          IF(MSTU(121).EQ.-1.OR.(1D0+PARJ(1))*PYR(0).GT.1D0)THEN
67233             MBARY=1
67234             CALL PYNMES(0)
67235          ENDIF
67236       ELSEIF(KF1A.GT.10)THEN
67237          MBARY=2
67238          IF(IRANK.EQ.0) CALL PYNMES(KF1A)
67239          IF(MSTU(121).GT.0) MBARY=-1
67240       ENDIF
67241  
67242 C..x->H+q: Choose single vertex quark. Jump to form hadron.
67243       IF(MBARY.EQ.0.OR.MBARY.EQ.2)THEN
67244          KFQVER=1+INT((2D0+PARJ(2))*PYR(0))
67245          KFL3=ISIGN(KFQVER,-KFIN)
67246          GOTO 130
67247       ENDIF
67248  
67249 C..x->H+qq: (IDW=proper PARF position for diquark weights)
67250       IDW=160
67251       IF(MBARY.EQ.1)THEN
67252          IF(MSTU(121).EQ.0) IDW=150
67253          SQWT=PARF(IDW+1)
67254          IF(MSTU(121).GT.0) SQWT=SQWT*PARF(135)*PARF(138)**MSTU(121)
67255          KFQPOP=1+INT((2D0+SQWT)*PYR(0))
67256 C..   Shift to s-curtain parameters if needed
67257          IF(KFQPOP.GE.3.AND.MSTJ(12).GE.5)THEN
67258             PARF(194)=PARF(138)*PARF(139)
67259             PARF(193)=PARJ(8)+PARJ(9)
67260          ENDIF
67261       ENDIF
67262  
67263 C.. x->H+qq: Get vertex quark
67264       IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
67265          IDW=MSTU(122)
67266          MSTU(121)=MSTU(121)-1
67267          IF(IDW.EQ.170) THEN
67268             IF(MSTU(121).EQ.0)THEN
67269                IPOS=3*MIN(KFQPOP-1,2)+MIN(KFQOLD-1,2)
67270             ELSE
67271                IPOS=3*3+3*MAX(0,MIN(KFQPOP-2,1))+MIN(KFQOLD-1,2)
67272             ENDIF
67273          ELSE
67274             IF(MSTU(121).EQ.0)THEN
67275                IPOS=3*5+5*MIN(KFQPOP-1,3)+MIN(KFQOLD-1,4)
67276             ELSE
67277                IPOS=3*5+5*4+MIN(KFQOLD-1,4)
67278             ENDIF
67279          ENDIF
67280          IPOS=200+30*IPOS+1
67281  
67282          IMES=-1
67283          RMES=PYR(0)*PARF(194)
67284   120    IMES=IMES+1
67285          RMES=RMES-PARF(IPOS+IMES)
67286          IF(IMES.EQ.30) THEN
67287             MSTU(121)=-1
67288             KF=-111
67289             RETURN
67290          ENDIF
67291          IF(RMES.GT.0D0) GOTO 120
67292          KMUL=IMES/5
67293          KFJ=2*KMUL+1
67294          IF(KMUL.EQ.2) KFJ=10003
67295          IF(KMUL.EQ.3) KFJ=10001
67296          IF(KMUL.EQ.4) KFJ=20003
67297          IF(KMUL.EQ.5) KFJ=5
67298          IDIAG=0
67299          KFQVER=MOD(IMES,5)+1
67300          IF(KFQVER.GE.KFQOLD) KFQVER=KFQVER+1
67301          IF(KFQVER.GT.3)THEN
67302             IDIAG=KFQVER-3
67303             KFQVER=KFQOLD
67304          ENDIF
67305       ELSE
67306          IF(MBARY.EQ.-1) IDW=170
67307          SQWT=PARF(IDW+2)
67308          IF(KFQPOP.EQ.3) SQWT=PARF(IDW+3)
67309          IF(KFQPOP.GT.3) SQWT=PARF(IDW+3)*(1D0/PARF(IDW+5)+1D0)/2D0
67310          KFQVER=MIN(3,1+INT((2D0+SQWT)*PYR(0)))
67311          IF(KFQPOP.LT.3.AND.KFQVER.LT.3)THEN
67312             KFQVER=KFQPOP
67313             IF(PYR(0).GT.PARF(IDW+4)) KFQVER=3-KFQPOP
67314          ENDIF
67315       ENDIF
67316  
67317 C..x->H+qq: form outgoing diquark with KFQPOP flag at 10000-pos
67318       KFLDS=3
67319       IF(KFQPOP.NE.KFQVER)THEN
67320          SWT=PARF(IDW+7)
67321          IF(KFQVER.EQ.3) SWT=PARF(IDW+6)
67322          IF(KFQPOP.GE.3) SWT=PARF(IDW+5)
67323          IF((1D0+SWT)*PYR(0).LT.1D0) KFLDS=1
67324       ENDIF
67325       KFDIQ=900*MAX(KFQVER,KFQPOP)+100*(KFQVER+KFQPOP)+KFLDS
67326      &      +10000*KFQPOP
67327       KFL3=ISIGN(KFDIQ,KFIN)
67328  
67329 C..x->M+y: flavour for meson.
67330   130 IF(MBARY.LE.0)THEN
67331         KFLA=MAX(KFQOLD,KFQVER)
67332         KFLB=MIN(KFQOLD,KFQVER)
67333         KFS=ISIGN(1,KFL1)
67334         IF(KFLA.NE.KFQOLD) KFS=-KFS
67335 C... Form meson, with spin and flavour mixing for diagonal states.
67336         IF(MBARY.EQ.-1.AND.MSTJ(12).GE.5)THEN
67337            IF(IDIAG.GT.0) KF=110*IDIAG+KFJ
67338            IF(IDIAG.EQ.0) KF=(100*KFLA+10*KFLB+KFJ)*KFS*(-1)**KFLA
67339            RETURN
67340         ENDIF
67341         IF(KFLA.LE.2) KMUL=INT(PARJ(11)+PYR(0))
67342         IF(KFLA.EQ.3) KMUL=INT(PARJ(12)+PYR(0))
67343         IF(KFLA.GE.4) KMUL=INT(PARJ(13)+PYR(0))
67344         IF(KMUL.EQ.0.AND.PARJ(14).GT.0D0)THEN
67345           IF(PYR(0).LT.PARJ(14)) KMUL=2
67346         ELSEIF(KMUL.EQ.1.AND.PARJ(15)+PARJ(16)+PARJ(17).GT.0D0)THEN
67347           RMUL=PYR(0)
67348           IF(RMUL.LT.PARJ(15)) KMUL=3
67349           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)) KMUL=4
67350           IF(KMUL.EQ.1.AND.RMUL.LT.PARJ(15)+PARJ(16)+PARJ(17)) KMUL=5
67351         ENDIF
67352         KFLS=3
67353         IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
67354         IF(KMUL.EQ.5) KFLS=5
67355         IF(KFLA.NE.KFLB)THEN
67356           KF=(100*KFLA+10*KFLB+KFLS)*KFS*(-1)**KFLA
67357         ELSE
67358           RMIX=PYR(0)
67359           IMIX=2*KFLA+10*KMUL
67360           IF(KFLA.LE.3) KF=110*(1+INT(RMIX+PARF(IMIX-1))+
67361      &    INT(RMIX+PARF(IMIX)))+KFLS
67362           IF(KFLA.GE.4) KF=110*KFLA+KFLS
67363         ENDIF
67364         IF(KMUL.EQ.2.OR.KMUL.EQ.3) KF=KF+ISIGN(10000,KF)
67365         IF(KMUL.EQ.4) KF=KF+ISIGN(20000,KF)
67366  
67367 C..Optional extra suppression of eta and eta'.
67368 C..Allow shift to qq->B+q in old version (set IRANK to 0)
67369         IF(KF.EQ.221.OR.KF.EQ.331)THEN
67370            IF(PYR(0).GT.PARJ(25+KF/300))THEN
67371               IF(KF2A.GT.0) GOTO 130
67372               IF(MSTJ(12).LT.4) IRANK=0
67373               GOTO 110
67374            ENDIF
67375         ENDIF
67376         MSTU(121)=0
67377  
67378 C.. x->B+y: Flavour for baryon
67379       ELSE
67380         KFLA=KFQVER
67381         IF(KF1A.LE.10) KFLA=KFQOLD
67382         KFLB=MOD(KFDIQ/1000,10)
67383         KFLC=MOD(KFDIQ/100,10)
67384         KFLDS=MOD(KFDIQ,10)
67385         KFLD=MAX(KFLA,KFLB,KFLC)
67386         KFLF=MIN(KFLA,KFLB,KFLC)
67387         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
67388  
67389 C...  SU(6) factors for formation of baryon.
67390         KBARY=3
67391         KDMAX=5
67392         KFLG=KFLB
67393         IF(KFLB.NE.KFLC)THEN
67394            KBARY=2*KFLDS-1
67395            KDMAX=1+KFLDS/2
67396            IF(KFLB.GT.2) KDMAX=KDMAX+2
67397         ENDIF
67398         IF(KFLA.NE.KFLB.AND.KFLA.NE.KFLC)THEN
67399            KBARY=KBARY+1
67400            KFLG=KFLA
67401         ENDIF
67402  
67403         SU6MAX=PARF(140+KDMAX)
67404         SU6DEC=PARJ(18)
67405         SU6S  =PARF(146)
67406         IF(MSTJ(12).GE.5.AND.IRANK.EQ.0) THEN
67407            SU6MAX=1D0
67408            SU6DEC=1D0
67409            SU6S  =1D0
67410         ENDIF
67411         SU6OCT=PARF(60+KBARY)
67412         IF(KFLG.GT.MAX(KFLA+KFLB-KFLG,2))THEN
67413            SU6OCT=SU6OCT*4*SU6S/(3*SU6S+1)
67414            IF(KBARY.EQ.2) SU6OCT=PARF(60+KBARY)*4/(3*SU6S+1)
67415         ELSE
67416            IF(KBARY.EQ.6) SU6OCT=SU6OCT*(3+SU6S)/(3*SU6S+1)
67417         ENDIF
67418         SU6WT=SU6OCT+SU6DEC*PARF(70+KBARY)
67419  
67420 C..   SU(6) test. Old options enforce new baryon if q->B+qq is rejected.
67421         IF(SU6WT.LT.PYR(0)*SU6MAX.AND.KF2A.EQ.0)THEN
67422            MSTU(121)=0
67423            IF(MSTJ(12).LE.2.AND.MBARY.EQ.1) MSTU(121)=-1
67424            GOTO 110
67425         ENDIF
67426  
67427 C.. Form baryon. Distinguish Lambda- and Sigmalike baryons.
67428         KSIG=1
67429         KFLS=2
67430         IF(SU6WT*PYR(0).GT.SU6OCT) KFLS=4
67431         IF(KFLS.EQ.2.AND.KFLD.GT.KFLE.AND.KFLE.GT.KFLF)THEN
67432           KSIG=KFLDS/3
67433           IF(KFLA.NE.KFLD) KSIG=INT(3*SU6S/(3*SU6S+KFLDS**2)+PYR(0))
67434         ENDIF
67435         KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+KFLS,KFL1)
67436         IF(KSIG.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+KFLS,KFL1)
67437       ENDIF
67438       RETURN
67439  
67440 C...Use tabulated probabilities to select new flavour and hadron.
67441   140 IF(KTAB2.EQ.0.AND.MSTJ(12).LE.0) THEN
67442         KT3L=1
67443         KT3U=6
67444       ELSEIF(KTAB2.EQ.0.AND.KTAB1.GE.7.AND.MSTJ(12).LE.1) THEN
67445         KT3L=1
67446         KT3U=6
67447       ELSEIF(KTAB2.EQ.0) THEN
67448         KT3L=1
67449         KT3U=22
67450       ELSE
67451         KT3L=KTAB2
67452         KT3U=KTAB2
67453       ENDIF
67454       RFL=0D0
67455       DO 160 KTS=0,2
67456         DO 150 KT3=KT3L,KT3U
67457           RFL=RFL+PARF(120+80*KTAB1+25*KTS+KT3)
67458   150   CONTINUE
67459   160 CONTINUE
67460       RFL=PYR(0)*RFL
67461       DO 180 KTS=0,2
67462         KTABS=KTS
67463         DO 170 KT3=KT3L,KT3U
67464           KTAB3=KT3
67465           RFL=RFL-PARF(120+80*KTAB1+25*KTS+KT3)
67466           IF(RFL.LE.0D0) GOTO 190
67467   170   CONTINUE
67468   180 CONTINUE
67469   190 CONTINUE
67470  
67471 C...Reconstruct flavour of produced quark/diquark.
67472       IF(KTAB3.LE.6) THEN
67473         KFL3A=KTAB3
67474         KFL3B=0
67475         KFL3=ISIGN(KFL3A,KFL1*(2*KTAB1-13))
67476       ELSE
67477         KFL3A=1
67478         IF(KTAB3.GE.8) KFL3A=2
67479         IF(KTAB3.GE.11) KFL3A=3
67480         IF(KTAB3.GE.16) KFL3A=4
67481         KFL3B=(KTAB3-6-KFL3A*(KFL3A-2))/2
67482         KFL3=1000*KFL3A+100*KFL3B+1
67483         IF(KFL3A.EQ.KFL3B.OR.KTAB3.NE.6+KFL3A*(KFL3A-2)+2*KFL3B) KFL3=
67484      &  KFL3+2
67485         KFL3=ISIGN(KFL3,KFL1*(13-2*KTAB1))
67486       ENDIF
67487  
67488 C...Reconstruct meson code.
67489       IF(KFL3A.EQ.KFL1A.AND.KFL3B.EQ.KFL1B.AND.(KFL3A.LE.3.OR.
67490      &KFL3B.NE.0)) THEN
67491         RFL=PYR(0)*(PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
67492      &  25*KTABS)+PARF(145+80*KTAB1+25*KTABS))
67493         KF=110+2*KTABS+1
67494         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)) KF=220+2*KTABS+1
67495         IF(RFL.GT.PARF(143+80*KTAB1+25*KTABS)+PARF(144+80*KTAB1+
67496      &  25*KTABS)) KF=330+2*KTABS+1
67497       ELSEIF(KTAB1.LE.6.AND.KTAB3.LE.6) THEN
67498         KFLA=MAX(KTAB1,KTAB3)
67499         KFLB=MIN(KTAB1,KTAB3)
67500         KFS=ISIGN(1,KFL1)
67501         IF(KFLA.NE.KF1A) KFS=-KFS
67502         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
67503       ELSEIF(KTAB1.GE.7.AND.KTAB3.GE.7) THEN
67504         KFS=ISIGN(1,KFL1)
67505         IF(KFL1A.EQ.KFL3A) THEN
67506           KFLA=MAX(KFL1B,KFL3B)
67507           KFLB=MIN(KFL1B,KFL3B)
67508           IF(KFLA.NE.KFL1B) KFS=-KFS
67509         ELSEIF(KFL1A.EQ.KFL3B) THEN
67510           KFLA=KFL3A
67511           KFLB=KFL1B
67512           KFS=-KFS
67513         ELSEIF(KFL1B.EQ.KFL3A) THEN
67514           KFLA=KFL1A
67515           KFLB=KFL3B
67516         ELSEIF(KFL1B.EQ.KFL3B) THEN
67517           KFLA=MAX(KFL1A,KFL3A)
67518           KFLB=MIN(KFL1A,KFL3A)
67519           IF(KFLA.NE.KFL1A) KFS=-KFS
67520         ELSE
67521           CALL PYERRM(2,'(PYKFDI:) no matching flavours for qq -> qq')
67522           GOTO 100
67523         ENDIF
67524         KF=(100*KFLA+10*KFLB+2*KTABS+1)*KFS*(-1)**KFLA
67525  
67526 C...Reconstruct baryon code.
67527       ELSE
67528         IF(KTAB1.GE.7) THEN
67529           KFLA=KFL3A
67530           KFLB=KFL1A
67531           KFLC=KFL1B
67532         ELSE
67533           KFLA=KFL1A
67534           KFLB=KFL3A
67535           KFLC=KFL3B
67536         ENDIF
67537         KFLD=MAX(KFLA,KFLB,KFLC)
67538         KFLF=MIN(KFLA,KFLB,KFLC)
67539         KFLE=KFLA+KFLB+KFLC-KFLD-KFLF
67540         IF(KTABS.EQ.0) KF=ISIGN(1000*KFLD+100*KFLF+10*KFLE+2,KFL1)
67541         IF(KTABS.GE.1) KF=ISIGN(1000*KFLD+100*KFLE+10*KFLF+2*KTABS,KFL1)
67542       ENDIF
67543  
67544 C...Check that constructed flavour code is an allowed one.
67545       IF(KFL2.NE.0) KFL3=0
67546       KC=PYCOMP(KF)
67547       IF(KC.EQ.0) THEN
67548         CALL PYERRM(2,'(PYKFDI:) user-defined flavour probabilities '//
67549      &  'failed')
67550         GOTO 100
67551       ENDIF
67552  
67553       RETURN
67554       END
67555  
67556 C*********************************************************************
67557  
67558 C...PYNMES
67559 C...Generates number of popcorn mesons and stores some relevant
67560 C...parameters.
67561  
67562       SUBROUTINE PYNMES(KFDIQ)
67563  
67564 C...Double precision and integer declarations.
67565       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67566       IMPLICIT INTEGER(I-N)
67567       INTEGER PYK,PYCHGE,PYCOMP
67568 C...Commonblocks.
67569       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67570       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67571       SAVE /PYDAT1/,/PYDAT2/
67572  
67573       MSTU(121)=0
67574       IF(MSTJ(12).LT.2) RETURN
67575  
67576 C..Old version: Get 1 or 0 popcorn mesons
67577       IF(MSTJ(12).LT.5)THEN
67578          POPWT=PARF(131)
67579          IF(KFDIQ.NE.0) THEN
67580             KFDIQA=IABS(KFDIQ)
67581             KFA=MOD(KFDIQA/1000,10)
67582             KFB=MOD(KFDIQA/100,10)
67583             KFS=MOD(KFDIQA,10)
67584             POPWT=PARF(132)
67585             IF(KFA.EQ.3) POPWT=PARF(133)
67586             IF(KFB.EQ.3) POPWT=PARF(134)
67587             IF(KFS.EQ.1) POPWT=POPWT*SQRT(PARJ(4))
67588          ENDIF
67589          MSTU(121)=INT(POPWT/(1D0+POPWT)+PYR(0))
67590          RETURN
67591       ENDIF
67592  
67593 C..New version: Store popcorn- or rank 0 diquark parameters
67594       MSTU(122)=170
67595       PARF(193)=PARJ(8)
67596       PARF(194)=PARF(139)
67597       IF(KFDIQ.NE.0) THEN
67598          MSTU(122)=180
67599          PARF(193)=PARJ(10)
67600          PARF(194)=PARF(140)
67601       ENDIF
67602       IF(PARF(194).LT.1D-5.OR.PARF(194).GT.1D0-1D-5) THEN
67603          IF(PARF(194).GT.1D0-1D-5) CALL PYERRM(9,
67604      &        '(PYNMES:) Neglecting too large popcorn possibility')
67605          RETURN
67606       ENDIF
67607  
67608 C..New version: Get number of popcorn mesons
67609   100 RTST=PYR(0)
67610       MSTU(121)=-1
67611   110 MSTU(121)=MSTU(121)+1
67612       RTST=RTST/PARF(194)
67613       IF(RTST.LT.1D0) GOTO 110
67614       IF(KFDIQ.EQ.0.AND.PYR(0)*(2D0+PARF(135)*PARF(161)).GT.
67615      &     (2D0+PARF(135)*PARF(161)*PARF(138)**MSTU(121))) GOTO 100
67616       RETURN
67617       END
67618  
67619 C***************************************************************
67620  
67621 C...PYKFIN
67622 C...Precalculates a set of diquark and popcorn weights.
67623  
67624       SUBROUTINE PYKFIN
67625  
67626 C...Double precision and integer declarations.
67627       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67628       IMPLICIT INTEGER(I-N)
67629       INTEGER PYK,PYCHGE,PYCOMP
67630 C...Commonblocks.
67631       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67632       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67633       SAVE /PYDAT1/,/PYDAT2/
67634  
67635       DIMENSION SU6(12),SU6M(7),QBB(7),QBM(7),DMB(14)
67636  
67637  
67638       MSTU(123)=1
67639 C..Diquark indices for dimensional variables
67640       IUD1=1
67641       IUU1=2
67642       IUS0=3
67643       ISU0=4
67644       IUS1=5
67645       ISU1=6
67646       ISS1=7
67647  
67648 C.. *** SU(6) factors **
67649 C..Modify with decuplet- (and Sigma/Lambda-) suppression.
67650       PARF(146)=1D0
67651       IF(MSTJ(12).GE.5) PARF(146)=3D0*PARJ(18)/(2D0*PARJ(18)+1D0)
67652       IF(PARJ(18).LT.1D0-1D-5.AND.MSTJ(12).LT.5) CALL PYERRM(9,
67653      &     '(PYKFIN:) PARJ(18)<1 combined with 0<MSTJ(12)<5 option')
67654       DO 100 I=1,6
67655          SU6(I)=PARF(60+I)
67656          SU6(6+I)=SU6(I)*4*PARF(146)/(3*PARF(146)+1)
67657   100 CONTINUE
67658       SU6(8)=SU6(2)*4/(3*PARF(146)+1)
67659       SU6(6)=SU6(6)*(3+PARF(146))/(3*PARF(146)+1)
67660       DO 110 I=1,6
67661          SU6(I)=SU6(I)+PARJ(18)*PARF(70+I)
67662          SU6(6+I)=SU6(6+I)+PARJ(18)*PARF(70+I)
67663   110 CONTINUE
67664  
67665 C..SU(6)max            q       q'     s,c,b
67666       SU6MUD    =MAX(SU6(1) ,       SU6(8) )
67667       SU6M(IUD1)=MAX(SU6(5) ,       SU6(12))
67668       SU6M(ISU0)=MAX(SU6(7) ,SU6(2),SU6MUD )
67669       SU6M(IUU1)=MAX(SU6(3) ,SU6(4),SU6(10))
67670       SU6M(ISU1)=MAX(SU6(11),SU6(6),SU6M(IUD1))
67671       SU6M(IUS0)=SU6M(ISU0)
67672       SU6M(ISS1)=SU6M(IUU1)
67673       SU6M(IUS1)=SU6M(ISU1)
67674  
67675 C..Store SU(6)max, in order UD0,UD1,US0,US1,QQ1
67676       PARF(141)=SU6MUD
67677       PARF(142)=SU6M(IUD1)
67678       PARF(143)=SU6M(ISU0)
67679       PARF(144)=SU6M(ISU1)
67680       PARF(145)=SU6M(ISS1)
67681  
67682 C..diquark SU(6) survival =
67683 C..sum over quark (quark tunnel weight)*(SU(6)).
67684       PUD0=(2D0*SU6(1)+PARJ(2)*SU6(8))
67685       DMB(ISU0)=(SU6(7)+SU6(2)+PARJ(2)*SU6(1))/PUD0
67686       DMB(IUS0)=DMB(ISU0)
67687       DMB(ISS1)=(2D0*SU6(4)+PARJ(2)*SU6(3))/PUD0
67688       DMB(IUU1)=(SU6(3)+SU6(4)+PARJ(2)*SU6(10))/PUD0
67689       DMB(ISU1)=(SU6(11)+SU6(6)+PARJ(2)*SU6(5))/PUD0
67690       DMB(IUS1)=DMB(ISU1)
67691       DMB(IUD1)=(2D0*SU6(5)+PARJ(2)*SU6(12))/PUD0
67692  
67693 C.. *** Tunneling factors for Diquark production***
67694 C.. T: half a curtain pair = sqrt(curtain pair factor)
67695       IF(MSTJ(12).GE.5) THEN
67696          PMUD0=PYMASS(2101)
67697          PMUD1=PYMASS(2103)-PMUD0
67698          PMUS0=PYMASS(3201)-PMUD0
67699          PMUS1=PYMASS(3203)-PMUS0-PMUD0
67700          PMSS1=PYMASS(3303)-PMUS0-PMUD0
67701          QBB(ISU0)=EXP(-(PARJ(9)+PARJ(8))*PMUS0-PARJ(9)*PARF(191))
67702          QBB(IUS0)=EXP(-PARJ(8)*PMUS0)
67703          QBB(ISS1)=EXP(-(PARJ(9)+PARJ(8))*PMSS1)*QBB(ISU0)
67704          QBB(IUU1)=EXP(-PARJ(8)*PMUD1)
67705          QBB(ISU1)=EXP(-(PARJ(9)+PARJ(8))*PMUS1)*QBB(ISU0)
67706          QBB(IUS1)=EXP(-PARJ(8)*PMUS1)*QBB(IUS0)
67707          QBB(IUD1)=QBB(IUU1)
67708       ELSE
67709          PAR2M=SQRT(PARJ(2))
67710          PAR3M=SQRT(PARJ(3))
67711          PAR4M=SQRT(PARJ(4))
67712          QBB(ISU0)=PAR2M*PAR3M
67713          QBB(IUS0)=PAR3M
67714          QBB(ISS1)=PAR2M*PARJ(3)*PAR4M
67715          QBB(IUU1)=PAR4M
67716          QBB(ISU1)=PAR4M*QBB(ISU0)
67717          QBB(IUS1)=PAR4M*QBB(IUS0)
67718          QBB(IUD1)=PAR4M
67719       ENDIF
67720  
67721 C.. tau: spin*(vertex factor)*(T = half-curtain factor)
67722       QBM(ISU0)=QBB(ISU0)
67723       QBM(IUS0)=PARJ(2)*QBB(IUS0)
67724       QBM(ISS1)=PARJ(2)*6D0*QBB(ISS1)
67725       QBM(IUU1)=6D0*QBB(IUU1)
67726       QBM(ISU1)=3D0*QBB(ISU1)
67727       QBM(IUS1)=PARJ(2)*3D0*QBB(IUS1)
67728       QBM(IUD1)=3D0*QBB(IUD1)
67729  
67730 C.. Combine T and tau to diquark weight for q-> B+B+..
67731       DO 120 I=1,7
67732          QBB(I)=QBB(I)*QBM(I)
67733   120 CONTINUE
67734  
67735       IF(MSTJ(12).GE.5)THEN
67736 C..New version: tau  for rank 0 diquark.
67737          DMB(7+ISU0)=EXP(-PARJ(10)*PMUS0)
67738          DMB(7+IUS0)=PARJ(2)*DMB(7+ISU0)
67739          DMB(7+ISS1)=6D0*PARJ(2)*EXP(-PARJ(10)*PMSS1)*DMB(7+ISU0)
67740          DMB(7+IUU1)=6D0*EXP(-PARJ(10)*PMUD1)
67741          DMB(7+ISU1)=3D0*EXP(-PARJ(10)*PMUS1)*DMB(7+ISU0)
67742          DMB(7+IUS1)=PARJ(2)*DMB(7+ISU1)
67743          DMB(7+IUD1)=DMB(7+IUU1)/2D0
67744  
67745 C..New version: curtain flavour ratios.
67746 C.. s/u for q->B+M+...
67747 C.. s/u for rank 0 diquark: su -> ...M+B+...
67748 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
67749          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
67750          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
67751          WU=1D0+DMB(7+IUD1)+DMB(7+IUS0)+DMB(7+IUS1)+DMB(7+IUU1)
67752          PARF(136)=(2D0*(DMB(7+ISU0)+DMB(7+ISU1))+DMB(7+ISS1))/WU
67753          PARF(137)=(DMB(7+ISU0)+DMB(7+ISU1))*
67754      &        (2D0+DMB(7+ISS1)/(2D0*DMB(7+ISU1)))/WU
67755       ELSE
67756 C..Old version: reset unused rank 0 diquark weights and
67757 C..             unused diquark SU(6) survival weights
67758          DO 130 I=1,7
67759             IF(MSTJ(12).LT.3) DMB(I)=1D0
67760             DMB(7+I)=1D0
67761   130    CONTINUE
67762  
67763 C..Old version: Shuffle PARJ(7) into tau
67764          QBM(IUS0)=QBM(IUS0)*PARJ(7)
67765          QBM(ISS1)=QBM(ISS1)*PARJ(7)
67766          QBM(IUS1)=QBM(IUS1)*PARJ(7)
67767  
67768 C..Old version: curtain flavour ratios.
67769 C.. s/u for q->B+M+...
67770 C.. s/u for rank 0 diquark: su -> ...M+B+...
67771 C.. Q/q for heavy rank 0 diquark: Qu -> ...M+B+...
67772          WU=1D0+QBM(IUD1)+QBM(IUS0)+QBM(IUS1)+QBM(IUU1)
67773          PARF(135)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/WU
67774          PARF(136)=PARF(135)*PARJ(6)*QBM(ISU0)/QBM(IUS0)
67775          PARF(137)=(1D0+QBM(IUD1))*(2D0+QBM(IUS0))/WU
67776       ENDIF
67777  
67778 C..Combine diquark SU(6) survival, SU(6)max, tau and T into factors for:
67779 C..  rank0 D->M+B+..; D->M+B+..; q->B+M+..; q->B+B..
67780       DO 140 I=1,7
67781          DMB(7+I)=DMB(7+I)*DMB(I)
67782          DMB(I)=DMB(I)*QBM(I)
67783          QBM(I)=QBM(I)*SU6M(I)/SU6MUD
67784          QBB(I)=QBB(I)*SU6M(I)/SU6MUD
67785   140 CONTINUE
67786  
67787 C.. *** Popcorn factors ***
67788  
67789       IF(MSTJ(12).LT.5)THEN
67790 C.. Old version: Resulting popcorn weights.
67791          PARF(138)=PARJ(6)
67792          WS=PARF(135)*PARF(138)
67793          WQ=WU*PARJ(5)/3D0
67794          PARF(132)=WQ*QBM(IUD1)/QBB(IUD1)
67795          PARF(133)=WQ*
67796      &        (QBM(IUS1)/QBB(IUS1)+WS*QBM(ISU1)/QBB(ISU1))/2D0
67797          PARF(134)=WQ*WS*QBM(ISS1)/QBB(ISS1)
67798          PARF(131)=WQ*(1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1)+
67799      &                 WS*(QBM(ISU0)+QBM(ISU1)+QBM(ISS1)/2D0))/
67800      &        (1D0+QBB(IUD1)+QBB(IUU1)+
67801      &        2D0*(QBB(IUS0)+QBB(IUS1))+QBB(ISS1)/2D0)
67802       ELSE
67803 C..New version: Store weights for popcorn mesons,
67804 C..get prel. popcorn weights.
67805          DO 150 IPOS=201,1400
67806             PARF(IPOS)=0D0
67807   150    CONTINUE
67808          DO 160 I=138,140
67809             PARF(I)=0D0
67810   160    CONTINUE
67811          IPOS=200
67812          PARF(193)=PARJ(8)
67813          DO 240 MR=0,7,7
67814            IF(MR.EQ.7) PARF(193)=PARJ(10)
67815            SQWT=2D0*(DMB(MR+IUS0)+DMB(MR+IUS1))/
67816      &          (1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
67817            QQWT=DMB(MR+IUU1)/(1D0+DMB(MR+IUD1)+DMB(MR+IUU1))
67818            DO 230 NMES=0,1
67819              IF(NMES.EQ.1) SQWT=PARJ(2)
67820              DO 220 KFQPOP=1,4
67821                IF(MR.EQ.0.AND.KFQPOP.GT.3) GOTO 220
67822                IF(NMES.EQ.0.AND.KFQPOP.GE.3)THEN
67823                   SQWT=DMB(MR+ISS1)/(DMB(MR+ISU0)+DMB(MR+ISU1))
67824                   QQWT=0.5D0
67825                   IF(MR.EQ.0) PARF(193)=PARJ(8)+PARJ(9)
67826                   IF(KFQPOP.EQ.4) SQWT=SQWT*(1D0/DMB(7+ISU1)+1D0)/2D0
67827                ENDIF
67828                DO 210 KFQOLD =1,5
67829                   IF(MR.EQ.0.AND.KFQOLD.GT.3) GOTO 210
67830                   IF(NMES.EQ.1) THEN
67831                      IF(MR.EQ.0.AND.KFQPOP.EQ.1) GOTO 210
67832                      IF(MR.EQ.7.AND.KFQPOP.NE.1) GOTO 210
67833                   ENDIF
67834                   WTTOT=0D0
67835                   WTFAIL=0D0
67836       DO 190 KMUL=0,5
67837          PJWT=PARJ(12+KMUL)
67838          IF(KMUL.EQ.0) PJWT=1D0-PARJ(14)
67839          IF(KMUL.EQ.1) PJWT=1D0-PARJ(15)-PARJ(16)-PARJ(17)
67840          IF(PJWT.LE.0D0) GOTO 190
67841          IF(PJWT.GT.1D0) PJWT=1D0
67842          IMES=5*KMUL
67843          IMIX=2*KFQOLD+10*KMUL
67844          KFJ=2*KMUL+1
67845          IF(KMUL.EQ.2) KFJ=10003
67846          IF(KMUL.EQ.3) KFJ=10001
67847          IF(KMUL.EQ.4) KFJ=20003
67848          IF(KMUL.EQ.5) KFJ=5
67849          DO 180 KFQVER =1,3
67850             KFLA=MAX(KFQOLD,KFQVER)
67851             KFLB=MIN(KFQOLD,KFQVER)
67852             SWT=PARJ(11+KFLA/3+KFLA/4)
67853             IF(KMUL.EQ.0.OR.KMUL.EQ.2) SWT=1D0-SWT
67854             SWT=SWT*PJWT
67855             QWT=SQWT/(2D0+SQWT)
67856             IF(KFQVER.LT.3)THEN
67857                IF(KFQVER.EQ.KFQPOP) QWT=(1D0-QWT)*QQWT
67858                IF(KFQVER.NE.KFQPOP) QWT=(1D0-QWT)*(1D0-QQWT)
67859             ENDIF
67860             IF(KFQVER.NE.KFQOLD)THEN
67861                IMES=IMES+1
67862                KFM=100*KFLA+10*KFLB+KFJ
67863                PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
67864                PARF(IPOS+IMES)=QWT*SWT*EXP(-PARF(193)*PMM)
67865                WTTOT=WTTOT+PARF(IPOS+IMES)
67866             ELSE
67867                DO 170 ID=3,5
67868                   IF(ID.EQ.3) DWT=1D0-PARF(IMIX-1)
67869                   IF(ID.EQ.4) DWT=PARF(IMIX-1)-PARF(IMIX)
67870                   IF(ID.EQ.5) DWT=PARF(IMIX)
67871                   KFM=110*(ID-2)+KFJ
67872                   PMM=PMAS(PYCOMP(KFM),1)-PMAS(PYCOMP(KFM),3)
67873                   PARF(IPOS+5*KMUL+ID)=QWT*SWT*DWT*EXP(-PARF(193)*PMM)
67874                   IF(KMUL.EQ.0.AND.ID.GT.3) THEN
67875                      WTFAIL=WTFAIL+QWT*SWT*DWT*(1D0-PARJ(21+ID))
67876                      PARF(IPOS+5*KMUL+ID)=
67877      &                    PARF(IPOS+5*KMUL+ID)*PARJ(21+ID)
67878                   ENDIF
67879                   WTTOT=WTTOT+PARF(IPOS+5*KMUL+ID)
67880   170          CONTINUE
67881             ENDIF
67882   180    CONTINUE
67883   190 CONTINUE
67884                   DO 200 IMES=1,30
67885                      PARF(IPOS+IMES)=PARF(IPOS+IMES)/(1D0-WTFAIL)
67886   200             CONTINUE
67887                   IF(MR.EQ.7) PARF(140)=
67888      &                 MAX(PARF(140),WTTOT/(1D0-WTFAIL))
67889                   IF(MR.EQ.0) PARF(139-KFQPOP/3)=
67890      &                 MAX(PARF(139-KFQPOP/3),WTTOT/(1D0-WTFAIL))
67891                   IPOS=IPOS+30
67892   210           CONTINUE
67893   220         CONTINUE
67894   230       CONTINUE
67895   240    CONTINUE
67896          IF(PARF(139).GT.1D-10) PARF(138)=PARF(138)/PARF(139)
67897          MSTU(121)=0
67898  
67899       ENDIF
67900  
67901 C..Recombine diquark weights to flavour and spin ratios
67902       PARF(151)=(2D0*(QBB(ISU0)+QBB(ISU1))+QBB(ISS1))/
67903      &        (1D0+QBB(IUD1)+QBB(IUU1)+QBB(IUS0)+QBB(IUS1))
67904       PARF(152)=2D0*(QBB(IUS0)+QBB(IUS1))/(1D0+QBB(IUD1)+QBB(IUU1))
67905       PARF(153)=QBB(ISS1)/(QBB(ISU0)+QBB(ISU1))
67906       PARF(154)=QBB(IUU1)/(1D0+QBB(IUD1)+QBB(IUU1))
67907       PARF(155)=QBB(ISU1)/QBB(ISU0)
67908       PARF(156)=QBB(IUS1)/QBB(IUS0)
67909       PARF(157)=QBB(IUD1)
67910  
67911       PARF(161)=(2D0*(QBM(ISU0)+QBM(ISU1))+QBM(ISS1))/
67912      &        (1D0+QBM(IUD1)+QBM(IUU1)+QBM(IUS0)+QBM(IUS1))
67913       PARF(162)=2D0*(QBM(IUS0)+QBM(IUS1))/(1D0+QBM(IUD1)+QBM(IUU1))
67914       PARF(163)=QBM(ISS1)/(QBM(ISU0)+QBM(ISU1))
67915       PARF(164)=QBM(IUU1)/(1D0+QBM(IUD1)+QBM(IUU1))
67916       PARF(165)=QBM(ISU1)/QBM(ISU0)
67917       PARF(166)=QBM(IUS1)/QBM(IUS0)
67918       PARF(167)=QBM(IUD1)
67919  
67920       PARF(171)=(2D0*(DMB(ISU0)+DMB(ISU1))+DMB(ISS1))/
67921      &        (1D0+DMB(IUD1)+DMB(IUU1)+DMB(IUS0)+DMB(IUS1))
67922       PARF(172)=2D0*(DMB(IUS0)+DMB(IUS1))/(1D0+DMB(IUD1)+DMB(IUU1))
67923       PARF(173)=DMB(ISS1)/(DMB(ISU0)+DMB(ISU1))
67924       PARF(174)=DMB(IUU1)/(1D0+DMB(IUD1)+DMB(IUU1))
67925       PARF(175)=DMB(ISU1)/DMB(ISU0)
67926       PARF(176)=DMB(IUS1)/DMB(IUS0)
67927       PARF(177)=DMB(IUD1)
67928  
67929       PARF(185)=DMB(7+ISU1)/DMB(7+ISU0)
67930       PARF(186)=DMB(7+IUS1)/DMB(7+IUS0)
67931       PARF(187)=DMB(7+IUD1)
67932  
67933       RETURN
67934       END
67935  
67936  
67937 C*********************************************************************
67938  
67939 C...PYPTDI
67940 C...Generates transverse momentum according to a Gaussian.
67941  
67942       SUBROUTINE PYPTDI(KFL,PX,PY)
67943  
67944 C...Double precision and integer declarations.
67945       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67946       IMPLICIT INTEGER(I-N)
67947       INTEGER PYK,PYCHGE,PYCOMP
67948 C...Commonblocks.
67949       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67950       SAVE /PYDAT1/
67951  
67952 C...Generate p_T and azimuthal angle, gives p_x and p_y.
67953       KFLA=IABS(KFL)
67954       PT=PARJ(21)*SQRT(-LOG(MAX(1D-10,PYR(0))))
67955       IF(PARJ(23).GT.PYR(0)) PT=PARJ(24)*PT
67956       IF(MSTJ(91).EQ.1) PT=PARJ(22)*PT
67957       IF(KFLA.EQ.0.AND.MSTJ(13).LE.0) PT=0D0
67958       PHI=PARU(2)*PYR(0)
67959       PX=PT*COS(PHI)
67960       PY=PT*SIN(PHI)
67961  
67962       RETURN
67963       END
67964  
67965 C*********************************************************************
67966  
67967 C...PYZDIS
67968 C...Generates the longitudinal splitting variable z.
67969  
67970       SUBROUTINE PYZDIS(KFL1,KFL2,PR,Z)
67971  
67972 C...Double precision and integer declarations.
67973       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
67974       IMPLICIT INTEGER(I-N)
67975       INTEGER PYK,PYCHGE,PYCOMP
67976 C...Commonblocks.
67977       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
67978       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
67979       SAVE /PYDAT1/,/PYDAT2/
67980  
67981 C...Check if heavy flavour fragmentation.
67982       KFLA=IABS(KFL1)
67983       KFLB=IABS(KFL2)
67984       KFLH=KFLA
67985       IF(KFLA.GE.10) KFLH=MOD(KFLA/1000,10)
67986  
67987 C...Lund symmetric scaling function: determine parameters of shape.
67988       IF(MSTJ(11).EQ.1.OR.(MSTJ(11).EQ.3.AND.KFLH.LE.3).OR.
67989      &MSTJ(11).GE.4) THEN
67990         FA=PARJ(41)
67991         IF(MSTJ(91).EQ.1) FA=PARJ(43)
67992         IF(KFLB.GE.10) FA=FA+PARJ(45)
67993         FBB=PARJ(42)
67994         IF(MSTJ(91).EQ.1) FBB=PARJ(44)
67995         FB=FBB*PR
67996         FC=1D0
67997         IF(KFLA.GE.10) FC=FC-PARJ(45)
67998         IF(KFLB.GE.10) FC=FC+PARJ(45)
67999         IF(MSTJ(11).GE.4.AND.(KFLH.EQ.4.OR.KFLH.EQ.5)) THEN
68000           FRED=PARJ(46)
68001           IF(MSTJ(11).EQ.5.AND.KFLH.EQ.5) FRED=PARJ(47)
68002           FC=FC+FRED*FBB*PARF(100+KFLH)**2
68003         ENDIF
68004         MC=1
68005         IF(ABS(FC-1D0).GT.0.01D0) MC=2
68006  
68007 C...Determine position of maximum. Special cases for a = 0 or a = c.
68008         IF(FA.LT.0.02D0) THEN
68009           MA=1
68010           ZMAX=1D0
68011           IF(FC.GT.FB) ZMAX=FB/FC
68012         ELSEIF(ABS(FC-FA).LT.0.01D0) THEN
68013           MA=2
68014           ZMAX=FB/(FB+FC)
68015         ELSE
68016           MA=3
68017           ZMAX=0.5D0*(FB+FC-SQRT((FB-FC)**2+4D0*FA*FB))/(FC-FA)
68018           IF(ZMAX.GT.0.9999D0.AND.FB.GT.100D0) ZMAX=MIN(ZMAX,1D0-FA/FB)
68019         ENDIF
68020  
68021 C...Subdivide z range if distribution very peaked near endpoint.
68022         MMAX=2
68023         IF(ZMAX.LT.0.1D0) THEN
68024           MMAX=1
68025           ZDIV=2.75D0*ZMAX
68026           IF(MC.EQ.1) THEN
68027             FINT=1D0-LOG(ZDIV)
68028           ELSE
68029             ZDIVC=ZDIV**(1D0-FC)
68030             FINT=1D0+(1D0-1D0/ZDIVC)/(FC-1D0)
68031           ENDIF
68032         ELSEIF(ZMAX.GT.0.85D0.AND.FB.GT.1D0) THEN
68033           MMAX=3
68034           FSCB=SQRT(4D0+(FC/FB)**2)
68035           ZDIV=FSCB-1D0/ZMAX-(FC/FB)*LOG(ZMAX*0.5D0*(FSCB+FC/FB))
68036           IF(MA.GE.2) ZDIV=ZDIV+(FA/FB)*LOG(1D0-ZMAX)
68037           ZDIV=MIN(ZMAX,MAX(0D0,ZDIV))
68038           FINT=1D0+FB*(1D0-ZDIV)
68039         ENDIF
68040  
68041 C...Choice of z, preweighted for peaks at low or high z.
68042   100   Z=PYR(0)
68043         FPRE=1D0
68044         IF(MMAX.EQ.1) THEN
68045           IF(FINT*PYR(0).LE.1D0) THEN
68046             Z=ZDIV*Z
68047           ELSEIF(MC.EQ.1) THEN
68048             Z=ZDIV**Z
68049             FPRE=ZDIV/Z
68050           ELSE
68051             Z=(ZDIVC+Z*(1D0-ZDIVC))**(1D0/(1D0-FC))
68052             FPRE=(ZDIV/Z)**FC
68053           ENDIF
68054         ELSEIF(MMAX.EQ.3) THEN
68055           IF(FINT*PYR(0).LE.1D0) THEN
68056             Z=ZDIV+LOG(Z)/FB
68057             FPRE=EXP(FB*(Z-ZDIV))
68058           ELSE
68059             Z=ZDIV+Z*(1D0-ZDIV)
68060           ENDIF
68061         ENDIF
68062  
68063 C...Weighting according to correct formula.
68064         IF(Z.LE.0D0.OR.Z.GE.1D0) GOTO 100
68065         FEXP=FC*LOG(ZMAX/Z)+FB*(1D0/ZMAX-1D0/Z)
68066         IF(MA.GE.2) FEXP=FEXP+FA*LOG((1D0-Z)/(1D0-ZMAX))
68067         FVAL=EXP(MAX(-50D0,MIN(50D0,FEXP)))
68068         IF(FVAL.LT.PYR(0)*FPRE) GOTO 100
68069  
68070 C...Generate z according to Field-Feynman, SLAC, (1-z)**c OR z**c.
68071       ELSE
68072         FC=PARJ(50+MAX(1,KFLH))
68073         IF(MSTJ(91).EQ.1) FC=PARJ(59)
68074   110   Z=PYR(0)
68075         IF(FC.GE.0D0.AND.FC.LE.1D0) THEN
68076           IF(FC.GT.PYR(0)) Z=1D0-Z**(1D0/3D0)
68077         ELSEIF(FC.GT.-1.AND.FC.LT.0D0) THEN
68078           IF(-4D0*FC*Z*(1D0-Z)**2.LT.PYR(0)*((1D0-Z)**2-FC*Z)**2)
68079      &    GOTO 110
68080         ELSE
68081           IF(FC.GT.0D0) Z=1D0-Z**(1D0/FC)
68082           IF(FC.LT.0D0) Z=Z**(-1D0/FC)
68083         ENDIF
68084       ENDIF
68085  
68086       RETURN
68087       END
68088  
68089 C*********************************************************************
68090  
68091 C...PYSHOW
68092 C...Generates timelike parton showers from given partons.
68093  
68094       SUBROUTINE PYSHOW(IP1,IP2,QMAX)
68095  
68096 C...Double precision and integer declarations.
68097       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
68098       IMPLICIT INTEGER(I-N)
68099       INTEGER PYK,PYCHGE,PYCOMP
68100 C...Parameter statement to help give large particle numbers.
68101       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
68102      &KEXCIT=4000000,KDIMEN=5000000)
68103       PARAMETER (MAXNUR=1000)
68104 C...Commonblocks.
68105       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
68106       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
68107       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
68108       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
68109       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
68110       COMMON/PYINT1/MINT(400),VINT(400)
68111       SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/
68112 C...Local arrays.
68113       DIMENSION PMTH(5,140),PS(5),PMA(100),PMSD(100),IEP(100),IPA(100),
68114      &KFLA(100),KFLD(100),KFL(100),ITRY(100),ISI(100),ISL(100),DP(100),
68115      &DPT(5,4),KSH(0:140),KCII(2),NIIS(2),IIIS(2,2),THEIIS(2,2),
68116      &PHIIIS(2,2),ISII(2),ISSET(2),ISCOL(0:140),ISCHG(0:140),
68117      &IREF(1000)
68118  
68119 C...Check that QMAX not too low.
68120       IF(MSTJ(41).LE.0) THEN
68121         RETURN
68122       ELSEIF(MSTJ(41).EQ.1.OR.MSTJ(41).EQ.11) THEN
68123         IF(QMAX.LE.PARJ(82).AND.IP2.GE.-80) RETURN
68124       ELSE
68125         IF(QMAX.LE.MIN(PARJ(82),PARJ(83),PARJ(90)).AND.IP2.GE.-80)
68126      &  RETURN
68127       ENDIF
68128  
68129 C...Store positions of shower initiating partons.
68130       MPSPD=0
68131       IF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.EQ.0) THEN
68132         NPA=1
68133         IPA(1)=IP1
68134       ELSEIF(MIN(IP1,IP2).GT.0.AND.MAX(IP1,IP2).LE.MIN(N,MSTU(4)-
68135      &  MSTU(32))) THEN
68136         NPA=2
68137         IPA(1)=IP1
68138         IPA(2)=IP2
68139       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.IP2.LT.0
68140      &  .AND.IP2.GE.-80) THEN
68141         NPA=IABS(IP2)
68142         DO 100 I=1,NPA
68143           IPA(I)=IP1+I-1
68144   100   CONTINUE
68145       ELSEIF(IP1.GT.0.AND.IP1.LE.MIN(N,MSTU(4)-MSTU(32)).AND.
68146      &IP2.EQ.-100) THEN
68147         MPSPD=1
68148         NPA=2
68149         IPA(1)=IP1+6
68150         IPA(2)=IP1+7
68151       ELSE
68152         CALL PYERRM(12,
68153      &  '(PYSHOW:) failed to reconstruct showering system')
68154         IF(MSTU(21).GE.1) RETURN
68155       ENDIF
68156  
68157 C...Send off to PYPTFS for pT-ordered evolution if requested,
68158 C...if at least 2 partons, and without predefined shower branchings.
68159       IF((MSTJ(41).EQ.11.OR.MSTJ(41).EQ.12).AND.NPA.GE.2.AND.
68160      &MPSPD.EQ.0) THEN
68161         NPART=NPA
68162         DO 110 II=1,NPART
68163           IPART(II)=IPA(II)
68164           PTPART(II)=0.5D0*QMAX
68165   110   CONTINUE
68166         CALL PYPTFS(2,0.5D0*QMAX,0D0,PTGEN)
68167         RETURN
68168       ENDIF
68169  
68170 C...Initialization of cutoff masses etc.
68171       DO 120 IFL=0,40
68172         ISCOL(IFL)=0
68173         ISCHG(IFL)=0
68174         KSH(IFL)=0
68175   120 CONTINUE
68176       ISCOL(21)=1
68177       KSH(21)=1
68178       PMTH(1,21)=PYMASS(21)
68179       PMTH(2,21)=SQRT(PMTH(1,21)**2+0.25D0*PARJ(82)**2)
68180       PMTH(3,21)=2D0*PMTH(2,21)
68181       PMTH(4,21)=PMTH(3,21)
68182       PMTH(5,21)=PMTH(3,21)
68183       PMTH(1,22)=PYMASS(22)
68184       PMTH(2,22)=SQRT(PMTH(1,22)**2+0.25D0*PARJ(83)**2)
68185       PMTH(3,22)=2D0*PMTH(2,22)
68186       PMTH(4,22)=PMTH(3,22)
68187       PMTH(5,22)=PMTH(3,22)
68188       PMQTH1=PARJ(82)
68189       IF(MSTJ(41).GE.2) PMQTH1=MIN(PARJ(82),PARJ(83))
68190       PMQT1E=MIN(PMQTH1,PARJ(90))
68191       PMQTH2=PMTH(2,21)
68192       IF(MSTJ(41).GE.2) PMQTH2=MIN(PMTH(2,21),PMTH(2,22))
68193       PMQT2E=MIN(PMQTH2,0.5D0*PARJ(90))
68194       DO 130 IFL=1,5
68195         ISCOL(IFL)=1
68196         IF(MSTJ(41).GE.2) ISCHG(IFL)=1
68197         KSH(IFL)=1
68198         PMTH(1,IFL)=PYMASS(IFL)
68199         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PMQTH1**2)
68200         PMTH(3,IFL)=PMTH(2,IFL)+PMQTH2
68201         PMTH(4,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
68202         PMTH(5,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
68203   130 CONTINUE
68204       DO 140 IFL=11,15,2
68205         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IFL)=1
68206         IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) KSH(IFL)=1
68207         PMTH(1,IFL)=PYMASS(IFL)
68208         PMTH(2,IFL)=SQRT(PMTH(1,IFL)**2+0.25D0*PARJ(90)**2)
68209         PMTH(3,IFL)=PMTH(2,IFL)+0.5D0*PARJ(90)
68210         PMTH(4,IFL)=PMTH(3,IFL)
68211         PMTH(5,IFL)=PMTH(3,IFL)
68212   140 CONTINUE
68213       PT2MIN=MAX(0.5D0*PARJ(82),1.1D0*PARJ(81))**2
68214       ALAMS=PARJ(81)**2
68215       ALFM=LOG(PT2MIN/ALAMS)
68216  
68217 C...Check on phase space available for emission.
68218       IREJ=0
68219       DO 150 J=1,5
68220         PS(J)=0D0
68221   150 CONTINUE
68222       PM=0D0
68223       KFLA(2)=0
68224       DO 170 I=1,NPA
68225         KFLA(I)=IABS(K(IPA(I),2))
68226         PMA(I)=P(IPA(I),5)
68227 C...Special cutoff masses for initial partons (may be a heavy quark,
68228 C...squark, ..., and need not be on the mass shell).
68229         IR=30+I
68230         IF(NPA.LE.1) IREF(I)=IR
68231         IF(NPA.GE.2) IREF(I+1)=IR
68232         ISCOL(IR)=0
68233         ISCHG(IR)=0
68234         KSH(IR)=0
68235         IF(KFLA(I).LE.8) THEN
68236           ISCOL(IR)=1
68237           IF(MSTJ(41).GE.2) ISCHG(IR)=1
68238         ELSEIF(KFLA(I).EQ.11.OR.KFLA(I).EQ.13.OR.KFLA(I).EQ.15.OR.
68239      &  KFLA(I).EQ.17) THEN
68240           IF(MSTJ(41).EQ.2.OR.MSTJ(41).GE.4) ISCHG(IR)=1
68241         ELSEIF(KFLA(I).EQ.21) THEN
68242           ISCOL(IR)=1
68243         ELSEIF((KFLA(I).GE.KSUSY1+1.AND.KFLA(I).LE.KSUSY1+8).OR.
68244      &  (KFLA(I).GE.KSUSY2+1.AND.KFLA(I).LE.KSUSY2+8)) THEN
68245           ISCOL(IR)=1
68246         ELSEIF(KFLA(I).EQ.KSUSY1+21) THEN
68247           ISCOL(IR)=1
68248 C...QUARKONIA+++
68249 C...same for QQ~[3S18]
68250         ELSEIF(MSTP(148).GE.1.AND.(KFLA(I).EQ.9900443.OR.
68251      &  KFLA(I).EQ.9900553)) THEN
68252           ISCOL(IR)=1
68253 C...QUARKONIA---
68254         ENDIF
68255 
68256 C...Option to switch off radiation from particle KF = MSTJ(39) entirely
68257 C...(only intended for studying the effects of switching such rad on/off)
68258         IF (MSTJ(39).GT.0.AND.KFLA(I).EQ.MSTJ(39)) THEN
68259           ISCOL(IR)=0
68260           ISCHG(IR)=0
68261         ENDIF
68262 
68263         IF(ISCOL(IR).EQ.1.OR.ISCHG(IR).EQ.1) KSH(IR)=1
68264         PMTH(1,IR)=PMA(I)
68265         IF(ISCOL(IR).EQ.1.AND.ISCHG(IR).EQ.1) THEN
68266           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PMQTH1**2)
68267           PMTH(3,IR)=PMTH(2,IR)+PMQTH2
68268           PMTH(4,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)+PMTH(2,21)
68269           PMTH(5,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(83)**2)+PMTH(2,22)
68270         ELSEIF(ISCOL(IR).EQ.1) THEN
68271           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(82)**2)
68272           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(82)
68273           PMTH(4,IR)=PMTH(3,IR)
68274           PMTH(5,IR)=PMTH(3,IR)
68275         ELSEIF(ISCHG(IR).EQ.1) THEN
68276           PMTH(2,IR)=SQRT(PMTH(1,IR)**2+0.25D0*PARJ(90)**2)
68277           PMTH(3,IR)=PMTH(2,IR)+0.5D0*PARJ(90)
68278           PMTH(4,IR)=PMTH(3,IR)
68279           PMTH(5,IR)=PMTH(3,IR)
68280         ENDIF
68281         IF(KSH(IR).EQ.1) PMA(I)=PMTH(3,IR)
68282         PM=PM+PMA(I)
68283         IF(KSH(IR).EQ.0.OR.PMA(I).GT.10D0*QMAX) IREJ=IREJ+1
68284         DO 160 J=1,4
68285           PS(J)=PS(J)+P(IPA(I),J)
68286   160   CONTINUE
68287   170 CONTINUE
68288       IF(IREJ.EQ.NPA.AND.IP2.GE.-7) RETURN
68289       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
68290       IF(NPA.EQ.1) PS(5)=PS(4)
68291       IF(PS(5).LE.PM+PMQT1E) RETURN
68292  
68293 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
68294       KFSRCE=0
68295       IF(IP2.LE.0) THEN
68296       ELSEIF(K(IP1,3).EQ.K(IP2,3).AND.K(IP1,3).GT.0) THEN
68297         KFSRCE=IABS(K(K(IP1,3),2))
68298       ELSE
68299         IPAR1=MAX(1,K(IP1,3))
68300         IPAR2=MAX(1,K(IP2,3))
68301         IF(K(IPAR1,3).EQ.K(IPAR2,3).AND.K(IPAR1,3).GT.0)
68302      &       KFSRCE=IABS(K(K(IPAR1,3),2))
68303       ENDIF
68304       ITYPES=0
68305       IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
68306       IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
68307       IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
68308       IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
68309       IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
68310       IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
68311       IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
68312       IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
68313  
68314 C...Identify two primary showerers.
68315       ITYPE1=0
68316       IF(KFLA(1).GE.1.AND.KFLA(1).LE.8) ITYPE1=1
68317       IF(KFLA(1).GE.KSUSY1+1.AND.KFLA(1).LE.KSUSY1+8) ITYPE1=2
68318       IF(KFLA(1).GE.KSUSY2+1.AND.KFLA(1).LE.KSUSY2+8) ITYPE1=2
68319       IF(KFLA(1).GE.21.AND.KFLA(1).LE.24) ITYPE1=3
68320       IF(KFLA(1).GE.32.AND.KFLA(1).LE.34) ITYPE1=3
68321       IF(KFLA(1).EQ.25.OR.(KFLA(1).GE.35.AND.KFLA(1).LE.37)) ITYPE1=4
68322       IF(KFLA(1).GE.KSUSY1+22.AND.KFLA(1).LE.KSUSY1+37) ITYPE1=5
68323       IF(KFLA(1).EQ.KSUSY1+21) ITYPE1=6
68324       ITYPE2=0
68325       IF(KFLA(2).GE.1.AND.KFLA(2).LE.8) ITYPE2=1
68326       IF(KFLA(2).GE.KSUSY1+1.AND.KFLA(2).LE.KSUSY1+8) ITYPE2=2
68327       IF(KFLA(2).GE.KSUSY2+1.AND.KFLA(2).LE.KSUSY2+8) ITYPE2=2
68328       IF(KFLA(2).GE.21.AND.KFLA(2).LE.24) ITYPE2=3
68329       IF(KFLA(2).GE.32.AND.KFLA(2).LE.34) ITYPE2=3
68330       IF(KFLA(2).EQ.25.OR.(KFLA(2).GE.35.AND.KFLA(2).LE.37)) ITYPE2=4
68331       IF(KFLA(2).GE.KSUSY1+22.AND.KFLA(2).LE.KSUSY1+37) ITYPE2=5
68332       IF(KFLA(2).EQ.KSUSY1+21) ITYPE2=6
68333  
68334 C...Order of showerers. Presence of gluino.
68335       ITYPMN=MIN(ITYPE1,ITYPE2)
68336       ITYPMX=MAX(ITYPE1,ITYPE2)
68337       IORD=1
68338       IF(ITYPE1.GT.ITYPE2) IORD=2
68339       IGLUI=0
68340       IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
68341  
68342 C...Check if 3-jet matrix elements to be used.
68343       M3JC=0
68344       ALPHA=0.5D0
68345       IF(NPA.EQ.2.AND.MSTJ(47).GE.1.AND.MPSPD.EQ.0) THEN
68346         IF(MSTJ(38).NE.0) THEN
68347           M3JC=MSTJ(38)
68348           ALPHA=PARJ(80)
68349           MSTJ(38)=0
68350         ELSEIF(MSTJ(47).GE.6) THEN
68351           M3JC=MSTJ(47)
68352         ELSE
68353           ICLASS=1
68354           ICOMBI=4
68355  
68356 C...Vector/axial vector -> q + qbar; q -> q + V.
68357           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
68358      &    ITYPES.EQ.3)) THEN
68359             ICLASS=2
68360             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
68361               ICOMBI=1
68362             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
68363      &      K(IPA(1),2)+K(IPA(2),2).EQ.0)) THEN
68364 C...gamma*/Z0: assume e+e- initial state if unknown.
68365               EI=-1D0
68366               IF(KFSRCE.EQ.23) THEN
68367                 IANNFL=K(K(IP1,3),3)
68368                 IF(IANNFL.NE.0) THEN
68369                   KANNFL=IABS(K(IANNFL,2))
68370                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
68371                 ENDIF
68372               ENDIF
68373               AI=SIGN(1D0,EI+0.1D0)
68374               VI=AI-4D0*EI*PARU(102)
68375               EF=KCHG(KFLA(1),1)/3D0
68376               AF=SIGN(1D0,EF+0.1D0)
68377               VF=AF-4D0*EF*PARU(102)
68378               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
68379               SH=PS(5)**2
68380               SQMZ=PMAS(23,1)**2
68381               SQWZ=PS(5)*PMAS(23,2)
68382               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
68383               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
68384      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
68385               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
68386               ICOMBI=3
68387               ALPHA=VECT/(VECT+AXIV)
68388             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
68389               ICOMBI=4
68390             ENDIF
68391 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
68392           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
68393             ICLASS=2
68394           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
68395      &    ITYPES.EQ.1)) THEN
68396             ICLASS=3
68397  
68398 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
68399           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
68400             ICLASS=4
68401             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
68402               ICOMBI=1
68403             ELSEIF(KFSRCE.EQ.36) THEN
68404               ICOMBI=2
68405             ENDIF
68406           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
68407      &    ITYPES.EQ.1)) THEN
68408             ICLASS=5
68409  
68410 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
68411           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
68412      &    ITYPES.EQ.3)) THEN
68413             ICLASS=6
68414           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
68415      &    ITYPES.EQ.2)) THEN
68416             ICLASS=7
68417           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
68418             ICLASS=8
68419           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
68420      &    ITYPES.EQ.2)) THEN
68421             ICLASS=9
68422  
68423 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
68424           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
68425      &    ITYPES.EQ.5)) THEN
68426             ICLASS=10
68427           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
68428      &    ITYPES.EQ.2)) THEN
68429             ICLASS=11
68430           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
68431      &    ITYPES.EQ.1)) THEN
68432             ICLASS=12
68433  
68434 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
68435           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
68436             ICLASS=13
68437           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
68438      &    ITYPES.EQ.2)) THEN
68439             ICLASS=14
68440           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
68441      &    ITYPES.EQ.1)) THEN
68442             ICLASS=15
68443  
68444 C...g -> ~g + ~g (eikonal approximation).
68445           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
68446             ICLASS=16
68447           ENDIF
68448           M3JC=5*ICLASS+ICOMBI
68449         ENDIF
68450       ENDIF
68451  
68452 C...Find if interference with initial state partons.
68453       MIIS=0
68454       IF(MSTJ(50).GE.1.AND.MSTJ(50).LE.3.AND.NPA.EQ.2.AND.KFSRCE.EQ.0
68455      &.AND.MPSPD.EQ.0) MIIS=MSTJ(50)
68456       IF(MSTJ(50).GE.4.AND.MSTJ(50).LE.6.AND.NPA.EQ.2.AND.MPSPD.EQ.0)
68457      &MIIS=MSTJ(50)-3
68458       IF(MIIS.NE.0) THEN
68459         DO 190 I=1,2
68460           KCII(I)=0
68461           KCA=PYCOMP(KFLA(I))
68462           IF(KCA.NE.0) KCII(I)=KCHG(KCA,2)*ISIGN(1,K(IPA(I),2))
68463           NIIS(I)=0
68464           IF(KCII(I).NE.0) THEN
68465             DO 180 J=1,2
68466               ICSI=MOD(K(IPA(I),3+J)/MSTU(5),MSTU(5))
68467               IF(ICSI.GT.0.AND.ICSI.NE.IPA(1).AND.ICSI.NE.IPA(2).AND.
68468      &        (KCII(I).EQ.(-1)**(J+1).OR.KCII(I).EQ.2)) THEN
68469                 NIIS(I)=NIIS(I)+1
68470                 IIIS(I,NIIS(I))=ICSI
68471               ENDIF
68472   180       CONTINUE
68473           ENDIF
68474   190   CONTINUE
68475         IF(NIIS(1)+NIIS(2).EQ.0) MIIS=0
68476       ENDIF
68477  
68478 C...Boost interfering initial partons to rest frame
68479 C...and reconstruct their polar and azimuthal angles.
68480       IF(MIIS.NE.0) THEN
68481         DO 210 I=1,2
68482           DO 200 J=1,5
68483             K(N+I,J)=K(IPA(I),J)
68484             P(N+I,J)=P(IPA(I),J)
68485             V(N+I,J)=0D0
68486   200     CONTINUE
68487   210   CONTINUE
68488         DO 230 I=3,2+NIIS(1)
68489           DO 220 J=1,5
68490             K(N+I,J)=K(IIIS(1,I-2),J)
68491             P(N+I,J)=P(IIIS(1,I-2),J)
68492             V(N+I,J)=0D0
68493   220     CONTINUE
68494   230   CONTINUE
68495         DO 250 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
68496           DO 240 J=1,5
68497             K(N+I,J)=K(IIIS(2,I-2-NIIS(1)),J)
68498             P(N+I,J)=P(IIIS(2,I-2-NIIS(1)),J)
68499             V(N+I,J)=0D0
68500   240     CONTINUE
68501   250   CONTINUE
68502         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,0D0,-PS(1)/PS(4),
68503      &  -PS(2)/PS(4),-PS(3)/PS(4))
68504         PHI=PYANGL(P(N+1,1),P(N+1,2))
68505         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),0D0,-PHI,0D0,0D0,0D0)
68506         THE=PYANGL(P(N+1,3),P(N+1,1))
68507         CALL PYROBO(N+1,N+2+NIIS(1)+NIIS(2),-THE,0D0,0D0,0D0,0D0)
68508         DO 260 I=3,2+NIIS(1)
68509           THEIIS(1,I-2)=PYANGL(P(N+I,3),SQRT(P(N+I,1)**2+P(N+I,2)**2))
68510           PHIIIS(1,I-2)=PYANGL(P(N+I,1),P(N+I,2))
68511   260   CONTINUE
68512         DO 270 I=3+NIIS(1),2+NIIS(1)+NIIS(2)
68513           THEIIS(2,I-2-NIIS(1))=PARU(1)-PYANGL(P(N+I,3),
68514      &    SQRT(P(N+I,1)**2+P(N+I,2)**2))
68515           PHIIIS(2,I-2-NIIS(1))=PYANGL(P(N+I,1),P(N+I,2))
68516   270   CONTINUE
68517       ENDIF
68518  
68519 C...Boost 3 or more partons to their rest frame.
68520       IF(NPA.GE.3) CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,-PS(1)/PS(4),
68521      &-PS(2)/PS(4),-PS(3)/PS(4))
68522  
68523 C...Define imagined single initiator of shower for parton system.
68524       NS=N
68525       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
68526         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
68527         IF(MSTU(21).GE.1) RETURN
68528       ENDIF
68529   280 N=NS
68530       IF(NPA.GE.2) THEN
68531         K(N+1,1)=11
68532         K(N+1,2)=21
68533         K(N+1,3)=0
68534         K(N+1,4)=0
68535         K(N+1,5)=0
68536         P(N+1,1)=0D0
68537         P(N+1,2)=0D0
68538         P(N+1,3)=0D0
68539         P(N+1,4)=PS(5)
68540         P(N+1,5)=PS(5)
68541         V(N+1,5)=PS(5)**2
68542         N=N+1
68543         IREF(1)=21
68544       ENDIF
68545  
68546 C...Loop over partons that may branch.
68547       NEP=NPA
68548       IM=NS
68549       IF(NPA.EQ.1) IM=NS-1
68550   290 IM=IM+1
68551       IF(N.GT.NS) THEN
68552         IF(IM.GT.N) GOTO 600
68553         KFLM=IABS(K(IM,2))
68554         IR=IREF(IM-NS)
68555         IF(KSH(IR).EQ.0) GOTO 290
68556         IF(P(IM,5).LT.PMTH(2,IR)) GOTO 290
68557         IGM=K(IM,3)
68558       ELSE
68559         IGM=-1
68560       ENDIF
68561       IF(N+NEP.GT.MSTU(4)-MSTU(32)-10) THEN
68562         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
68563         IF(MSTU(21).GE.1) RETURN
68564       ENDIF
68565  
68566 C...Position of aunt (sister to branching parton).
68567 C...Origin and flavour of daughters.
68568       IAU=0
68569       IF(IGM.GT.0) THEN
68570         IF(K(IM-1,3).EQ.IGM) IAU=IM-1
68571         IF(N.GE.IM+1.AND.K(IM+1,3).EQ.IGM) IAU=IM+1
68572       ENDIF
68573       IF(IGM.GE.0) THEN
68574         K(IM,4)=N+1
68575         DO 300 I=1,NEP
68576           K(N+I,3)=IM
68577   300   CONTINUE
68578       ELSE
68579         K(N+1,3)=IPA(1)
68580       ENDIF
68581       IF(IGM.LE.0) THEN
68582         DO 310 I=1,NEP
68583           K(N+I,2)=K(IPA(I),2)
68584   310   CONTINUE
68585       ELSEIF(KFLM.NE.21) THEN
68586         K(N+1,2)=K(IM,2)
68587         K(N+2,2)=K(IM,5)
68588         IREF(N+1-NS)=IREF(IM-NS)
68589         IREF(N+2-NS)=IABS(K(N+2,2))
68590       ELSEIF(K(IM,5).EQ.21) THEN
68591         K(N+1,2)=21
68592         K(N+2,2)=21
68593         IREF(N+1-NS)=21
68594         IREF(N+2-NS)=21
68595       ELSE
68596         K(N+1,2)=K(IM,5)
68597         K(N+2,2)=-K(IM,5)
68598         IREF(N+1-NS)=IABS(K(N+1,2))
68599         IREF(N+2-NS)=IABS(K(N+2,2))
68600       ENDIF
68601  
68602 C...Reset flags on daughters and tries made.
68603       DO 320 IP=1,NEP
68604         K(N+IP,1)=3
68605         K(N+IP,4)=0
68606         K(N+IP,5)=0
68607         KFLD(IP)=IABS(K(N+IP,2))
68608         IF(KCHG(PYCOMP(KFLD(IP)),2).EQ.0) K(N+IP,1)=1
68609         ITRY(IP)=0
68610         ISL(IP)=0
68611         ISI(IP)=0
68612         IF(KSH(IREF(N+IP-NS)).EQ.1) ISI(IP)=1
68613   320 CONTINUE
68614       ISLM=0
68615  
68616 C...Maximum virtuality of daughters.
68617       IF(IGM.LE.0) THEN
68618         DO 330 I=1,NPA
68619           IF(NPA.GE.3) P(N+I,4)=P(IPA(I),4)
68620           P(N+I,5)=MIN(QMAX,PS(5))
68621           IR=IREF(N+I-NS)
68622           IF(IP2.LE.-8) P(N+I,5)=MAX(P(N+I,5),2D0*PMTH(3,IR))
68623           IF(ISI(I).EQ.0) P(N+I,5)=P(IPA(I),5)
68624   330   CONTINUE
68625       ELSE
68626         IF(MSTJ(43).LE.2) PEM=V(IM,2)
68627         IF(MSTJ(43).GE.3) PEM=P(IM,4)
68628         P(N+1,5)=MIN(P(IM,5),V(IM,1)*PEM)
68629         P(N+2,5)=MIN(P(IM,5),(1D0-V(IM,1))*PEM)
68630         IF(K(N+2,2).EQ.22) P(N+2,5)=PMTH(1,22)
68631       ENDIF
68632       DO 340 I=1,NEP
68633         PMSD(I)=P(N+I,5)
68634         IF(ISI(I).EQ.1) THEN
68635           IR=IREF(N+I-NS)
68636           IF(P(N+I,5).LE.PMTH(3,IR)) P(N+I,5)=PMTH(1,IR)
68637         ENDIF
68638         V(N+I,5)=P(N+I,5)**2
68639   340 CONTINUE
68640  
68641 C...Choose one of the daughters for evolution.
68642   350 INUM=0
68643       IF(NEP.EQ.1) INUM=1
68644       DO 360 I=1,NEP
68645         IF(INUM.EQ.0.AND.ISL(I).EQ.1) INUM=I
68646   360 CONTINUE
68647       DO 370 I=1,NEP
68648         IF(INUM.EQ.0.AND.ITRY(I).EQ.0.AND.ISI(I).EQ.1) THEN
68649           IR=IREF(N+I-NS)
68650           IF(P(N+I,5).GE.PMTH(2,IR)) INUM=I
68651         ENDIF
68652   370 CONTINUE
68653       IF(INUM.EQ.0) THEN
68654         RMAX=0D0
68655         DO 380 I=1,NEP
68656           IF(ISI(I).EQ.1.AND.PMSD(I).GE.PMQT2E) THEN
68657             RPM=P(N+I,5)/PMSD(I)
68658             IR=IREF(N+I-NS)
68659             IF(RPM.GT.RMAX.AND.P(N+I,5).GE.PMTH(2,IR)) THEN
68660               RMAX=RPM
68661               INUM=I
68662             ENDIF
68663           ENDIF
68664   380   CONTINUE
68665       ENDIF
68666  
68667 C...Cancel choice of predetermined daughter already treated.
68668       INUM=MAX(1,INUM)
68669       INUMT=INUM
68670       IF(MPSPD.EQ.1.AND.IGM.EQ.0.AND.ITRY(INUMT).GE.1) THEN
68671         IF(K(IP1-1+INUM,4).GT.0) INUM=3-INUM
68672       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2.AND.ITRY(INUMT).GE.1) THEN
68673         IF(KFLD(INUMT).NE.21.AND.K(IP1+2,4).GT.0) INUM=3-INUM
68674         IF(KFLD(INUMT).EQ.21.AND.K(IP1+3,4).GT.0) INUM=3-INUM
68675       ENDIF
68676  
68677 C...Store information on choice of evolving daughter.
68678       IEP(1)=N+INUM
68679       DO 390 I=2,NEP
68680         IEP(I)=IEP(I-1)+1
68681         IF(IEP(I).GT.N+NEP) IEP(I)=N+1
68682   390 CONTINUE
68683       DO 400 I=1,NEP
68684         KFL(I)=IABS(K(IEP(I),2))
68685   400 CONTINUE
68686       ITRY(INUM)=ITRY(INUM)+1
68687       IF(ITRY(INUM).GT.200) THEN
68688         CALL PYERRM(14,'(PYSHOW:) caught in infinite loop')
68689         IF(MSTU(21).GE.1) RETURN
68690       ENDIF
68691       Z=0.5D0
68692       IR=IREF(IEP(1)-NS)
68693       IF(KSH(IR).EQ.0) GOTO 450
68694       IF(P(IEP(1),5).LT.PMTH(2,IR)) GOTO 450
68695  
68696 C...Check if evolution already predetermined for daughter.
68697       IPSPD=0
68698       IF(MPSPD.EQ.1.AND.IGM.EQ.0) THEN
68699         IF(K(IP1-1+INUM,4).GT.0) IPSPD=IP1-1+INUM
68700       ELSEIF(MPSPD.EQ.1.AND.IM.EQ.NS+2) THEN
68701         IF(KFL(1).NE.21.AND.K(IP1+2,4).GT.0) IPSPD=IP1+2
68702         IF(KFL(1).EQ.21.AND.K(IP1+3,4).GT.0) IPSPD=IP1+3
68703       ENDIF
68704       IF(INUM.EQ.1.OR.INUM.EQ.2) THEN
68705         ISSET(INUM)=0
68706         IF(IPSPD.NE.0) ISSET(INUM)=1
68707       ENDIF
68708  
68709 C...Select side for interference with initial state partons.
68710       IF(MIIS.GE.1.AND.IEP(1).LE.NS+3) THEN
68711         III=IEP(1)-NS-1
68712         ISII(III)=0
68713         IF(IABS(KCII(III)).EQ.1.AND.NIIS(III).EQ.1) THEN
68714           ISII(III)=1
68715         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.1) THEN
68716           IF(PYR(0).GT.0.5D0) ISII(III)=1
68717         ELSEIF(KCII(III).EQ.2.AND.NIIS(III).EQ.2) THEN
68718           ISII(III)=1
68719           IF(PYR(0).GT.0.5D0) ISII(III)=2
68720         ENDIF
68721       ENDIF
68722  
68723 C...Calculate allowed z range.
68724       IF(NEP.EQ.1) THEN
68725         PMED=PS(4)
68726       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
68727         PMED=P(IM,5)
68728       ELSE
68729         IF(INUM.EQ.1) PMED=V(IM,1)*PEM
68730         IF(INUM.EQ.2) PMED=(1D0-V(IM,1))*PEM
68731       ENDIF
68732       IF(MOD(MSTJ(43),2).EQ.1) THEN
68733         ZC=PMTH(2,21)/PMED
68734         ZCE=PMTH(2,22)/PMED
68735         IF(ISCOL(IR).EQ.0) ZCE=0.5D0*PARJ(90)/PMED
68736       ELSE
68737         ZC=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTH(2,21)/PMED)**2)))
68738         IF(ZC.LT.1D-6) ZC=(PMTH(2,21)/PMED)**2
68739         PMTMPE=PMTH(2,22)
68740         IF(ISCOL(IR).EQ.0) PMTMPE=0.5D0*PARJ(90)
68741         ZCE=0.5D0*(1D0-SQRT(MAX(0D0,1D0-(2D0*PMTMPE/PMED)**2)))
68742         IF(ZCE.LT.1D-6) ZCE=(PMTMPE/PMED)**2
68743       ENDIF
68744       ZC=MIN(ZC,0.491D0)
68745       ZCE=MIN(ZCE,0.49991D0)
68746       IF(((MSTJ(41).EQ.1.AND.ZC.GT.0.49D0).OR.(MSTJ(41).GE.2.AND.
68747      &MIN(ZC,ZCE).GT.0.4999D0)).AND.IPSPD.EQ.0) THEN
68748         P(IEP(1),5)=PMTH(1,IR)
68749         V(IEP(1),5)=P(IEP(1),5)**2
68750         GOTO 450
68751       ENDIF
68752  
68753 C...Integral of Altarelli-Parisi z kernel for QCD.
68754 C...(Includes squark and gluino; with factor N_C/C_F extra for latter).
68755       IF(MSTJ(49).EQ.0.AND.KFL(1).EQ.21) THEN
68756         FBR=6D0*LOG((1D0-ZC)/ZC)+MSTJ(45)*0.5D0
68757 C...QUARKONIA+++
68758 C...Evolution of QQ~[3S18] state if MSTP(148)=1.
68759       ELSEIF(MSTJ(49).EQ.0.AND.MSTP(149).GE.0.AND.
68760      &       (KFL(1).EQ.9900443.OR.KFL(1).EQ.9900553)) THEN
68761         FBR=6D0*LOG((1D0-ZC)/ZC)
68762 C...QUARKONIA---
68763       ELSEIF(MSTJ(49).EQ.0) THEN
68764         FBR=(8D0/3D0)*LOG((1D0-ZC)/ZC)
68765         IF(IGLUI.EQ.1.AND.IR.GE.31) FBR=FBR*(9D0/4D0)
68766  
68767 C...Integral of Altarelli-Parisi z kernel for scalar gluon.
68768       ELSEIF(MSTJ(49).EQ.1.AND.KFL(1).EQ.21) THEN
68769         FBR=(PARJ(87)+MSTJ(45)*PARJ(88))*(1D0-2D0*ZC)
68770       ELSEIF(MSTJ(49).EQ.1) THEN
68771         FBR=(1D0-2D0*ZC)/3D0
68772         IF(IGM.EQ.0.AND.M3JC.GE.1) FBR=4D0*FBR
68773  
68774 C...Integral of Altarelli-Parisi z kernel for Abelian vector gluon.
68775       ELSEIF(KFL(1).EQ.21) THEN
68776         FBR=6D0*MSTJ(45)*(0.5D0-ZC)
68777       ELSE
68778         FBR=2D0*LOG((1D0-ZC)/ZC)
68779       ENDIF
68780  
68781 C...Reset QCD probability for colourless.
68782       IF(ISCOL(IR).EQ.0) FBR=0D0
68783  
68784 C...Integral of Altarelli-Parisi kernel for photon emission.
68785       FBRE=0D0
68786       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1) THEN
68787         IF(KFL(1).LE.18) THEN
68788           FBRE=(KCHG(KFL(1),1)/3D0)**2*2D0*LOG((1D0-ZCE)/ZCE)
68789         ENDIF
68790         IF(MSTJ(41).EQ.10) FBRE=PARJ(84)*FBRE
68791       ENDIF
68792  
68793 C...Inner veto algorithm starts. Find maximum mass for evolution.
68794   410 PMS=V(IEP(1),5)
68795       IF(IGM.GE.0) THEN
68796         PM2=0D0
68797         DO 420 I=2,NEP
68798           PM=P(IEP(I),5)
68799           IRI=IREF(IEP(I)-NS)
68800           IF(KSH(IRI).EQ.1) PM=PMTH(2,IRI)
68801           PM2=PM2+PM
68802   420   CONTINUE
68803         PMS=MIN(PMS,(P(IM,5)-PM2)**2)
68804       ENDIF
68805  
68806 C...Select mass for daughter in QCD evolution.
68807       B0=27D0/6D0
68808       DO 430 IFF=4,MSTJ(45)
68809         IF(PMS.GT.4D0*PMTH(2,IFF)**2) B0=(33D0-2D0*IFF)/6D0
68810   430 CONTINUE
68811 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
68812       PMSC=MAX(0.5D0*PARJ(82),PMS-PMTH(1,IR)**2)
68813 C...Already predetermined choice.
68814       IF(IPSPD.NE.0) THEN
68815         PMSQCD=P(IPSPD,5)**2
68816       ELSEIF(FBR.LT.1D-3) THEN
68817         PMSQCD=0D0
68818       ELSEIF(MSTJ(44).LE.0) THEN
68819         PMSQCD=PMSC*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/(PARU(111)*FBR)))
68820       ELSEIF(MSTJ(44).EQ.1) THEN
68821         PMSQCD=4D0*ALAMS*(0.25D0*PMSC/ALAMS)**(PYR(0)**(B0/FBR))
68822       ELSE
68823         PMSQCD=PMSC*EXP(MAX(-50D0,ALFM*B0*LOG(PYR(0))/FBR))
68824       ENDIF
68825 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
68826       IF(IPSPD.EQ.0) PMSQCD=PMSQCD+PMTH(1,IR)**2
68827       IF(ZC.GT.0.49D0.OR.PMSQCD.LE.PMTH(4,IR)**2) PMSQCD=PMTH(2,IR)**2
68828       V(IEP(1),5)=PMSQCD
68829       MCE=1
68830  
68831 C...Select mass for daughter in QED evolution.
68832       IF(MSTJ(41).GE.2.AND.ISCHG(IR).EQ.1.AND.IPSPD.EQ.0) THEN
68833 C...Shift m^2 for evolution in Q^2 = m^2 - m(onshell)^2.
68834         PMSE=MAX(0.5D0*PARJ(83),PMS-PMTH(1,IR)**2)
68835         IF(FBRE.LT.1D-3) THEN
68836           PMSQED=0D0
68837         ELSE
68838           PMSQED=PMSE*EXP(MAX(-50D0,LOG(PYR(0))*PARU(2)/
68839      &    (PARU(101)*FBRE)))
68840         ENDIF
68841 C...Shift back m^2 from evolution in Q^2 = m^2 - m(onshell)^2.
68842         PMSQED=PMSQED+PMTH(1,IR)**2
68843         IF(ZCE.GT.0.4999D0.OR.PMSQED.LE.PMTH(5,IR)**2) PMSQED=
68844      &  PMTH(2,IR)**2
68845         IF(PMSQED.GT.PMSQCD) THEN
68846           V(IEP(1),5)=PMSQED
68847           MCE=2
68848         ENDIF
68849       ENDIF
68850  
68851 C...Check whether daughter mass below cutoff.
68852       P(IEP(1),5)=SQRT(V(IEP(1),5))
68853       IF(P(IEP(1),5).LE.PMTH(3,IR)) THEN
68854         P(IEP(1),5)=PMTH(1,IR)
68855         V(IEP(1),5)=P(IEP(1),5)**2
68856         GOTO 450
68857       ENDIF
68858  
68859 C...Already predetermined choice of z, and flavour in g -> qqbar.
68860       IF(IPSPD.NE.0) THEN
68861         IPSGD1=K(IPSPD,4)
68862         IPSGD2=K(IPSPD,5)
68863         PMSGD1=P(IPSGD1,5)**2
68864         PMSGD2=P(IPSGD2,5)**2
68865         ALAMPS=SQRT(MAX(1D-10,(PMSQCD-PMSGD1-PMSGD2)**2-
68866      &  4D0*PMSGD1*PMSGD2))
68867         Z=0.5D0*(PMSQCD*(2D0*P(IPSGD1,4)/P(IPSPD,4)-1D0)+ALAMPS-
68868      &  PMSGD1+PMSGD2)/ALAMPS
68869         Z=MAX(0.00001D0,MIN(0.99999D0,Z))
68870         IF(KFL(1).NE.21) THEN
68871           K(IEP(1),5)=21
68872         ELSE
68873           K(IEP(1),5)=IABS(K(IPSGD1,2))
68874         ENDIF
68875  
68876 C...Select z value of branching: q -> qgamma.
68877       ELSEIF(MCE.EQ.2) THEN
68878         Z=1D0-(1D0-ZCE)*(ZCE/(1D0-ZCE))**PYR(0)
68879         IF(1D0+Z**2.LT.2D0*PYR(0)) GOTO 410
68880         K(IEP(1),5)=22
68881  
68882 C...QUARKONIA+++
68883 C...Select z value of branching: QQ~[3S18] -> QQ~[3S18]g.
68884       ELSEIF(MSTJ(49).EQ.0.AND.
68885      &       (KFL(1).EQ.9900443.OR.KFL(1).EQ.9900553)) THEN
68886         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
68887 C...Select always the harder 'gluon' if the switch MSTP(149)<=0.
68888         IF(MSTP(149).LE.0.OR.PYR(0).GT.0.5D0) Z=1D0-Z
68889         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 410
68890         K(IEP(1),5)=21
68891 C...QUARKONIA---
68892  
68893 C...Select z value of branching: q -> qg, g -> gg, g -> qqbar.
68894       ELSEIF(MSTJ(49).NE.1.AND.KFL(1).NE.21) THEN
68895         Z=1D0-(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
68896 C...Only do z weighting when no ME correction afterwards.
68897         IF(M3JC.EQ.0.AND.1D0+Z**2.LT.2D0*PYR(0)) GOTO 410
68898         K(IEP(1),5)=21
68899       ELSEIF(MSTJ(49).EQ.0.AND.MSTJ(45)*0.5D0.LT.PYR(0)*FBR) THEN
68900         Z=(1D0-ZC)*(ZC/(1D0-ZC))**PYR(0)
68901         IF(PYR(0).GT.0.5D0) Z=1D0-Z
68902         IF((1D0-Z*(1D0-Z))**2.LT.PYR(0)) GOTO 410
68903         K(IEP(1),5)=21
68904       ELSEIF(MSTJ(49).NE.1) THEN
68905         Z=PYR(0)
68906         IF(Z**2+(1D0-Z)**2.LT.PYR(0)) GOTO 410
68907         KFLB=1+INT(MSTJ(45)*PYR(0))
68908         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
68909         IF(PMQ.GE.1D0) GOTO 410
68910         IF(MSTJ(44).LE.2.OR.MSTJ(44).EQ.4) THEN
68911           IF(Z.LT.ZC.OR.Z.GT.1D0-ZC) GOTO 410
68912           PMQ0=4D0*PMTH(2,21)**2/V(IEP(1),5)
68913           IF(MOD(MSTJ(43),2).EQ.0.AND.(1D0+0.5D0*PMQ)*SQRT(1D0-PMQ)
68914      &    .LT.PYR(0)*(1D0+0.5D0*PMQ0)*SQRT(1D0-PMQ0)) GOTO 410
68915         ELSE
68916           IF((1D0+0.5D0*PMQ)*SQRT(1D0-PMQ).LT.PYR(0)) GOTO 410
68917         ENDIF
68918         K(IEP(1),5)=KFLB
68919  
68920 C...Ditto for scalar gluon model.
68921       ELSEIF(KFL(1).NE.21) THEN
68922         Z=1D0-SQRT(ZC**2+PYR(0)*(1D0-2D0*ZC))
68923         K(IEP(1),5)=21
68924       ELSEIF(PYR(0)*(PARJ(87)+MSTJ(45)*PARJ(88)).LE.PARJ(87)) THEN
68925         Z=ZC+(1D0-2D0*ZC)*PYR(0)
68926         K(IEP(1),5)=21
68927       ELSE
68928         Z=ZC+(1D0-2D0*ZC)*PYR(0)
68929         KFLB=1+INT(MSTJ(45)*PYR(0))
68930         PMQ=4D0*PMTH(2,KFLB)**2/V(IEP(1),5)
68931         IF(PMQ.GE.1D0) GOTO 410
68932         K(IEP(1),5)=KFLB
68933       ENDIF
68934  
68935 C...Correct to alpha_s(pT^2) (optionally m^2/4 for g -> q qbar).
68936       IF(MCE.EQ.1.AND.MSTJ(44).GE.2.AND.IPSPD.EQ.0) THEN
68937         IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
68938      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
68939           IF(ALFM/LOG(V(IEP(1),5)*0.25D0/ALAMS).LT.PYR(0)) GOTO 410
68940         ELSE
68941           PT2APP=Z*(1D0-Z)*V(IEP(1),5)
68942           IF(MSTJ(44).GE.4) PT2APP=PT2APP*
68943      &    (1D0-PMTH(1,IR)**2/V(IEP(1),5))**2
68944           IF(PT2APP.LT.PT2MIN) GOTO 410
68945           IF(ALFM/LOG(PT2APP/ALAMS).LT.PYR(0)) GOTO 410
68946         ENDIF
68947       ENDIF
68948  
68949 C...Check if z consistent with chosen m.
68950       IF(KFL(1).EQ.21) THEN
68951         IRGD1=IABS(K(IEP(1),5))
68952         IRGD2=IRGD1
68953       ELSE
68954         IRGD1=IR
68955         IRGD2=IABS(K(IEP(1),5))
68956       ENDIF
68957       IF(NEP.EQ.1) THEN
68958         PED=PS(4)
68959       ELSEIF(NEP.GE.3) THEN
68960         PED=P(IEP(1),4)
68961       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
68962         PED=0.5D0*(V(IM,5)+V(IEP(1),5)-PM2**2)/P(IM,5)
68963       ELSE
68964         IF(IEP(1).EQ.N+1) PED=V(IM,1)*PEM
68965         IF(IEP(1).EQ.N+2) PED=(1D0-V(IM,1))*PEM
68966       ENDIF
68967       IF(MOD(MSTJ(43),2).EQ.1) THEN
68968         PMQTH3=0.5D0*PARJ(82)
68969         IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
68970         IF(IRGD2.EQ.22.AND.ISCOL(IR).EQ.0) PMQTH3=0.5D0*PARJ(90)
68971         PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(IEP(1),5)
68972         PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(IEP(1),5)
68973         ZD=SQRT(MAX(0D0,(1D0-V(IEP(1),5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
68974      &  4D0*PMQ1*PMQ2)))
68975         ZH=1D0+PMQ1-PMQ2
68976       ELSE
68977         ZD=SQRT(MAX(0D0,1D0-V(IEP(1),5)/PED**2))
68978         ZH=1D0
68979       ENDIF
68980       IF(KFL(1).EQ.21.AND.K(IEP(1),5).LT.10.AND.
68981      &(MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
68982       ELSEIF(IPSPD.NE.0) THEN
68983       ELSE
68984         ZL=0.5D0*(ZH-ZD)
68985         ZU=0.5D0*(ZH+ZD)
68986         IF(Z.LT.ZL.OR.Z.GT.ZU) GOTO 410
68987       ENDIF
68988       IF(KFL(1).EQ.21) V(IEP(1),3)=LOG(ZU*(1D0-ZL)/MAX(1D-20,ZL*
68989      &(1D0-ZU)))
68990       IF(KFL(1).NE.21) V(IEP(1),3)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
68991  
68992 C...Width suppression for q -> q + g.
68993       IF(MSTJ(40).NE.0.AND.KFL(1).NE.21.AND.IPSPD.EQ.0) THEN
68994         IF(IGM.EQ.0) THEN
68995           EGLU=0.5D0*PS(5)*(1D0-Z)*(1D0+V(IEP(1),5)/V(NS+1,5))
68996         ELSE
68997           EGLU=PMED*(1D0-Z)
68998         ENDIF
68999         CHI=PARJ(89)**2/(PARJ(89)**2+EGLU**2)
69000         IF(MSTJ(40).EQ.1) THEN
69001           IF(CHI.LT.PYR(0)) GOTO 410
69002         ELSEIF(MSTJ(40).EQ.2) THEN
69003           IF(1D0-CHI.LT.PYR(0)) GOTO 410
69004         ENDIF
69005       ENDIF
69006  
69007 C...Three-jet matrix element correction.
69008       IF(M3JC.GE.1) THEN
69009         WME=1D0
69010         WSHOW=1D0
69011  
69012 C...QED matrix elements: only for massless case so far.
69013         IF(MCE.EQ.2.AND.IGM.EQ.0) THEN
69014           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
69015           X2=1D0-V(IEP(1),5)/V(NS+1,5)
69016           X3=(1D0-X1)+(1D0-X2)
69017           KI1=K(IPA(INUM),2)
69018           KI2=K(IPA(3-INUM),2)
69019           QF1=KCHG(PYCOMP(KI1),1)*ISIGN(1,KI1)/3D0
69020           QF2=KCHG(PYCOMP(KI2),1)*ISIGN(1,KI2)/3D0
69021           WSHOW=QF1**2*(1D0-X1)/X3*(1D0+(X1/(2D0-X2))**2)+
69022      &    QF2**2*(1D0-X2)/X3*(1D0+(X2/(2D0-X1))**2)
69023           WME=(QF1*(1D0-X1)/X3-QF2*(1D0-X2)/X3)**2*(X1**2+X2**2)
69024         ELSEIF(MCE.EQ.2) THEN
69025  
69026 C...QCD matrix elements, including mass effects.
69027         ELSEIF(MSTJ(49).NE.1.AND.K(IEP(1),2).NE.21) THEN
69028           PS1ME=V(IEP(1),5)
69029           PM1ME=PMTH(1,IR)
69030           M3JCC=M3JC
69031           IF(IR.GE.31.AND.IGM.EQ.0) THEN
69032 C...QCD ME: original parton, first branching.
69033             PM2ME=PMTH(1,63-IR)
69034             ECMME=PS(5)
69035           ELSEIF(IR.GE.31) THEN
69036 C...QCD ME: original parton, subsequent branchings.
69037             PM2ME=PMTH(1,63-IR)
69038             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
69039             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
69040           ELSEIF(K(IM,2).EQ.21) THEN
69041 C...QCD ME: secondary partons, first branching.
69042             PM2ME=PM1ME
69043             ZMME=V(IM,1)
69044             IF(IEP(1).GT.IEP(2)) ZMME=1D0-ZMME
69045             PMLME=SQRT(MAX(0D0,(V(IM,5)-PS1ME-PM2ME**2)**2-
69046      &      4D0*PS1ME*PM2ME**2))
69047             PEDME=PEM*(0.5D0*(V(IM,5)-PMLME+PS1ME-PM2ME**2)+PMLME*ZMME)/
69048      &      V(IM,5)
69049             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
69050             M3JCC=66
69051           ELSE
69052 C...QCD ME: secondary partons, subsequent branchings.
69053             PM2ME=PM1ME
69054             PEDME=PEM*(V(IM,1)+(1D0-V(IM,1))*PS1ME/V(IM,5))
69055             ECMME=PEDME+SQRT(MAX(0D0,PEDME**2-PS1ME+PM2ME**2))
69056             M3JCC=66
69057           ENDIF
69058 C...Construct ME variables.
69059           R1ME=PM1ME/ECMME
69060           R2ME=PM2ME/ECMME
69061           X1=(1D0+PS1ME/ECMME**2-R2ME**2)*(Z+(1D0-Z)*PM1ME**2/PS1ME)
69062           X2=1D0+R2ME**2-PS1ME/ECMME**2
69063 C...Call ME, with right order important for two inequivalent showerers.
69064           IF(IR.EQ.IORD+30) THEN
69065             WME=PYMAEL(M3JCC,X1,X2,R1ME,R2ME,ALPHA)
69066           ELSE
69067             WME=PYMAEL(M3JCC,X2,X1,R2ME,R1ME,ALPHA)
69068           ENDIF
69069 C...Split up total ME when two radiating partons.
69070           ISPRAD=1
69071           IF((M3JCC.GE.16.AND.M3JCC.LE.19).OR.
69072      &    (M3JCC.GE.26.AND.M3JCC.LE.29).OR.
69073      &    (M3JCC.GE.36.AND.M3JCC.LE.39).OR.
69074      &    (M3JCC.GE.46.AND.M3JCC.LE.49).OR.
69075      &    (M3JCC.GE.56.AND.M3JCC.LE.64)) ISPRAD=0
69076           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
69077      &    MAX(1D-10,2D0-X1-X2)
69078 C...Evaluate shower rate to be compared with.
69079           WSHOW=2D0/(MAX(1D-10,2D0-X1-X2)*
69080      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
69081           IF(IGLUI.EQ.1.AND.IR.GE.31) WSHOW=(9D0/4D0)*WSHOW
69082         ELSEIF(MSTJ(49).NE.1) THEN
69083  
69084 C...Toy model scalar theory matrix elements; no mass effects.
69085         ELSE
69086           X1=Z*(1D0+V(IEP(1),5)/V(NS+1,5))
69087           X2=1D0-V(IEP(1),5)/V(NS+1,5)
69088           X3=(1D0-X1)+(1D0-X2)
69089           WSHOW=4D0*X3*((1D0-X1)/(2D0-X2)**2+(1D0-X2)/(2D0-X1)**2)
69090           WME=X3**2
69091           IF(MSTJ(102).GE.2) WME=X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*
69092      &    PARJ(171)
69093         ENDIF
69094  
69095         IF(WME.LT.PYR(0)*WSHOW) GOTO 410
69096       ENDIF
69097  
69098 C...Impose angular ordering by rejection of nonordered emission.
69099       IF(MCE.EQ.1.AND.IGM.GT.0.AND.MSTJ(42).GE.2.AND.IPSPD.EQ.0) THEN
69100         PEMAO=V(IM,1)*P(IM,4)
69101         IF(IEP(1).EQ.N+2) PEMAO=(1D0-V(IM,1))*P(IM,4)
69102         IF(IR.GE.31.AND.MSTJ(42).GE.5) THEN
69103           MAOD=0
69104         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.4
69105      &  .OR.MSTJ(42).EQ.7)) THEN
69106           MAOD=0
69107         ELSEIF(KFL(1).EQ.21.AND.K(IEP(1),5).LE.10.AND.(MSTJ(42).EQ.3
69108      &  .OR.MSTJ(42).EQ.6)) THEN
69109           MAOD=1
69110           PMDAO=PMTH(2,K(IEP(1),5))
69111           THE2ID=Z*(1D0-Z)*PEMAO**2/(V(IEP(1),5)-4D0*PMDAO**2)
69112         ELSE
69113           MAOD=1
69114           THE2ID=Z*(1D0-Z)*PEMAO**2/V(IEP(1),5)
69115           IF(MSTJ(42).GE.3.AND.MSTJ(42).NE.5) THE2ID=THE2ID*
69116      &    (1D0+PMTH(1,IR)**2*(1D0-Z)/(V(IEP(1),5)*Z))**2
69117         ENDIF
69118         MAOM=1
69119         IAOM=IM
69120   440   IF(K(IAOM,5).EQ.22) THEN
69121           IAOM=K(IAOM,3)
69122           IF(K(IAOM,3).LE.NS) MAOM=0
69123           IF(MAOM.EQ.1) GOTO 440
69124         ENDIF
69125         IF(MAOM.EQ.1.AND.MAOD.EQ.1) THEN
69126           THE2IM=V(IAOM,1)*(1D0-V(IAOM,1))*P(IAOM,4)**2/V(IAOM,5)
69127           IF(THE2ID.LT.THE2IM) GOTO 410
69128         ENDIF
69129       ENDIF
69130  
69131 C...Impose user-defined maximum angle at first branching.
69132       IF(MSTJ(48).EQ.1.AND.IPSPD.EQ.0) THEN
69133         IF(NEP.EQ.1.AND.IM.EQ.NS) THEN
69134           THE2ID=Z*(1D0-Z)*PS(4)**2/V(IEP(1),5)
69135           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 410
69136         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+2) THEN
69137           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
69138           IF(PARJ(85)**2*THE2ID.LT.1D0) GOTO 410
69139         ELSEIF(NEP.EQ.2.AND.IEP(1).EQ.NS+3) THEN
69140           THE2ID=Z*(1D0-Z)*(0.5D0*P(IM,4))**2/V(IEP(1),5)
69141           IF(PARJ(86)**2*THE2ID.LT.1D0) GOTO 410
69142         ENDIF
69143       ENDIF
69144  
69145 C...Impose angular constraint in first branching from interference
69146 C...with initial state partons.
69147       IF(MIIS.GE.2.AND.IEP(1).LE.NS+3) THEN
69148         THE2D=MAX((1D0-Z)/Z,Z/(1D0-Z))*V(IEP(1),5)/(0.5D0*P(IM,4))**2
69149         IF(IEP(1).EQ.NS+2.AND.ISII(1).GE.1) THEN
69150           IF(THE2D.GT.THEIIS(1,ISII(1))**2) GOTO 410
69151         ELSEIF(IEP(1).EQ.NS+3.AND.ISII(2).GE.1) THEN
69152           IF(THE2D.GT.THEIIS(2,ISII(2))**2) GOTO 410
69153         ENDIF
69154       ENDIF
69155  
69156 C...End of inner veto algorithm. Check if only one leg evolved so far.
69157   450 V(IEP(1),1)=Z
69158       ISL(1)=0
69159       ISL(2)=0
69160       IF(NEP.EQ.1) GOTO 490
69161       IF(NEP.EQ.2.AND.P(IEP(1),5)+P(IEP(2),5).GE.P(IM,5)) GOTO 350
69162       DO 460 I=1,NEP
69163         IR=IREF(N+I-NS)
69164         IF(ITRY(I).EQ.0.AND.KSH(IR).EQ.1) THEN
69165           IF(P(N+I,5).GE.PMTH(2,IR)) GOTO 350
69166         ENDIF
69167   460 CONTINUE
69168  
69169 C...Check if chosen multiplet m1,m2,z1,z2 is physical.
69170       IF(NEP.GE.3) THEN
69171         PMSUM=0D0
69172         DO 470 I=1,NEP
69173           PMSUM=PMSUM+P(N+I,5)
69174   470   CONTINUE
69175         IF(PMSUM.GE.PS(5)) GOTO 350
69176       ELSEIF(IGM.EQ.0.OR.MSTJ(43).LE.2.OR.MOD(MSTJ(43),2).EQ.0) THEN
69177         DO 480 I1=N+1,N+2
69178           IRDA=IREF(I1-NS)
69179           IF(KSH(IRDA).EQ.0) GOTO 480
69180           IF(P(I1,5).LT.PMTH(2,IRDA)) GOTO 480
69181           IF(IRDA.EQ.21) THEN
69182             IRGD1=IABS(K(I1,5))
69183             IRGD2=IRGD1
69184           ELSE
69185             IRGD1=IRDA
69186             IRGD2=IABS(K(I1,5))
69187           ENDIF
69188           I2=2*N+3-I1
69189           IF(IGM.EQ.0.OR.MSTJ(43).LE.2) THEN
69190             PED=0.5D0*(V(IM,5)+V(I1,5)-V(I2,5))/P(IM,5)
69191           ELSE
69192             IF(I1.EQ.N+1) ZM=V(IM,1)
69193             IF(I1.EQ.N+2) ZM=1D0-V(IM,1)
69194             PML=SQRT((V(IM,5)-V(N+1,5)-V(N+2,5))**2-
69195      &      4D0*V(N+1,5)*V(N+2,5))
69196             PED=PEM*(0.5D0*(V(IM,5)-PML+V(I1,5)-V(I2,5))+PML*ZM)/
69197      &      V(IM,5)
69198           ENDIF
69199           IF(MOD(MSTJ(43),2).EQ.1) THEN
69200             PMQTH3=0.5D0*PARJ(82)
69201             IF(IRGD2.EQ.22) PMQTH3=0.5D0*PARJ(83)
69202             IF(IRGD2.EQ.22.AND.ISCOL(IRDA).EQ.0) PMQTH3=0.5D0*PARJ(90)
69203             PMQ1=(PMTH(1,IRGD1)**2+PMQTH3**2)/V(I1,5)
69204             PMQ2=(PMTH(1,IRGD2)**2+PMQTH3**2)/V(I1,5)
69205             ZD=SQRT(MAX(0D0,(1D0-V(I1,5)/PED**2)*((1D0-PMQ1-PMQ2)**2-
69206      &      4D0*PMQ1*PMQ2)))
69207             ZH=1D0+PMQ1-PMQ2
69208           ELSE
69209             ZD=SQRT(MAX(0D0,1D0-V(I1,5)/PED**2))
69210             ZH=1D0
69211           ENDIF
69212           IF(IRDA.EQ.21.AND.IRGD1.LT.10.AND.
69213      &    (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
69214           ELSE
69215             ZL=0.5D0*(ZH-ZD)
69216             ZU=0.5D0*(ZH+ZD)
69217             IF(I1.EQ.N+1.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
69218      &      ISSET(1).EQ.0) THEN
69219               ISL(1)=1
69220             ELSEIF(I1.EQ.N+2.AND.(V(I1,1).LT.ZL.OR.V(I1,1).GT.ZU).AND.
69221      &      ISSET(2).EQ.0) THEN
69222               ISL(2)=1
69223             ENDIF
69224           ENDIF
69225           IF(IRDA.EQ.21) V(I1,4)=LOG(ZU*(1D0-ZL)/MAX(1D-20,
69226      &    ZL*(1D0-ZU)))
69227           IF(IRDA.NE.21) V(I1,4)=LOG((1D0-ZL)/MAX(1D-10,1D0-ZU))
69228   480   CONTINUE
69229         IF(ISL(1).EQ.1.AND.ISL(2).EQ.1.AND.ISLM.NE.0) THEN
69230           ISL(3-ISLM)=0
69231           ISLM=3-ISLM
69232         ELSEIF(ISL(1).EQ.1.AND.ISL(2).EQ.1) THEN
69233           ZDR1=MAX(0D0,V(N+1,3)/MAX(1D-6,V(N+1,4))-1D0)
69234           ZDR2=MAX(0D0,V(N+2,3)/MAX(1D-6,V(N+2,4))-1D0)
69235           IF(ZDR2.GT.PYR(0)*(ZDR1+ZDR2)) ISL(1)=0
69236           IF(ISL(1).EQ.1) ISL(2)=0
69237           IF(ISL(1).EQ.0) ISLM=1
69238           IF(ISL(2).EQ.0) ISLM=2
69239         ENDIF
69240         IF(ISL(1).EQ.1.OR.ISL(2).EQ.1) GOTO 350
69241       ENDIF
69242       IRD1=IREF(N+1-NS)
69243       IRD2=IREF(N+2-NS)
69244       IF(IGM.GT.0) THEN
69245         IF(MOD(MSTJ(43),2).EQ.1.AND.(P(N+1,5).GE.
69246      &  PMTH(2,IRD1).OR.P(N+2,5).GE.PMTH(2,IRD2))) THEN
69247           PMQ1=V(N+1,5)/V(IM,5)
69248           PMQ2=V(N+2,5)/V(IM,5)
69249           ZD=SQRT(MAX(0D0,(1D0-V(IM,5)/PEM**2)*((1D0-PMQ1-PMQ2)**2-
69250      &    4D0*PMQ1*PMQ2)))
69251           ZH=1D0+PMQ1-PMQ2
69252           ZL=0.5D0*(ZH-ZD)
69253           ZU=0.5D0*(ZH+ZD)
69254           IF(V(IM,1).LT.ZL.OR.V(IM,1).GT.ZU) GOTO 350
69255         ENDIF
69256       ENDIF
69257  
69258 C...Accepted branch. Construct four-momentum for initial partons.
69259   490 MAZIP=0
69260       MAZIC=0
69261       IF(NEP.EQ.1) THEN
69262         P(N+1,1)=0D0
69263         P(N+1,2)=0D0
69264         P(N+1,3)=SQRT(MAX(0D0,(P(IPA(1),4)+P(N+1,5))*(P(IPA(1),4)-
69265      &  P(N+1,5))))
69266         P(N+1,4)=P(IPA(1),4)
69267         V(N+1,2)=P(N+1,4)
69268       ELSEIF(IGM.EQ.0.AND.NEP.EQ.2) THEN
69269         PED1=0.5D0*(V(IM,5)+V(N+1,5)-V(N+2,5))/P(IM,5)
69270         P(N+1,1)=0D0
69271         P(N+1,2)=0D0
69272         P(N+1,3)=SQRT(MAX(0D0,(PED1+P(N+1,5))*(PED1-P(N+1,5))))
69273         P(N+1,4)=PED1
69274         P(N+2,1)=0D0
69275         P(N+2,2)=0D0
69276         P(N+2,3)=-P(N+1,3)
69277         P(N+2,4)=P(IM,5)-PED1
69278         V(N+1,2)=P(N+1,4)
69279         V(N+2,2)=P(N+2,4)
69280       ELSEIF(NEP.GE.3) THEN
69281 C...Rescale all momenta for energy conservation.
69282         LOOP=0
69283         PES=0D0
69284         PQS=0D0
69285         DO 510 I=1,NEP
69286           DO 500 J=1,4
69287             P(N+I,J)=P(IPA(I),J)
69288   500     CONTINUE
69289           PES=PES+P(N+I,4)
69290           PQS=PQS+P(N+I,5)**2/P(N+I,4)
69291   510   CONTINUE
69292   520   LOOP=LOOP+1
69293         FAC=(PS(5)-PQS)/(PES-PQS)
69294         PES=0D0
69295         PQS=0D0
69296         DO 540 I=1,NEP
69297           DO 530 J=1,3
69298             P(N+I,J)=FAC*P(N+I,J)
69299   530     CONTINUE
69300           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)
69301           V(N+I,2)=P(N+I,4)
69302           PES=PES+P(N+I,4)
69303           PQS=PQS+P(N+I,5)**2/P(N+I,4)
69304   540   CONTINUE
69305         IF(LOOP.LT.10.AND.ABS(PES-PS(5)).GT.1D-12*PS(5)) GOTO 520
69306  
69307 C...Construct transverse momentum for ordinary branching in shower.
69308       ELSE
69309         ZM=V(IM,1)
69310         LOOPPT=0
69311   550   LOOPPT=LOOPPT+1
69312         PZM=SQRT(MAX(0D0,(PEM+P(IM,5))*(PEM-P(IM,5))))
69313         PMLS=(V(IM,5)-V(N+1,5)-V(N+2,5))**2-4D0*V(N+1,5)*V(N+2,5)
69314         IF(PZM.LE.0D0) THEN
69315           PTS=0D0
69316         ELSEIF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
69317      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
69318           PTS=PMLS*ZM*(1D0-ZM)/V(IM,5)
69319         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
69320           PTS=(PEM**2*(ZM*(1D0-ZM)*V(IM,5)-(1D0-ZM)*V(N+1,5)-
69321      &    ZM*V(N+2,5))-0.25D0*PMLS)/PZM**2
69322         ELSE
69323           PTS=PMLS*(ZM*(1D0-ZM)*PEM**2/V(IM,5)-0.25D0)/PZM**2
69324         ENDIF
69325         IF(PTS.LT.0D0.AND.LOOPPT.LT.10) THEN
69326           ZM=0.05D0+0.9D0*ZM
69327           GOTO 550
69328         ELSEIF(PTS.LT.0D0) THEN
69329           GOTO 280
69330         ENDIF
69331         PT=SQRT(MAX(0D0,PTS))
69332  
69333 C...Global statistics.
69334         MINT(353)=MINT(353)+1
69335         VINT(353)=VINT(353)+PT
69336         IF (MINT(353).EQ.1) VINT(358)=PT
69337  
69338 C...Find coefficient of azimuthal asymmetry due to gluon polarization.
69339         HAZIP=0D0
69340         IF(MSTJ(49).NE.1.AND.MOD(MSTJ(46),2).EQ.1.AND.K(IM,2).EQ.21
69341      &  .AND.IAU.NE.0) THEN
69342           IF(K(IGM,3).NE.0) MAZIP=1
69343           ZAU=V(IGM,1)
69344           IF(IAU.EQ.IM+1) ZAU=1D0-V(IGM,1)
69345           IF(MAZIP.EQ.0) ZAU=0D0
69346           IF(K(IGM,2).NE.21) THEN
69347             HAZIP=2D0*ZAU/(1D0+ZAU**2)
69348           ELSE
69349             HAZIP=(ZAU/(1D0-ZAU*(1D0-ZAU)))**2
69350           ENDIF
69351           IF(K(N+1,2).NE.21) THEN
69352             HAZIP=HAZIP*(-2D0*ZM*(1D0-ZM))/(1D0-2D0*ZM*(1D0-ZM))
69353           ELSE
69354             HAZIP=HAZIP*(ZM*(1D0-ZM)/(1D0-ZM*(1D0-ZM)))**2
69355           ENDIF
69356         ENDIF
69357  
69358 C...Find coefficient of azimuthal asymmetry due to soft gluon
69359 C...interference.
69360         HAZIC=0D0
69361         IF(MSTJ(49).NE.2.AND.MSTJ(46).GE.2.AND.(K(N+1,2).EQ.21.OR.
69362      &  K(N+2,2).EQ.21).AND.IAU.NE.0) THEN
69363           IF(K(IGM,3).NE.0) MAZIC=N+1
69364           IF(K(IGM,3).NE.0.AND.K(N+1,2).NE.21) MAZIC=N+2
69365           IF(K(IGM,3).NE.0.AND.K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
69366      &    ZM.GT.0.5D0) MAZIC=N+2
69367           IF(K(IAU,2).EQ.22) MAZIC=0
69368           ZS=ZM
69369           IF(MAZIC.EQ.N+2) ZS=1D0-ZM
69370           ZGM=V(IGM,1)
69371           IF(IAU.EQ.IM-1) ZGM=1D0-V(IGM,1)
69372           IF(MAZIC.EQ.0) ZGM=1D0
69373           IF(MAZIC.NE.0) HAZIC=(P(IM,5)/P(IGM,5))*
69374      &    SQRT((1D0-ZS)*(1D0-ZGM)/(ZS*ZGM))
69375           HAZIC=MIN(0.95D0,HAZIC)
69376         ENDIF
69377       ENDIF
69378  
69379 C...Construct energies for ordinary branching in shower.
69380   560 IF(NEP.EQ.2.AND.IGM.GT.0) THEN
69381         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
69382      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
69383           P(N+1,4)=0.5D0*(PEM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
69384      &    PZM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
69385         ELSEIF(MOD(MSTJ(43),2).EQ.1) THEN
69386           P(N+1,4)=PEM*V(IM,1)
69387         ELSE
69388           P(N+1,4)=PEM*(0.5D0*(V(IM,5)-SQRT(PMLS)+V(N+1,5)-V(N+2,5))+
69389      &    SQRT(PMLS)*ZM)/V(IM,5)
69390         ENDIF
69391  
69392 C...Already predetermined choice of phi angle or not
69393         PHI=PARU(2)*PYR(0)
69394         IF(MPSPD.EQ.1.AND.IGM.EQ.NS+1) THEN
69395           IPSPD=IP1+IM-NS-2
69396           IF(K(IPSPD,4).GT.0) THEN
69397             IPSGD1=K(IPSPD,4)
69398             IF(IM.EQ.NS+2) THEN
69399               PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
69400             ELSE
69401               PHI=PYANGL(-P(IPSGD1,1),P(IPSGD1,2))
69402             ENDIF
69403           ENDIF
69404         ELSEIF(MPSPD.EQ.1.AND.IGM.EQ.NS+2) THEN
69405           IPSPD=IP1+IM-NS-2
69406           IF(K(IPSPD,4).GT.0) THEN
69407             IPSGD1=K(IPSPD,4)
69408             PHIPSM=PYANGL(P(IPSPD,1),P(IPSPD,2))
69409             THEPSM=PYANGL(P(IPSPD,3),SQRT(P(IPSPD,1)**2+P(IPSPD,2)**2))
69410             CALL PYROBO(IPSGD1,IPSGD1,0D0,-PHIPSM,0D0,0D0,0D0)
69411             CALL PYROBO(IPSGD1,IPSGD1,-THEPSM,0D0,0D0,0D0,0D0)
69412             PHI=PYANGL(P(IPSGD1,1),P(IPSGD1,2))
69413             CALL PYROBO(IPSGD1,IPSGD1,THEPSM,PHIPSM,0D0,0D0,0D0)
69414           ENDIF
69415         ENDIF
69416  
69417 C...Construct momenta for ordinary branching in shower.
69418         P(N+1,1)=PT*COS(PHI)
69419         P(N+1,2)=PT*SIN(PHI)
69420         IF(K(IM,2).EQ.21.AND.IABS(K(N+1,2)).LE.10.AND.
69421      &  (MSTJ(44).EQ.3.OR.MSTJ(44).EQ.5)) THEN
69422           P(N+1,3)=0.5D0*(PZM*(V(IM,5)+V(N+1,5)-V(N+2,5))+
69423      &    PEM*SQRT(MAX(0D0,PMLS))*(2D0*ZM-1D0))/V(IM,5)
69424         ELSEIF(PZM.GT.0D0) THEN
69425           P(N+1,3)=0.5D0*(V(N+2,5)-V(N+1,5)-V(IM,5)+
69426      &    2D0*PEM*P(N+1,4))/PZM
69427         ELSE
69428           P(N+1,3)=0D0
69429         ENDIF
69430         P(N+2,1)=-P(N+1,1)
69431         P(N+2,2)=-P(N+1,2)
69432         P(N+2,3)=PZM-P(N+1,3)
69433         P(N+2,4)=PEM-P(N+1,4)
69434         IF(MSTJ(43).LE.2) THEN
69435           V(N+1,2)=(PEM*P(N+1,4)-PZM*P(N+1,3))/P(IM,5)
69436           V(N+2,2)=(PEM*P(N+2,4)-PZM*P(N+2,3))/P(IM,5)
69437         ENDIF
69438       ENDIF
69439  
69440 C...Rotate and boost daughters.
69441       IF(IGM.GT.0) THEN
69442         IF(MSTJ(43).LE.2) THEN
69443           BEX=P(IGM,1)/P(IGM,4)
69444           BEY=P(IGM,2)/P(IGM,4)
69445           BEZ=P(IGM,3)/P(IGM,4)
69446           GA=P(IGM,4)/P(IGM,5)
69447           GABEP=GA*(GA*(BEX*P(IM,1)+BEY*P(IM,2)+BEZ*P(IM,3))/(1D0+GA)-
69448      &    P(IM,4))
69449         ELSE
69450           BEX=0D0
69451           BEY=0D0
69452           BEZ=0D0
69453           GA=1D0
69454           GABEP=0D0
69455         ENDIF
69456         PTIMB=SQRT((P(IM,1)+GABEP*BEX)**2+(P(IM,2)+GABEP*BEY)**2)
69457         THE=PYANGL(P(IM,3)+GABEP*BEZ,PTIMB)
69458         IF(PTIMB.GT.1D-4) THEN
69459           PHI=PYANGL(P(IM,1)+GABEP*BEX,P(IM,2)+GABEP*BEY)
69460         ELSE
69461           PHI=0D0
69462         ENDIF
69463         DO 570 I=N+1,N+2
69464           DP(1)=COS(THE)*COS(PHI)*P(I,1)-SIN(PHI)*P(I,2)+
69465      &    SIN(THE)*COS(PHI)*P(I,3)
69466           DP(2)=COS(THE)*SIN(PHI)*P(I,1)+COS(PHI)*P(I,2)+
69467      &    SIN(THE)*SIN(PHI)*P(I,3)
69468           DP(3)=-SIN(THE)*P(I,1)+COS(THE)*P(I,3)
69469           DP(4)=P(I,4)
69470           DBP=BEX*DP(1)+BEY*DP(2)+BEZ*DP(3)
69471           DGABP=GA*(GA*DBP/(1D0+GA)+DP(4))
69472           P(I,1)=DP(1)+DGABP*BEX
69473           P(I,2)=DP(2)+DGABP*BEY
69474           P(I,3)=DP(3)+DGABP*BEZ
69475           P(I,4)=GA*(DP(4)+DBP)
69476   570   CONTINUE
69477       ENDIF
69478  
69479 C...Weight with azimuthal distribution, if required.
69480       IF(MAZIP.NE.0.OR.MAZIC.NE.0) THEN
69481         DO 580 J=1,3
69482           DPT(1,J)=P(IM,J)
69483           DPT(2,J)=P(IAU,J)
69484           DPT(3,J)=P(N+1,J)
69485   580   CONTINUE
69486         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
69487         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
69488         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
69489         DO 590 J=1,3
69490           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
69491           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
69492   590   CONTINUE
69493         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
69494         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
69495         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
69496           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
69497      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
69498           IF(MAZIP.NE.0) THEN
69499             IF(1D0+HAZIP*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(HAZIP)))
69500      &      GOTO 560
69501           ENDIF
69502           IF(MAZIC.NE.0) THEN
69503             IF(MAZIC.EQ.N+2) CAD=-CAD
69504             IF((1D0-HAZIC)*(1D0-HAZIC*CAD)/(1D0+HAZIC**2-2D0*HAZIC*CAD)
69505      &      .LT.PYR(0)) GOTO 560
69506           ENDIF
69507         ENDIF
69508       ENDIF
69509  
69510 C...Azimuthal anisotropy due to interference with initial state partons.
69511       IF(MOD(MIIS,2).EQ.1.AND.IGM.EQ.NS+1.AND.(K(N+1,2).EQ.21.OR.
69512      &K(N+2,2).EQ.21)) THEN
69513         III=IM-NS-1
69514         IF(ISII(III).GE.1) THEN
69515           IAZIID=N+1
69516           IF(K(N+1,2).NE.21) IAZIID=N+2
69517           IF(K(N+1,2).EQ.21.AND.K(N+2,2).EQ.21.AND.
69518      &    P(N+1,4).GT.P(N+2,4)) IAZIID=N+2
69519           THEIID=PYANGL(P(IAZIID,3),SQRT(P(IAZIID,1)**2+P(IAZIID,2)**2))
69520           IF(III.EQ.2) THEIID=PARU(1)-THEIID
69521           PHIIID=PYANGL(P(IAZIID,1),P(IAZIID,2))
69522           HAZII=MIN(0.95D0,THEIID/THEIIS(III,ISII(III)))
69523           CAD=COS(PHIIID-PHIIIS(III,ISII(III)))
69524           PHIREL=ABS(PHIIID-PHIIIS(III,ISII(III)))
69525           IF(PHIREL.GT.PARU(1)) PHIREL=PARU(2)-PHIREL
69526           IF((1D0-HAZII)*(1D0-HAZII*CAD)/(1D0+HAZII**2-2D0*HAZII*CAD)
69527      &    .LT.PYR(0)) GOTO 560
69528         ENDIF
69529       ENDIF
69530  
69531 C...Continue loop over partons that may branch, until none left.
69532       IF(IGM.GE.0) K(IM,1)=14
69533       N=N+NEP
69534       NEP=2
69535       IF(N.GT.MSTU(4)-MSTU(32)-10) THEN
69536         CALL PYERRM(11,'(PYSHOW:) no more memory left in PYJETS')
69537         IF(MSTU(21).GE.1) N=NS
69538         IF(MSTU(21).GE.1) RETURN
69539       ENDIF
69540       GOTO 290
69541  
69542 C...Set information on imagined shower initiator.
69543   600 IF(NPA.GE.2) THEN
69544         K(NS+1,1)=11
69545         K(NS+1,2)=94
69546         K(NS+1,3)=IP1
69547         IF(IP2.GT.0.AND.IP2.LT.IP1) K(NS+1,3)=IP2
69548         K(NS+1,4)=NS+2
69549         K(NS+1,5)=NS+1+NPA
69550         IIM=1
69551       ELSE
69552         IIM=0
69553       ENDIF
69554  
69555 C...Reconstruct string drawing information.
69556       DO 610 I=NS+1+IIM,N
69557         KQ=KCHG(PYCOMP(K(I,2)),2)
69558         IF(K(I,1).LE.10.AND.K(I,2).EQ.22) THEN
69559           K(I,1)=1
69560         ELSEIF(K(I,1).LE.10.AND.IABS(K(I,2)).GE.11.AND.
69561      &    IABS(K(I,2)).LE.18) THEN
69562           K(I,1)=1
69563         ELSEIF(K(I,1).LE.10) THEN
69564           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))
69565           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))
69566         ELSEIF(K(MOD(K(I,4),MSTU(5))+1,2).NE.22) THEN
69567           ID1=MOD(K(I,4),MSTU(5))
69568           IF(KQ.EQ.1.AND.K(I,2).GT.0) ID1=MOD(K(I,4),MSTU(5))+1
69569           IF(KQ.EQ.2.AND.(K(ID1,2).EQ.21.OR.K(ID1+1,2).EQ.21).AND.
69570      &    PYR(0).GT.0.5D0) ID1=MOD(K(I,4),MSTU(5))+1
69571           ID2=2*MOD(K(I,4),MSTU(5))+1-ID1
69572           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
69573           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID2
69574           K(ID1,4)=K(ID1,4)+MSTU(5)*I
69575           K(ID1,5)=K(ID1,5)+MSTU(5)*ID2
69576           K(ID2,4)=K(ID2,4)+MSTU(5)*ID1
69577           K(ID2,5)=K(ID2,5)+MSTU(5)*I
69578         ELSE
69579           ID1=MOD(K(I,4),MSTU(5))
69580           ID2=ID1+1
69581           K(I,4)=MSTU(5)*(K(I,4)/MSTU(5))+ID1
69582           K(I,5)=MSTU(5)*(K(I,5)/MSTU(5))+ID1
69583           IF(KQ.EQ.1.OR.K(ID1,1).GE.11) THEN
69584             K(ID1,4)=K(ID1,4)+MSTU(5)*I
69585             K(ID1,5)=K(ID1,5)+MSTU(5)*I
69586           ELSE
69587             K(ID1,4)=0
69588             K(ID1,5)=0
69589           ENDIF
69590           K(ID2,4)=0
69591           K(ID2,5)=0
69592         ENDIF
69593   610 CONTINUE
69594  
69595 C...Transformation from CM frame.
69596       IF(NPA.EQ.1) THEN
69597         THE=PYANGL(P(IPA(1),3),SQRT(P(IPA(1),1)**2+P(IPA(1),2)**2))
69598         PHI=PYANGL(P(IPA(1),1),P(IPA(1),2))
69599         MSTU(33)=1
69600         CALL PYROBO(NS+1,N,THE,PHI,0D0,0D0,0D0)
69601       ELSEIF(NPA.EQ.2) THEN
69602         BEX=PS(1)/PS(4)
69603         BEY=PS(2)/PS(4)
69604         BEZ=PS(3)/PS(4)
69605         GA=PS(4)/PS(5)
69606         GABEP=GA*(GA*(BEX*P(IPA(1),1)+BEY*P(IPA(1),2)+BEZ*P(IPA(1),3))
69607      &  /(1D0+GA)-P(IPA(1),4))
69608         THE=PYANGL(P(IPA(1),3)+GABEP*BEZ,SQRT((P(IPA(1),1)
69609      &  +GABEP*BEX)**2+(P(IPA(1),2)+GABEP*BEY)**2))
69610         PHI=PYANGL(P(IPA(1),1)+GABEP*BEX,P(IPA(1),2)+GABEP*BEY)
69611         MSTU(33)=1
69612         CALL PYROBO(NS+1,N,THE,PHI,BEX,BEY,BEZ)
69613       ELSE
69614         CALL PYROBO(IPA(1),IPA(NPA),0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),
69615      &  PS(3)/PS(4))
69616         MSTU(33)=1
69617         CALL PYROBO(NS+1,N,0D0,0D0,PS(1)/PS(4),PS(2)/PS(4),PS(3)/PS(4))
69618       ENDIF
69619  
69620 C...Decay vertex of shower.
69621       DO 630 I=NS+1,N
69622         DO 620 J=1,5
69623           V(I,J)=V(IP1,J)
69624   620   CONTINUE
69625   630 CONTINUE
69626  
69627 C...Delete trivial shower, else connect initiators.
69628       IF(N.LE.NS+NPA+IIM) THEN
69629         N=NS
69630       ELSE
69631         DO 640 IP=1,NPA
69632           K(IPA(IP),1)=14
69633           K(IPA(IP),4)=K(IPA(IP),4)+NS+IIM+IP
69634           K(IPA(IP),5)=K(IPA(IP),5)+NS+IIM+IP
69635           K(NS+IIM+IP,3)=IPA(IP)
69636           IF(IIM.EQ.1.AND.MSTU(16).NE.2) K(NS+IIM+IP,3)=NS+1
69637           IF(K(NS+IIM+IP,1).NE.1) THEN
69638             K(NS+IIM+IP,4)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,4)
69639             K(NS+IIM+IP,5)=MSTU(5)*IPA(IP)+K(NS+IIM+IP,5)
69640           ENDIF
69641   640   CONTINUE
69642       ENDIF
69643  
69644       RETURN
69645       END
69646  
69647 C*********************************************************************
69648  
69649 C...PYPTFS
69650 C...Generates pT-ordered timelike final-state parton showers.
69651  
69652 C...MODE defines how to find radiators and recoilers.
69653 C... = 0 : based on colour flow between undecayed partons.
69654 C... = 1 : for IPART <= NPARTD only consider primary partons,
69655 C...       whether decayed or not; else as above.
69656 C... = 2 : based on common history, whether decayed or not.
69657 C... = 3 : use (or create) MCT color information to shower partons
69658  
69659       SUBROUTINE PYPTFS(MODE,PTMAX,PTMIN,PTGEN)
69660  
69661 C...Double precision and integer declarations.
69662       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
69663       IMPLICIT INTEGER(I-N)
69664       INTEGER PYK,PYCHGE,PYCOMP
69665 C...Parameter statement to help give large particle numbers.
69666       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
69667      &KEXCIT=4000000,KDIMEN=5000000)
69668 C...Parameter statement for maximum size of showers.
69669       PARAMETER (MAXNUR=1000)
69670 C...Commonblocks.
69671       COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR)
69672       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
69673       COMMON/PYCTAG/NCT,MCT(4000,2)
69674       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
69675       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
69676       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
69677       COMMON/PYINT1/MINT(400),VINT(400)
69678       SAVE /PYPART/,/PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYPARS/,
69679      &/PYINT1/
69680 C...Local arrays.
69681       DIMENSION IPOS(2*MAXNUR),IREC(2*MAXNUR),IFLG(2*MAXNUR),
69682      &ISCOL(2*MAXNUR),ISCHG(2*MAXNUR),PTSCA(2*MAXNUR),IMESAV(2*MAXNUR),
69683      &PT2SAV(2*MAXNUR),ZSAV(2*MAXNUR),SHTSAV(2*MAXNUR),
69684      &MESYS(MAXNUR,0:2),PSUM(5),DPT(5,4)
69685 C...Statement functions.
69686       SHAT(I,J)=(P(I,4)+P(J,4))**2-(P(I,1)+P(J,1))**2-
69687      &(P(I,2)+P(J,2))**2-(P(I,3)+P(J,3))**2
69688  
69689 C...Initial values. Check that valid system.
69690       PTGEN=0D0
69691       IF(MSTJ(41).NE.1.AND.MSTJ(41).NE.2.AND.MSTJ(41).NE.11.AND.
69692      &MSTJ(41).NE.12) RETURN
69693       IF(NPART.LE.0) THEN
69694         CALL PYERRM(2,'(PYPTFS:) showering system too small')
69695         RETURN
69696       ENDIF
69697       PT2CMX=PTMAX**2
69698       IORD=1
69699  
69700 C...Mass thresholds and Lambda for QCD evolution.
69701       PMB=PMAS(5,1)
69702       PMC=PMAS(4,1)
69703       ALAM5=PARJ(81)
69704       ALAM4=ALAM5*(PMB/ALAM5)**(2D0/25D0)
69705       ALAM3=ALAM4*(PMC/ALAM4)**(2D0/27D0)
69706       PMBS=PMB**2
69707       PMCS=PMC**2
69708       ALAM5S=ALAM5**2
69709       ALAM4S=ALAM4**2
69710       ALAM3S=ALAM3**2
69711  
69712 C...Cutoff scale for QCD evolution. Starting pT2.
69713       NFLAV=MAX(0,MIN(5,MSTJ(45)))
69714       PT0C=0.5D0*PARJ(82)
69715       PT2CMN=MAX(PTMIN,PT0C,1.1D0*ALAM3)**2
69716  
69717 C...Parameters for QED evolution.
69718       AEM2PI=PARU(101)/PARU(2)
69719       PT0EQ=0.5D0*PARJ(83)
69720       PT0EL=0.5D0*PARJ(90)
69721  
69722 C...Reset. Remove irrelevant colour tags.
69723       NEVOL=0
69724       DO 100 J=1,4
69725         PSUM(J)=0D0
69726   100 CONTINUE
69727       DO 110 I=MINT(84)+1,N
69728         IF(K(I,2).GT.0.AND.K(I,2).LT.6) THEN
69729           K(I,5)=0
69730           MCT(I,2)=0
69731         ENDIF
69732         IF(K(I,2).LT.0.AND.K(I,2).GT.-6) THEN
69733           K(I,4)=0
69734           MCT(I,1)=0
69735         ENDIF
69736   110 CONTINUE
69737       NPARTS=NPART
69738  
69739 C...Begin loop to set up showering partons. Sum four-momenta.
69740       DO 230 IP=1,NPART
69741         I=IPART(IP)
69742         IF(MODE.NE.1.OR.I.GT.NPARTD) THEN
69743           IF(K(I,1).GT.10) GOTO 230
69744         ELSEIF(K(I,3).GT.MINT(84)) THEN
69745           IF(K(I,3).GT.MINT(84)+2) GOTO 230
69746         ELSE
69747           IF(K(K(I,3),3).GT.MINT(83)+6) GOTO 230
69748         ENDIF
69749         DO 120 J=1,4
69750           PSUM(J)=PSUM(J)+P(I,J)
69751   120   CONTINUE
69752  
69753 C...Find colour and charge, but skip diquarks.
69754         IF(IABS(K(I,2)).GT.1000.AND.IABS(K(I,2)).LT.10000) GOTO 230
69755         KCOL=ISIGN(KCHG(PYCOMP(K(I,2)),2),K(I,2))
69756         KCHA=ISIGN(KCHG(PYCOMP(K(I,2)),1),K(I,2))
69757  
69758 C...QUARKONIA++
69759         IF (IABS(K(I,2)).GE.9900101.AND.IABS(K(I,2)).LE.9910555) THEN
69760           IF (MSTP(148).GE.1) THEN
69761 C...Temporary: force no radiation from quarkonia since not yet treated 
69762             CALL PYERRM(11,'(PYPTFS:) quarkonia showers not yet in'
69763      &          //' PYPTFS, switched off')
69764             CALL PYGIVE('MSTP(148)=0')
69765           ENDIF
69766           IF (MSTP(148).EQ.0) THEN
69767 C...Skip quarkonia if radiation switched off
69768             GOTO 230
69769           ENDIF
69770         ENDIF
69771 C...QUARKONIA--
69772  
69773 C...Option to switch off radiation from particle KF = MSTJ(39) entirely
69774 C...(only intended for studying the effects of switching such rad on/off)
69775         IF (MSTJ(39).GT.0.AND.IABS(K(I,2)).EQ.MSTJ(39)) THEN
69776           GOTO 230
69777         ENDIF
69778  
69779 C...Either colour or anticolour charge radiates; for gluon both.
69780         DO 180 JSGCOL=1,-1,-2
69781           IF(KCOL.EQ.JSGCOL.OR.KCOL.EQ.2) THEN
69782             JCOL=4+(1-JSGCOL)/2
69783             JCOLR=9-JCOL
69784  
69785 C...Basic info about radiating parton.
69786             NEVOL=NEVOL+1
69787             IPOS(NEVOL)=I
69788             IFLG(NEVOL)=0
69789             ISCOL(NEVOL)=JSGCOL
69790             ISCHG(NEVOL)=0
69791             PTSCA(NEVOL)=PTPART(IP)
69792  
69793 C...Begin search for colour recoiler when MODE = 0 or 1.
69794             IF(MODE.LE.1) THEN
69795 C...Find sister with matching anticolour to the radiating parton.
69796               IROLD=I
69797               IRNEW=K(IROLD,JCOL)/MSTU(5)
69798               MOVE=1
69799  
69800 C...Skip radiation off loose colour ends.
69801   130         IF(IRNEW.EQ.0) THEN
69802                 NEVOL=NEVOL-1
69803                 GOTO 180
69804  
69805 C...Optionally skip radiation on dipole to beam remnant.
69806               ELSEIF(MSTP(72).LE.1.AND.IRNEW.GT.MINT(53)) THEN
69807                 NEVOL=NEVOL-1
69808                 GOTO 180
69809  
69810 C...For now always skip radiation on dipole to junction.
69811               ELSEIF(K(IRNEW,2).EQ.88) THEN
69812                 NEVOL=NEVOL-1
69813                 GOTO 180
69814  
69815 C...For MODE=1: if reached primary then done.
69816               ELSEIF(MODE.EQ.1.AND.IRNEW.GT.MINT(84)+2.AND.
69817      &        IRNEW.LE.NPARTD) THEN
69818  
69819 C...If sister stable and points back then done.
69820               ELSEIF(MOVE.EQ.1.AND.K(IRNEW,JCOLR)/MSTU(5).EQ.IROLD)
69821      &        THEN
69822                 IF(K(IRNEW,1).LT.10) THEN
69823  
69824 C...If sister unstable then go to her daughter.
69825                 ELSE
69826                   IROLD=IRNEW
69827                   IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
69828                   MOVE=2
69829                   GOTO 130
69830                ENDIF
69831  
69832 C...If found mother then look for aunt.
69833               ELSEIF(MOVE.EQ.1.AND.MOD(K(IRNEW,JCOL),MSTU(5)).EQ.
69834      &        IROLD) THEN
69835                 IROLD=IRNEW
69836                 IRNEW=K(IROLD,JCOL)/MSTU(5)
69837                 GOTO 130
69838  
69839 C...If daughter stable then done.
69840               ELSEIF(MOVE.EQ.2.AND.K(IRNEW,JCOLR)/MSTU(5).EQ.IROLD)
69841      &        THEN
69842                 IF(K(IRNEW,1).LT.10) THEN
69843  
69844 C...If daughter unstable then go to granddaughter.
69845                 ELSE
69846                   IROLD=IRNEW
69847                   IRNEW=MOD(K(IRNEW,JCOLR),MSTU(5))
69848                   MOVE=2
69849                   GOTO 130
69850                 ENDIF
69851  
69852 C...If daughter points to another daughter then done or move up.
69853               ELSEIF(MOVE.EQ.2.AND.MOD(K(IRNEW,JCOL),MSTU(5)).EQ.
69854      &        IROLD) THEN
69855                 IF(K(IRNEW,1).LT.10) THEN
69856                 ELSE
69857                   IROLD=IRNEW
69858                   IRNEW=K(IRNEW,JCOL)/MSTU(5)
69859                   MOVE=1
69860                   GOTO 130
69861                 ENDIF
69862               ENDIF
69863  
69864 C...Begin search for colour recoiler when MODE = 2.
69865             ELSEIF (MODE.EQ.2) THEN
69866               IROLD=I
69867               IRNEW=K(IROLD,JCOL)/MSTU(5)
69868   140         IF (IRNEW.LE.0.OR.IRNEW.GT.N) THEN
69869 C...If no color partner found, pick at random among other primaries
69870 C...(e.g., when the color line is traced all the way to the beam)
69871                 ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
69872                 IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
69873               ELSEIF(K(IRNEW,JCOLR)/MSTU(5).NE.IROLD) THEN
69874 C...Step up to mother if radiating parton already branched.
69875                 IF(K(IRNEW,2).EQ.K(IROLD,2)) THEN
69876                   IROLD=IRNEW
69877                   IRNEW=K(IROLD,JCOL)/MSTU(5)
69878                   GOTO 140
69879 C...Pick sister by history if no anticolour available.
69880                 ELSE
69881                   IF(IROLD.GT.1.AND.K(IROLD-1,3).EQ.K(IROLD,3)) THEN
69882                     IRNEW=IROLD-1
69883                   ELSEIF(IROLD.LT.N.AND.K(IROLD+1,3).EQ.K(IROLD,3))
69884      &            THEN
69885                     IRNEW=IROLD+1
69886 C...Last resort: pick at random among other primaries.
69887                   ELSE
69888                     ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
69889                     IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
69890                   ENDIF
69891                 ENDIF
69892               ENDIF
69893 C...Trace down if sister branched.
69894   150         IF(K(IRNEW,1).GT.10) THEN
69895                 IRTMP=MOD(K(IRNEW,JCOLR),MSTU(5))
69896 C...If no correct color-daughter found, swap. 
69897                 IF (IRTMP.EQ.0) THEN 
69898                   JCOL=9-JCOL
69899                   JCOLR=9-JCOLR
69900                   IRTMP=MOD(K(IRNEW,JCOLR),MSTU(5))
69901                 ENDIF
69902                 IRNEW=IRTMP
69903                 GOTO 150
69904               ENDIF
69905             ELSEIF (MODE.EQ.3) THEN
69906 C...The following will add MCT colour tracing for unprepped events
69907 C...If not done, trace Les Houches colour tags for this dipole
69908               JCOLSV=JCOL
69909               IF (MCT(I,JCOL-3).EQ.0) THEN
69910 C...Special end code -1 : trace to color partner or 0, return in IEND
69911                 IEND=-1
69912                 CALL PYCTTR(I,JCOL,IEND)
69913 C...Clean up mother/daughter 'read' tags set by PYCTTR
69914                 JCOL=JCOLSV
69915                 DO 160 IR=1,N
69916                   K(IR,4)=MOD(K(IR,4),MSTU(5)**2)
69917                   K(IR,5)=MOD(K(IR,5),MSTU(5)**2)
69918                   MCT(IR,1)=0
69919                   MCT(IR,2)=0
69920   160           CONTINUE
69921               ELSE
69922                 IEND=0
69923                 DO 170 IR=1,N
69924                   IF (K(IR,1).GT.0.AND.MCT(IR,6-JCOL).EQ.MCT(I,JCOL-3))
69925      &                IEND=IR
69926   170           CONTINUE
69927               ENDIF
69928 C...If no color partner, then we hit beam
69929               IF (IEND.LE.0) THEN
69930 C...For MSTP(72) <= 1, do not allow dipoles stretched to beam to radiate
69931                 IF (MSTP(72).LE.1) THEN
69932                   NEVOL=NEVOL-1
69933                   GOTO 180
69934                 ELSE
69935 C...Else try a random partner
69936                   ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
69937                   IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
69938                 ENDIF
69939               ELSE
69940 C...Else save recoiling colour partner
69941                 IRNEW=IEND
69942               ENDIF
69943  
69944             ENDIF
69945  
69946 C...Now found other end of colour dipole.
69947             IREC(NEVOL)=IRNEW
69948           ENDIF
69949   180   CONTINUE
69950  
69951 C...Also electrical charge may radiate; so far only quarks and leptons.
69952         IF((MSTJ(41).EQ.2.OR.MSTJ(41).EQ.12).AND.KCHA.NE.0.AND.
69953      &  IABS(K(I,2)).LE.18) THEN
69954  
69955 C...Basic info about radiating parton.
69956           NEVOL=NEVOL+1
69957           IPOS(NEVOL)=I
69958           IFLG(NEVOL)=0
69959           ISCOL(NEVOL)=0
69960           ISCHG(NEVOL)=KCHA
69961           PTSCA(NEVOL)=PTPART(IP)
69962  
69963 C...Pick nearest (= smallest invariant mass) charged particle
69964 C...as recoiler when MODE = 0 or 1 (but for latter among primaries).
69965           IF(MODE.LE.1) THEN
69966             IRNEW=0
69967             PM2MIN=VINT(2)
69968             DO 190 IP2=1,NPART+N-MINT(53)
69969               IF(IP2.EQ.IP) GOTO 190
69970               IF(IP2.LE.NPART) THEN
69971                 I2=IPART(IP2)
69972                 IF(MODE.NE.1.OR.I2.GT.NPARTD) THEN
69973                   IF(K(I2,1).GT.10) GOTO 190
69974                 ELSEIF(K(I2,3).GT.MINT(84)) THEN
69975                   IF(K(I2,3).GT.MINT(84)+2) GOTO 190
69976                 ELSE
69977                   IF(K(K(I2,3),3).GT.MINT(83)+6) GOTO 190
69978                 ENDIF
69979               ELSE
69980                 I2=MINT(53)+IP2-NPART
69981               ENDIF
69982               IF(KCHG(PYCOMP(K(I2,2)),1).EQ.0) GOTO 190
69983               PM2INV=(P(I,4)+P(I2,4))**2-(P(I,1)+P(I2,1))**2-
69984      &        (P(I,2)+P(I2,2))**2-(P(I,3)+P(I2,3))**2
69985               IF(PM2INV.LT.PM2MIN) THEN
69986                 IRNEW=I2
69987                 PM2MIN=PM2INV
69988               ENDIF
69989   190       CONTINUE
69990             IF(IRNEW.EQ.0) THEN
69991               NEVOL=NEVOL-1
69992               GOTO 230
69993             ENDIF
69994  
69995 C...Begin search for charge recoiler when MODE = 2.
69996           ELSE
69997             IROLD=I
69998 C...Pick sister by history; step up if parton already branched.
69999   200       IF(K(IROLD,3).GT.0.AND.K(K(IROLD,3),2).EQ.K(IROLD,2)) THEN
70000               IROLD=K(IROLD,3)
70001               GOTO 200
70002             ENDIF
70003             IF(IROLD.GT.1.AND.K(IROLD-1,3).EQ.K(IROLD,3)) THEN
70004               IRNEW=IROLD-1
70005             ELSEIF(IROLD.LT.N.AND.K(IROLD+1,3).EQ.K(IROLD,3)) THEN
70006               IRNEW=IROLD+1
70007 C...Last resort: pick at random among other primaries.
70008             ELSE
70009               ISTEP=MAX(1,MIN(NPART-1,INT(1D0+(NPART-1)*PYR(0))))
70010               IRNEW=IPART(1+MOD(IP+ISTEP-1,NPART))
70011             ENDIF
70012 C...Trace down if sister branched.
70013   210       IF(K(IRNEW,1).GT.10) THEN
70014               DO 220 IR=IRNEW+1,N
70015                 IF(K(IR,3).EQ.IRNEW.AND.K(IR,2).EQ.K(IRNEW,2)) THEN
70016                   IRNEW=IR
70017                   GOTO 210
70018                 ENDIF
70019   220         CONTINUE
70020             ENDIF
70021           ENDIF
70022           IREC(NEVOL)=IRNEW
70023         ENDIF
70024  
70025 C...End loop to set up showering partons. System invariant mass.
70026   230 CONTINUE
70027       IF(NEVOL.LE.0) RETURN
70028       IF (MODE.EQ.3.AND.NEVOL.LE.1) RETURN
70029       PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
70030  
70031 C...Check if 3-jet matrix elements to be used.
70032       M3JC=0
70033       ALPHA=0.5D0
70034       NMESYS=0
70035       IF(MSTJ(47).GE.1) THEN
70036  
70037 C...Identify source: q(1), ~q(2), V(3), S(4), chi(5), ~g(6), unknown(0).
70038         KFSRCE=0
70039         IPART1=K(IPART(1),3)
70040         IPART2=K(IPART(2),3)
70041   240   IF(IPART1.EQ.IPART2.AND.IPART1.GT.0) THEN
70042           KFSRCE=IABS(K(IPART1,2))
70043         ELSEIF(IPART1.GT.IPART2.AND.IPART2.GT.0) THEN
70044           IPART1=K(IPART1,3)
70045           GOTO 240
70046         ELSEIF(IPART2.GT.IPART1.AND.IPART1.GT.0) THEN
70047           IPART2=K(IPART2,3)
70048           GOTO 240
70049         ENDIF
70050         ITYPES=0
70051         IF(KFSRCE.GE.1.AND.KFSRCE.LE.8) ITYPES=1
70052         IF(KFSRCE.GE.KSUSY1+1.AND.KFSRCE.LE.KSUSY1+8) ITYPES=2
70053         IF(KFSRCE.GE.KSUSY2+1.AND.KFSRCE.LE.KSUSY2+8) ITYPES=2
70054         IF(KFSRCE.GE.21.AND.KFSRCE.LE.24) ITYPES=3
70055         IF(KFSRCE.GE.32.AND.KFSRCE.LE.34) ITYPES=3
70056         IF(KFSRCE.EQ.25.OR.(KFSRCE.GE.35.AND.KFSRCE.LE.37)) ITYPES=4
70057         IF(KFSRCE.GE.KSUSY1+22.AND.KFSRCE.LE.KSUSY1+37) ITYPES=5
70058         IF(KFSRCE.EQ.KSUSY1+21) ITYPES=6
70059  
70060 C...Identify two primary showerers.
70061         KFLA1=IABS(K(IPART(1),2))
70062         ITYPE1=0
70063         IF(KFLA1.GE.1.AND.KFLA1.LE.8) ITYPE1=1
70064         IF(KFLA1.GE.KSUSY1+1.AND.KFLA1.LE.KSUSY1+8) ITYPE1=2
70065         IF(KFLA1.GE.KSUSY2+1.AND.KFLA1.LE.KSUSY2+8) ITYPE1=2
70066         IF(KFLA1.GE.21.AND.KFLA1.LE.24) ITYPE1=3
70067         IF(KFLA1.GE.32.AND.KFLA1.LE.34) ITYPE1=3
70068         IF(KFLA1.EQ.25.OR.(KFLA1.GE.35.AND.KFLA1.LE.37)) ITYPE1=4
70069         IF(KFLA1.GE.KSUSY1+22.AND.KFLA1.LE.KSUSY1+37) ITYPE1=5
70070         IF(KFLA1.EQ.KSUSY1+21) ITYPE1=6
70071         KFLA2=IABS(K(IPART(2),2))
70072         ITYPE2=0
70073         IF(KFLA2.GE.1.AND.KFLA2.LE.8) ITYPE2=1
70074         IF(KFLA2.GE.KSUSY1+1.AND.KFLA2.LE.KSUSY1+8) ITYPE2=2
70075         IF(KFLA2.GE.KSUSY2+1.AND.KFLA2.LE.KSUSY2+8) ITYPE2=2
70076         IF(KFLA2.GE.21.AND.KFLA2.LE.24) ITYPE2=3
70077         IF(KFLA2.GE.32.AND.KFLA2.LE.34) ITYPE2=3
70078         IF(KFLA2.EQ.25.OR.(KFLA2.GE.35.AND.KFLA2.LE.37)) ITYPE2=4
70079         IF(KFLA2.GE.KSUSY1+22.AND.KFLA2.LE.KSUSY1+37) ITYPE2=5
70080         IF(KFLA2.EQ.KSUSY1+21) ITYPE2=6
70081  
70082 C...Order of showerers. Presence of gluino.
70083         ITYPMN=MIN(ITYPE1,ITYPE2)
70084         ITYPMX=MAX(ITYPE1,ITYPE2)
70085         IORD=1
70086         IF(ITYPE1.GT.ITYPE2) IORD=2
70087         IGLUI=0
70088         IF(ITYPE1.EQ.6.OR.ITYPE2.EQ.6) IGLUI=1
70089  
70090 C...Require exactly two primary showerers for ME corrections.
70091         NPRIM=0
70092         IF(IPART1.GT.0) THEN
70093           DO 250 I=1,N
70094             IF(K(I,3).EQ.IPART1.AND.K(I,2).NE.K(IPART1,2)) NPRIM=NPRIM+1
70095   250     CONTINUE
70096         ENDIF
70097         IF(NPRIM.NE.2) THEN
70098  
70099 C...Predetermined and default matrix element kinds.
70100         ELSEIF(MSTJ(38).NE.0) THEN
70101           M3JC=MSTJ(38)
70102           ALPHA=PARJ(80)
70103           MSTJ(38)=0
70104         ELSEIF(MSTJ(47).GE.6) THEN
70105           M3JC=MSTJ(47)
70106         ELSE
70107           ICLASS=1
70108           ICOMBI=4
70109  
70110 C...Vector/axial vector -> q + qbar; q -> q + V.
70111           IF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.(ITYPES.EQ.0.OR.
70112      &    ITYPES.EQ.3)) THEN
70113             ICLASS=2
70114             IF(KFSRCE.EQ.21.OR.KFSRCE.EQ.22) THEN
70115               ICOMBI=1
70116             ELSEIF(KFSRCE.EQ.23.OR.(KFSRCE.EQ.0.AND.
70117      &      K(IPART(1),2)+K(IPART(2),2).EQ.0)) THEN
70118 C...gamma*/Z0: assume e+e- initial state if unknown.
70119               EI=-1D0
70120               IF(KFSRCE.EQ.23) THEN
70121                 IANNFL=IPART1
70122                 IF(K(IANNFL,2).EQ.23) IANNFL=K(IANNFL,3)
70123                 IF(IANNFL.GT.0) THEN
70124                   IF(K(IANNFL,2).EQ.23) IANNFL=K(IANNFL,3)
70125                 ENDIF
70126                 IF(IANNFL.NE.0) THEN
70127                   KANNFL=IABS(K(IANNFL,2))
70128                   IF(KANNFL.GE.1.AND.KANNFL.LE.18) EI=KCHG(KANNFL,1)/3D0
70129                 ENDIF
70130               ENDIF
70131               AI=SIGN(1D0,EI+0.1D0)
70132               VI=AI-4D0*EI*PARU(102)
70133               EF=KCHG(KFLA1,1)/3D0
70134               AF=SIGN(1D0,EF+0.1D0)
70135               VF=AF-4D0*EF*PARU(102)
70136               XWC=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
70137               SH=PSUM(5)**2
70138               SQMZ=PMAS(23,1)**2
70139               SQWZ=PSUM(5)*PMAS(23,2)
70140               SBWZ=1D0/((SH-SQMZ)**2+SQWZ**2)
70141               VECT=EI**2*EF**2+2D0*EI*VI*EF*VF*XWC*SH*(SH-SQMZ)*SBWZ+
70142      &        (VI**2+AI**2)*VF**2*XWC**2*SH**2*SBWZ
70143               AXIV=(VI**2+AI**2)*AF**2*XWC**2*SH**2*SBWZ
70144               ICOMBI=3
70145               ALPHA=VECT/(VECT+AXIV)
70146             ELSEIF(KFSRCE.EQ.24.OR.KFSRCE.EQ.0) THEN
70147               ICOMBI=4
70148             ENDIF
70149 C...For chi -> chi q qbar, use V/A -> q qbar as first approximation.
70150           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.5) THEN
70151             ICLASS=2
70152           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
70153      &    ITYPES.EQ.1)) THEN
70154             ICLASS=3
70155  
70156 C...Scalar/pseudoscalar -> q + qbar; q -> q + S.
70157           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.1.AND.ITYPES.EQ.4) THEN
70158             ICLASS=4
70159             IF(KFSRCE.EQ.25.OR.KFSRCE.EQ.35.OR.KFSRCE.EQ.37) THEN
70160               ICOMBI=1
70161             ELSEIF(KFSRCE.EQ.36) THEN
70162               ICOMBI=2
70163             ENDIF
70164           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
70165      &    ITYPES.EQ.1)) THEN
70166             ICLASS=5
70167  
70168 C...V -> ~q + ~qbar; ~q -> ~q + V; S -> ~q + ~qbar; ~q -> ~q + S.
70169           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
70170      &    ITYPES.EQ.3)) THEN
70171             ICLASS=6
70172           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.3.AND.(ITYPES.EQ.0.OR.
70173      &    ITYPES.EQ.2)) THEN
70174             ICLASS=7
70175           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.4) THEN
70176             ICLASS=8
70177           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.4.AND.(ITYPES.EQ.0.OR.
70178      &    ITYPES.EQ.2)) THEN
70179             ICLASS=9
70180  
70181 C...chi -> q + ~qbar; ~q -> q + chi; q -> ~q + chi.
70182           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.(ITYPES.EQ.0.OR.
70183      &    ITYPES.EQ.5)) THEN
70184             ICLASS=10
70185           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
70186      &    ITYPES.EQ.2)) THEN
70187             ICLASS=11
70188           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.5.AND.(ITYPES.EQ.0.OR.
70189      &    ITYPES.EQ.1)) THEN
70190             ICLASS=12
70191  
70192 C...~g -> q + ~qbar; ~q -> q + ~g; q -> ~q + ~g.
70193           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.2.AND.ITYPES.EQ.6) THEN
70194             ICLASS=13
70195           ELSEIF(ITYPMN.EQ.1.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
70196      &    ITYPES.EQ.2)) THEN
70197             ICLASS=14
70198           ELSEIF(ITYPMN.EQ.2.AND.ITYPMX.EQ.6.AND.(ITYPES.EQ.0.OR.
70199      &    ITYPES.EQ.1)) THEN
70200             ICLASS=15
70201  
70202 C...g -> ~g + ~g (eikonal approximation).
70203           ELSEIF(ITYPMN.EQ.6.AND.ITYPMX.EQ.6.AND.ITYPES.EQ.0) THEN
70204             ICLASS=16
70205           ENDIF
70206           M3JC=5*ICLASS+ICOMBI
70207         ENDIF
70208  
70209 C...Store pair that together define matrix element treatment.
70210         IF(M3JC.NE.0) THEN
70211           NMESYS=1
70212           MESYS(NMESYS,0)=M3JC
70213           MESYS(NMESYS,1)=IPART(1)
70214           MESYS(NMESYS,2)=IPART(2)
70215         ENDIF
70216  
70217 C...Store qqbar or l+l- pairs for QED radiation.
70218         IF(KFLA1.LE.18.AND.KFLA2.LE.18) THEN
70219           NMESYS=NMESYS+1
70220           MESYS(NMESYS,0)=101
70221           IF(K(IPART(1),2)+K(IPART(2),2).EQ.0) MESYS(NMESYS,0)=102
70222           MESYS(NMESYS,1)=IPART(1)
70223           MESYS(NMESYS,2)=IPART(2)
70224         ENDIF
70225  
70226 C...Store other qqbar/l+l- pairs from g/gamma branchings.
70227         DO 290 I1=1,N
70228           IF(K(I1,1).GT.10.OR.IABS(K(I1,2)).GT.18) GOTO 290
70229           I1M=K(I1,3)
70230   260     IF(I1M.GT.0.AND.K(I1M,2).EQ.K(I1,2)) THEN
70231             I1M=K(I1M,3)
70232             GOTO 260
70233           ENDIF
70234 C...Move up this check to avoid out-of-bounds.
70235           IF(I1M.EQ.0) GOTO 290
70236           IF(K(I1M,2).NE.21.AND.K(I1M,2).NE.22) GOTO 290
70237           DO 280 I2=I1+1,N
70238             IF(K(I2,1).GT.10.OR.K(I2,2)+K(I1,2).NE.0) GOTO 280
70239             I2M=K(I2,3)
70240   270       IF(I2M.GT.0.AND.K(I2M,2).EQ.K(I2,2)) THEN
70241               I2M=K(I2M,3)
70242               GOTO 270
70243             ENDIF
70244             IF(I1M.EQ.I2M.AND.I1M.GT.0) THEN
70245               NMESYS=NMESYS+1
70246               MESYS(NMESYS,0)=66
70247               MESYS(NMESYS,1)=I1
70248               MESYS(NMESYS,2)=I2
70249               NMESYS=NMESYS+1
70250               MESYS(NMESYS,0)=102
70251               MESYS(NMESYS,1)=I1
70252               MESYS(NMESYS,2)=I2
70253             ENDIF
70254   280     CONTINUE
70255   290   CONTINUE
70256       ENDIF
70257  
70258 C..Loopback point for counting number of emissions.
70259       NGEN=0
70260   300 NGEN=NGEN+1
70261  
70262 C...Begin loop to evolve all existing partons, if required.
70263   310 IMX=0
70264       PT2MX=0D0
70265       DO 380 IEVOL=1,NEVOL
70266         IF(IFLG(IEVOL).EQ.0) THEN
70267  
70268 C...Basic info on radiator and recoil.
70269           I=IPOS(IEVOL)
70270           IR=IREC(IEVOL)
70271           SHT=SHAT(I,IR)
70272           PM2I=P(I,5)**2
70273           PM2R=P(IR,5)**2
70274  
70275 C...Invariant mass of "dipole".Starting value for pT evolution.
70276           SHTCOR=(SQRT(SHT)-P(IR,5))**2-PM2I
70277           PT2=MIN(PT2CMX,0.25D0*SHTCOR,PTSCA(IEVOL)**2)
70278  
70279 C...Case of evolution by QCD branching.
70280           IF(ISCOL(IEVOL).NE.0) THEN
70281  
70282 C...Parton-by-parton maximum scale from initial conditions.
70283           IF(MSTP(72).EQ.0) THEN
70284             DO 320 IPRT=1,NPARTS
70285               IF(IR.EQ.IPART(IPRT)) PT2=MIN(PT2,PTPART(IPRT)**2)
70286   320       CONTINUE
70287           ENDIF
70288  
70289 C...If kinematically impossible then do not evolve.
70290             IF(PT2.LT.PT2CMN) THEN
70291               IFLG(IEVOL)=-1
70292               GOTO 380
70293             ENDIF
70294  
70295 C...Check if part of system for which ME corrections should be applied.
70296             IMESYS=0
70297             DO 330 IME=1,NMESYS
70298               IF((I.EQ.MESYS(IME,1).OR.I.EQ.MESYS(IME,2)).AND.
70299      &        MESYS(IME,0).LT.100) IMESYS=IME
70300   330       CONTINUE
70301  
70302 C...Special flag for colour octet states.
70303 C...MOCT=1: can do gluon splitting g->qqbar; MOCT=2: cannot.
70304             MOCT=0
70305             IF(K(I,2).EQ.21) MOCT=1
70306 C...SUSY gluino
70307             IF(K(I,2).EQ.KSUSY1+21) MOCT=2
70308 C...UED KK gluon
70309             IF(K(I,2).EQ.5100021) MOCT=2
70310 C...QUARKONIA++
70311             IF(MSTP(148).GE.1.AND.IABS(K(I,2)).EQ.9900101.AND.
70312      &          IABS(K(I,2)).LE.9910555) MOCT=2
70313 C...QUARKONIA--
70314  
70315  
70316 C...Upper estimate for matrix element weighting and colour factor.
70317 C...Note that g->gg and g->qqbar is split on two sides = "dipoles".
70318             WTPSGL=2D0
70319             COLFAC=4D0/3D0
70320             IF(MOCT.GE.1) COLFAC=3D0/2D0
70321             IF(IGLUI.EQ.1.AND.IMESYS.EQ.1.AND.MOCT.EQ.0) COLFAC=3D0
70322             WTPSQQ=0.5D0*0.5D0*NFLAV
70323  
70324 C...Determine overestimated z range: switch at c and b masses.
70325   340       IZRG=1
70326             PT2MNE=PT2CMN
70327             B0=27D0/6D0
70328             ALAMS=ALAM3S
70329             IF(PT2.GT.1.01D0*PMCS) THEN
70330               IZRG=2
70331               PT2MNE=PMCS
70332               B0=25D0/6D0
70333               ALAMS=ALAM4S
70334             ENDIF
70335             IF(PT2.GT.1.01D0*PMBS) THEN
70336               IZRG=3
70337               PT2MNE=PMBS
70338               B0=23D0/6D0
70339               ALAMS=ALAM5S
70340             ENDIF
70341             ZMNCUT=0.5D0-SQRT(MAX(0D0,0.25D0-PT2MNE/SHTCOR))
70342             IF(ZMNCUT.LT.1D-8) ZMNCUT=PT2MNE/SHTCOR
70343  
70344 C...Find evolution coefficients for q->qg/g->gg and g->qqbar.
70345             EVEMGL=WTPSGL*COLFAC*LOG(1D0/ZMNCUT-1D0)/B0
70346             EVCOEF=EVEMGL
70347             IF(MOCT.EQ.1) THEN
70348               EVEMQQ=WTPSQQ*(1D0-2D0*ZMNCUT)/B0
70349               EVCOEF=EVCOEF+EVEMQQ
70350             ENDIF
70351  
70352 C...Pick pT2 (in overestimated z range).
70353   350       PT2=ALAMS*(PT2/ALAMS)**(PYR(0)**(1D0/EVCOEF))
70354  
70355 C...Loopback if crossed c/b mass thresholds.
70356             IF(IZRG.EQ.3.AND.PT2.LT.PMBS) THEN
70357               PT2=PMBS
70358               GOTO 340
70359             ENDIF
70360             IF(IZRG.EQ.2.AND.PT2.LT.PMCS) THEN
70361               PT2=PMCS
70362               GOTO 340
70363             ENDIF
70364  
70365 C...Finish if below lower cutoff.
70366             IF(PT2.LT.PT2CMN) THEN
70367               IFLG(IEVOL)=-1
70368               GOTO 380
70369             ENDIF
70370  
70371 C...Pick kind of branching: q->qg/g->gg/X->Xg or g->qqbar.
70372 C...IFLAG=1: gluon emission; IFLAG=2: gluon splitting
70373             IFLAG=1
70374             IF(MOCT.EQ.1.AND.EVEMGL.LT.PYR(0)*EVCOEF) IFLAG=2
70375  
70376 C...Pick z: dz/(1-z) or dz.
70377             IF(IFLAG.EQ.1) THEN
70378               Z=1D0-ZMNCUT*(1D0/ZMNCUT-1D0)**PYR(0)
70379             ELSE
70380               Z=ZMNCUT+PYR(0)*(1D0-2D0*ZMNCUT)
70381             ENDIF
70382  
70383 C...Loopback if outside allowed range for given pT2.
70384             ZMNNOW=0.5D0-SQRT(MAX(0D0,0.25D0-PT2/SHTCOR))
70385             IF(ZMNNOW.LT.1D-8) ZMNNOW=PT2/SHTCOR
70386             IF(Z.LE.ZMNNOW.OR.Z.GE.1D0-ZMNNOW) GOTO 350
70387             PM2=PM2I+PT2/(Z*(1D0-Z))
70388             IF(Z*(1D0-Z).LE.PM2*SHT/(SHT+PM2-PM2R)**2) GOTO 350
70389  
70390 C...No weighting for primary partons; to be done later on.
70391             IF(IMESYS.GT.0) THEN
70392  
70393 C...Weighting of q->qg/X->Xg branching.
70394             ELSEIF(IFLAG.EQ.1.AND.MOCT.NE.1) THEN
70395               IF(1D0+Z**2.LT.WTPSGL*PYR(0)) GOTO 350
70396  
70397 C...Weighting of g->gg branching.
70398             ELSEIF(IFLAG.EQ.1) THEN
70399               IF(1D0+Z**3.LT.WTPSGL*PYR(0)) GOTO 350
70400  
70401 C...Flavour choice and weighting of g->qqbar branching.
70402             ELSE
70403               KFQ=MIN(5,1+INT(NFLAV*PYR(0)))
70404               PMQ=PMAS(KFQ,1)
70405               ROOTQQ=SQRT(MAX(0D0,1D0-4D0*PMQ**2/PM2))
70406               WTME=ROOTQQ*(Z**2+(1D0-Z)**2)
70407               IF(WTME.LT.PYR(0)) GOTO 350
70408               IFLAG=10+KFQ
70409             ENDIF
70410  
70411 C...Case of evolution by QED branching.
70412           ELSEIF(ISCHG(IEVOL).NE.0) THEN
70413  
70414 C...If kinematically impossible then do not evolve.
70415             PT2EMN=PT0EQ**2
70416             IF(IABS(K(I,2)).GT.10) PT2EMN=PT0EL**2
70417             IF(PT2.LT.PT2EMN) THEN
70418               IFLG(IEVOL)=-1
70419               GOTO 380
70420             ENDIF
70421  
70422 C...Check if part of system for which ME corrections should be applied.
70423            IMESYS=0
70424             DO 360 IME=1,NMESYS
70425               IF((I.EQ.MESYS(IME,1).OR.I.EQ.MESYS(IME,2)).AND.
70426      &        MESYS(IME,0).GT.100) IMESYS=IME
70427   360      CONTINUE
70428  
70429 C...Charge. Matrix element weighting factor.
70430             CHG=ISCHG(IEVOL)/3D0
70431             WTPSGA=2D0
70432  
70433 C...Determine overestimated z range. Find evolution coefficient.
70434             ZMNCUT=0.5D0-SQRT(MAX(0D0,0.25D0-PT2EMN/SHTCOR))
70435             IF(ZMNCUT.LT.1D-8) ZMNCUT=PT2EMN/SHTCOR
70436             EVCOEF=AEM2PI*CHG**2*WTPSGA*LOG(1D0/ZMNCUT-1D0)
70437  
70438 C...Pick pT2 (in overestimated z range).
70439   370       PT2=PT2*PYR(0)**(1D0/EVCOEF)
70440  
70441 C...Finish if below lower cutoff.
70442             IF(PT2.LT.PT2EMN) THEN
70443               IFLG(IEVOL)=-1
70444               GOTO 380
70445             ENDIF
70446  
70447 C...Pick z: dz/(1-z).
70448             Z=1D0-ZMNCUT*(1D0/ZMNCUT-1D0)**PYR(0)
70449  
70450 C...Loopback if outside allowed range for given pT2.
70451             ZMNNOW=0.5D0-SQRT(MAX(0D0,0.25D0-PT2/SHTCOR))
70452             IF(ZMNNOW.LT.1D-8) ZMNNOW=PT2/SHTCOR
70453             IF(Z.LE.ZMNNOW.OR.Z.GE.1D0-ZMNNOW) GOTO 370
70454             PM2=PM2I+PT2/(Z*(1D0-Z))
70455             IF(Z*(1D0-Z).LE.PM2*SHT/(SHT+PM2-PM2R)**2) GOTO 370
70456  
70457 C...Weighting by branching kernel, except if ME weighting later.
70458             IF(IMESYS.EQ.0) THEN
70459               IF(1D0+Z**2.LT.WTPSGA*PYR(0)) GOTO 370
70460             ENDIF
70461             IFLAG=3
70462           ENDIF
70463  
70464 C...Save acceptable branching.
70465           IFLG(IEVOL)=IFLAG
70466           IMESAV(IEVOL)=IMESYS
70467           PT2SAV(IEVOL)=PT2
70468           ZSAV(IEVOL)=Z
70469           SHTSAV(IEVOL)=SHT
70470         ENDIF
70471  
70472 C...Check if branching has highest pT.
70473         IF(IFLG(IEVOL).GE.1.AND.PT2SAV(IEVOL).GT.PT2MX) THEN
70474           IMX=IEVOL
70475           PT2MX=PT2SAV(IEVOL)
70476         ENDIF
70477   380 CONTINUE
70478  
70479 C...Finished if no more branchings to be done.
70480       IF(IMX.EQ.0) GOTO 500
70481  
70482 C...Restore info on hardest branching to be processed.
70483       I=IPOS(IMX)
70484       IR=IREC(IMX)
70485       KCOL=ISCOL(IMX)
70486       KCHA=ISCHG(IMX)
70487       IMESYS=IMESAV(IMX)
70488       PT2=PT2SAV(IMX)
70489       Z=ZSAV(IMX)
70490       SHT=SHTSAV(IMX)
70491       PM2I=P(I,5)**2
70492       PM2R=P(IR,5)**2
70493       PM2=PM2I+PT2/(Z*(1D0-Z))
70494  
70495 C...Special flag for colour octet states.
70496       MOCT=0
70497       IF(K(I,2).EQ.21) MOCT=1
70498       IF(K(I,2).EQ.KSUSY1+21) MOCT=2
70499       IF(K(I,2).EQ.5100021) MOCT=2
70500 C...QUARKONIA++
70501       IF(MSTP(148).GE.1.AND.IABS(K(I,2)).GE.9900101.AND.
70502      &    IABS(K(I,2)).LE.9910555) MOCT=2
70503 C...QUARKONIA--
70504  
70505 C...Restore further info for g->qqbar branching.
70506       KFQ=0
70507       IF(IFLG(IMX).GT.10) THEN
70508         KFQ=IFLG(IMX)-10
70509         PMQ=PMAS(KFQ,1)
70510         ROOTQQ=SQRT(MAX(0D0,1D0-4D0*PMQ**2/PM2))
70511       ENDIF
70512  
70513 C...For branching g include azimuthal asymmetries from polarization.
70514       ASYPOL=0D0
70515       IF(MOCT.EQ.1.AND.MOD(MSTJ(46),2).EQ.1) THEN
70516 C...Trace grandmother via intermediate recoil copies.
70517         KFGM=0
70518         IM=I
70519   390   IF(K(IM,3).NE.K(IM-1,3).AND.K(IM,3).NE.K(IM+1,3).AND.
70520      &  K(IM,3).GT.0) THEN
70521           IM=K(IM,3)
70522           IF(IM.GT.MINT(84)) GOTO 390
70523         ENDIF
70524         IGM=K(IM,3)
70525         IF(IGM.GT.MINT(84).AND.IGM.LT.IM.AND.IM.LE.I)
70526      &  KFGM=IABS(K(IGM,2))
70527 C...Define approximate energy sharing by identifying aunt.
70528         IAU=IM+1
70529         IF(IAU.GT.N-3.OR.K(IAU,3).NE.IGM) IAU=IM-1
70530         IF(KFGM.NE.0.AND.(KFGM.LE.6.OR.KFGM.EQ.21)) THEN
70531           ZOLD=P(IM,4)/(P(IM,4)+P(IAU,4))
70532 C...Coefficient from gluon production.
70533           IF(KFGM.LE.6) THEN
70534             ASYPOL=2D0*(1D0-ZOLD)/(1D0+(1D0-ZOLD)**2)
70535           ELSE
70536             ASYPOL=((1D0-ZOLD)/(1D0-ZOLD*(1D0-ZOLD)))**2
70537           ENDIF
70538 C...Coefficient from gluon decay.
70539           IF(KFQ.EQ.0) THEN
70540             ASYPOL=ASYPOL*(Z*(1D0-Z)/(1D0-Z*(1D0-Z)))**2
70541           ELSE
70542             ASYPOL=-ASYPOL*2D0*Z*(1D0-Z)/(1D0-2D0*Z*(1D0-Z))
70543           ENDIF
70544         ENDIF
70545       ENDIF
70546  
70547 C...Create new slots for branching products and recoil.
70548       INEW=N+1
70549       IGNEW=N+2
70550       IRNEW=N+3
70551       N=N+3
70552  
70553 C...Set status, flavour and mother of new ones.
70554       K(INEW,1)=K(I,1)
70555       K(IGNEW,1)=3
70556       IF(KCHA.NE.0)  K(IGNEW,1)=1
70557       K(IRNEW,1)=K(IR,1)
70558       IF(KFQ.EQ.0) THEN
70559         K(INEW,2)=K(I,2)
70560         K(IGNEW,2)=21
70561         IF(KCHA.NE.0)  K(IGNEW,2)=22
70562       ELSE
70563         K(INEW,2)=-ISIGN(KFQ,KCOL)
70564         K(IGNEW,2)=-K(INEW,2)
70565       ENDIF
70566       K(IRNEW,2)=K(IR,2)
70567       K(INEW,3)=I
70568       K(IGNEW,3)=I
70569       K(IRNEW,3)=IR
70570  
70571 C...Find rest frame and angles of branching+recoil.
70572       DO 400 J=1,5
70573         P(INEW,J)=P(I,J)
70574         P(IGNEW,J)=0D0
70575         P(IRNEW,J)=P(IR,J)
70576   400 CONTINUE
70577       BETAX=(P(INEW,1)+P(IRNEW,1))/(P(INEW,4)+P(IRNEW,4))
70578       BETAY=(P(INEW,2)+P(IRNEW,2))/(P(INEW,4)+P(IRNEW,4))
70579       BETAZ=(P(INEW,3)+P(IRNEW,3))/(P(INEW,4)+P(IRNEW,4))
70580       CALL PYROBO(INEW,IRNEW,0D0,0D0,-BETAX,-BETAY,-BETAZ)
70581       PHI=PYANGL(P(INEW,1),P(INEW,2))
70582       THETA=PYANGL(P(INEW,3),SQRT(P(INEW,1)**2+P(INEW,2)**2))
70583  
70584 C...Derive kinematics of branching: generics (like g->gg).
70585       DO 410 J=1,4
70586         P(INEW,J)=0D0
70587         P(IRNEW,J)=0D0
70588   410 CONTINUE
70589       PEM=0.5D0*(SHT+PM2-PM2R)/SQRT(SHT)
70590       PZM=0.5D0*SQRT(MAX(0D0,(SHT-PM2-PM2R)**2-4D0*PM2*PM2R)/SHT)
70591       PT2COR=PM2*(PEM**2*Z*(1D0-Z)-0.25D0*PM2)/PZM**2
70592       PTCOR=SQRT(MAX(0D0,PT2COR))
70593       PZN=(PEM**2*Z-0.5D0*PM2)/PZM
70594       PZG=(PEM**2*(1D0-Z)-0.5D0*PM2)/PZM
70595 C...Specific kinematics reduction for q->qg with m_q > 0.
70596       IF(MOCT.NE.1) THEN
70597         PTCOR=(1D0-PM2I/PM2)*PTCOR
70598         PZN=PZN+PM2I*PZG/PM2
70599         PZG=(1D0-PM2I/PM2)*PZG
70600 C...Specific kinematics reduction for g->qqbar with m_q > 0.
70601       ELSEIF(KFQ.NE.0) THEN
70602         P(INEW,5)=PMQ
70603         P(IGNEW,5)=PMQ
70604         PTCOR=ROOTQQ*PTCOR
70605         PZN=0.5D0*((1D0+ROOTQQ)*PZN+(1D0-ROOTQQ)*PZG)
70606         PZG=PZM-PZN
70607       ENDIF
70608  
70609 C...Pick phi and construct kinematics of branching.
70610   420 PHIROT=PARU(2)*PYR(0)
70611       P(INEW,1)=PTCOR*COS(PHIROT)
70612       P(INEW,2)=PTCOR*SIN(PHIROT)
70613       P(INEW,3)=PZN
70614       P(INEW,4)=SQRT(PTCOR**2+P(INEW,3)**2+P(INEW,5)**2)
70615       P(IGNEW,1)=-P(INEW,1)
70616       P(IGNEW,2)=-P(INEW,2)
70617       P(IGNEW,3)=PZG
70618       P(IGNEW,4)=SQRT(PTCOR**2+P(IGNEW,3)**2+P(IGNEW,5)**2)
70619       P(IRNEW,1)=0D0
70620       P(IRNEW,2)=0D0
70621       P(IRNEW,3)=-PZM
70622       P(IRNEW,4)=0.5D0*(SHT+PM2R-PM2)/SQRT(SHT)
70623  
70624 C...Boost branching system to lab frame.
70625       CALL PYROBO(INEW,IRNEW,THETA,PHI,BETAX,BETAY,BETAZ)
70626  
70627 C...Renew choice of phi angle according to polarization asymmetry.
70628       IF(ABS(ASYPOL).GT.1D-3) THEN
70629         DO 430 J=1,3
70630           DPT(1,J)=P(I,J)
70631           DPT(2,J)=P(IAU,J)
70632           DPT(3,J)=P(INEW,J)
70633   430   CONTINUE
70634         DPMA=DPT(1,1)*DPT(2,1)+DPT(1,2)*DPT(2,2)+DPT(1,3)*DPT(2,3)
70635         DPMD=DPT(1,1)*DPT(3,1)+DPT(1,2)*DPT(3,2)+DPT(1,3)*DPT(3,3)
70636         DPMM=DPT(1,1)**2+DPT(1,2)**2+DPT(1,3)**2
70637         DO 440 J=1,3
70638           DPT(4,J)=DPT(2,J)-DPMA*DPT(1,J)/MAX(1D-10,DPMM)
70639           DPT(5,J)=DPT(3,J)-DPMD*DPT(1,J)/MAX(1D-10,DPMM)
70640   440   CONTINUE
70641         DPT(4,4)=SQRT(DPT(4,1)**2+DPT(4,2)**2+DPT(4,3)**2)
70642         DPT(5,4)=SQRT(DPT(5,1)**2+DPT(5,2)**2+DPT(5,3)**2)
70643         IF(MIN(DPT(4,4),DPT(5,4)).GT.0.1D0*PARJ(82)) THEN
70644           CAD=(DPT(4,1)*DPT(5,1)+DPT(4,2)*DPT(5,2)+
70645      &    DPT(4,3)*DPT(5,3))/(DPT(4,4)*DPT(5,4))
70646           IF(1D0+ASYPOL*(2D0*CAD**2-1D0).LT.PYR(0)*(1D0+ABS(ASYPOL)))
70647      &    GOTO 420
70648         ENDIF
70649       ENDIF
70650  
70651 C...Matrix element corrections for primary partons when requested.
70652       IF(IMESYS.GT.0) THEN
70653         M3JC=MESYS(IMESYS,0)
70654  
70655 C...Identify recoiling partner and set up three-body kinematics.
70656         IRP=MESYS(IMESYS,1)
70657         IF(IRP.EQ.I) IRP=MESYS(IMESYS,2)
70658         IF(IRP.EQ.IR) IRP=IRNEW
70659         DO 450 J=1,4
70660           PSUM(J)=P(INEW,J)+P(IRP,J)+P(IGNEW,J)
70661   450   CONTINUE
70662         PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-
70663      &  PSUM(3)**2))
70664         X1=2D0*(PSUM(4)*P(INEW,4)-PSUM(1)*P(INEW,1)-PSUM(2)*P(INEW,2)-
70665      &  PSUM(3)*P(INEW,3))/PSUM(5)**2
70666         X2=2D0*(PSUM(4)*P(IRP,4)-PSUM(1)*P(IRP,1)-PSUM(2)*P(IRP,2)-
70667      &  PSUM(3)*P(IRP,3))/PSUM(5)**2
70668         X3=2D0-X1-X2
70669         R1ME=P(INEW,5)/PSUM(5)
70670         R2ME=P(IRP,5)/PSUM(5)
70671  
70672 C...Matrix elements for gluon emission.
70673         IF(M3JC.LT.100) THEN
70674  
70675 C...Call ME, with right order important for two inequivalent showerers.
70676           IF(MESYS(IMESYS,IORD).EQ.I) THEN
70677             WME=PYMAEL(M3JC,X1,X2,R1ME,R2ME,ALPHA)
70678           ELSE
70679             WME=PYMAEL(M3JC,X2,X1,R2ME,R1ME,ALPHA)
70680           ENDIF
70681  
70682 C...Split up total ME when two radiating partons.
70683           ISPRAD=1
70684           IF((M3JC.GE.16.AND.M3JC.LE.19).OR.(M3JC.GE.26.AND.M3JC.LE.29)
70685      &    .OR.(M3JC.GE.36.AND.M3JC.LE.39).OR.(M3JC.GE.46.AND.M3JC.LE.49)
70686      &    .OR.(M3JC.GE.56.AND.M3JC.LE.64)) ISPRAD=0
70687           IF(ISPRAD.EQ.1) WME=WME*MAX(1D-10,1D0+R1ME**2-R2ME**2-X1)/
70688      &    MAX(1D-10,2D0-X1-X2)
70689  
70690 C...Evaluate shower rate.
70691           WPS=2D0/(MAX(1D-10,2D0-X1-X2)*
70692      &    MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
70693           IF(IGLUI.EQ.1) WPS=(9D0/4D0)*WPS
70694  
70695 C...Matrix elements for photon emission: still rather primitive.
70696         ELSE
70697  
70698 C...For generic charge combination currently only massless expression.
70699           IF(M3JC.EQ.101) THEN
70700             CHG1=KCHG(PYCOMP(K(I,2)),1)*ISIGN(1,K(I,2))/3D0
70701             CHG2=KCHG(PYCOMP(K(IRP,2)),1)*ISIGN(1,K(IRP,2))/3D0
70702             WME=(CHG1*(1D0-X1)/X3-CHG2*(1D0-X2)/X3)**2*(X1**2+X2**2)
70703             WPS=2D0*(CHG1**2*(1D0-X1)/X3+CHG2**2*(1D0-X2)/X3)
70704  
70705 C...For flavour neutral system assume vector source and include masses.
70706           ELSE
70707             WME=PYMAEL(11,X1,X2,R1ME,R2ME,0D0)*MAX(1D-10,
70708      &      1D0+R1ME**2-R2ME**2-X1)/MAX(1D-10,2D0-X1-X2)
70709             WPS=2D0/(MAX(1D-10,2D0-X1-X2)*
70710      &      MAX(1D-10,1D0+R2ME**2-R1ME**2-X2))
70711           ENDIF
70712         ENDIF
70713  
70714 C...Perform weighting with W_ME/W_PS.
70715         IF(WME.LT.PYR(0)*WPS) THEN
70716           N=N-3
70717           IFLG(IMX)=0
70718           PT2CMX=PT2
70719           GOTO 310
70720         ENDIF
70721       ENDIF
70722  
70723 C...Now for sure accepted branching. Save highest pT.
70724       IF(NGEN.EQ.1) PTGEN=SQRT(PT2)
70725  
70726 C...Update status for obsolete ones. Bookkkep the moved original parton
70727 C...and new daughter (arbitrary choice for g->gg or g->qqbar).
70728 C...Do not bookkeep radiated photon, since it cannot radiate further.
70729       K(I,1)=K(I,1)+10
70730       K(IR,1)=K(IR,1)+10
70731       DO 460 IP=1,NPART
70732         IF(IPART(IP).EQ.I) IPART(IP)=INEW
70733         IF(IPART(IP).EQ.IR) IPART(IP)=IRNEW
70734   460 CONTINUE
70735       IF(KCHA.EQ.0) THEN
70736         NPART=NPART+1
70737         IPART(NPART)=IGNEW
70738       ENDIF
70739  
70740 C...Initialize colour flow of branching.
70741 C...Use both old and new style colour tags for flexibility.
70742       K(INEW,4)=0
70743       K(IGNEW,4)=0
70744       K(INEW,5)=0
70745       K(IGNEW,5)=0
70746       JCOLP=4+(1-KCOL)/2
70747       JCOLN=9-JCOLP
70748       MCT(INEW,1)=0
70749       MCT(INEW,2)=0
70750       MCT(IGNEW,1)=0
70751       MCT(IGNEW,2)=0
70752       MCT(IRNEW,1)=0
70753       MCT(IRNEW,2)=0
70754  
70755 C...Trivial colour flow for l->lgamma and q->qgamma.
70756       IF(IABS(KCHA).EQ.3) THEN
70757         K(I,4)=INEW
70758         K(I,5)=IGNEW
70759       ELSEIF(KCHA.NE.0) THEN
70760         IF(K(I,4).NE.0) THEN
70761           K(I,4)=K(I,4)+INEW
70762           K(INEW,4)=MSTU(5)*I
70763           MCT(INEW,1)=MCT(I,1)
70764         ENDIF
70765         IF(K(I,5).NE.0) THEN
70766           K(I,5)=K(I,5)+INEW
70767           K(INEW,5)=MSTU(5)*I
70768           MCT(INEW,2)=MCT(I,2)
70769         ENDIF
70770  
70771 C...Set colour flow for q->qg and g->gg.
70772       ELSEIF(KFQ.EQ.0) THEN
70773         K(I,JCOLP)=K(I,JCOLP)+IGNEW
70774         K(IGNEW,JCOLP)=MSTU(5)*I
70775         K(INEW,JCOLP)=MSTU(5)*IGNEW
70776         K(IGNEW,JCOLN)=MSTU(5)*INEW
70777         MCT(IGNEW,JCOLP-3)=MCT(I,JCOLP-3)
70778         NCT=NCT+1
70779         MCT(INEW,JCOLP-3)=NCT
70780         MCT(IGNEW,JCOLN-3)=NCT
70781         IF(MOCT.GE.1) THEN
70782           K(I,JCOLN)=K(I,JCOLN)+INEW
70783           K(INEW,JCOLN)=MSTU(5)*I
70784           MCT(INEW,JCOLN-3)=MCT(I,JCOLN-3)
70785         ENDIF
70786  
70787 C...Set colour flow for g->qqbar.
70788       ELSE
70789         K(I,JCOLN)=K(I,JCOLN)+INEW
70790         K(INEW,JCOLN)=MSTU(5)*I
70791         K(I,JCOLP)=K(I,JCOLP)+IGNEW
70792         K(IGNEW,JCOLP)=MSTU(5)*I
70793         MCT(INEW,JCOLN-3)=MCT(I,JCOLN-3)
70794         MCT(IGNEW,JCOLP-3)=MCT(I,JCOLP-3)
70795       ENDIF
70796  
70797 C...Daughter info for colourless recoiling parton.
70798       IF(K(IR,4).EQ.0.AND.K(IR,5).EQ.0) THEN
70799         K(IR,4)=IRNEW
70800         K(IR,5)=IRNEW
70801         K(IRNEW,4)=0
70802         K(IRNEW,5)=0
70803  
70804 C...Colour of recoiling parton sails through unchanged.
70805       ELSE
70806         IF(K(IR,4).NE.0) THEN
70807           K(IR,4)=K(IR,4)+IRNEW
70808           K(IRNEW,4)=MSTU(5)*IR
70809           MCT(IRNEW,1)=MCT(IR,1)
70810         ENDIF
70811         IF(K(IR,5).NE.0) THEN
70812           K(IR,5)=K(IR,5)+IRNEW
70813           K(IRNEW,5)=MSTU(5)*IR
70814           MCT(IRNEW,2)=MCT(IR,2)
70815         ENDIF
70816       ENDIF
70817  
70818 C...Vertex information trivial.
70819       DO 470 J=1,5
70820         V(INEW,J)=V(I,J)
70821         V(IGNEW,J)=V(I,J)
70822         V(IRNEW,J)=V(IR,J)
70823   470 CONTINUE
70824  
70825 C...Update list of old radiators.
70826         DO 480 IEVOL=1,NEVOL
70827           IF(IPOS(IEVOL).EQ.I.AND.IREC(IEVOL).EQ.IR) THEN
70828             IPOS(IEVOL)=INEW
70829             IF(KCOL.NE.0.AND.ISCOL(IEVOL).EQ.KCOL) IPOS(IEVOL)=IGNEW
70830             IREC(IEVOL)=IRNEW
70831             IFLG(IEVOL)=0
70832           ELSEIF(IPOS(IEVOL).EQ.I) THEN
70833             IPOS(IEVOL)=INEW
70834             IFLG(IEVOL)=0
70835           ELSEIF(IPOS(IEVOL).EQ.IR.AND.IREC(IEVOL).EQ.I) THEN
70836             IPOS(IEVOL)=IRNEW
70837             IREC(IEVOL)=INEW
70838             IF(KCOL.NE.0.AND.ISCOL(IEVOL).NE.KCOL) IREC(IEVOL)=IGNEW
70839             IFLG(IEVOL)=0
70840           ELSEIF(IPOS(IEVOL).EQ.IR) THEN
70841             IPOS(IEVOL)=IRNEW
70842             IFLG(IEVOL)=0
70843           ENDIF
70844 C...Update links of old connected partons.
70845           IF(IREC(IEVOL).EQ.I) THEN
70846             IREC(IEVOL)=INEW
70847             IFLG(IEVOL)=0
70848           ELSEIF(IREC(IEVOL).EQ.IR) THEN
70849             IREC(IEVOL)=IRNEW
70850             IFLG(IEVOL)=0
70851           ENDIF
70852   480   CONTINUE
70853  
70854 C...q->qg or g->gg: create new gluon radiators.
70855       IF(KCOL.NE.0.AND.KFQ.EQ.0) THEN
70856         NEVOL=NEVOL+1
70857         IPOS(NEVOL)=INEW
70858         IREC(NEVOL)=IGNEW
70859         IFLG(NEVOL)=0
70860         ISCOL(NEVOL)=KCOL
70861         ISCHG(NEVOL)=0
70862         PTSCA(NEVOL)=SQRT(PT2)
70863         NEVOL=NEVOL+1
70864         IPOS(NEVOL)=IGNEW
70865         IREC(NEVOL)=INEW
70866         IFLG(NEVOL)=0
70867         ISCOL(NEVOL)=-KCOL
70868         ISCHG(NEVOL)=0
70869         PTSCA(NEVOL)=PTSCA(NEVOL-1)
70870       ENDIF
70871  
70872 C...Update matrix elements parton list and add new for g/gamma->qqbar.
70873       DO 490 IME=1,NMESYS
70874         IF(MESYS(IME,1).EQ.I) MESYS(IME,1)=INEW
70875         IF(MESYS(IME,2).EQ.I) MESYS(IME,2)=INEW
70876         IF(MESYS(IME,1).EQ.IR) MESYS(IME,1)=IRNEW
70877         IF(MESYS(IME,2).EQ.IR) MESYS(IME,2)=IRNEW
70878   490 CONTINUE
70879       IF(KFQ.NE.0) THEN
70880         NMESYS=NMESYS+1
70881         MESYS(NMESYS,0)=66
70882         MESYS(NMESYS,1)=INEW
70883         MESYS(NMESYS,2)=IGNEW
70884         NMESYS=NMESYS+1
70885         MESYS(NMESYS,0)=102
70886         MESYS(NMESYS,1)=INEW
70887         MESYS(NMESYS,2)=IGNEW
70888       ENDIF
70889  
70890 C...Global statistics.
70891       MINT(353)=MINT(353)+1
70892       VINT(353)=VINT(353)+PTCOR
70893       IF (MINT(353).EQ.1) VINT(358)=PTCOR
70894  
70895 C...Loopback for more emissions if enough space.
70896       PT2CMX=PT2
70897       IF(NPART.LT.MAXNUR-1.AND.NEVOL.LT.2*MAXNUR-2.AND.
70898      &NMESYS.LT.MAXNUR-2.AND.N.LT.MSTU(4)-MSTU(32)-5) THEN
70899         GOTO 300
70900       ELSE
70901         CALL PYERRM(11,'(PYPTFS:) no more memory left for shower')
70902       ENDIF
70903  
70904 C...Done.
70905   500 CONTINUE
70906  
70907       RETURN
70908       END
70909  
70910 C*********************************************************************
70911  
70912 C...PYMAEL
70913 C...Auxiliary to PYSHOW and PYPTFS.
70914 C...Matrix elements for gluon (or photon) emission from
70915 C...a two-body state; to be used by the parton shower routine.
70916 C...Here X_i = 2 E_i/E_cm, R_i = m_i/E_cm and
70917 C...1/sigma_0 d(sigma)/d(x_1)d(x_2) =
70918 C...      = (alpha-strong/2 pi) * CF * PYMAEL,
70919 C...i.e. normalization is such that one recovers the familiar
70920 C...(X1**2+X2**2)/((1-X1)*(1-X2)) for the massless case.
70921 C...Coupling structure:
70922 C...NI =  6- 9 : eikonal soft-gluon expression (spin-independent)
70923 C...   = 11-14 : V -> q qbar (V = vector/axial vector colour singlet)
70924 C...   = 16-19 : q -> q V
70925 C...   = 21-24 : S -> q qbar (S = scalar/pseudoscalar colour singlet)
70926 C...   = 26-29 : q -> q S
70927 C...   = 31-34 : V -> ~q ~qbar  (~q = squark)
70928 C...   = 36-39 : ~q -> ~q V
70929 C...   = 41-44 : S -> ~q ~qbar
70930 C...   = 46-49 : ~q -> ~q S
70931 C...   = 51-54 : chi -> q ~qbar (chi = neutralino/chargino)
70932 C...   = 56-59 : ~q -> q chi
70933 C...   = 61-64 : q -> ~q chi
70934 C...   = 66-69 : ~g -> q ~qbar
70935 C...   = 71-74 : ~q -> q ~g
70936 C...   = 76-79 : q -> ~q ~g
70937 C...   = 81-84 : (9/4)*(eikonal) for gg -> ~g ~g
70938 C...Note that the order of the decay products is important.
70939 C...In each set of four, the variants are ordered as:
70940 C...ICOMBI = 1 : pure non-gamma5, i.e. vector/scalar/...
70941 C...       = 2 : pure gamma5, i.e. axial vector/pseudoscalar/....
70942 C...       = 3 : mixture alpha*(ICOMBI=1) + (1-alpha)*(ICOMBI=2)
70943 C...       = 4 : mixture (ICOMBI=1) +- (ICOMBI=2)
70944  
70945       FUNCTION PYMAEL(NI,X1,X2,R1,R2,ALPHA)
70946  
70947 C...Double precision and integer declarations.
70948       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
70949       IMPLICIT INTEGER(I-N)
70950  
70951 C...Check input values. Return zero outside allowed phase space.
70952       PYMAEL=0D0
70953       IF(X1.LE.2D0*R1.OR.X1.GE.1D0+R1**2-R2**2) RETURN
70954       IF(X2.LE.2D0*R2.OR.X2.GE.1D0+R2**2-R1**2) RETURN
70955       IF(X1+X2.LE.1D0+(R1+R2)**2) RETURN
70956       IF((2D0-2D0*X1-2D0*X2+X1*X2+2D0*R1**2+2D0*R2**2)**2.GE.
70957      &(X1**2-4D0*R1**2)*(X2**2-4D0*R2**2)) RETURN
70958       ALPCOR=MAX(0D0,MIN(1D0,ALPHA))
70959  
70960 C...Initial values and flags.
70961       ICLASS=NI/5
70962       ICOMBI=NI-5*ICLASS
70963       ISSET1=0
70964       ISSET2=0
70965       ISSET4=0
70966  
70967 C... Phase space.
70968       PS=SQRT((1D0-(R1+R2)**2)*(1D0-(R1-R2)**2))
70969  
70970 C...Eikonal expression; also acts as default.
70971       IF(ICLASS.LE.1.OR.ICLASS.GE.17.OR.ICOMBI.EQ.0) THEN
70972         RLO=PS
70973         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
70974           ANUM=0D0
70975         ELSEIF(ICOMBI.EQ.2) THEN
70976           ANUM=(2D0-X1-X2)**2
70977         ELSEIF(ICOMBI.EQ.3) THEN
70978           ANUM=ALPCOR*(2D0-X1-X2)**2
70979         ELSE
70980           ANUM=0.5D0*(2D0-X1-X2)**2
70981         ENDIF
70982         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
70983      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
70984      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
70985      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
70986         ICOMBI=0
70987  
70988 C...V -> q qbar (V = gamma*/Z0/W+-/...).
70989       ELSEIF(ICLASS.EQ.2) THEN
70990         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
70991         RLO1=PS*(2-R1**2-R1**4+6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
70992         RFO1=-1.D0*(3+6*R1**2+R1**4-6*R1*R2+6*R1**3*R2-2*R2**2
70993      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-3*X1+6*R1*R2*X1
70994      &       +2*R2**2*X1+X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)
70995      &       +6*R1*R2*(2-X1-X2)-R2**2*(2-X1-X2)-2*X1*(2-X1-X2)
70996      &       -5*R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
70997      &       -3*(2-X1-X2)**2-3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2
70998      &       +2*X1*(2-X1-X2)**2+(2-X1-X2)**3-X2)/
70999      &       (-1+R1**2-R2**2+X2)**2
71000         RFO1=RFO1-2*(-3+R1**2-6*R1*R2+6*R1**3*R2+3*R2**2-4*R1**2*R2**2
71001      &       +6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
71002      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)+3*R1*R2*(2-X1
71003      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
71004      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2+R1*R2*(2
71005      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
71006      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71007         RFO1=RFO1-1.D0*(-1+2*R1**2+R1**4+6*R1*R2+6*R1**3*R2-2*R2**2
71008      &       -6*R1**2*R2**2+6*R1*R2**3+R2**4-X1-2*R1**2*X1-6*R1*R2*X1
71009      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2
71010      &       -X1-X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*
71011      &       (2-X1-X2)+X2)/(-1-R1**2+R2**2+X1)**2
71012         RFO1=RFO1/2.D0
71013         ISSET1=1
71014         ENDIF
71015         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71016         RLO2=PS*(2-R1**2-R1**4-6*R1*R2-R2**2+2*R1**2*R2**2-R2**4)/2.D0
71017         RFO2=-1*(3+6*R1**2+R1**4+6*R1*R2-6*R1**3*R2-2*R2**2
71018      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-3*X1-6*R1*R2*X1+2*R2**2*X1
71019      &       +X1**2-2*R1**2*X1**2+3*R1**2*(2-X1-X2)-6*R1*R2*(2-X1-X2)
71020      &       -R2**2*(2-X1-X2)-2*X1*(2-X1-X2)-5*R1**2*X1*(2-X1-X2)
71021      &       +R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)-3*(2-X1-X2)**2
71022      &       -3*R1**2*(2-X1-X2)**2+R2**2*(2-X1-X2)**2+2*X1*(2-X1-X2)**2
71023      &       +(2-X1-X2)**3-X2)/(-1+R1**2-R2**2+X2)**2
71024         RFO2=RFO2-2*(-3+R1**2+6*R1*R2-6*R1**3*R2+3*R2**2-4*R1**2*R2**2
71025      &       -6*R1*R2**3+2*X1+3*R1**2*X1+R2**2*X1-X1**2-R1**2*X1**2
71026      &       -R2**2*X1**2+4*(2-X1-X2)+2*R1**2*(2-X1-X2)-3*R1*R2*(2-X1
71027      &       -X2)-R2**2*(2-X1-X2)-3*X1*(2-X1-X2)-2*R1**2*X1*(2-X1-X2)
71028      &       +X1**2*(2-X1-X2)-(2-X1-X2)**2-R1**2*(2-X1-X2)**2-R1*R2*(2
71029      &       -X1-X2)**2+X1*(2-X1-X2)**2)/
71030      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71031         RFO2=RFO2-1*(-1+2*R1**2+R1**4-6*R1*R2-6*R1**3*R2-2*R2**2
71032      &       -6*R1**2*R2**2-6*R1*R2**3+R2**4-X1-2*R1**2*X1+6*R1*R2*X1
71033      &       +8*R2**2*X1+X1**2-2*R2**2*X1**2-R1**2*(2-X1-X2)+R2**2*(2-X1
71034      &       -X2)-R1**2*X1*(2-X1-X2)+R2**2*X1*(2-X1-X2)+X1**2*(2-X1-X2)
71035      &       +X2)/(-1-R1**2+R2**2+X1)**2
71036         RFO2=RFO2/2.D0
71037         ISSET2=1
71038         ENDIF
71039         IF(ICOMBI.EQ.4) THEN
71040         RLO4=PS*(2D0-R1**2-R1**4-R2**2+2D0*R1**2*R2**2-R2**4)/2D0
71041         RFO4=(1-R1**4+6*R1**2*R2**2-R2**4+X1+3*R1**2*X1-9*R2**2*X1
71042      &       -3*X1**2-R1**2*X1**2+3*R2**2*X1**2+X1**3-X2-R1**2*X2
71043      &       +R2**2*X2-R1**2*X1*X2+R2**2*X1*X2+X1**2*X2)/
71044      &       (-1-R1**2+R2**2+X1)**2
71045         RFO4=RFO4
71046      &       -2*(1+R1**2+R2**2-4*R1**2*R2**2+R1**2*X1+2*R2**2*X1-X1**2
71047      &       -R2**2*X1**2+2*R1**2*X2+R2**2*X2-3*X1*X2+X1**2*X2-X2**2
71048      &       -R1**2*X2**2+X1*X2**2)/
71049      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71050         RFO4=RFO4+(1-R1**4+6*R1**2*R2**2-R2**4-X1+R1**2*X1-R2**2*X1+X2
71051      &       -9*R1**2*X2+3*R2**2*X2+R1**2*X1*X2-R2**2*X1*X2-3*X2**2
71052      &       +3*R1**2*X2**2-R2**2*X2**2+X1*X2**2+X2**3)/
71053      &       (-1+R1**2-R2**2+X2)**2
71054         RFO4=RFO4/2.D0
71055         ISSET4=1
71056         ENDIF
71057  
71058 C...q -> q V.
71059       ELSEIF(ICLASS.EQ.3) THEN
71060         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71061         RLO1=PS*(1D0-2D0*R1**2+R1**4+R2**2-6D0*R1*R2**2
71062      &        +R1**2*R2**2-2D0*R2**4)
71063         RFO1=2*(-1+R1-2*R1**2+2*R1**3-R1**4+R1**5-R2**2+R1*R2**2
71064      &       -5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4+2*X1-2*R1*X1
71065      &       +2*R1**2*X1-2*R1**3*X1+2*R2**2*X1+5*R1*R2**2*X1
71066      &       +R1**2*R2**2*X1+2*R2**4*X1-X1**2+R1*X1**2-R2**2*X1**2+3*X2
71067      &       +4*R1**2*X2+R1**4*X2+2*R2**2*X2+2*R1**2*R2**2*X2-4*X1*X2
71068      &       -2*R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-2*X2**2
71069      &       -2*R1**2*X2**2+X1*X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
71070         RFO1=RFO1+(2*R2**2+6*R1*R2**2-6*R1**2*R2**2+6*R1**3*R2**2
71071      &       +2*R2**4+6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
71072      &       -R1**4*X2-3*R2**2*X2-6*R1*R2**2*X2+9*R1**2*R2**2*X2
71073      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
71074      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
71075         RFO1=RFO1+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4
71076      &       +9*X1+10*R1**2*X1+R1**4*X1-3*R2**2*X1+6*R1*R2**2*X1
71077      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
71078      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2+6*R1*R2**2*X2
71079      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
71080      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2
71081      &       +2*R2**2*X2**2+X1*X2**2)/(-2+X1+X2)**2
71082         ISSET1=1
71083         ENDIF
71084         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71085         RLO2=PS*(1D0-2D0*R1**2+R1**4+R2**2+6D0*R1*R2**2
71086      &        +R1**2*R2**2-2D0*R2**4)
71087         RFO2=2*(1+R1+2*R1**2+2*R1**3+R1**4+R1**5+R2**2+R1*R2**2
71088      &       +5*R1**2*R2**2+R1**3*R2**2-2*R1*R2**4-2*X1-2*R1*X1
71089      &       -2*R1**2*X1-2*R1**3*X1-2*R2**2*X1+5*R1*R2**2*X1
71090      &       -R1**2*R2**2*X1-2*R2**4*X1+X1**2+R1*X1**2+R2**2*X1**2-3*X2
71091      &       -4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2+4*X1*X2
71092      &       +2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2+2*R1**2*X2**2
71093      &       -X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
71094         RFO2=RFO2+(2*R2**2-6*R1*R2**2-6*R1**2*R2**2-6*R1**3*R2**2
71095      &       +2*R2**4-6*R1*R2**4-R2**2*X1+R1**2*R2**2*X1-R2**4*X1+X2
71096      &       -R1**4*X2-3*R2**2*X2+6*R1*R2**2*X2+9*R1**2*R2**2*X2
71097      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
71098      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
71099         RFO2=RFO2+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
71100      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1-6*R1*R2**2*X1
71101      &       +R1**2*R2**2*X1-2*R2**4*X1-6*X1**2-2*R1**2*X1**2+X1**3
71102      &       +7*X2+8*R1**2*X2+R1**4*X2-7*R2**2*X2-6*R1*R2**2*X2
71103      &       +R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
71104      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
71105      &       +X1*X2**2)/(-2+X1+X2)**2
71106         ISSET2=1
71107         ENDIF
71108         IF(ICOMBI.EQ.4) THEN
71109         RLO4=PS*(1.D0-2.D0*R1**2+R1**4+R2**2+R1**2*R2**2-2.D0*R2**4)
71110         RFO4=2*(1+2*R1**2+R1**4+R2**2+5*R1**2*R2**2-2*X1-2*R1**2*X1
71111      &       -2*R2**2*X1-R1**2*R2**2*X1-2*R2**4*X1+X1**2+R2**2*X1**2
71112      &       -3*X2-4*R1**2*X2-R1**4*X2-2*R2**2*X2-2*R1**2*R2**2*X2
71113      &       +4*X1*X2+2*R1**2*X1*X2+R2**2*X1*X2-X1**2*X2+2*X2**2
71114      &       +2*R1**2*X2**2-X1*X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
71115         RFO4=RFO4+(2*R2**2-6*R1**2*R2**2+2*R2**4-R2**2*X1+R1**2*R2**2*X1
71116      &       -R2**4*X1+X2-R1**4*X2-3*R2**2*X2+9*R1**2*R2**2*X2
71117      &       -2*R2**4*X2-X1*X2+R1**2*X1*X2-X2**2-3*R1**2*X2**2
71118      &       +2*R2**2*X2**2+X1*X2**2)/(-1+R1**2-R2**2+X2)**2
71119         RFO4=RFO4+(-4-8*R1**2-4*R1**4+4*R2**2-4*R1**2*R2**2+8*R2**4+9*X1
71120      &       +10*R1**2*X1+R1**4*X1-3*R2**2*X1+R1**2*R2**2*X1-2*R2**4*X1
71121      &       -6*X1**2-2*R1**2*X1**2+X1**3+7*X2+8*R1**2*X2+R1**4*X2
71122      &       -7*R2**2*X2+R1**2*R2**2*X2-2*R2**4*X2-9*X1*X2-3*R1**2*X1*X2
71123      &       +2*R2**2*X1*X2+2*X1**2*X2-3*X2**2-R1**2*X2**2+2*R2**2*X2**2
71124      &       +X1*X2**2)/(2-X1-X2)**2
71125         ISSET4=1
71126         ENDIF
71127  
71128 C...S -> q qbar    (S = h0/H0/A0/H+-/...).
71129       ELSEIF(ICLASS.EQ.4) THEN
71130         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71131         RLO1=PS*(1D0-R1**2-R2**2-2D0*R1*R2)
71132         RFO1=-(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
71133      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
71134      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
71135      &       -2*(R1**2+R1**4-2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3
71136      &       +R2**4-R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2
71137      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71138      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
71139      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
71140      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
71141         ISSET1=1
71142         ENDIF
71143         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71144         RLO2=PS*(1D0-R1**2-R2**2+2D0*R1*R2)
71145         RFO2=-(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
71146      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
71147      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
71148      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
71149      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
71150      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
71151      &       +2*(-R1**2-R1**4-2*R1**3*R2-R2**2+6*R1**2*R2**2
71152      &       -2*R1*R2**3-R2**4+R1**2*X1+R1*R2*X1-2*R2**2*X1
71153      &       -2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
71154      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71155         ISSET2=1
71156         ENDIF
71157         IF(ICOMBI.EQ.4) THEN
71158         RLO4=PS*(1D0-R1**2-R2**2)
71159         RFO4=-(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
71160      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
71161      &       -2*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
71162      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
71163      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71164      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1
71165      &       +X2+3*R1**2*X2-R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
71166         ISSET4=1
71167         ENDIF
71168  
71169 C...q -> q S.
71170       ELSEIF(ICLASS.EQ.5) THEN
71171         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71172         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
71173         RFO1=(4-4*R1**2+4*R2**2-3*X1-2*R1*X1+R1**2*X1-R2**2*X1-5*X2
71174      &       -2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
71175      &       +2*(3-R1-5*R1**2-R1**3+3*R2**2+R1*R2**2-2*X1-R1*X1
71176      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71177      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
71178      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
71179      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71180      &       (-1+R1**2-R2**2+X2)**2
71181         ISSET1=1
71182         ENDIF
71183         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71184         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
71185         RFO2=(4-4*R1**2+4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2
71186      &       +2*R1*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
71187      &       +2*(3+R1-5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1
71188      &       +R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71189      &       (1-R1**2+R2**2-X2)/(-2+X1+X2)
71190      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
71191      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71192      &       (-1+R1**2-R2**2+X2)**2
71193         ISSET2=1
71194         ENDIF
71195         IF(ICOMBI.EQ.4) THEN
71196         RLO4=PS*(1D0+R1**2-R2**2)
71197         RFO4=(4-4*R1**2+4*R2**2-3*X1+R1**2*X1-R2**2*X1-5*X2+R1**2*X2
71198      &       -R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2
71199      &       +2*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2+2*R1**2*X2
71200      &       -R2**2*X2+X1*X2+X2**2)/(1-R1**2+R2**2-X2)/(-2+X1+X2)
71201      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
71202      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
71203         ISSET4=1
71204         ENDIF
71205  
71206 C...V -> ~q ~qbar  (~q = squark).
71207       ELSEIF(ICLASS.EQ.6) THEN
71208         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
71209         RFO1=2D0*3D0+(1+R1**2+R2**2-X1)*(4*R1**2-X1**2)/
71210      &       (-1-R1**2+R2**2+X1)**2
71211      &       -2D0*(-1-3*R1**2-R2**2+X1+X1**2/2+X2-X1*X2/2)/
71212      &       (-1-R1**2+R2**2+X1)
71213      &       +(1+R1**2+R2**2-X2)*(4*R2**2-X2**2)
71214      &       /(-1+R1**2-R2**2+X2)**2
71215      &       -2D0*(-1-R1**2-3*R2**2+X1+X2-X1*X2/2+X2**2/2)/
71216      &       (-1+R1**2-R2**2+X2)
71217      &       -(-4*R1**2-4*R1**4-4*R2**2-8*R1**2*R2**2-4*R2**4+2*X1
71218      &       +6*R1**2*X1+6*R2**2*X1-2*X1**2+2*X2+6*R1**2*X2+6*R2**2*X2
71219      &       -4*X1*X2-2*R1**2*X1*X2-2*R2**2*X1*X2+X1**2*X2-2*X2**2
71220      &       +X1*X2**2)/(-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71221         ISSET1=1
71222  
71223 C...~q -> ~q V.
71224       ELSEIF(ICLASS.EQ.7) THEN
71225         RLO1=PS*(1D0-2D0*R1**2+R1**4-2D0*R2**2-2D0*R1**2*R2**2+R2**4)
71226         RFO1=16*R2**2+8*(4*R2**2+2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2
71227      &       -2*X2**2)/(3*(-1+R1**2-R2**2+X2))+8*(1+R1**2+R2**2-X2)*
71228      &       (4*R2**2-X2**2)/(3*(-1+R1**2-R2**2+X2)**2)+8*(X1+X2)*
71229      &       (-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
71230      &       +2*R1**2*X1+2*R2**2*X1-X1**2+2*X2+2*R1**2*X2+2*R2**2*X2
71231      &       -2*X1*X2-X2**2)/(3*(-2+X1+X2)**2)+8*(-1-R1**2+R2**2-X1)*
71232      &       (2*R2**2*X1+X2+R1**2*X2+R2**2*X2-X1*X2-X2**2)/
71233      &       (3*(-1+R1**2-R2**2+X2)*(-2+X1+X2))+8*(1+2*R1**2+R1**4
71234      &       +2*R2**2-2*R1**2*R2**2+R2**4-2*X1-2*R1**2*X1-4*R2**2*X1
71235      &       +X1**2-3*X2-3*R1**2*X2-3*R2**2*X2+3*X1*X2+2*X2**2)/
71236      &       (3*(-2+X1+X2))
71237         RFO1=3D0*RFO1/8D0
71238         ISSET1=1
71239  
71240 C...S -> ~q ~qbar.
71241       ELSEIF(ICLASS.EQ.8) THEN
71242         RLO1=PS
71243         RFO1=(-1-2*R1**2-R1**4-2*R2**2+2*R1**2*R2**2-R2**4+2*X1
71244      &       +2*R1**2*X1+2*R2**2*X1-X1**2-R2**2*X1**2+2*X2+2*R1**2*X2
71245      &       +2*R2**2*X2-3*X1*X2-R1**2*X1*X2-R2**2*X1*X2+X1**2*X2-X2**2
71246      &       -R1**2*X2**2+X1*X2**2)/
71247      &       (1+R1**2-R2**2-X1)**2/(-1+R1**2-R2**2+X2)**2
71248         RFO1=2D0*RFO1
71249         ISSET1=1
71250  
71251 C...~q -> ~q S.
71252       ELSEIF(ICLASS.EQ.9) THEN
71253         RLO1=PS
71254         RFO1=(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
71255      &       +(1+R1**2-R2**2+X1)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
71256      &       -(X1+X2)/(-2+X1+X2)**2
71257         ISSET1=1
71258  
71259 C...chi -> q ~qbar   (chi = neutralino/chargino).
71260       ELSEIF(ICLASS.EQ.10) THEN
71261         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71262         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
71263         RFO1=(2*R1+X1)*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
71264      &       +2*(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1
71265      &       -R1**2*X1/2-R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
71266      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71267      &       +(2-2*R1-6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1
71268      &       -R2**2*X1-3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71269      &       (-1+R1**2-R2**2+X2)**2
71270         ISSET1=1
71271         ENDIF
71272         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71273         RLO2=PS*(1D0-2D0*R1+R1**2-R2**2)
71274         RFO2=(2*R1-X1)*(1+R1**2+R2**2-X1)/(-1-R1**2+R2**2+X1)**2
71275      &       +2*(-1-R1**2+2*R1**3-R2**2+2*R1*R2**2+3*X1/2-R1*X1
71276      &       -R1**2*X1/2-R2**2*X1/2+X2-R1*X2+R1**2*X2-X1*X2/2)/
71277      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71278      &       +(2+2*R1-6*R1**2+2*R1**3+2*R2**2+2*R1*R2**2-X1+R1**2*X1
71279      &       -R2**2*X1-3*X2-2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71280      &       (-1+R1**2-R2**2+X2)**2
71281         ISSET2=1
71282         ENDIF
71283         IF(ICOMBI.EQ.4) THEN
71284         RLO4=PS*(1+R1**2-R2**2)
71285         RFO4=X1*(-1-R1**2-R2**2+X1)/(-1-R1**2+R2**2+X1)**2
71286      &       +2D0*(-1-R1**2-R2**2+3*X1/2-R1**2*X1/2-R2**2*X1/2
71287      &       +X2+R1**2*X2-X1*X2/2)/
71288      &       (-1-R1**2+R2**2+X1)/(-1+R1**2-R2**2+X2)
71289      &       +(2-6*R1**2+2*R2**2-X1+R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2
71290      &       -R2**2*X2+X1*X2+X2**2)/(-1+R1**2-R2**2+X2)**2
71291         ISSET4=1
71292         ENDIF
71293  
71294 C...~q -> q chi.
71295       ELSEIF(ICLASS.EQ.11) THEN
71296         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71297         RLO1=PS*(1D0-(R1+R2)**2)
71298         RFO1=(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
71299      &       -(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
71300      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
71301      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
71302      &       +(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
71303      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
71304      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
71305         ISSET1=1
71306         ENDIF
71307         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71308         RLO2=PS*(1D0-(R1-R2)**2)
71309         RFO2=(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/
71310      &       (-2+X1+X2)**2
71311      &       -(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
71312      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2
71313      &       -R2**2*X2-X1*X2)/(-1+R1**2-R2**2+X2)**2
71314      &       +(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3+R2**4
71315      &       +X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
71316      &       +X1*X2+X2**2)/(-1+R1**2-R2**2+X2)/(-2+X1+X2)
71317         ISSET2=1
71318         ENDIF
71319         IF(ICOMBI.EQ.4) THEN
71320         RLO4=PS*(1D0-R1**2-R2**2)
71321         RFO4=(1+R1**2+R2**2-X1-X2)*(X1+X2)/(-2+X1+X2)**2
71322      &       -(-1+R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2
71323      &       +3*R1**2*X2-R2**2*X2-X1*X2)/
71324      &       (-1+R1**2-R2**2+X2)**2
71325      &       -(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
71326      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
71327      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
71328         ISSET4=1
71329         ENDIF
71330  
71331 C...q -> ~q chi.
71332       ELSEIF(ICLASS.EQ.12) THEN
71333         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71334         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
71335         RFO1=(2*R2+X2)*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
71336      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1-2*R2*X1+R2**2*X1+X1**2
71337      &       -3*X2-R1**2*X2-2*R2*X2+R2**2*X2+X1*X2)/
71338      &       (-2+X1+X2)**2-2*(-1-R1**2+R2+R1**2*R2-R2**2-R2**3+X1
71339      &       +R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
71340      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
71341         ISSET1=1
71342         END IF
71343         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71344         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
71345         RFO2=(2*R2-X2)*(1+R1**2+R2**2-X2)/(-1+R1**2-R2**2+X2)**2
71346      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1+X1**2
71347      &       -3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
71348      &       (-2+X1+X2)**2-2*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
71349      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
71350      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
71351         ISSET2=1
71352         END IF
71353         IF(ICOMBI.EQ.4) THEN
71354         RLO4=PS*(1D0-R1**2+R2**2)
71355         RFO4=X2*(-1-R1**2-R2**2+X2)/(-1+R1**2-R2**2+X2)**2
71356      &       +(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2
71357      &       -3*X2-R1**2*X2+R2**2*X2+X1*X2)/
71358      &       (-2+X1+X2)**2-2*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2
71359      &       +R1**2*X2-X1*X2/2-X2**2/2)/
71360      &       (2-X1-X2)/(-1+R1**2-R2**2+X2)
71361         ISSET4=1
71362         END IF
71363  
71364 C...~g -> q ~qbar.
71365       ELSEIF(ICLASS.EQ.13) THEN
71366         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71367         RLO1=PS*(1D0+R1**2-R2**2+2D0*R1)
71368         RFO1=4*(2*R1+X1)*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)
71369      &       -(-1-R1**2-2*R1**3-R2**2-2*R1*R2**2+3*X1/2+R1*X1-R1**2*X1/2
71370      &       -R2**2*X1/2+X2+R1*X2+R1**2*X2-X1*X2/2)/(3*(-1-R1**2+R2**2
71371      &       +X1)*(-1+R1**2-R2**2+X2))-3*(-1+R1-R1**2-R1**3-R2**2
71372      &       +R1*R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1*X2+R1**2*X2-X1*X2/2)/
71373      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+3*(4-4*R1**2+4*R2**2-3*X1
71374      &       -2*R1*X1+R1**2*X1-R2**2*X1-5*X2-2*R1*X2+R1**2*X2-R2**2*X2
71375      &       +X1*X2+X2**2)/(-2+X1+X2)**2+3*(3-R1-5*R1**2-R1**3+3*R2**2
71376      &       +R1*R2**2-2*X1-R1*X1+R1**2*X1-4*X2+2*R1**2*X2-R2**2*X2
71377      &       +X1*X2+X2**2)/((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2-2*R1
71378      &       -6*R1**2-2*R1**3+2*R2**2-2*R1*R2**2-X1+R1**2*X1-R2**2*X1
71379      &       -3*X2+2*R1*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71380      &       (3*(-1+R1**2-R2**2+X2)**2)
71381         RFO1=3D0*RFO1/4D0
71382         ISSET1=1
71383         ENDIF
71384         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71385         RLO2=PS*(1D0+R1**2-R2**2-2D0*R1)
71386         RFO2=4*(2*R1-X1)*(1+R1**2+R2**2-X1)/(3*(-1-R1**2+R2**2+X1)**2)
71387      &       -3*(-1-R1-R1**2+R1**3-R2**2-R1*R2**2+2*X1+R2**2*X1-X1**2/2
71388      &       +X2-R1*X2+R1**2*X2-X1*X2/2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
71389      &       +(2+2*R1**2-4*R1**3+2*R2**2-4*R1*R2**2-3*X1+2*R1*X1
71390      &       +R1**2*X1+R2**2*X1-2*X2+2*R1*X2-2*R1**2*X2+X1*X2)/
71391      &       (6*(-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+3*(4-4*R1**2
71392      &       +4*R2**2-3*X1+2*R1*X1+R1**2*X1-R2**2*X1-5*X2+2*R1*X2
71393      &       +R1**2*X2-R2**2*X2+X1*X2+X2**2)/(-2+X1+X2)**2+3*(3+R1
71394      &       -5*R1**2+R1**3+3*R2**2-R1*R2**2-2*X1+R1*X1+R1**2*X1-4*X2
71395      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71396      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+4*(2+2*R1-6*R1**2+2*R1**3
71397      &       +2*R2**2+2*R1*R2**2-X1+R1**2*X1-R2**2*X1-3*X2-2*R1*X2
71398      &       +3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71399      &       (3*(-1+R1**2-R2**2+X2)**2)
71400         RFO2=3D0*RFO2/4D0
71401         ISSET2=1
71402         ENDIF
71403         IF(ICOMBI.EQ.4) THEN
71404         RLO4=PS*(1D0+R1**2-R2**2)
71405         RFO4=8*X1*(-1-R1**2-R2**2+X1)/(3*(-1-R1**2+R2**2+X1)**2)-6*(-1
71406      &       -R1**2-R2**2+2*X1+R2**2*X1-X1**2/2+X2+R1**2*X2-X1*X2/2)/
71407      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+(2+2*R1**2+2*R2**2-3*X1
71408      &       +R1**2*X1+R2**2*X1-2*X2-2*R1**2*X2+X1*X2)/(3*(-1-R1**2
71409      &       +R2**2+X1)*(-1+R1**2-R2**2+X2))+6*(4-4*R1**2+4*R2**2-3*X1
71410      &       +R1**2*X1-R2**2*X1-5*X2+R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71411      &       (-2+X1+X2)**2+6*(3-5*R1**2+3*R2**2-2*X1+R1**2*X1-4*X2
71412      &       +2*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71413      &       ((1-R1**2+R2**2-X2)*(-2+X1+X2))+8*(2-6*R1**2+2*R2**2-X1
71414      &       +R1**2*X1-R2**2*X1-3*X2+3*R1**2*X2-R2**2*X2+X1*X2+X2**2)/
71415      &       (3*(-1+R1**2-R2**2+X2)**2)
71416         RFO4=3D0*RFO4/8D0
71417         ISSET4=1
71418         ENDIF
71419  
71420 C...~q -> q ~g.
71421       ELSEIF(ICLASS.EQ.14) THEN
71422         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71423         RLO1=PS*(1-R1**2-R2**2-2D0*R1*R2)
71424         RFO1=64*(1+R1**2+2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
71425      &       -16*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
71426      &       +R2**4+X1-R1**2*X1+2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
71427      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-16*(R1**2+R1**4
71428      &       -2*R1**3*R2+R2**2-6*R1**2*R2**2-2*R1*R2**3+R2**4
71429      &       -R1**2*X1+R1*R2*X1+2*R2**2*X1+2*R1**2*X2+R1*R2*X2-R2**2*X2
71430      &       -X1*X2)/((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
71431      &       -64*(-1+R1**4-2*R1*R2-2*R1**3*R2-6*R1**2*R2**2-2*R1*R2**3
71432      &       +R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2+2*R1*R2*X2
71433      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
71434      &       +8*(-1+R1**4-2*R1*R2+2*R1**3*R2-2*R2**2-2*R1*R2**3-R2**4
71435      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2-2*R1*R2*X2
71436      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
71437         RFO1=RFO1
71438      &       +8*(-1-2*R1**2-R1**4-2*R1*R2-2*R1**3*R2+2*R1*R2**3+R2**4
71439      &       +X1+R1**2*X1-2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2-2*R2**2*X2
71440      &       +X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
71441         RFO1=9D0*RFO1/64D0
71442         ISSET1=1
71443         ENDIF
71444         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71445         RLO2=PS*(1-R1**2-R2**2+2D0*R1*R2)
71446         RFO2=64*(1+R1**2-2*R1*R2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)
71447      &       -16*(-1+R1**4+2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3
71448      &       +R2**4+X1-R1**2*X1-2*R1*R2*X1+3*R2**2*X1+X2+R1**2*X2
71449      &       -R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2-64*(-1+R1**4
71450      &       +2*R1*R2+2*R1**3*R2-6*R1**2*R2**2+2*R1*R2**3+R2**4+X1
71451      &       -R1**2*X1+R2**2*X1+X2+3*R1**2*X2-2*R1*R2*X2-R2**2*X2
71452      &       -X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)+16*(-R1**2-R1**4
71453      &       -2*R1**3*R2-R2**2+6*R1**2*R2**2-2*R1*R2**3-R2**4+R1**2*X1
71454      &       +R1*R2*X1-2*R2**2*X1-2*R1**2*X2+R1*R2*X2+R2**2*X2+X1*X2)/
71455      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))
71456         RFO2=RFO2
71457      &       +8*(-1+R1**4+2*R1*R2-2*R1**3*R2-2*R2**2+2*R1*R2**3-R2**4
71458      &       -2*R1**2*X1+2*R2**2*X1+X1**2+X2-3*R1**2*X2+2*R1*R2*X2
71459      &       +R2**2*X2+X1*X2)/((-1-R1**2+R2**2+X1)*(-2+X1+X2))
71460      &       +8*(-1-2*R1**2-R1**4+2*R1*R2+2*R1**3*R2-2*R1*R2**3
71461      &       +R2**4+X1+R1**2*X1+2*R1*R2*X1-3*R2**2*X1+2*R1**2*X2
71462      &       -2*R2**2*X2+X1*X2+X2**2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
71463         RFO2=9D0*RFO2/64D0
71464         ISSET2=1
71465         ENDIF
71466         IF(ICOMBI.EQ.4) THEN
71467         RLO4=PS*(1-R1**2-R2**2)
71468         RFO4=128*(1+R1**2+R2**2-X1-X2)*(X1+X2)/(9*(-2+X1+X2)**2)-32*(-1
71469      &       +R1**4-6*R1**2*R2**2+R2**4+X1-R1**2*X1+3*R2**2*X1+X2
71470      &       +R1**2*X2-R2**2*X2-X1*X2)/(-1-R1**2+R2**2+X1)**2
71471      &       -32*(R1**2+R1**4+R2**2-6*R1**2*R2**2+R2**4-R1**2*X1
71472      &       +2*R2**2*X1+2*R1**2*X2-R2**2*X2-X1*X2)/
71473      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))-128*(-1+R1**4
71474      &       -6*R1**2*R2**2+R2**4+X1-R1**2*X1+R2**2*X1+X2+3*R1**2*X2
71475      &       -R2**2*X2-X1*X2)/(9*(-1+R1**2-R2**2+X2)**2)
71476      &       +16*(-1+R1**4-2*R2**2-R2**4-2*R1**2*X1+2*R2**2*X1+X1**2
71477      &       +X2-3*R1**2*X2+R2**2*X2+X1*X2)/
71478      &       ((-1-R1**2+R2**2+X1)*(-2+X1+ X2))
71479         RFO4=RFO4+16*(-1-2*R1**2-R1**4+R2**4+X1+R1**2*X1-3*R2**2*X1
71480      &       +2*R1**2*X2-2*R2**2*X2+X1*X2+X2**2)/
71481      &       (9*(1-R1**2+R2**2-X2)*(-2+X1+X2))
71482         RFO4=9D0*RFO4/128D0
71483         ISSET4=1
71484         ENDIF
71485  
71486 C...q -> ~q ~g.
71487       ELSEIF(ICLASS.EQ.15) THEN
71488         IF(ICOMBI.EQ.1.OR.ICOMBI.EQ.3) THEN
71489         RLO1=PS*(1D0-R1**2+R2**2+2D0*R2)
71490         RFO1=32*(2*R2+X2)*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
71491      &       +8*(-1-R1**2-2*R1**2*R2-R2**2-2*R2**3+X1+R2*X1+R2**2*X1
71492      &       +3*X2/2-R1**2*X2/2+R2*X2-R2**2*X2/2-X1*X2/2)/
71493      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2-2*R2
71494      &       -2*R1**2*R2-6*R2**2-2*R2**3-3*X1-R1**2*X1+2*R2*X1
71495      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
71496      &       (-1-R1**2+R2**2+X1)**2+32*(4+4*R1**2-4*R2**2-5*X1
71497      &       -R1**2*X1-2*R2*X1+R2**2*X1+X1**2-3*X2-R1**2*X2-2*R2*X2
71498      &       +R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
71499         RFO1=RFO1+8*(3+3*R1**2-R2+R1**2*R2-5*R2**2-R2**3-4*X1-R1**2*X1
71500      &       +2*R2**2*X1+X1**2-2*X2-R2*X2+R2**2*X2+X1*X2)/
71501      &       ((-1-R1**2+R2**2+X1)*(2-X1-X2))+8*(-1-R1**2+R2+R1**2*R2
71502      &       -R2**2-R2**3+X1+R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
71503      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
71504         RFO1=9D0*RFO1/32D0
71505         ISSET1=1
71506         END IF
71507         IF(ICOMBI.EQ.2.OR.ICOMBI.EQ.3) THEN
71508         RLO2=PS*(1D0-R1**2+R2**2-2D0*R2)
71509         RFO2=32*(2*R2-X2)*(1+R1**2+R2**2-X2)/(9*(-1+R1**2-R2**2+X2)**2)
71510      &       +8*(-1-R1**2+2*R1**2*R2-R2**2+2*R2**3+X1-R2*X1+R2**2*X1
71511      &       +3*X2/2-R1**2*X2/2-R2*X2-R2**2*X2/2-X1*X2/2)/
71512      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+8*(2+2*R1**2+2*R2
71513      &       +2*R1**2*R2-6*R2**2+2*R2**3-3*X1-R1**2*X1-2*R2*X1
71514      &       +3*R2**2*X1+X1**2-X2-R1**2*X2+R2**2*X2+X1*X2)/
71515      &       (-1-R1**2+R2**2+X1)**2+8*(3+3*R1**2+R2-R1**2*R2-5*R2**2
71516      &       +R2**3-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2*X2+R2**2*X2
71517      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
71518         RFO2=RFO2+32*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+2*R2*X1+R2**2*X1
71519      &       +X1**2-3*X2-R1**2*X2+2*R2*X2+R2**2*X2+X1*X2)/
71520      &       (9*(-2+X1+X2)**2)+8*(-1-R1**2-R2-R1**2*R2-R2**2+R2**3+X1
71521      &       -R2*X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2-X2**2/2)/
71522      &       (9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
71523         RFO2=9D0*RFO2/32D0
71524         ISSET2=1
71525         END IF
71526         IF(ICOMBI.EQ.4) THEN
71527         RLO4=PS*(1D0-R1**2+R2**2)
71528         RFO4=64*X2*(-1-R1**2-R2**2+X2)/(9*(-1+R1**2-R2**2+X2)**2)
71529      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+3*X2/2-R1**2*X2/2
71530      &       -R2**2*X2/2-X1*X2/2)/
71531      &       ((-1-R1**2+R2**2+X1)*(-1+R1**2-R2**2+X2))+16*(3+3*R1**2
71532      &       -5*R2**2-4*X1-R1**2*X1+2*R2**2*X1+X1**2-2*X2+R2**2*X2
71533      &       +X1*X2)/((-1-R1**2+R2**2+X1)*(2-X1-X2))
71534      &       +64*(4+4*R1**2-4*R2**2-5*X1-R1**2*X1+R2**2*X1+X1**2-3*X2
71535      &       -R1**2*X2+R2**2*X2+X1*X2)/(9*(-2+X1+X2)**2)
71536         RFO4=RFO4+16*(2+2*R1**2-6*R2**2-3*X1-R1**2*X1+3*R2**2*X1+X1**2
71537      &       -X2-R1**2*X2+R2**2*X2+X1*X2)/(-1-R1**2+R2**2+X1)**2
71538      &       +16*(-1-R1**2-R2**2+X1+R2**2*X1+2*X2+R1**2*X2-X1*X2/2
71539      &       -X2**2/2)/(9*(2-X1-X2)*(-1+R1**2-R2**2+X2))
71540         RFO4=9D0*RFO4/64D0
71541         ISSET4=1
71542         END IF
71543  
71544 C...g -> ~g ~g. Use (9/4)*eikonal. May be changed in the future.
71545       ELSEIF(ICLASS.EQ.16) THEN
71546         RLO=PS
71547         IF(ICOMBI.EQ.0.OR.ICOMBI.EQ.1) THEN
71548           ANUM=0D0
71549         ELSEIF(ICOMBI.EQ.2) THEN
71550           ANUM=(2D0-X1-X2)**2
71551         ELSEIF(ICOMBI.EQ.3) THEN
71552           ANUM=ALPCOR*(2D0-X1-X2)**2
71553         ELSE
71554           ANUM=0.5D0*(2D0-X1-X2)**2
71555         ENDIF
71556         RFO=PS*2D0*((X1+X2-1D0+ANUM-R1**2-R2**2)/
71557      &       ((1D0+R1**2-R2**2-X1)*(1D0+R2**2-R1**2-X2))-
71558      &       R1**2/(1D0+R2**2-R1**2-X2)**2-
71559      &       R2**2/(1D0+R1**2-R2**2-X1)**2)
71560         RFO=9D0*RFO/4D0
71561         ICOMBI=0
71562       ENDIF
71563  
71564 C...Find relevant LO and FO expression.
71565       IF(ICOMBI.EQ.0) THEN
71566       ELSEIF(ICOMBI.EQ.1.AND.ISSET1.EQ.1) THEN
71567         RLO=RLO1
71568         RFO=RFO1
71569       ELSEIF(ICOMBI.EQ.2.AND.ISSET2.EQ.1) THEN
71570         RLO=RLO2
71571         RFO=RFO2
71572       ELSEIF(ICOMBI.EQ.3.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
71573         RLO=ALPCOR*RLO1+(1D0-ALPCOR)*RLO2
71574         RFO=ALPCOR*RFO1+(1D0-ALPCOR)*RFO2
71575       ELSEIF(ISSET4.EQ.1) THEN
71576         RLO=RLO4
71577         RFO=RFO4
71578       ELSEIF(ICOMBI.EQ.4.AND.ISSET1.EQ.1.AND.ISSET2.EQ.1) THEN
71579         RLO=0.5D0*(RLO1+RLO2)
71580         RFO=0.5D0*(RFO1+RFO2)
71581       ELSEIF(ISSET1.EQ.1) THEN
71582         RLO=RLO1
71583         RFO=RFO1
71584       ELSE
71585         CALL PYERRM(16,'(PYMAEL:) not implemented ME code')
71586         RLO=1D0
71587         RFO=0D0
71588       ENDIF
71589  
71590 C...Output.
71591       PYMAEL=RFO/RLO
71592  
71593       RETURN
71594       END
71595  
71596 C*********************************************************************
71597  
71598 C...PYBOEI
71599 C...Modifies an event so as to approximately take into account
71600 C...Bose-Einstein effects according to a simple phenomenological
71601 C...parametrization.
71602  
71603       SUBROUTINE PYBOEI(NSAV)
71604  
71605 C...Double precision and integer declarations.
71606       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
71607       IMPLICIT INTEGER(I-N)
71608       INTEGER PYK,PYCHGE,PYCOMP
71609 C...Parameter statement to help give large particle numbers.
71610       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
71611      &KEXCIT=4000000,KDIMEN=5000000)
71612 C...Commonblocks.
71613       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
71614       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
71615       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
71616       COMMON/PYINT1/MINT(400),VINT(400)
71617       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYINT1/
71618 C...Local arrays and data.
71619       DIMENSION DPS(4),KFBE(9),NBE(0:10),BEI(100),BEI3(100),
71620      &BEIW(100),BEI3W(100)
71621       DATA KFBE/211,-211,111,321,-321,130,310,221,331/
71622 C...Statement function: squared invariant mass.
71623       SDIP(I,J)=((P(I,4)+P(J,4))**2-(P(I,3)+P(J,3))**2-
71624      &(P(I,2)+P(J,2))**2-(P(I,1)+P(J,1))**2)
71625  
71626 C...Boost event to overall CM frame. Calculate CM energy.
71627       IF((MSTJ(51).NE.1.AND.MSTJ(51).NE.2).OR.N-NSAV.LE.1) RETURN
71628       DO 100 J=1,4
71629         DPS(J)=0D0
71630   100 CONTINUE
71631       DO 120 I=1,N
71632         KFA=IABS(K(I,2))
71633         IF(K(I,1).LE.10.AND.((KFA.GT.10.AND.KFA.LE.20).OR.KFA.EQ.22)
71634      &  .AND.K(I,3).GT.0) THEN
71635           KFMA=IABS(K(K(I,3),2))
71636           IF(KFMA.GT.10.AND.KFMA.LE.80) K(I,1)=-K(I,1)
71637         ENDIF
71638         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120
71639         DO 110 J=1,4
71640           DPS(J)=DPS(J)+P(I,J)
71641   110   CONTINUE
71642   120 CONTINUE
71643       CALL PYROBO(0,0,0D0,0D0,-DPS(1)/DPS(4),-DPS(2)/DPS(4),
71644      &-DPS(3)/DPS(4))
71645       PECM=0D0
71646       DO 130 I=1,N
71647         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PECM=PECM+P(I,4)
71648   130 CONTINUE
71649  
71650 C...Check if we have separated strings
71651  
71652 C...Reserve copy of particles by species at end of record.
71653       IWP=0
71654       IWN=0
71655       NBE(0)=N+MSTU(3)
71656       NMAX=NBE(0)
71657       SMMIN=PECM
71658       DO 190 IBE=1,MIN(10,MSTJ(52)+1)
71659         NBE(IBE)=NBE(IBE-1)
71660         DO 180 I=NSAV+1,N
71661           IF(IBE.EQ.MIN(10,MSTJ(52)+1)) THEN
71662             DO 140 IIBE=1,IBE-1
71663               IF(K(I,2).EQ.KFBE(IIBE)) GOTO 180
71664   140       CONTINUE
71665           ELSE
71666             IF(K(I,2).NE.KFBE(IBE)) GOTO 180
71667           ENDIF
71668           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 180
71669           IF(NBE(IBE).GE.MSTU(4)-MSTU(32)-5) THEN
71670             CALL PYERRM(11,'(PYBOEI:) no more memory left in PYJETS')
71671             RETURN
71672           ENDIF
71673           NBE(IBE)=NBE(IBE)+1
71674           NMAX=NBE(IBE)
71675           K(NBE(IBE),1)=I
71676           K(NBE(IBE),2)=0
71677           K(NBE(IBE),3)=0
71678           K(NBE(IBE),4)=0
71679           K(NBE(IBE),5)=0
71680           P(NBE(IBE),1)=0.0D0
71681           P(NBE(IBE),2)=0.0D0
71682           P(NBE(IBE),3)=0.0D0
71683           P(NBE(IBE),4)=0.0D0
71684           P(NBE(IBE),5)=0.0D0
71685           SMMIN=MIN(SMMIN,P(I,5))
71686 C...Check if particles comes from different W's or Z's
71687           IF((MSTJ(53).NE.0.OR.MSTJ(56).GT.0).AND.MINT(32).EQ.0) THEN
71688             IM=I
71689   150       IF(K(IM,3).GT.0) THEN
71690               IM=K(IM,3)
71691               IF(ABS(K(IM,2)).NE.24.AND.K(IM,2).NE.23) GOTO 150
71692               K(NBE(IBE),5)=IM
71693               IF(IWP.EQ.0.AND.K(IM,2).EQ.24) IWP=IM
71694               IF(IWN.EQ.0.AND.K(IM,2).EQ.-24) IWN=IM
71695               IF(IWP.EQ.0.AND.K(IM,2).EQ.23) IWP=IM
71696               IF(IWN.EQ.0.AND.K(IM,2).EQ.23.AND.IM.NE.IWP) IWN=IM
71697             ENDIF
71698           ENDIF
71699 C...Check if particles comes from different strings.
71700           IF(PARJ(94).GT.0.0D0) THEN
71701             IM=I
71702   160       IF(K(IM,3).GT.0) THEN
71703               IM=K(IM,3)
71704               IF(K(IM,2).NE.92.AND.K(IM,2).NE.91) GOTO 160
71705               K(NBE(IBE),5)=IM
71706             ENDIF
71707           ENDIF
71708           DO 170 J=1,3
71709             P(NBE(IBE),J)=0D0
71710             V(NBE(IBE),J)=0D0
71711   170     CONTINUE
71712           P(NBE(IBE),5)=-1.0D0
71713   180   CONTINUE
71714   190 CONTINUE
71715       IF(NBE(MIN(9,MSTJ(52)))-NBE(0).LE.1) GOTO 510
71716  
71717 C...Calculate separation between W+ and W- or between two Z0's.
71718 C...No separation if there has been re-connections.
71719       SIGW=PARJ(93)
71720       IF(IWP.GT.0.AND.IWN.GT.0.AND.MSTJ(56).GT.0.AND.MINT(32).EQ.0) THEN
71721         IF(K(IWP,2).EQ.23) THEN
71722           DMW=PMAS(23,1)
71723           DGW=PMAS(23,2)
71724         ELSE
71725           DMW=PMAS(24,1)
71726           DGW=PMAS(24,2)
71727         ENDIF
71728         DMP=P(IWP,5)
71729         DMN=P(IWN,5)
71730         TAUPD=DMP/SQRT((DMP**2-DMW**2)**2+(DGW*(DMP**2)/DMW)**2)
71731         TAUND=DMN/SQRT((DMN**2-DMW**2)**2+(DGW*(DMN**2)/DMW)**2)
71732         TAUP=-TAUPD*LOG(PYR(IDUM))
71733         TAUN=-TAUND*LOG(PYR(IDUM))
71734         DXP=TAUP*PYP(IWP,8)/DMP
71735         DXN=TAUN*PYP(IWN,8)/DMN
71736         DX=DXP+DXN
71737         SIGW=1.0D0/(1.0D0/PARJ(93)+REAL(MSTJ(56))*DX)
71738         IF(PARJ(94).LT.0.0D0) SIGW=1.0D0/(1.0D0/SIGW-1.0D0/PARJ(94))
71739       ENDIF
71740  
71741 C...Add separation between strings.
71742       IF(PARJ(94).GT.0.0D0) THEN
71743         SIGW=1.0D0/(1.0D0/SIGW+1.0D0/PARJ(94))
71744         IWP=-1
71745         IWN=-1
71746       ENDIF
71747  
71748       IF(MSTJ(57).EQ.1.AND.MSTJ(54).LT.0) THEN
71749         DO 220 IBE=1,MIN(9,MSTJ(52))
71750           DO 210 I1M=NBE(IBE-1)+1,NBE(IBE)
71751             Q2MIN=PECM**2
71752             I1=K(I1M,1)
71753             DO 200 I2M=NBE(IBE-1)+1,NBE(IBE)
71754               IF(I2M.EQ.I1M) GOTO 200
71755               I2=K(I2M,1)
71756               Q2=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-
71757      &        (P(I1,2)+P(I2,2))**2-(P(I1,3)+P(I2,3))**2-
71758      &        (P(I1,5)+P(I2,5))**2
71759               IF(Q2.GT.0.0D0.AND.Q2.LT.Q2MIN) THEN
71760                 Q2MIN=Q2
71761               ENDIF
71762   200       CONTINUE
71763             P(I1M,5)=Q2MIN
71764   210     CONTINUE
71765   220   CONTINUE
71766       ENDIF
71767  
71768 C...Tabulate integral for subsequent momentum shift.
71769       DO 400 IBE=1,MIN(9,MSTJ(52))
71770         IF(IBE.NE.1.AND.IBE.NE.4.AND.IBE.LE.7) GOTO 270
71771         IF(IBE.EQ.1.AND.MAX(NBE(1)-NBE(0),NBE(2)-NBE(1),NBE(3)-NBE(2))
71772      &  .LE.1) GOTO 270
71773         IF(IBE.EQ.4.AND.MAX(NBE(4)-NBE(3),NBE(5)-NBE(4),NBE(6)-NBE(5),
71774      &  NBE(7)-NBE(6)).LE.1) GOTO 270
71775         IF(IBE.GE.8.AND.NBE(IBE)-NBE(IBE-1).LE.1) GOTO 270
71776         IF(IBE.EQ.1) PMHQ=2D0*PYMASS(211)
71777         IF(IBE.EQ.4) PMHQ=2D0*PYMASS(321)
71778         IF(IBE.EQ.8) PMHQ=2D0*PYMASS(221)
71779         IF(IBE.EQ.9) PMHQ=2D0*PYMASS(331)
71780         QDEL=0.1D0*MIN(PMHQ,PARJ(93))
71781         QDEL3=0.1D0*MIN(PMHQ,PARJ(93)*3.0D0)
71782         QDELW=0.1D0*MIN(PMHQ,SIGW)
71783         QDEL3W=0.1D0*MIN(PMHQ,SIGW*3.0D0)
71784         IF(MSTJ(51).EQ.1) THEN
71785           NBIN=MIN(100,NINT(9D0*PARJ(93)/QDEL))
71786           NBIN3=MIN(100,NINT(27D0*PARJ(93)/QDEL3))
71787           NBINW=MIN(100,NINT(9D0*SIGW/QDELW))
71788           NBIN3W=MIN(100,NINT(27D0*SIGW/QDEL3W))
71789           BEEX=EXP(0.5D0*QDEL/PARJ(93))
71790           BEEX3=EXP(0.5D0*QDEL3/(3.0D0*PARJ(93)))
71791           BEEXW=EXP(0.5D0*QDELW/SIGW)
71792           BEEX3W=EXP(0.5D0*QDEL3W/(3.0D0*SIGW))
71793           BERT=EXP(-QDEL/PARJ(93))
71794           BERT3=EXP(-QDEL3/(3.0D0*PARJ(93)))
71795           BERTW=EXP(-QDELW/SIGW)
71796           BERT3W=EXP(-QDEL3W/(3.0D0*SIGW))
71797         ELSE
71798           NBIN=MIN(100,NINT(3D0*PARJ(93)/QDEL))
71799           NBIN3=MIN(100,NINT(9D0*PARJ(93)/QDEL3))
71800           NBINW=MIN(100,NINT(3D0*SIGW/QDELW))
71801           NBIN3W=MIN(100,NINT(9D0*SIGW/QDEL3W))
71802         ENDIF
71803         DO 230 IBIN=1,NBIN
71804           QBIN=QDEL*(IBIN-0.5D0)
71805           BEI(IBIN)=QDEL*(QBIN**2+QDEL**2/12D0)/SQRT(QBIN**2+PMHQ**2)
71806           IF(MSTJ(51).EQ.1) THEN
71807             BEEX=BEEX*BERT
71808             BEI(IBIN)=BEI(IBIN)*BEEX
71809           ELSE
71810             BEI(IBIN)=BEI(IBIN)*EXP(-(QBIN/PARJ(93))**2)
71811           ENDIF
71812           IF(IBIN.GE.2) BEI(IBIN)=BEI(IBIN)+BEI(IBIN-1)
71813   230   CONTINUE
71814         DO 240 IBIN=1,NBIN3
71815           QBIN=QDEL3*(IBIN-0.5D0)
71816           BEI3(IBIN)=QDEL3*(QBIN**2+QDEL3**2/12D0)/SQRT(QBIN**2+PMHQ**2)
71817           IF(MSTJ(51).EQ.1) THEN
71818             BEEX3=BEEX3*BERT3
71819             BEI3(IBIN)=BEI3(IBIN)*BEEX3
71820           ELSE
71821             BEI3(IBIN)=BEI3(IBIN)*EXP(-(QBIN/(3.0D0*PARJ(93)))**2)
71822           ENDIF
71823           IF(IBIN.GE.2) BEI3(IBIN)=BEI3(IBIN)+BEI3(IBIN-1)
71824   240   CONTINUE
71825         DO 250 IBIN=1,NBINW
71826           QBIN=QDELW*(IBIN-0.5D0)
71827           BEIW(IBIN)=QDELW*(QBIN**2+QDELW**2/12D0)/SQRT(QBIN**2+PMHQ**2)
71828           IF(MSTJ(51).EQ.1) THEN
71829             BEEXW=BEEXW*BERTW
71830             BEIW(IBIN)=BEIW(IBIN)*BEEXW
71831           ELSE
71832             BEIW(IBIN)=BEIW(IBIN)*EXP(-(QBIN/SIGW)**2)
71833           ENDIF
71834           IF(IBIN.GE.2) BEIW(IBIN)=BEIW(IBIN)+BEIW(IBIN-1)
71835   250   CONTINUE
71836         DO 260 IBIN=1,NBIN3W
71837           QBIN=QDEL3W*(IBIN-0.5D0)
71838           BEI3W(IBIN)=QDEL3W*(QBIN**2+QDEL3W**2/12D0)/
71839      &    SQRT(QBIN**2+PMHQ**2)
71840           IF(MSTJ(51).EQ.1) THEN
71841             BEEX3W=BEEX3W*BERT3W
71842             BEI3W(IBIN)=BEI3W(IBIN)*BEEX3W
71843           ELSE
71844             BEI3W(IBIN)=BEI3W(IBIN)*EXP(-(QBIN/(3.0D0*SIGW))**2)
71845           ENDIF
71846           IF(IBIN.GE.2) BEI3W(IBIN)=BEI3W(IBIN)+BEI3W(IBIN-1)
71847   260   CONTINUE
71848  
71849 C...Loop through particle pairs and find old relative momentum.
71850   270   DO 390 I1M=NBE(IBE-1)+1,NBE(IBE)-1
71851           I1=K(I1M,1)
71852           DO 380 I2M=I1M+1,NBE(IBE)
71853             IF(MSTJ(53).EQ.1.AND.K(I1M,5).NE.K(I2M,5)) GOTO 380
71854             IF(MSTJ(53).EQ.2.AND.K(I1M,5).EQ.K(I2M,5)) GOTO 380
71855             I2=K(I2M,1)
71856             Q2OLD=(P(I1,4)+P(I2,4))**2-(P(I1,1)+P(I2,1))**2-(P(I1,2)+
71857      &      P(I2,2))**2-(P(I1,3)+P(I2,3))**2-(P(I1,5)+P(I2,5))**2
71858             IF(Q2OLD.LE.0.0D0) GOTO 380
71859             QOLD=SQRT(Q2OLD)
71860  
71861 C...Calculate new relative momentum.
71862             QMOV=0.0D0
71863             QMOV3=0.0D0
71864             QMOVW=0.0D0
71865             QMOV3W=0.0D0
71866             IF(QOLD.LT.1D-3*QDEL) THEN
71867               GOTO 280
71868             ELSEIF(QOLD.LE.QDEL) THEN
71869               QMOV=QOLD/3D0
71870             ELSEIF(QOLD.LT.(NBIN-0.1D0)*QDEL) THEN
71871               RBIN=QOLD/QDEL
71872               IBIN=RBIN
71873               RINP=(RBIN**3-IBIN**3)/(3*IBIN*(IBIN+1)+1)
71874               QMOV=(BEI(IBIN)+RINP*(BEI(IBIN+1)-BEI(IBIN)))*
71875      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
71876             ELSE
71877               QMOV=BEI(NBIN)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
71878             ENDIF
71879   280       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV))**(2D0/3D0)
71880             IF(QOLD.LT.1D-3*QDEL3) THEN
71881               GOTO 290
71882             ELSEIF(QOLD.LE.QDEL3) THEN
71883               QMOV3=QOLD/3D0
71884             ELSEIF(QOLD.LT.(NBIN3-0.1D0)*QDEL3) THEN
71885               RBIN3=QOLD/QDEL3
71886               IBIN3=RBIN3
71887               RINP3=(RBIN3**3-IBIN3**3)/(3*IBIN3*(IBIN3+1)+1)
71888               QMOV3=(BEI3(IBIN3)+RINP3*(BEI3(IBIN3+1)-BEI3(IBIN3)))*
71889      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
71890             ELSE
71891               QMOV3=BEI3(NBIN3)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
71892             ENDIF
71893   290       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3))**(2D0/3D0)
71894             RSCALE=1.0D0
71895             IF(MSTJ(54).EQ.2)
71896      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*PARJ(93)))**2)
71897             IF((IWP.NE.-1.AND.MSTJ(56).LE.0).OR.IWP.EQ.0.OR.IWN.EQ.0.OR.
71898      &      K(I1M,5).EQ.K(I2M,5)) GOTO 320
71899  
71900             IF(QOLD.LT.1D-3*QDELW) THEN
71901               GOTO 300
71902             ELSEIF(QOLD.LE.QDELW) THEN
71903               QMOVW=QOLD/3D0
71904             ELSEIF(QOLD.LT.(NBINW-0.1D0)*QDELW) THEN
71905               RBINW=QOLD/QDELW
71906               IBINW=RBINW
71907               RINPW=(RBINW**3-IBINW**3)/(3*IBINW*(IBINW+1)+1)
71908               QMOVW=(BEIW(IBINW)+RINPW*(BEIW(IBINW+1)-BEIW(IBINW)))*
71909      &        SQRT(Q2OLD+PMHQ**2)/Q2OLD
71910             ELSE
71911               QMOVW=BEIW(NBINW)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
71912             ENDIF
71913   300       Q2NEW=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOVW))**(2D0/3D0)
71914             IF(QOLD.LT.1D-3*QDEL3W) THEN
71915               GOTO 310
71916             ELSEIF(QOLD.LE.QDEL3W) THEN
71917               QMOV3W=QOLD/3D0
71918             ELSEIF(QOLD.LT.(NBIN3W-0.1D0)*QDEL3W) THEN
71919               RBIN3W=QOLD/QDEL3W
71920               IBIN3W=RBIN3W
71921               RINP3W=(RBIN3W**3-IBIN3W**3)/(3*IBIN3W*(IBIN3W+1)+1)
71922               QMOV3W=(BEI3W(IBIN3W)+RINP3W*(BEI3W(IBIN3W+1)-
71923      &        BEI3W(IBIN3W)))*SQRT(Q2OLD+PMHQ**2)/Q2OLD
71924             ELSE
71925               QMOV3W=BEI3W(NBIN3W)*SQRT(Q2OLD+PMHQ**2)/Q2OLD
71926             ENDIF
71927   310       Q2NEW3=Q2OLD*(QOLD/(QOLD+3D0*PARJ(92)*QMOV3W))**(2D0/3D0)
71928             IF(MSTJ(54).EQ.2)
71929      &      RSCALE=1.0D0-EXP(-(QOLD/(2D0*SIGW))**2)
71930  
71931   320       CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW)
71932             DO 330 J=1,3
71933               P(I1M,J)=P(I1M,J)+P(NMAX+1,J)
71934               P(I2M,J)=P(I2M,J)+P(NMAX+2,J)
71935   330       CONTINUE
71936             IF(MSTJ(54).GE.1) THEN
71937               CALL PYBESQ(I1,I2,NMAX,Q2OLD,Q2NEW3)
71938               DO 340 J=1,3
71939                 V(I1M,J)=V(I1M,J)+P(NMAX+1,J)*RSCALE
71940                 V(I2M,J)=V(I2M,J)+P(NMAX+2,J)*RSCALE
71941   340         CONTINUE
71942             ELSEIF(MSTJ(54).LE.-1) THEN
71943               EDEL=P(I1,4)+P(I2,4)-
71944      &        SQRT(MAX(Q2NEW-Q2OLD+(P(I1,4)+P(I2,4))**2,0.0D0))
71945               A2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
71946      &        (P(I1,3)-P(I2,3))**2
71947               WMAX=-1.0D20
71948               MI3=0
71949               MI4=0
71950               S12=SDIP(I1,I2)
71951               SM1=(P(I1,5)+SMMIN)**2
71952               DO 360 I3M=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
71953                 IF(I3M.EQ.I1M.OR.I3M.EQ.I2M) GOTO 360
71954                 IF(MSTJ(53).EQ.1.AND.K(I3M,5).NE.K(I1M,5)) GOTO 360
71955                 IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
71956      &          K(I3M,5).NE.K(I1M,5)) GOTO 360
71957                 I3=K(I3M,1)
71958                 IF(K(I3,2).EQ.K(I1,2)) GOTO 360
71959                 S13=SDIP(I1,I3)
71960                 S23=SDIP(I2,I3)
71961                 SM3=(P(I3,5)+SMMIN)**2
71962                 IF(MSTJ(54).EQ.-2) THEN
71963                   WI=(MIN(S12*SM3,S13*MIN(SM1,SM3),
71964      &            S23*MIN(SM1,SM3))*SM1)
71965                 ELSE
71966                   WI=((P(I1,4)+P(I2,4)+P(I3,4))**2-
71967      &            (P(I1,3)+P(I2,3)+P(I3,3))**2-
71968      &            (P(I1,2)+P(I2,2)+P(I3,2))**2-
71969      &            (P(I1,1)+P(I2,1)+P(I3,1))**2)
71970                 ENDIF
71971                 IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0) THEN
71972                   IF (WMAX*WI.GE.(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2))))
71973      &                 GOTO 360
71974                 ELSE
71975                   IF(WMAX*WI.GE.1.0) GOTO 360
71976                 ENDIF
71977                 DO 350 I4M=I3M+1,NBE(MIN(10,MSTJ(52)+1))
71978                   IF(I4M.EQ.I1M.OR.I4M.EQ.I2M) GOTO 350
71979                   IF(MSTJ(53).EQ.1.AND.K(I4M,5).NE.K(I1M,5)) GOTO 350
71980                   IF(MSTJ(53).EQ.-2.AND.K(I1M,5).EQ.K(I2M,5).AND.
71981      &            K(I4M,5).NE.K(I1M,5)) GOTO 350
71982                   I4=K(I4M,1)
71983                   IF(K(I3,2).EQ.K(I4,2).OR.K(I4,2).EQ.K(I1,2))
71984      &            GOTO 350
71985                   IF((P(I3,4)+P(I4,4)+EDEL)**2.LT.
71986      &            (P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
71987      &            (P(I3,3)+P(I4,3))**2+(P(I3,5)+P(I4,5))**2)
71988      &            GOTO 350
71989                   IF(MSTJ(54).EQ.-2) THEN
71990                     S14=SDIP(I1,I4)
71991                     S24=SDIP(I2,I4)
71992                     S34=SDIP(I3,I4)
71993                     W=S12*MIN(MIN(S23,S24),MIN(S13,S14))*S34
71994                     W=MIN(W,S13*MIN(MIN(S23,S34),S12)*S24)
71995                     W=MIN(W,S14*MIN(MIN(S24,S34),S12)*S23)
71996                     W=MIN(W,MIN(S23,S24)*S13*S14)
71997                     W=1.0D0/W
71998                   ELSE
71999 C...weight=1-cos(theta)/mtot2
72000                     S1234=(P(I1,4)+P(I2,4)+P(I3,4)+P(I4,4))**2-
72001      &              (P(I1,3)+P(I2,3)+P(I3,3)+P(I4,3))**2-
72002      &              (P(I1,2)+P(I2,2)+P(I3,2)+P(I4,2))**2-
72003      &              (P(I1,1)+P(I2,1)+P(I3,1)+P(I4,1))**2
72004                     W=1.0D0/S1234
72005                     IF(W.LE.WMAX) GOTO 350
72006                   ENDIF
72007                   IF(MSTJ(57).EQ.1.AND.P(I3M,5).GT.0)
72008      &            W=W*(1.0D0-EXP(-P(I3M,5)/(PARJ(93)**2)))
72009                   IF(MSTJ(57).EQ.1.AND.P(I4M,5).GT.0)
72010      &            W=W*(1.0D0-EXP(-P(I4M,5)/(PARJ(93)**2)))
72011                   IF(W.LE.WMAX) GOTO 350
72012                   MI3=I3M
72013                   MI4=I4M
72014                   WMAX=W
72015   350           CONTINUE
72016   360         CONTINUE
72017               IF(MI4.EQ.0) GOTO 380
72018               I3=K(MI3,1)
72019               I4=K(MI4,1)
72020               EOLD=P(I3,4)+P(I4,4)
72021               ENEW=EOLD+EDEL
72022               P2=(P(I3,1)+P(I4,1))**2+(P(I3,2)+P(I4,2))**2+
72023      &        (P(I3,3)+P(I4,3))**2
72024               Q2NEWP=MAX(0.0D0,ENEW**2-P2-(P(I3,5)+P(I4,5))**2)
72025               Q2OLDP=MAX(0.0D0,EOLD**2-P2-(P(I3,5)+P(I4,5))**2)
72026               CALL PYBESQ(I3,I4,NMAX,Q2OLDP,Q2NEWP)
72027               DO 370 J=1,3
72028                 V(MI3,J)=V(MI3,J)+P(NMAX+1,J)
72029                 V(MI4,J)=V(MI4,J)+P(NMAX+2,J)
72030   370         CONTINUE
72031             ENDIF
72032   380     CONTINUE
72033   390   CONTINUE
72034   400 CONTINUE
72035  
72036 C...Shift momenta and recalculate energies.
72037       ESUMP=0.0D0
72038       ESUM=0.0D0
72039       PROD=0.0D0
72040       DO 430 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
72041         I=K(IM,1)
72042         ESUMP=ESUMP+P(I,4)
72043         DO 410 J=1,3
72044           P(I,J)=P(I,J)+P(IM,J)
72045   410   CONTINUE
72046         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
72047         ESUM=ESUM+P(I,4)
72048         DO 420 J=1,3
72049           PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
72050   420   CONTINUE
72051   430 CONTINUE
72052  
72053       PARJ(96)=0.0D0
72054       IF(MSTJ(54).NE.0.AND.PROD.NE.0.0D0) THEN
72055   440   ALPHA=(ESUMP-ESUM)/PROD
72056         PARJ(96)=PARJ(96)+ALPHA
72057         PROD=0.0D0
72058         ESUM=0.0D0
72059         DO 470 IM=NBE(0)+1,NBE(MIN(10,MSTJ(52)+1))
72060           I=K(IM,1)
72061           DO 450 J=1,3
72062             P(I,J)=P(I,J)+ALPHA*V(IM,J)
72063   450     CONTINUE
72064           P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
72065           ESUM=ESUM+P(I,4)
72066           DO 460 J=1,3
72067             PROD=PROD+V(IM,J)*P(I,J)/P(I,4)
72068   460     CONTINUE
72069   470   CONTINUE
72070         IF(PROD.NE.0.0D0.AND.ABS(ESUMP-ESUM)/PECM.GT.0.00001D0)
72071      &  GOTO 440
72072       ENDIF
72073  
72074 C...Rescale all momenta for energy conservation.
72075       PES=0D0
72076       PQS=0D0
72077       DO 480 I=1,N
72078         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 480
72079         PES=PES+P(I,4)
72080         PQS=PQS+P(I,5)**2/P(I,4)
72081   480 CONTINUE
72082       PARJ(95)=PES-PECM
72083       FAC=(PECM-PQS)/(PES-PQS)
72084       DO 500 I=1,N
72085         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 500
72086         DO 490 J=1,3
72087           P(I,J)=FAC*P(I,J)
72088   490   CONTINUE
72089         P(I,4)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
72090   500 CONTINUE
72091  
72092 C...Boost back to correct reference frame.
72093   510 CALL PYROBO(0,0,0D0,0D0,DPS(1)/DPS(4),DPS(2)/DPS(4),DPS(3)/DPS(4))
72094       DO 520 I=1,N
72095         IF(K(I,1).LT.0) K(I,1)=-K(I,1)
72096   520 CONTINUE
72097  
72098       RETURN
72099       END
72100  
72101 C*********************************************************************
72102  
72103 C...PYBESQ
72104 C...Calculates the momentum shift in a system of two particles assuming
72105 C...the relative momentum squared should be shifted to Q2NEW. NI is the
72106 C...last position occupied in /PYJETS/.
72107  
72108       SUBROUTINE PYBESQ(I1,I2,NI,Q2OLD,Q2NEW)
72109  
72110 C...Double precision and integer declarations.
72111       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72112       IMPLICIT INTEGER(I-N)
72113       INTEGER PYK,PYCHGE,PYCOMP
72114 C...Parameter statement to help give large particle numbers.
72115       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72116      &KEXCIT=4000000,KDIMEN=5000000)
72117 C...Commonblocks.
72118       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72119       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72120       SAVE /PYJETS/,/PYDAT1/
72121 C...Local arrays and data.
72122       DIMENSION DP(5)
72123       SAVE HC1
72124  
72125       IF(MSTJ(55).EQ.0) THEN
72126         DQ2=Q2NEW-Q2OLD
72127         DP2=(P(I1,1)-P(I2,1))**2+(P(I1,2)-P(I2,2))**2+
72128      &  (P(I1,3)-P(I2,3))**2
72129         DP12=P(I1,1)**2+P(I1,2)**2+P(I1,3)**2
72130      &  -P(I2,1)**2-P(I2,2)**2-P(I2,3)**2
72131         SE=P(I1,4)+P(I2,4)
72132         DE=P(I1,4)-P(I2,4)
72133         DQ2SE=DQ2+SE**2
72134         DA=SE*DE*DP12-DP2*DQ2SE
72135         DB=DP2*DQ2SE-DP12**2
72136         HA=(DA+SQRT(MAX(DA**2+DQ2*(DQ2+SE**2-DE**2)*DB,0D0)))/(2D0*DB)
72137         DO 100 J=1,3
72138           PD=HA*(P(I1,J)-P(I2,J))
72139           P(NI+1,J)=PD
72140           P(NI+2,J)=-PD
72141   100   CONTINUE
72142         RETURN
72143       ENDIF
72144  
72145       K(NI+1,1)=1
72146       K(NI+2,1)=1
72147       DO 110 J=1,5
72148         P(NI+1,J)=P(I1,J)
72149         P(NI+2,J)=P(I2,J)
72150         DP(J)=P(I1,J)+P(I2,J)
72151   110 CONTINUE
72152  
72153 C...Boost to cms and rotate first particle to z-axis
72154       CALL PYROBO(NI+1,NI+2,0.0D0,0.0D0,
72155      &-DP(1)/DP(4),-DP(2)/DP(4),-DP(3)/DP(4))
72156       PHI=PYANGL(P(NI+1,1),P(NI+1,2))
72157       THE=PYANGL(P(NI+1,3),SQRT(P(NI+1,1)**2+P(NI+1,2)**2))
72158       S=Q2NEW+(P(I1,5)+P(I2,5))**2
72159       PZ=0.5D0*SQRT(Q2NEW*(S-(P(I1,5)-P(I2,5))**2)/S)
72160       P(NI+1,1)=0.0D0
72161       P(NI+1,2)=0.0D0
72162       P(NI+1,3)=PZ
72163       P(NI+1,4)=SQRT(PZ**2+P(I1,5)**2)
72164       P(NI+2,1)=0.0D0
72165       P(NI+2,2)=0.0D0
72166       P(NI+2,3)=-PZ
72167       P(NI+2,4)=SQRT(PZ**2+P(I2,5)**2)
72168       DP(4)=SQRT(DP(1)**2+DP(2)**2+DP(3)**2+S)
72169       CALL PYROBO(NI+1,NI+2,THE,PHI,
72170      &DP(1)/DP(4),DP(2)/DP(4),DP(3)/DP(4))
72171  
72172       DO 120 J=1,3
72173         P(NI+1,J)=P(NI+1,J)-P(I1,J)
72174         P(NI+2,J)=P(NI+2,J)-P(I2,J)
72175   120 CONTINUE
72176  
72177       RETURN
72178       END
72179  
72180 C*********************************************************************
72181  
72182 C...PYMASS
72183 C...Gives the mass of a particle/parton.
72184  
72185       FUNCTION PYMASS(KF)
72186  
72187 C...Double precision and integer declarations.
72188       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72189       IMPLICIT INTEGER(I-N)
72190       INTEGER PYK,PYCHGE,PYCOMP
72191 C...Commonblocks.
72192       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72193       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72194       SAVE /PYDAT1/,/PYDAT2/
72195  
72196 C...Reset variables. Compressed code. Special case for popcorn diquarks.
72197       PYMASS=0D0
72198       KFA=IABS(KF)
72199       KC=PYCOMP(KF)
72200       IF(KC.EQ.0) THEN
72201         MSTJ(93)=0
72202         RETURN
72203       ENDIF
72204  
72205 C...Guarantee use of constituent masses for internal checks.
72206       IF((MSTJ(93).EQ.1.OR.MSTJ(93).EQ.2).AND.
72207      &(KFA.LE.10.OR.MOD(KFA/10,10).EQ.0)) THEN
72208         IF(KFA.LE.5) THEN
72209           PYMASS=PARF(100+KFA)
72210           IF(MSTJ(93).EQ.2) PYMASS=MAX(0D0,PYMASS-PARF(121))
72211         ELSEIF(KFA.LE.10) THEN
72212           PYMASS=PMAS(KFA,1)
72213         ELSEIF(MSTJ(93).EQ.1) THEN
72214           PYMASS=PARF(100+MOD(KFA/1000,10))+PARF(100+MOD(KFA/100,10))
72215         ELSE
72216           PYMASS=MAX(0D0,PMAS(KC,1)-PARF(122)-2D0*PARF(112)/3D0)
72217         ENDIF
72218  
72219 C...Other masses can be read directly off table.
72220       ELSE
72221         PYMASS=PMAS(KC,1)
72222       ENDIF
72223  
72224 C...Optional mass broadening according to truncated Breit-Wigner
72225 C...(either in m or in m^2).
72226       IF(MSTJ(24).GE.1.AND.PMAS(KC,2).GT.1D-4) THEN
72227         IF(MSTJ(24).EQ.1.OR.(MSTJ(24).EQ.2.AND.KFA.GT.100)) THEN
72228           PYMASS=PYMASS+0.5D0*PMAS(KC,2)*TAN((2D0*PYR(0)-1D0)*
72229      &    ATAN(2D0*PMAS(KC,3)/PMAS(KC,2)))
72230         ELSE
72231           PM0=PYMASS
72232           PMLOW=ATAN((MAX(0D0,PM0-PMAS(KC,3))**2-PM0**2)/
72233      &    (PM0*PMAS(KC,2)))
72234           PMUPP=ATAN(((PM0+PMAS(KC,3))**2-PM0**2)/(PM0*PMAS(KC,2)))
72235           PYMASS=SQRT(MAX(0D0,PM0**2+PM0*PMAS(KC,2)*TAN(PMLOW+
72236      &    (PMUPP-PMLOW)*PYR(0))))
72237         ENDIF
72238       ENDIF
72239       MSTJ(93)=0
72240  
72241       RETURN
72242       END
72243  
72244 C*********************************************************************
72245  
72246 C...PYMRUN
72247 C...Gives the running, current-algebra mass of a d, u, s, c or b quark,
72248 C...for Higgs couplings. Everything else sent on to PYMASS.
72249  
72250       FUNCTION PYMRUN(KF,Q2)
72251  
72252 C...Double precision and integer declarations.
72253       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72254       IMPLICIT INTEGER(I-N)
72255       INTEGER PYK,PYCHGE,PYCOMP
72256 C...Commonblocks.
72257       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72258       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72259       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
72260       SAVE /PYDAT1/,/PYDAT2/,/PYPARS/
72261  
72262 C...Most masses not handled here.
72263       KFA=IABS(KF)
72264       IF(KFA.EQ.0.OR.KFA.GT.6) THEN
72265         PYMRUN=PYMASS(KF)
72266  
72267 C...Current-algebra masses, but no Q2 dependence.
72268       ELSEIF(MSTP(37).NE.1.OR.MSTP(2).LE.0) THEN
72269         PYMRUN=PARF(90+KFA)
72270  
72271 C...Running current-algebra masses.
72272       ELSE
72273         AS=PYALPS(Q2)
72274         PYMRUN=PARF(90+KFA)*
72275      &  (LOG(MAX(4D0,PARP(37)**2*PARF(90+KFA)**2/PARU(117)**2))/
72276      &  LOG(MAX(4D0,Q2/PARU(117)**2)))**(12D0/(33D0-2D0*MSTU(118)))
72277       ENDIF
72278  
72279       RETURN
72280       END
72281  
72282 C*********************************************************************
72283  
72284 C...PYNAME
72285 C...Gives the particle/parton name as a character string.
72286  
72287       SUBROUTINE PYNAME(KF,CHAU)
72288  
72289 C...Double precision and integer declarations.
72290       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72291       IMPLICIT INTEGER(I-N)
72292       INTEGER PYK,PYCHGE,PYCOMP
72293 C...Commonblocks.
72294       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72295       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72296       COMMON/PYDAT4/CHAF(500,2)
72297       CHARACTER CHAF*16
72298       SAVE /PYDAT1/,/PYDAT2/,/PYDAT4/
72299 C...Local character variable.
72300       CHARACTER CHAU*16
72301  
72302 C...Read out code with distinction particle/antiparticle.
72303       CHAU=' '
72304       KC=PYCOMP(KF)
72305       IF(KC.NE.0) CHAU=CHAF(KC,(3-ISIGN(1,KF))/2)
72306  
72307  
72308       RETURN
72309       END
72310  
72311 C*********************************************************************
72312  
72313 C...PYCHGE
72314 C...Gives three times the charge for a particle/parton.
72315  
72316       FUNCTION PYCHGE(KF)
72317  
72318 C...Double precision and integer declarations.
72319       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72320       IMPLICIT INTEGER(I-N)
72321       INTEGER PYK,PYCHGE,PYCOMP
72322 C...Commonblocks.
72323       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72324       SAVE /PYDAT2/
72325  
72326 C...Read out charge and change sign for antiparticle.
72327       PYCHGE=0
72328       KC=PYCOMP(KF)
72329       IF(KC.NE.0) PYCHGE=KCHG(KC,1)*ISIGN(1,KF)
72330  
72331       RETURN
72332       END
72333  
72334 C*********************************************************************
72335  
72336 C...PYCOMP
72337 C...Compress the standard KF codes for use in mass and decay arrays;
72338 C...also checks whether a given code actually is defined.
72339  
72340       FUNCTION PYCOMP(KF)
72341  
72342 C...Double precision and integer declarations.
72343       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72344       IMPLICIT INTEGER(I-N)
72345       INTEGER PYK,PYCHGE,PYCOMP
72346 C...Commonblocks.
72347       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72348       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72349       SAVE /PYDAT1/,/PYDAT2/
72350 C...Local arrays and saved data.
72351       DIMENSION KFORD(100:500),KCORD(101:500)
72352       SAVE KFORD,KCORD,NFORD,KFLAST,KCLAST
72353  
72354 C...Whenever necessary reorder codes for faster search.
72355       IF(MSTU(20).EQ.0) THEN
72356         NFORD=100
72357         KFORD(100)=0
72358         DO 120 I=101,500
72359           KFA=KCHG(I,4)
72360           IF(KFA.LE.100) GOTO 120
72361           NFORD=NFORD+1
72362           DO 100 I1=NFORD-1,0,-1
72363             IF(KFA.GE.KFORD(I1)) GOTO 110
72364             KFORD(I1+1)=KFORD(I1)
72365             KCORD(I1+1)=KCORD(I1)
72366   100     CONTINUE
72367   110     KFORD(I1+1)=KFA
72368           KCORD(I1+1)=I
72369   120   CONTINUE
72370         MSTU(20)=1
72371         KFLAST=0
72372         KCLAST=0
72373       ENDIF
72374  
72375 C...Fast action if same code as in latest call.
72376       IF(KF.EQ.KFLAST) THEN
72377         PYCOMP=KCLAST
72378         RETURN
72379       ENDIF
72380  
72381 C...Starting values. Remove internal diquark flags.
72382       PYCOMP=0
72383       KFA=IABS(KF)
72384       IF(MOD(KFA/10,10).EQ.0.AND.KFA.LT.100000
72385      &     .AND.MOD(KFA/1000,10).GT.0) KFA=MOD(KFA,10000)
72386  
72387 C...Simple cases: direct translation.
72388       IF(KFA.GT.KFORD(NFORD)) THEN
72389       ELSEIF(KFA.LE.100) THEN
72390         PYCOMP=KFA
72391  
72392 C...Else binary search.
72393       ELSE
72394         IMIN=100
72395         IMAX=NFORD+1
72396   130   IAVG=(IMIN+IMAX)/2
72397         IF(KFORD(IAVG).GT.KFA) THEN
72398           IMAX=IAVG
72399           IF(IMAX.GT.IMIN+1) GOTO 130
72400         ELSEIF(KFORD(IAVG).LT.KFA) THEN
72401           IMIN=IAVG
72402           IF(IMAX.GT.IMIN+1) GOTO 130
72403         ELSE
72404           PYCOMP=KCORD(IAVG)
72405         ENDIF
72406       ENDIF
72407  
72408 C...Check if antiparticle allowed.
72409       IF(PYCOMP.NE.0.AND.KF.LT.0) THEN
72410         IF(KCHG(PYCOMP,3).EQ.0) PYCOMP=0
72411       ENDIF
72412  
72413 C...Save codes for possible future fast action.
72414       KFLAST=KF
72415       KCLAST=PYCOMP
72416  
72417       RETURN
72418       END
72419  
72420 C*********************************************************************
72421  
72422 C...PYERRM
72423 C...Informs user of errors in program execution.
72424  
72425       SUBROUTINE PYERRM(MERR,CHMESS)
72426  
72427 C...Double precision and integer declarations.
72428       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72429       IMPLICIT INTEGER(I-N)
72430       INTEGER PYK,PYCHGE,PYCOMP
72431 C...Commonblocks.
72432       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72433       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72434       SAVE /PYJETS/,/PYDAT1/
72435 C...Local character variable.
72436       CHARACTER CHMESS*(*)
72437  
72438 C...Write first few warnings, then be silent.
72439       IF(MERR.LE.10) THEN
72440         MSTU(27)=MSTU(27)+1
72441         MSTU(28)=MERR
72442         IF(MSTU(25).EQ.1.AND.MSTU(27).LE.MSTU(26)) WRITE(MSTU(11),5000)
72443      &  MERR,MSTU(31),CHMESS
72444  
72445 C...Write first few errors, then be silent or stop program.
72446       ELSEIF(MERR.LE.20) THEN
72447         IF(MSTU(29).EQ.0) MSTU(23)=MSTU(23)+1
72448         MSTU(30)=MSTU(30)+1
72449         MSTU(24)=MERR-10
72450         IF(MSTU(21).GE.1.AND.MSTU(23).LE.MSTU(22)) WRITE(MSTU(11),5100)
72451      &  MERR-10,MSTU(31),CHMESS
72452         IF(MSTU(21).GE.2.AND.MSTU(23).GT.MSTU(22)) THEN
72453           WRITE(MSTU(11),5100) MERR-10,MSTU(31),CHMESS
72454           WRITE(MSTU(11),5200)
72455           IF(MERR.NE.17) CALL PYLIST(2)
72456           CALL PYSTOP(3)
72457         ENDIF
72458  
72459 C...Stop program in case of irreparable error.
72460       ELSE
72461         WRITE(MSTU(11),5300) MERR-20,MSTU(31),CHMESS
72462         CALL PYSTOP(3)
72463       ENDIF
72464  
72465 C...Formats for output.
72466  5000 FORMAT(/5X,'Advisory warning type',I2,' given after',I9,
72467      &' PYEXEC calls:'/5X,A)
72468  5100 FORMAT(/5X,'Error type',I2,' has occured after',I9,
72469      &' PYEXEC calls:'/5X,A)
72470  5200 FORMAT(5X,'Execution will be stopped after listing of last ',
72471      &'event!')
72472  5300 FORMAT(/5X,'Fatal error type',I2,' has occured after',I9,
72473      &' PYEXEC calls:'/5X,A/5X,'Execution will now be stopped!')
72474  
72475       RETURN
72476       END
72477  
72478 C*********************************************************************
72479  
72480 C...PYALEM
72481 C...Calculates the running alpha_electromagnetic.
72482  
72483       FUNCTION PYALEM(Q2)
72484  
72485 C...Double precision and integer declarations.
72486       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72487       IMPLICIT INTEGER(I-N)
72488       INTEGER PYK,PYCHGE,PYCOMP
72489 C...Commonblocks.
72490       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72491       SAVE /PYDAT1/
72492  
72493 C...Calculate real part of photon vacuum polarization.
72494 C...For leptons simplify by using asymptotic (Q^2 >> m^2) expressions.
72495 C...For hadrons use parametrization of H. Burkhardt et al.
72496 C...See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131.
72497       AEMPI=PARU(101)/(3D0*PARU(1))
72498       IF(MSTU(101).LE.0.OR.Q2.LT.2D-6) THEN
72499         RPIGG=0D0
72500       ELSEIF(MSTU(101).EQ.2.AND.Q2.LT.PARU(104)) THEN
72501         RPIGG=0D0
72502       ELSEIF(MSTU(101).EQ.2) THEN
72503         RPIGG=1D0-PARU(101)/PARU(103)
72504       ELSEIF(Q2.LT.0.09D0) THEN
72505         RPIGG=AEMPI*(13.4916D0+LOG(Q2))+0.00835D0*LOG(1D0+Q2)
72506       ELSEIF(Q2.LT.9D0) THEN
72507         RPIGG=AEMPI*(16.3200D0+2D0*LOG(Q2))+
72508      &  0.00238D0*LOG(1D0+3.927D0*Q2)
72509       ELSEIF(Q2.LT.1D4) THEN
72510         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00165D0+
72511      &  0.00299D0*LOG(1D0+Q2)
72512       ELSE
72513         RPIGG=AEMPI*(13.4955D0+3D0*LOG(Q2))+0.00221D0+
72514      &  0.00293D0*LOG(1D0+Q2)
72515       ENDIF
72516  
72517 C...Calculate running alpha_em.
72518       PYALEM=PARU(101)/(1D0-RPIGG)
72519       PARU(108)=PYALEM
72520  
72521       RETURN
72522       END
72523  
72524 C*********************************************************************
72525  
72526 C...PYALPS
72527 C...Gives the value of alpha_strong.
72528  
72529       FUNCTION PYALPS(Q2)
72530  
72531 C...Double precision and integer declarations.
72532       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72533       IMPLICIT INTEGER(I-N)
72534       INTEGER PYK,PYCHGE,PYCOMP
72535 C...Commonblocks.
72536       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72537       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72538       SAVE /PYDAT1/,/PYDAT2/
72539 C...Coefficients for second-order threshold matching.
72540 C...From W.J. Marciano, Phys. Rev. D29 (1984) 580.
72541       DIMENSION STEPDN(6),STEPUP(6)
72542 c      DATA STEPDN/0D0,0D0,(2D0*107D0/2025D0),(2D0*963D0/14375D0),
72543 c     &(2D0*321D0/3703D0),0D0/
72544 c      DATA STEPUP/0D0,0D0,0D0,(-2D0*107D0/1875D0),
72545 c     &(-2D0*963D0/13225D0),(-2D0*321D0/3381D0)/
72546       DATA STEPDN/0D0,0D0,0.10568D0,0.13398D0,0.17337D0,0D0/
72547       DATA STEPUP/0D0,0D0,0D0,-0.11413D0,-0.14563D0,-0.18988D0/
72548  
72549 C...Constant alpha_strong trivial. Pick artificial Lambda.
72550       IF(MSTU(111).LE.0) THEN
72551         PYALPS=PARU(111)
72552         MSTU(118)=MSTU(112)
72553         PARU(117)=0.2D0
72554         IF(Q2.GT.0.04D0) PARU(117)=SQRT(Q2)*EXP(-6D0*PARU(1)/
72555      &  ((33D0-2D0*MSTU(112))*PARU(111)))
72556         PARU(118)=PARU(111)
72557         RETURN
72558       ENDIF
72559  
72560 C...Find effective Q2, number of flavours and Lambda.
72561       Q2EFF=Q2
72562       IF(MSTU(115).GE.2) Q2EFF=MAX(Q2,PARU(114))
72563       NF=MSTU(112)
72564       ALAM2=PARU(112)**2
72565   100 IF(NF.GT.MAX(3,MSTU(113))) THEN
72566         Q2THR=PARU(113)*PMAS(NF,1)**2
72567         IF(Q2EFF.LT.Q2THR) THEN
72568           NF=NF-1
72569           Q2RAT=Q2THR/ALAM2
72570           ALAM2=ALAM2*Q2RAT**(2D0/(33D0-2D0*NF))
72571           IF(MSTU(111).EQ.2) ALAM2=ALAM2*LOG(Q2RAT)**STEPDN(NF)
72572           GOTO 100
72573         ENDIF
72574       ENDIF
72575   110 IF(NF.LT.MIN(6,MSTU(114))) THEN
72576         Q2THR=PARU(113)*PMAS(NF+1,1)**2
72577         IF(Q2EFF.GT.Q2THR) THEN
72578           NF=NF+1
72579           Q2RAT=Q2THR/ALAM2
72580           ALAM2=ALAM2*Q2RAT**(-2D0/(33D0-2D0*NF))
72581           IF(MSTU(111).EQ.2) ALAM2=ALAM2*LOG(Q2RAT)**STEPUP(NF)
72582           GOTO 110
72583         ENDIF
72584       ENDIF
72585       IF(MSTU(115).EQ.1) Q2EFF=Q2EFF+ALAM2
72586       PARU(117)=SQRT(ALAM2)
72587  
72588 C...Evaluate first or second order alpha_strong.
72589       B0=(33D0-2D0*NF)/6D0
72590       ALGQ=LOG(MAX(1.0001D0,Q2EFF/ALAM2))
72591       IF(MSTU(111).EQ.1) THEN
72592         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ))
72593       ELSE
72594         B1=(153D0-19D0*NF)/6D0
72595         PYALPS=MIN(PARU(115),PARU(2)/(B0*ALGQ)*(1D0-B1*LOG(ALGQ)/
72596      &  (B0**2*ALGQ)))
72597       ENDIF
72598       MSTU(118)=NF
72599       PARU(118)=PYALPS
72600  
72601       RETURN
72602       END
72603  
72604 C*********************************************************************
72605  
72606 C...PYANGL
72607 C...Reconstructs an angle from given x and y coordinates.
72608  
72609       FUNCTION PYANGL(X,Y)
72610  
72611 C...Double precision and integer declarations.
72612       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72613       IMPLICIT INTEGER(I-N)
72614       INTEGER PYK,PYCHGE,PYCOMP
72615 C...Commonblocks.
72616       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72617       SAVE /PYDAT1/
72618  
72619       PYANGL=0D0
72620       R=SQRT(X**2+Y**2)
72621       IF(R.LT.1D-20) RETURN
72622       IF(ABS(X)/R.LT.0.8D0) THEN
72623         PYANGL=SIGN(ACOS(X/R),Y)
72624       ELSE
72625         PYANGL=ASIN(Y/R)
72626         IF(X.LT.0D0.AND.PYANGL.GE.0D0) THEN
72627           PYANGL=PARU(1)-PYANGL
72628         ELSEIF(X.LT.0D0) THEN
72629           PYANGL=-PARU(1)-PYANGL
72630         ENDIF
72631       ENDIF
72632  
72633       RETURN
72634       END
72635  
72636 C*********************************************************************
72637  
72638 C...PYR
72639 C...Generates random numbers uniformly distributed between
72640 C...0 and 1, excluding the endpoints.
72641  
72642       FUNCTION PYR(IDUMMY)
72643  
72644 C...Double precision and integer declarations.
72645       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72646       IMPLICIT INTEGER(I-N)
72647       INTEGER PYK,PYCHGE,PYCOMP
72648 C...Commonblocks.
72649       COMMON/PYDATR/MRPY(6),RRPY(100)
72650       SAVE /PYDATR/
72651 C...Equivalence between commonblock and local variables.
72652       EQUIVALENCE (MRPY1,MRPY(1)),(MRPY2,MRPY(2)),(MRPY3,MRPY(3)),
72653      &(MRPY4,MRPY(4)),(MRPY5,MRPY(5)),(MRPY6,MRPY(6)),
72654      &(RRPY98,RRPY(98)),(RRPY99,RRPY(99)),(RRPY00,RRPY(100))
72655  
72656 C...Initialize generation from given seed.
72657       IF(MRPY2.EQ.0) THEN
72658         IJ=MOD(MRPY1/30082,31329)
72659         KL=MOD(MRPY1,30082)
72660         I=MOD(IJ/177,177)+2
72661         J=MOD(IJ,177)+2
72662         K=MOD(KL/169,178)+1
72663         L=MOD(KL,169)
72664         DO 110 II=1,97
72665           S=0D0
72666           T=0.5D0
72667           DO 100 JJ=1,48
72668             M=MOD(MOD(I*J,179)*K,179)
72669             I=J
72670             J=K
72671             K=M
72672             L=MOD(53*L+1,169)
72673             IF(MOD(L*M,64).GE.32) S=S+T
72674             T=0.5D0*T
72675   100     CONTINUE
72676           RRPY(II)=S
72677   110   CONTINUE
72678         TWOM24=1D0
72679         DO 120 I24=1,24
72680           TWOM24=0.5D0*TWOM24
72681   120   CONTINUE
72682         RRPY98=362436D0*TWOM24
72683         RRPY99=7654321D0*TWOM24
72684         RRPY00=16777213D0*TWOM24
72685         MRPY2=1
72686         MRPY3=0
72687         MRPY4=97
72688         MRPY5=33
72689       ENDIF
72690  
72691 C...Generate next random number.
72692   130 RUNI=RRPY(MRPY4)-RRPY(MRPY5)
72693       IF(RUNI.LT.0D0) RUNI=RUNI+1D0
72694       RRPY(MRPY4)=RUNI
72695       MRPY4=MRPY4-1
72696       IF(MRPY4.EQ.0) MRPY4=97
72697       MRPY5=MRPY5-1
72698       IF(MRPY5.EQ.0) MRPY5=97
72699       RRPY98=RRPY98-RRPY99
72700       IF(RRPY98.LT.0D0) RRPY98=RRPY98+RRPY00
72701       RUNI=RUNI-RRPY98
72702       IF(RUNI.LT.0D0) RUNI=RUNI+1D0
72703       IF(RUNI.LE.0D0.OR.RUNI.GE.1D0) GOTO 130
72704  
72705 C...Update counters. Random number to output.
72706       MRPY3=MRPY3+1
72707       IF(MRPY3.EQ.1000000000) THEN
72708         MRPY2=MRPY2+1
72709         MRPY3=0
72710       ENDIF
72711       PYR=RUNI
72712  
72713       RETURN
72714       END
72715  
72716 C*********************************************************************
72717  
72718 C...PYRGET
72719 C...Dumps the state of the random number generator on a file
72720 C...for subsequent startup from this state onwards.
72721  
72722       SUBROUTINE PYRGET(LFN,MOVE)
72723  
72724 C...Double precision and integer declarations.
72725       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72726       IMPLICIT INTEGER(I-N)
72727       INTEGER PYK,PYCHGE,PYCOMP
72728 C...Commonblocks.
72729       COMMON/PYDATR/MRPY(6),RRPY(100)
72730       SAVE /PYDATR/
72731 C...Local character variable.
72732       CHARACTER CHERR*8
72733  
72734 C...Backspace required number of records (or as many as there are).
72735       IF(MOVE.LT.0) THEN
72736         NBCK=MIN(MRPY(6),-MOVE)
72737         DO 100 IBCK=1,NBCK
72738           BACKSPACE(LFN,ERR=110,IOSTAT=IERR)
72739   100   CONTINUE
72740         MRPY(6)=MRPY(6)-NBCK
72741       ENDIF
72742  
72743 C...Unformatted write on unit LFN.
72744       WRITE(LFN,ERR=110,IOSTAT=IERR) (MRPY(I1),I1=1,5),
72745      &(RRPY(I2),I2=1,100)
72746       MRPY(6)=MRPY(6)+1
72747       RETURN
72748  
72749 C...Write error.
72750   110 WRITE(CHERR,'(I8)') IERR
72751       CALL PYERRM(18,'(PYRGET:) error when accessing file, IOSTAT ='//
72752      &CHERR)
72753  
72754       RETURN
72755       END
72756  
72757 C*********************************************************************
72758  
72759 C...PYRSET
72760 C...Reads a state of the random number generator from a file
72761 C...for subsequent generation from this state onwards.
72762  
72763       SUBROUTINE PYRSET(LFN,MOVE)
72764  
72765 C...Double precision and integer declarations.
72766       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72767       IMPLICIT INTEGER(I-N)
72768       INTEGER PYK,PYCHGE,PYCOMP
72769 C...Commonblocks.
72770       COMMON/PYDATR/MRPY(6),RRPY(100)
72771       SAVE /PYDATR/
72772 C...Local character variable.
72773       CHARACTER CHERR*8
72774  
72775 C...Backspace required number of records (or as many as there are).
72776       IF(MOVE.LT.0) THEN
72777         NBCK=MIN(MRPY(6),-MOVE)
72778         DO 100 IBCK=1,NBCK
72779           BACKSPACE(LFN,ERR=120,IOSTAT=IERR)
72780   100   CONTINUE
72781         MRPY(6)=MRPY(6)-NBCK
72782       ENDIF
72783  
72784 C...Unformatted read from unit LFN.
72785       NFOR=1+MAX(0,MOVE)
72786       DO 110 IFOR=1,NFOR
72787         READ(LFN,ERR=120,IOSTAT=IERR) (MRPY(I1),I1=1,5),
72788      &  (RRPY(I2),I2=1,100)
72789   110 CONTINUE
72790       MRPY(6)=MRPY(6)+NFOR
72791       RETURN
72792  
72793 C...Write error.
72794   120 WRITE(CHERR,'(I8)') IERR
72795       CALL PYERRM(18,'(PYRSET:) error when accessing file, IOSTAT ='//
72796      &CHERR)
72797  
72798       RETURN
72799       END
72800  
72801 C*********************************************************************
72802  
72803 C...PYROBO
72804 C...Performs rotations and boosts.
72805  
72806       SUBROUTINE PYROBO(IMI,IMA,THE,PHI,BEX,BEY,BEZ)
72807  
72808 C...Double precision and integer declarations.
72809       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72810       IMPLICIT INTEGER(I-N)
72811       INTEGER PYK,PYCHGE,PYCOMP
72812 C...Commonblocks.
72813       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72814       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72815       SAVE /PYJETS/,/PYDAT1/
72816 C...Local arrays.
72817       DIMENSION ROT(3,3),PR(3),VR(3),DP(4),DV(4)
72818  
72819 C...Find and check range of rotation/boost.
72820       IMIN=IMI
72821       IF(IMIN.LE.0) IMIN=1
72822       IF(MSTU(1).GT.0) IMIN=MSTU(1)
72823       IMAX=IMA
72824       IF(IMAX.LE.0) IMAX=N
72825       IF(MSTU(2).GT.0) IMAX=MSTU(2)
72826       IF(IMIN.GT.MSTU(4).OR.IMAX.GT.MSTU(4)) THEN
72827         CALL PYERRM(11,'(PYROBO:) range outside PYJETS memory')
72828         RETURN
72829       ENDIF
72830  
72831 C...Optional resetting of V (when not set before.)
72832       IF(MSTU(33).NE.0) THEN
72833         DO 110 I=MIN(IMIN,MSTU(4)),MIN(IMAX,MSTU(4))
72834           DO 100 J=1,5
72835             V(I,J)=0D0
72836   100     CONTINUE
72837   110   CONTINUE
72838         MSTU(33)=0
72839       ENDIF
72840  
72841 C...Rotate, typically from z axis to direction (theta,phi).
72842       IF(THE**2+PHI**2.GT.1D-20) THEN
72843         ROT(1,1)=COS(THE)*COS(PHI)
72844         ROT(1,2)=-SIN(PHI)
72845         ROT(1,3)=SIN(THE)*COS(PHI)
72846         ROT(2,1)=COS(THE)*SIN(PHI)
72847         ROT(2,2)=COS(PHI)
72848         ROT(2,3)=SIN(THE)*SIN(PHI)
72849         ROT(3,1)=-SIN(THE)
72850         ROT(3,2)=0D0
72851         ROT(3,3)=COS(THE)
72852         DO 140 I=IMIN,IMAX
72853           IF(K(I,1).LE.0) GOTO 140
72854           DO 120 J=1,3
72855             PR(J)=P(I,J)
72856             VR(J)=V(I,J)
72857   120     CONTINUE
72858           DO 130 J=1,3
72859             P(I,J)=ROT(J,1)*PR(1)+ROT(J,2)*PR(2)+ROT(J,3)*PR(3)
72860             V(I,J)=ROT(J,1)*VR(1)+ROT(J,2)*VR(2)+ROT(J,3)*VR(3)
72861   130     CONTINUE
72862   140   CONTINUE
72863       ENDIF
72864  
72865 C...Boost, typically from rest to momentum/energy=beta.
72866       IF(BEX**2+BEY**2+BEZ**2.GT.1D-20) THEN
72867         DBX=BEX
72868         DBY=BEY
72869         DBZ=BEZ
72870         DB=SQRT(DBX**2+DBY**2+DBZ**2)
72871         EPS1=1D0-1D-12
72872         IF(DB.GT.EPS1) THEN
72873 C...Rescale boost vector if too close to unity.
72874           CALL PYERRM(3,'(PYROBO:) boost vector too large')
72875           DBX=DBX*(EPS1/DB)
72876           DBY=DBY*(EPS1/DB)
72877           DBZ=DBZ*(EPS1/DB)
72878           DB=EPS1
72879         ENDIF
72880         DGA=1D0/SQRT(1D0-DB**2)
72881         DO 160 I=IMIN,IMAX
72882           IF(K(I,1).LE.0) GOTO 160
72883           DO 150 J=1,4
72884             DP(J)=P(I,J)
72885             DV(J)=V(I,J)
72886   150     CONTINUE
72887           DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3)
72888           DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4))
72889           P(I,1)=DP(1)+DGABP*DBX
72890           P(I,2)=DP(2)+DGABP*DBY
72891           P(I,3)=DP(3)+DGABP*DBZ
72892           P(I,4)=DGA*(DP(4)+DBP)
72893           DBV=DBX*DV(1)+DBY*DV(2)+DBZ*DV(3)
72894           DGABV=DGA*(DGA*DBV/(1D0+DGA)+DV(4))
72895           V(I,1)=DV(1)+DGABV*DBX
72896           V(I,2)=DV(2)+DGABV*DBY
72897           V(I,3)=DV(3)+DGABV*DBZ
72898           V(I,4)=DGA*(DV(4)+DBV)
72899   160   CONTINUE
72900       ENDIF
72901  
72902       RETURN
72903       END
72904  
72905 C*********************************************************************
72906  
72907 C...PYEDIT
72908 C...Performs global manipulations on the event record, in particular
72909 C...to exclude unstable or undetectable partons/particles.
72910  
72911       SUBROUTINE PYEDIT(MEDIT)
72912  
72913 C...Double precision and integer declarations.
72914       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
72915       IMPLICIT INTEGER(I-N)
72916       INTEGER PYK,PYCHGE,PYCOMP
72917 C...Parameter statement to help give large particle numbers.
72918       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
72919      &KEXCIT=4000000,KDIMEN=5000000)
72920 C...Commonblocks.
72921       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
72922       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
72923       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
72924       COMMON/PYCTAG/NCT,MCT(4000,2)
72925       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYCTAG/
72926 C...Local arrays.
72927       DIMENSION NS(2),PTS(2),PLS(2)
72928  
72929 C...Remove unwanted partons/particles.
72930       IF((MEDIT.GE.0.AND.MEDIT.LE.3).OR.MEDIT.EQ.5) THEN
72931         IMAX=N
72932         IF(MSTU(2).GT.0) IMAX=MSTU(2)
72933         I1=MAX(1,MSTU(1))-1
72934         DO 110 I=MAX(1,MSTU(1)),IMAX
72935           IF(K(I,1).EQ.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40)) GOTO 110
72936           IF(MEDIT.EQ.1) THEN
72937             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
72938           ELSEIF(MEDIT.EQ.2) THEN
72939             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
72940             KC=PYCOMP(K(I,2))
72941             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
72942      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
72943      &      K(I,2).EQ.KSUSY1+39) GOTO 110
72944           ELSEIF(MEDIT.EQ.3) THEN
72945             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42) GOTO 110
72946             KC=PYCOMP(K(I,2))
72947             IF(KC.EQ.0) GOTO 110
72948             IF(KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0) GOTO 110
72949           ELSEIF(MEDIT.EQ.5) THEN
72950             IF(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.K(I,1).EQ.52) GOTO 110
72951             KC=PYCOMP(K(I,2))
72952             IF(KC.EQ.0) GOTO 110
72953             IF(K(I,1).GT.10.AND.K(I,1).NE.41.AND.K(I,1).NE.42.AND.
72954      &      KCHG(KC,2).EQ.0) GOTO 110
72955           ENDIF
72956  
72957 C...Pack remaining partons/particles. Origin no longer known.
72958           I1=I1+1
72959           DO 100 J=1,5
72960             K(I1,J)=K(I,J)
72961             P(I1,J)=P(I,J)
72962             V(I1,J)=V(I,J)
72963   100     CONTINUE
72964           K(I1,3)=0
72965   110   CONTINUE
72966         IF(I1.LT.N) MSTU(3)=0
72967         IF(I1.LT.N) MSTU(70)=0
72968         N=I1
72969  
72970 C...Selective removal of class of entries. New position of retained.
72971       ELSEIF(MEDIT.GE.11.AND.MEDIT.LE.15) THEN
72972         I1=0
72973         DO 120 I=1,N
72974           K(I,3)=MOD(K(I,3),MSTU(5))
72975           IF(MEDIT.EQ.11.AND.K(I,1).LT.0) GOTO 120
72976           IF(MEDIT.EQ.12.AND.K(I,1).EQ.0) GOTO 120
72977           IF(MEDIT.EQ.13.AND.(K(I,1).EQ.11.OR.K(I,1).EQ.12.OR.
72978      &    K(I,1).EQ.15.OR.K(I,1).EQ.51).AND.K(I,2).NE.94) GOTO 120
72979           IF(MEDIT.EQ.14.AND.(K(I,1).EQ.13.OR.K(I,1).EQ.14.OR.
72980      &    K(I,1).EQ.52.OR.K(I,2).EQ.94)) GOTO 120
72981           IF(MEDIT.EQ.15.AND.K(I,1).GE.21.AND.K(I,1).LE.40) GOTO 120
72982           I1=I1+1
72983           K(I,3)=K(I,3)+MSTU(5)*I1
72984   120   CONTINUE
72985  
72986 C...Find new event history information and replace old.
72987         DO 140 I=1,N
72988           IF(K(I,1).LE.0.OR.(K(I,1).GE.21.AND.K(I,1).LE.40).OR.
72989      &    K(I,3)/MSTU(5).EQ.0) GOTO 140
72990           ID=I
72991   130     IM=MOD(K(ID,3),MSTU(5))
72992           IF(MEDIT.EQ.13.AND.IM.GT.0.AND.IM.LE.N) THEN
72993             IF((K(IM,1).EQ.11.OR.K(IM,1).EQ.12.OR.K(IM,1).EQ.15.OR.
72994      &      K(IM,1).EQ.51).AND.K(IM,2).NE.94) THEN
72995               ID=IM
72996               GOTO 130
72997             ENDIF
72998           ELSEIF(MEDIT.EQ.14.AND.IM.GT.0.AND.IM.LE.N) THEN
72999             IF(K(IM,1).EQ.13.OR.K(IM,1).EQ.14.OR.K(IM,1).EQ.52.OR.
73000      &      K(IM,2).EQ.94) THEN
73001               ID=IM
73002               GOTO 130
73003             ENDIF
73004           ENDIF
73005           K(I,3)=MSTU(5)*(K(I,3)/MSTU(5))
73006           IF(IM.NE.0) K(I,3)=K(I,3)+K(IM,3)/MSTU(5)
73007           IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14.AND.
73008      &      K(I,1).NE.42.AND.K(I,1).NE.52) THEN
73009             IF(K(I,4).GT.0.AND.K(I,4).LE.MSTU(4)) K(I,4)=
73010      &      K(K(I,4),3)/MSTU(5)
73011             IF(K(I,5).GT.0.AND.K(I,5).LE.MSTU(4)) K(I,5)=
73012      &      K(K(I,5),3)/MSTU(5)
73013           ELSE
73014             KCM=MOD(K(I,4)/MSTU(5),MSTU(5))
73015             IF(KCM.GT.0.AND.KCM.LE.MSTU(4).AND.K(I,1).NE.42.AND.
73016      &      K(I,1).NE.52) KCM=K(KCM,3)/MSTU(5)
73017             KCD=MOD(K(I,4),MSTU(5))
73018             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
73019             K(I,4)=MSTU(5)**2*(K(I,4)/MSTU(5)**2)+MSTU(5)*KCM+KCD
73020             KCM=MOD(K(I,5)/MSTU(5),MSTU(5))
73021             IF(KCM.GT.0.AND.KCM.LE.MSTU(4)) KCM=K(KCM,3)/MSTU(5)
73022             KCD=MOD(K(I,5),MSTU(5))
73023             IF(KCD.GT.0.AND.KCD.LE.MSTU(4)) KCD=K(KCD,3)/MSTU(5)
73024             K(I,5)=MSTU(5)**2*(K(I,5)/MSTU(5)**2)+MSTU(5)*KCM+KCD
73025           ENDIF
73026   140   CONTINUE
73027  
73028 C...Pack remaining entries.
73029         I1=0
73030         MSTU90=MSTU(90)
73031         MSTU(90)=0
73032         DO 170 I=1,N
73033           IF(K(I,3)/MSTU(5).EQ.0) GOTO 170
73034           I1=I1+1
73035           DO 150 J=1,5
73036             K(I1,J)=K(I,J)
73037             P(I1,J)=P(I,J)
73038             V(I1,J)=V(I,J)
73039   150     CONTINUE
73040 C...Also update LHA1 colour tags
73041           MCT(I1,1)=MCT(I,1)
73042           MCT(I1,2)=MCT(I,2)
73043           K(I1,3)=MOD(K(I1,3),MSTU(5))
73044           DO 160 IZ=1,MSTU90
73045             IF(I.EQ.MSTU(90+IZ)) THEN
73046               MSTU(90)=MSTU(90)+1
73047               MSTU(90+MSTU(90))=I1
73048               PARU(90+MSTU(90))=PARU(90+IZ)
73049             ENDIF
73050   160     CONTINUE
73051   170   CONTINUE
73052         IF(I1.LT.N) MSTU(3)=0
73053         IF(I1.LT.N) MSTU(70)=0
73054         N=I1
73055  
73056 C...Fill in some missing daughter pointers (lost in colour flow).
73057       ELSEIF(MEDIT.EQ.16) THEN
73058         DO 220 I=1,N
73059           IF(K(I,1).LE.10.OR.(K(I,1).GE.21.AND.K(I,1).LE.50)) GOTO 220
73060           IF(K(I,4).NE.0.OR.K(I,5).NE.0) GOTO 220
73061 C...Find daughters who point to mother.
73062           DO 180 I1=I+1,N
73063             IF(K(I1,3).NE.I) THEN
73064             ELSEIF(K(I,4).EQ.0) THEN
73065               K(I,4)=I1
73066             ELSE
73067               K(I,5)=I1
73068             ENDIF
73069   180     CONTINUE
73070           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
73071           IF(K(I,4).NE.0) GOTO 220
73072 C...Find daughters who point to documentation version of mother.
73073           IM=K(I,3)
73074           IF(IM.LE.0.OR.IM.GE.I) GOTO 220
73075           IF(K(IM,1).LE.20.OR.K(IM,1).GT.30) GOTO 220
73076           IF(K(IM,2).NE.K(I,2).OR.ABS(P(IM,5)-P(I,5)).GT.1D-2) GOTO 220
73077           DO 190 I1=I+1,N
73078             IF(K(I1,3).NE.IM) THEN
73079             ELSEIF(K(I,4).EQ.0) THEN
73080               K(I,4)=I1
73081             ELSE
73082               K(I,5)=I1
73083             ENDIF
73084   190     CONTINUE
73085           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
73086           IF(K(I,4).NE.0) GOTO 220
73087 C...Find daughters who point to documentation daughters who,
73088 C...in their turn, point to documentation mother.
73089           ID1=IM
73090           ID2=IM
73091           DO 200 I1=IM+1,I-1
73092             IF(K(I1,3).EQ.IM.AND.K(I1,1).GE.21.AND.K(I1,1).LE.30) THEN
73093               ID2=I1
73094               IF(ID1.EQ.IM) ID1=I1
73095             ENDIF
73096   200     CONTINUE
73097           DO 210 I1=I+1,N
73098             IF(K(I1,3).NE.ID1.AND.K(I1,3).NE.ID2) THEN
73099             ELSEIF(K(I,4).EQ.0) THEN
73100               K(I,4)=I1
73101             ELSE
73102               K(I,5)=I1
73103             ENDIF
73104   210     CONTINUE
73105           IF(K(I,5).EQ.0) K(I,5)=K(I,4)
73106   220   CONTINUE
73107  
73108 C...Save top entries at bottom of PYJETS commonblock.
73109       ELSEIF(MEDIT.EQ.21) THEN
73110         IF(2*N.GE.MSTU(4)) THEN
73111           CALL PYERRM(11,'(PYEDIT:) no more memory left in PYJETS')
73112           RETURN
73113         ENDIF
73114         DO 240 I=1,N
73115           DO 230 J=1,5
73116             K(MSTU(4)-I,J)=K(I,J)
73117             P(MSTU(4)-I,J)=P(I,J)
73118             V(MSTU(4)-I,J)=V(I,J)
73119   230     CONTINUE
73120   240   CONTINUE
73121         MSTU(32)=N
73122  
73123 C...Restore bottom entries of commonblock PYJETS to top.
73124       ELSEIF(MEDIT.EQ.22) THEN
73125         DO 260 I=1,MSTU(32)
73126           DO 250 J=1,5
73127             K(I,J)=K(MSTU(4)-I,J)
73128             P(I,J)=P(MSTU(4)-I,J)
73129             V(I,J)=V(MSTU(4)-I,J)
73130   250     CONTINUE
73131   260   CONTINUE
73132         N=MSTU(32)
73133  
73134 C...Mark primary entries at top of commonblock PYJETS as untreated.
73135       ELSEIF(MEDIT.EQ.23) THEN
73136         I1=0
73137         DO 270 I=1,N
73138           KH=K(I,3)
73139           IF(KH.GE.1) THEN
73140             IF(K(KH,1).GE.21.AND.K(KH,1).LE.30) KH=0
73141           ENDIF
73142           IF(KH.NE.0) GOTO 280
73143           I1=I1+1
73144           IF(K(I,1).GE.11.AND.K(I,1).LE.20) K(I,1)=K(I,1)-10
73145           IF(K(I,1).GE.51.AND.K(I,1).LE.60) K(I,1)=K(I,1)-10
73146   270   CONTINUE
73147   280   N=I1
73148  
73149 C...Place largest axis along z axis and second largest in xy plane.
73150       ELSEIF(MEDIT.EQ.31.OR.MEDIT.EQ.32) THEN
73151         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61),1),
73152      &  P(MSTU(61),2)),0D0,0D0,0D0)
73153         CALL PYROBO(1,N+MSTU(3),-PYANGL(P(MSTU(61),3),
73154      &  P(MSTU(61),1)),0D0,0D0,0D0,0D0)
73155         CALL PYROBO(1,N+MSTU(3),0D0,-PYANGL(P(MSTU(61)+1,1),
73156      &  P(MSTU(61)+1,2)),0D0,0D0,0D0)
73157         IF(MEDIT.EQ.31) RETURN
73158  
73159 C...Rotate to put slim jet along +z axis.
73160         DO 290 IS=1,2
73161           NS(IS)=0
73162           PTS(IS)=0D0
73163           PLS(IS)=0D0
73164   290   CONTINUE
73165         DO 300 I=1,N
73166           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 300
73167           IF(MSTU(41).GE.2) THEN
73168             KC=PYCOMP(K(I,2))
73169             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
73170      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
73171      &      K(I,2).EQ.KSUSY1+39) GOTO 300
73172             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
73173      &      .EQ.0) GOTO 300
73174           ENDIF
73175           IS=2D0-SIGN(0.5D0,P(I,3))
73176           NS(IS)=NS(IS)+1
73177           PTS(IS)=PTS(IS)+SQRT(P(I,1)**2+P(I,2)**2)
73178   300   CONTINUE
73179         IF(NS(1)*PTS(2)**2.LT.NS(2)*PTS(1)**2)
73180      &  CALL PYROBO(1,N+MSTU(3),PARU(1),0D0,0D0,0D0,0D0)
73181  
73182 C...Rotate to put second largest jet into -z,+x quadrant.
73183         DO 310 I=1,N
73184           IF(P(I,3).GE.0D0) GOTO 310
73185           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 310
73186           IF(MSTU(41).GE.2) THEN
73187             KC=PYCOMP(K(I,2))
73188             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
73189      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
73190      &      K(I,2).EQ.KSUSY1+39) GOTO 310
73191             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2))
73192      &      .EQ.0) GOTO 310
73193           ENDIF
73194           IS=2D0-SIGN(0.5D0,P(I,1))
73195           PLS(IS)=PLS(IS)-P(I,3)
73196   310   CONTINUE
73197         IF(PLS(2).GT.PLS(1)) CALL PYROBO(1,N+MSTU(3),0D0,PARU(1),
73198      &  0D0,0D0,0D0)
73199       ENDIF
73200  
73201       RETURN
73202       END
73203  
73204 C*********************************************************************
73205  
73206 C...PYLIST
73207 C...Gives program heading, or lists an event, or particle
73208 C...data, or current parameter values.
73209  
73210       SUBROUTINE PYLIST(MLIST)
73211  
73212 C...Double precision and integer declarations.
73213       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73214       IMPLICIT INTEGER(I-N)
73215       INTEGER PYK,PYCHGE,PYCOMP
73216 C...Parameter statement to help give large particle numbers.
73217       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
73218      &KEXCIT=4000000,KDIMEN=5000000)
73219  
73220 C...HEPEVT commonblock.
73221       PARAMETER (NMXHEP=4000)
73222       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
73223      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
73224       DOUBLE PRECISION PHEP,VHEP
73225       SAVE /HEPEVT/
73226  
73227 C...User process event common block.
73228       INTEGER MAXNUP
73229       PARAMETER (MAXNUP=500)
73230       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
73231       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
73232       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
73233      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
73234      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
73235       SAVE /HEPEUP/
73236  
73237 C...Commonblocks.
73238       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
73239       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73240       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
73241       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
73242       COMMON/PYCTAG/NCT,MCT(4000,2)
73243       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYCTAG/
73244 C...Local arrays, character variables and data.
73245       CHARACTER CHAP*16,CHAC*16,CHAN*16,CHAD(5)*16,CHDL(7)*4
73246       DIMENSION PS(6)
73247       DATA CHDL/'(())',' ','()','!!','<>','==','(==)'/
73248  
73249 C...Initialization printout: version number and date of last change.
73250       IF(MLIST.EQ.0.OR.MSTU(12).EQ.1) THEN
73251         CALL PYLOGO
73252         MSTU(12)=12345
73253         IF(MLIST.EQ.0) RETURN
73254       ENDIF
73255  
73256 C...List event data, including additional lines after N.
73257       IF(MLIST.GE.1.AND.MLIST.LE.4) THEN
73258         IF(MLIST.EQ.1) WRITE(MSTU(11),5100)
73259         IF(MLIST.EQ.2) WRITE(MSTU(11),5200)
73260         IF(MLIST.EQ.3) WRITE(MSTU(11),5300)
73261         IF(MLIST.EQ.4) WRITE(MSTU(11),5400)
73262         LMX=12
73263         IF(MLIST.GE.2) LMX=16
73264         ISTR=0
73265         IMAX=N
73266         IF(MSTU(2).GT.0) IMAX=MSTU(2)
73267         DO 120 I=MAX(1,MSTU(1)),MAX(IMAX,N+MAX(0,MSTU(3)))
73268           IF(I.GT.IMAX.AND.I.LE.N) GOTO 120
73269           IF(MSTU(15).EQ.0.AND.K(I,1).LE.0) GOTO 120
73270           IF(MSTU(15).EQ.1.AND.K(I,1).LT.0) GOTO 120
73271  
73272 C...Get particle name, pad it and check it is not too long.
73273           CALL PYNAME(K(I,2),CHAP)
73274           LEN=0
73275           DO 100 LEM=1,16
73276             IF(CHAP(LEM:LEM).NE.' ') LEN=LEM
73277   100     CONTINUE
73278           MDL=(K(I,1)+19)/10
73279           LDL=0
73280           IF(MDL.EQ.2.OR.MDL.GE.8) THEN
73281             CHAC=CHAP
73282             IF(LEN.GT.LMX) CHAC(LMX:LMX)='?'
73283           ELSE
73284             LDL=1
73285             IF(MDL.EQ.1.OR.MDL.EQ.7) LDL=2
73286             IF(LEN.EQ.0) THEN
73287               CHAC=CHDL(MDL)(1:2*LDL)//' '
73288             ELSE
73289               CHAC=CHDL(MDL)(1:LDL)//CHAP(1:MIN(LEN,LMX-2*LDL))//
73290      &        CHDL(MDL)(LDL+1:2*LDL)//' '
73291               IF(LEN+2*LDL.GT.LMX) CHAC(LMX:LMX)='?'
73292             ENDIF
73293           ENDIF
73294  
73295 C...Add information on string connection.
73296           IF(K(I,1).EQ.1.OR.K(I,1).EQ.2.OR.K(I,1).EQ.11.OR.K(I,1).EQ.12)
73297      &    THEN
73298             KC=PYCOMP(K(I,2))
73299             KCC=0
73300             IF(KC.NE.0) KCC=KCHG(KC,2)
73301             IF(IABS(K(I,2)).EQ.39) THEN
73302               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='X'
73303             ELSEIF(KCC.NE.0.AND.ISTR.EQ.0) THEN
73304               ISTR=1
73305               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='A'
73306             ELSEIF(KCC.NE.0.AND.(K(I,1).EQ.2.OR.K(I,1).EQ.12)) THEN
73307               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='I'
73308             ELSEIF(KCC.NE.0) THEN
73309               ISTR=0
73310               IF(LEN+2*LDL+3.LE.LMX) CHAC(LMX-1:LMX-1)='V'
73311             ENDIF
73312           ENDIF
73313           IF((K(I,1).EQ.41.OR.K(I,1).EQ.51).AND.LEN+2*LDL+3.LE.LMX)
73314      &    CHAC(LMX-1:LMX-1)='I'
73315  
73316 C...Write data for particle/jet.
73317           IF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.9999D0) THEN
73318             WRITE(MSTU(11),5500) I,CHAC(1:12),(K(I,J1),J1=1,3),
73319      &      (P(I,J2),J2=1,5)
73320           ELSEIF(MLIST.EQ.1.AND.ABS(P(I,4)).LT.99999D0) THEN
73321             WRITE(MSTU(11),5600) I,CHAC(1:12),(K(I,J1),J1=1,3),
73322      &      (P(I,J2),J2=1,5)
73323           ELSEIF(MLIST.EQ.1) THEN
73324             WRITE(MSTU(11),5700) I,CHAC(1:12),(K(I,J1),J1=1,3),
73325      &      (P(I,J2),J2=1,5)
73326           ELSEIF(MSTU(5).EQ.10000.AND.(K(I,1).EQ.3.OR.K(I,1).EQ.13.OR.
73327      &      K(I,1).EQ.14.OR.K(I,1).EQ.42.OR.K(I,1).EQ.52)) THEN
73328             IF(MLIST.NE.4) WRITE(MSTU(11),5800) I,CHAC,(K(I,J1),J1=1,3),
73329      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
73330      &      K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5),10000),
73331      &      (P(I,J2),J2=1,5)
73332             IF(MLIST.EQ.4) WRITE(MSTU(11),5900) I,CHAC,(K(I,J1),J1=1,3),
73333      &      K(I,4)/100000000,MOD(K(I,4)/10000,10000),MOD(K(I,4),10000),
73334      &           K(I,5)/100000000,MOD(K(I,5)/10000,10000),MOD(K(I,5)
73335      &           ,10000),MCT(I,1),MCT(I,2)
73336           ELSE
73337             IF(MLIST.NE.4) WRITE(MSTU(11),6000) I,CHAC,(K(I,J1),J1=1,5),
73338      &      (P(I,J2),J2=1,5)
73339             IF(MLIST.EQ.4) WRITE(MSTU(11),6100) I,CHAC,(K(I,J1),J1=1,5)
73340      &           ,MCT(I,1),MCT(I,2)
73341           ENDIF
73342           IF(MLIST.EQ.3) WRITE(MSTU(11),6200) (V(I,J),J=1,5)
73343  
73344 C...Insert extra separator lines specified by user.
73345           IF(MSTU(70).GE.1) THEN
73346             ISEP=0
73347             DO 110 J=1,MIN(10,MSTU(70))
73348               IF(I.EQ.MSTU(70+J)) ISEP=1
73349   110       CONTINUE
73350             IF(ISEP.EQ.1) THEN
73351               IF(MLIST.EQ.1) WRITE(MSTU(11),6300)
73352               IF(MLIST.EQ.2.OR.MLIST.EQ.3) WRITE(MSTU(11),6400)
73353               IF(MLIST.EQ.4) WRITE(MSTU(11),6500)
73354             ENDIF
73355           ENDIF
73356   120   CONTINUE
73357  
73358 C...Sum of charges and momenta.
73359         DO 130 J=1,6
73360           PS(J)=PYP(0,J)
73361   130   CONTINUE
73362         IF(MLIST.EQ.1.AND.ABS(PS(4)).LT.9999D0) THEN
73363           WRITE(MSTU(11),6600) PS(6),(PS(J),J=1,5)
73364         ELSEIF(MLIST.EQ.1.AND.ABS(PS(4)).LT.99999D0) THEN
73365           WRITE(MSTU(11),6700) PS(6),(PS(J),J=1,5)
73366         ELSEIF(MLIST.EQ.1) THEN
73367           WRITE(MSTU(11),6800) PS(6),(PS(J),J=1,5)
73368         ELSEIF(MLIST.LE.3) THEN
73369           WRITE(MSTU(11),6900) PS(6),(PS(J),J=1,5)
73370         ELSE
73371           WRITE(MSTU(11),7000) PS(6)
73372         ENDIF
73373  
73374 C...Simple listing of HEPEVT entries (mainly for test purposes).
73375       ELSEIF(MLIST.EQ.5) THEN
73376         WRITE(MSTU(11),7100)
73377         DO 140 I=1,NHEP
73378           IF(ISTHEP(I).EQ.0) GOTO 140
73379           WRITE(MSTU(11),7200) I,ISTHEP(I),IDHEP(I),JMOHEP(1,I),
73380      &    JMOHEP(2,I),JDAHEP(1,I),JDAHEP(2,I),(PHEP(J,I),J=1,5)
73381   140   CONTINUE
73382  
73383  
73384 C...Simple listing of user-process entries (mainly for test purposes).
73385       ELSEIF(MLIST.EQ.7) THEN
73386         WRITE(MSTU(11),7300)
73387         DO 150 I=1,NUP
73388           WRITE(MSTU(11),7400) I,ISTUP(I),IDUP(I),MOTHUP(1,I),
73389      &    MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),(PUP(J,I),J=1,5)
73390   150   CONTINUE
73391  
73392 C...Give simple list of KF codes defined in program.
73393       ELSEIF(MLIST.EQ.11) THEN
73394         WRITE(MSTU(11),7500)
73395         DO 160 KF=1,80
73396           CALL PYNAME(KF,CHAP)
73397           CALL PYNAME(-KF,CHAN)
73398           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),7600) KF,CHAP
73399           IF(CHAN.NE.' ') WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
73400   160   CONTINUE
73401         DO 190 KFLS=1,3,2
73402           DO 180 KFLA=1,5
73403             DO 170 KFLB=1,KFLA-(3-KFLS)/2
73404               KF=1000*KFLA+100*KFLB+KFLS
73405               CALL PYNAME(KF,CHAP)
73406               CALL PYNAME(-KF,CHAN)
73407               WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
73408   170       CONTINUE
73409   180     CONTINUE
73410   190   CONTINUE
73411         DO 220 KMUL=0,5
73412           KFLS=3
73413           IF(KMUL.EQ.0.OR.KMUL.EQ.3) KFLS=1
73414           IF(KMUL.EQ.5) KFLS=5
73415           KFLR=0
73416           IF(KMUL.EQ.2.OR.KMUL.EQ.3) KFLR=1
73417           IF(KMUL.EQ.4) KFLR=2
73418           DO 210 KFLB=1,5
73419             DO 200 KFLC=1,KFLB-1
73420               KF=10000*KFLR+100*KFLB+10*KFLC+KFLS
73421               CALL PYNAME(KF,CHAP)
73422               CALL PYNAME(-KF,CHAN)
73423               WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
73424               IF(KF.EQ.311) THEN
73425                 KFK=130
73426                 CALL PYNAME(KFK,CHAP)
73427                 WRITE(MSTU(11),7600) KFK,CHAP
73428                 KFK=310
73429                 CALL PYNAME(KFK,CHAP)
73430                 WRITE(MSTU(11),7600) KFK,CHAP
73431               ENDIF
73432   200       CONTINUE
73433             KF=10000*KFLR+110*KFLB+KFLS
73434             CALL PYNAME(KF,CHAP)
73435             WRITE(MSTU(11),7600) KF,CHAP
73436   210     CONTINUE
73437   220   CONTINUE
73438         KF=100443
73439         CALL PYNAME(KF,CHAP)
73440         WRITE(MSTU(11),7600) KF,CHAP
73441         KF=100553
73442         CALL PYNAME(KF,CHAP)
73443         WRITE(MSTU(11),7600) KF,CHAP
73444         DO 260 KFLSP=1,3
73445           KFLS=2+2*(KFLSP/3)
73446           DO 250 KFLA=1,5
73447             DO 240 KFLB=1,KFLA
73448               DO 230 KFLC=1,KFLB
73449                 IF(KFLSP.EQ.1.AND.(KFLA.EQ.KFLB.OR.KFLB.EQ.KFLC))
73450      &          GOTO 230
73451                 IF(KFLSP.EQ.2.AND.KFLA.EQ.KFLC) GOTO 230
73452                 IF(KFLSP.EQ.1) KF=1000*KFLA+100*KFLC+10*KFLB+KFLS
73453                 IF(KFLSP.GE.2) KF=1000*KFLA+100*KFLB+10*KFLC+KFLS
73454                 CALL PYNAME(KF,CHAP)
73455                 CALL PYNAME(-KF,CHAN)
73456                 WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
73457   230         CONTINUE
73458   240       CONTINUE
73459   250     CONTINUE
73460   260   CONTINUE
73461         DO 270 KC=1,500
73462           KF=KCHG(KC,4)
73463           IF(KF.LT.1000000) GOTO 270
73464           CALL PYNAME(KF,CHAP)
73465           CALL PYNAME(-KF,CHAN)
73466           IF(CHAP.NE.' '.AND.CHAN.EQ.' ') WRITE(MSTU(11),7600) KF,CHAP
73467           IF(CHAN.NE.' ') WRITE(MSTU(11),7600) KF,CHAP,-KF,CHAN
73468   270   CONTINUE
73469  
73470 C...List parton/particle data table. Check whether to be listed.
73471       ELSEIF(MLIST.EQ.12) THEN
73472         WRITE(MSTU(11),7700)
73473         DO 300 KC=1,MSTU(6)
73474           KF=KCHG(KC,4)
73475           IF(KF.EQ.0) GOTO 300
73476           IF(KF.LT.MSTU(1).OR.(MSTU(2).GT.0.AND.KF.GT.MSTU(2)))
73477      &    GOTO 300
73478  
73479 C...Find particle name and mass. Print information.
73480           CALL PYNAME(KF,CHAP)
73481           IF(KF.LE.100.AND.CHAP.EQ.' '.AND.MDCY(KC,2).EQ.0) GOTO 300
73482           CALL PYNAME(-KF,CHAN)
73483           WRITE(MSTU(11),7800) KF,KC,CHAP,CHAN,(KCHG(KC,J1),J1=1,3),
73484      &    (PMAS(KC,J2),J2=1,4),MDCY(KC,1)
73485  
73486 C...Particle decay: channel number, branching ratios, matrix element,
73487 C...decay products.
73488           DO 290 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
73489             DO 280 J=1,5
73490               CALL PYNAME(KFDP(IDC,J),CHAD(J))
73491   280       CONTINUE
73492             WRITE(MSTU(11),7900) IDC,MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
73493      &      (CHAD(J),J=1,5)
73494   290     CONTINUE
73495   300   CONTINUE
73496  
73497 C...List parameter value table.
73498       ELSEIF(MLIST.EQ.13) THEN
73499         WRITE(MSTU(11),8000)
73500         DO 310 I=1,200
73501           WRITE(MSTU(11),8100) I,MSTU(I),PARU(I),MSTJ(I),PARJ(I),PARF(I)
73502   310   CONTINUE
73503       ENDIF
73504  
73505 C...Format statements for output on unit MSTU(11) (by default 6).
73506  5100 FORMAT(///28X,'Event listing (summary)'//4X,'I particle/jet KS',
73507      &5X,'KF  orig    p_x      p_y      p_z       E        m'/)
73508  5200 FORMAT(///28X,'Event listing (standard)'//4X,'I  particle/jet',
73509      &'  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
73510      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/)
73511  5300 FORMAT(///28X,'Event listing (with vertices)'//4X,'I  particle/j',
73512      &'et  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)       P(I,1)',
73513      &'       P(I,2)       P(I,3)       P(I,4)       P(I,5)'/73X,
73514      &'V(I,1)       V(I,2)       V(I,3)       V(I,4)       V(I,5)'/)
73515  5400 FORMAT(///28X,'Event listing (no momenta)'//4X,'I  particle/jet',
73516      &     '  K(I,1)   K(I,2) K(I,3)     K(I,4)      K(I,5)',1X
73517      &     ,'   C tag  AC tag'/)
73518  5500 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.3)
73519  5600 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.2)
73520  5700 FORMAT(1X,I4,1X,A12,1X,I2,I8,1X,I4,5F9.1)
73521  5800 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),5F13.5)
73522  5900 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I1,2I4),1X,2I8)
73523  6000 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),5F13.5)
73524  6100 FORMAT(1X,I4,2X,A16,1X,I3,1X,I9,1X,I4,2(3X,I9),1X,2I8)
73525  6200 FORMAT(66X,5(1X,F12.3))
73526  6300 FORMAT(1X,78('='))
73527  6400 FORMAT(1X,130('='))
73528  6500 FORMAT(1X,65('='))
73529  6600 FORMAT(19X,'sum:',F6.2,5X,5F9.3)
73530  6700 FORMAT(19X,'sum:',F6.2,5X,5F9.2)
73531  6800 FORMAT(19X,'sum:',F6.2,5X,5F9.1)
73532  6900 FORMAT(19X,'sum charge:',F6.2,3X,'sum momentum and inv. mass:',
73533      &5F13.5)
73534  7000 FORMAT(19X,'sum charge:',F6.2)
73535  7100 FORMAT(/10X,'Event listing of HEPEVT common block (simplified)'
73536      &//'    I IST    ID   Mothers Daughters    p_x      p_y      p_z',
73537      &'       E        m')
73538  7200 FORMAT(1X,I4,I2,I8,4I5,5F9.3)
73539  7300 FORMAT(/10X,'Event listing of user process at input (simplified)'
73540      &//'   I IST     ID Mothers   Colours    p_x      p_y      p_z',
73541      &'       E        m')
73542  7400 FORMAT(1X,I3,I3,I8,2I4,2I5,5F9.3)
73543  7500 FORMAT(///20X,'List of KF codes in program'/)
73544  7600 FORMAT(4X,I9,4X,A16,6X,I9,4X,A16)
73545  7700 FORMAT(///30X,'Particle/parton data table'//8X,'KF',5X,'KC',4X,
73546      &'particle',8X,'antiparticle',6X,'chg  col  anti',8X,'mass',7X,
73547      &'width',7X,'w-cut',5X,'lifetime',1X,'decay'/11X,'IDC',1X,'on/off',
73548      &1X,'ME',3X,'Br.rat.',4X,'decay products')
73549  7800 FORMAT(/1X,I9,3X,I4,4X,A16,A16,3I5,1X,F12.5,2(1X,F11.5),
73550      &1X,1P,E13.5,3X,I2)
73551  7900 FORMAT(10X,I4,2X,I3,2X,I3,2X,F10.6,4X,5A16)
73552  8000 FORMAT(///20X,'Parameter value table'//4X,'I',3X,'MSTU(I)',
73553      &8X,'PARU(I)',3X,'MSTJ(I)',8X,'PARJ(I)',8X,'PARF(I)')
73554  8100 FORMAT(1X,I4,1X,I9,1X,F14.5,1X,I9,1X,F14.5,1X,F14.5)
73555  
73556       RETURN
73557       END
73558  
73559 C*********************************************************************
73560  
73561 C...PYLOGO
73562 C...Writes a logo for the program.
73563  
73564       SUBROUTINE PYLOGO
73565  
73566 C...Double precision and integer declarations.
73567       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73568       IMPLICIT INTEGER(I-N)
73569       INTEGER PYK,PYCHGE,PYCOMP
73570 C...Parameter for length of information block.
73571       PARAMETER (IREFER=21)
73572 C...Commonblocks.
73573       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73574       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
73575       SAVE /PYDAT1/,/PYPARS/
73576 C...Local arrays and character variables.
73577       INTEGER IDATI(6)
73578       CHARACTER MONTH(12)*3, LOGO(48)*32, REFER(2*IREFER)*36, LINE*79,
73579      &VERS*1, SUBV*3, DATE*2, YEAR*4, HOUR*2, MINU*2, SECO*2
73580  
73581 C...Data on months, logo, titles, and references.
73582       DATA MONTH/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep',
73583      &'Oct','Nov','Dec'/
73584       DATA (LOGO(J),J=1,19)/
73585      &'            *......*            ',
73586      &'       *:::!!:::::::::::*       ',
73587      &'    *::::::!!::::::::::::::*    ',
73588      &'  *::::::::!!::::::::::::::::*  ',
73589      &' *:::::::::!!:::::::::::::::::* ',
73590      &' *:::::::::!!:::::::::::::::::* ',
73591      &'  *::::::::!!::::::::::::::::*! ',
73592      &'    *::::::!!::::::::::::::* !! ',
73593      &'    !! *:::!!:::::::::::*    !! ',
73594      &'    !!     !* -><- *         !! ',
73595      &'    !!     !!                !! ',
73596      &'    !!     !!                !! ',
73597      &'    !!                       !! ',
73598      &'    !!        lh             !! ',
73599      &'    !!                       !! ',
73600      &'    !!                 hh    !! ',
73601      &'    !!    ll                 !! ',
73602      &'    !!                       !! ',
73603      &'    !!                          '/
73604       DATA (LOGO(J),J=20,38)/
73605      &'Welcome to the Lund Monte Carlo!',
73606      &'                                ',
73607      &'PPP  Y   Y TTTTT H   H III   A  ',
73608      &'P  P  Y Y    T   H   H  I   A A ',
73609      &'PPP    Y     T   HHHHH  I  AAAAA',
73610      &'P      Y     T   H   H  I  A   A',
73611      &'P      Y     T   H   H III A   A',
73612      &'                                ',
73613      &'This is PYTHIA version x.xxx    ',
73614      &'Last date of change: xx xxx 200x',
73615      &'                                ',
73616      &'Now is xx xxx 200x at xx:xx:xx  ',
73617      &'                                ',
73618      &'Disclaimer: this program comes  ',
73619      &'without any guarantees. Beware  ',
73620      &'of errors and use common sense  ',
73621      &'when interpreting results.      ',
73622      &'                                ',
73623      &'Copyright T. Sjostrand (2008)   '/
73624       DATA (REFER(J),J=1,14)/
73625      &'An archive of program versions and d',
73626      &'ocumentation is found on the web:   ',
73627      &'http://www.thep.lu.se/~torbjorn/Pyth',
73628      &'ia.html                             ',
73629      &'                                    ',
73630      &'                                    ',
73631      &'When you cite this program, the offi',
73632      &'cial reference is to the 6.4 manual:',
73633      &'T. Sjostrand, S. Mrenna and P. Skand',
73634      &'s, JHEP05 (2006) 026                ',
73635      &'(LU TP 06-13, FERMILAB-PUB-06-052-CD',
73636      &'-T) [hep-ph/0603175].               ',
73637      &'                                    ',
73638      &'                                    '/
73639       DATA (REFER(J),J=15,32)/
73640      &'Also remember that the program, to a',
73641      &' large extent, represents original  ',
73642      &'physics research. Other publications',
73643      &' of special relevance to your       ',
73644      &'studies may therefore deserve separa',
73645      &'te mention.                         ',
73646      &'                                    ',
73647      &'                                    ',
73648      &'Main author: Torbjorn Sjostrand; Dep',
73649      &'artment of Theoretical Physics,     ',
73650      &'  Lund University, Solvegatan 14A, S',
73651      &'-223 62 Lund, Sweden;               ',
73652      &'  phone: + 46 - 46 - 222 48 16; e-ma',
73653      &'il: torbjorn@thep.lu.se             ',
73654      &'Author: Stephen Mrenna; Computing Di',
73655      &'vision, GDS Group,                  ',
73656      &'  Fermi National Accelerator Laborat',
73657      &'ory, MS 234, Batavia, IL 60510, USA;'/
73658       DATA (REFER(J),J=33,2*IREFER)/
73659      &'  phone: + 1 - 630 - 840 - 2556; e-m',
73660      &'ail: mrenna@fnal.gov                ',
73661      &'Author: Peter Skands; Theoretical Ph',
73662      &'ysics Department,                   ',
73663      &'  Fermi National Accelerator Laborat',
73664      &'ory, MS 106, Batavia, IL 60510, USA;',
73665      &'  and CERN/PH, CH-1211 Geneva, Switz',
73666      &'erland;                             ',
73667      &'  phone: + 41 - 22 - 767 24 59; e-ma',
73668      &'il: skands@fnal.gov                 '/
73669  
73670 C...Check that PYDATA linked.
73671       IF(MSTP(183)/10.NE.199.AND.MSTP(183)/10.NE.200) THEN
73672         WRITE(*,'(1X,A)')
73673      &  'Error: PYDATA has not been linked.'
73674         WRITE(*,'(1X,A)') 'Execution stopped!'
73675         CALL PYSTOP(8)
73676  
73677 C...Write current version number and current date+time.
73678       ELSE
73679         WRITE(VERS,'(I1)') MSTP(181)
73680         LOGO(28)(24:24)=VERS
73681         WRITE(SUBV,'(I3)') MSTP(182)
73682         LOGO(28)(26:28)=SUBV
73683         IF(MSTP(182).LT.100) LOGO(28)(26:26)='0'
73684         WRITE(DATE,'(I2)') MSTP(185)
73685         LOGO(29)(22:23)=DATE
73686         LOGO(29)(25:27)=MONTH(MSTP(184))
73687         WRITE(YEAR,'(I4)') MSTP(183)
73688         LOGO(29)(29:32)=YEAR
73689         CALL PYTIME(IDATI)
73690         IF(IDATI(1).LE.0) THEN
73691           LOGO(31)='                                '
73692         ELSE
73693           WRITE(DATE,'(I2)') IDATI(3)
73694           LOGO(31)(8:9)=DATE
73695           LOGO(31)(11:13)=MONTH(MAX(1,MIN(12,IDATI(2))))
73696           WRITE(YEAR,'(I4)') IDATI(1)
73697           LOGO(31)(15:18)=YEAR
73698           WRITE(HOUR,'(I2)') IDATI(4)
73699           LOGO(31)(23:24)=HOUR
73700           WRITE(MINU,'(I2)') IDATI(5)
73701           LOGO(31)(26:27)=MINU
73702           IF(IDATI(5).LT.10) LOGO(31)(26:26)='0'
73703           WRITE(SECO,'(I2)') IDATI(6)
73704           LOGO(31)(29:30)=SECO
73705           IF(IDATI(6).LT.10) LOGO(31)(29:29)='0'
73706         ENDIF
73707       ENDIF
73708  
73709 C...Loop over lines in header. Define page feed and side borders.
73710       DO 100 ILIN=1,29+IREFER
73711         LINE=' '
73712         IF(ILIN.EQ.1) THEN
73713           LINE(1:1)='1'
73714         ELSE
73715           LINE(2:3)='**'
73716           LINE(78:79)='**'
73717         ENDIF
73718  
73719 C...Separator lines and logos.
73720         IF(ILIN.EQ.2.OR.ILIN.EQ.3.OR.ILIN.GE.28+IREFER) THEN
73721           LINE(4:77)='***********************************************'//
73722      &    '***************************'
73723         ELSEIF(ILIN.GE.6.AND.ILIN.LE.24) THEN
73724           LINE(6:37)=LOGO(ILIN-5)
73725           LINE(44:75)=LOGO(ILIN+14)
73726         ELSEIF(ILIN.GE.26.AND.ILIN.LE.25+IREFER) THEN
73727           LINE(5:40)=REFER(2*ILIN-51)
73728           LINE(41:76)=REFER(2*ILIN-50)
73729         ENDIF
73730  
73731 C...Write lines to appropriate unit.
73732         WRITE(MSTU(11),'(A79)') LINE
73733   100 CONTINUE
73734  
73735       RETURN
73736       END
73737  
73738 C*********************************************************************
73739  
73740 C...PYUPDA
73741 C...Facilitates the updating of particle and decay data
73742 C...by allowing it to be done in an external file.
73743  
73744       SUBROUTINE PYUPDA(MUPDA,LFN)
73745  
73746 C...Double precision and integer declarations.
73747       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
73748       IMPLICIT INTEGER(I-N)
73749       INTEGER PYK,PYCHGE,PYCOMP
73750 C...Commonblocks.
73751       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
73752       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
73753       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
73754       COMMON/PYDAT4/CHAF(500,2)
73755       CHARACTER CHAF*16
73756       COMMON/PYINT4/MWID(500),WIDS(500,5)
73757       SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYINT4/
73758 C...Local arrays, character variables and data.
73759       CHARACTER CHINL*120,CHKF*9,CHVAR(22)*9,CHLIN*72,
73760      &CHBLK(20)*72,CHOLD*16,CHTMP*16,CHNEW*16,CHCOM*24
73761       DATA CHVAR/ 'KCHG(I,1)','KCHG(I,2)','KCHG(I,3)','KCHG(I,4)',
73762      &'PMAS(I,1)','PMAS(I,2)','PMAS(I,3)','PMAS(I,4)','MDCY(I,1)',
73763      &'MDCY(I,2)','MDCY(I,3)','MDME(I,1)','MDME(I,2)','BRAT(I)  ',
73764      &'KFDP(I,1)','KFDP(I,2)','KFDP(I,3)','KFDP(I,4)','KFDP(I,5)',
73765      &'CHAF(I,1)','CHAF(I,2)','MWID(I)  '/
73766  
73767 C...Write header if not yet done.
73768       IF(MSTU(12).NE.12345) CALL PYLIST(0)
73769  
73770 C...Write information on file for editing.
73771       IF(MUPDA.EQ.1) THEN
73772         DO 110 KC=1,500
73773           WRITE(LFN,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
73774      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
73775      &    MWID(KC),MDCY(KC,1)
73776           DO 100 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
73777             WRITE(LFN,5100) MDME(IDC,1),MDME(IDC,2),BRAT(IDC),
73778      &      (KFDP(IDC,J),J=1,5)
73779   100     CONTINUE
73780   110   CONTINUE
73781  
73782 C...Read complete set of information from edited file or
73783 C...read partial set of new or updated information from edited file.
73784       ELSEIF(MUPDA.EQ.2.OR.MUPDA.EQ.3) THEN
73785  
73786 C...Reset counters.
73787         KCC=100
73788         NDC=0
73789         CHKF='         '
73790         IF(MUPDA.EQ.2) THEN
73791           DO 120 I=1,MSTU(6)
73792             KCHG(I,4)=0
73793   120     CONTINUE
73794         ELSE
73795           DO 130 KC=1,MSTU(6)
73796             IF(KC.GT.100.AND.KCHG(KC,4).GT.100) KCC=KC
73797             NDC=MAX(NDC,MDCY(KC,2)+MDCY(KC,3)-1)
73798   130     CONTINUE
73799         ENDIF
73800  
73801 C...Begin of loop: read new line; unknown whether particle or
73802 C...decay data.
73803   140   READ(LFN,5200,END=190) CHINL
73804  
73805 C...Identify particle code and whether already defined  (for MUPDA=3).
73806         IF(CHINL(2:10).NE.'         ') THEN
73807           CHKF=CHINL(2:10)
73808           READ(CHKF,5300) KF
73809           IF(MUPDA.EQ.2) THEN
73810             IF(KF.LE.100) THEN
73811               KC=KF
73812             ELSE
73813               KCC=KCC+1
73814               KC=KCC
73815             ENDIF
73816           ELSE
73817             KCREP=0
73818             IF(KF.LE.100) THEN
73819               KCREP=KF
73820             ELSE
73821               DO 150 KCR=101,KCC
73822                 IF(KCHG(KCR,4).EQ.KF) KCREP=KCR
73823   150         CONTINUE
73824             ENDIF
73825 C...Remove duplicate old decay data.
73826             IF(KCREP.NE.0.AND.MDCY(KCREP,3).GT.0) THEN
73827               IDCREP=MDCY(KCREP,2)
73828               NDCREP=MDCY(KCREP,3)
73829               DO 160 I=1,KCC
73830                 IF(MDCY(I,2).GT.IDCREP) MDCY(I,2)=MDCY(I,2)-NDCREP
73831   160         CONTINUE
73832               DO 180 I=IDCREP,NDC-NDCREP
73833                 MDME(I,1)=MDME(I+NDCREP,1)
73834                 MDME(I,2)=MDME(I+NDCREP,2)
73835                 BRAT(I)=BRAT(I+NDCREP)
73836                 DO 170 J=1,5
73837                   KFDP(I,J)=KFDP(I+NDCREP,J)
73838   170           CONTINUE
73839   180         CONTINUE
73840               NDC=NDC-NDCREP
73841               KC=KCREP
73842             ELSEIF(KCREP.NE.0) THEN
73843               KC=KCREP
73844             ELSE
73845               KCC=KCC+1
73846               KC=KCC
73847             ENDIF
73848           ENDIF
73849  
73850 C...Study line with particle data.
73851           IF(KC.GT.MSTU(6)) CALL PYERRM(27,
73852      &    '(PYUPDA:) Particle arrays full by KF ='//CHKF)
73853           READ(CHINL,5000) KCHG(KC,4),(CHAF(KC,J1),J1=1,2),
73854      &    (KCHG(KC,J2),J2=1,3),(PMAS(KC,J3),J3=1,4),
73855      &    MWID(KC),MDCY(KC,1)
73856           MDCY(KC,2)=0
73857           MDCY(KC,3)=0
73858  
73859 C...Study line with decay data.
73860         ELSE
73861           NDC=NDC+1
73862           IF(NDC.GT.MSTU(7)) CALL PYERRM(27,
73863      &    '(PYUPDA:) Decay data arrays full by KF ='//CHKF)
73864           IF(MDCY(KC,2).EQ.0) MDCY(KC,2)=NDC
73865           MDCY(KC,3)=MDCY(KC,3)+1
73866           READ(CHINL,5100) MDME(NDC,1),MDME(NDC,2),BRAT(NDC),
73867      &    (KFDP(NDC,J),J=1,5)
73868         ENDIF
73869  
73870 C...End of loop; ensure that PYCOMP tables are updated.
73871         GOTO 140
73872   190   CONTINUE
73873         MSTU(20)=0
73874  
73875 C...Perform possible tests that new information is consistent.
73876         DO 220 KC=1,MSTU(6)
73877           KF=KCHG(KC,4)
73878           IF(KF.EQ.0) GOTO 220
73879           WRITE(CHKF,5300) KF
73880           IF(MIN(PMAS(KC,1),PMAS(KC,2),PMAS(KC,3),PMAS(KC,1)-PMAS(KC,3),
73881      &    PMAS(KC,4)).LT.0D0.OR.MDCY(KC,3).LT.0) CALL PYERRM(17,
73882      &    '(PYUPDA:) Mass/width/life/(# channels) wrong for KF ='//CHKF)
73883           BRSUM=0D0
73884           DO 210 IDC=MDCY(KC,2),MDCY(KC,2)+MDCY(KC,3)-1
73885             IF(MDME(IDC,2).GT.80) GOTO 210
73886             KQ=KCHG(KC,1)
73887             PMS=PMAS(KC,1)-PMAS(KC,3)-PARJ(64)
73888             MERR=0
73889             DO 200 J=1,5
73890               KP=KFDP(IDC,J)
73891               IF(KP.EQ.0.OR.KP.EQ.81.OR.IABS(KP).EQ.82) THEN
73892                 IF(KP.EQ.81) KQ=0
73893               ELSEIF(PYCOMP(KP).EQ.0) THEN
73894                 MERR=3
73895               ELSE
73896                 KQ=KQ-PYCHGE(KP)
73897                 KPC=PYCOMP(KP)
73898                 PMS=PMS-PMAS(KPC,1)
73899                 IF(MSTJ(24).GT.0) PMS=PMS+0.5D0*MIN(PMAS(KPC,2),
73900      &          PMAS(KPC,3))
73901               ENDIF
73902   200       CONTINUE
73903             IF(KQ.NE.0) MERR=MAX(2,MERR)
73904             IF(MWID(KC).EQ.0.AND.KF.NE.311.AND.PMS.LT.0D0)
73905      &      MERR=MAX(1,MERR)
73906             IF(MERR.EQ.3) CALL PYERRM(17,
73907      &      '(PYUPDA:) Unknown particle code in decay of KF ='//CHKF)
73908             IF(MERR.EQ.2) CALL PYERRM(17,
73909      &      '(PYUPDA:) Charge not conserved in decay of KF ='//CHKF)
73910             IF(MERR.EQ.1) CALL PYERRM(7,
73911      &      '(PYUPDA:) Kinematically unallowed decay of KF ='//CHKF)
73912             BRSUM=BRSUM+BRAT(IDC)
73913   210     CONTINUE
73914           WRITE(CHTMP,5500) BRSUM
73915           IF(ABS(BRSUM).GT.0.0005D0.AND.ABS(BRSUM-1D0).GT.0.0005D0)
73916      &    CALL PYERRM(7,'(PYUPDA:) Sum of branching ratios is '//
73917      &    CHTMP(9:16)//' for KF ='//CHKF)
73918   220   CONTINUE
73919  
73920 C...Write DATA statements for inclusion in program.
73921       ELSEIF(MUPDA.EQ.4) THEN
73922  
73923 C...Find out how many codes and decay channels are actually used.
73924         KCC=0
73925         NDC=0
73926         DO 230 I=1,MSTU(6)
73927           IF(KCHG(I,4).NE.0) THEN
73928             KCC=I
73929             NDC=MAX(NDC,MDCY(I,2)+MDCY(I,3)-1)
73930           ENDIF
73931   230   CONTINUE
73932  
73933 C...Initialize writing of DATA statements for inclusion in program.
73934         DO 300 IVAR=1,22
73935           NDIM=MSTU(6)
73936           IF(IVAR.GE.12.AND.IVAR.LE.19) NDIM=MSTU(7)
73937           NLIN=1
73938           CHLIN=' '
73939           CHLIN(7:35)='DATA ('//CHVAR(IVAR)//',I=   1,    )/'
73940           LLIN=35
73941           CHOLD='START'
73942  
73943 C...Loop through variables for conversion to characters.
73944           DO 280 IDIM=1,NDIM
73945             IF(IVAR.EQ.1) WRITE(CHTMP,5400) KCHG(IDIM,1)
73946             IF(IVAR.EQ.2) WRITE(CHTMP,5400) KCHG(IDIM,2)
73947             IF(IVAR.EQ.3) WRITE(CHTMP,5400) KCHG(IDIM,3)
73948             IF(IVAR.EQ.4) WRITE(CHTMP,5400) KCHG(IDIM,4)
73949             IF(IVAR.EQ.5) WRITE(CHTMP,5500) PMAS(IDIM,1)
73950             IF(IVAR.EQ.6) WRITE(CHTMP,5500) PMAS(IDIM,2)
73951             IF(IVAR.EQ.7) WRITE(CHTMP,5500) PMAS(IDIM,3)
73952             IF(IVAR.EQ.8) WRITE(CHTMP,5500) PMAS(IDIM,4)
73953             IF(IVAR.EQ.9) WRITE(CHTMP,5400) MDCY(IDIM,1)
73954             IF(IVAR.EQ.10) WRITE(CHTMP,5400) MDCY(IDIM,2)
73955             IF(IVAR.EQ.11) WRITE(CHTMP,5400) MDCY(IDIM,3)
73956             IF(IVAR.EQ.12) WRITE(CHTMP,5400) MDME(IDIM,1)
73957             IF(IVAR.EQ.13) WRITE(CHTMP,5400) MDME(IDIM,2)
73958             IF(IVAR.EQ.14) WRITE(CHTMP,5600) BRAT(IDIM)
73959             IF(IVAR.EQ.15) WRITE(CHTMP,5400) KFDP(IDIM,1)
73960             IF(IVAR.EQ.16) WRITE(CHTMP,5400) KFDP(IDIM,2)
73961             IF(IVAR.EQ.17) WRITE(CHTMP,5400) KFDP(IDIM,3)
73962             IF(IVAR.EQ.18) WRITE(CHTMP,5400) KFDP(IDIM,4)
73963             IF(IVAR.EQ.19) WRITE(CHTMP,5400) KFDP(IDIM,5)
73964             IF(IVAR.EQ.20) CHTMP=CHAF(IDIM,1)
73965             IF(IVAR.EQ.21) CHTMP=CHAF(IDIM,2)
73966             IF(IVAR.EQ.22) WRITE(CHTMP,5400) MWID(IDIM)
73967  
73968 C...Replace variables beyond what is properly defined.
73969             IF(IVAR.LE.4) THEN
73970               IF(IDIM.GT.KCC) CHTMP='               0'
73971             ELSEIF(IVAR.LE.8) THEN
73972               IF(IDIM.GT.KCC) CHTMP='             0.0'
73973             ELSEIF(IVAR.LE.11) THEN
73974               IF(IDIM.GT.KCC) CHTMP='               0'
73975             ELSEIF(IVAR.LE.13) THEN
73976               IF(IDIM.GT.NDC) CHTMP='               0'
73977             ELSEIF(IVAR.LE.14) THEN
73978               IF(IDIM.GT.NDC) CHTMP='             0.0'
73979             ELSEIF(IVAR.LE.19) THEN
73980               IF(IDIM.GT.NDC) CHTMP='               0'
73981             ELSEIF(IVAR.LE.21) THEN
73982               IF(IDIM.GT.KCC) CHTMP='                '
73983             ELSE
73984               IF(IDIM.GT.KCC) CHTMP='               0'
73985             ENDIF
73986  
73987 C...Length of variable, trailing decimal zeros, quotation marks.
73988             LLOW=1
73989             LHIG=1
73990             DO 240 LL=1,16
73991               IF(CHTMP(17-LL:17-LL).NE.' ') LLOW=17-LL
73992               IF(CHTMP(LL:LL).NE.' ') LHIG=LL
73993   240       CONTINUE
73994             CHNEW=CHTMP(LLOW:LHIG)//' '
73995             LNEW=1+LHIG-LLOW
73996             IF((IVAR.GE.5.AND.IVAR.LE.8).OR.IVAR.EQ.14) THEN
73997               LNEW=LNEW+1
73998   250         LNEW=LNEW-1
73999               IF(LNEW.GE.2.AND.CHNEW(LNEW:LNEW).EQ.'0') GOTO 250
74000               IF(CHNEW(LNEW:LNEW).EQ.'.') LNEW=LNEW-1
74001               IF(LNEW.EQ.0) THEN
74002                 CHNEW(1:3)='0D0'
74003                 LNEW=3
74004               ELSE
74005                 CHNEW(LNEW+1:LNEW+2)='D0'
74006                 LNEW=LNEW+2
74007               ENDIF
74008             ELSEIF(IVAR.EQ.20.OR.IVAR.EQ.21) THEN
74009               DO 260 LL=LNEW,1,-1
74010                 IF(CHNEW(LL:LL).EQ.'''') THEN
74011                   CHTMP=CHNEW
74012                   CHNEW=CHTMP(1:LL)//''''//CHTMP(LL+1:11)
74013                   LNEW=LNEW+1
74014                 ENDIF
74015   260         CONTINUE
74016               LNEW=MIN(14,LNEW)
74017               CHTMP=CHNEW
74018               CHNEW(1:LNEW+2)=''''//CHTMP(1:LNEW)//''''
74019               LNEW=LNEW+2
74020             ENDIF
74021  
74022 C...Form composite character string, often including repetition counter.
74023             IF(CHNEW.NE.CHOLD) THEN
74024               NRPT=1
74025               CHOLD=CHNEW
74026               CHCOM=CHNEW
74027               LCOM=LNEW
74028             ELSE
74029               LRPT=LNEW+1
74030               IF(NRPT.GE.2) LRPT=LNEW+3
74031               IF(NRPT.GE.10) LRPT=LNEW+4
74032               IF(NRPT.GE.100) LRPT=LNEW+5
74033               IF(NRPT.GE.1000) LRPT=LNEW+6
74034               LLIN=LLIN-LRPT
74035               NRPT=NRPT+1
74036               WRITE(CHTMP,5400) NRPT
74037               LRPT=1
74038               IF(NRPT.GE.10) LRPT=2
74039               IF(NRPT.GE.100) LRPT=3
74040               IF(NRPT.GE.1000) LRPT=4
74041               CHCOM(1:LRPT+1+LNEW)=CHTMP(17-LRPT:16)//'*'//CHNEW(1:LNEW)
74042               LCOM=LRPT+1+LNEW
74043             ENDIF
74044  
74045 C...Add characters to end of line, to new line (after storing old line),
74046 C...or to new block of lines (after writing old block).
74047             IF(LLIN+LCOM.LE.70) THEN
74048               CHLIN(LLIN+1:LLIN+LCOM+1)=CHCOM(1:LCOM)//','
74049               LLIN=LLIN+LCOM+1
74050             ELSEIF(NLIN.LE.19) THEN
74051               CHLIN(LLIN+1:72)=' '
74052               CHBLK(NLIN)=CHLIN
74053               NLIN=NLIN+1
74054               CHLIN(6:6+LCOM+1)='&'//CHCOM(1:LCOM)//','
74055               LLIN=6+LCOM+1
74056             ELSE
74057               CHLIN(LLIN:72)='/'//' '
74058               CHBLK(NLIN)=CHLIN
74059               WRITE(CHTMP,5400) IDIM-NRPT
74060               CHBLK(1)(30:33)=CHTMP(13:16)
74061               DO 270 ILIN=1,NLIN
74062                 WRITE(LFN,5700) CHBLK(ILIN)
74063   270         CONTINUE
74064               NLIN=1
74065               CHLIN=' '
74066               CHLIN(7:35+LCOM+1)='DATA ('//CHVAR(IVAR)//
74067      &        ',I=    ,    )/'//CHCOM(1:LCOM)//','
74068               WRITE(CHTMP,5400) IDIM-NRPT+1
74069               CHLIN(25:28)=CHTMP(13:16)
74070               LLIN=35+LCOM+1
74071             ENDIF
74072   280     CONTINUE
74073  
74074 C...Write final block of lines.
74075           CHLIN(LLIN:72)='/'//' '
74076           CHBLK(NLIN)=CHLIN
74077           WRITE(CHTMP,5400) NDIM
74078           CHBLK(1)(30:33)=CHTMP(13:16)
74079           DO 290 ILIN=1,NLIN
74080             WRITE(LFN,5700) CHBLK(ILIN)
74081   290     CONTINUE
74082   300   CONTINUE
74083       ENDIF
74084  
74085 C...Formats for reading and writing particle data.
74086  5000 FORMAT(1X,I9,2X,A16,2X,A16,3I3,3F12.5,1P,E13.5,2I3)
74087  5100 FORMAT(10X,2I5,F12.6,5I10)
74088  5200 FORMAT(A120)
74089  5300 FORMAT(I9)
74090  5400 FORMAT(I16)
74091  5500 FORMAT(F16.5)
74092  5600 FORMAT(F16.6)
74093  5700 FORMAT(A72)
74094  
74095       RETURN
74096       END
74097  
74098 C*********************************************************************
74099  
74100 C...PYK
74101 C...Provides various integer-valued event related data.
74102  
74103       FUNCTION PYK(I,J)
74104  
74105 C...Double precision and integer declarations.
74106       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74107       IMPLICIT INTEGER(I-N)
74108       INTEGER PYK,PYCHGE,PYCOMP
74109 C...Commonblocks.
74110       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74111       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74112       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74113       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74114  
74115 C...Default value. For I=0 number of entries, number of stable entries
74116 C...or 3 times total charge.
74117       PYK=0
74118       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
74119       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN
74120         PYK=N
74121       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN
74122         DO 100 I1=1,N
74123           IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+1
74124           IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) PYK=PYK+
74125      &    PYCHGE(K(I1,2))
74126   100   CONTINUE
74127       ELSEIF(I.EQ.0) THEN
74128  
74129 C...For I > 0 direct readout of K matrix or charge.
74130       ELSEIF(J.LE.5) THEN
74131         PYK=K(I,J)
74132       ELSEIF(J.EQ.6) THEN
74133         PYK=PYCHGE(K(I,2))
74134  
74135 C...Status (existing/fragmented/decayed), parton/hadron separation.
74136       ELSEIF(J.LE.8) THEN
74137         IF(K(I,1).GE.1.AND.K(I,1).LE.10) PYK=1
74138         IF(J.EQ.8) PYK=PYK*K(I,2)
74139       ELSEIF(J.LE.12) THEN
74140         KFA=IABS(K(I,2))
74141         KC=PYCOMP(KFA)
74142         KQ=0
74143         IF(KC.NE.0) KQ=KCHG(KC,2)
74144         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) PYK=K(I,2)
74145         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) PYK=K(I,2)
74146         IF(J.EQ.11) PYK=KC
74147         IF(J.EQ.12) PYK=KQ*ISIGN(1,K(I,2))
74148  
74149 C...Heaviest flavour in hadron/diquark.
74150       ELSEIF(J.EQ.13) THEN
74151         KFA=IABS(K(I,2))
74152         PYK=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10)
74153         IF(KFA.LT.10) PYK=KFA
74154         IF(MOD(KFA/1000,10).NE.0) PYK=MOD(KFA/1000,10)
74155         PYK=PYK*ISIGN(1,K(I,2))
74156  
74157 C...Particle history: generation, ancestor, rank.
74158       ELSEIF(J.LE.15) THEN
74159         I2=I
74160         I1=I
74161   110   PYK=PYK+1
74162         I2=I1
74163         I1=K(I1,3)
74164         IF(I1.GT.0) THEN
74165           IF(K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110
74166         ENDIF
74167         IF(J.EQ.15) PYK=I2
74168       ELSEIF(J.EQ.16) THEN
74169         KFA=IABS(K(I,2))
74170         IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.
74171      &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN
74172           I1=I
74173   120     I2=I1
74174           I1=K(I1,3)
74175           IF(I1.GT.0) THEN
74176             KFAM=IABS(K(I1,2))
74177             ILP=1
74178             IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
74179             IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93)
74180      &      ILP=0
74181             IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
74182             IF(ILP.EQ.1) GOTO 120
74183           ENDIF
74184           IF(K(I1,1).EQ.12) THEN
74185             DO 130 I3=I1+1,I2
74186               IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
74187      &        .AND.K(I3,2).NE.93) PYK=PYK+1
74188   130       CONTINUE
74189           ELSE
74190             I3=I2
74191   140       PYK=PYK+1
74192             I3=I3+1
74193             IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140
74194           ENDIF
74195         ENDIF
74196  
74197 C...Particle coming from collapsing jet system or not.
74198       ELSEIF(J.EQ.17) THEN
74199         I1=I
74200   150   PYK=PYK+1
74201         I3=I1
74202         I1=K(I1,3)
74203         I0=MAX(1,I1)
74204         KC=PYCOMP(K(I0,2))
74205         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN
74206           IF(PYK.EQ.1) PYK=-1
74207           IF(PYK.GT.1) PYK=0
74208           RETURN
74209         ENDIF
74210         IF(KCHG(KC,2).EQ.0) GOTO 150
74211         IF(K(I1,1).NE.12) PYK=0
74212         IF(K(I1,1).NE.12) RETURN
74213         I2=I1
74214   160   I2=I2+1
74215         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160
74216         K3M=K(I3-1,3)
74217         IF(K3M.GE.I1.AND.K3M.LE.I2) PYK=0
74218         K3P=K(I3+1,3)
74219         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) PYK=0
74220  
74221 C...Number of decay products. Colour flow.
74222       ELSEIF(J.EQ.18) THEN
74223         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) PYK=MAX(0,K(I,5)-K(I,4)+1)
74224         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) PYK=0
74225       ELSEIF(J.LE.22) THEN
74226         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN
74227         IF(J.EQ.19) PYK=MOD(K(I,4)/MSTU(5),MSTU(5))
74228         IF(J.EQ.20) PYK=MOD(K(I,5)/MSTU(5),MSTU(5))
74229         IF(J.EQ.21) PYK=MOD(K(I,4),MSTU(5))
74230         IF(J.EQ.22) PYK=MOD(K(I,5),MSTU(5))
74231       ELSE
74232       ENDIF
74233  
74234       RETURN
74235       END
74236  
74237 C*********************************************************************
74238  
74239 C...PYP
74240 C...Provides various real-valued event related data.
74241  
74242       FUNCTION PYP(I,J)
74243  
74244 C...Double precision and integer declarations.
74245       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74246       IMPLICIT INTEGER(I-N)
74247       INTEGER PYK,PYCHGE,PYCOMP
74248 C...Commonblocks.
74249       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74250       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74251       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74252       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74253 C...Local array.
74254       DIMENSION PSUM(4)
74255  
74256 C...Set default value. For I = 0 sum of momenta or charges,
74257 C...or invariant mass of system.
74258       PYP=0D0
74259       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
74260       ELSEIF(I.EQ.0.AND.J.LE.4) THEN
74261         DO 100 I1=1,N
74262           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+P(I1,J)
74263   100   CONTINUE
74264       ELSEIF(I.EQ.0.AND.J.EQ.5) THEN
74265         DO 120 J1=1,4
74266           PSUM(J1)=0D0
74267           DO 110 I1=1,N
74268             IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PSUM(J1)=PSUM(J1)+
74269      &      P(I1,J1)
74270   110     CONTINUE
74271   120   CONTINUE
74272         PYP=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2-PSUM(3)**2))
74273       ELSEIF(I.EQ.0.AND.J.EQ.6) THEN
74274         DO 130 I1=1,N
74275           IF(K(I1,1).GT.0.AND.K(I1,1).LE.10) PYP=PYP+PYCHGE(K(I1,2))/3D0
74276   130   CONTINUE
74277       ELSEIF(I.EQ.0) THEN
74278  
74279 C...Direct readout of P matrix.
74280       ELSEIF(J.LE.5) THEN
74281         PYP=P(I,J)
74282  
74283 C...Charge, total momentum, transverse momentum, transverse mass.
74284       ELSEIF(J.LE.12) THEN
74285         IF(J.EQ.6) PYP=PYCHGE(K(I,2))/3D0
74286         IF(J.EQ.7.OR.J.EQ.8) PYP=P(I,1)**2+P(I,2)**2+P(I,3)**2
74287         IF(J.EQ.9.OR.J.EQ.10) PYP=P(I,1)**2+P(I,2)**2
74288         IF(J.EQ.11.OR.J.EQ.12) PYP=P(I,5)**2+P(I,1)**2+P(I,2)**2
74289         IF(J.EQ.8.OR.J.EQ.10.OR.J.EQ.12) PYP=SQRT(PYP)
74290  
74291 C...Theta and phi angle in radians or degrees.
74292       ELSEIF(J.LE.16) THEN
74293         IF(J.LE.14) PYP=PYANGL(P(I,3),SQRT(P(I,1)**2+P(I,2)**2))
74294         IF(J.GE.15) PYP=PYANGL(P(I,1),P(I,2))
74295         IF(J.EQ.14.OR.J.EQ.16) PYP=PYP*180D0/PARU(1)
74296  
74297 C...True rapidity, rapidity with pion mass, pseudorapidity.
74298       ELSEIF(J.LE.19) THEN
74299         PMR=0D0
74300         IF(J.EQ.17) PMR=P(I,5)
74301         IF(J.EQ.18) PMR=PYMASS(211)
74302         PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
74303         PYP=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
74304      &  1D20)),P(I,3))
74305  
74306 C...Energy and momentum fractions (only to be used in CM frame).
74307       ELSEIF(J.LE.25) THEN
74308         IF(J.EQ.20) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)/PARU(21)
74309         IF(J.EQ.21) PYP=2D0*P(I,3)/PARU(21)
74310         IF(J.EQ.22) PYP=2D0*SQRT(P(I,1)**2+P(I,2)**2)/PARU(21)
74311         IF(J.EQ.23) PYP=2D0*P(I,4)/PARU(21)
74312         IF(J.EQ.24) PYP=(P(I,4)+P(I,3))/PARU(21)
74313         IF(J.EQ.25) PYP=(P(I,4)-P(I,3))/PARU(21)
74314       ENDIF
74315  
74316       RETURN
74317       END
74318  
74319 C*********************************************************************
74320  
74321 C...PYSPHE
74322 C...Performs sphericity tensor analysis to give sphericity,
74323 C...aplanarity and the related event axes.
74324  
74325       SUBROUTINE PYSPHE(SPH,APL)
74326  
74327 C...Double precision and integer declarations.
74328       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74329       IMPLICIT INTEGER(I-N)
74330       INTEGER PYK,PYCHGE,PYCOMP
74331 C...Parameter statement to help give large particle numbers.
74332       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
74333      &KEXCIT=4000000,KDIMEN=5000000)
74334 C...Commonblocks.
74335       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74336       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74337       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74338       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74339 C...Local arrays.
74340       DIMENSION SM(3,3),SV(3,3)
74341  
74342 C...Calculate matrix to be diagonalized.
74343       NP=0
74344       DO 110 J1=1,3
74345         DO 100 J2=J1,3
74346           SM(J1,J2)=0D0
74347   100   CONTINUE
74348   110 CONTINUE
74349       PS=0D0
74350       DO 140 I=1,N
74351         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
74352         IF(MSTU(41).GE.2) THEN
74353           KC=PYCOMP(K(I,2))
74354           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
74355      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
74356      &    K(I,2).EQ.KSUSY1+39) GOTO 140
74357           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
74358      &    GOTO 140
74359         ENDIF
74360         NP=NP+1
74361         PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
74362         PWT=1D0
74363         IF(ABS(PARU(41)-2D0).GT.0.001D0) PWT=
74364      &  MAX(1D-10,PA)**(PARU(41)-2D0)
74365         DO 130 J1=1,3
74366           DO 120 J2=J1,3
74367             SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2)
74368   120     CONTINUE
74369   130   CONTINUE
74370         PS=PS+PWT*PA**2
74371   140 CONTINUE
74372  
74373 C...Very low multiplicities (0 or 1) not considered.
74374       IF(NP.LE.1) THEN
74375         CALL PYERRM(8,'(PYSPHE:) too few particles for analysis')
74376         SPH=-1D0
74377         APL=-1D0
74378         RETURN
74379       ENDIF
74380       DO 160 J1=1,3
74381         DO 150 J2=J1,3
74382           SM(J1,J2)=SM(J1,J2)/PS
74383   150   CONTINUE
74384   160 CONTINUE
74385  
74386 C...Find eigenvalues to matrix (third degree equation).
74387       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
74388      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
74389       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
74390      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
74391      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
74392       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
74393       P(N+1,4)=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
74394       P(N+3,4)=1D0/3D0+SQRT(-SQ)*MIN(2D0*SP,-SQRT(3D0*(1D0-SP**2))-SP)
74395       P(N+2,4)=1D0-P(N+1,4)-P(N+3,4)
74396       IF(P(N+2,4).LT.1D-5) THEN
74397         CALL PYERRM(8,'(PYSPHE:) all particles back-to-back')
74398         SPH=-1D0
74399         APL=-1D0
74400         RETURN
74401       ENDIF
74402  
74403 C...Find first and last eigenvector by solving equation system.
74404       DO 240 I=1,3,2
74405         DO 180 J1=1,3
74406           SV(J1,J1)=SM(J1,J1)-P(N+I,4)
74407           DO 170 J2=J1+1,3
74408             SV(J1,J2)=SM(J1,J2)
74409             SV(J2,J1)=SM(J1,J2)
74410   170     CONTINUE
74411   180   CONTINUE
74412         SMAX=0D0
74413         DO 200 J1=1,3
74414           DO 190 J2=1,3
74415             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 190
74416             JA=J1
74417             JB=J2
74418             SMAX=ABS(SV(J1,J2))
74419   190     CONTINUE
74420   200   CONTINUE
74421         SMAX=0D0
74422         DO 220 J3=JA+1,JA+2
74423           J1=J3-3*((J3-1)/3)
74424           RL=SV(J1,JB)/SV(JA,JB)
74425           DO 210 J2=1,3
74426             SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2)
74427             IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 210
74428             JC=J1
74429             SMAX=ABS(SV(J1,J2))
74430   210     CONTINUE
74431   220   CONTINUE
74432         JB1=JB+1-3*(JB/3)
74433         JB2=JB+2-3*((JB+1)/3)
74434         P(N+I,JB1)=-SV(JC,JB2)
74435         P(N+I,JB2)=SV(JC,JB1)
74436         P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/
74437      &  SV(JA,JB)
74438         PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2)
74439         SGN=(-1D0)**INT(PYR(0)+0.5D0)
74440         DO 230 J=1,3
74441           P(N+I,J)=SGN*P(N+I,J)/PA
74442   230   CONTINUE
74443   240 CONTINUE
74444  
74445 C...Middle axis orthogonal to other two. Fill other codes.
74446       SGN=(-1D0)**INT(PYR(0)+0.5D0)
74447       P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2))
74448       P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3))
74449       P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1))
74450       DO 260 I=1,3
74451         K(N+I,1)=31
74452         K(N+I,2)=95
74453         K(N+I,3)=I
74454         K(N+I,4)=0
74455         K(N+I,5)=0
74456         P(N+I,5)=0D0
74457         DO 250 J=1,5
74458           V(I,J)=0D0
74459   250   CONTINUE
74460   260 CONTINUE
74461  
74462 C...Calculate sphericity and aplanarity. Select storing option.
74463       SPH=1.5D0*(P(N+2,4)+P(N+3,4))
74464       APL=1.5D0*P(N+3,4)
74465       MSTU(61)=N+1
74466       MSTU(62)=NP
74467       IF(MSTU(43).LE.1) MSTU(3)=3
74468       IF(MSTU(43).GE.2) N=N+3
74469  
74470       RETURN
74471       END
74472  
74473 C*********************************************************************
74474  
74475 C...PYTHRU
74476 C...Performs thrust analysis to give thrust, oblateness
74477 C...and the related event axes.
74478  
74479       SUBROUTINE PYTHRU(THR,OBL)
74480  
74481 C...Double precision and integer declarations.
74482       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74483       IMPLICIT INTEGER(I-N)
74484       INTEGER PYK,PYCHGE,PYCOMP
74485 C...Parameter statement to help give large particle numbers.
74486       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
74487      &KEXCIT=4000000,KDIMEN=5000000)
74488 C...Commonblocks.
74489       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74490       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74491       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74492       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74493 C...Local arrays.
74494       DIMENSION TDI(3),TPR(3)
74495  
74496 C...Take copy of particles that are to be considered in thrust analysis.
74497       NP=0
74498       PS=0D0
74499       DO 100 I=1,N
74500         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 100
74501         IF(MSTU(41).GE.2) THEN
74502           KC=PYCOMP(K(I,2))
74503           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
74504      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
74505      &    K(I,2).EQ.KSUSY1+39) GOTO 100
74506           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
74507      &    GOTO 100
74508         ENDIF
74509         IF(N+NP+MSTU(44)+15.GE.MSTU(4)-MSTU(32)-5) THEN
74510           CALL PYERRM(11,'(PYTHRU:) no more memory left in PYJETS')
74511           THR=-2D0
74512           OBL=-2D0
74513           RETURN
74514         ENDIF
74515         NP=NP+1
74516         K(N+NP,1)=23
74517         P(N+NP,1)=P(I,1)
74518         P(N+NP,2)=P(I,2)
74519         P(N+NP,3)=P(I,3)
74520         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
74521         P(N+NP,5)=1D0
74522         IF(ABS(PARU(42)-1D0).GT.0.001D0) P(N+NP,5)=
74523      &  P(N+NP,4)**(PARU(42)-1D0)
74524         PS=PS+P(N+NP,4)*P(N+NP,5)
74525   100 CONTINUE
74526  
74527 C...Very low multiplicities (0 or 1) not considered.
74528       IF(NP.LE.1) THEN
74529         CALL PYERRM(8,'(PYTHRU:) too few particles for analysis')
74530         THR=-1D0
74531         OBL=-1D0
74532         RETURN
74533       ENDIF
74534  
74535 C...Loop over thrust and major. T axis along z direction in latter case.
74536       DO 320 ILD=1,2
74537         IF(ILD.EQ.2) THEN
74538           K(N+NP+1,1)=31
74539           PHI=PYANGL(P(N+NP+1,1),P(N+NP+1,2))
74540           MSTU(33)=1
74541           CALL PYROBO(N+1,N+NP+1,0D0,-PHI,0D0,0D0,0D0)
74542           THE=PYANGL(P(N+NP+1,3),P(N+NP+1,1))
74543           CALL PYROBO(N+1,N+NP+1,-THE,0D0,0D0,0D0,0D0)
74544         ENDIF
74545  
74546 C...Find and order particles with highest p (pT for major).
74547         DO 110 ILF=N+NP+4,N+NP+MSTU(44)+4
74548           P(ILF,4)=0D0
74549   110   CONTINUE
74550         DO 160 I=N+1,N+NP
74551           IF(ILD.EQ.2) P(I,4)=SQRT(P(I,1)**2+P(I,2)**2)
74552           DO 130 ILF=N+NP+MSTU(44)+3,N+NP+4,-1
74553             IF(P(I,4).LE.P(ILF,4)) GOTO 140
74554             DO 120 J=1,5
74555               P(ILF+1,J)=P(ILF,J)
74556   120       CONTINUE
74557   130     CONTINUE
74558           ILF=N+NP+3
74559   140     DO 150 J=1,5
74560             P(ILF+1,J)=P(I,J)
74561   150     CONTINUE
74562   160   CONTINUE
74563  
74564 C...Find and order initial axes with highest thrust (major).
74565         DO 170 ILG=N+NP+MSTU(44)+5,N+NP+MSTU(44)+15
74566           P(ILG,4)=0D0
74567   170   CONTINUE
74568         NC=2**(MIN(MSTU(44),NP)-1)
74569         DO 250 ILC=1,NC
74570           DO 180 J=1,3
74571             TDI(J)=0D0
74572   180     CONTINUE
74573           DO 200 ILF=1,MIN(MSTU(44),NP)
74574             SGN=P(N+NP+ILF+3,5)
74575             IF(2**ILF*((ILC+2**(ILF-1)-1)/2**ILF).GE.ILC) SGN=-SGN
74576             DO 190 J=1,4-ILD
74577               TDI(J)=TDI(J)+SGN*P(N+NP+ILF+3,J)
74578   190       CONTINUE
74579   200     CONTINUE
74580           TDS=TDI(1)**2+TDI(2)**2+TDI(3)**2
74581           DO 220 ILG=N+NP+MSTU(44)+MIN(ILC,10)+4,N+NP+MSTU(44)+5,-1
74582             IF(TDS.LE.P(ILG,4)) GOTO 230
74583             DO 210 J=1,4
74584               P(ILG+1,J)=P(ILG,J)
74585   210       CONTINUE
74586   220     CONTINUE
74587           ILG=N+NP+MSTU(44)+4
74588   230     DO 240 J=1,3
74589             P(ILG+1,J)=TDI(J)
74590   240     CONTINUE
74591           P(ILG+1,4)=TDS
74592   250   CONTINUE
74593  
74594 C...Iterate direction of axis until stable maximum.
74595         P(N+NP+ILD,4)=0D0
74596         ILG=0
74597   260   ILG=ILG+1
74598         THP=0D0
74599   270   THPS=THP
74600         DO 280 J=1,3
74601           IF(THP.LE.1D-10) TDI(J)=P(N+NP+MSTU(44)+4+ILG,J)
74602           IF(THP.GT.1D-10) TDI(J)=TPR(J)
74603           TPR(J)=0D0
74604   280   CONTINUE
74605         DO 300 I=N+1,N+NP
74606           SGN=SIGN(P(I,5),TDI(1)*P(I,1)+TDI(2)*P(I,2)+TDI(3)*P(I,3))
74607           DO 290 J=1,4-ILD
74608             TPR(J)=TPR(J)+SGN*P(I,J)
74609   290     CONTINUE
74610   300   CONTINUE
74611         THP=SQRT(TPR(1)**2+TPR(2)**2+TPR(3)**2)/PS
74612         IF(THP.GE.THPS+PARU(48)) GOTO 270
74613  
74614 C...Save good axis. Try new initial axis until a number of tries agree.
74615         IF(THP.LT.P(N+NP+ILD,4)-PARU(48).AND.ILG.LT.MIN(10,NC)) GOTO 260
74616         IF(THP.GT.P(N+NP+ILD,4)+PARU(48)) THEN
74617           IAGR=0
74618           SGN=(-1D0)**INT(PYR(0)+0.5D0)
74619           DO 310 J=1,3
74620             P(N+NP+ILD,J)=SGN*TPR(J)/(PS*THP)
74621   310     CONTINUE
74622           P(N+NP+ILD,4)=THP
74623           P(N+NP+ILD,5)=0D0
74624         ENDIF
74625         IAGR=IAGR+1
74626         IF(IAGR.LT.MSTU(45).AND.ILG.LT.MIN(10,NC)) GOTO 260
74627   320 CONTINUE
74628  
74629 C...Find minor axis and value by orthogonality.
74630       SGN=(-1D0)**INT(PYR(0)+0.5D0)
74631       P(N+NP+3,1)=-SGN*P(N+NP+2,2)
74632       P(N+NP+3,2)=SGN*P(N+NP+2,1)
74633       P(N+NP+3,3)=0D0
74634       THP=0D0
74635       DO 330 I=N+1,N+NP
74636         THP=THP+P(I,5)*ABS(P(N+NP+3,1)*P(I,1)+P(N+NP+3,2)*P(I,2))
74637   330 CONTINUE
74638       P(N+NP+3,4)=THP/PS
74639       P(N+NP+3,5)=0D0
74640  
74641 C...Fill axis information. Rotate back to original coordinate system.
74642       DO 350 ILD=1,3
74643         K(N+ILD,1)=31
74644         K(N+ILD,2)=96
74645         K(N+ILD,3)=ILD
74646         K(N+ILD,4)=0
74647         K(N+ILD,5)=0
74648         DO 340 J=1,5
74649           P(N+ILD,J)=P(N+NP+ILD,J)
74650           V(N+ILD,J)=0D0
74651   340   CONTINUE
74652   350 CONTINUE
74653       CALL PYROBO(N+1,N+3,THE,PHI,0D0,0D0,0D0)
74654  
74655 C...Calculate thrust and oblateness. Select storing option.
74656       THR=P(N+1,4)
74657       OBL=P(N+2,4)-P(N+3,4)
74658       MSTU(61)=N+1
74659       MSTU(62)=NP
74660       IF(MSTU(43).LE.1) MSTU(3)=3
74661       IF(MSTU(43).GE.2) N=N+3
74662  
74663       RETURN
74664       END
74665  
74666 C*********************************************************************
74667  
74668 C...PYCLUS
74669 C...Subdivides the particle content of an event into jets/clusters.
74670  
74671       SUBROUTINE PYCLUS(NJET)
74672  
74673 C...Double precision and integer declarations.
74674       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
74675       IMPLICIT INTEGER(I-N)
74676       INTEGER PYK,PYCHGE,PYCOMP
74677 C...Parameter statement to help give large particle numbers.
74678       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
74679      &KEXCIT=4000000,KDIMEN=5000000)
74680 C...Commonblocks.
74681       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
74682       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
74683       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
74684       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
74685 C...Local arrays and saved variables.
74686       DIMENSION PS(5)
74687       SAVE NSAV,NP,PS,PSS,RINIT,NPRE,NREM
74688  
74689 C...Functions: distance measure in pT, (pseudo)mass or Durham pT.
74690       R2T(I1,I2)=(P(I1,5)*P(I2,5)-P(I1,1)*P(I2,1)-P(I1,2)*P(I2,2)-
74691      &P(I1,3)*P(I2,3))*2D0*P(I1,5)*P(I2,5)/(0.0001D0+P(I1,5)+P(I2,5))**2
74692       R2M(I1,I2)=2D0*P(I1,4)*P(I2,4)*(1D0-(P(I1,1)*P(I2,1)+P(I1,2)*
74693      &P(I2,2)+P(I1,3)*P(I2,3))/MAX(1D-10,P(I1,5)*P(I2,5)))
74694       R2D(I1,I2)=2D0*MIN(P(I1,4),P(I2,4))**2*(1D0-(P(I1,1)*P(I2,1)+
74695      &P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/MAX(1D-10,P(I1,5)*P(I2,5)))
74696  
74697 C...If first time, reset. If reentering, skip preliminaries.
74698       IF(MSTU(48).LE.0) THEN
74699         NP=0
74700         DO 100 J=1,5
74701           PS(J)=0D0
74702   100   CONTINUE
74703         PSS=0D0
74704         PIMASS=PMAS(PYCOMP(211),1)
74705       ELSE
74706         NJET=NSAV
74707         IF(MSTU(43).GE.2) N=N-NJET
74708         DO 110 I=N+1,N+NJET
74709           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
74710   110   CONTINUE
74711         IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
74712           R2ACC=PARU(44)**2
74713         ELSE
74714           R2ACC=PARU(45)*PS(5)**2
74715         ENDIF
74716         NLOOP=0
74717         GOTO 300
74718       ENDIF
74719  
74720 C...Find which particles are to be considered in cluster search.
74721       DO 140 I=1,N
74722         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 140
74723         IF(MSTU(41).GE.2) THEN
74724           KC=PYCOMP(K(I,2))
74725           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
74726      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
74727      &    K(I,2).EQ.KSUSY1+39) GOTO 140
74728           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
74729      &    GOTO 140
74730         ENDIF
74731         IF(N+2*NP.GE.MSTU(4)-MSTU(32)-5) THEN
74732           CALL PYERRM(11,'(PYCLUS:) no more memory left in PYJETS')
74733           NJET=-1
74734           RETURN
74735         ENDIF
74736  
74737 C...Take copy of these particles, with space left for jets later on.
74738         NP=NP+1
74739         K(N+NP,3)=I
74740         DO 120 J=1,5
74741           P(N+NP,J)=P(I,J)
74742   120   CONTINUE
74743         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
74744         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
74745         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
74746         P(N+NP,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
74747         DO 130 J=1,4
74748           PS(J)=PS(J)+P(N+NP,J)
74749   130   CONTINUE
74750         PSS=PSS+P(N+NP,5)
74751   140 CONTINUE
74752       DO 160 I=N+1,N+NP
74753         K(I+NP,3)=K(I,3)
74754         DO 150 J=1,5
74755           P(I+NP,J)=P(I,J)
74756   150   CONTINUE
74757   160 CONTINUE
74758       PS(5)=SQRT(MAX(0D0,PS(4)**2-PS(1)**2-PS(2)**2-PS(3)**2))
74759  
74760 C...Very low multiplicities not considered.
74761       IF(NP.LT.MSTU(47)) THEN
74762         CALL PYERRM(8,'(PYCLUS:) too few particles for analysis')
74763         NJET=-1
74764         RETURN
74765       ENDIF
74766  
74767 C...Find precluster configuration. If too few jets, make harder cuts.
74768       NLOOP=0
74769       IF(MSTU(46).LE.3.OR.MSTU(46).EQ.5) THEN
74770         R2ACC=PARU(44)**2
74771       ELSE
74772         R2ACC=PARU(45)*PS(5)**2
74773       ENDIF
74774       RINIT=1.25D0*PARU(43)
74775       IF(NP.LE.MSTU(47)+2) RINIT=0D0
74776   170 RINIT=0.8D0*RINIT
74777       NPRE=0
74778       NREM=NP
74779       DO 180 I=N+NP+1,N+2*NP
74780         K(I,4)=0
74781   180 CONTINUE
74782  
74783 C...Sum up small momentum region. Jet if enough absolute momentum.
74784       IF(MSTU(46).LE.2) THEN
74785         DO 190 J=1,4
74786           P(N+1,J)=0D0
74787   190   CONTINUE
74788         DO 210 I=N+NP+1,N+2*NP
74789           IF(P(I,5).GT.2D0*RINIT) GOTO 210
74790           NREM=NREM-1
74791           K(I,4)=1
74792           DO 200 J=1,4
74793             P(N+1,J)=P(N+1,J)+P(I,J)
74794   200     CONTINUE
74795   210   CONTINUE
74796         P(N+1,5)=SQRT(P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2)
74797         IF(P(N+1,5).GT.2D0*RINIT) NPRE=1
74798         IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
74799         IF(NREM.EQ.0) GOTO 170
74800       ENDIF
74801  
74802 C...Find fastest remaining particle.
74803   220 NPRE=NPRE+1
74804       PMAX=0D0
74805       DO 230 I=N+NP+1,N+2*NP
74806         IF(K(I,4).NE.0.OR.P(I,5).LE.PMAX) GOTO 230
74807         IMAX=I
74808         PMAX=P(I,5)
74809   230 CONTINUE
74810       DO 240 J=1,5
74811         P(N+NPRE,J)=P(IMAX,J)
74812   240 CONTINUE
74813       NREM=NREM-1
74814       K(IMAX,4)=NPRE
74815  
74816 C...Sum up precluster around it according to pT separation.
74817       IF(MSTU(46).LE.2) THEN
74818         DO 260 I=N+NP+1,N+2*NP
74819           IF(K(I,4).NE.0) GOTO 260
74820           R2=R2T(I,IMAX)
74821           IF(R2.GT.RINIT**2) GOTO 260
74822           NREM=NREM-1
74823           K(I,4)=NPRE
74824           DO 250 J=1,4
74825             P(N+NPRE,J)=P(N+NPRE,J)+P(I,J)
74826   250     CONTINUE
74827   260   CONTINUE
74828         P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
74829  
74830 C...Sum up precluster around it according to mass or
74831 C...Durham pT separation.
74832       ELSE
74833   270   IMIN=0
74834         R2MIN=RINIT**2
74835         DO 280 I=N+NP+1,N+2*NP
74836           IF(K(I,4).NE.0) GOTO 280
74837           IF(MSTU(46).LE.4) THEN
74838             R2=R2M(I,N+NPRE)
74839           ELSE
74840             R2=R2D(I,N+NPRE)
74841           ENDIF
74842           IF(R2.GE.R2MIN) GOTO 280
74843           IMIN=I
74844           R2MIN=R2
74845   280   CONTINUE
74846         IF(IMIN.NE.0) THEN
74847           DO 290 J=1,4
74848             P(N+NPRE,J)=P(N+NPRE,J)+P(IMIN,J)
74849   290     CONTINUE
74850           P(N+NPRE,5)=SQRT(P(N+NPRE,1)**2+P(N+NPRE,2)**2+P(N+NPRE,3)**2)
74851           NREM=NREM-1
74852           K(IMIN,4)=NPRE
74853           GOTO 270
74854         ENDIF
74855       ENDIF
74856  
74857 C...Check if more preclusters to be found. Start over if too few.
74858       IF(RINIT.GE.0.2D0*PARU(43).AND.NPRE+NREM.LT.MSTU(47)) GOTO 170
74859       IF(NREM.GT.0) GOTO 220
74860       NJET=NPRE
74861  
74862 C...Reassign all particles to nearest jet. Sum up new jet momenta.
74863   300 TSAV=0D0
74864       PSJT=0D0
74865   310 IF(MSTU(46).LE.1) THEN
74866         DO 330 I=N+1,N+NJET
74867           DO 320 J=1,4
74868             V(I,J)=0D0
74869   320     CONTINUE
74870   330   CONTINUE
74871         DO 360 I=N+NP+1,N+2*NP
74872           R2MIN=PSS**2
74873           DO 340 IJET=N+1,N+NJET
74874             IF(P(IJET,5).LT.RINIT) GOTO 340
74875             R2=R2T(I,IJET)
74876             IF(R2.GE.R2MIN) GOTO 340
74877             IMIN=IJET
74878             R2MIN=R2
74879   340     CONTINUE
74880           K(I,4)=IMIN-N
74881           DO 350 J=1,4
74882             V(IMIN,J)=V(IMIN,J)+P(I,J)
74883   350     CONTINUE
74884   360   CONTINUE
74885         PSJT=0D0
74886         DO 380 I=N+1,N+NJET
74887           DO 370 J=1,4
74888             P(I,J)=V(I,J)
74889   370     CONTINUE
74890           P(I,5)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
74891           PSJT=PSJT+P(I,5)
74892   380   CONTINUE
74893       ENDIF
74894  
74895 C...Find two closest jets.
74896       R2MIN=2D0*MAX(R2ACC,PS(5)**2)
74897       DO 400 ITRY1=N+1,N+NJET-1
74898         DO 390 ITRY2=ITRY1+1,N+NJET
74899           IF(MSTU(46).LE.2) THEN
74900             R2=R2T(ITRY1,ITRY2)
74901           ELSEIF(MSTU(46).LE.4) THEN
74902             R2=R2M(ITRY1,ITRY2)
74903           ELSE
74904             R2=R2D(ITRY1,ITRY2)
74905           ENDIF
74906           IF(R2.GE.R2MIN) GOTO 390
74907           IMIN1=ITRY1
74908           IMIN2=ITRY2
74909           R2MIN=R2
74910   390   CONTINUE
74911   400 CONTINUE
74912  
74913 C...If allowed, join two closest jets and start over.
74914       IF(NJET.GT.MSTU(47).AND.R2MIN.LT.R2ACC) THEN
74915         IREC=MIN(IMIN1,IMIN2)
74916         IDEL=MAX(IMIN1,IMIN2)
74917         DO 410 J=1,4
74918           P(IREC,J)=P(IMIN1,J)+P(IMIN2,J)
74919   410   CONTINUE
74920         P(IREC,5)=SQRT(P(IREC,1)**2+P(IREC,2)**2+P(IREC,3)**2)
74921         DO 430 I=IDEL+1,N+NJET
74922           DO 420 J=1,5
74923             P(I-1,J)=P(I,J)
74924   420     CONTINUE
74925   430   CONTINUE
74926         IF(MSTU(46).GE.2) THEN
74927           DO 440 I=N+NP+1,N+2*NP
74928             IORI=N+K(I,4)
74929             IF(IORI.EQ.IDEL) K(I,4)=IREC-N
74930             IF(IORI.GT.IDEL) K(I,4)=K(I,4)-1
74931   440     CONTINUE
74932         ENDIF
74933         NJET=NJET-1
74934         GOTO 300
74935  
74936 C...Divide up broad jet if empty cluster in list of final ones.
74937       ELSEIF(NJET.EQ.MSTU(47).AND.MSTU(46).LE.1.AND.NLOOP.LE.2) THEN
74938         DO 450 I=N+1,N+NJET
74939           K(I,5)=0
74940   450   CONTINUE
74941         DO 460 I=N+NP+1,N+2*NP
74942           K(N+K(I,4),5)=K(N+K(I,4),5)+1
74943   460   CONTINUE
74944         IEMP=0
74945         DO 470 I=N+1,N+NJET
74946           IF(K(I,5).EQ.0) IEMP=I
74947   470   CONTINUE
74948         IF(IEMP.NE.0) THEN
74949           NLOOP=NLOOP+1
74950           ISPL=0
74951           R2MAX=0D0
74952           DO 480 I=N+NP+1,N+2*NP
74953             IF(K(N+K(I,4),5).LE.1.OR.P(I,5).LT.RINIT) GOTO 480
74954             IJET=N+K(I,4)
74955             R2=R2T(I,IJET)
74956             IF(R2.LE.R2MAX) GOTO 480
74957             ISPL=I
74958             R2MAX=R2
74959   480     CONTINUE
74960           IF(ISPL.NE.0) THEN
74961             IJET=N+K(ISPL,4)
74962             DO 490 J=1,4
74963               P(IEMP,J)=P(ISPL,J)
74964               P(IJET,J)=P(IJET,J)-P(ISPL,J)
74965   490       CONTINUE
74966             P(IEMP,5)=P(ISPL,5)
74967             P(IJET,5)=SQRT(P(IJET,1)**2+P(IJET,2)**2+P(IJET,3)**2)
74968             IF(NLOOP.LE.2) GOTO 300
74969           ENDIF
74970         ENDIF
74971       ENDIF
74972  
74973 C...If generalized thrust has not yet converged, continue iteration.
74974       IF(MSTU(46).LE.1.AND.NLOOP.LE.2.AND.PSJT/PSS.GT.TSAV+PARU(48))
74975      &THEN
74976         TSAV=PSJT/PSS
74977         GOTO 310
74978       ENDIF
74979  
74980 C...Reorder jets according to energy.
74981       DO 510 I=N+1,N+NJET
74982         DO 500 J=1,5
74983           V(I,J)=P(I,J)
74984   500   CONTINUE
74985   510 CONTINUE
74986       DO 540 INEW=N+1,N+NJET
74987         PEMAX=0D0
74988         DO 520 ITRY=N+1,N+NJET
74989           IF(V(ITRY,4).LE.PEMAX) GOTO 520
74990           IMAX=ITRY
74991           PEMAX=V(ITRY,4)
74992   520   CONTINUE
74993         K(INEW,1)=31
74994         K(INEW,2)=97
74995         K(INEW,3)=INEW-N
74996         K(INEW,4)=0
74997         DO 530 J=1,5
74998           P(INEW,J)=V(IMAX,J)
74999   530   CONTINUE
75000         V(IMAX,4)=-1D0
75001         K(IMAX,5)=INEW
75002   540 CONTINUE
75003  
75004 C...Clean up particle-jet assignments and jet information.
75005       DO 550 I=N+NP+1,N+2*NP
75006         IORI=K(N+K(I,4),5)
75007         K(I,4)=IORI-N
75008         IF(K(K(I,3),1).NE.3) K(K(I,3),4)=IORI-N
75009         K(IORI,4)=K(IORI,4)+1
75010   550 CONTINUE
75011       IEMP=0
75012       PSJT=0D0
75013       DO 570 I=N+1,N+NJET
75014         K(I,5)=0
75015         PSJT=PSJT+P(I,5)
75016         P(I,5)=SQRT(MAX(P(I,4)**2-P(I,5)**2,0D0))
75017         DO 560 J=1,5
75018           V(I,J)=0D0
75019   560   CONTINUE
75020         IF(K(I,4).EQ.0) IEMP=I
75021   570 CONTINUE
75022  
75023 C...Select storing option. Output variables. Check for failure.
75024       MSTU(61)=N+1
75025       MSTU(62)=NP
75026       MSTU(63)=NPRE
75027       PARU(61)=PS(5)
75028       PARU(62)=PSJT/PSS
75029       PARU(63)=SQRT(R2MIN)
75030       IF(NJET.LE.1) PARU(63)=0D0
75031       IF(IEMP.NE.0) THEN
75032         CALL PYERRM(8,'(PYCLUS:) failed to reconstruct as requested')
75033         NJET=-1
75034         RETURN
75035       ENDIF
75036       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
75037       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
75038       NSAV=NJET
75039  
75040       RETURN
75041       END
75042  
75043 C*********************************************************************
75044  
75045 C...PYCELL
75046 C...Provides a simple way of jet finding in eta-phi-ET coordinates,
75047 C...as used for calorimeters at hadron colliders.
75048  
75049       SUBROUTINE PYCELL(NJET)
75050  
75051 C...Double precision and integer declarations.
75052       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75053       IMPLICIT INTEGER(I-N)
75054       INTEGER PYK,PYCHGE,PYCOMP
75055 C...Parameter statement to help give large particle numbers.
75056       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
75057      &KEXCIT=4000000,KDIMEN=5000000)
75058 C...Commonblocks.
75059       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
75060       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75061       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
75062       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
75063  
75064 C...Loop over all particles. Find cell that was hit by given particle.
75065       PTLRAT=1D0/SINH(PARU(51))**2
75066       NP=0
75067       NC=N
75068       DO 110 I=1,N
75069         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
75070         IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110
75071         IF(MSTU(41).GE.2) THEN
75072           KC=PYCOMP(K(I,2))
75073           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
75074      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
75075      &    K(I,2).EQ.KSUSY1+39) GOTO 110
75076           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
75077      &    GOTO 110
75078         ENDIF
75079         NP=NP+1
75080         PT=SQRT(P(I,1)**2+P(I,2)**2)
75081         ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3))
75082         IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5D0*
75083      &  (ETA/PARU(51)+1D0))))
75084         PHI=PYANGL(P(I,1),P(I,2))
75085         IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5D0*
75086      &  (PHI/PARU(1)+1D0))))
75087         IETPH=MSTU(52)*IETA+IPHI
75088  
75089 C...Add to cell already hit, or book new cell.
75090         DO 100 IC=N+1,NC
75091           IF(IETPH.EQ.K(IC,3)) THEN
75092             K(IC,4)=K(IC,4)+1
75093             P(IC,5)=P(IC,5)+PT
75094             GOTO 110
75095           ENDIF
75096   100   CONTINUE
75097         IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN
75098           CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
75099           NJET=-2
75100           RETURN
75101         ENDIF
75102         NC=NC+1
75103         K(NC,3)=IETPH
75104         K(NC,4)=1
75105         K(NC,5)=2
75106         P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51))
75107         P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52))
75108         P(NC,5)=PT
75109   110 CONTINUE
75110  
75111 C...Smear true bin content by calorimeter resolution.
75112       IF(MSTU(53).GE.1) THEN
75113         DO 130 IC=N+1,NC
75114           PEI=P(IC,5)
75115           IF(MSTU(53).EQ.2) PEI=P(IC,5)*COSH(P(IC,1))
75116   120     PEF=PEI+PARU(55)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0)))*PEI)*
75117      &    COS(PARU(2)*PYR(0))
75118           IF(PEF.LT.0D0.OR.PEF.GT.PARU(56)*PEI) GOTO 120
75119           P(IC,5)=PEF
75120           IF(MSTU(53).EQ.2) P(IC,5)=PEF/COSH(P(IC,1))
75121   130   CONTINUE
75122       ENDIF
75123  
75124 C...Remove cells below threshold.
75125       IF(PARU(58).GT.0D0) THEN
75126         NCC=NC
75127         NC=N
75128         DO 140 IC=N+1,NCC
75129           IF(P(IC,5).GT.PARU(58)) THEN
75130             NC=NC+1
75131             K(NC,3)=K(IC,3)
75132             K(NC,4)=K(IC,4)
75133             K(NC,5)=K(IC,5)
75134             P(NC,1)=P(IC,1)
75135             P(NC,2)=P(IC,2)
75136             P(NC,5)=P(IC,5)
75137           ENDIF
75138   140   CONTINUE
75139       ENDIF
75140  
75141 C...Find initiator cell: the one with highest pT of not yet used ones.
75142       NJ=NC
75143   150 ETMAX=0D0
75144       DO 160 IC=N+1,NC
75145         IF(K(IC,5).NE.2) GOTO 160
75146         IF(P(IC,5).LE.ETMAX) GOTO 160
75147         ICMAX=IC
75148         ETA=P(IC,1)
75149         PHI=P(IC,2)
75150         ETMAX=P(IC,5)
75151   160 CONTINUE
75152       IF(ETMAX.LT.PARU(52)) GOTO 220
75153       IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN
75154         CALL PYERRM(11,'(PYCELL:) no more memory left in PYJETS')
75155         NJET=-2
75156         RETURN
75157       ENDIF
75158       K(ICMAX,5)=1
75159       NJ=NJ+1
75160       K(NJ,4)=0
75161       K(NJ,5)=1
75162       P(NJ,1)=ETA
75163       P(NJ,2)=PHI
75164       P(NJ,3)=0D0
75165       P(NJ,4)=0D0
75166       P(NJ,5)=0D0
75167  
75168 C...Sum up unused cells within required distance of initiator.
75169       DO 170 IC=N+1,NC
75170         IF(K(IC,5).EQ.0) GOTO 170
75171         IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 170
75172         DPHIA=ABS(P(IC,2)-PHI)
75173         IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 170
75174         PHIC=P(IC,2)
75175         IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI)
75176         IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 170
75177         K(IC,5)=-K(IC,5)
75178         K(NJ,4)=K(NJ,4)+K(IC,4)
75179         P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1)
75180         P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC
75181         P(NJ,5)=P(NJ,5)+P(IC,5)
75182   170 CONTINUE
75183  
75184 C...Reject cluster below minimum ET, else accept.
75185       IF(P(NJ,5).LT.PARU(53)) THEN
75186         NJ=NJ-1
75187         DO 180 IC=N+1,NC
75188           IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5)
75189   180   CONTINUE
75190       ELSEIF(MSTU(54).LE.2) THEN
75191         P(NJ,3)=P(NJ,3)/P(NJ,5)
75192         P(NJ,4)=P(NJ,4)/P(NJ,5)
75193         IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2),
75194      &  P(NJ,4))
75195         DO 190 IC=N+1,NC
75196           IF(K(IC,5).LT.0) K(IC,5)=0
75197   190   CONTINUE
75198       ELSE
75199         DO 200 J=1,4
75200           P(NJ,J)=0D0
75201   200   CONTINUE
75202         DO 210 IC=N+1,NC
75203           IF(K(IC,5).GE.0) GOTO 210
75204           P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2))
75205           P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2))
75206           P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1))
75207           P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1))
75208           K(IC,5)=0
75209   210   CONTINUE
75210       ENDIF
75211       GOTO 150
75212  
75213 C...Arrange clusters in falling ET sequence.
75214   220 DO 250 I=1,NJ-NC
75215         ETMAX=0D0
75216         DO 230 IJ=NC+1,NJ
75217           IF(K(IJ,5).EQ.0) GOTO 230
75218           IF(P(IJ,5).LT.ETMAX) GOTO 230
75219           IJMAX=IJ
75220           ETMAX=P(IJ,5)
75221   230   CONTINUE
75222         K(IJMAX,5)=0
75223         K(N+I,1)=31
75224         K(N+I,2)=98
75225         K(N+I,3)=I
75226         K(N+I,4)=K(IJMAX,4)
75227         K(N+I,5)=0
75228         DO 240 J=1,5
75229           P(N+I,J)=P(IJMAX,J)
75230           V(N+I,J)=0D0
75231   240   CONTINUE
75232   250 CONTINUE
75233       NJET=NJ-NC
75234  
75235 C...Convert to massless or massive four-vectors.
75236       IF(MSTU(54).EQ.2) THEN
75237         DO 260 I=N+1,N+NJET
75238           ETA=P(I,3)
75239           P(I,1)=P(I,5)*COS(P(I,4))
75240           P(I,2)=P(I,5)*SIN(P(I,4))
75241           P(I,3)=P(I,5)*SINH(ETA)
75242           P(I,4)=P(I,5)*COSH(ETA)
75243           P(I,5)=0D0
75244   260   CONTINUE
75245       ELSEIF(MSTU(54).GE.3) THEN
75246         DO 270 I=N+1,N+NJET
75247           P(I,5)=SQRT(MAX(0D0,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2))
75248   270   CONTINUE
75249       ENDIF
75250  
75251 C...Information about storage.
75252       MSTU(61)=N+1
75253       MSTU(62)=NP
75254       MSTU(63)=NC-N
75255       IF(MSTU(43).LE.1) MSTU(3)=MAX(0,NJET)
75256       IF(MSTU(43).GE.2) N=N+MAX(0,NJET)
75257  
75258       RETURN
75259       END
75260  
75261 C*********************************************************************
75262  
75263 C...PYJMAS
75264 C...Determines, approximately, the two jet masses that minimize
75265 C...the sum m_H^2 + m_L^2, a la Clavelli and Wyler.
75266  
75267       SUBROUTINE PYJMAS(PMH,PML)
75268  
75269 C...Double precision and integer declarations.
75270       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75271       IMPLICIT INTEGER(I-N)
75272       INTEGER PYK,PYCHGE,PYCOMP
75273 C...Parameter statement to help give large particle numbers.
75274       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
75275      &KEXCIT=4000000,KDIMEN=5000000)
75276 C...Commonblocks.
75277       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
75278       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75279       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
75280       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
75281 C...Local arrays.
75282       DIMENSION SM(3,3),SAX(3),PS(3,5)
75283  
75284 C...Reset.
75285       NP=0
75286       DO 120 J1=1,3
75287         DO 100 J2=J1,3
75288           SM(J1,J2)=0D0
75289   100   CONTINUE
75290         DO 110 J2=1,4
75291           PS(J1,J2)=0D0
75292   110   CONTINUE
75293   120 CONTINUE
75294       PSS=0D0
75295       PIMASS=PMAS(PYCOMP(211),1)
75296  
75297 C...Take copy of particles that are to be considered in mass analysis.
75298       DO 170 I=1,N
75299         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 170
75300         IF(MSTU(41).GE.2) THEN
75301           KC=PYCOMP(K(I,2))
75302           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
75303      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
75304      &    K(I,2).EQ.KSUSY1+39) GOTO 170
75305           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
75306      &    GOTO 170
75307         ENDIF
75308         IF(N+NP+1.GE.MSTU(4)-MSTU(32)-5) THEN
75309           CALL PYERRM(11,'(PYJMAS:) no more memory left in PYJETS')
75310           PMH=-2D0
75311           PML=-2D0
75312           RETURN
75313         ENDIF
75314         NP=NP+1
75315         DO 130 J=1,5
75316           P(N+NP,J)=P(I,J)
75317   130   CONTINUE
75318         IF(MSTU(42).EQ.0) P(N+NP,5)=0D0
75319         IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) P(N+NP,5)=PIMASS
75320         P(N+NP,4)=SQRT(P(N+NP,5)**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
75321  
75322 C...Fill information in sphericity tensor and total momentum vector.
75323         DO 150 J1=1,3
75324           DO 140 J2=J1,3
75325             SM(J1,J2)=SM(J1,J2)+P(I,J1)*P(I,J2)
75326   140     CONTINUE
75327   150   CONTINUE
75328         PSS=PSS+(P(I,1)**2+P(I,2)**2+P(I,3)**2)
75329         DO 160 J=1,4
75330           PS(3,J)=PS(3,J)+P(N+NP,J)
75331   160   CONTINUE
75332   170 CONTINUE
75333  
75334 C...Very low multiplicities (0 or 1) not considered.
75335       IF(NP.LE.1) THEN
75336         CALL PYERRM(8,'(PYJMAS:) too few particles for analysis')
75337         PMH=-1D0
75338         PML=-1D0
75339         RETURN
75340       ENDIF
75341       PARU(61)=SQRT(MAX(0D0,PS(3,4)**2-PS(3,1)**2-PS(3,2)**2-
75342      &PS(3,3)**2))
75343  
75344 C...Find largest eigenvalue to matrix (third degree equation).
75345       DO 190 J1=1,3
75346         DO 180 J2=J1,3
75347           SM(J1,J2)=SM(J1,J2)/PSS
75348   180   CONTINUE
75349   190 CONTINUE
75350       SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-
75351      &SM(1,2)**2-SM(1,3)**2-SM(2,3)**2)/3D0-1D0/9D0
75352       SR=-0.5D0*(SQ+1D0/9D0+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+
75353      &SM(3,3)*SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+
75354      &SM(1,2)*SM(1,3)*SM(2,3)+1D0/27D0
75355       SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1D0),-1D0))/3D0)
75356       SMA=1D0/3D0+SQRT(-SQ)*MAX(2D0*SP,SQRT(3D0*(1D0-SP**2))-SP)
75357  
75358 C...Find largest eigenvector by solving equation system.
75359       DO 210 J1=1,3
75360         SM(J1,J1)=SM(J1,J1)-SMA
75361         DO 200 J2=J1+1,3
75362           SM(J2,J1)=SM(J1,J2)
75363   200   CONTINUE
75364   210 CONTINUE
75365       SMAX=0D0
75366       DO 230 J1=1,3
75367         DO 220 J2=1,3
75368           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 220
75369           JA=J1
75370           JB=J2
75371           SMAX=ABS(SM(J1,J2))
75372   220   CONTINUE
75373   230 CONTINUE
75374       SMAX=0D0
75375       DO 250 J3=JA+1,JA+2
75376         J1=J3-3*((J3-1)/3)
75377         RL=SM(J1,JB)/SM(JA,JB)
75378         DO 240 J2=1,3
75379           SM(J1,J2)=SM(J1,J2)-RL*SM(JA,J2)
75380           IF(ABS(SM(J1,J2)).LE.SMAX) GOTO 240
75381           JC=J1
75382           SMAX=ABS(SM(J1,J2))
75383   240   CONTINUE
75384   250 CONTINUE
75385       JB1=JB+1-3*(JB/3)
75386       JB2=JB+2-3*((JB+1)/3)
75387       SAX(JB1)=-SM(JC,JB2)
75388       SAX(JB2)=SM(JC,JB1)
75389       SAX(JB)=-(SM(JA,JB1)*SAX(JB1)+SM(JA,JB2)*SAX(JB2))/SM(JA,JB)
75390  
75391 C...Divide particles into two initial clusters by hemisphere.
75392       DO 270 I=N+1,N+NP
75393         PSAX=P(I,1)*SAX(1)+P(I,2)*SAX(2)+P(I,3)*SAX(3)
75394         IS=1
75395         IF(PSAX.LT.0D0) IS=2
75396         K(I,3)=IS
75397         DO 260 J=1,4
75398           PS(IS,J)=PS(IS,J)+P(I,J)
75399   260   CONTINUE
75400   270 CONTINUE
75401       PMS=MAX(1D-10,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2)+
75402      &MAX(1D-10,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2)
75403  
75404 C...Reassign one particle at a time; find maximum decrease of m^2 sum.
75405   280 PMD=0D0
75406       IM=0
75407       DO 290 J=1,4
75408         PS(3,J)=PS(1,J)-PS(2,J)
75409   290 CONTINUE
75410       DO 300 I=N+1,N+NP
75411         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)
75412         IF(K(I,3).EQ.1) PMDI=2D0*(P(I,5)**2-PPS)
75413         IF(K(I,3).EQ.2) PMDI=2D0*(P(I,5)**2+PPS)
75414         IF(PMDI.LT.PMD) THEN
75415           PMD=PMDI
75416           IM=I
75417         ENDIF
75418   300 CONTINUE
75419  
75420 C...Loop back if significant reduction in sum of m^2.
75421       IF(PMD.LT.-PARU(48)*PMS) THEN
75422         PMS=PMS+PMD
75423         IS=K(IM,3)
75424         DO 310 J=1,4
75425           PS(IS,J)=PS(IS,J)-P(IM,J)
75426           PS(3-IS,J)=PS(3-IS,J)+P(IM,J)
75427   310   CONTINUE
75428         K(IM,3)=3-IS
75429         GOTO 280
75430       ENDIF
75431  
75432 C...Final masses and output.
75433       MSTU(61)=N+1
75434       MSTU(62)=NP
75435       PS(1,5)=SQRT(MAX(0D0,PS(1,4)**2-PS(1,1)**2-PS(1,2)**2-PS(1,3)**2))
75436       PS(2,5)=SQRT(MAX(0D0,PS(2,4)**2-PS(2,1)**2-PS(2,2)**2-PS(2,3)**2))
75437       PMH=MAX(PS(1,5),PS(2,5))
75438       PML=MIN(PS(1,5),PS(2,5))
75439  
75440       RETURN
75441       END
75442  
75443 C*********************************************************************
75444  
75445 C...PYFOWO
75446 C...Calculates the first few Fox-Wolfram moments.
75447  
75448       SUBROUTINE PYFOWO(H10,H20,H30,H40)
75449  
75450 C...Double precision and integer declarations.
75451       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75452       IMPLICIT INTEGER(I-N)
75453       INTEGER PYK,PYCHGE,PYCOMP
75454 C...Parameter statement to help give large particle numbers.
75455       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
75456      &KEXCIT=4000000,KDIMEN=5000000)
75457 C...Commonblocks.
75458       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
75459       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75460       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
75461       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
75462  
75463 C...Copy momenta for particles and calculate H0.
75464       NP=0
75465       H0=0D0
75466       HD=0D0
75467       DO 110 I=1,N
75468         IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
75469         IF(MSTU(41).GE.2) THEN
75470           KC=PYCOMP(K(I,2))
75471           IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
75472      &    KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
75473      &    K(I,2).EQ.KSUSY1+39) GOTO 110
75474           IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.PYCHGE(K(I,2)).EQ.0)
75475      &    GOTO 110
75476         ENDIF
75477         IF(N+NP.GE.MSTU(4)-MSTU(32)-5) THEN
75478           CALL PYERRM(11,'(PYFOWO:) no more memory left in PYJETS')
75479           H10=-1D0
75480           H20=-1D0
75481           H30=-1D0
75482           H40=-1D0
75483           RETURN
75484         ENDIF
75485         NP=NP+1
75486         DO 100 J=1,3
75487           P(N+NP,J)=P(I,J)
75488   100   CONTINUE
75489         P(N+NP,4)=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
75490         H0=H0+P(N+NP,4)
75491         HD=HD+P(N+NP,4)**2
75492   110 CONTINUE
75493       H0=H0**2
75494  
75495 C...Very low multiplicities (0 or 1) not considered.
75496       IF(NP.LE.1) THEN
75497         CALL PYERRM(8,'(PYFOWO:) too few particles for analysis')
75498         H10=-1D0
75499         H20=-1D0
75500         H30=-1D0
75501         H40=-1D0
75502         RETURN
75503       ENDIF
75504  
75505 C...Calculate H1 - H4.
75506       H10=0D0
75507       H20=0D0
75508       H30=0D0
75509       H40=0D0
75510       DO 130 I1=N+1,N+NP
75511         DO 120 I2=I1+1,N+NP
75512           CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
75513      &    (P(I1,4)*P(I2,4))
75514           H10=H10+P(I1,4)*P(I2,4)*CTHE
75515           H20=H20+P(I1,4)*P(I2,4)*(1.5D0*CTHE**2-0.5D0)
75516           H30=H30+P(I1,4)*P(I2,4)*(2.5D0*CTHE**3-1.5D0*CTHE)
75517           H40=H40+P(I1,4)*P(I2,4)*(4.375D0*CTHE**4-3.75D0*CTHE**2+
75518      &    0.375D0)
75519   120   CONTINUE
75520   130 CONTINUE
75521  
75522 C...Calculate H1/H0 - H4/H0. Output.
75523       MSTU(61)=N+1
75524       MSTU(62)=NP
75525       H10=(HD+2D0*H10)/H0
75526       H20=(HD+2D0*H20)/H0
75527       H30=(HD+2D0*H30)/H0
75528       H40=(HD+2D0*H40)/H0
75529  
75530       RETURN
75531       END
75532  
75533 C*********************************************************************
75534  
75535 C...PYTABU
75536 C...Evaluates various properties of an event, with statistics
75537 C...accumulated during the course of the run and
75538 C...printed at the end.
75539  
75540       SUBROUTINE PYTABU(MTABU)
75541  
75542 C...Double precision and integer declarations.
75543       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
75544       IMPLICIT INTEGER(I-N)
75545       INTEGER PYK,PYCHGE,PYCOMP
75546 C...Parameter statement to help give large particle numbers.
75547       PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000,
75548      &KEXCIT=4000000,KDIMEN=5000000)
75549 C...Commonblocks.
75550       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
75551       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
75552       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
75553       COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
75554       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/
75555 C...Local arrays, character variables, saved variables and data.
75556       DIMENSION KFIS(100,2),NPIS(100,0:10),KFFS(400),NPFS(400,4),
75557      &FEVFM(10,4),FM1FM(3,10,4),FM2FM(3,10,4),FMOMA(4),FMOMS(4),
75558      &FEVEE(50),FE1EC(50),FE2EC(50),FE1EA(25),FE2EA(25),
75559      &KFDM(8),KFDC(200,0:8),NPDC(200)
75560       SAVE NEVIS,NKFIS,KFIS,NPIS,NEVFS,NPRFS,NFIFS,NCHFS,NKFFS,
75561      &KFFS,NPFS,NEVFM,NMUFM,FM1FM,FM2FM,NEVEE,FE1EC,FE2EC,FE1EA,
75562      &FE2EA,NEVDC,NKFDC,NREDC,KFDC,NPDC
75563       CHARACTER CHAU*16,CHIS(2)*12,CHDC(8)*12
75564       DATA NEVIS/0/,NKFIS/0/,NEVFS/0/,NPRFS/0/,NFIFS/0/,NCHFS/0/,
75565      &NKFFS/0/,NEVFM/0/,NMUFM/0/,FM1FM/120*0D0/,FM2FM/120*0D0/,
75566      &NEVEE/0/,FE1EC/50*0D0/,FE2EC/50*0D0/,FE1EA/25*0D0/,FE2EA/25*0D0/,
75567      &NEVDC/0/,NKFDC/0/,NREDC/0/
75568  
75569 C...Reset statistics on initial parton state.
75570       IF(MTABU.EQ.10) THEN
75571         NEVIS=0
75572         NKFIS=0
75573  
75574 C...Identify and order flavour content of initial state.
75575       ELSEIF(MTABU.EQ.11) THEN
75576         NEVIS=NEVIS+1
75577         KFM1=2*IABS(MSTU(161))
75578         IF(MSTU(161).GT.0) KFM1=KFM1-1
75579         KFM2=2*IABS(MSTU(162))
75580         IF(MSTU(162).GT.0) KFM2=KFM2-1
75581         KFMN=MIN(KFM1,KFM2)
75582         KFMX=MAX(KFM1,KFM2)
75583         DO 100 I=1,NKFIS
75584           IF(KFMN.EQ.KFIS(I,1).AND.KFMX.EQ.KFIS(I,2)) THEN
75585             IKFIS=-I
75586             GOTO 110
75587           ELSEIF(KFMN.LT.KFIS(I,1).OR.(KFMN.EQ.KFIS(I,1).AND.
75588      &      KFMX.LT.KFIS(I,2))) THEN
75589             IKFIS=I
75590             GOTO 110
75591           ENDIF
75592   100   CONTINUE
75593         IKFIS=NKFIS+1
75594   110   IF(IKFIS.LT.0) THEN
75595           IKFIS=-IKFIS
75596         ELSE
75597           IF(NKFIS.GE.100) RETURN
75598           DO 130 I=NKFIS,IKFIS,-1
75599             KFIS(I+1,1)=KFIS(I,1)
75600             KFIS(I+1,2)=KFIS(I,2)
75601             DO 120 J=0,10
75602               NPIS(I+1,J)=NPIS(I,J)
75603   120       CONTINUE
75604   130     CONTINUE
75605           NKFIS=NKFIS+1
75606           KFIS(IKFIS,1)=KFMN
75607           KFIS(IKFIS,2)=KFMX
75608           DO 140 J=0,10
75609             NPIS(IKFIS,J)=0
75610   140     CONTINUE
75611         ENDIF
75612         NPIS(IKFIS,0)=NPIS(IKFIS,0)+1
75613  
75614 C...Count number of partons in initial state.
75615         NP=0
75616         DO 160 I=1,N
75617           IF(K(I,1).LE.0.OR.K(I,1).GT.12) THEN
75618           ELSEIF(IABS(K(I,2)).GT.80.AND.IABS(K(I,2)).LE.100) THEN
75619           ELSEIF(IABS(K(I,2)).GT.100.AND.MOD(IABS(K(I,2))/10,10).NE.0)
75620      &      THEN
75621           ELSE
75622             IM=I
75623   150       IM=K(IM,3)
75624             IF(IM.LE.0.OR.IM.GT.N) THEN
75625               NP=NP+1
75626             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
75627               NP=NP+1
75628             ELSEIF(IABS(K(IM,2)).GT.80.AND.IABS(K(IM,2)).LE.100) THEN
75629             ELSEIF(IABS(K(IM,2)).GT.100.AND.MOD(IABS(K(IM,2))/10,10)
75630      &        .NE.0) THEN
75631             ELSE
75632               GOTO 150
75633             ENDIF
75634           ENDIF
75635   160   CONTINUE
75636         NPCO=MAX(NP,1)
75637         IF(NP.GE.6) NPCO=6
75638         IF(NP.GE.8) NPCO=7
75639         IF(NP.GE.11) NPCO=8
75640         IF(NP.GE.16) NPCO=9
75641         IF(NP.GE.26) NPCO=10
75642         NPIS(IKFIS,NPCO)=NPIS(IKFIS,NPCO)+1
75643         MSTU(62)=NP
75644  
75645 C...Write statistics on initial parton state.
75646       ELSEIF(MTABU.EQ.12) THEN
75647         FAC=1D0/MAX(1,NEVIS)
75648         WRITE(MSTU(11),5000) NEVIS
75649         DO 170 I=1,NKFIS
75650           KFMN=KFIS(I,1)
75651           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
75652           KFM1=(KFMN+1)/2
75653           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
75654           CALL PYNAME(KFM1,CHAU)
75655           CHIS(1)=CHAU(1:12)
75656           IF(CHAU(13:13).NE.' ') CHIS(1)(12:12)='?'
75657           KFMX=KFIS(I,2)
75658           IF(KFIS(I,1).EQ.0) KFMX=0
75659           KFM2=(KFMX+1)/2
75660           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
75661           CALL PYNAME(KFM2,CHAU)
75662           CHIS(2)=CHAU(1:12)
75663           IF(CHAU(13:13).NE.' ') CHIS(2)(12:12)='?'
75664           WRITE(MSTU(11),5100) CHIS(1),CHIS(2),FAC*NPIS(I,0),
75665      &    (NPIS(I,J)/DBLE(NPIS(I,0)),J=1,10)
75666   170   CONTINUE
75667  
75668 C...Copy statistics on initial parton state into /PYJETS/.
75669       ELSEIF(MTABU.EQ.13) THEN
75670         FAC=1D0/MAX(1,NEVIS)
75671         DO 190 I=1,NKFIS
75672           KFMN=KFIS(I,1)
75673           IF(KFMN.EQ.0) KFMN=KFIS(I,2)
75674           KFM1=(KFMN+1)/2
75675           IF(2*KFM1.EQ.KFMN) KFM1=-KFM1
75676           KFMX=KFIS(I,2)
75677           IF(KFIS(I,1).EQ.0) KFMX=0
75678           KFM2=(KFMX+1)/2
75679           IF(2*KFM2.EQ.KFMX) KFM2=-KFM2
75680           K(I,1)=32
75681           K(I,2)=99
75682           K(I,3)=KFM1
75683           K(I,4)=KFM2
75684           K(I,5)=NPIS(I,0)
75685           DO 180 J=1,5
75686             P(I,J)=FAC*NPIS(I,J)
75687             V(I,J)=FAC*NPIS(I,J+5)
75688   180     CONTINUE
75689   190   CONTINUE
75690         N=NKFIS
75691         DO 200 J=1,5
75692           K(N+1,J)=0
75693           P(N+1,J)=0D0
75694           V(N+1,J)=0D0
75695   200   CONTINUE
75696         K(N+1,1)=32
75697         K(N+1,2)=99
75698         K(N+1,5)=NEVIS
75699         MSTU(3)=1
75700  
75701 C...Reset statistics on number of particles/partons.
75702       ELSEIF(MTABU.EQ.20) THEN
75703         NEVFS=0
75704         NPRFS=0
75705         NFIFS=0
75706         NCHFS=0
75707         NKFFS=0
75708  
75709 C...Identify whether particle/parton is primary or not.
75710       ELSEIF(MTABU.EQ.21) THEN
75711         NEVFS=NEVFS+1
75712         MSTU(62)=0
75713         DO 260 I=1,N
75714           IF(K(I,1).LE.0.OR.K(I,1).GT.20.OR.K(I,1).EQ.13) GOTO 260
75715           MSTU(62)=MSTU(62)+1
75716           KC=PYCOMP(K(I,2))
75717           MPRI=0
75718           IF(K(I,3).LE.0.OR.K(I,3).GT.N) THEN
75719             MPRI=1
75720           ELSEIF(K(K(I,3),1).LE.0.OR.K(K(I,3),1).GT.20) THEN
75721             MPRI=1
75722           ELSEIF(K(K(I,3),2).GE.91.AND.K(K(I,3),2).LE.93) THEN
75723             MPRI=1
75724           ELSEIF(KC.EQ.0) THEN
75725           ELSEIF(K(K(I,3),1).EQ.13) THEN
75726             IM=K(K(I,3),3)
75727             IF(IM.LE.0.OR.IM.GT.N) THEN
75728               MPRI=1
75729             ELSEIF(K(IM,1).LE.0.OR.K(IM,1).GT.20) THEN
75730               MPRI=1
75731             ENDIF
75732           ELSEIF(KCHG(KC,2).EQ.0) THEN
75733             KCM=PYCOMP(K(K(I,3),2))
75734             IF(KCM.NE.0) THEN
75735               IF(KCHG(KCM,2).NE.0) MPRI=1
75736             ENDIF
75737           ENDIF
75738           IF(KC.NE.0.AND.MPRI.EQ.1) THEN
75739             IF(KCHG(KC,2).EQ.0) NPRFS=NPRFS+1
75740           ENDIF
75741           IF(K(I,1).LE.10) THEN
75742             NFIFS=NFIFS+1
75743             IF(PYCHGE(K(I,2)).NE.0) NCHFS=NCHFS+1
75744           ENDIF
75745  
75746 C...Fill statistics on number of particles/partons in event.
75747           KFA=IABS(K(I,2))
75748           KFS=3-ISIGN(1,K(I,2))-MPRI
75749           DO 210 IP=1,NKFFS
75750             IF(KFA.EQ.KFFS(IP)) THEN
75751               IKFFS=-IP
75752               GOTO 220
75753             ELSEIF(KFA.LT.KFFS(IP)) THEN
75754               IKFFS=IP
75755               GOTO 220
75756             ENDIF
75757   210     CONTINUE
75758           IKFFS=NKFFS+1
75759   220     IF(IKFFS.LT.0) THEN
75760             IKFFS=-IKFFS
75761           ELSE
75762             IF(NKFFS.GE.400) RETURN
75763             DO 240 IP=NKFFS,IKFFS,-1
75764               KFFS(IP+1)=KFFS(IP)
75765               DO 230 J=1,4
75766                 NPFS(IP+1,J)=NPFS(IP,J)
75767   230         CONTINUE
75768   240       CONTINUE
75769             NKFFS=NKFFS+1
75770             KFFS(IKFFS)=KFA
75771             DO 250 J=1,4
75772               NPFS(IKFFS,J)=0
75773   250       CONTINUE
75774           ENDIF
75775           NPFS(IKFFS,KFS)=NPFS(IKFFS,KFS)+1
75776   260   CONTINUE
75777  
75778 C...Write statistics on particle/parton composition of events.
75779       ELSEIF(MTABU.EQ.22) THEN
75780         FAC=1D0/MAX(1,NEVFS)
75781         WRITE(MSTU(11),5200) NEVFS,FAC*NPRFS,FAC*NFIFS,FAC*NCHFS
75782         DO 270 I=1,NKFFS
75783           CALL PYNAME(KFFS(I),CHAU)
75784           KC=PYCOMP(KFFS(I))
75785           MDCYF=0
75786           IF(KC.NE.0) MDCYF=MDCY(KC,1)
75787           WRITE(MSTU(11),5300) KFFS(I),CHAU,MDCYF,(FAC*NPFS(I,J),J=1,4),
75788      &    FAC*(NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4))
75789   270   CONTINUE
75790  
75791 C...Copy particle/parton composition information into /PYJETS/.
75792       ELSEIF(MTABU.EQ.23) THEN
75793         FAC=1D0/MAX(1,NEVFS)
75794         DO 290 I=1,NKFFS
75795           K(I,1)=32
75796           K(I,2)=99
75797           K(I,3)=KFFS(I)
75798           K(I,4)=0
75799           K(I,5)=NPFS(I,1)+NPFS(I,2)+NPFS(I,3)+NPFS(I,4)
75800           DO 280 J=1,4
75801             P(I,J)=FAC*NPFS(I,J)
75802             V(I,J)=0D0
75803   280     CONTINUE
75804           P(I,5)=FAC*K(I,5)
75805           V(I,5)=0D0
75806   290   CONTINUE
75807         N=NKFFS
75808         DO 300 J=1,5
75809           K(N+1,J)=0
75810           P(N+1,J)=0D0
75811           V(N+1,J)=0D0
75812   300   CONTINUE
75813         K(N+1,1)=32
75814         K(N+1,2)=99
75815         K(N+1,5)=NEVFS
75816         P(N+1,1)=FAC*NPRFS
75817         P(N+1,2)=FAC*NFIFS
75818         P(N+1,3)=FAC*NCHFS
75819         MSTU(3)=1
75820  
75821 C...Reset factorial moments statistics.
75822       ELSEIF(MTABU.EQ.30) THEN
75823         NEVFM=0
75824         NMUFM=0
75825         DO 330 IM=1,3
75826           DO 320 IB=1,10
75827             DO 310 IP=1,4
75828               FM1FM(IM,IB,IP)=0D0
75829               FM2FM(IM,IB,IP)=0D0
75830   310       CONTINUE
75831   320     CONTINUE
75832   330   CONTINUE
75833  
75834 C...Find particles to include, with (pion,pseudo)rapidity and azimuth.
75835       ELSEIF(MTABU.EQ.31) THEN
75836         NEVFM=NEVFM+1
75837         NLOW=N+MSTU(3)
75838         NUPP=NLOW
75839         DO 410 I=1,N
75840           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 410
75841           IF(MSTU(41).GE.2) THEN
75842             KC=PYCOMP(K(I,2))
75843             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
75844      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
75845      &      K(I,2).EQ.KSUSY1+39) GOTO 410
75846             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
75847      &      PYCHGE(K(I,2)).EQ.0) GOTO 410
75848           ENDIF
75849           PMR=0D0
75850           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
75851           IF(MSTU(42).GE.2) PMR=P(I,5)
75852           PR=MAX(1D-20,PMR**2+P(I,1)**2+P(I,2)**2)
75853           YETA=SIGN(LOG(MIN((SQRT(PR+P(I,3)**2)+ABS(P(I,3)))/SQRT(PR),
75854      &    1D20)),P(I,3))
75855           IF(ABS(YETA).GT.PARU(57)) GOTO 410
75856           PHI=PYANGL(P(I,1),P(I,2))
75857           IYETA=512D0*(YETA+PARU(57))/(2D0*PARU(57))
75858           IYETA=MAX(0,MIN(511,IYETA))
75859           IPHI=512D0*(PHI+PARU(1))/PARU(2)
75860           IPHI=MAX(0,MIN(511,IPHI))
75861           IYEP=0
75862           DO 340 IB=0,9
75863             IYEP=IYEP+4**IB*(2*MOD(IYETA/2**IB,2)+MOD(IPHI/2**IB,2))
75864   340     CONTINUE
75865  
75866 C...Order particles in (pseudo)rapidity and/or azimuth.
75867           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
75868             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
75869             RETURN
75870           ENDIF
75871           NUPP=NUPP+1
75872           IF(NUPP.EQ.NLOW+1) THEN
75873             K(NUPP,1)=IYETA
75874             K(NUPP,2)=IPHI
75875             K(NUPP,3)=IYEP
75876           ELSE
75877             DO 350 I1=NUPP-1,NLOW+1,-1
75878               IF(IYETA.GE.K(I1,1)) GOTO 360
75879               K(I1+1,1)=K(I1,1)
75880   350       CONTINUE
75881   360       K(I1+1,1)=IYETA
75882             DO 370 I1=NUPP-1,NLOW+1,-1
75883               IF(IPHI.GE.K(I1,2)) GOTO 380
75884               K(I1+1,2)=K(I1,2)
75885   370       CONTINUE
75886   380       K(I1+1,2)=IPHI
75887             DO 390 I1=NUPP-1,NLOW+1,-1
75888               IF(IYEP.GE.K(I1,3)) GOTO 400
75889               K(I1+1,3)=K(I1,3)
75890   390       CONTINUE
75891   400       K(I1+1,3)=IYEP
75892           ENDIF
75893   410   CONTINUE
75894         K(NUPP+1,1)=2**10
75895         K(NUPP+1,2)=2**10
75896         K(NUPP+1,3)=4**10
75897  
75898 C...Calculate sum of factorial moments in event.
75899         DO 480 IM=1,3
75900           DO 430 IB=1,10
75901             DO 420 IP=1,4
75902               FEVFM(IB,IP)=0D0
75903   420       CONTINUE
75904   430     CONTINUE
75905           DO 450 IB=1,10
75906             IF(IM.LE.2) IBIN=2**(10-IB)
75907             IF(IM.EQ.3) IBIN=4**(10-IB)
75908             IAGR=K(NLOW+1,IM)/IBIN
75909             NAGR=1
75910             DO 440 I=NLOW+2,NUPP+1
75911               ICUT=K(I,IM)/IBIN
75912               IF(ICUT.EQ.IAGR) THEN
75913                 NAGR=NAGR+1
75914               ELSE
75915                 IF(NAGR.EQ.1) THEN
75916                 ELSEIF(NAGR.EQ.2) THEN
75917                   FEVFM(IB,1)=FEVFM(IB,1)+2D0
75918                 ELSEIF(NAGR.EQ.3) THEN
75919                   FEVFM(IB,1)=FEVFM(IB,1)+6D0
75920                   FEVFM(IB,2)=FEVFM(IB,2)+6D0
75921                 ELSEIF(NAGR.EQ.4) THEN
75922                   FEVFM(IB,1)=FEVFM(IB,1)+12D0
75923                   FEVFM(IB,2)=FEVFM(IB,2)+24D0
75924                   FEVFM(IB,3)=FEVFM(IB,3)+24D0
75925                 ELSE
75926                   FEVFM(IB,1)=FEVFM(IB,1)+NAGR*(NAGR-1D0)
75927                   FEVFM(IB,2)=FEVFM(IB,2)+NAGR*(NAGR-1D0)*(NAGR-2D0)
75928                   FEVFM(IB,3)=FEVFM(IB,3)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
75929      &            (NAGR-3D0)
75930                   FEVFM(IB,4)=FEVFM(IB,4)+NAGR*(NAGR-1D0)*(NAGR-2D0)*
75931      &            (NAGR-3D0)*(NAGR-4D0)
75932                 ENDIF
75933                 IAGR=ICUT
75934                 NAGR=1
75935               ENDIF
75936   440       CONTINUE
75937   450     CONTINUE
75938  
75939 C...Add results to total statistics.
75940           DO 470 IB=10,1,-1
75941             DO 460 IP=1,4
75942               IF(FEVFM(1,IP).LT.0.5D0) THEN
75943                 FEVFM(IB,IP)=0D0
75944               ELSEIF(IM.LE.2) THEN
75945                 FEVFM(IB,IP)=2D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
75946               ELSE
75947                 FEVFM(IB,IP)=4D0**((IB-1)*IP)*FEVFM(IB,IP)/FEVFM(1,IP)
75948               ENDIF
75949               FM1FM(IM,IB,IP)=FM1FM(IM,IB,IP)+FEVFM(IB,IP)
75950               FM2FM(IM,IB,IP)=FM2FM(IM,IB,IP)+FEVFM(IB,IP)**2
75951   460       CONTINUE
75952   470     CONTINUE
75953   480   CONTINUE
75954         NMUFM=NMUFM+(NUPP-NLOW)
75955         MSTU(62)=NUPP-NLOW
75956  
75957 C...Write accumulated statistics on factorial moments.
75958       ELSEIF(MTABU.EQ.32) THEN
75959         FAC=1D0/MAX(1,NEVFM)
75960         IF(MSTU(42).LE.0) WRITE(MSTU(11),5400) NEVFM,'eta'
75961         IF(MSTU(42).EQ.1) WRITE(MSTU(11),5400) NEVFM,'ypi'
75962         IF(MSTU(42).GE.2) WRITE(MSTU(11),5400) NEVFM,'y  '
75963         DO 510 IM=1,3
75964           WRITE(MSTU(11),5500)
75965           DO 500 IB=1,10
75966             BYETA=2D0*PARU(57)
75967             IF(IM.NE.2) BYETA=BYETA/2**(IB-1)
75968             BPHI=PARU(2)
75969             IF(IM.NE.1) BPHI=BPHI/2**(IB-1)
75970             IF(IM.LE.2) BNAVE=FAC*NMUFM/DBLE(2**(IB-1))
75971             IF(IM.EQ.3) BNAVE=FAC*NMUFM/DBLE(4**(IB-1))
75972             DO 490 IP=1,4
75973               FMOMA(IP)=FAC*FM1FM(IM,IB,IP)
75974               FMOMS(IP)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
75975      &        FMOMA(IP)**2)))
75976   490       CONTINUE
75977             WRITE(MSTU(11),5600) BYETA,BPHI,BNAVE,(FMOMA(IP),FMOMS(IP),
75978      &      IP=1,4)
75979   500     CONTINUE
75980   510   CONTINUE
75981  
75982 C...Copy statistics on factorial moments into /PYJETS/.
75983       ELSEIF(MTABU.EQ.33) THEN
75984         FAC=1D0/MAX(1,NEVFM)
75985         DO 540 IM=1,3
75986           DO 530 IB=1,10
75987             I=10*(IM-1)+IB
75988             K(I,1)=32
75989             K(I,2)=99
75990             K(I,3)=1
75991             IF(IM.NE.2) K(I,3)=2**(IB-1)
75992             K(I,4)=1
75993             IF(IM.NE.1) K(I,4)=2**(IB-1)
75994             K(I,5)=0
75995             P(I,1)=2D0*PARU(57)/K(I,3)
75996             V(I,1)=PARU(2)/K(I,4)
75997             DO 520 IP=1,4
75998               P(I,IP+1)=FAC*FM1FM(IM,IB,IP)
75999               V(I,IP+1)=SQRT(MAX(0D0,FAC*(FAC*FM2FM(IM,IB,IP)-
76000      &        P(I,IP+1)**2)))
76001   520       CONTINUE
76002   530     CONTINUE
76003   540   CONTINUE
76004         N=30
76005         DO 550 J=1,5
76006           K(N+1,J)=0
76007           P(N+1,J)=0D0
76008           V(N+1,J)=0D0
76009   550   CONTINUE
76010         K(N+1,1)=32
76011         K(N+1,2)=99
76012         K(N+1,5)=NEVFM
76013         MSTU(3)=1
76014  
76015 C...Reset statistics on Energy-Energy Correlation.
76016       ELSEIF(MTABU.EQ.40) THEN
76017         NEVEE=0
76018         DO 560 J=1,25
76019           FE1EC(J)=0D0
76020           FE2EC(J)=0D0
76021           FE1EC(51-J)=0D0
76022           FE2EC(51-J)=0D0
76023           FE1EA(J)=0D0
76024           FE2EA(J)=0D0
76025   560   CONTINUE
76026  
76027 C...Find particles to include, with proper assumed mass.
76028       ELSEIF(MTABU.EQ.41) THEN
76029         NEVEE=NEVEE+1
76030         NLOW=N+MSTU(3)
76031         NUPP=NLOW
76032         ECM=0D0
76033         DO 570 I=1,N
76034           IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 570
76035           IF(MSTU(41).GE.2) THEN
76036             KC=PYCOMP(K(I,2))
76037             IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
76038      &      KC.EQ.18.OR.K(I,2).EQ.KSUSY1+22.OR.K(I,2).EQ.39.OR.
76039      &      K(I,2).EQ.KSUSY1+39) GOTO 570
76040             IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.
76041      &      PYCHGE(K(I,2)).EQ.0) GOTO 570
76042           ENDIF
76043           PMR=0D0
76044           IF(MSTU(42).EQ.1.AND.K(I,2).NE.22) PMR=PYMASS(211)
76045           IF(MSTU(42).GE.2) PMR=P(I,5)
76046           IF(NUPP.GT.MSTU(4)-5-MSTU(32)) THEN
76047             CALL PYERRM(11,'(PYTABU:) no more memory left in PYJETS')
76048             RETURN
76049           ENDIF
76050           NUPP=NUPP+1
76051           P(NUPP,1)=P(I,1)
76052           P(NUPP,2)=P(I,2)
76053           P(NUPP,3)=P(I,3)
76054           P(NUPP,4)=SQRT(PMR**2+P(I,1)**2+P(I,2)**2+P(I,3)**2)
76055           P(NUPP,5)=MAX(1D-10,SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2))
76056           ECM=ECM+P(NUPP,4)
76057   570   CONTINUE
76058         IF(NUPP.EQ.NLOW) RETURN
76059  
76060 C...Analyze Energy-Energy Correlation in event.
76061         FAC=(2D0/ECM**2)*50D0/PARU(1)
76062         DO 580 J=1,50
76063           FEVEE(J)=0D0
76064   580   CONTINUE
76065         DO 600 I1=NLOW+2,NUPP
76066           DO 590 I2=NLOW+1,I1-1
76067             CTHE=(P(I1,1)*P(I2,1)+P(I1,2)*P(I2,2)+P(I1,3)*P(I2,3))/
76068      &      (P(I1,5)*P(I2,5))
76069             THE=ACOS(MAX(-1D0,MIN(1D0,CTHE)))
76070             ITHE=MAX(1,MIN(50,1+INT(50D0*THE/PARU(1))))
76071             FEVEE(ITHE)=FEVEE(ITHE)+FAC*P(I1,4)*P(I2,4)
76072   590     CONTINUE
76073   600   CONTINUE
76074         DO 610 J=1,25
76075           FE1EC(J)=FE1EC(J)+FEVEE(J)
76076           FE2EC(J)=FE2EC(J)+FEVEE(J)**2
76077           FE1EC(51-J)=FE1EC(51-J)+FEVEE(51-J)
76078           FE2EC(51-J)=FE2EC(51-J)+FEVEE(51-J)**2
76079           FE1EA(J)=FE1EA(J)+(FEVEE(51-J)-FEVEE(J))
76080           FE2EA(J)=FE2EA(J)+(FEVEE(51-J)-FEVEE(J))**2
76081   610   CONTINUE
76082         MSTU(62)=NUPP-NLOW
76083  
76084 C...Write statistics on Energy-Energy Correlation.
76085       ELSEIF(MTABU.EQ.42) THEN
76086         FAC=1D0/MAX(1,NEVEE)
76087         WRITE(MSTU(11),5700) NEVEE
76088         DO 620 J=1,25
76089           FEEC1=FAC*FE1EC(J)
76090           FEES1=SQRT(MAX(0D0,FAC*(FAC*FE2EC(J)-FEEC1**2)))
76091           FEEC2=FAC*FE1EC(51-J)
76092           FEES2=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-J)-FEEC2**2)))
76093           FEECA=FAC*FE1EA(J)
76094           FEESA=SQRT(MAX(0D0,FAC*(FAC*FE2EA(J)-FEECA**2)))
76095           WRITE(MSTU(11),5800) 3.6D0*(J-1),3.6D0*J,FEEC1,FEES1,
76096      &    FEEC2,FEES2,FEECA,FEESA
76097   620   CONTINUE
76098  
76099 C...Copy statistics on Energy-Energy Correlation into /PYJETS/.
76100       ELSEIF(MTABU.EQ.43) THEN
76101         FAC=1D0/MAX(1,NEVEE)
76102         DO 630 I=1,25
76103           K(I,1)=32
76104           K(I,2)=99
76105           K(I,3)=0
76106           K(I,4)=0
76107           K(I,5)=0
76108           P(I,1)=FAC*FE1EC(I)
76109           V(I,1)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(I)-P(I,1)**2)))
76110           P(I,2)=FAC*FE1EC(51-I)
76111           V(I,2)=SQRT(MAX(0D0,FAC*(FAC*FE2EC(51-I)-P(I,2)**2)))
76112           P(I,3)=FAC*FE1EA(I)
76113           V(I,3)=SQRT(MAX(0D0,FAC*(FAC*FE2EA(I)-P(I,3)**2)))
76114           P(I,4)=PARU(1)*(I-1)/50D0
76115           P(I,5)=PARU(1)*I/50D0
76116           V(I,4)=3.6D0*(I-1)
76117           V(I,5)=3.6D0*I
76118   630   CONTINUE
76119         N=25
76120         DO 640 J=1,5
76121           K(N+1,J)=0
76122           P(N+1,J)=0D0
76123           V(N+1,J)=0D0
76124   640   CONTINUE
76125         K(N+1,1)=32
76126         K(N+1,2)=99
76127         K(N+1,5)=NEVEE
76128         MSTU(3)=1
76129  
76130 C...Reset statistics on decay channels.
76131       ELSEIF(MTABU.EQ.50) THEN
76132         NEVDC=0
76133         NKFDC=0
76134         NREDC=0
76135  
76136 C...Identify and order flavour content of final state.
76137       ELSEIF(MTABU.EQ.51) THEN
76138         NEVDC=NEVDC+1
76139         NDS=0
76140         DO 670 I=1,N
76141           IF(K(I,1).LE.0.OR.K(I,1).GE.6) GOTO 670
76142           NDS=NDS+1
76143           IF(NDS.GT.8) THEN
76144             NREDC=NREDC+1
76145             RETURN
76146           ENDIF
76147           KFM=2*IABS(K(I,2))
76148           IF(K(I,2).LT.0) KFM=KFM-1
76149           DO 650 IDS=NDS-1,1,-1
76150             IIN=IDS+1
76151             IF(KFM.LT.KFDM(IDS)) GOTO 660
76152             KFDM(IDS+1)=KFDM(IDS)
76153   650     CONTINUE
76154           IIN=1
76155   660     KFDM(IIN)=KFM
76156   670   CONTINUE
76157  
76158 C...Find whether old or new final state.
76159         DO 690 IDC=1,NKFDC
76160           IF(NDS.LT.KFDC(IDC,0)) THEN
76161             IKFDC=IDC
76162             GOTO 700
76163           ELSEIF(NDS.EQ.KFDC(IDC,0)) THEN
76164             DO 680 I=1,NDS
76165               IF(KFDM(I).LT.KFDC(IDC,I)) THEN
76166                 IKFDC=IDC
76167                 GOTO 700
76168               ELSEIF(KFDM(I).GT.KFDC(IDC,I)) THEN
76169                 GOTO 690
76170               ENDIF
76171   680       CONTINUE
76172             IKFDC=-IDC
76173             GOTO 700
76174           ENDIF
76175   690   CONTINUE
76176         IKFDC=NKFDC+1
76177   700   IF(IKFDC.LT.0) THEN
76178           IKFDC=-IKFDC
76179         ELSEIF(NKFDC.GE.200) THEN
76180           NREDC=NREDC+1
76181           RETURN
76182         ELSE
76183           DO 720 IDC=NKFDC,IKFDC,-1
76184             NPDC(IDC+1)=NPDC(IDC)
76185             DO 710 I=0,8
76186               KFDC(IDC+1,I)=KFDC(IDC,I)
76187   710       CONTINUE
76188   720     CONTINUE
76189           NKFDC=NKFDC+1
76190           KFDC(IKFDC,0)=NDS
76191           DO 730 I=1,NDS
76192             KFDC(IKFDC,I)=KFDM(I)
76193   730     CONTINUE
76194           NPDC(IKFDC)=0
76195         ENDIF
76196         NPDC(IKFDC)=NPDC(IKFDC)+1
76197  
76198 C...Write statistics on decay channels.
76199       ELSEIF(MTABU.EQ.52) THEN
76200         FAC=1D0/MAX(1,NEVDC)
76201         WRITE(MSTU(11),5900) NEVDC
76202         DO 750 IDC=1,NKFDC
76203           DO 740 I=1,KFDC(IDC,0)
76204             KFM=KFDC(IDC,I)
76205             KF=(KFM+1)/2
76206             IF(2*KF.NE.KFM) KF=-KF
76207             CALL PYNAME(KF,CHAU)
76208             CHDC(I)=CHAU(1:12)
76209             IF(CHAU(13:13).NE.' ') CHDC(I)(12:12)='?'
76210   740     CONTINUE
76211           WRITE(MSTU(11),6000) FAC*NPDC(IDC),(CHDC(I),I=1,KFDC(IDC,0))
76212   750   CONTINUE
76213         IF(NREDC.NE.0) WRITE(MSTU(11),6100) FAC*NREDC
76214  
76215 C...Copy statistics on decay channels into /PYJETS/.
76216       ELSEIF(MTABU.EQ.53) THEN
76217         FAC=1D0/MAX(1,NEVDC)
76218         DO 780 IDC=1,NKFDC
76219           K(IDC,1)=32
76220           K(IDC,2)=99
76221           K(IDC,3)=0
76222           K(IDC,4)=0
76223           K(IDC,5)=KFDC(IDC,0)
76224           DO 760 J=1,5
76225             P(IDC,J)=0D0
76226             V(IDC,J)=0D0
76227   760     CONTINUE
76228           DO 770 I=1,KFDC(IDC,0)
76229             KFM=KFDC(IDC,I)
76230             KF=(KFM+1)/2
76231             IF(2*KF.NE.KFM) KF=-KF
76232             IF(I.LE.5) P(IDC,I)=KF
76233             IF(I.GE.6) V(IDC,I-5)=KF
76234   770     CONTINUE
76235           V(IDC,5)=FAC*NPDC(IDC)
76236   780   CONTINUE
76237         N=NKFDC
76238         DO 790 J=1,5
76239           K(N+1,J)=0
76240           P(N+1,J)=0D0
76241           V(N+1,J)=0D0
76242   790   CONTINUE
76243         K(N+1,1)=32
76244         K(N+1,2)=99
76245         K(N+1,5)=NEVDC
76246         V(N+1,5)=FAC*NREDC
76247         MSTU(3)=1
76248       ENDIF
76249  
76250 C...Format statements for output on unit MSTU(11) (default 6).
76251  5000 FORMAT(///20X,'Event statistics - initial state'/
76252      &20X,'based on an analysis of ',I6,' events'//
76253      &3X,'Main flavours after',8X,'Fraction',4X,'Subfractions ',
76254      &'according to fragmenting system multiplicity'/
76255      &4X,'hard interaction',24X,'1',7X,'2',7X,'3',7X,'4',7X,'5',
76256      &6X,'6-7',5X,'8-10',3X,'11-15',3X,'16-25',4X,'>25'/)
76257  5100 FORMAT(3X,A12,1X,A12,F10.5,1X,10F8.4)
76258  5200 FORMAT(///20X,'Event statistics - final state'/
76259      &20X,'based on an analysis of ',I7,' events'//
76260      &5X,'Mean primary multiplicity =',F10.4/
76261      &5X,'Mean final   multiplicity =',F10.4/
76262      &5X,'Mean charged multiplicity =',F10.4//
76263      &5X,'Number of particles produced per event (directly and via ',
76264      &'decays/branchings)'/
76265      &8X,'KF    Particle/jet  MDCY',10X,'Particles',13X,'Antiparticles',
76266      &8X,'Total'/35X,'prim        seco        prim        seco'/)
76267  5300 FORMAT(1X,I9,4X,A16,I2,5(1X,F11.6))
76268  5400 FORMAT(///20X,'Factorial moments analysis of multiplicity'/
76269      &20X,'based on an analysis of ',I6,' events'//
76270      &3X,'delta-',A3,' delta-phi     <n>/bin',10X,'<F2>',18X,'<F3>',
76271      &18X,'<F4>',18X,'<F5>'/35X,4('     value     error  '))
76272  5500 FORMAT(10X)
76273  5600 FORMAT(2X,2F10.4,F12.4,4(F12.4,F10.4))
76274  5700 FORMAT(///20X,'Energy-Energy Correlation and Asymmetry'/
76275      &20X,'based on an analysis of ',I6,' events'//
76276      &2X,'theta range',8X,'EEC(theta)',8X,'EEC(180-theta)',7X,
76277      &'EECA(theta)'/2X,'in degrees ',3('      value    error')/)
76278  5800 FORMAT(2X,F4.1,' - ',F4.1,3(F11.4,F9.4))
76279  5900 FORMAT(///20X,'Decay channel analysis - final state'/
76280      &20X,'based on an analysis of ',I6,' events'//
76281      &2X,'Probability',10X,'Complete final state'/)
76282  6000 FORMAT(2X,F9.5,5X,8(A12,1X))
76283  6100 FORMAT(2X,F9.5,5X,'into other channels (more than 8 particles ',
76284      &'or table overflow)')
76285  
76286       RETURN
76287       END
76288  
76289 C*********************************************************************
76290  
76291 C...PYEEVT
76292 C...Handles the generation of an e+e- annihilation jet event.
76293  
76294       SUBROUTINE PYEEVT(KFL,ECM)
76295  
76296 C...Double precision and integer declarations.
76297       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76298       IMPLICIT INTEGER(I-N)
76299       INTEGER PYK,PYCHGE,PYCOMP
76300 C...Commonblocks.
76301       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
76302       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76303       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
76304       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
76305  
76306 C...Check input parameters.
76307       IF(MSTU(12).NE.12345) CALL PYLIST(0)
76308       IF(KFL.LT.0.OR.KFL.GT.8) THEN
76309         CALL PYERRM(16,'(PYEEVT:) called with unknown flavour code')
76310         IF(MSTU(21).GE.1) RETURN
76311       ENDIF
76312       IF(KFL.LE.5) ECMMIN=PARJ(127)+2.02D0*PARF(100+MAX(1,KFL))
76313       IF(KFL.GE.6) ECMMIN=PARJ(127)+2.02D0*PMAS(KFL,1)
76314       IF(ECM.LT.ECMMIN) THEN
76315         CALL PYERRM(16,'(PYEEVT:) called with too small CM energy')
76316         IF(MSTU(21).GE.1) RETURN
76317       ENDIF
76318  
76319 C...Check consistency of MSTJ options set.
76320       IF(MSTJ(109).EQ.2.AND.MSTJ(110).NE.1) THEN
76321         CALL PYERRM(6,
76322      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(110) = 1')
76323         MSTJ(110)=1
76324       ENDIF
76325       IF(MSTJ(109).EQ.2.AND.MSTJ(111).NE.0) THEN
76326         CALL PYERRM(6,
76327      &  '(PYEEVT:) MSTJ(109) value requires MSTJ(111) = 0')
76328         MSTJ(111)=0
76329       ENDIF
76330  
76331 C...Initialize alpha_strong and total cross-section.
76332       MSTU(111)=MSTJ(108)
76333       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
76334      &MSTU(111)=1
76335       PARU(112)=PARJ(121)
76336       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
76337       IF(MSTJ(116).GT.0.AND.(MSTJ(116).GE.2.OR.ABS(ECM-PARJ(151)).GE.
76338      &PARJ(139).OR.10*MSTJ(102)+KFL.NE.MSTJ(119))) CALL PYXTEE(KFL,ECM,
76339      &XTOT)
76340       IF(MSTJ(116).GE.3) MSTJ(116)=1
76341       PARJ(171)=0D0
76342  
76343 C...Add initial e+e- to event record (documentation only).
76344       NTRY=0
76345   100 NTRY=NTRY+1
76346       IF(NTRY.GT.100) THEN
76347         CALL PYERRM(14,'(PYEEVT:) caught in an infinite loop')
76348         RETURN
76349       ENDIF
76350       MSTU(24)=0
76351       NC=0
76352       IF(MSTJ(115).GE.2) THEN
76353         NC=NC+2
76354         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
76355         K(NC-1,1)=21
76356         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
76357         K(NC,1)=21
76358       ENDIF
76359  
76360 C...Radiative photon (in initial state).
76361       MK=0
76362       ECMC=ECM
76363       IF(MSTJ(107).GE.1.AND.MSTJ(116).GE.1) CALL PYRADK(ECM,MK,PAK,
76364      &THEK,PHIK,ALPK)
76365       IF(MK.EQ.1) ECMC=SQRT(ECM*(ECM-2D0*PAK))
76366       IF(MSTJ(115).GE.1.AND.MK.EQ.1) THEN
76367         NC=NC+1
76368         CALL PY1ENT(NC,22,PAK,THEK,PHIK)
76369         K(NC,3)=MIN(MSTJ(115)/2,1)
76370       ENDIF
76371  
76372 C...Virtual exchange boson (gamma or Z0).
76373       IF(MSTJ(115).GE.3) THEN
76374         NC=NC+1
76375         KF=22
76376         IF(MSTJ(102).EQ.2) KF=23
76377         MSTU10=MSTU(10)
76378         MSTU(10)=1
76379         P(NC,5)=ECMC
76380         CALL PY1ENT(NC,KF,ECMC,0D0,0D0)
76381         K(NC,1)=21
76382         K(NC,3)=1
76383         MSTU(10)=MSTU10
76384       ENDIF
76385  
76386 C...Choice of flavour and jet configuration.
76387       CALL PYXKFL(KFL,ECM,ECMC,KFLC)
76388       IF(KFLC.EQ.0) GOTO 100
76389       CALL PYXJET(ECMC,NJET,CUT)
76390       KFLN=21
76391       IF(NJET.EQ.4) CALL PYX4JT(NJET,CUT,KFLC,ECMC,KFLN,X1,X2,X4,
76392      &X12,X14)
76393       IF(NJET.EQ.3) CALL PYX3JT(NJET,CUT,KFLC,ECMC,X1,X3)
76394       IF(NJET.EQ.2) MSTJ(120)=1
76395  
76396 C...Fill jet configuration and origin.
76397       IF(NJET.EQ.2.AND.MSTJ(101).NE.5) CALL PY2ENT(NC+1,KFLC,-KFLC,ECMC)
76398       IF(NJET.EQ.2.AND.MSTJ(101).EQ.5) CALL PY2ENT(-(NC+1),KFLC,-KFLC,
76399      &ECMC)
76400       IF(NJET.EQ.3) CALL PY3ENT(NC+1,KFLC,21,-KFLC,ECMC,X1,X3)
76401       IF(NJET.EQ.4.AND.KFLN.EQ.21) CALL PY4ENT(NC+1,KFLC,KFLN,KFLN,
76402      &-KFLC,ECMC,X1,X2,X4,X12,X14)
76403       IF(NJET.EQ.4.AND.KFLN.NE.21) CALL PY4ENT(NC+1,KFLC,-KFLN,KFLN,
76404      &-KFLC,ECMC,X1,X2,X4,X12,X14)
76405       IF(MSTU(24).NE.0) GOTO 100
76406       DO 110 IP=NC+1,N
76407         K(IP,3)=K(IP,3)+MIN(MSTJ(115)/2,1)+(MSTJ(115)/3)*(NC-1)
76408   110 CONTINUE
76409  
76410 C...Angular orientation according to matrix element.
76411       IF(MSTJ(106).EQ.1) THEN
76412         CALL PYXDIF(NC,NJET,KFLC,ECMC,CHI,THE,PHI)
76413         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
76414         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
76415       ENDIF
76416  
76417 C...Rotation and boost from radiative photon.
76418       IF(MK.EQ.1) THEN
76419         DBEK=-PAK/(ECM-PAK)
76420         NMIN=NC+1-MSTJ(115)/3
76421         CALL PYROBO(NMIN,N,0D0,-PHIK,0D0,0D0,0D0)
76422         CALL PYROBO(NMIN,N,ALPK,0D0,DBEK*SIN(THEK),0D0,DBEK*COS(THEK))
76423         CALL PYROBO(NMIN,N,0D0,PHIK,0D0,0D0,0D0)
76424       ENDIF
76425  
76426 C...Generate parton shower. Rearrange along strings and check.
76427       IF(MSTJ(101).EQ.5) THEN
76428         CALL PYSHOW(N-1,N,ECMC)
76429         MSTJ14=MSTJ(14)
76430         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
76431         IF(MSTJ(105).GE.0) MSTU(28)=0
76432         CALL PYPREP(0)
76433         MSTJ(14)=MSTJ14
76434         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
76435       ENDIF
76436  
76437 C...Fragmentation/decay generation. Information for PYTABU.
76438       IF(MSTJ(105).EQ.1) CALL PYEXEC
76439       MSTU(161)=KFLC
76440       MSTU(162)=-KFLC
76441  
76442       RETURN
76443       END
76444  
76445 C*********************************************************************
76446  
76447 C...PYXTEE
76448 C...Calculates total cross-section, including initial state
76449 C...radiation effects.
76450  
76451       SUBROUTINE PYXTEE(KFL,ECM,XTOT)
76452  
76453 C...Double precision and integer declarations.
76454       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76455       IMPLICIT INTEGER(I-N)
76456       INTEGER PYK,PYCHGE,PYCOMP
76457 C...Commonblocks.
76458       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76459       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
76460       SAVE /PYDAT1/,/PYDAT2/
76461  
76462 C...Status, (optimized) Q^2 scale, alpha_strong.
76463       PARJ(151)=ECM
76464       MSTJ(119)=10*MSTJ(102)+KFL
76465       IF(MSTJ(111).EQ.0) THEN
76466         Q2R=ECM**2
76467       ELSEIF(MSTU(111).EQ.0) THEN
76468         PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
76469      &  ((33D0-2D0*MSTU(112))*PARU(111)))))
76470         Q2R=PARJ(168)*ECM**2
76471       ELSE
76472         PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
76473      &  (2D0*PARU(112)/ECM)**2))
76474         Q2R=PARJ(168)*ECM**2
76475       ENDIF
76476       ALSPI=PYALPS(Q2R)/PARU(1)
76477  
76478 C...QCD corrections factor in R.
76479       IF(MSTJ(101).EQ.0.OR.MSTJ(109).EQ.1) THEN
76480         RQCD=1D0
76481       ELSEIF(IABS(MSTJ(101)).EQ.1.AND.MSTJ(109).EQ.0) THEN
76482         RQCD=1D0+ALSPI
76483       ELSEIF(MSTJ(109).EQ.0) THEN
76484         RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
76485         IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+(33D0-2D0*MSTU(112))/12D0*
76486      &  LOG(PARJ(168))*ALSPI**2)
76487       ELSEIF(IABS(MSTJ(101)).EQ.1) THEN
76488         RQCD=1D0+(3D0/4D0)*ALSPI
76489       ELSE
76490         RQCD=1D0+(3D0/4D0)*ALSPI-(3D0/32D0+0.519D0*MSTU(118))*ALSPI**2
76491       ENDIF
76492  
76493 C...Calculate Z0 width if default value not acceptable.
76494       IF(MSTJ(102).GE.3) THEN
76495         RVA=3D0*(3D0+(4D0*PARU(102)-1D0)**2)+6D0*RQCD*(2D0+
76496      &  (1D0-8D0*PARU(102)/3D0)**2+(4D0*PARU(102)/3D0-1D0)**2)
76497         DO 100 KFLC=5,6
76498           VQ=1D0
76499           IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-
76500      &    (2D0*PYMASS(KFLC)/ ECM)**2))
76501           IF(KFLC.EQ.5) VF=4D0*PARU(102)/3D0-1D0
76502           IF(KFLC.EQ.6) VF=1D0-8D0*PARU(102)/3D0
76503           RVA=RVA+3D0*RQCD*(0.5D0*VQ*(3D0-VQ**2)*VF**2+VQ**3)
76504   100   CONTINUE
76505         PARJ(124)=PARU(101)*PARJ(123)*RVA/(48D0*PARU(102)*
76506      &  (1D0-PARU(102)))
76507       ENDIF
76508  
76509 C...Calculate propagator and related constants for QFD case.
76510       POLL=1D0-PARJ(131)*PARJ(132)
76511       IF(MSTJ(102).GE.2) THEN
76512         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
76513         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
76514         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
76515         VE=4D0*PARU(102)-1D0
76516         SF1I=SFF*(VE*POLL+PARJ(132)-PARJ(131))
76517         SF1W=SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
76518         HF1I=SFI*SF1I
76519         HF1W=SFW*SF1W
76520       ENDIF
76521  
76522 C...Loop over different flavours: charge, velocity.
76523       RTOT=0D0
76524       RQQ=0D0
76525       RQV=0D0
76526       RVA=0D0
76527       DO 110 KFLC=1,MAX(MSTJ(104),KFL)
76528         IF(KFL.GT.0.AND.KFLC.NE.KFL) GOTO 110
76529         MSTJ(93)=1
76530         PMQ=PYMASS(KFLC)
76531         IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 110
76532         QF=KCHG(KFLC,1)/3D0
76533         VQ=1D0
76534         IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(1D0-(2D0*PMQ/ECM)**2)
76535  
76536 C...Calculate R and sum of charges for QED or QFD case.
76537         RQQ=RQQ+3D0*QF**2*POLL
76538         IF(MSTJ(102).LE.1) THEN
76539           RTOT=RTOT+3D0*0.5D0*VQ*(3D0-VQ**2)*QF**2*POLL
76540         ELSE
76541           VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
76542           RQV=RQV-6D0*QF*VF*SF1I
76543           RVA=RVA+3D0*(VF**2+1D0)*SF1W
76544           RTOT=RTOT+3D0*(0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-
76545      &    2D0*QF*VF*HF1I+VF**2*HF1W)+VQ**3*HF1W)
76546         ENDIF
76547   110 CONTINUE
76548       RSUM=RQQ
76549       IF(MSTJ(102).GE.2) RSUM=RQQ+SFI*RQV+SFW*RVA
76550  
76551 C...Calculate cross-section, including QCD corrections.
76552       PARJ(141)=RQQ
76553       PARJ(142)=RTOT
76554       PARJ(143)=RTOT*RQCD
76555       PARJ(144)=PARJ(143)
76556       PARJ(145)=PARJ(141)*86.8D0/ECM**2
76557       PARJ(146)=PARJ(142)*86.8D0/ECM**2
76558       PARJ(147)=PARJ(143)*86.8D0/ECM**2
76559       PARJ(148)=PARJ(147)
76560       PARJ(157)=RSUM*RQCD
76561       PARJ(158)=0D0
76562       PARJ(159)=0D0
76563       XTOT=PARJ(147)
76564       IF(MSTJ(107).LE.0) RETURN
76565  
76566 C...Virtual cross-section.
76567       XKL=PARJ(135)
76568       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
76569       ALE=2D0*LOG(ECM/PYMASS(11))-1D0
76570       SIGV=ALE/3D0+2D0*LOG(ECM**2/(PYMASS(13)*PYMASS(15)))/3D0-4D0/3D0+
76571      &1.526D0*LOG(ECM**2/0.932D0)
76572  
76573 C...Soft and hard radiative cross-section in QED case.
76574       IF(MSTJ(102).LE.1) THEN
76575         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+2D0*SIGV
76576         SIGS=ALE*(2D0*LOG(XKL)-LOG(1D0-XKL)-XKL)
76577         SIGH=ALE*(2D0*LOG(XKU/XKL)-LOG((1D0-XKU)/(1D0-XKL))-(XKU-XKL))
76578  
76579 C...Soft and hard radiative cross-section in QFD case.
76580       ELSE
76581         SZM=1D0-(PARJ(123)/ECM)**2
76582         SZW=PARJ(123)*PARJ(124)/ECM**2
76583         PARJ(161)=-RQQ/RSUM
76584         PARJ(162)=-(RQQ+RQV+RVA)/RSUM
76585         PARJ(163)=(RQV*(1D0-0.5D0*SZM-SFI)+RVA*(1.5D0-SZM-SFW))/RSUM
76586         PARJ(164)=(RQV*SZW**2*(1D0-2D0*SFW)+RVA*(2D0*SFI+SZW**2-
76587      &  4D0+3D0*SZM-SZM**2))/(SZW*RSUM)
76588         SIGV=1.5D0*ALE-0.5D0+PARU(1)**2/3D0+((2D0*RQQ+SFI*RQV)/
76589      &  RSUM)*SIGV+(SZW*SFW*RQV/RSUM)*PARU(1)*20D0/9D0
76590         SIGS=ALE*(2D0*LOG(XKL)+PARJ(161)*LOG(1D0-XKL)+PARJ(162)*XKL+
76591      &  PARJ(163)*LOG(((XKL-SZM)**2+SZW**2)/(SZM**2+SZW**2))+
76592      &  PARJ(164)*(ATAN((XKL-SZM)/SZW)-ATAN(-SZM/SZW)))
76593         SIGH=ALE*(2D0*LOG(XKU/XKL)+PARJ(161)*LOG((1D0-XKU)/
76594      &  (1D0-XKL))+PARJ(162)*(XKU-XKL)+PARJ(163)*
76595      &  LOG(((XKU-SZM)**2+SZW**2)/((XKL-SZM)**2+SZW**2))+
76596      &  PARJ(164)*(ATAN((XKU-SZM)/SZW)-ATAN((XKL-SZM)/SZW)))
76597       ENDIF
76598  
76599 C...Total cross-section and fraction of hard photon events.
76600       PARJ(160)=SIGH/(PARU(1)/PARU(101)+SIGV+SIGS+SIGH)
76601       PARJ(157)=RSUM*(1D0+(PARU(101)/PARU(1))*(SIGV+SIGS+SIGH))*RQCD
76602       PARJ(144)=PARJ(157)
76603       PARJ(148)=PARJ(144)*86.8D0/ECM**2
76604       XTOT=PARJ(148)
76605  
76606       RETURN
76607       END
76608  
76609 C*********************************************************************
76610  
76611 C...PYRADK
76612 C...Generates initial state photon radiation.
76613  
76614       SUBROUTINE PYRADK(ECM,MK,PAK,THEK,PHIK,ALPK)
76615  
76616 C...Double precision and integer declarations.
76617       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76618       IMPLICIT INTEGER(I-N)
76619       INTEGER PYK,PYCHGE,PYCOMP
76620 C...Commonblocks.
76621       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76622       SAVE /PYDAT1/
76623  
76624 C...Function: cumulative hard photon spectrum in QFD case.
76625       FXK(XX)=2D0*LOG(XX)+PARJ(161)*LOG(1D0-XX)+PARJ(162)*XX+
76626      &PARJ(163)*LOG((XX-SZM)**2+SZW**2)+PARJ(164)*ATAN((XX-SZM)/SZW)
76627  
76628 C...Determine whether radiative photon or not.
76629       MK=0
76630       PAK=0D0
76631       IF(PARJ(160).LT.PYR(0)) RETURN
76632       MK=1
76633  
76634 C...Photon energy range. Find photon momentum in QED case.
76635       XKL=PARJ(135)
76636       XKU=MIN(PARJ(136),1D0-(2D0*PARJ(127)/ECM)**2)
76637       IF(MSTJ(102).LE.1) THEN
76638   100   XK=1D0/(1D0+(1D0/XKL-1D0)*((1D0/XKU-1D0)/(1D0/XKL-1D0))**PYR(0))
76639         IF(1D0+(1D0-XK)**2.LT.2D0*PYR(0)) GOTO 100
76640  
76641 C...Ditto in QFD case, by numerical inversion of integrated spectrum.
76642       ELSE
76643         SZM=1D0-(PARJ(123)/ECM)**2
76644         SZW=PARJ(123)*PARJ(124)/ECM**2
76645         FXKL=FXK(XKL)
76646         FXKU=FXK(XKU)
76647         FXKD=1D-4*(FXKU-FXKL)
76648         FXKR=FXKL+PYR(0)*(FXKU-FXKL)
76649         NXK=0
76650   110   NXK=NXK+1
76651         XK=0.5D0*(XKL+XKU)
76652         FXKV=FXK(XK)
76653         IF(FXKV.GT.FXKR) THEN
76654           XKU=XK
76655           FXKU=FXKV
76656         ELSE
76657           XKL=XK
76658           FXKL=FXKV
76659         ENDIF
76660         IF(NXK.LT.15.AND.FXKU-FXKL.GT.FXKD) GOTO 110
76661         XK=XKL+(XKU-XKL)*(FXKR-FXKL)/(FXKU-FXKL)
76662       ENDIF
76663       PAK=0.5D0*ECM*XK
76664  
76665 C...Photon polar and azimuthal angle.
76666       PME=2D0*(PYMASS(11)/ECM)**2
76667   120 CTHM=PME*(2D0/PME)**PYR(0)
76668       IF(1D0-(XK**2*CTHM*(1D0-0.5D0*CTHM)+2D0*(1D0-XK)*PME/MAX(PME,
76669      &CTHM*(1D0-0.5D0*CTHM)))/(1D0+(1D0-XK)**2).LT.PYR(0)) GOTO 120
76670       CTHE=1D0-CTHM
76671       IF(PYR(0).GT.0.5D0) CTHE=-CTHE
76672       STHE=SQRT(MAX(0D0,(CTHM-PME)*(2D0-CTHM)))
76673       THEK=PYANGL(CTHE,STHE)
76674       PHIK=PARU(2)*PYR(0)
76675  
76676 C...Rotation angle for hadronic system.
76677       SGN=1D0
76678       IF(0.5D0*(2D0-XK*(1D0-CTHE))**2/((2D0-XK)**2+(XK*CTHE)**2).GT.
76679      &PYR(0)) SGN=-1D0
76680       ALPK=ASIN(SGN*STHE*(XK-SGN*(2D0*SQRT(1D0-XK)-2D0+XK)*CTHE)/
76681      &(2D0-XK*(1D0-SGN*CTHE)))
76682  
76683       RETURN
76684       END
76685  
76686 C*********************************************************************
76687  
76688 C...PYXKFL
76689 C...Selects flavour for produced qqbar pair.
76690  
76691       SUBROUTINE PYXKFL(KFL,ECM,ECMC,KFLC)
76692  
76693 C...Double precision and integer declarations.
76694       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76695       IMPLICIT INTEGER(I-N)
76696       INTEGER PYK,PYCHGE,PYCOMP
76697 C...Commonblocks.
76698       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76699       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
76700       SAVE /PYDAT1/,/PYDAT2/
76701  
76702 C...Calculate maximum weight in QED or QFD case.
76703       IF(MSTJ(102).LE.1) THEN
76704         RFMAX=4D0/9D0
76705       ELSE
76706         POLL=1D0-PARJ(131)*PARJ(132)
76707         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
76708         SFW=ECMC**4/((ECMC**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
76709         SFI=SFW*(1D0-(PARJ(123)/ECMC)**2)
76710         VE=4D0*PARU(102)-1D0
76711         HF1I=SFI*SFF*(VE*POLL+PARJ(132)-PARJ(131))
76712         HF1W=SFW*SFF**2*((VE**2+1D0)*POLL+2D0*VE*(PARJ(132)-PARJ(131)))
76713         RFMAX=MAX(4D0/9D0*POLL-4D0/3D0*(1D0-8D0*PARU(102)/3D0)*HF1I+
76714      &  ((1D0-8D0*PARU(102)/3D0)**2+1D0)*HF1W,1D0/9D0*POLL+2D0/3D0*
76715      &  (-1D0+4D0*PARU(102)/3D0)*HF1I+((-1D0+4D0*PARU(102)/3D0)**2+
76716      &  1D0)*HF1W)
76717       ENDIF
76718  
76719 C...Choose flavour. Gives charge and velocity.
76720       NTRY=0
76721   100 NTRY=NTRY+1
76722       IF(NTRY.GT.100) THEN
76723         CALL PYERRM(14,'(PYXKFL:) caught in an infinite loop')
76724         KFLC=0
76725         RETURN
76726       ENDIF
76727       KFLC=KFL
76728       IF(KFL.LE.0) KFLC=1+INT(MSTJ(104)*PYR(0))
76729       MSTJ(93)=1
76730       PMQ=PYMASS(KFLC)
76731       IF(ECM.LT.2D0*PMQ+PARJ(127)) GOTO 100
76732       QF=KCHG(KFLC,1)/3D0
76733       VQ=1D0
76734       IF(MOD(MSTJ(103),2).EQ.1) VQ=SQRT(MAX(0D0,1D0-(2D0*PMQ/ECMC)**2))
76735  
76736 C...Calculate weight in QED or QFD case.
76737       IF(MSTJ(102).LE.1) THEN
76738         RF=QF**2
76739         RFV=0.5D0*VQ*(3D0-VQ**2)*QF**2
76740       ELSE
76741         VF=SIGN(1D0,QF)-4D0*QF*PARU(102)
76742         RF=QF**2*POLL-2D0*QF*VF*HF1I+(VF**2+1D0)*HF1W
76743         RFV=0.5D0*VQ*(3D0-VQ**2)*(QF**2*POLL-2D0*QF*VF*HF1I+VF**2*HF1W)+
76744      &  VQ**3*HF1W
76745         IF(RFV.GT.0D0) PARJ(171)=MIN(1D0,VQ**3*HF1W/RFV)
76746       ENDIF
76747  
76748 C...Weighting or new event (radiative photon). Cross-section update.
76749       IF(KFL.LE.0.AND.RF.LT.PYR(0)*RFMAX) GOTO 100
76750       PARJ(158)=PARJ(158)+1D0
76751       IF(ECMC.LT.2D0*PMQ+PARJ(127).OR.RFV.LT.PYR(0)*RF) KFLC=0
76752       IF(MSTJ(107).LE.0.AND.KFLC.EQ.0) GOTO 100
76753       IF(KFLC.NE.0) PARJ(159)=PARJ(159)+1D0
76754       PARJ(144)=PARJ(157)*PARJ(159)/PARJ(158)
76755       PARJ(148)=PARJ(144)*86.8D0/ECM**2
76756  
76757       RETURN
76758       END
76759  
76760 C*********************************************************************
76761  
76762 C...PYXJET
76763 C...Selects number of jets in matrix element approach.
76764  
76765       SUBROUTINE PYXJET(ECM,NJET,CUT)
76766  
76767 C...Double precision and integer declarations.
76768       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76769       IMPLICIT INTEGER(I-N)
76770       INTEGER PYK,PYCHGE,PYCOMP
76771 C...Commonblocks.
76772       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76773       SAVE /PYDAT1/
76774 C...Local array and data.
76775       DIMENSION ZHUT(5)
76776       DATA ZHUT/3.0922D0, 6.2291D0, 7.4782D0, 7.8440D0, 8.2560D0/
76777  
76778 C...Trivial result for two-jets only, including parton shower.
76779       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
76780         CUT=0D0
76781  
76782 C...QCD and Abelian vector gluon theory: Q^2 for jet rate and R.
76783       ELSEIF(MSTJ(109).EQ.0.OR.MSTJ(109).EQ.2) THEN
76784         CF=4D0/3D0
76785         IF(MSTJ(109).EQ.2) CF=1D0
76786         IF(MSTJ(111).EQ.0) THEN
76787           Q2=ECM**2
76788           Q2R=ECM**2
76789         ELSEIF(MSTU(111).EQ.0) THEN
76790           PARJ(169)=MIN(1D0,PARJ(129))
76791           Q2=PARJ(169)*ECM**2
76792           PARJ(168)=MIN(1D0,MAX(PARJ(128),EXP(-12D0*PARU(1)/
76793      &    ((33D0-2D0*MSTU(112))*PARU(111)))))
76794           Q2R=PARJ(168)*ECM**2
76795         ELSE
76796           PARJ(169)=MIN(1D0,MAX(PARJ(129),(2D0*PARU(112)/ECM)**2))
76797           Q2=PARJ(169)*ECM**2
76798           PARJ(168)=MIN(1D0,MAX(PARJ(128),PARU(112)/ECM,
76799      &    (2D0*PARU(112)/ECM)**2))
76800           Q2R=PARJ(168)*ECM**2
76801         ENDIF
76802  
76803 C...alpha_strong for R and R itself.
76804         ALSPI=(3D0/4D0)*CF*PYALPS(Q2R)/PARU(1)
76805         IF(IABS(MSTJ(101)).EQ.1) THEN
76806           RQCD=1D0+ALSPI
76807         ELSEIF(MSTJ(109).EQ.0) THEN
76808           RQCD=1D0+ALSPI+(1.986D0-0.115D0*MSTU(118))*ALSPI**2
76809           IF(MSTJ(111).EQ.1) RQCD=MAX(1D0,RQCD+
76810      &    (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(168))*ALSPI**2)
76811         ELSE
76812           RQCD=1D0+ALSPI-(3D0/32D0+0.519D0*MSTU(118))*(4D0*ALSPI/3D0)**2
76813         ENDIF
76814  
76815 C...alpha_strong for jet rate. Initial value for y cut.
76816         ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
76817         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2)
76818         IF(IABS(MSTJ(101)).LE.1.OR.(MSTJ(109).EQ.0.AND.MSTJ(111).EQ.0))
76819      &  CUT=MAX(CUT,EXP(-SQRT(0.75D0/ALSPI))/2D0)
76820         IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
76821  
76822 C...Parametrization of first order three-jet cross-section.
76823   100   IF(MSTJ(101).EQ.0.OR.CUT.GE.0.25D0) THEN
76824           PARJ(152)=0D0
76825         ELSE
76826           PARJ(152)=(2D0*ALSPI/3D0)*((3D0-6D0*CUT+2D0*LOG(CUT))*
76827      &    LOG(CUT/(1D0-2D0*CUT))+(2.5D0+1.5D0*CUT-6.571D0)*
76828      &    (1D0-3D0*CUT)+5.833D0*(1D0-3D0*CUT)**2-3.894D0*
76829      &    (1D0-3D0*CUT)**3+1.342D0*(1D0-3D0*CUT)**4)/RQCD
76830           IF(MSTJ(109).EQ.2.AND.(MSTJ(101).EQ.2.OR.MSTJ(101).LE.-2))
76831      &    PARJ(152)=0D0
76832         ENDIF
76833  
76834 C...Parametrization of second order three-jet cross-section.
76835         IF(IABS(MSTJ(101)).LE.1.OR.MSTJ(101).EQ.3.OR.MSTJ(109).EQ.2.OR.
76836      &  CUT.GE.0.25D0) THEN
76837           PARJ(153)=0D0
76838         ELSEIF(MSTJ(110).LE.1) THEN
76839           CT=LOG(1D0/CUT-2D0)
76840           PARJ(153)=ALSPI**2*CT**2*(2.419D0+0.5989D0*CT+0.6782D0*CT**2-
76841      &    0.2661D0*CT**3+0.01159D0*CT**4)/RQCD
76842  
76843 C...Interpolation in second/first order ratio for Zhu parametrization.
76844         ELSEIF(MSTJ(110).EQ.2) THEN
76845           IZA=0
76846           DO 110 IY=1,5
76847             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
76848   110     CONTINUE
76849           IF(IZA.NE.0) THEN
76850             ZHURAT=ZHUT(IZA)
76851           ELSE
76852             IZ=100D0*CUT
76853             ZHURAT=ZHUT(IZ)+(100D0*CUT-IZ)*(ZHUT(IZ+1)-ZHUT(IZ))
76854           ENDIF
76855           PARJ(153)=ALSPI*PARJ(152)*ZHURAT
76856         ENDIF
76857  
76858 C...Shift in second order three-jet cross-section with optimized Q^2.
76859         IF(MSTJ(111).EQ.1.AND.IABS(MSTJ(101)).GE.2.AND.MSTJ(101).NE.3
76860      &  .AND.CUT.LT.0.25D0) PARJ(153)=PARJ(153)+
76861      &  (33D0-2D0*MSTU(112))/12D0*LOG(PARJ(169))*ALSPI*PARJ(152)
76862  
76863 C...Parametrization of second order four-jet cross-section.
76864         IF(IABS(MSTJ(101)).LE.1.OR.CUT.GE.0.125D0) THEN
76865           PARJ(154)=0D0
76866         ELSE
76867           CT=LOG(1D0/CUT-5D0)
76868           IF(CUT.LE.0.018D0) THEN
76869             XQQGG=6.349D0-4.330D0*CT+0.8304D0*CT**2
76870             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(3.035D0-2.091D0*CT+
76871      &      0.4059D0*CT**2)
76872             XQQQQ=1.25D0*(-0.1080D0+0.01486D0*CT+0.009364D0*CT**2)
76873             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
76874           ELSE
76875             XQQGG=-0.09773D0+0.2959D0*CT-0.2764D0*CT**2+0.08832D0*CT**3
76876             IF(MSTJ(109).EQ.2) XQQGG=(4D0/3D0)**2*(-0.04079D0+
76877      &      0.1340D0*CT-0.1326D0*CT**2+0.04365D0*CT**3)
76878             XQQQQ=1.25D0*(0.003661D0-0.004888D0*CT-0.001081D0*CT**2+
76879      &      0.002093D0*CT**3)
76880             IF(MSTJ(109).EQ.2) XQQQQ=8D0*XQQQQ
76881           ENDIF
76882           PARJ(154)=ALSPI**2*CT**2*(XQQGG+XQQQQ)/RQCD
76883           PARJ(155)=XQQQQ/(XQQGG+XQQQQ)
76884         ENDIF
76885  
76886 C...If negative three-jet rate, change y' optimization parameter.
76887         IF(MSTJ(111).EQ.1.AND.PARJ(152)+PARJ(153).LT.0D0.AND.
76888      &  PARJ(169).LT.0.99D0) THEN
76889           PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
76890           Q2=PARJ(169)*ECM**2
76891           ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
76892           GOTO 100
76893         ENDIF
76894  
76895 C...If too high cross-section, use harder cuts, or fail.
76896         IF(PARJ(152)+PARJ(153)+PARJ(154).GE.1) THEN
76897           IF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0.AND.MSTJ(111).EQ.1.AND.
76898      &    PARJ(169).LT.0.99D0) THEN
76899             PARJ(169)=MIN(1D0,1.2D0*PARJ(169))
76900             Q2=PARJ(169)*ECM**2
76901             ALSPI=(3D0/4D0)*CF*PYALPS(Q2)/PARU(1)
76902             GOTO 100
76903           ELSEIF(MSTJ(110).EQ.2.AND.CUT.GT.0.0499D0) THEN
76904             CALL PYERRM(26,
76905      &      '(PYXJET:) no allowed y cut value for Zhu parametrization')
76906           ENDIF
76907           CUT=0.26D0*(4D0*CUT)**(PARJ(152)+PARJ(153)+
76908      &    PARJ(154))**(-1D0/3D0)
76909           IF(MSTJ(110).EQ.2) CUT=MAX(0.01D0,MIN(0.05D0,CUT))
76910           GOTO 100
76911         ENDIF
76912  
76913 C...Scalar gluon (first order only).
76914       ELSE
76915         ALSPI=PYALPS(ECM**2)/PARU(1)
76916         CUT=MAX(0.001D0,PARJ(125),(PARJ(126)/ECM)**2,EXP(-3D0/ALSPI))
76917         PARJ(152)=0D0
76918         IF(CUT.LT.0.25D0) PARJ(152)=(ALSPI/3D0)*((1D0-2D0*CUT)*
76919      &  LOG((1D0-2D0*CUT)/CUT)+0.5D0*(9D0*CUT**2-1D0))
76920         PARJ(153)=0D0
76921         PARJ(154)=0D0
76922       ENDIF
76923  
76924 C...Select number of jets.
76925       PARJ(150)=CUT
76926       IF(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.5) THEN
76927         NJET=2
76928       ELSEIF(MSTJ(101).LE.0) THEN
76929         NJET=MIN(4,2-MSTJ(101))
76930       ELSE
76931         RNJ=PYR(0)
76932         NJET=2
76933         IF(PARJ(152)+PARJ(153)+PARJ(154).GT.RNJ) NJET=3
76934         IF(PARJ(154).GT.RNJ) NJET=4
76935       ENDIF
76936  
76937       RETURN
76938       END
76939  
76940 C*********************************************************************
76941  
76942 C...PYX3JT
76943 C...Selects the kinematical variables of three-jet events.
76944  
76945       SUBROUTINE PYX3JT(NJET,CUT,KFL,ECM,X1,X2)
76946  
76947 C...Double precision and integer declarations.
76948       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
76949       IMPLICIT INTEGER(I-N)
76950       INTEGER PYK,PYCHGE,PYCOMP
76951 C...Commonblocks.
76952       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
76953       SAVE /PYDAT1/
76954 C...Local array.
76955       DIMENSION ZHUP(5,12)
76956  
76957 C...Coefficients of Zhu second order parametrization.
76958       DATA ((ZHUP(IC1,IC2),IC2=1,12),IC1=1,5)/
76959      &18.29D0,  89.56D0,  4.541D0,  -52.09D0, -109.8D0,  24.90D0,
76960      &11.63D0,  3.683D0,  17.50D0,0.002440D0, -1.362D0,-0.3537D0,
76961      &11.42D0,  6.299D0, -22.55D0,  -8.915D0,  59.25D0, -5.855D0,
76962      &-32.85D0, -1.054D0, -16.90D0,0.006489D0,-0.8156D0,0.01095D0,
76963      &7.847D0, -3.964D0, -35.83D0,   1.178D0,  29.39D0, 0.2806D0,
76964      &47.82D0, -12.36D0, -56.72D0, 0.04054D0,-0.4365D0, 0.6062D0,
76965      &5.441D0, -56.89D0, -50.27D0,   15.13D0,  114.3D0, -18.19D0,
76966      &97.05D0, -1.890D0, -139.9D0, 0.08153D0,-0.4984D0, 0.9439D0,
76967      &-17.65D0,  51.44D0, -58.32D0,   70.95D0, -255.7D0, -78.99D0,
76968      &476.9D0,  29.65D0, -239.3D0,  0.4745D0, -1.174D0,  6.081D0/
76969  
76970 C...Dilogarithm of x for x<0.5 (x>0.5 obtained by analytic trick).
76971       DILOG(X)=X+X**2/4D0+X**3/9D0+X**4/16D0+X**5/25D0+X**6/36D0+
76972      &X**7/49D0
76973  
76974 C...Event type. Mass effect factors and other common constants.
76975       MSTJ(120)=2
76976       MSTJ(121)=0
76977       PMQ=PYMASS(KFL)
76978       QME=(2D0*PMQ/ECM)**2
76979       IF(MSTJ(109).NE.1) THEN
76980         CUTL=LOG(CUT)
76981         CUTD=LOG(1D0/CUT-2D0)
76982         IF(MSTJ(109).EQ.0) THEN
76983           CF=4D0/3D0
76984           CN=3D0
76985           TR=2D0
76986           WTMX=MIN(20D0,37D0-6D0*CUTD)
76987           IF(MSTJ(110).EQ.2) WTMX=2D0*(7.5D0+80D0*CUT)
76988         ELSE
76989           CF=1D0
76990           CN=0D0
76991           TR=12D0
76992           WTMX=0D0
76993         ENDIF
76994  
76995 C...Alpha_strong and effects of optimized Q^2 scale. Maximum weight.
76996         ALS2PI=PARU(118)/PARU(2)
76997         WTOPT=0D0
76998         IF(MSTJ(111).EQ.1) WTOPT=(33D0-2D0*MSTU(112))/6D0*
76999      &  LOG(PARJ(169))*ALS2PI
77000         WTMAX=MAX(0D0,1D0+WTOPT+ALS2PI*WTMX)
77001  
77002 C...Choose three-jet events in allowed region.
77003   100   NJET=3
77004   110   Y13L=CUTL+CUTD*PYR(0)
77005         Y23L=CUTL+CUTD*PYR(0)
77006         Y13=EXP(Y13L)
77007         Y23=EXP(Y23L)
77008         Y12=1D0-Y13-Y23
77009         IF(Y12.LE.CUT) GOTO 110
77010         IF(Y13**2+Y23**2+2D0*Y12.LE.2D0*PYR(0)) GOTO 110
77011  
77012 C...Second order corrections.
77013         IF(MSTJ(101).EQ.2.AND.MSTJ(110).LE.1) THEN
77014           Y12L=LOG(Y12)
77015           Y13M=LOG(1D0-Y13)
77016           Y23M=LOG(1D0-Y23)
77017           Y12M=LOG(1D0-Y12)
77018           IF(Y13.LE.0.5D0) Y13I=DILOG(Y13)
77019           IF(Y13.GE.0.5D0) Y13I=1.644934D0-Y13L*Y13M-DILOG(1D0-Y13)
77020           IF(Y23.LE.0.5D0) Y23I=DILOG(Y23)
77021           IF(Y23.GE.0.5D0) Y23I=1.644934D0-Y23L*Y23M-DILOG(1D0-Y23)
77022           IF(Y12.LE.0.5D0) Y12I=DILOG(Y12)
77023           IF(Y12.GE.0.5D0) Y12I=1.644934D0-Y12L*Y12M-DILOG(1D0-Y12)
77024           WT1=(Y13**2+Y23**2+2D0*Y12)/(Y13*Y23)
77025           WT2=CF*(-2D0*(CUTL-Y12L)**2-3D0*CUTL-1D0+3.289868D0+
77026      &    2D0*(2D0*CUTL-Y12L)*CUT/Y12)+
77027      &    CN*((CUTL-Y12L)**2-(CUTL-Y13L)**2-(CUTL-Y23L)**2-
77028      &    11D0*CUTL/6D0+67D0/18D0+1.644934D0-(2D0*CUTL-Y12L)*CUT/Y12+
77029      &    (2D0*CUTL-Y13L)*CUT/Y13+(2D0*CUTL-Y23L)*CUT/Y23)+
77030      &    TR*(2D0*CUTL/3D0-10D0/9D0)+
77031      &    CF*(Y12/(Y12+Y13)+Y12/(Y12+Y23)+(Y12+Y23)/Y13+(Y12+Y13)/Y23+
77032      &    Y13L*(4D0*Y12**2+2D0*Y12*Y13+4D0*Y12*Y23+Y13*Y23)/
77033      &    (Y12+Y23)**2+Y23L*(4D0*Y12**2+2D0*Y12*Y23+4D0*Y12*Y13+
77034      &    Y13*Y23)/(Y12+Y13)**2)/WT1+
77035      &    CN*(Y13L*Y13/(Y12+Y23)+Y23L*Y23/(Y12+Y13))/WT1+(CN-2D0*CF)*
77036      &    ((Y12**2+(Y12+Y13)**2)*(Y12L*Y23L-Y12L*Y12M-Y23L*
77037      &    Y23M+1.644934D0-Y12I-Y23I)/(Y13*Y23)+(Y12**2+(Y12+Y23)**2)*
77038      &    (Y12L*Y13L-Y12L*Y12M-Y13L*Y13M+1.644934D0-Y12I-Y13I)/
77039      &    (Y13*Y23)+(Y13**2+Y23**2)/(Y13*Y23*(Y13+Y23))-
77040      &    2D0*Y12L*Y12**2/(Y13+Y23)**2-4D0*Y12L*Y12/(Y13+Y23))/WT1-
77041      &    CN*(Y13L*Y23L-Y13L*Y13M-Y23L*Y23M+1.644934D0-Y13I-Y23I)
77042           IF(1D0+WTOPT+ALS2PI*WT2.LE.0D0) MSTJ(121)=1
77043           IF(1D0+WTOPT+ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
77044           PARJ(156)=(WTOPT+ALS2PI*WT2)/(1D0+WTOPT+ALS2PI*WT2)
77045  
77046         ELSEIF(MSTJ(101).EQ.2.AND.MSTJ(110).EQ.2) THEN
77047 C...Second order corrections; Zhu parametrization of ERT.
77048           ZX=(Y23-Y13)**2
77049           ZY=1D0-Y12
77050           IZA=0
77051           DO 120 IY=1,5
77052             IF(ABS(CUT-0.01D0*IY).LT.0.0001D0) IZA=IY
77053   120     CONTINUE
77054           IF(IZA.NE.0) THEN
77055             IZ=IZA
77056             WT2=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
77057      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
77058      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
77059      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
77060           ELSE
77061             IZ=100D0*CUT
77062             WTL=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
77063      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
77064      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
77065      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
77066             IZ=IZ+1
77067             WTU=ZHUP(IZ,1)+ZHUP(IZ,2)*ZX+ZHUP(IZ,3)*ZX**2+(ZHUP(IZ,4)+
77068      &      ZHUP(IZ,5)*ZX)*ZY+(ZHUP(IZ,6)+ZHUP(IZ,7)*ZX)*ZY**2+
77069      &      (ZHUP(IZ,8)+ZHUP(IZ,9)*ZX)*ZY**3+ZHUP(IZ,10)/(ZX-ZY**2)+
77070      &      ZHUP(IZ,11)/(1D0-ZY)+ZHUP(IZ,12)/ZY
77071             WT2=WTL+(WTU-WTL)*(100D0*CUT+1D0-IZ)
77072           ENDIF
77073           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.0D0) MSTJ(121)=1
77074           IF(1D0+WTOPT+2D0*ALS2PI*WT2.LE.WTMAX*PYR(0)) GOTO 110
77075           PARJ(156)=(WTOPT+2D0*ALS2PI*WT2)/(1D0+WTOPT+2D0*ALS2PI*WT2)
77076         ENDIF
77077  
77078 C...Impose mass cuts (gives two jets). For fixed jet number new try.
77079         X1=1D0-Y23
77080         X2=1D0-Y13
77081         X3=1D0-Y12
77082         IF(4D0*Y23*Y13*Y12/X3**2.LE.QME) NJET=2
77083         IF(MOD(MSTJ(103),4).GE.2.AND.IABS(MSTJ(101)).LE.1.AND.QME*X3+
77084      &  0.5D0*QME**2+(0.5D0*QME+0.25D0*QME**2)*((1D0-X2)/(1D0-X1)+
77085      &  (1D0-X1)/(1D0-X2)).GT.(X1**2+X2**2)*PYR(0)) NJET=2
77086         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 100
77087  
77088 C...Scalar gluon model (first order only, no mass effects).
77089       ELSE
77090   130   NJET=3
77091   140   X3=SQRT(4D0*CUT**2+PYR(0)*((1D0-CUT)**2-4D0*CUT**2))
77092         IF(LOG((X3-CUT)/CUT).LE.PYR(0)*LOG((1D0-2D0*CUT)/CUT)) GOTO 140
77093         YD=SIGN(2D0*CUT*((X3-CUT)/CUT)**PYR(0)-X3,PYR(0)-0.5D0)
77094         X1=1D0-0.5D0*(X3+YD)
77095         X2=1D0-0.5D0*(X3-YD)
77096         IF(4D0*(1D0-X1)*(1D0-X2)*(1D0-X3)/X3**2.LE.QME) NJET=2
77097         IF(MSTJ(102).GE.2) THEN
77098           IF(X3**2-2D0*(1D0+X3)*(1D0-X1)*(1D0-X2)*PARJ(171).LT.
77099      &    X3**2*PYR(0)) NJET=2
77100         ENDIF
77101         IF(MSTJ(101).EQ.-1.AND.NJET.EQ.2) GOTO 130
77102       ENDIF
77103  
77104       RETURN
77105       END
77106  
77107 C*********************************************************************
77108  
77109 C...PYX4JT
77110 C...Selects the kinematical variables of four-jet events.
77111  
77112       SUBROUTINE PYX4JT(NJET,CUT,KFL,ECM,KFLN,X1,X2,X4,X12,X14)
77113  
77114 C...Double precision and integer declarations.
77115       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77116       IMPLICIT INTEGER(I-N)
77117       INTEGER PYK,PYCHGE,PYCOMP
77118 C...Commonblocks.
77119       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
77120       SAVE /PYDAT1/
77121 C...Local arrays.
77122       DIMENSION WTA(4),WTB(4),WTC(4),WTD(4),WTE(4)
77123  
77124 C...Common constants. Colour factors for QCD and Abelian gluon theory.
77125       PMQ=PYMASS(KFL)
77126       QME=(2D0*PMQ/ECM)**2
77127       CT=LOG(1D0/CUT-5D0)
77128       IF(MSTJ(109).EQ.0) THEN
77129         CF=4D0/3D0
77130         CN=3D0
77131         TR=2.5D0
77132       ELSE
77133         CF=1D0
77134         CN=0D0
77135         TR=15D0
77136       ENDIF
77137  
77138 C...Choice of process (qqbargg or qqbarqqbar).
77139   100 NJET=4
77140       IT=1
77141       IF(PARJ(155).GT.PYR(0)) IT=2
77142       IF(MSTJ(101).LE.-3) IT=-MSTJ(101)-2
77143       IF(IT.EQ.1) WTMX=0.7D0/CUT**2
77144       IF(IT.EQ.1.AND.MSTJ(109).EQ.2) WTMX=0.6D0/CUT**2
77145       IF(IT.EQ.2) WTMX=0.1125D0*CF*TR/CUT**2
77146       ID=1
77147  
77148 C...Sample the five kinematical variables (for qqgg preweighted in y34).
77149   110 Y134=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
77150       Y234=3D0*CUT+(1D0-6D0*CUT)*PYR(0)
77151       IF(IT.EQ.1) Y34=(1D0-5D0*CUT)*EXP(-CT*PYR(0))
77152       IF(IT.EQ.2) Y34=CUT+(1D0-6D0*CUT)*PYR(0)
77153       IF(Y34.LE.Y134+Y234-1D0.OR.Y34.GE.Y134*Y234) GOTO 110
77154       VT=PYR(0)
77155       CP=COS(PARU(1)*PYR(0))
77156       Y14=(Y134-Y34)*VT
77157       Y13=Y134-Y14-Y34
77158       VB=Y34*(1D0-Y134-Y234+Y34)/((Y134-Y34)*(Y234-Y34))
77159       Y24=0.5D0*(Y234-Y34)*(1D0-4D0*SQRT(MAX(0D0,VT*(1D0-VT)*
77160      &VB*(1D0-VB)))*CP-(1D0-2D0*VT)*(1D0-2D0*VB))
77161       Y23=Y234-Y34-Y24
77162       Y12=1D0-Y134-Y23-Y24
77163       IF(MIN(Y12,Y13,Y14,Y23,Y24).LE.CUT) GOTO 110
77164       Y123=Y12+Y13+Y23
77165       Y124=Y12+Y14+Y24
77166  
77167 C...Calculate matrix elements for qqgg or qqqq process.
77168       IC=0
77169       WTTOT=0D0
77170   120 IC=IC+1
77171       IF(IT.EQ.1) THEN
77172         WTA(IC)=(Y12*Y34**2-Y13*Y24*Y34+Y14*Y23*Y34+3D0*Y12*Y23*Y34+
77173      &  3D0*Y12*Y14*Y34+4D0*Y12**2*Y34-Y13*Y23*Y24+2D0*Y12*Y23*Y24-
77174      &  Y13*Y14*Y24-2D0*Y12*Y13*Y24+2D0*Y12**2*Y24+Y14*Y23**2+2D0*Y12*
77175      &  Y23**2+Y14**2*Y23+4D0*Y12*Y14*Y23+4D0*Y12**2*Y23+2D0*Y12*Y14**2+
77176      &  2D0*Y12*Y13*Y14+4D0*Y12**2*Y14+2D0*Y12**2*Y13+2D0*Y12**3)/
77177      &  (2D0*Y13*Y134*Y234*Y24)+(Y24*Y34+Y12*Y34+Y13*Y24-
77178      &  Y14*Y23+Y12*Y13)/(Y13*Y134**2)+2D0*Y23*(1D0-Y13)/
77179      &  (Y13*Y134*Y24)+Y34/(2D0*Y13*Y24)
77180         WTB(IC)=(Y12*Y24*Y34+Y12*Y14*Y34-Y13*Y24**2+Y13*Y14*Y24+2D0*Y12*
77181      &  Y14*Y24)/(Y13*Y134*Y23*Y14)+Y12*(1D0+Y34)*Y124/(Y134*Y234*Y14*
77182      &  Y24)-(2D0*Y13*Y24+Y14**2+Y13*Y23+2D0*Y12*Y13)/(Y13*Y134*Y14)+
77183      &  Y12*Y123*Y124/(2D0*Y13*Y14*Y23*Y24)
77184         WTC(IC)=-(5D0*Y12*Y34**2+2D0*Y12*Y24*Y34+2D0*Y12*Y23*Y34+
77185      &  2D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+4D0*Y12**2*Y34-Y13*Y24**2+
77186      &  Y14*Y23*Y24+Y13*Y23*Y24+Y13*Y14*Y24-Y12*Y14*Y24-Y13**2*Y24-
77187      &  3D0*Y12*Y13*Y24-Y14*Y23**2-Y14**2*Y23+Y13*Y14*Y23-
77188      &  3D0*Y12*Y14*Y23-Y12*Y13*Y23)/(4D0*Y134*Y234*Y34**2)+
77189      &  (3D0*Y12*Y34**2-3D0*Y13*Y24*Y34+3D0*Y12*Y24*Y34+
77190      &  3D0*Y14*Y23*Y34-Y13*Y24**2-Y12*Y23*Y34+6D0*Y12*Y14*Y34+
77191      &  2D0*Y12*Y13*Y34-2D0*Y12**2*Y34+Y14*Y23*Y24-3D0*Y13*Y23*Y24-
77192      &  2D0*Y13*Y14*Y24+4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+
77193      &  3D0*Y14*Y23**2+2D0*Y14**2*Y23+2D0*Y14**2*Y12+
77194      &  2D0*Y12**2*Y14+6D0*Y12*Y14*Y23-2D0*Y12*Y13**2-
77195      &  2D0*Y12**2*Y13)/(4D0*Y13*Y134*Y234*Y34)
77196         WTC(IC)=WTC(IC)+(2D0*Y12*Y34**2-2D0*Y13*Y24*Y34+Y12*Y24*Y34+
77197      &  4D0*Y13*Y23*Y34+4D0*Y12*Y14*Y34+2D0*Y12*Y13*Y34+2D0*Y12**2*Y34-
77198      &  Y13*Y24**2+3D0*Y14*Y23*Y24+4D0*Y13*Y23*Y24-2D0*Y13*Y14*Y24+
77199      &  4D0*Y12*Y14*Y24+2D0*Y12*Y13*Y24+2D0*Y14*Y23**2+4D0*Y13*Y23**2+
77200      &  2D0*Y13*Y14*Y23+2D0*Y12*Y14*Y23+4D0*Y12*Y13*Y23+2D0*Y12*Y14**2+
77201      &  4D0*Y12**2*Y13+4D0*Y12*Y13*Y14+2D0*Y12**2*Y14)/
77202      &  (4D0*Y13*Y134*Y24*Y34)-(Y12*Y34**2-2D0*Y14*Y24*Y34-
77203      &  2D0*Y13*Y24*Y34-Y14*Y23*Y34+Y13*Y23*Y34+Y12*Y14*Y34+
77204      &  2D0*Y12*Y13*Y34-2D0*Y14**2*Y24-4D0*Y13*Y14*Y24-
77205      &  4D0*Y13**2*Y24-Y14**2*Y23-Y13**2*Y23+Y12*Y13*Y14-
77206      &  Y12*Y13**2)/(2D0*Y13*Y34*Y134**2)+(Y12*Y34**2-
77207      &  4D0*Y14*Y24*Y34-2D0*Y13*Y24*Y34-2D0*Y14*Y23*Y34-
77208      &  4D0*Y13*Y23*Y34-4D0*Y12*Y14*Y34-4D0*Y12*Y13*Y34-
77209      &  2D0*Y13*Y14*Y24+2D0*Y13**2*Y24+2D0*Y14**2*Y23-
77210      &  2D0*Y13*Y14*Y23-Y12*Y14**2-6D0*Y12*Y13*Y14-
77211      &  Y12*Y13**2)/(4D0*Y34**2*Y134**2)
77212         WTTOT=WTTOT+Y34*CF*(CF*WTA(IC)+(CF-0.5D0*CN)*WTB(IC)+
77213      &  CN*WTC(IC))/8D0
77214       ELSE
77215         WTD(IC)=(Y13*Y23*Y34+Y12*Y23*Y34-Y12**2*Y34+Y13*Y23*Y24+2D0*Y12*
77216      &  Y23*Y24-Y14*Y23**2+Y12*Y13*Y24+Y12*Y14*Y23+Y12*Y13*Y14)/(Y13**2*
77217      &  Y123**2)-(Y12*Y34**2-Y13*Y24*Y34+Y12*Y24*Y34-Y14*Y23*Y34-Y12*
77218      &  Y23*Y34-Y13*Y24**2+Y14*Y23*Y24-Y13*Y23*Y24-Y13**2*Y24+Y14*
77219      &  Y23**2)/(Y13**2*Y123*Y134)+(Y13*Y14*Y12+Y34*Y14*Y12-Y34**2*Y12+
77220      &  Y13*Y14*Y24+2D0*Y34*Y14*Y24-Y23*Y14**2+Y34*Y13*Y24+Y34*Y23*Y14+
77221      &  Y34*Y13*Y23)/(Y13**2*Y134**2)-(Y34*Y12**2-Y13*Y24*Y12+Y34*Y24*
77222      &  Y12-Y23*Y14*Y12-Y34*Y14*Y12-Y13*Y24**2+Y23*Y14*Y24-Y13*Y14*Y24-
77223      &  Y13**2*Y24+Y23*Y14**2)/(Y13**2*Y134*Y123)
77224         WTE(IC)=(Y12*Y34*(Y23-Y24+Y14+Y13)+Y13*Y24**2-Y14*Y23*Y24+Y13*
77225      &  Y23*Y24+Y13*Y14*Y24+Y13**2*Y24-Y14*Y23*(Y14+Y23+Y13))/(Y13*Y23*
77226      &  Y123*Y134)-Y12*(Y12*Y34-Y23*Y24-Y13*Y24-Y14*Y23-Y14*Y13)/(Y13*
77227      &  Y23*Y123**2)-(Y14+Y13)*(Y24+Y23)*Y34/(Y13*Y23*Y134*Y234)+
77228      &  (Y12*Y34*(Y14-Y24+Y23+Y13)+Y13*Y24**2-Y23*Y14*Y24+Y13*Y14*Y24+
77229      &  Y13*Y23*Y24+Y13**2*Y24-Y23*Y14*(Y14+Y23+Y13))/(Y13*Y14*Y134*
77230      &  Y123)-Y34*(Y34*Y12-Y14*Y24-Y13*Y24-Y23*Y14-Y23*Y13)/(Y13*Y14*
77231      &  Y134**2)-(Y23+Y13)*(Y24+Y14)*Y12/(Y13*Y14*Y123*Y124)
77232         WTTOT=WTTOT+CF*(TR*WTD(IC)+(CF-0.5D0*CN)*WTE(IC))/16D0
77233       ENDIF
77234  
77235 C...Permutations of momenta in matrix element. Weighting.
77236   130 IF(IC.EQ.1.OR.IC.EQ.3.OR.ID.EQ.2.OR.ID.EQ.3) THEN
77237         YSAV=Y13
77238         Y13=Y14
77239         Y14=YSAV
77240         YSAV=Y23
77241         Y23=Y24
77242         Y24=YSAV
77243         YSAV=Y123
77244         Y123=Y124
77245         Y124=YSAV
77246       ENDIF
77247       IF(IC.EQ.2.OR.IC.EQ.4.OR.ID.EQ.3.OR.ID.EQ.4) THEN
77248         YSAV=Y13
77249         Y13=Y23
77250         Y23=YSAV
77251         YSAV=Y14
77252         Y14=Y24
77253         Y24=YSAV
77254         YSAV=Y134
77255         Y134=Y234
77256         Y234=YSAV
77257       ENDIF
77258       IF(IC.LE.3) GOTO 120
77259       IF(ID.EQ.1.AND.WTTOT.LT.PYR(0)*WTMX) GOTO 110
77260       IC=5
77261  
77262 C...qqgg events: string configuration and event type.
77263       IF(IT.EQ.1) THEN
77264         IF(MSTJ(109).EQ.0.AND.ID.EQ.1) THEN
77265           PARJ(156)=Y34*(2D0*(WTA(1)+WTA(2)+WTA(3)+WTA(4))+4D0*(WTC(1)+
77266      &    WTC(2)+WTC(3)+WTC(4)))/(9D0*WTTOT)
77267           IF(WTA(2)+WTA(4)+2D0*(WTC(2)+WTC(4)).GT.PYR(0)*(WTA(1)+WTA(2)+
77268      &    WTA(3)+WTA(4)+2D0*(WTC(1)+WTC(2)+WTC(3)+WTC(4)))) ID=2
77269           IF(ID.EQ.2) GOTO 130
77270         ELSEIF(MSTJ(109).EQ.2.AND.ID.EQ.1) THEN
77271           PARJ(156)=Y34*(WTA(1)+WTA(2)+WTA(3)+WTA(4))/(8D0*WTTOT)
77272           IF(WTA(2)+WTA(4).GT.PYR(0)*(WTA(1)+WTA(2)+WTA(3)+WTA(4))) ID=2
77273           IF(ID.EQ.2) GOTO 130
77274         ENDIF
77275         MSTJ(120)=3
77276         IF(MSTJ(109).EQ.0.AND.0.5D0*Y34*(WTC(1)+WTC(2)+WTC(3)+
77277      &  WTC(4)).GT.PYR(0)*WTTOT) MSTJ(120)=4
77278         KFLN=21
77279  
77280 C...Mass cuts. Kinematical variables out.
77281         IF(Y12.LE.CUT+QME) NJET=2
77282         IF(NJET.EQ.2) GOTO 150
77283         Q12=0.5D0*(1D0-SQRT(1D0-QME/Y12))
77284         X1=1D0-(1D0-Q12)*Y234-Q12*Y134
77285         X4=1D0-(1D0-Q12)*Y134-Q12*Y234
77286         X2=1D0-Y124
77287         X12=(1D0-Q12)*Y13+Q12*Y23
77288         X14=Y12-0.5D0*QME
77289         IF(Y134*Y234/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
77290  
77291 C...qqbarqqbar events: string configuration, choose new flavour.
77292       ELSE
77293         IF(ID.EQ.1) THEN
77294           WTR=PYR(0)*(WTD(1)+WTD(2)+WTD(3)+WTD(4))
77295           IF(WTR.LT.WTD(2)+WTD(3)+WTD(4)) ID=2
77296           IF(WTR.LT.WTD(3)+WTD(4)) ID=3
77297           IF(WTR.LT.WTD(4)) ID=4
77298           IF(ID.GE.2) GOTO 130
77299         ENDIF
77300         MSTJ(120)=5
77301         PARJ(156)=CF*TR*(WTD(1)+WTD(2)+WTD(3)+WTD(4))/(16D0*WTTOT)
77302   140   KFLN=1+INT(5D0*PYR(0))
77303         IF(KFLN.NE.KFL.AND.0.2D0*PARJ(156).LE.PYR(0)) GOTO 140
77304         IF(KFLN.EQ.KFL.AND.1D0-0.8D0*PARJ(156).LE.PYR(0)) GOTO 140
77305         IF(KFLN.GT.MSTJ(104)) NJET=2
77306         PMQN=PYMASS(KFLN)
77307         QMEN=(2D0*PMQN/ECM)**2
77308  
77309 C...Mass cuts. Kinematical variables out.
77310         IF(Y24.LE.CUT+QME.OR.Y13.LE.1.1D0*QMEN) NJET=2
77311         IF(NJET.EQ.2) GOTO 150
77312         Q24=0.5D0*(1D0-SQRT(1D0-QME/Y24))
77313         Q13=0.5D0*(1D0-SQRT(1D0-QMEN/Y13))
77314         X1=1D0-(1D0-Q24)*Y123-Q24*Y134
77315         X4=1D0-(1D0-Q24)*Y134-Q24*Y123
77316         X2=1D0-(1D0-Q13)*Y234-Q13*Y124
77317         X12=(1D0-Q24)*((1D0-Q13)*Y14+Q13*Y34)+Q24*((1D0-Q13)*Y12+
77318      &  Q13*Y23)
77319         X14=Y24-0.5D0*QME
77320         X34=(1D0-Q24)*((1D0-Q13)*Y23+Q13*Y12)+Q24*((1D0-Q13)*Y34+
77321      &  Q13*Y14)
77322         IF(PMQ**2+PMQN**2+MIN(X12,X34)*ECM**2.LE.
77323      &  (PARJ(127)+PMQ+PMQN)**2) NJET=2
77324         IF(Y123*Y134/((1D0-X1)*(1D0-X4)).LE.PYR(0)) NJET=2
77325       ENDIF
77326   150 IF(MSTJ(101).LE.-2.AND.NJET.EQ.2) GOTO 100
77327  
77328       RETURN
77329       END
77330  
77331 C*********************************************************************
77332  
77333 C...PYXDIF
77334 C...Gives the angular orientation of events.
77335  
77336       SUBROUTINE PYXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI)
77337  
77338 C...Double precision and integer declarations.
77339       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77340       IMPLICIT INTEGER(I-N)
77341       INTEGER PYK,PYCHGE,PYCOMP
77342 C...Commonblocks.
77343       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
77344       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
77345       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
77346       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
77347  
77348 C...Charge. Factors depending on polarization for QED case.
77349       QF=KCHG(KFL,1)/3D0
77350       POLL=1D0-PARJ(131)*PARJ(132)
77351       POLD=PARJ(132)-PARJ(131)
77352       IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN
77353         HF1=POLL
77354         HF2=0D0
77355         HF3=PARJ(133)**2
77356         HF4=0D0
77357  
77358 C...Factors depending on flavour, energy and polarization for QFD case.
77359       ELSE
77360         SFF=1D0/(16D0*PARU(102)*(1D0-PARU(102)))
77361         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
77362         SFI=SFW*(1D0-(PARJ(123)/ECM)**2)
77363         AE=-1D0
77364         VE=4D0*PARU(102)-1D0
77365         AF=SIGN(1D0,QF)
77366         VF=AF-4D0*QF*PARU(102)
77367         HF1=QF**2*POLL-2D0*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+
77368      &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2D0*VE*AE*POLD)
77369         HF2=-2D0*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2D0*VF*AF*SFW*SFF**2*
77370      &  (2D0*VE*AE*POLL-(VE**2+AE**2)*POLD)
77371         HF3=PARJ(133)**2*(QF**2-2D0*QF*VF*SFI*SFF*VE+(VF**2+AF**2)*
77372      &  SFW*SFF**2*(VE**2-AE**2))
77373         HF4=-PARJ(133)**2*2D0*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)*
77374      &  SFF*AE
77375       ENDIF
77376  
77377 C...Mass factor. Differential cross-sections for two-jet events.
77378       SQ2=SQRT(2D0)
77379       QME=0D0
77380       IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND.
77381      &MSTJ(109).NE.1) QME=(2D0*PYMASS(KFL)/ECM)**2
77382       IF(NJET.EQ.2) THEN
77383         SIGU=4D0*SQRT(1D0-QME)
77384         SIGL=2D0*QME*SQRT(1D0-QME)
77385         SIGT=0D0
77386         SIGI=0D0
77387         SIGA=0D0
77388         SIGP=4D0
77389  
77390 C...Kinematical variables. Reduce four-jet event to three-jet one.
77391       ELSE
77392         IF(NJET.EQ.3) THEN
77393           X1=2D0*P(NC+1,4)/ECM
77394           X2=2D0*P(NC+3,4)/ECM
77395         ELSE
77396           ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+
77397      &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2)
77398           X1=2D0*P(NC+1,4)/ECMR
77399           X2=2D0*P(NC+4,4)/ECMR
77400         ENDIF
77401  
77402 C...Differential cross-sections for three-jet (or reduced four-jet).
77403         XQ=(1D0-X1)/(1D0-X2)
77404         CT12=(X1*X2-2D0*X1-2D0*X2+2D0+QME)/SQRT((X1**2-QME)*(X2**2-QME))
77405         ST12=SQRT(1D0-CT12**2)
77406         IF(MSTJ(109).NE.1) THEN
77407           SIGU=2D0*X1**2+X2**2*(1D0+CT12**2)-QME*(3D0+CT12**2-X1-X2)-
77408      &    QME*X1/XQ+0.5D0*QME*((X2**2-QME)*ST12**2-2D0*X2)*XQ
77409           SIGL=(X2*ST12)**2-QME*(3D0-CT12**2-2.5D0*(X1+X2)+X1*X2+QME)+
77410      &    0.5D0*QME*(X1**2-X1-QME)/XQ+0.5D0*QME*((X2**2-QME)*CT12**2-
77411      &    X2)*XQ
77412           SIGT=0.5D0*(X2**2-QME-0.5D0*QME*(X2**2-QME)/XQ)*ST12**2
77413           SIGI=((1D0-0.5D0*QME*XQ)*(X2**2-QME)*ST12*CT12+
77414      &    QME*(1D0-X1-X2+0.5D0*X1*X2+0.5D0*QME)*ST12/CT12)/SQ2
77415           SIGA=X2**2*ST12/SQ2
77416           SIGP=2D0*(X1**2-X2**2*CT12)
77417  
77418 C...Differential cross-sect for scalar gluons (no mass effects).
77419         ELSE
77420           X3=2D0-X1-X2
77421           XT=X2*ST12
77422           CT13=SQRT(MAX(0D0,1D0-(XT/X3)**2))
77423           SIGU=(1D0-PARJ(171))*(X3**2-0.5D0*XT**2)+
77424      &    PARJ(171)*(X3**2-0.5D0*XT**2-4D0*(1D0-X1)*(1D0-X2)**2/X1)
77425           SIGL=(1D0-PARJ(171))*0.5D0*XT**2+
77426      &    PARJ(171)*0.5D0*(1D0-X1)**2*XT**2
77427           SIGT=(1D0-PARJ(171))*0.25D0*XT**2+
77428      &    PARJ(171)*0.25D0*XT**2*(1D0-2D0*X1)
77429           SIGI=-(0.5D0/SQ2)*((1D0-PARJ(171))*XT*X3*CT13+
77430      &    PARJ(171)*XT*((1D0-2D0*X1)*X3*CT13-X1*(X1-X2)))
77431           SIGA=(0.25D0/SQ2)*XT*(2D0*(1D0-X1)-X1*X3)
77432           SIGP=X3**2-2D0*(1D0-X1)*(1D0-X2)/X1
77433         ENDIF
77434       ENDIF
77435  
77436 C...Upper bounds for differential cross-section.
77437       HF1A=ABS(HF1)
77438       HF2A=ABS(HF2)
77439       HF3A=ABS(HF3)
77440       HF4A=ABS(HF4)
77441       SIGMAX=(2D0*HF1A+HF3A+HF4A)*ABS(SIGU)+2D0*(HF1A+HF3A+HF4A)*
77442      &ABS(SIGL)+2D0*(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGT)+2D0*SQ2*
77443      &(HF1A+2D0*HF3A+2D0*HF4A)*ABS(SIGI)+4D0*SQ2*HF2A*ABS(SIGA)+
77444      &2D0*HF2A*ABS(SIGP)
77445  
77446 C...Generate angular orientation according to differential cross-sect.
77447   100 CHI=PARU(2)*PYR(0)
77448       CTHE=2D0*PYR(0)-1D0
77449       PHI=PARU(2)*PYR(0)
77450       CCHI=COS(CHI)
77451       SCHI=SIN(CHI)
77452       C2CHI=COS(2D0*CHI)
77453       S2CHI=SIN(2D0*CHI)
77454       THE=ACOS(CTHE)
77455       STHE=SIN(THE)
77456       C2PHI=COS(2D0*(PHI-PARJ(134)))
77457       S2PHI=SIN(2D0*(PHI-PARJ(134)))
77458       SIG=((1D0+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+
77459      &2D0*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+
77460      &2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*C2CHI*C2PHI-2D0*CTHE*S2CHI*
77461      &S2PHI)*HF3-((1D0+CTHE**2)*C2CHI*S2PHI+2D0*CTHE*S2CHI*C2PHI)*HF4)*
77462      &SIGT-2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*(CTHE*CCHI*C2PHI-
77463      &SCHI*S2PHI)*HF3+2D0*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+
77464      &4D0*SQ2*STHE*CCHI*HF2*SIGA+2D0*CTHE*HF2*SIGP
77465       IF(SIG.LT.SIGMAX*PYR(0)) GOTO 100
77466  
77467       RETURN
77468       END
77469  
77470 C*********************************************************************
77471  
77472 C...PYONIA
77473 C...Generates Upsilon and toponium decays into three gluons
77474 C...or two gluons and a photon.
77475  
77476       SUBROUTINE PYONIA(KFL,ECM)
77477  
77478 C...Double precision and integer declarations.
77479       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77480       IMPLICIT INTEGER(I-N)
77481       INTEGER PYK,PYCHGE,PYCOMP
77482 C...Commonblocks.
77483       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
77484       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
77485       COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
77486       SAVE /PYJETS/,/PYDAT1/,/PYDAT2/
77487  
77488 C...Printout. Check input parameters.
77489       IF(MSTU(12).NE.12345) CALL PYLIST(0)
77490       IF(KFL.LT.0.OR.KFL.GT.8) THEN
77491         CALL PYERRM(16,'(PYONIA:) called with unknown flavour code')
77492         IF(MSTU(21).GE.1) RETURN
77493       ENDIF
77494       IF(ECM.LT.PARJ(127)+2.02D0*PARF(101)) THEN
77495         CALL PYERRM(16,'(PYONIA:) called with too small CM energy')
77496         IF(MSTU(21).GE.1) RETURN
77497       ENDIF
77498  
77499 C...Initial e+e- and onium state (optional).
77500       NC=0
77501       IF(MSTJ(115).GE.2) THEN
77502         NC=NC+2
77503         CALL PY1ENT(NC-1,11,0.5D0*ECM,0D0,0D0)
77504         K(NC-1,1)=21
77505         CALL PY1ENT(NC,-11,0.5D0*ECM,PARU(1),0D0)
77506         K(NC,1)=21
77507       ENDIF
77508       KFLC=IABS(KFL)
77509       IF(MSTJ(115).GE.3.AND.KFLC.GE.5) THEN
77510         NC=NC+1
77511         KF=110*KFLC+3
77512         MSTU10=MSTU(10)
77513         MSTU(10)=1
77514         P(NC,5)=ECM
77515         CALL PY1ENT(NC,KF,ECM,0D0,0D0)
77516         K(NC,1)=21
77517         K(NC,3)=1
77518         MSTU(10)=MSTU10
77519       ENDIF
77520  
77521 C...Choose x1 and x2 according to matrix element.
77522       NTRY=0
77523   100 X1=PYR(0)
77524       X2=PYR(0)
77525       X3=2D0-X1-X2
77526       IF(X3.GE.1D0.OR.((1D0-X1)/(X2*X3))**2+((1D0-X2)/(X1*X3))**2+
77527      &((1D0-X3)/(X1*X2))**2.LE.2D0*PYR(0)) GOTO 100
77528       NTRY=NTRY+1
77529       NJET=3
77530       IF(MSTJ(101).LE.4) CALL PY3ENT(NC+1,21,21,21,ECM,X1,X3)
77531       IF(MSTJ(101).GE.5) CALL PY3ENT(-(NC+1),21,21,21,ECM,X1,X3)
77532  
77533 C...Photon-gluon-gluon events. Small system modifications. Jet origin.
77534       MSTU(111)=MSTJ(108)
77535       IF(MSTJ(108).EQ.2.AND.(MSTJ(101).EQ.0.OR.MSTJ(101).EQ.1))
77536      &MSTU(111)=1
77537       PARU(112)=PARJ(121)
77538       IF(MSTU(111).EQ.2) PARU(112)=PARJ(122)
77539       QF=0D0
77540       IF(KFLC.NE.0) QF=KCHG(KFLC,1)/3D0
77541       RGAM=7.2D0*QF**2*PARU(101)/PYALPS(ECM**2)
77542       MK=0
77543       ECMC=ECM
77544       IF(PYR(0).GT.RGAM/(1D0+RGAM)) THEN
77545         IF(1D0-MAX(X1,X2,X3).LE.MAX((PARJ(126)/ECM)**2,PARJ(125)))
77546      &  NJET=2
77547         IF(NJET.EQ.2.AND.MSTJ(101).LE.4) CALL PY2ENT(NC+1,21,21,ECM)
77548         IF(NJET.EQ.2.AND.MSTJ(101).GE.5) CALL PY2ENT(-(NC+1),21,21,ECM)
77549       ELSE
77550         MK=1
77551         ECMC=SQRT(1D0-X1)*ECM
77552         IF(ECMC.LT.2D0*PARJ(127)) GOTO 100
77553         K(NC+1,1)=1
77554         K(NC+1,2)=22
77555         K(NC+1,4)=0
77556         K(NC+1,5)=0
77557         IF(MSTJ(101).GE.5) K(NC+2,4)=MSTU(5)*(NC+3)
77558         IF(MSTJ(101).GE.5) K(NC+2,5)=MSTU(5)*(NC+3)
77559         IF(MSTJ(101).GE.5) K(NC+3,4)=MSTU(5)*(NC+2)
77560         IF(MSTJ(101).GE.5) K(NC+3,5)=MSTU(5)*(NC+2)
77561         NJET=2
77562         IF(ECMC.LT.4D0*PARJ(127)) THEN
77563           MSTU10=MSTU(10)
77564           MSTU(10)=1
77565           P(NC+2,5)=ECMC
77566           CALL PY1ENT(NC+2,83,0.5D0*(X2+X3)*ECM,PARU(1),0D0)
77567           MSTU(10)=MSTU10
77568           NJET=0
77569         ENDIF
77570       ENDIF
77571       DO 110 IP=NC+1,N
77572         K(IP,3)=K(IP,3)+(MSTJ(115)/2)+(KFLC/5)*(MSTJ(115)/3)*(NC-1)
77573   110 CONTINUE
77574  
77575 C...Differential cross-sections. Upper limit for cross-section.
77576       IF(MSTJ(106).EQ.1) THEN
77577         SQ2=SQRT(2D0)
77578         HF1=1D0-PARJ(131)*PARJ(132)
77579         HF3=PARJ(133)**2
77580         CT13=(X1*X3-2D0*X1-2D0*X3+2D0)/(X1*X3)
77581         ST13=SQRT(1D0-CT13**2)
77582         SIGL=0.5D0*X3**2*((1D0-X2)**2+(1D0-X3)**2)*ST13**2
77583         SIGU=(X1*(1D0-X1))**2+(X2*(1D0-X2))**2+(X3*(1D0-X3))**2-SIGL
77584         SIGT=0.5D0*SIGL
77585         SIGI=(SIGL*CT13/ST13+0.5D0*X1*X3*(1D0-X2)**2*ST13)/SQ2
77586         SIGMAX=(2D0*HF1+HF3)*ABS(SIGU)+2D0*(HF1+HF3)*ABS(SIGL)+2D0*(HF1+
77587      &  2D0*HF3)*ABS(SIGT)+2D0*SQ2*(HF1+2D0*HF3)*ABS(SIGI)
77588  
77589 C...Angular orientation of event.
77590   120   CHI=PARU(2)*PYR(0)
77591         CTHE=2D0*PYR(0)-1D0
77592         PHI=PARU(2)*PYR(0)
77593         CCHI=COS(CHI)
77594         SCHI=SIN(CHI)
77595         C2CHI=COS(2D0*CHI)
77596         S2CHI=SIN(2D0*CHI)
77597         THE=ACOS(CTHE)
77598         STHE=SIN(THE)
77599         C2PHI=COS(2D0*(PHI-PARJ(134)))
77600         S2PHI=SIN(2D0*(PHI-PARJ(134)))
77601         SIG=((1D0+CTHE**2)*HF1+STHE**2*C2PHI*HF3)*SIGU+2D0*(STHE**2*HF1-
77602      &  STHE**2*C2PHI*HF3)*SIGL+2D0*(STHE**2*C2CHI*HF1+((1D0+CTHE**2)*
77603      &  C2CHI*C2PHI-2D0*CTHE*S2CHI*S2PHI)*HF3)*SIGT-
77604      &  2D0*SQ2*(2D0*STHE*CTHE*CCHI*HF1-2D0*STHE*
77605      &  (CTHE*CCHI*C2PHI-SCHI*S2PHI)*HF3)*SIGI
77606         IF(SIG.LT.SIGMAX*PYR(0)) GOTO 120
77607         CALL PYROBO(NC+1,N,0D0,CHI,0D0,0D0,0D0)
77608         CALL PYROBO(NC+1,N,THE,PHI,0D0,0D0,0D0)
77609       ENDIF
77610  
77611 C...Generate parton shower. Rearrange along strings and check.
77612       IF(MSTJ(101).GE.5.AND.NJET.GE.2) THEN
77613         CALL PYSHOW(NC+MK+1,-NJET,ECMC)
77614         MSTJ14=MSTJ(14)
77615         IF(MSTJ(105).EQ.-1) MSTJ(14)=-1
77616         IF(MSTJ(105).GE.0) MSTU(28)=0
77617         CALL PYPREP(0)
77618         MSTJ(14)=MSTJ14
77619         IF(MSTJ(105).GE.0.AND.MSTU(28).NE.0) GOTO 100
77620       ENDIF
77621  
77622 C...Generate fragmentation. Information for PYTABU:
77623       IF(MSTJ(105).EQ.1) CALL PYEXEC
77624       MSTU(161)=110*KFLC+3
77625       MSTU(162)=0
77626  
77627       RETURN
77628       END
77629  
77630 C*********************************************************************
77631  
77632 C...PYBOOK
77633 C...Books a histogram.
77634  
77635       SUBROUTINE PYBOOK(ID,TITLE,NX,XL,XU)
77636  
77637 C...Double precision declaration.
77638       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77639       IMPLICIT INTEGER(I-N)
77640 C...Commonblock.
77641       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
77642       SAVE /PYBINS/
77643 C...Local character variables.
77644       CHARACTER TITLE*(*), TITFX*60
77645  
77646 C...Check that input is sensible. Find initial address in memory.
77647       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
77648      &'(PYBOOK:) not allowed histogram number')
77649       IF(NX.LE.0.OR.NX.GT.100) CALL PYERRM(28,
77650      &'(PYBOOK:) not allowed number of bins')
77651       IF(XL.GE.XU) CALL PYERRM(28,
77652      &'(PYBOOK:) x limits in wrong order')
77653       INDX(ID)=IHIST(4)
77654       IHIST(4)=IHIST(4)+28+NX
77655       IF(IHIST(4).GT.IHIST(2)) CALL PYERRM(28,
77656      &'(PYBOOK:) out of histogram space')
77657       IS=INDX(ID)
77658  
77659 C...Store histogram size and reset contents.
77660       BIN(IS+1)=NX
77661       BIN(IS+2)=XL
77662       BIN(IS+3)=XU
77663       BIN(IS+4)=(XU-XL)/NX
77664       CALL PYNULL(ID)
77665  
77666 C...Store title by conversion to integer to double precision.
77667       TITFX=TITLE//' '
77668       DO 100 IT=1,20
77669         BIN(IS+8+NX+IT)=256**2*ICHAR(TITFX(3*IT-2:3*IT-2))+
77670      &  256*ICHAR(TITFX(3*IT-1:3*IT-1))+ICHAR(TITFX(3*IT:3*IT))
77671   100 CONTINUE
77672  
77673       RETURN
77674       END
77675  
77676 C*********************************************************************
77677  
77678 C...PYFILL
77679 C...Fills entry in histogram.
77680  
77681       SUBROUTINE PYFILL(ID,X,W)
77682  
77683 C...Double precision declaration.
77684       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77685       IMPLICIT INTEGER(I-N)
77686 C...Commonblock.
77687       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
77688       SAVE /PYBINS/
77689  
77690 C...Find initial address in memory. Increase number of entries.
77691       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
77692      &'(PYFILL:) not allowed histogram number')
77693       IS=INDX(ID)
77694       IF(IS.EQ.0) CALL PYERRM(28,
77695      &'(PYFILL:) filling unbooked histogram')
77696       BIN(IS+5)=BIN(IS+5)+1D0
77697  
77698 C...Find bin in x, including under/overflow, and fill.
77699       IF(X.LT.BIN(IS+2)) THEN
77700         BIN(IS+6)=BIN(IS+6)+W
77701       ELSEIF(X.GE.BIN(IS+3)) THEN
77702         BIN(IS+8)=BIN(IS+8)+W
77703       ELSE
77704         BIN(IS+7)=BIN(IS+7)+W
77705         IX=(X-BIN(IS+2))/BIN(IS+4)
77706         IX=MAX(0,MIN(NINT(BIN(IS+1))-1,IX))
77707         BIN(IS+9+IX)=BIN(IS+9+IX)+W
77708       ENDIF
77709  
77710       RETURN
77711       END
77712  
77713 C*********************************************************************
77714  
77715 C...PYFACT
77716 C...Multiplies histogram contents by factor.
77717  
77718       SUBROUTINE PYFACT(ID,F)
77719  
77720 C...Double precision declaration.
77721       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77722       IMPLICIT INTEGER(I-N)
77723 C...Commonblock.
77724       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
77725       SAVE /PYBINS/
77726  
77727 C...Find initial address in memory. Multiply all contents bins.
77728       IF(ID.LE.0.OR.ID.GT.IHIST(1)) CALL PYERRM(28,
77729      &'(PYFACT:) not allowed histogram number')
77730       IS=INDX(ID)
77731       IF(IS.EQ.0) CALL PYERRM(28,
77732      &'(PYFACT:) scaling unbooked histogram')
77733       DO 100 IX=IS+6,IS+8+NINT(BIN(IS+1))
77734         BIN(IX)=F*BIN(IX)
77735   100 CONTINUE
77736  
77737       RETURN
77738       END
77739  
77740 C*********************************************************************
77741  
77742 C...PYOPER
77743 C...Performs operations between histograms.
77744  
77745       SUBROUTINE PYOPER(ID1,OPER,ID2,ID3,F1,F2)
77746  
77747 C...Double precision declaration.
77748       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77749       IMPLICIT INTEGER(I-N)
77750 C...Commonblock.
77751       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
77752       SAVE /PYBINS/
77753 C...Character variable.
77754       CHARACTER OPER*(*)
77755  
77756 C...Find initial addresses in memory, and histogram size.
77757       IF(ID1.LE.0.OR.ID1.GT.IHIST(1)) CALL PYERRM(28,
77758      &'(PYFACT:) not allowed histogram number')
77759       IS1=INDX(ID1)
77760       IS2=INDX(MIN(IHIST(1),MAX(1,ID2)))
77761       IS3=INDX(MIN(IHIST(1),MAX(1,ID3)))
77762       NX=NINT(BIN(IS3+1))
77763       IF(OPER.EQ.'M'.AND.ID3.EQ.0) NX=NINT(BIN(IS2+1))
77764  
77765 C...Update info on number of histogram entries.
77766       IF(OPER.EQ.'+'.OR.OPER.EQ.'-'.OR.OPER.EQ.'*'.OR.OPER.EQ.'/') THEN
77767         BIN(IS3+5)=BIN(IS1+5)+BIN(IS2+5)
77768       ELSEIF(OPER.EQ.'A'.OR.OPER.EQ.'S'.OR.OPER.EQ.'L') THEN
77769         BIN(IS3+5)=BIN(IS1+5)
77770       ENDIF
77771  
77772 C...Operations on pair of histograms: addition, subtraction,
77773 C...multiplication, division.
77774       IF(OPER.EQ.'+') THEN
77775         DO 100 IX=6,8+NX
77776           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2*BIN(IS2+IX)
77777   100   CONTINUE
77778       ELSEIF(OPER.EQ.'-') THEN
77779         DO 110 IX=6,8+NX
77780           BIN(IS3+IX)=F1*BIN(IS1+IX)-F2*BIN(IS2+IX)
77781   110   CONTINUE
77782       ELSEIF(OPER.EQ.'*') THEN
77783         DO 120 IX=6,8+NX
77784           BIN(IS3+IX)=F1*BIN(IS1+IX)*F2*BIN(IS2+IX)
77785   120   CONTINUE
77786       ELSEIF(OPER.EQ.'/') THEN
77787         DO 130 IX=6,8+NX
77788           FA2=F2*BIN(IS2+IX)
77789           IF(ABS(FA2).LE.1D-20) THEN
77790             BIN(IS3+IX)=0D0
77791           ELSE
77792             BIN(IS3+IX)=F1*BIN(IS1+IX)/FA2
77793           ENDIF
77794   130   CONTINUE
77795  
77796 C...Operations on single histogram: multiplication+addition,
77797 C...square root+addition, logarithm+addition.
77798       ELSEIF(OPER.EQ.'A') THEN
77799         DO 140 IX=6,8+NX
77800           BIN(IS3+IX)=F1*BIN(IS1+IX)+F2
77801   140   CONTINUE
77802       ELSEIF(OPER.EQ.'S') THEN
77803         DO 150 IX=6,8+NX
77804           BIN(IS3+IX)=F1*SQRT(MAX(0D0,BIN(IS1+IX)))+F2
77805   150   CONTINUE
77806       ELSEIF(OPER.EQ.'L') THEN
77807         ZMIN=1D20
77808         DO 160 IX=9,8+NX
77809           IF(BIN(IS1+IX).LT.ZMIN.AND.BIN(IS1+IX).GT.1D-20)
77810      &    ZMIN=0.8D0*BIN(IS1+IX)
77811   160   CONTINUE
77812         DO 170 IX=6,8+NX
77813           BIN(IS3+IX)=F1*LOG10(MAX(ZMIN,BIN(IS1+IX)))+F2
77814   170   CONTINUE
77815  
77816 C...Operation on two or three histograms: average and
77817 C...standard deviation.
77818       ELSEIF(OPER.EQ.'M') THEN
77819         DO 180 IX=6,8+NX
77820           IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
77821             BIN(IS2+IX)=0D0
77822           ELSE
77823             BIN(IS2+IX)=BIN(IS2+IX)/BIN(IS1+IX)
77824           ENDIF
77825           IF(ID3.NE.0) THEN
77826             IF(ABS(BIN(IS1+IX)).LE.1D-20) THEN
77827               BIN(IS3+IX)=0D0
77828             ELSE
77829               BIN(IS3+IX)=SQRT(MAX(0D0,BIN(IS3+IX)/BIN(IS1+IX)-
77830      &        BIN(IS2+IX)**2))
77831             ENDIF
77832           ENDIF
77833           BIN(IS1+IX)=F1*BIN(IS1+IX)
77834   180   CONTINUE
77835       ENDIF
77836  
77837       RETURN
77838       END
77839  
77840 C*********************************************************************
77841  
77842 C...PYHIST
77843 C...Prints and resets all histograms.
77844  
77845       SUBROUTINE PYHIST
77846  
77847 C...Double precision declaration.
77848       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77849       IMPLICIT INTEGER(I-N)
77850 C...Commonblock.
77851       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
77852       SAVE /PYBINS/
77853  
77854 C...Loop over histograms, print and reset used ones.
77855       DO 100 ID=1,IHIST(1)
77856         IS=INDX(ID)
77857         IF(IS.NE.0.AND.NINT(BIN(IS+5)).GT.0) THEN
77858           CALL PYPLOT(ID)
77859           CALL PYNULL(ID)
77860         ENDIF
77861   100 CONTINUE
77862  
77863       RETURN
77864       END
77865  
77866 C*********************************************************************
77867  
77868 C...PYPLOT
77869 C...Prints a histogram (but does not reset it).
77870  
77871       SUBROUTINE PYPLOT(ID)
77872  
77873 C...Double precision declaration.
77874       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
77875       IMPLICIT INTEGER(I-N)
77876 C...Commonblocks.
77877       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
77878       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
77879       SAVE /PYDAT1/,/PYBINS/
77880 C...Local arrays and character variables.
77881       DIMENSION IDATI(6), IROW(100), IFRA(100), DYAC(10)
77882       CHARACTER TITLE*60, OUT*100, CHA(0:11)*1
77883  
77884 C...Steps in histogram scale. Character sequence.
77885       DATA DYAC/.04,.05,.06,.08,.10,.12,.15,.20,.25,.30/
77886       DATA CHA/'0','1','2','3','4','5','6','7','8','9','X','-'/
77887  
77888 C...Find initial address in memory; skip if empty histogram.
77889       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
77890       IS=INDX(ID)
77891       IF(IS.EQ.0) RETURN
77892       IF(NINT(BIN(IS+5)).LE.0) THEN
77893         WRITE(MSTU(11),5000) ID
77894         RETURN
77895       ENDIF
77896  
77897 C...Number of histogram lines and x bins.
77898       LIN=IHIST(3)-18
77899       NX=NINT(BIN(IS+1))
77900  
77901 C...Extract title by conversion from double precision via integer.
77902       DO 100 IT=1,20
77903         IEQ=NINT(BIN(IS+8+NX+IT))
77904         TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//CHAR(MOD(IEQ,256**2)/256)
77905      &  //CHAR(MOD(IEQ,256))
77906   100 CONTINUE
77907  
77908 C...Find time; print title.
77909       CALL PYTIME(IDATI)
77910       IF(IDATI(1).GT.0) THEN
77911         WRITE(MSTU(11),5100) ID, TITLE, (IDATI(J),J=1,5)
77912       ELSE
77913         WRITE(MSTU(11),5200) ID, TITLE
77914       ENDIF
77915  
77916 C...Find minimum and maximum bin content.
77917       YMIN=BIN(IS+9)
77918       YMAX=BIN(IS+9)
77919       DO 110 IX=IS+10,IS+8+NX
77920         IF(BIN(IX).LT.YMIN) YMIN=BIN(IX)
77921         IF(BIN(IX).GT.YMAX) YMAX=BIN(IX)
77922   110 CONTINUE
77923  
77924 C...Determine scale and step size for y axis.
77925       IF(YMAX-YMIN.GT.LIN*DYAC(1)*1D-9) THEN
77926         IF(YMIN.GT.0D0.AND.YMIN.LT.0.1D0*YMAX) YMIN=0D0
77927         IF(YMAX.LT.0D0.AND.YMAX.GT.0.1D0*YMIN) YMAX=0D0
77928         IPOT=INT(LOG10(YMAX-YMIN)+10D0)-10
77929         IF(YMAX-YMIN.LT.LIN*DYAC(1)*10D0**IPOT) IPOT=IPOT-1
77930         IF(YMAX-YMIN.GT.LIN*DYAC(10)*10D0**IPOT) IPOT=IPOT+1
77931         DELY=DYAC(1)
77932         DO 120 IDEL=1,9
77933           IF(YMAX-YMIN.GE.LIN*DYAC(IDEL)*10D0**IPOT) DELY=DYAC(IDEL+1)
77934   120   CONTINUE
77935         DY=DELY*10D0**IPOT
77936  
77937 C...Convert bin contents to integer form; fractional fill in top row.
77938         DO 130 IX=1,NX
77939           CTA=ABS(BIN(IS+8+IX))/DY
77940           IROW(IX)=SIGN(CTA+0.95D0,BIN(IS+8+IX))
77941           IFRA(IX)=10D0*(CTA+1.05D0-DBLE(INT(CTA+0.95D0)))
77942   130   CONTINUE
77943         IRMI=SIGN(ABS(YMIN)/DY+0.95D0,YMIN)
77944         IRMA=SIGN(ABS(YMAX)/DY+0.95D0,YMAX)
77945  
77946 C...Print histogram row by row.
77947         DO 150 IR=IRMA,IRMI,-1
77948           IF(IR.EQ.0) GOTO 150
77949           OUT=' '
77950           DO 140 IX=1,NX
77951             IF(IR.EQ.IROW(IX)) OUT(IX:IX)=CHA(IFRA(IX))
77952             IF(IR*(IROW(IX)-IR).GT.0) OUT(IX:IX)=CHA(10)
77953   140     CONTINUE
77954           WRITE(MSTU(11),5300) IR*DELY, IPOT, OUT
77955   150   CONTINUE
77956  
77957 C...Print sign and value of bin contents.
77958         IPOT=INT(LOG10(MAX(YMAX,-YMIN))+10.0001D0)-10
77959         OUT=' '
77960         DO 160 IX=1,NX
77961           IF(BIN(IS+8+IX).LT.-10D0**(IPOT-4)) OUT(IX:IX)=CHA(11)
77962           IROW(IX)=NINT(10D0**(3-IPOT)*ABS(BIN(IS+8+IX)))
77963   160   CONTINUE
77964         WRITE(MSTU(11),5400) OUT
77965         DO 180 IR=4,1,-1
77966           DO 170 IX=1,NX
77967             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
77968   170     CONTINUE
77969           WRITE(MSTU(11),5500) IPOT+IR-4, OUT
77970   180   CONTINUE
77971  
77972 C...Print sign and value of lower bin edge.
77973         IPOT=INT(LOG10(MAX(-BIN(IS+2),BIN(IS+3)-BIN(IS+4)))+
77974      &  10.0001D0)-10
77975         OUT=' '
77976         DO 190 IX=1,NX
77977           IF(BIN(IS+2)+(IX-1)*BIN(IS+4).LT.-10D0**(IPOT-3))
77978      &    OUT(IX:IX)=CHA(11)
77979           IROW(IX)=NINT(10D0**(2-IPOT)*ABS(BIN(IS+2)+(IX-1)*BIN(IS+4)))
77980   190   CONTINUE
77981         WRITE(MSTU(11),5600) OUT
77982         DO 210 IR=3,1,-1
77983           DO 200 IX=1,NX
77984             OUT(IX:IX)=CHA(MOD(IROW(IX),10**IR)/10**(IR-1))
77985   200     CONTINUE
77986           WRITE(MSTU(11),5500) IPOT+IR-3, OUT
77987   210   CONTINUE
77988       ENDIF
77989  
77990 C...Calculate and print statistics.
77991       CSUM=0D0
77992       CXSUM=0D0
77993       CXXSUM=0D0
77994       DO 220 IX=1,NX
77995         CTA=ABS(BIN(IS+8+IX))
77996         X=BIN(IS+2)+(IX-0.5D0)*BIN(IS+4)
77997         CSUM=CSUM+CTA
77998         CXSUM=CXSUM+CTA*X
77999         CXXSUM=CXXSUM+CTA*X**2
78000   220 CONTINUE
78001       XMEAN=CXSUM/MAX(CSUM,1D-20)
78002       XRMS=SQRT(MAX(0D0,CXXSUM/MAX(CSUM,1D-20)-XMEAN**2))
78003       WRITE(MSTU(11),5700) NINT(BIN(IS+5)),XMEAN,BIN(IS+6),
78004      &BIN(IS+2),BIN(IS+7),XRMS,BIN(IS+8),BIN(IS+3)
78005  
78006 C...Formats for output.
78007  5000 FORMAT(/5X,'Histogram no',I5,' : no entries')
78008  5100 FORMAT('1'/5X,'Histogram no',I5,6X,A60,5X,I4,'-',I2,'-',I2,1X,
78009      &I2,':',I2/)
78010  5200 FORMAT('1'/5X,'Histogram no',I5,6X,A60/)
78011  5300 FORMAT(2X,F7.2,'*10**',I2,3X,A100)
78012  5400 FORMAT(/8X,'Contents',3X,A100)
78013  5500 FORMAT(9X,'*10**',I2,3X,A100)
78014  5600 FORMAT(/8X,'Low edge',3X,A100)
78015  5700 FORMAT(/5X,'Entries  =',I12,1P,6X,'Mean =',D12.4,6X,'Underflow ='
78016      &,D12.4,6X,'Low edge  =',D12.4/5X,'All chan =',D12.4,6X,
78017      &'Rms  =',D12.4,6X,'Overflow  =',D12.4,6X,'High edge =',D12.4)
78018  
78019       RETURN
78020       END
78021  
78022 C*********************************************************************
78023  
78024 C...PYNULL
78025 C...Resets bin contents of a histogram.
78026  
78027       SUBROUTINE PYNULL(ID)
78028  
78029 C...Double precision declaration.
78030       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78031       IMPLICIT INTEGER(I-N)
78032 C...Commonblock.
78033       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
78034       SAVE /PYBINS/
78035  
78036       IF(ID.LE.0.OR.ID.GT.IHIST(1)) RETURN
78037       IS=INDX(ID)
78038       IF(IS.EQ.0) RETURN
78039       DO 100 IX=IS+5,IS+8+NINT(BIN(IS+1))
78040         BIN(IX)=0D0
78041   100 CONTINUE
78042  
78043       RETURN
78044       END
78045  
78046 C*********************************************************************
78047  
78048 C...PYDUMP
78049 C...Dumps histogram contents on file for reading by other program.
78050 C...Can also read back own dump.
78051  
78052       SUBROUTINE PYDUMP(MDUMP,LFN,NHI,IHI)
78053  
78054 C...Double precision declaration.
78055       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78056       IMPLICIT INTEGER(I-N)
78057 C...Commonblock.
78058       COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000)
78059       SAVE /PYBINS/
78060 C...Local arrays and character variables.
78061       DIMENSION IHI(*),ISS(100),VAL(5)
78062       CHARACTER TITLE*60,FORMAT*13
78063  
78064 C...Dump all histograms that have been booked,
78065 C...including titles and ranges, one after the other.
78066       IF(MDUMP.EQ.1) THEN
78067  
78068 C...Loop over histograms and find which are wanted and booked.
78069         IF(NHI.LE.0) THEN
78070           NW=IHIST(1)
78071         ELSE
78072           NW=NHI
78073         ENDIF
78074         DO 130 IW=1,NW
78075           IF(NHI.EQ.0) THEN
78076             ID=IW
78077           ELSE
78078             ID=IHI(IW)
78079           ENDIF
78080           IS=INDX(ID)
78081           IF(IS.NE.0) THEN
78082  
78083 C...Write title, histogram size, filling statistics.
78084             NX=NINT(BIN(IS+1))
78085             DO 100 IT=1,20
78086               IEQ=NINT(BIN(IS+8+NX+IT))
78087               TITLE(3*IT-2:3*IT)=CHAR(IEQ/256**2)//
78088      &        CHAR(MOD(IEQ,256**2)/256)//CHAR(MOD(IEQ,256))
78089   100       CONTINUE
78090             WRITE(LFN,5100) ID,TITLE
78091             WRITE(LFN,5200) NX,BIN(IS+2),BIN(IS+3)
78092             WRITE(LFN,5300) NINT(BIN(IS+5)),BIN(IS+6),BIN(IS+7),
78093      &      BIN(IS+8)
78094  
78095  
78096 C...Write histogram contents, in groups of five.
78097             DO 120 IXG=1,(NX+4)/5
78098               DO 110 IXV=1,5
78099                 IX=5*IXG+IXV-5
78100                 IF(IX.LE.NX) THEN
78101                   VAL(IXV)=BIN(IS+8+IX)
78102                 ELSE
78103                   VAL(IXV)=0D0
78104                 ENDIF
78105   110         CONTINUE
78106               WRITE(LFN,5400) (VAL(IXV),IXV=1,5)
78107   120       CONTINUE
78108  
78109 C...Go to next histogram; finish.
78110           ELSEIF(NHI.GT.0) THEN
78111             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
78112           ENDIF
78113   130   CONTINUE
78114  
78115 C...Read back in histograms dumped MDUMP=1.
78116       ELSEIF(MDUMP.EQ.2) THEN
78117  
78118 C...Read histogram number, title and range, and book.
78119   140   READ(LFN,5100,END=170) ID,TITLE
78120         READ(LFN,5200) NX,XL,XU
78121         CALL PYBOOK(ID,TITLE,NX,XL,XU)
78122         IS=INDX(ID)
78123  
78124 C...Read filling statistics.
78125         READ(LFN,5300) NENTRY,BIN(IS+6),BIN(IS+7),BIN(IS+8)
78126         BIN(IS+5)=DBLE(NENTRY)
78127  
78128 C...Read histogram contents, in groups of five.
78129         DO 160 IXG=1,(NX+4)/5
78130           READ(LFN,5400) (VAL(IXV),IXV=1,5)
78131           DO 150 IXV=1,5
78132             IX=5*IXG+IXV-5
78133             IF(IX.LE.NX) BIN(IS+8+IX)=VAL(IXV)
78134   150     CONTINUE
78135   160   CONTINUE
78136  
78137 C...Go to next histogram; finish.
78138         GOTO 140
78139   170   CONTINUE
78140  
78141 C...Write histogram contents in column format,
78142 C...convenient e.g. for GNUPLOT input.
78143       ELSEIF(MDUMP.EQ.3) THEN
78144  
78145 C...Find addresses to wanted histograms.
78146         NSS=0
78147         IF(NHI.LE.0) THEN
78148           NW=IHIST(1)
78149         ELSE
78150           NW=NHI
78151         ENDIF
78152         DO 180 IW=1,NW
78153           IF(NHI.EQ.0) THEN
78154             ID=IW
78155           ELSE
78156             ID=IHI(IW)
78157           ENDIF
78158           IS=INDX(ID)
78159           IF(IS.NE.0.AND.NSS.LT.100) THEN
78160             NSS=NSS+1
78161             ISS(NSS)=IS
78162           ELSEIF(NSS.GE.100) THEN
78163             CALL PYERRM(8,'(PYDUMP:) too many histograms requested')
78164           ELSEIF(NHI.GT.0) THEN
78165             CALL PYERRM(8,'(PYDUMP:) unknown histogram number')
78166           ENDIF
78167   180   CONTINUE
78168  
78169 C...Check that they have common number of x bins. Fix format.
78170         NX=NINT(BIN(ISS(1)+1))
78171         DO 190 IW=2,NSS
78172           IF(NINT(BIN(ISS(IW)+1)).NE.NX) THEN
78173             CALL PYERRM(8,'(PYDUMP:) different number of bins')
78174             RETURN
78175           ENDIF
78176   190   CONTINUE
78177         FORMAT='(1P,000E12.4)'
78178         WRITE(FORMAT(5:7),'(I3)') NSS+1
78179  
78180 C...Write histogram contents; first column x values.
78181         DO 200 IX=1,NX
78182           X=BIN(ISS(1)+2)+(IX-0.5D0)*BIN(ISS(1)+4)
78183           WRITE(LFN,FORMAT) X, (BIN(ISS(IW)+8+IX),IW=1,NSS)
78184   200   CONTINUE
78185  
78186       ENDIF
78187  
78188 C...Formats for output.
78189  5100 FORMAT(I5,5X,A60)
78190  5200 FORMAT(I5,1P,2D12.4)
78191  5300 FORMAT(I12,1P,3D12.4)
78192  5400 FORMAT(1P,5D12.4)
78193  
78194       RETURN
78195       END
78196  
78197 C*********************************************************************
78198  
78199 C...PYSTOP
78200 C...Allows users to handle STOP statemens
78201  
78202       SUBROUTINE PYSTOP(MCOD)
78203  
78204 C...Double precision and integer declarations.
78205       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78206       IMPLICIT INTEGER(I-N)
78207       INTEGER PYK,PYCHGE,PYCOMP
78208 C...Commonblocks.
78209       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78210       SAVE /PYDAT1/
78211 
78212  
78213 C...Write message, then stop
78214       WRITE(MSTU(11),5000) MCOD
78215       STOP
78216 
78217  
78218 C...Formats for output.
78219  5000 FORMAT(/5X,'PYSTOP called with code: ',I4)
78220       END
78221  
78222 C*********************************************************************
78223  
78224 C...PYKCUT
78225 C...Dummy routine, which the user can replace in order to make cuts on
78226 C...the kinematics on the parton level before the matrix elements are
78227 C...evaluated and the event is generated. The cross-section estimates
78228 C...will automatically take these cuts into account, so the given
78229 C...values are for the allowed phase space region only. MCUT=0 means
78230 C...that the event has passed the cuts, MCUT=1 that it has failed.
78231  
78232       SUBROUTINE PYKCUT(MCUT)
78233  
78234 C...Double precision and integer declarations.
78235       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78236       IMPLICIT INTEGER(I-N)
78237       INTEGER PYK,PYCHGE,PYCOMP
78238 C...Commonblocks.
78239       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78240       COMMON/PYINT1/MINT(400),VINT(400)
78241       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
78242       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
78243  
78244 C...Set default value (accepting event) for MCUT.
78245       MCUT=0
78246  
78247 C...Read out subprocess number.
78248       ISUB=MINT(1)
78249       ISTSB=ISET(ISUB)
78250  
78251 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
78252       TAU=VINT(21)
78253       YST=VINT(22)
78254       CTH=0D0
78255       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
78256       TAUP=0D0
78257       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
78258  
78259 C...Calculate x_1, x_2, x_F.
78260       IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN
78261         X1=SQRT(TAU)*EXP(YST)
78262         X2=SQRT(TAU)*EXP(-YST)
78263       ELSE
78264         X1=SQRT(TAUP)*EXP(YST)
78265         X2=SQRT(TAUP)*EXP(-YST)
78266       ENDIF
78267       XF=X1-X2
78268  
78269 C...Calculate shat, that, uhat, p_T^2.
78270       SHAT=TAU*VINT(2)
78271       SQM3=VINT(63)
78272       SQM4=VINT(64)
78273       RM3=SQM3/SHAT
78274       RM4=SQM4/SHAT
78275       BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4))
78276       RPTS=4D0*VINT(71)**2/SHAT
78277       BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS))
78278       RM34=2D0*RM3*RM4
78279       RSQM=1D0+RM34
78280       RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L)
78281       THAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)
78282       UHAT=-0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)
78283       PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2))
78284  
78285 C...Decisions by user to be put here.
78286  
78287 C...Stop program if this routine is ever called.
78288 C...You should not copy these lines to your own routine.
78289       WRITE(MSTU(11),5000)
78290       CALL PYSTOP(6)
78291  
78292 C...Format for error printout.
78293  5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ',
78294      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
78295      &1X,'Execution stopped!')
78296  
78297       RETURN
78298       END
78299  
78300 C*********************************************************************
78301  
78302 C...PYEVWT
78303 C...Dummy routine, which the user can replace in order to multiply the
78304 C...standard PYTHIA differential cross-section by a process- and
78305 C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds
78306 C...to generation of weighted events, with weight 1/WTXS, while for
78307 C...MSTP(142)=2 it corresponds to a modification of the underlying
78308 C...physics.
78309  
78310       SUBROUTINE PYEVWT(WTXS)
78311  
78312 C...Double precision and integer declarations.
78313       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78314       IMPLICIT INTEGER(I-N)
78315       INTEGER PYK,PYCHGE,PYCOMP
78316 C...Commonblocks.
78317       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78318       COMMON/PYINT1/MINT(400),VINT(400)
78319       COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2)
78320       SAVE /PYDAT1/,/PYINT1/,/PYINT2/
78321  
78322 C...Set default weight for WTXS.
78323       WTXS=1D0
78324  
78325 C...Read out subprocess number.
78326       ISUB=MINT(1)
78327       ISTSB=ISET(ISUB)
78328  
78329 C...Read out tau, y*, cos(theta), tau' (where defined, else =0).
78330       TAU=VINT(21)
78331       YST=VINT(22)
78332       CTH=0D0
78333       IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23)
78334       TAUP=0D0
78335       IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26)
78336  
78337 C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2.
78338       X1=VINT(41)
78339       X2=VINT(42)
78340       XF=X1-X2
78341       SHAT=VINT(44)
78342       THAT=VINT(45)
78343       UHAT=VINT(46)
78344       PT2=VINT(48)
78345  
78346 C...Modifications by user to be put here.
78347  
78348 C...Stop program if this routine is ever called.
78349 C...You should not copy these lines to your own routine.
78350       WRITE(MSTU(11),5000)
78351       CALL PYSTOP(4)
78352  
78353 C...Format for error printout.
78354  5000 FORMAT(1X,'Error: you did not link your PYEVWT routine ',
78355      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
78356      &1X,'Execution stopped!')
78357  
78358       RETURN
78359       END
78360  
78361 C*********************************************************************
78362  
78363 C...UPINIT
78364 C...Dummy routine, to be replaced by a user implementing external
78365 C...processes. Is supposed to fill the HEPRUP commonblock with info
78366 C...on incoming beams and allowed processes.
78367 
78368 C...New example: handles a standard Les Houches Events File.
78369 
78370       SUBROUTINE UPINIT
78371  
78372 C...Double precision and integer declarations.
78373       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78374       IMPLICIT INTEGER(I-N)
78375  
78376 C...PYTHIA commonblock: only used to provide read unit MSTP(161).
78377       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
78378       SAVE /PYPARS/
78379  
78380 C...User process initialization commonblock.
78381       INTEGER MAXPUP
78382       PARAMETER (MAXPUP=100)
78383       INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
78384       DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
78385       COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
78386      &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
78387      &LPRUP(MAXPUP)
78388       SAVE /HEPRUP/
78389 
78390 C...Lines to read in assumed never longer than 200 characters. 
78391       PARAMETER (MAXLEN=200)
78392       CHARACTER*(MAXLEN) STRING
78393 
78394 C...Format for reading lines.
78395       CHARACTER*6 STRFMT
78396       STRFMT='(A000)'
78397       WRITE(STRFMT(3:5),'(I3)') MAXLEN
78398 
78399 C...Loop until finds line beginning with "<init>" or "<init ". 
78400   100 READ(MSTP(161),STRFMT,END=130,ERR=130) STRING
78401       IBEG=0
78402   110 IBEG=IBEG+1
78403 C...Allow indentation.
78404       IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-5) GOTO 110 
78405       IF(STRING(IBEG:IBEG+5).NE.'<init>'.AND.
78406      &STRING(IBEG:IBEG+5).NE.'<init ') GOTO 100
78407 
78408 C...Read first line of initialization info.
78409       READ(MSTP(161),*,END=130,ERR=130) IDBMUP(1),IDBMUP(2),EBMUP(1),
78410      &EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
78411 
78412 C...Read NPRUP subsequent lines with information on each process.
78413       DO 120 IPR=1,NPRUP
78414         READ(MSTP(161),*,END=130,ERR=130) XSECUP(IPR),XERRUP(IPR),
78415      &  XMAXUP(IPR),LPRUP(IPR)
78416   120 CONTINUE
78417       RETURN
78418 
78419 C...Error exit: give up if initalization does not work.
78420   130 WRITE(*,*) ' Failed to read LHEF initialization information.'
78421       WRITE(*,*) ' Event generation will be stopped.'
78422       CALL PYSTOP(12)
78423  
78424       RETURN
78425       END
78426 
78427 C...Old example: handles a simple Pythia 6.4 initialization file.
78428  
78429 c      SUBROUTINE UPINIT
78430  
78431 C...Double precision and integer declarations.
78432 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78433 c      IMPLICIT INTEGER(I-N)
78434  
78435 C...Commonblocks.
78436 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78437 c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
78438 c      SAVE /PYDAT1/,/PYPARS/
78439  
78440 C...User process initialization commonblock.
78441 c      INTEGER MAXPUP
78442 c      PARAMETER (MAXPUP=100)
78443 c      INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP
78444 c      DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP
78445 c      COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2),
78446 c     &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP),
78447 c     &LPRUP(MAXPUP)
78448 c      SAVE /HEPRUP/
78449  
78450 C...Read info from file.
78451 c      IF(MSTP(161).GT.0) THEN
78452 c        READ(MSTP(161),*,END=110,ERR=110) IDBMUP(1),IDBMUP(2),EBMUP(1),
78453 c     &  EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP
78454 c        DO 100 IPR=1,NPRUP
78455 c          READ(MSTP(161),*,END=110,ERR=110) XSECUP(IPR),XERRUP(IPR),
78456 c     &    XMAXUP(IPR),LPRUP(IPR)
78457 c  100   CONTINUE
78458 c        RETURN
78459 C...Error or prematurely reached end of file.
78460 c  110   WRITE(MSTU(11),5000)
78461 c        STOP
78462  
78463 C...Else not implemented.
78464 c      ELSE
78465 c        WRITE(MSTU(11),5100)
78466 c        STOP
78467 c      ENDIF
78468  
78469 C...Format for error printout.
78470 c 5000 FORMAT(1X,'Error: UPINIT routine failed to read information'/
78471 c     &1X,'Execution stopped!')
78472 c 5100 FORMAT(1X,'Error: You have not implemented UPINIT routine'/
78473 c     &1X,'Dummy routine in PYTHIA file called instead.'/
78474 c     &1X,'Execution stopped!')
78475  
78476 c      RETURN
78477 c      END
78478  
78479 C*********************************************************************
78480  
78481 C...UPEVNT
78482 C...Dummy routine, to be replaced by a user implementing external
78483 C...processes. Depending on cross section model chosen, it either has
78484 C...to generate a process of the type IDPRUP requested, or pick a type
78485 C...itself and generate this event. The event is to be stored in the
78486 C...HEPEUP commonblock, including (often) an event weight.
78487 
78488 C...New example: handles a standard Les Houches Events File.
78489 
78490       SUBROUTINE UPEVNT
78491  
78492 C...Double precision and integer declarations.
78493       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78494       IMPLICIT INTEGER(I-N)
78495  
78496 C...PYTHIA commonblock: only used to provide read unit MSTP(162).
78497       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
78498       SAVE /PYPARS/
78499  
78500 C...User process event common block.
78501       INTEGER MAXNUP
78502       PARAMETER (MAXNUP=500)
78503       INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
78504       DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
78505       COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
78506      &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
78507      &VTIMUP(MAXNUP),SPINUP(MAXNUP)
78508       SAVE /HEPEUP/
78509 
78510 C...Lines to read in assumed never longer than 200 characters. 
78511       PARAMETER (MAXLEN=200)
78512       CHARACTER*(MAXLEN) STRING
78513 
78514 C...Format for reading lines.
78515       CHARACTER*6 STRFMT
78516       STRFMT='(A000)'
78517       WRITE(STRFMT(3:5),'(I3)') MAXLEN
78518 
78519 C...Loop until finds line beginning with "<event>" or "<event ". 
78520   100 READ(MSTP(162),STRFMT,END=130,ERR=130) STRING
78521       IBEG=0
78522   110 IBEG=IBEG+1
78523 C...Allow indentation.
78524       IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-6) GOTO 110 
78525       IF(STRING(IBEG:IBEG+6).NE.'<event>'.AND.
78526      &STRING(IBEG:IBEG+6).NE.'<event ') GOTO 100
78527 
78528 C...Read first line of event info.
78529       READ(MSTP(162),*,END=130,ERR=130) NUP,IDPRUP,XWGTUP,SCALUP,
78530      &AQEDUP,AQCDUP
78531 
78532 C...Read NUP subsequent lines with information on each particle.
78533       DO 120 I=1,NUP
78534         READ(MSTP(162),*,END=130,ERR=130) IDUP(I),ISTUP(I),
78535      &  MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),
78536      &  (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I)
78537   120 CONTINUE
78538       RETURN
78539 
78540 C...Error exit, typically when no more events.
78541   130 WRITE(*,*) ' Failed to read LHEF event information.'
78542       WRITE(*,*) ' Will assume end of file has been reached.'
78543       NUP=0
78544       MSTI(51)=1
78545  
78546       RETURN
78547       END
78548 
78549 C...Old example: handles a simple Pythia 6.4 event file.
78550  
78551 c      SUBROUTINE UPEVNT
78552  
78553 C...Double precision and integer declarations.
78554 c      IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78555 c      IMPLICIT INTEGER(I-N)
78556  
78557 C...Commonblocks.
78558 c      COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78559 c      COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
78560 c      SAVE /PYDAT1/,/PYPARS/
78561  
78562 C...User process event common block.
78563 c      INTEGER MAXNUP
78564 c      PARAMETER (MAXNUP=500)
78565 c      INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP
78566 c      DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP
78567 c      COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP),
78568 c     &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP),
78569 c     &VTIMUP(MAXNUP),SPINUP(MAXNUP)
78570 c      SAVE /HEPEUP/
78571  
78572 C...Read info from file.
78573 c      IF(MSTP(162).GT.0) THEN
78574 c        READ(MSTP(162),*,END=110,ERR=110) NUP,IDPRUP,XWGTUP,SCALUP,
78575 c     &  AQEDUP,AQCDUP
78576 c        DO 100 I=1,NUP
78577 c          READ(MSTP(162),*,END=110,ERR=110) IDUP(I),ISTUP(I),
78578 c     &    MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I),
78579 c     &    (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I)
78580 c  100   CONTINUE
78581 c        RETURN
78582 C...Special when reached end of file or other error.
78583 c  110   NUP=0
78584  
78585 C...Else not implemented.
78586 c      ELSE
78587 c        WRITE(MSTU(11),5000)
78588 c        STOP
78589 c      ENDIF
78590  
78591 C...Format for error printout.
78592 c 5000 FORMAT(1X,'Error: You have not implemented UPEVNT routine'/
78593 c     &1X,'Dummy routine in PYTHIA file called instead.'/
78594 c     &1X,'Execution stopped!')
78595  
78596 c      RETURN
78597 c      END
78598  
78599 C*********************************************************************
78600  
78601 C...UPVETO
78602 C...Dummy routine, to be replaced by user, to veto event generation
78603 C...on the parton level, after parton showers but before multiple
78604 C...interactions, beam remnants and hadronization is added.
78605 C...If resonances like W, Z, top, Higgs and SUSY particles are handed
78606 C...undecayed from UPEVNT, or are generated by PYTHIA, they will also
78607 C...be undecayed at this stage; if decayed their decay products will
78608 C...have been allowed to shower.
78609  
78610 C...All partons at the end of the shower phase are stored in the
78611 C...HEPEVT commonblock. The interesting information is
78612 C...NHEP = the number of such partons, in entries 1 <= i <= NHEP,
78613 C...IDHEP(I) = the particle ID code according to PDG conventions,
78614 C...PHEP(J,I) = the (p_x, p_y, p_z, E, m) of the particle.
78615 C...All ISTHEP entries are 1, while the rest is zeroed.
78616  
78617 C...The user decision is to be conveyed by the IVETO value.
78618 C...IVETO = 0 : retain current event and generate in full;
78619 C...      = 1 : abort generation of current event and move to next.
78620  
78621       SUBROUTINE UPVETO(IVETO)
78622  
78623 C...HEPEVT commonblock.
78624       PARAMETER (NMXHEP=4000)
78625       COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP),
78626      &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP)
78627       DOUBLE PRECISION PHEP,VHEP
78628       SAVE /HEPEVT/
78629  
78630 C...Next few lines allow you to see what info PYVETO extracted from
78631 C...the full event record for the first two events.
78632 C...Delete if you don't want it.
78633       DATA NLIST/0/
78634       SAVE NLIST
78635       IF(NLIST.LE.2) THEN
78636         WRITE(*,*) ' Full event record at time of UPVETO call:'
78637         CALL PYLIST(1)
78638         WRITE(*,*) ' Part of event record made available to UPVETO:'
78639         CALL PYLIST(5)
78640         NLIST=NLIST+1
78641       ENDIF
78642  
78643 C...Make decision here.
78644       IVETO = 0
78645  
78646       RETURN
78647       END
78648  
78649 C*********************************************************************
78650  
78651 C...PDFSET
78652 C...Dummy routine, to be removed when PDFLIB is to be linked.
78653  
78654       SUBROUTINE PDFSET(PARM,VALUE)
78655  
78656 C...Double precision and integer declarations.
78657       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78658       IMPLICIT INTEGER(I-N)
78659       INTEGER PYK,PYCHGE,PYCOMP
78660 C...Commonblocks.
78661       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78662       SAVE /PYDAT1/
78663 C...Local arrays and character variables.
78664       CHARACTER*20 PARM(20)
78665       DOUBLE PRECISION VALUE(20)
78666  
78667 C...Stop program if this routine is ever called.
78668       WRITE(MSTU(11),5000)
78669       CALL PYSTOP(5)
78670       PARM(20)=PARM(1)
78671       VALUE(20)=VALUE(1)
78672  
78673 C...Format for error printout.
78674  5000 FORMAT(1X,'Error: you did not link PDFLIB correctly.'/
78675      &1X,'Dummy routine PDFSET in PYTHIA file called instead.'/
78676      &1X,'Execution stopped!')
78677  
78678       RETURN
78679       END
78680  
78681 C*********************************************************************
78682  
78683 C...STRUCTM
78684 C...Dummy routine, to be removed when PDFLIB is to be linked.
78685  
78686       SUBROUTINE STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
78687  
78688 C...Double precision and integer declarations.
78689       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78690       IMPLICIT INTEGER(I-N)
78691       INTEGER PYK,PYCHGE,PYCOMP
78692 C...Commonblocks.
78693       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78694       SAVE /PYDAT1/
78695 C...Local variables
78696       DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
78697  
78698 C...Stop program if this routine is ever called.
78699       WRITE(MSTU(11),5000)
78700       CALL PYSTOP(5)
78701       UPV=XX+QQ
78702       DNV=XX+2D0*QQ
78703       USEA=XX+3D0*QQ
78704       DSEA=XX+4D0*QQ
78705       STR=XX+5D0*QQ
78706       CHM=XX+6D0*QQ
78707       BOT=XX+7D0*QQ
78708       TOP=XX+8D0*QQ
78709       GLU=XX+9D0*QQ
78710  
78711 C...Format for error printout.
78712  5000 FORMAT(1X,'Error: you did not link PDFLIB correctly.'/
78713      &1X,'Dummy routine STRUCTM in PYTHIA file called instead.'/
78714      &1X,'Execution stopped!')
78715  
78716       RETURN
78717       END
78718  
78719 C*********************************************************************
78720  
78721 C...STRUCTP
78722 C...Dummy routine, to be removed when PDFLIB is to be linked.
78723  
78724       SUBROUTINE STRUCTP(XX,QQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,
78725      &BOT,TOP,GLU)
78726  
78727 C...Double precision and integer declarations.
78728       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78729       IMPLICIT INTEGER(I-N)
78730       INTEGER PYK,PYCHGE,PYCOMP
78731 C...Commonblocks.
78732       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78733       SAVE /PYDAT1/
78734 C...Local variables
78735       DOUBLE PRECISION XX,QQ2,P2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,
78736      &TOP,GLU
78737  
78738 C...Stop program if this routine is ever called.
78739       WRITE(MSTU(11),5000)
78740       CALL PYSTOP(5)
78741       UPV=XX+QQ2
78742       DNV=XX+2D0*QQ2
78743       USEA=XX+3D0*QQ2
78744       DSEA=XX+4D0*QQ2
78745       STR=XX+5D0*QQ2
78746       CHM=XX+6D0*QQ2
78747       BOT=XX+7D0*QQ2
78748       TOP=XX+8D0*QQ2
78749       GLU=XX+9D0*QQ2
78750  
78751 C...Format for error printout.
78752  5000 FORMAT(1X,'Error: you did not link PDFLIB correctly.'/
78753      &1X,'Dummy routine STRUCTP in PYTHIA file called instead.'/
78754      &1X,'Execution stopped!')
78755  
78756       RETURN
78757       END
78758  
78759 C*********************************************************************
78760  
78761 C...SUGRA
78762 C...Dummy routine, to be removed when ISAJET (ISASUSY) is to be linked.
78763  
78764       SUBROUTINE SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODL)
78765        IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78766       IMPLICIT INTEGER(I-N)
78767       REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP
78768       INTEGER IMODL
78769 C...Commonblocks.
78770       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78771       SAVE /PYDAT1/
78772  
78773 C...Stop program if this routine is ever called.
78774       WRITE(MSTU(11),5000)
78775       CALL PYSTOP(110)
78776  
78777 C...Format for error printout.
78778  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
78779      &1X,'Dummy routine SUGRA in PYTHIA file called instead.'/
78780      &1X,'Execution stopped!')
78781  
78782       RETURN
78783       END
78784  
78785 C*********************************************************************
78786  
78787 C...VISAJE
78788 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
78789  
78790       FUNCTION VISAJE()
78791       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78792       IMPLICIT INTEGER(I-N)
78793       CHARACTER*40 VISAJE
78794  
78795 C...Commonblocks.
78796       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78797       SAVE /PYDAT1/
78798  
78799 C...Assign default value.
78800       VISAJE='Undefined'
78801  
78802 C...Stop program if this routine is ever called.
78803       WRITE(MSTU(11),5000)
78804       CALL PYSTOP(110)
78805  
78806 C...Format for error printout.
78807  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
78808      &1X,'Dummy function VISAJE in PYTHIA file called instead.'/
78809      &1X,'Execution stopped!')
78810  
78811       RETURN
78812       END
78813  
78814 C*********************************************************************
78815  
78816 C...SSMSSM
78817 C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked.
78818  
78819       SUBROUTINE SSMSSM(RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,
78820      &RDUM8,RDUM9,RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,
78821      &RDUM17,RDUM18,RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25,
78822      &IDUM1,IDUM2)
78823       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78824       IMPLICIT INTEGER(I-N)
78825       REAL RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,RDUM8,RDUM9,
78826      &RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,RDUM17,RDUM18,
78827      &RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25
78828 C...Commonblocks.
78829       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78830       SAVE /PYDAT1/
78831  
78832 C...Stop program if this routine is ever called.
78833       WRITE(MSTU(11),5000)
78834       CALL PYSTOP(110)
78835  
78836 C...Format for error printout.
78837  5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/
78838      &1X,'Dummy routine SSMSSM in PYTHIA file called instead.'/
78839      &1X,'Execution stopped!')
78840       RETURN
78841       END
78842  
78843 C*********************************************************************
78844  
78845 C...FHSETFLAGS
78846 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
78847  
78848       SUBROUTINE FHSETFLAGS(IERR,IMSP,IFR,ITBR,IHMX,IP2A,ILP,ITR,IBR)
78849       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78850       IMPLICIT INTEGER(I-N)
78851 Cmssmpart = 4     # full MSSM [recommended]
78852 Cfieldren = 0     # MSbar field ren. [strongly recommended]
78853 Ctanbren =  0     # MSbar TB-ren. [strongly recommended]
78854 Chiggsmix = 2     # 2x2 (h0-HH) mixing in the neutral Higgs sector
78855 Cp2approx = 0     # no approximation [recommended]
78856 Clooplevel= 2     # include 2-loop corrections
78857 Ctl_running_mt= 1 # running top mass in 2-loop corrections [recommended]
78858 Ctl_bot_resum = 1 # resummed MB in 2-loop corrections [recommended]
78859  
78860 C...Commonblocks.
78861       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78862       SAVE /PYDAT1/
78863  
78864 C...Stop program if this routine is ever called.
78865       WRITE(MSTU(11),5000)
78866       CALL PYSTOP(103)
78867  
78868 C...Format for error printout.
78869  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
78870      &1X,'Dummy routine FHSETFLAGS in PYTHIA file called instead.'/
78871      &1X,'Execution stopped!')
78872       RETURN
78873       END
78874  
78875 C*********************************************************************
78876  
78877 C...FHSETPARA
78878 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
78879  
78880       SUBROUTINE FHSETPARA(IER,SCF,DMT,DMB,DMW,DMZ,DTANB,DMA,DMH,DM3L,
78881      &     DM3E,DM3Q,DM3U,DM3D,DM2L,DM2E,DM2Q,DM2U, DM2D,DM1L,DM1E,DM1Q,
78882      &     DM1U,DM1D,DMU,AE33,AU33,AD33,AE22,AU22,AD22,AE11,AU11,AD11,
78883      &     DM1,DM2,DM3,RLT,RLB,QTAU,QT,QB)
78884       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78885       IMPLICIT INTEGER(I-N)
78886  
78887       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
78888       DOUBLE COMPLEX DMU,
78889      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
78890      &     DM1, DM2, DM3
78891 
78892 C...Commonblocks.
78893       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78894       SAVE /PYDAT1/
78895  
78896 C...Stop program if this routine is ever called.
78897       WRITE(MSTU(11),5000)
78898       CALL PYSTOP(103)
78899  
78900 C...Format for error printout.
78901  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
78902      &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/
78903      &1X,'Execution stopped!')
78904       RETURN
78905       END
78906  
78907 C*********************************************************************
78908  
78909 C...FHHIGGSCORR
78910 C...Dummy function, to be removed when FEYNHIGGS is to be linked.
78911  
78912       SUBROUTINE FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS)
78913       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78914       IMPLICIT INTEGER(I-N)
78915  
78916 C...FeynHiggs variables
78917       DOUBLE PRECISION RMHIGG(4)
78918       DOUBLE COMPLEX SAEFF, UHIGGS(3,3)
78919       DOUBLE COMPLEX DMU,
78920      &     AE33, AU33, AD33, AE22, AU22, AD22, AE11, AU11, AD11,
78921      &     DM1, DM2, DM3
78922 
78923 C...Commonblocks.
78924       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78925       SAVE /PYDAT1/
78926  
78927 C...Stop program if this routine is ever called.
78928       WRITE(MSTU(11),5000)
78929       CALL PYSTOP(103)
78930  
78931 C...Format for error printout.
78932  5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/
78933      &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/
78934      &1X,'Execution stopped!')
78935       RETURN
78936       END
78937   
78938 C*********************************************************************
78939  
78940 C...PYTAUD
78941 C...Dummy routine, to be replaced by user, to handle the decay of a
78942 C...polarized tau lepton.
78943 C...Input:
78944 C...ITAU is the position where the decaying tau is stored in /PYJETS/.
78945 C...IORIG is the position where the mother of the tau is stored;
78946 C...     is 0 when the mother is not stored.
78947 C...KFORIG is the flavour of the mother of the tau;
78948 C...     is 0 when the mother is not known.
78949 C...Note that IORIG=0 does not necessarily imply KFORIG=0;
78950 C...     e.g. in B hadron semileptonic decays the W  propagator
78951 C...     is not explicitly stored but the W code is still unambiguous.
78952 C...Output:
78953 C...NDECAY is the number of decay products in the current tau decay.
78954 C...These decay products should be added to the /PYJETS/ common block,
78955 C...in positions N+1 through N+NDECAY. For each product I you must
78956 C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2),
78957 C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically.
78958  
78959       SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY)
78960  
78961 C...Double precision and integer declarations.
78962       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78963       IMPLICIT INTEGER(I-N)
78964       INTEGER PYK,PYCHGE,PYCOMP
78965 C...Commonblocks.
78966       COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5)
78967       COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
78968       SAVE /PYJETS/,/PYDAT1/
78969  
78970 C...Stop program if this routine is ever called.
78971 C...You should not copy these lines to your own routine.
78972       NDECAY=ITAU+IORIG+KFORIG
78973       WRITE(MSTU(11),5000)
78974       CALL PYSTOP(10)
78975  
78976 C...Format for error printout.
78977  5000 FORMAT(1X,'Error: you did not link your PYTAUD routine ',
78978      &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/
78979      &1X,'Execution stopped!')
78980  
78981       RETURN
78982       END
78983  
78984 C*********************************************************************
78985  
78986 C...PYTIME
78987 C...Finds current date and time.
78988 C...Since this task is not standardized in Fortran 77, the routine
78989 C...is dummy, to be replaced by the user. Examples are given for
78990 C...the Fortran 90 routine and DEC Fortran 77, and what to do if
78991 C...you do not have access to suitable routines.
78992  
78993       SUBROUTINE PYTIME(IDATI)
78994  
78995 C...Double precision and integer declarations.
78996       IMPLICIT DOUBLE PRECISION(A-H, O-Z)
78997       IMPLICIT INTEGER(I-N)
78998       INTEGER PYK,PYCHGE,PYCOMP
78999       CHARACTER*8 ATIME
79000 C...Local array.
79001       INTEGER IDATI(6),IDTEMP(3),IVAL(8)
79002  
79003 C...Example 0: if you do not have suitable routines.
79004       DO 100 J=1,6
79005       IDATI(J)=0
79006   100 CONTINUE
79007  
79008 C...Example 1: Fortran 90 routine.
79009 C      CALL DATE_AND_TIME(VALUES=IVAL)
79010 C      IDATI(1)=IVAL(1)
79011 C      IDATI(2)=IVAL(2)
79012 C      IDATI(3)=IVAL(3)
79013 C      IDATI(4)=IVAL(5)
79014 C      IDATI(5)=IVAL(6)
79015 C      IDATI(6)=IVAL(7)
79016  
79017 C...Example 2: DEC Fortran 77. AIX.
79018 C      CALL IDATE(IMON,IDAY,IYEAR)
79019 C      IDATI(1)=IYEAR
79020 C      IDATI(2)=IMON
79021 C      IDATI(3)=IDAY
79022 C      CALL ITIME(IHOUR,IMIN,ISEC)
79023 C      IDATI(4)=IHOUR
79024 C      IDATI(5)=IMIN
79025 C      IDATI(6)=ISEC
79026  
79027 C...Example 3: DEC Fortran, IRIX, IRIX64.
79028 C      CALL IDATE(IMON,IDAY,IYEAR)
79029 C      IDATI(1)=IYEAR
79030 C      IDATI(2)=IMON
79031 C      IDATI(3)=IDAY
79032 C      CALL TIME(ATIME)
79033 C      IHOUR=0
79034 C      IMIN=0
79035 C      ISEC=0
79036 C      READ(ATIME(1:2),'(I2)') IHOUR
79037 C      READ(ATIME(4:5),'(I2)') IMIN
79038 C      READ(ATIME(7:8),'(I2)') ISEC
79039 C      IDATI(4)=IHOUR
79040 C      IDATI(5)=IMIN
79041 C      IDATI(6)=ISEC
79042  
79043 C...Example 4: GNU LINUX libU77, SunOS.
79044 C      CALL IDATE(IDTEMP)
79045 C      IDATI(1)=IDTEMP(3)
79046 C      IDATI(2)=IDTEMP(2)
79047 C      IDATI(3)=IDTEMP(1)
79048 C      CALL ITIME(IDTEMP)
79049 C      IDATI(4)=IDTEMP(1)
79050 C      IDATI(5)=IDTEMP(2)
79051 C      IDATI(6)=IDTEMP(3)
79052  
79053 C...Common code to ensure right century.
79054       IDATI(1)=2000+MOD(IDATI(1),100)
79055  
79056       RETURN
79057       END
Generated on Sun Oct 20 20:24:09 2013 for C++InterfacetoTauola by  doxygen 1.6.3